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',