我是不熟悉烧瓶和构建票证分配器应用程序的人。生成器端点将始终将系统中最旧的故障单(status = q)分配给登录的人。然后,他将解析(post method = s)故障单,或者可以将其状态更新为“ pending”(post method = p)。
@main.route('/ticket/generator', methods=['GET', 'POST'])
@login_required
def generate_ticket():
ticket = Ticket.query.filter_by(status='q').order_by(Ticket.create_date).first()
form = GenerateTicketForm(obj=ticket)
if form.validate_on_submit():
ticket.ticket_id = form.ticket_id.data
ticket.status = form.status.data
db.session.add(ticket)
db.session.commit()
flash('Ticket Status Update Successfully.')
return redirect(url_for('main.generate_ticket'))
return render_template('generate_ticket.html', form=form)
当故障单已经分配给某人时,我想更改状态,以便其他人不会获得同一故障单。因此,我创建了一个用于获取最旧票证时更改状态的类方法:
@classmethod
def activate_tkt_flag(cls, ticket_id_, create_date_):
ticket_db_obj = cls(ticket_id=ticket_id_, create_date=create_date_)
ticket_in_memory = Ticket.query.get(ticket_db_obj.ticket_id)
ticket_in_memory.status = 'a'
db.session.commit()
return ticket_in_memory
如果在第一个查询中的ticket
对象之后调用它,则以某种方式重写循环并分配新的票证,而忘记了前一个票证,它无法再重写票证,而我得到了错误:Key (ticket_id)=(T5) already exists UPDATE ticket SET ticket_id=%(ticket_id)s, status=%(status)s WHERE ticket.ticket_id = %(ticket_ticket_id)s'] [parameters: {'ticket_id': 'T5', 'status': 's', 'ticket_ticket_id': 'T1'}]
。如果有人对如何做有更好的主意,将不胜感激,我有点卡在这里。这是表格的样子。
答案 0 :(得分:0)
最后,我能够解决它。我只是创建一个端点,该端点首先执行并更新票证状态,并将票证ID传递到下一个端点。因此,最后一个端点显示具有更新状态的票证以呈现html模板。
@main.route('/ticket/generator/<ticket_id>', methods=['GET', 'POST'])
@login_required
def generate_ticket(ticket_id):
ticket = Ticket.query.get(ticket_id)
form = GenerateTicketForm(obj=ticket)
if form.validate_on_submit():
ticket.ticket_id = form.ticket_id.data
ticket.status = form.status.data
db.session.add(ticket)
db.session.commit()
# flash('Ticket Status Update Successfully.')
return redirect(url_for('main.display_status', ticket_id=ticket.ticket_id))
return render_template('generate_ticket.html', form=form)
@main.route('/ticket/assign')
def assign_ticket():
ticket = Ticket.query.filter_by(status='q').order_by(Ticket.create_date).first_or_404()
ticket.status = 'a'
db.session.commit()
return redirect(url_for('main.generate_ticket', ticket_id=ticket.ticket_id))
首先执行分配端点,然后将票证ID移交给生成器端点。