"Add/Edit/delete turn"
This commit is contained in:
+98
-137
@@ -296,6 +296,32 @@ def save_turn(role_id, day, start, end):
|
||||
return False
|
||||
return True
|
||||
|
||||
def update_turn_by_id(turn_id, role_id, wday, start, end):
|
||||
""" Update turn with provided data """
|
||||
check_turn = Tetawebapp_turns.query.filter_by(id=turn_id).count()
|
||||
if check_turn == 0:
|
||||
# User does not exist
|
||||
print "[+] User does not exist"
|
||||
return False
|
||||
turn = Tetawebapp_turns.query.filter_by(id=turn_id).first()
|
||||
setattr(turn, 'role_id', role_id)
|
||||
setattr(turn, 'wday', wday)
|
||||
setattr(turn, 'start_time', start)
|
||||
setattr(turn, 'end_time', end)
|
||||
try:
|
||||
db.session.add(turn)
|
||||
commit = db.session.commit()
|
||||
except Exception as e:
|
||||
db.session.rollback()
|
||||
print "[+] Error at update_turn:"
|
||||
print "------------------------------"
|
||||
print "%s" % e.message
|
||||
print "------------------------------"
|
||||
return False
|
||||
if commit != None:
|
||||
return False
|
||||
return True
|
||||
|
||||
def drop_turn(turn_id):
|
||||
""" Delete staff turn """
|
||||
try:
|
||||
@@ -480,13 +506,19 @@ def account_by_id(ID):
|
||||
if session['is_admin']:
|
||||
page = str(request.url_rule)
|
||||
menu = get_menu(page)
|
||||
user = Tetawebapp_users.query.filter_by(id=ID).first()
|
||||
message = "ID de l'utilisateur non conforme"
|
||||
staffers = Tetawebapp_users.query.filter_by(is_admin=0).order_by(Tetawebapp_users.name).all()
|
||||
user_id = int(ID.encode('utf-8'))
|
||||
user = Tetawebapp_users.query.filter_by(id=user_id).first()
|
||||
return render_template('account_by_id.html', menu=menu, user=user)
|
||||
# User is not admin
|
||||
return render_template('login_or_register.html', message="Utilisateur ou mot de passe invalide")
|
||||
except AttributeError:
|
||||
# User is not logged in
|
||||
return render_template('login_or_register.html', message="Utilisateur ou mot de passe invalide")
|
||||
except ValueError:
|
||||
# ID is not an integer
|
||||
return render_template('list_users.html', menu=menu, staffers=staffers, message=message)
|
||||
|
||||
@app.route("/account/update/<ID>", methods=['GET', 'POST'])
|
||||
@check_session
|
||||
@@ -502,20 +534,23 @@ def update_account_by_id(ID):
|
||||
name = request.form.get('name').encode('utf-8')
|
||||
phone = request.form.get('phone').encode('utf-8')
|
||||
diet = request.form.get('diet').encode('utf-8')
|
||||
if update_user_by_id(ID, login, password, confirm, name, phone, diet):
|
||||
message = "ID de l'utilisateur non conforme"
|
||||
staffers = Tetawebapp_users.query.filter_by(is_admin=0).order_by(Tetawebapp_users.name).all()
|
||||
user_id = int(ID.encode('utf-8'))
|
||||
if update_user_by_id(user_id, login, password, confirm, name, phone, diet):
|
||||
user = Tetawebapp_users.query.filter_by(id=ID).first()
|
||||
message = check_user_info()
|
||||
else:
|
||||
message = "Erreur lors de l'enregistrement des données."
|
||||
return render_template('account_by_id.html',
|
||||
menu=menu,
|
||||
user=user,
|
||||
message=message)
|
||||
return render_template('account_by_id.html', menu=menu, user=user,message=message)
|
||||
# User is not admin
|
||||
return render_template('login_or_register.html', message="Utilisateur ou mot de passe invalide")
|
||||
except AttributeError:
|
||||
# User is not logged in
|
||||
return render_template('login_or_register.html', message="Utilisateur ou mot de passe invalide")
|
||||
except ValueError:
|
||||
# ID is not an integer
|
||||
return render_template('list_users.html', menu=menu, staffers=staffers, message=message)
|
||||
|
||||
@app.route("/account/delete/<ID>", methods=['GET', 'POST'])
|
||||
@check_session
|
||||
@@ -524,17 +559,22 @@ def delete_account(ID):
|
||||
try:
|
||||
if session['is_admin']:
|
||||
message = "Erreur lors de la suppression.".decode('utf-8')
|
||||
if delete_user(ID):
|
||||
message = ''
|
||||
page = str(request.url_rule)
|
||||
menu = get_menu(page)
|
||||
staffers = Tetawebapp_users.query.filter_by(is_admin=0).order_by(Tetawebapp_users.name).all()
|
||||
user_id = int(ID.encode('utf-8'))
|
||||
if delete_user(user_id):
|
||||
message = ''
|
||||
staffers = Tetawebapp_users.query.filter_by(is_admin=0).order_by(Tetawebapp_users.name).all()
|
||||
return render_template('list_users.html', menu=menu, staffers=staffers, message=message)
|
||||
# User is not admin
|
||||
return render_template('login_or_register.html', message="Utilisateur ou mot de passe invalide")
|
||||
except AttributeError:
|
||||
# User is not logged in
|
||||
return render_template('login_or_register.html', message="Utilisateur ou mot de passe invalide")
|
||||
except ValueError:
|
||||
# ID is not an integer
|
||||
return render_template('list_users.html', menu=menu, staffers=staffers, message=message)
|
||||
|
||||
@app.route("/turns", methods=['GET', 'POST'])
|
||||
@check_session
|
||||
@@ -596,25 +636,52 @@ def add_turn():
|
||||
|
||||
@app.route("/turn/<ID>", methods=['GET', 'POST'])
|
||||
@check_session
|
||||
def update_turn_by_id(ID):
|
||||
|
||||
def turn_by_id(ID):
|
||||
try:
|
||||
if session['is_admin']:
|
||||
page = str(request.url_rule)
|
||||
menu = get_menu(page)
|
||||
roles = Tetawebapp_roles.query.order_by(Tetawebapp_roles.id).all()
|
||||
days = ['Jeudi', 'Vendredi', 'Samedi', 'Dimanche']
|
||||
message = 'ID du tour de staff non conforme'
|
||||
turns = Tetawebapp_turns.query.join(Tetawebapp_roles, Tetawebapp_turns.role_id==Tetawebapp_roles.id).add_columns(Tetawebapp_roles.role).order_by(Tetawebapp_turns.role_id).all()
|
||||
turn_id = int(ID.encode('utf-8'))
|
||||
turn = Tetawebapp_turns.query.filter_by(id=ID).first()
|
||||
return render_template('turn_by_id.html', menu=menu, page=page, turn=turn, roles=roles, days=days)
|
||||
except AttributeError:
|
||||
# User is not logged in
|
||||
return render_template('login_or_register.html', message="Utilisateur ou mot de passe invalide")
|
||||
except ValueError:
|
||||
# ID is not an integer
|
||||
return render_template('list_turns.html', menu=menu, page=page, turns=turns, message=message)
|
||||
|
||||
|
||||
#~ @app.route("/turn/update/<ID>", methods=['GET', 'POST'])
|
||||
#~ @check_session
|
||||
#~ def update_turn(ID):
|
||||
#~ """ Update given staff turn """
|
||||
#~ try:
|
||||
#~ if session['is_admin']:
|
||||
#~ page = str(request.url_rule)
|
||||
#~ menu = get_menu(page)
|
||||
#~ turn = Tetawebapp_turns.query.filter_by(id=ID).join(Tetawebapp_roles, Tetawebapp_turns.role_id==Tetawebapp_roles.id).add_columns(Tetawebapp_roles.role).order_by(Tetawebapp_turns.role_id).all()
|
||||
#~ return render_template('update_turn.html', menu=menu, page=page, turn=turn)
|
||||
#~ # User is not admin
|
||||
#~ return render_template('login_or_register.html', message="Utilisateur ou mot de passe invalide")
|
||||
#~ except AttributeError:
|
||||
#~ # User is not logged in
|
||||
#~ return render_template('login_or_register.html', message="Utilisateur ou mot de passe invalide")
|
||||
@app.route("/turn/update/<ID>", methods=['GET', 'POST'])
|
||||
@check_session
|
||||
def update_turn(ID):
|
||||
""" Update given staff turn """
|
||||
try:
|
||||
role_id = request.form.get('role_id').encode('utf-8')
|
||||
day = request.form.get('day').encode('utf-8')
|
||||
start = request.form.get('start').encode('utf-8')
|
||||
end = request.form.get('end').encode('utf-8')
|
||||
if session['is_admin']:
|
||||
page = str(request.url_rule)
|
||||
menu = get_menu(page)
|
||||
turns = Tetawebapp_turns.query.join(Tetawebapp_roles, Tetawebapp_turns.role_id==Tetawebapp_roles.id).add_columns(Tetawebapp_roles.role).order_by(Tetawebapp_turns.role_id).all()
|
||||
message = "Erreur lors de l'enregistrement.".decode('utf-8')
|
||||
turn_id = int(ID.encode('utf-8'))
|
||||
if update_turn_by_id(turn_id, role_id, day, start, end):
|
||||
turns = Tetawebapp_turns.query.join(Tetawebapp_roles, Tetawebapp_turns.role_id==Tetawebapp_roles.id).add_columns(Tetawebapp_roles.role).order_by(Tetawebapp_turns.role_id).all()
|
||||
message = ''
|
||||
return render_template('list_turns.html', menu=menu, page=page, turns=turns, message=message)
|
||||
# User is not admin
|
||||
return render_template('login_or_register.html', message="Utilisateur ou mot de passe invalide")
|
||||
except AttributeError as e:
|
||||
# User is not logged in
|
||||
return render_template('login_or_register.html', message="Utilisateur ou mot de passe invalide")
|
||||
except ValueError:
|
||||
# ID is not an integer
|
||||
return render_template('list_turns.html', menu=menu, page=page, turns=turns, message=message)
|
||||
|
||||
@app.route("/turn/delete/<ID>", methods=['GET', 'POST'])
|
||||
@check_session
|
||||
@@ -626,7 +693,8 @@ def delete_turn(ID):
|
||||
page = str(request.url_rule)
|
||||
menu = get_menu(page)
|
||||
turns = Tetawebapp_turns.query.join(Tetawebapp_roles, Tetawebapp_turns.role_id==Tetawebapp_roles.id).add_columns(Tetawebapp_roles.role).order_by(Tetawebapp_turns.role_id).all()
|
||||
if drop_turn(ID):
|
||||
turn_id = int(ID.encode('utf-8'))
|
||||
if drop_turn(turn_id):
|
||||
message = ''
|
||||
turns = Tetawebapp_turns.query.join(Tetawebapp_roles, Tetawebapp_turns.role_id==Tetawebapp_roles.id).add_columns(Tetawebapp_roles.role).order_by(Tetawebapp_turns.role_id).all()
|
||||
return render_template('list_turns.html', menu=menu, turns=turns, message=message)
|
||||
@@ -636,116 +704,9 @@ def delete_turn(ID):
|
||||
except AttributeError:
|
||||
# User is not logged in
|
||||
return render_template('login_or_register.html', message="Utilisateur ou mot de passe invalide")
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@app.route("/basics", methods=['GET', 'POST'])
|
||||
@check_session
|
||||
def basics():
|
||||
""" Basics page """
|
||||
page = str(request.url_rule)
|
||||
menu = get_menu(page)
|
||||
return render_template('basics.html', menu=menu)
|
||||
|
||||
@app.route("/inputs", methods=['GET', 'POST'])
|
||||
@check_session
|
||||
def inputs():
|
||||
""" Show the input collection """
|
||||
page = str(request.url_rule)
|
||||
menu = get_menu(page)
|
||||
return render_template('inputs.html', menu=menu)
|
||||
|
||||
@app.route("/ajax", methods=['GET', 'POST'])
|
||||
@check_session
|
||||
def ajax():
|
||||
""" Propose various AJAX tests """
|
||||
page = str(request.url_rule)
|
||||
menu = get_menu(page)
|
||||
return render_template('ajax.html', menu=menu)
|
||||
|
||||
@app.route("/database", methods=['GET', 'POST'])
|
||||
@check_session
|
||||
def database():
|
||||
""" A blah on using databases """
|
||||
page = str(request.url_rule)
|
||||
menu = get_menu(page)
|
||||
return render_template('database.html', menu=menu)
|
||||
|
||||
@app.route("/todo", methods=['GET', 'POST'])
|
||||
@check_session
|
||||
def todo():
|
||||
""" The famous TODO list """
|
||||
page = str(request.url_rule)
|
||||
menu = get_menu(page)
|
||||
return render_template('todo.html', menu=menu)
|
||||
|
||||
########################################################################
|
||||
# AJAX routes
|
||||
########################################################################
|
||||
|
||||
@app.route("/get_html_from_ajax", methods=['GET', 'POST'])
|
||||
@check_session
|
||||
def get_html_from_ajax():
|
||||
""" Return HTML code to an AJAX request
|
||||
It may generate a 404 http error for testing purpose """
|
||||
if int(random.random()*10) % 2:
|
||||
# Randomly generate 404 HTTP response
|
||||
return render_template('error.html'), 404
|
||||
return render_template('ajax_html.html')
|
||||
|
||||
@app.route("/get_value_from_ajax", methods=['GET', 'POST'])
|
||||
@check_session
|
||||
def get_value_from_ajax():
|
||||
""" Return a randomly generated value to an AJAX request
|
||||
It may return an error code for testing purpose """
|
||||
err_code = 'TETA_ERR'
|
||||
RND = int(random.random()*10)
|
||||
if RND % 2:
|
||||
# Randomly generate error
|
||||
return err_code
|
||||
return str(RND)
|
||||
|
||||
@app.route("/set_value_from_ajax/<value>", methods=['GET', 'POST'])
|
||||
@check_session
|
||||
def set_value_from_ajax(value):
|
||||
""" Accept a value from an AJAX request
|
||||
It may return an error code for testing purpose """
|
||||
err_code = 'TETA_ERR'
|
||||
if value != 'We Make Porn':
|
||||
return 'True'
|
||||
return err_code
|
||||
|
||||
@app.route("/upload", methods=['POST'])
|
||||
@check_session
|
||||
def upload():
|
||||
""" Save a file from AJAX request
|
||||
Files are saved in UPLOADED_FILES_DEST (see config.local.py) """
|
||||
err_code = 'TETA_ERR'
|
||||
RND = int(random.random()*10)
|
||||
if RND % 2:
|
||||
# Randomly generate error
|
||||
print err_code
|
||||
return err_code
|
||||
uploaded_files = []
|
||||
if len(request.files) > 0 and request.files['files']:
|
||||
uploaded_files = request.files.getlist("files")
|
||||
print "Uploaded files:"
|
||||
for f in uploaded_files:
|
||||
print ' [+] %s [%s]' % (f.filename, f.content_type)
|
||||
# Before saving you should:
|
||||
# - Secure the filename
|
||||
# - Check file size
|
||||
# - Check content type
|
||||
f.save(os.path.join(app.config['UPLOADED_FILES_DEST'], f.filename))
|
||||
f.close()
|
||||
return "OK"
|
||||
except ValueError:
|
||||
# ID is not an integer
|
||||
return render_template('list_turns.html', menu=menu, page=page, turns=turns, message=message)
|
||||
|
||||
########################################################################
|
||||
# Main
|
||||
|
||||
Reference in New Issue
Block a user