79 lines
2.8 KiB
Python
79 lines
2.8 KiB
Python
from flask import render_template, request, flash, redirect, url_for
|
|
from typing import Dict
|
|
|
|
from .get_db import get_db
|
|
from .verify_user import verify_user
|
|
|
|
|
|
class ModifyInfo:
|
|
def __init__(self, form:Dict[str, str]):
|
|
self.id = form['cardCode']
|
|
modifyType = form['modifyType']
|
|
self.new_password = form['encryptedNewPassword']
|
|
self.phone_number = form['mobileNo']
|
|
modifyType2command = {
|
|
'1':'delete account',
|
|
'2':'modify Password',
|
|
'3':'modify Phone_Number'
|
|
}
|
|
self.sql_dict = {
|
|
'delete account': 'DELETE FROM passengers WHERE ID = %s;',
|
|
'modify Password': 'UPDATE passengers SET `Password` = %s WHERE ID = %s;',
|
|
'modify Phone_Number': 'UPDATE passengers SET Phone_number = %s WHERE ID = %s;'
|
|
}
|
|
self.sql_args_dict = {
|
|
'delete account': (self.id,),
|
|
'modify Password': (self.new_password, self.id),
|
|
'modify Phone_Number': (self.phone_number, self.id)
|
|
}
|
|
self.ok_message_dict = {
|
|
'delete account': "删除账户成功",
|
|
'modify Password': "修改密码成功",
|
|
'modify Phone_Number': "修改手机号成功"
|
|
}
|
|
self.fail_message_dict = {
|
|
'delete account': "数据库异常,删除账户失败",
|
|
'modify Password': "数据库异常,修改密码失败",
|
|
'modify Phone_Number': "数据库异常,修改手机号失败"
|
|
}
|
|
self.command = modifyType2command[modifyType]
|
|
def get_sql(self):
|
|
return self.sql_dict[self.command]
|
|
def get_args(self):
|
|
return self.sql_args_dict[self.command]
|
|
def get_ok_message(self):
|
|
return self.ok_message_dict[self.command]
|
|
def get_fail_message(self):
|
|
return self.fail_message_dict[self.command]
|
|
|
|
def modify():
|
|
if request.method == 'GET':
|
|
return render_template('modify.html')
|
|
|
|
if request.method == 'POST':
|
|
id = request.form['cardCode']
|
|
password = request.form['encryptedPassword']
|
|
db = get_db()
|
|
cursor = db.cursor()
|
|
|
|
verify_info = verify_user(cursor, id, password)
|
|
if (verify_info == "NO_USER"):
|
|
flash("您未注册过,无法修改账号")
|
|
db.close()
|
|
return redirect(url_for('signup'))
|
|
elif (verify_info == "WRONG_PASSWORD"):
|
|
flash("密码错误")
|
|
db.close()
|
|
return redirect(url_for('modify'))
|
|
|
|
modifyInfo = ModifyInfo(request.form)
|
|
try:
|
|
cursor.execute(modifyInfo.get_sql(), modifyInfo.get_args())
|
|
db.commit()
|
|
flash(modifyInfo.get_ok_message())
|
|
except Exception as e:
|
|
db.rollback()
|
|
print(e)
|
|
flash(modifyInfo.get_fail_message())
|
|
db.close()
|
|
return redirect(url_for('index')) |