def edit_task(): """ Edits a to-do task from modal input. Can be a single task or multiple, related tasks. """ edit_task = Post() edit_task.form = TaskForm() edit_task.task_to_be_edited = current_user.posts.filter_by( id=int(edit_task.form.ident.data) ).first() if not edit_task.form.validate_on_submit(): return redirect(url_for("main.index", date_set="ph")) else: edit_task.calc_mins_height_and_end() if edit_task.form.single_event.data is True: if ( edit_task.task_to_be_edited.exclude and edit_task.task_to_be_edited.exclude != int(edit_task.form.ident.data) ): edit_task.edit_single_task() else: edit_task.edit_single_freq_task() else: if edit_task.task_to_be_edited.exclude: edit_task.edit_all_freq_parent_and_child_tasks() else: edit_task.edit_all_tasks() db.session.commit() return jsonify({"id": edit_task.form.ident.data})
def new_task(): """Creates a new todo task.""" new_task = Post() new_task.form = TaskForm() if not new_task.form.validate_on_submit(): return redirect(url_for("main.index", date_set="ph")) else: new_task.calc_mins_height_and_end() if new_task.minutes > new_task.end: return redirect(url_for("main.index", date_set="ph")) new_task.set_frequency() if new_task.form.frequency.data and new_task.form.to_date.data: new_task.to_date = convert_date_format(new_task.form.to_date.data) new_task.date = new_task.string_to_datetime(new_task.form.date.data) if new_task.to_date > new_task.date: new_task.add_multiple_tasks() flash("Your tasks are now live!", "success") else: return redirect(url_for("main.index", date_set="ph")) elif not new_task.form.to_date.data: task_to_be_added = new_task.add_single_task( date=new_task.string_to_datetime(new_task.form.date.data), frequency=new_task.form.frequency.data, ) db.session.add(task_to_be_added) new_task.commit_flush() new_task.ident = task_to_be_added.id flash("Your task is now live!", "success") else: return redirect(url_for("main.index", date_set="ph")) return jsonify( { "minutes": new_task.minutes, "height": new_task.height, "task": new_task.form.task.data, "id": new_task.ident, "color": new_task.form.color.data, "frequency": new_task.form.frequency.data, } )