From 3082ab730738cca5638ccd12bb624df1f16be6b4 Mon Sep 17 00:00:00 2001 From: William Peebles Date: Wed, 16 Nov 2022 19:56:19 -0500 Subject: [PATCH] add edit event feature --- app.py | 25 ++++++++++++++++++------- forms.py | 0 templates/editEvent.html | 28 ++++++++++++++++++++++++++++ templates/events.html | 3 +++ 4 files changed, 49 insertions(+), 7 deletions(-) delete mode 100644 forms.py create mode 100644 templates/editEvent.html diff --git a/app.py b/app.py index ef9a7c6..a9c98b9 100644 --- a/app.py +++ b/app.py @@ -53,16 +53,17 @@ class Event(db.Model): def __repr__(self): return f'' +def get_tasks(): + return Task.query class TaskForm(FlaskForm): title = StringField('Title', validators=[InputRequired(), Length(min=5, max=100)]) description = TextAreaField('Description', validators=[InputRequired(), Length(max=200)]) class EventForm(FlaskForm): - eventDate = DateField('Date', validators=[InputRequired()], format='m-%d-%Y') - period_num = IntegerField(validators=[InputRequired()]) - selectedTask = QuerySelectField(label='Task', get_label='title' ) - + # eventDate = DateField('Date', validators=[InputRequired()], format='m-%d-%Y') + # period_num = IntegerField(validators=[InputRequired()]) + selectedTask = QuerySelectField(label='New Task', query_factory=get_tasks, get_label='title', allow_blank=True, blank_text='(no task)') @app.route('/') def index(): @@ -71,12 +72,22 @@ def index(): @app.route('/events') def events(): events = Event.query.all() - tasks = Task.query.order_by('title') periods = Period.query.all() - form = EventForm(obj=tasks) - return render_template('events.html', events=events, periods=periods, datetime=datetime, date=date, form=form) + return render_template('events.html', events=events, periods=periods, datetime=datetime, date=date) +@app.route('/event/edit//', methods=('GET', 'POST')) +def editEvent(event_id): + event = Event.query.get_or_404(event_id) + form = EventForm(obj=event) + if form.validate_on_submit(): + if hasattr(form.selectedTask.data, 'id'): + event.task_id = form.selectedTask.data.id + else: + event.task_id = None + db.session.commit() + return redirect('/events') + return render_template('editEvent.html', event=event, form=form, datetime=datetime) @app.route('/tasks') def tasks(): tasks = Task.query.all() diff --git a/forms.py b/forms.py deleted file mode 100644 index e69de29..0000000 diff --git a/templates/editEvent.html b/templates/editEvent.html new file mode 100644 index 0000000..bbcf550 --- /dev/null +++ b/templates/editEvent.html @@ -0,0 +1,28 @@ +{% extends 'base.html' %} + +{% block content %} +

{% block title %} Edit Event {% endblock %}

+ {% set convertedTime = datetime.strptime(event.period.periodTime, "%H:%M:%S") %} +

+ Period {{ event.period.period }}
Time: {{ convertedTime.strftime("%I:%M %p") }} +

+ {% if event.task_id != None %} +

+ + {{ event.tasks.title }} +
{{ event.tasks.description }} +

+ {% else %} +

(no task assigned... yet)

+ {% endif %} +
+ {{ form.csrf_token }} +

+ {{ form.selectedTask.label }} + {{ form.selectedTask }} +

+

+ +

+
+{% endblock %} \ No newline at end of file diff --git a/templates/events.html b/templates/events.html index c3076fe..6f14044 100644 --- a/templates/events.html +++ b/templates/events.html @@ -11,6 +11,8 @@ {% set convertedTime = datetime.strptime(period.periodTime, "%H:%M:%S") %}

Period {{ period.period }}
Time: {{ convertedTime.strftime("%I:%M %p") }}

{% for event in events if event.scheduled_date == currDay and event.period == period %} + + {% if event.task_id != None %} {{ event.tasks.title }} @@ -21,6 +23,7 @@ {% else %}

(no task assigned... yet)

+ {% endif %} {% endfor %}