Как заставить несколько кнопок в Flask обрабатывать их по-отдельности? - PullRequest
0 голосов
/ 17 января 2019

Я создаю свое самое первое веб-приложение с Flask. Он должен подключиться к MySQL (таблица называется «Задачи») с SQLAlchemy и после этого вывести все задачи из этой таблицы. Все «задачи» имеют поля «StartDevelop» и «FinishDevelop» (поля DateTime). Поэтому моя задача - вывести две кнопки рядом с каждым названием «задачи». Они должны работать с MySQL и отправлять текущее время. Как я могу подключить две кнопки к каждой строке и соединить их все со скриптом Python?

Пример:

task1 (строка), AcceptTask1 (кнопка), CompleteTask1 (кнопка)
task2 (строка), AcceptTask2 (кнопка), CompleteTask2 (кнопка)
task3 (строка), AcceptTask3 (кнопка), CompleteTask3 (кнопка)
task4 (строка), AcceptTask4 (кнопка), CompleteTask4 (кнопка)
...
где количество задач принимается из базы данных.

Код, который я сделал

Я создал словарь, в котором ключ - это task.Id, а значение - это форма (со строковыми полями и двумя кнопками). Я также использую field.description, чтобы выводить / не выводить их.

@app.route('/database', methods=['GET','POST'])
@login_required
def database():
    page = request.args.get('page', 1, type=int)
    tasks = Tasks.query.filter(current_user.Id == Tasks.Developer or current_user.Id == Tasks.Reviewer).paginate(page, app.config['TASKS_PER_PAGE'], False)
    forms = dict()

    for task in tasks.items:
        forms[task.Id] = DataBaseForm()
        forms[task.Id].set_values(task,current_user)



class DataBaseForm(FlaskForm):
    eord = StringField()
    task = StringField()
    assign_date = DateTimeField()
    type = StringField()
    accept_date = DateTimeField()
    accepted = SubmitField(label = 'Submit', description = 'Submit')
    comment = StringField()
    completed = SubmitField(label = 'Submit', description = None)

    def set_values(self, task, user):
        self.eord.description = task.course.Name
        self.task.description = task.Name
        self.assign_date.description = task.Created

        if (user.Id == task.Developer):
            if(task.EndDevelop):
                self.accept_date.description = task.EndDevelop
                self.accepted.description = ""
            else:
                self.accepted.description = 'Submit'
                self.comment.description = 'Comment'

        if (user.Id == task.Reviewer):
            if(task.EndReview):
                self.accept_date.description = task.EndReview
                self.accepted.description = ""
            else:
                self.accepted.description = 'Submit'
                self.comment.description = 'Comment'

        if(task.EndReview and task.EndDevelop):
            self.completed.description = 'Complete'
...