add edit event feature
This commit is contained in:
25
app.py
25
app.py
@@ -53,16 +53,17 @@ class Event(db.Model):
|
|||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return f'<Event "{self.id}">'
|
return f'<Event "{self.id}">'
|
||||||
|
|
||||||
|
def get_tasks():
|
||||||
|
return Task.query
|
||||||
class TaskForm(FlaskForm):
|
class TaskForm(FlaskForm):
|
||||||
title = StringField('Title', validators=[InputRequired(),
|
title = StringField('Title', validators=[InputRequired(),
|
||||||
Length(min=5, max=100)])
|
Length(min=5, max=100)])
|
||||||
description = TextAreaField('Description', validators=[InputRequired(),
|
description = TextAreaField('Description', validators=[InputRequired(),
|
||||||
Length(max=200)])
|
Length(max=200)])
|
||||||
class EventForm(FlaskForm):
|
class EventForm(FlaskForm):
|
||||||
eventDate = DateField('Date', validators=[InputRequired()], format='m-%d-%Y')
|
# eventDate = DateField('Date', validators=[InputRequired()], format='m-%d-%Y')
|
||||||
period_num = IntegerField(validators=[InputRequired()])
|
# period_num = IntegerField(validators=[InputRequired()])
|
||||||
selectedTask = QuerySelectField(label='Task', get_label='title' )
|
selectedTask = QuerySelectField(label='New Task', query_factory=get_tasks, get_label='title', allow_blank=True, blank_text='(no task)')
|
||||||
|
|
||||||
|
|
||||||
@app.route('/')
|
@app.route('/')
|
||||||
def index():
|
def index():
|
||||||
@@ -71,12 +72,22 @@ def index():
|
|||||||
@app.route('/events')
|
@app.route('/events')
|
||||||
def events():
|
def events():
|
||||||
events = Event.query.all()
|
events = Event.query.all()
|
||||||
tasks = Task.query.order_by('title')
|
|
||||||
periods = Period.query.all()
|
periods = Period.query.all()
|
||||||
|
|
||||||
form = EventForm(obj=tasks)
|
return render_template('events.html', events=events, periods=periods, datetime=datetime, date=date)
|
||||||
return render_template('events.html', events=events, periods=periods, datetime=datetime, date=date, form=form)
|
|
||||||
|
|
||||||
|
@app.route('/event/edit/<int:event_id>/', 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')
|
@app.route('/tasks')
|
||||||
def tasks():
|
def tasks():
|
||||||
tasks = Task.query.all()
|
tasks = Task.query.all()
|
||||||
|
28
templates/editEvent.html
Normal file
28
templates/editEvent.html
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
{% extends 'base.html' %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<span><h1>{% block title %} Edit Event {% endblock %}</h1></span>
|
||||||
|
{% set convertedTime = datetime.strptime(event.period.periodTime, "%H:%M:%S") %}
|
||||||
|
<p>
|
||||||
|
<b>Period {{ event.period.period }}</b> <br> Time: {{ convertedTime.strftime("%I:%M %p") }}
|
||||||
|
</p>
|
||||||
|
{% if event.task_id != None %}
|
||||||
|
<p>
|
||||||
|
<b><a href="/task/{{ event.tasks.id }}">
|
||||||
|
{{ event.tasks.title }}
|
||||||
|
</a></b> <br> {{ event.tasks.description }}
|
||||||
|
</p>
|
||||||
|
{% else %}
|
||||||
|
<div><p>(no task assigned... yet)</p></div>
|
||||||
|
{% endif %}
|
||||||
|
<form method="post">
|
||||||
|
{{ form.csrf_token }}
|
||||||
|
<p>
|
||||||
|
{{ form.selectedTask.label }}
|
||||||
|
{{ form.selectedTask }}
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<button class="btn btn-primary" type="submit">Submit</button>
|
||||||
|
</p>
|
||||||
|
</form>
|
||||||
|
{% endblock %}
|
@@ -11,6 +11,8 @@
|
|||||||
{% set convertedTime = datetime.strptime(period.periodTime, "%H:%M:%S") %}
|
{% set convertedTime = datetime.strptime(period.periodTime, "%H:%M:%S") %}
|
||||||
<p><b>Period {{ period.period }}</b> <br> Time: {{ convertedTime.strftime("%I:%M %p") }} </p>
|
<p><b>Period {{ period.period }}</b> <br> Time: {{ convertedTime.strftime("%I:%M %p") }} </p>
|
||||||
{% for event in events if event.scheduled_date == currDay and event.period == period %}
|
{% for event in events if event.scheduled_date == currDay and event.period == period %}
|
||||||
|
<div class="float-right"><a type="button" class="btn btn-primary" href="/event/edit/{{ event.id }}">Edit</a></div>
|
||||||
|
{% if event.task_id != None %}
|
||||||
<b>
|
<b>
|
||||||
<a href="/task/{{ event.tasks.id }}">
|
<a href="/task/{{ event.tasks.id }}">
|
||||||
{{ event.tasks.title }}
|
{{ event.tasks.title }}
|
||||||
@@ -21,6 +23,7 @@
|
|||||||
</div>
|
</div>
|
||||||
{% else %}
|
{% else %}
|
||||||
<div><p>(no task assigned... yet)</p></div>
|
<div><p>(no task assigned... yet)</p></div>
|
||||||
|
{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
<hr>
|
<hr>
|
||||||
</div>
|
</div>
|
||||||
|
Reference in New Issue
Block a user