"Before clean"
This commit is contained in:
+160
-15
@@ -54,7 +54,7 @@ class Tetawebapp_turns(db.Model):
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
role_id = db.Column(db.Integer, db.ForeignKey('participer_thsf_roles.id'), nullable=False)
|
||||
user_id = db.Column(db.Integer, db.ForeignKey('participer_thsf_users.id'), nullable=True)
|
||||
wday = db.Column(db.Enum('J', 'V', 'S', 'D'), nullable=False)
|
||||
wday = db.Column(db.Enum('Jeudi', 'Vendredi', 'Samedi', 'Dimanche'), nullable=False)
|
||||
start_time = db.Column(db.Time, nullable=False)
|
||||
end_time = db.Column(db.Time, nullable=False)
|
||||
|
||||
@@ -73,21 +73,24 @@ def get_menu(page):
|
||||
The value MUST be 0."""
|
||||
menu = [[u'Accueil', {u'/': [u'/']}, 0],
|
||||
[u'Mon compte', {u'/account': [u'/account', u'/account/update']}, 0],
|
||||
[u'Mes tours de staff', {u'/turn': [u'/turn']}, 0],
|
||||
[u'Mes tours de staff', {u'/turns': [u'/turns']}, 0],
|
||||
[u'Feuilles de staff', {u'/staff_sheets': [u'/staff_sheet']}, 0],
|
||||
[u'Déconnexion', {u'/logout': [u'/logout']}, 0],
|
||||
]
|
||||
if session['is_admin']:
|
||||
menu = [[u'Accueil', {u'/': [u'/']}, 0],
|
||||
[u'Tours de staff', {u'/staff': [u'/staff']}, 0],
|
||||
[u'Tours de staff', {u'/turns': [u'/turns', u'/turn/<ID>', u'/turn/new', u'/turn/add', u'/turn/delete/<ID>', u'/turn/update/<ID>']}, 0],
|
||||
[u'Feuilles de staff', {u'/staff_sheets': [u'/staff_sheet']}, 0],
|
||||
[u'Liste des staffers', {u'/users': [u'/users', u'/account/<ID>']}, 0],
|
||||
[u'Liste des staffers', {u'/users': [u'/users', u'/account/<ID>', u'/account/delete/<ID>']}, 0],
|
||||
[u'Déconnexion', {u'/logout': [u'/logout']}, 0],
|
||||
]
|
||||
#~ print '[+] Page: %s' % page
|
||||
for item in menu:
|
||||
for url in item[1]:
|
||||
for route in item[1][url]:
|
||||
#~ print " [+] Route: %s" %route
|
||||
if route == page:
|
||||
#~ print " [+] Selected page: %s" % page
|
||||
item[2] = 1
|
||||
return menu
|
||||
# This should never happen
|
||||
@@ -272,6 +275,44 @@ def delete_user(user_id):
|
||||
print "------------------------------"
|
||||
return False
|
||||
|
||||
def save_turn(role_id, day, start, end):
|
||||
""" Save a new turn """
|
||||
turn = Tetawebapp_turns(role_id=role_id.encode('utf-8'),
|
||||
wday=day.encode('utf-8'),
|
||||
start_time=start.encode('utf-8'),
|
||||
end_time=end.encode('utf-8'),
|
||||
)
|
||||
try:
|
||||
db.session.add(turn)
|
||||
commit = db.session.commit()
|
||||
except Exception as e:
|
||||
db.session.rollback()
|
||||
print "[+] Error at save_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:
|
||||
Tetawebapp_turns.query.filter_by(id=int(turn_id)).delete()
|
||||
db.session.commit()
|
||||
return True
|
||||
except ValueError as e:
|
||||
print e
|
||||
return False
|
||||
except Exception as e:
|
||||
db.session.rollback()
|
||||
print "[+] Error at drop_turn:"
|
||||
print "------------------------------"
|
||||
print "%s" % e.message
|
||||
print "------------------------------"
|
||||
return False
|
||||
|
||||
def check_user_info():
|
||||
""" Check user info and send appropriate message if info are not complete"""
|
||||
message = ''
|
||||
@@ -302,6 +343,7 @@ def page_not_found(e):
|
||||
|
||||
@app.route("/login", methods=['GET', 'POST'])
|
||||
def login():
|
||||
""" Login """
|
||||
try:
|
||||
login = request.form.get('login').encode('utf-8')
|
||||
password = request.form.get('password').encode('utf-8')
|
||||
@@ -327,6 +369,7 @@ def login():
|
||||
|
||||
@app.route("/register", methods=['GET', 'POST'])
|
||||
def register():
|
||||
""" Allow self registration """
|
||||
try:
|
||||
login = request.form.get('login').encode('utf-8')
|
||||
password = request.form.get('password').encode('utf-8')
|
||||
@@ -402,6 +445,23 @@ def update_account():
|
||||
except AttributeError:
|
||||
return render_template('login_or_register.html', message="Utilisateur ou mot de passe invalide")
|
||||
|
||||
@app.route("/logout", methods=['GET', 'POST'])
|
||||
@check_session
|
||||
def logout():
|
||||
""" Logout user """
|
||||
# Remove session token
|
||||
session['token'] = None
|
||||
session['login'] = None
|
||||
session['is_admin'] = 0
|
||||
# Return user to index page
|
||||
response = app.make_response(render_template('login_or_register.html', message=''))
|
||||
# Push token to cookie
|
||||
sync_cookies(response, session)
|
||||
return response
|
||||
|
||||
########################################################################
|
||||
# Admin zone
|
||||
########################################################################
|
||||
@app.route("/users", methods=['GET', 'POST'])
|
||||
@check_session
|
||||
def list_users():
|
||||
@@ -476,21 +536,106 @@ def delete_account(ID):
|
||||
# User is not logged in
|
||||
return render_template('login_or_register.html', message="Utilisateur ou mot de passe invalide")
|
||||
|
||||
@app.route("/logout", methods=['GET', 'POST'])
|
||||
@app.route("/turns", methods=['GET', 'POST'])
|
||||
@check_session
|
||||
def logout():
|
||||
""" Logout user """
|
||||
# Remove session token
|
||||
session['token'] = None
|
||||
session['login'] = None
|
||||
# Return user to index page
|
||||
response = app.make_response(render_template('login_or_register.html', message=''))
|
||||
# Push token to cookie
|
||||
sync_cookies(response, session)
|
||||
return response
|
||||
def list_turn():
|
||||
""" List staff turns """
|
||||
try:
|
||||
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 = ''
|
||||
return render_template('list_turns.html', menu=menu, page=page, turns=turns, message=message)
|
||||
except AttributeError:
|
||||
# User is not logged in
|
||||
return render_template('login_or_register.html', message="Utilisateur ou mot de passe invalide")
|
||||
|
||||
@app.route("/turn/new", methods=['GET', 'POST'])
|
||||
@check_session
|
||||
def new_turn():
|
||||
""" New turn form """
|
||||
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']
|
||||
return render_template('new_turn.html', menu=menu, page=page, 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")
|
||||
|
||||
@app.route("/turn/add", methods=['GET', 'POST'])
|
||||
@check_session
|
||||
def add_turn():
|
||||
""" Add staff turn """
|
||||
try:
|
||||
if session['is_admin']:
|
||||
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')
|
||||
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')
|
||||
if save_turn(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)
|
||||
# Error while saving turn
|
||||
roles = Tetawebapp_roles.query.order_by(Tetawebapp_roles.id).all()
|
||||
days = ['Jeudi', 'Vendredi', 'Samedi', 'Dimanche']
|
||||
return render_template('new_turn.html', menu=menu, page=page, roles=roles, days=days, 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")
|
||||
|
||||
@app.route("/turn/<ID>", methods=['GET', 'POST'])
|
||||
@check_session
|
||||
def update_turn_by_id(ID):
|
||||
|
||||
|
||||
|
||||
#~ @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/delete/<ID>", methods=['GET', 'POST'])
|
||||
@check_session
|
||||
def delete_turn(ID):
|
||||
""" Delete given staff turn """
|
||||
try:
|
||||
if session['is_admin']:
|
||||
message = 'Erreur lors de la suppression.'
|
||||
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):
|
||||
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)
|
||||
return render_template('list_turns.html', menu=menu, turns=turns, 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")
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user