diff --git a/jm2l/models.py b/jm2l/models.py index 930a4f5..b4b3067 100644 --- a/jm2l/models.py +++ b/jm2l/models.py @@ -33,6 +33,8 @@ from sqlalchemy.orm import ( from zope.sqlalchemy import ZopeTransactionExtension from jm2l.const import CurrentYear +from passlib.hash import argon2 + DBSession = scoped_session(sessionmaker(extension=ZopeTransactionExtension())) Base = declarative_base() @@ -247,7 +249,11 @@ class User(Base): return MediaPath().get_thumb('users', self.uid) def verify_password(self, password): - return self.password == password + if not argon2.identify(self.password): # Update existing clear-text password + self.password = argon2.using(rounds=4).hash(self.password) + DBSession.merge(self) + + return argon2.verify(password, self.password) class TiersOpt(Base): __tablename__ = 'tiers_opt' diff --git a/jm2l/static/img/2017/jm2l_2017_logo_3.png b/jm2l/static/img/2017/jm2l_2017_logo_3.png new file mode 100644 index 0000000..1bf60e3 Binary files /dev/null and b/jm2l/static/img/2017/jm2l_2017_logo_3.png differ diff --git a/jm2l/static/img/2017/logo_2.png b/jm2l/static/img/2017/logo_2.png index bd09df6..1bf60e3 100644 Binary files a/jm2l/static/img/2017/logo_2.png and b/jm2l/static/img/2017/logo_2.png differ diff --git a/jm2l/templates/Logistique/Logistique.mako b/jm2l/templates/Logistique/Logistique.mako index 86a93ae..3f79dfb 100644 --- a/jm2l/templates/Logistique/Logistique.mako +++ b/jm2l/templates/Logistique/Logistique.mako @@ -65,19 +65,19 @@ DicForm = { Vendredi soir :

Certains conférenciers viennent de très loin et seront présent dés le vendredi.
- Nous vous proposons de nous retrouver au Hop Store + Nous vous proposons de nous retrouver à proximité, à la CASA.
+ La carte CASA le vendredi soir autour d'un verre et d'un bon repas !

Samedi Midi :

- À la pause du midi, nous vous proposons un repas avec le food-truck "lakitchenette" qui sera présent sur le parking de PolyTech
- La carte lakitchenette + À la pause du midi, nous vous proposons un repas avec le food-truck 'les frères toqués' qui sera présent sur le parking de PolyTech

Samedi Soir :

Pour conclure la journée nous avons l'habitude de nous retrouver au repas de cloture.
- Nous vous proposons de nous retrouver à proximité, à la CASA.
- La carte CASA + Nous vous proposons de nous retrouver à Antibes au restaurant Les Tonnelles
+ Les Tonnelles

diff --git a/jm2l/views.py b/jm2l/views.py index 1c27ae3..1448798 100644 --- a/jm2l/views.py +++ b/jm2l/views.py @@ -33,6 +33,8 @@ import shutil import glob from jm2l.const import CurrentYear +from passlib.hash import argon2 + ## =-=- Here, We keep some usefull function -=-= def remove_accents(input_str): """ This function is intended to remove all accent from input unicode string """ @@ -297,7 +299,7 @@ def JSON_TimeLine_Request(request): "asset": { #"media":"https://www.youtube.com/watch?v=91X65eEKxvU&t=6s", - "media":embeed_video("video/ogg","http://jm2l.linux-azur.org/resources/2015/Video/jm2l_france3-2015.ogv"), + "media":embeed_video("video/ogg","/resources/2015/Video/jm2l_france3-2015.ogv"), "credit":"Reportage France 3", "caption":"JM2L 2015" } @@ -312,7 +314,7 @@ def JSON_TimeLine_Request(request): "asset": { #"media":"https://www.youtube.com/watch?v=91X65eEKxvU&t=6s", - "media":embeed_video("video/ogg","http://jm2l.linux-azur.org/resources/2015/Video/jm2l_france3-2015.ogv"), + "media":embeed_video("video/ogg","/resources/2015/Video/jm2l_france3-2015.ogv"), "credit":"Reportage France 3", "caption":"JM2L 2015" } @@ -339,7 +341,7 @@ def JSON_TimeLine_Request(request): "text":"5ème Édition", "asset": { - "media":embeed_video("video/ogg","http://jm2l.linux-azur.org/resources/2010/Video/reportages/JM2L2010-PleinSudTV.ogv"), + "media":embeed_video("video/ogg","/resources/2010/Video/reportages/JM2L2010-PleinSudTV.ogv"), "credit":"Le reportage Plein-sud TV", "caption":"JM2L", } @@ -352,7 +354,7 @@ def JSON_TimeLine_Request(request): "text":"2ème Édition", "asset": { - "media":embeed_video("video/ogg","http://jm2l.linux-azur.org/resources/2007/Video/20071110-linux.ogv"), + "media":embeed_video("video/ogg","/resources/2007/Video/20071110-linux.ogv"), "credit":"Le reportage Plein-sud TV", "caption":"JM2L 2007", } @@ -518,12 +520,20 @@ def expenses(request): if dic_out[tab_path[4]].get('RIB') is None: dic_out[tab_path[4]]['RIB'] = {'files':[], 'thumb':[]} u = User.by_slug(tab_path[4]) - dic_out[tab_path[4]]['User'] = { - 'uid':u.uid, - 'nom':u.nom, - 'prenom':u.prenom, - 'slug':u.slug - } + if u is None: + dic_out[tab_path[4]]['User'] = { + 'uid':'# NOT FOUND', + 'nom':name, + 'prenom':'# NOT FOUND', + 'slug':'# NOT FOUND' + } + else: + dic_out[tab_path[4]]['User'] = { + 'uid':u.uid, + 'nom':u.nom, + 'prenom':u.prenom, + 'slug':u.slug + } dic_out[tab_path[4]]['RIB']['files'].append( name ) dic_out[tab_path[4]]['RIB']['thumb'].append( name + ".jpg" ) @@ -539,12 +549,20 @@ def expenses(request): if dic_out[tab_path[4]].get('Justif') is None: dic_out[tab_path[4]]['Justif'] = {'files':[], 'thumb':[]} u = User.by_slug(tab_path[4]) - dic_out[tab_path[4]]['User'] = { - 'uid':u.uid, - 'nom':u.nom, - 'prenom':u.prenom, - 'slug':u.slug - } + if u is None: + dic_out[tab_path[4]]['User'] = { + 'uid':'# NOT FOUND', + 'nom':name, + 'prenom':'# NOT FOUND', + 'slug':'# NOT FOUND' + } + else: + dic_out[tab_path[4]]['User'] = { + 'uid':u.uid, + 'nom':u.nom, + 'prenom':u.prenom, + 'slug':u.slug + } dic_out[tab_path[4]]['Justif']['files'].append( name ) dic_out[tab_path[4]]['Justif']['thumb'].append( name + ".jpg" ) @@ -1171,7 +1189,7 @@ def Modal(request): response = render_to_response('jm2l:templates/modals_js.mako', {'modtype':modtype}, request=request) - request.user.password = form.password.data + request.user.password = argon2.using(rounds=4).hash(form.password.data) DBSession.merge(request.user) response.content_type = 'text/javascript' return response diff --git a/setup.py b/setup.py index 5d0df3d..0c3e4f6 100644 --- a/setup.py +++ b/setup.py @@ -32,7 +32,9 @@ requires = [ 'pyramid_mailer', 'apscheduler', 'qrcode', - 'reportlab' + 'reportlab', + 'passlib', + 'argon2_cffi' ] setup(name='JM2L',