Add Update Function and view
This commit is contained in:
parent
f2e48f61b8
commit
a8b0095da3
@ -1,4 +1,5 @@
|
|||||||
from itertools import cycle
|
from itertools import cycle
|
||||||
|
from time import get_clock_info
|
||||||
from tracemalloc import start
|
from tracemalloc import start
|
||||||
from flask import (
|
from flask import (
|
||||||
Blueprint, flash, g, redirect, render_template, request, url_for
|
Blueprint, flash, g, redirect, render_template, request, url_for
|
||||||
@ -23,11 +24,13 @@ def index():
|
|||||||
@bp.route('/create', methods=('GET', 'POST'))
|
@bp.route('/create', methods=('GET', 'POST'))
|
||||||
def create():
|
def create():
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
start_time = pendulum.from_format(request.form['start_time'], 'YYYY-MM-DD')
|
start_time_stamp = request.form['start_time']
|
||||||
# start_time = start_time.to_datetime_string()
|
start_time = pendulum.from_format(start_time_stamp, 'YYYY-MM-DD')
|
||||||
try:
|
try:
|
||||||
|
end_time_stamp = request.form['end_time']
|
||||||
end_time = pendulum.from_format(request.form['end_time'], 'YYYY-MM-DD')
|
end_time = pendulum.from_format(request.form['end_time'], 'YYYY-MM-DD')
|
||||||
except ValueError:
|
except ValueError:
|
||||||
|
end_time_stamp = "1900-01-01"
|
||||||
end_time = pendulum.datetime(1900,1,1)
|
end_time = pendulum.datetime(1900,1,1)
|
||||||
error = None
|
error = None
|
||||||
print(request.form['end_time'])
|
print(request.form['end_time'])
|
||||||
@ -47,13 +50,72 @@ def create():
|
|||||||
if end_time > start_time:
|
if end_time > start_time:
|
||||||
db.execute(
|
db.execute(
|
||||||
'INSERT INTO cycle (start_time, end_time, cycle_length) VALUES (?, ?, ?)',
|
'INSERT INTO cycle (start_time, end_time, cycle_length) VALUES (?, ?, ?)',
|
||||||
(start_time.to_datetime_string(), end_time.to_datetime_string(), cycle_length)
|
(start_time_stamp, end_time_stamp, cycle_length)
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
db.execute(
|
db.execute(
|
||||||
'INSERT INTO cycle (start_time, cycle_length) VALUES (?, ?)',
|
'INSERT INTO cycle (start_time, cycle_length) VALUES (?, ?)',
|
||||||
(start_time.to_datetime_string(), cycle_length)
|
(start_time_stamp, cycle_length)
|
||||||
)
|
)
|
||||||
db.commit()
|
db.commit()
|
||||||
return redirect(url_for('index'))
|
return redirect(url_for('index'))
|
||||||
return render_template('cycle/create.html')
|
return render_template('cycle/create.html')
|
||||||
|
|
||||||
|
def get_cycle(id):
|
||||||
|
cycle = get_db().execute(
|
||||||
|
'SELECT * from cycle WHERE id = ?',
|
||||||
|
(id,)
|
||||||
|
).fetchone()
|
||||||
|
|
||||||
|
if cycle is None:
|
||||||
|
abort(404, f"Cycle id {id} doesn't exist.")
|
||||||
|
|
||||||
|
return cycle
|
||||||
|
|
||||||
|
@bp.route('/<int:id>/update', methods=('GET', 'POST'))
|
||||||
|
def update(id):
|
||||||
|
cycle = get_cycle(id)
|
||||||
|
print(cycle['end_time'])
|
||||||
|
|
||||||
|
if request.method == 'POST':
|
||||||
|
start_time_stamp = request.form['start_time']
|
||||||
|
start_time = pendulum.from_format(start_time_stamp, 'YYYY-MM-DD')
|
||||||
|
try:
|
||||||
|
end_time_stamp = request.form['end_time']
|
||||||
|
end_time = pendulum.from_format(end_time_stamp, 'YYYY-MM-DD')
|
||||||
|
print(end_time)
|
||||||
|
except ValueError:
|
||||||
|
end_time_stamp = "1900-01-01"
|
||||||
|
end_time = pendulum.datetime(1900,1,1)
|
||||||
|
error = None
|
||||||
|
if end_time is None:
|
||||||
|
end_time = "2999-01-01"
|
||||||
|
print(end_time)
|
||||||
|
|
||||||
|
if not start_time:
|
||||||
|
error = "You must provide a start date"
|
||||||
|
|
||||||
|
if end_time > start_time:
|
||||||
|
cycle_length = (end_time - start_time).days
|
||||||
|
else:
|
||||||
|
cycle_length = (pendulum.now() - start_time).days
|
||||||
|
|
||||||
|
if error is not None:
|
||||||
|
flash(error)
|
||||||
|
else:
|
||||||
|
db = get_db()
|
||||||
|
if end_time > start_time:
|
||||||
|
db.execute(
|
||||||
|
'UPDATE cycle SET start_time = ?, end_time = ?, cycle_length = ?'
|
||||||
|
' WHERE id = ?',
|
||||||
|
(start_time.to_datetime_string(), end_time.to_datetime_string(), cycle_length, id)
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
db.execute(
|
||||||
|
'UPDATE cycle SET start_time = ?, cycle_length = ?'
|
||||||
|
' WHERE id = ?',
|
||||||
|
(start_time.to_datetime_string(), cycle_length, id)
|
||||||
|
)
|
||||||
|
db.commit()
|
||||||
|
return redirect(url_for('index'))
|
||||||
|
return render_template('cycle/update.html', cycle=cycle)
|
@ -10,6 +10,7 @@
|
|||||||
<header>
|
<header>
|
||||||
<div>
|
<div>
|
||||||
<h1>{{ cycle['id'] }}</h1>
|
<h1>{{ cycle['id'] }}</h1>
|
||||||
|
<a class="action" href="{{ url_for('cycles.update', id=cycle['id'])}}">Edit</a>
|
||||||
<div class="about">Started: {{ cycle['start_time'] }} and ended: {{ cycle['end_time'] }}</div>
|
<div class="about">Started: {{ cycle['start_time'] }} and ended: {{ cycle['end_time'] }}</div>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
15
period/templates/cycle/update.html
Normal file
15
period/templates/cycle/update.html
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
{% extends 'base.html' %}
|
||||||
|
|
||||||
|
{% block header %}
|
||||||
|
<h1>{% block title %}Edit Cycle{% endblock %}</h1>
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<form method="post">
|
||||||
|
<label for="start_time">Start Time</label>
|
||||||
|
<input name="start_time" id="title" value="{{ request.form['start_time'] or cycle['start_time'][:10] }}" required type="date">
|
||||||
|
<label for="end_time">End Time</label>
|
||||||
|
<input name="end_time" id="end_time" value="{{ request.form['end_time'] or cycle['end_time'][:10] if cycle['end_time'] is not none }}" type="date">
|
||||||
|
<input type="submit" value="Save">
|
||||||
|
</form>
|
||||||
|
{% endblock %}
|
Loading…
Reference in New Issue
Block a user