-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathwebapp.py
More file actions
executable file
·129 lines (109 loc) · 4.61 KB
/
webapp.py
File metadata and controls
executable file
·129 lines (109 loc) · 4.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# Doc psycopg2 : http://initd.org/psycopg/docs/index.html
# Flask : https://openclassrooms.com/courses/creez-vos-applications-web-avec-flask
from flask import *
from macros import *
from fonctions import *
#NE PAS MODIFIER LA LIGNE SUIVANTE
app = Flask(__name__)
#SECRET_KEY sert pour les sessions et messages flash
app.secret_key = '5f4FEtt-64+*ùFeiuhz1563§!d2kfr£µ'
##########LIGNES REPETEES#############
#redirect(url_for('guest')) : redirige l'utilisateur non connecté vers l'accueil visiteur (inscription/connexion)
#redirect(url_for('index', action="/")) : redirection vers l'accueil connectés (si pas connecté, vers accueil visiteur)
# la page vers laquelle on est redirigé appelle display_messages() qui renvoie vers l'accueil avec les messages
#conn.commit() : pour update/insert (remove ?) dans bd
#if request.method="POST" : vérifie si on envoie un formulaire par POST
#######################
#BASE DU SITE
@app.route("/")
def guest():
#vérifie si l'utilisateur est connecté (si le champ 'username' est dans le dictionnaire session)
if 'username' in session:
try :
#on essaie d'afficher les messages
return display_messages()
except Exception as e :
#Si cela ne marche pas on détruit la session
return disconnect()
#sinon, on redirige vers la page d'accueil visiteur
return render_template("guestIndex.html")
#ACCUEIL
@app.route("/home/", defaults={'action': ''})
@app.route("/home/<action>", methods=['POST', 'GET'])
def home(action):
if 'username' in session:
#envoyer un message
if action == "sendMess":
if request.method == "POST":
message = request.form['message']
return sendMessage(message)
elif action == "disconnect":
return disconnect()
return display_messages()
#SINON, TRAITE LES INSCRIPTIONS/CONNEXIONS OU RENVOIE VERS ACCUEIL VISITEUR
else:
#traite la connexion et l'inscription
if request.method == "POST":
if action == "connexion":
username = request.form["usernameC"]
password = request.form["passwordC"]
#on passe tout à la fct connect
return connect(username, password)
elif action == "inscription":
username = request.form["usernameI"]
password = request.form["passwordI"]
password2 = request.form["passwordI2"]
#on passe tout à la fct register
return register(username, password, password2)
return redirect(url_for('guest'))
#PREFERENCES
@app.route("/preferences/", defaults={'action': ''})
@app.route("/preferences/<action>", methods=["POST", "GET"])
def preferences(action):
if 'username' in session:
#preferences modifications by form
if request.method == "POST":
if action == "usernameModif":
return usernameModif(request.form["username"])
elif action == "passModif":
return passModif(request.form["oldpass"], request.form["newpass"], request.form["newpass2"])
elif action == "apparenceModif":
return apparenceModif(request.form["nb_mess"], request.form["color"])
return render_template('preferences.html')
return redirect(url_for('guest'))
#MESSAGERIE PRIVÉE
@app.route("/private/", defaults={'action': ''})
@app.route("/private/<action>", methods=["POST", "GET"])
def private(action):
if 'username' in session:
if action == "0":
flash('L\'utilisateur que vous voulez contacter n\'existe pas.')
return redirect(url_for('home', action=''))
elif action == "list":
return display_users()
else:
if request.method == "POST":
message = request.form["message"]
return sendPrivate(message, action)
return display_private(action)
return redirect(url_for('guest'))
#ADMINISTRATION
@app.route("/admin/", defaults={'action': '', 'action_id': ''})
@app.route("/admin/<action>/<action_id>")
def admin(action, action_id):
if 'username' in session and session['grade'] == 1:
if action == 'deleteMess':
return supprimer_message(action_id)
elif action == 'bannir':
return ban(action_id, 1)
elif action == 'debannir':
return ban(action_id, 0)
return get_users_admin()
return redirect(url_for('home', action=''))
#PAGE 404
@app.errorhandler(404)
def page_404(e):
return render_template("page404.html"), 404
#NE SURTOUT PAS MODIFIER
if __name__ == "__main__":
app.run(debug=True)