diff --git a/jm2l/__init__.py b/jm2l/__init__.py
index d7e6fe5..b31ef08 100644
--- a/jm2l/__init__.py
+++ b/jm2l/__init__.py
@@ -5,7 +5,7 @@ from pyramid.renderers import JSON, JSONP
from pyramid.session import SignedCookieSessionFactory
from sqlalchemy import engine_from_config
from pyramid.renderers import render_to_response
-from .models import DBSession, get_user
+from .models import DBSession, get_user, get_sponsors, get_exposants
from .security import EntryFactory, groupfinder
from pyramid_mailer import mailer_factory_from_settings
import locale
@@ -17,7 +17,7 @@ def main(global_config, **settings):
locale.setlocale(locale.LC_ALL, "fr_FR.UTF-8")
engine = engine_from_config(settings, 'sqlalchemy.')
DBSession.configure(bind=engine)
- # Extract secrets from configuration file
+ # Extract secrets from configuration file if any
CookiesPasswd = settings.get('secret_Cookies', 'itsthefirstseekreet')
AuthTktPasswd = settings.get('secret_AuthTkt', 'itsthesecondseekreet')
my_session_factory = SignedCookieSessionFactory(CookiesPasswd)
@@ -34,6 +34,8 @@ def main(global_config, **settings):
config.add_renderer('jsonp', JSONP(param_name='callback'))
config.set_session_factory(my_session_factory)
config.add_request_method(get_user, 'user', reify=True)
+ config.add_request_method(get_sponsors, 'sponsors', reify=False)
+ config.add_request_method(get_exposants, 'exposants', reify=False)
config.add_static_view('static', 'static', cache_max_age=3600)
config.add_static_view('img', 'static/img', cache_max_age=3600)
config.add_static_view('css', 'static/css', cache_max_age=3600)
@@ -73,7 +75,7 @@ def main(global_config, **settings):
config.add_route('link_event', '/MesJM2L/{year:\d+}/{intervention:\w+}/link')
config.add_route('edit_event', '/MesJM2L/{year:\d+}/{intervention:\w+}{sep:/*}{event_id:([\w-]+)?}')
- ## Entities
+ ## Entities
config.add_route('entities', '/entities') #{sep:/*}{Nature:\w+?}')
config.add_route('add_entity', '/entity')
config.add_route('show_entity', '/entity/{tiers_type:(\w+)}/{entity_id:([\w-]+)?}')
diff --git a/jm2l/forms.py b/jm2l/forms.py
index 4109527..304a060 100644
--- a/jm2l/forms.py
+++ b/jm2l/forms.py
@@ -60,7 +60,7 @@ class StaffTasks(MyBaseForm):
name = TextField(u'Nom de la tâche', [validators.Required()])
area_uid = SelectField(u'Pôle concerné', coerce=int )
closed_by = SelectField(u'Assigné à', coerce=int )
- due_date = DateField(u'Date prévue', format='%Y-%m-%d')
+ due_date = DateField(u'Date prévue', format='%d/%m/%Y')
description = TextAreaField('Description', [validators.optional(), validators.Length(max=1000000)],
filters=[strip_filter])
diff --git a/jm2l/models.py b/jm2l/models.py
index 9e33644..1995fa7 100644
--- a/jm2l/models.py
+++ b/jm2l/models.py
@@ -243,7 +243,7 @@ class Tiers(Base):
lazy='dynamic')
creator_id = Column(Integer)
membership = relationship('User_Tiers', backref="matching_tiers")
- roles = relationship('Tiers', secondary='role_tiers_link' )
+ roles = relationship('Role_Tiers', backref="roles_tiers") #secondary='role_tiers_link' )
@classmethod
def by_id(cls, id):
@@ -618,3 +618,27 @@ def get_user(request):
# this should return None if the user doesn't exist
# in the database
return DBSession.query(User).filter(User.uid==userid).first()
+
+
+def get_sponsors(request, Year):
+ if Year:
+ return DBSession.query(Tiers)\
+ .join(Role_Tiers, Role_Tiers.tiers_uid == Tiers.uid )\
+ .filter( Role_Tiers.tiers_role == 'Sponsor')\
+ .filter( Role_Tiers.year_uid == Year)
+ else:
+ return DBSession.query(Tiers)\
+ .join(Role_Tiers, Role_Tiers.tiers_uid == Tiers.uid )\
+ .filter( Role_Tiers.tiers_role == 'Sponsor')
+
+def get_exposants(request, Year):
+ if Year:
+ return DBSession.query(Tiers)\
+ .join(Role_Tiers, Role_Tiers.tiers_uid == Tiers.uid )\
+ .filter( Role_Tiers.tiers_role == 'Exposant')\
+ .filter( Role_Tiers.year_uid == Year)
+ else:
+ return DBSession.query(Tiers)\
+ .join(Role_Tiers, Role_Tiers.tiers_uid == Tiers.uid )\
+ .filter( Role_Tiers.tiers_role == 'Exposant')
+
diff --git a/jm2l/static/css/jm2l.css b/jm2l/static/css/jm2l.css
index 33df5da..98da619 100644
--- a/jm2l/static/css/jm2l.css
+++ b/jm2l/static/css/jm2l.css
@@ -2,6 +2,10 @@ a {
cursor: pointer;
}
+.pagecontent {
+ padding: 0 50px;
+}
+
.borderbox {
border: 1px solid #e1e4e5;
margin: 1px 0 24px;
@@ -84,6 +88,7 @@ a {
opacity: 0.5;
position: absolute;
text-align: center;
+ text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
width: 15px;
top: -20px;
}
@@ -96,6 +101,28 @@ a {
right: 15px;
}
+.Tcarousel-control {
+ bottom: 0;
+ color: #fff;
+ font-size: 20px;
+ left: 0;
+ opacity: 0.5;
+ position: absolute;
+ text-align: center;
+ text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
+ top: 100px;;
+ width: 3%;
+}
+
+.Tcarousel-control.left {
+ right: auto;
+ left: 15px;
+}
+.Tcarousel-control.right {
+ left: auto;
+ right: 15px;
+}
+
.LogistiqueTable th, .LogistiqueTable td
{
text-align:center;
@@ -143,6 +170,47 @@ a {
text-align: right;
display: inline-block;
}
+.ShowEntities td, .ShowEntities th {
+ border-top: none;
+}
+
+.ShowEntities td {
+ padding:10px;
+ text-align: center;
+}
+.ShowEntities th {
+ background-color: #fafafa;
+ background-image: linear-gradient(to bottom, #fff, #f2f2f2);
+ background-repeat: repeat-x;
+ border: 1px solid #d4d4d4;
+ border-radius: 4px;
+}
+.ShowEntities {
+ border: 1px solid #d4d4d4;
+}
+.ShowEntities td img {
+ width: 60px;
+ height: 60px;
+}
+
+.ShowEntities td:hover {
+ background-color: #F5F5F5;
+}
+
+.footer {
+ background-color: #f5f5f5;
+ border-top: 1px solid #e5e5e5;
+ margin-top: 70px;
+ padding: 10px 0;
+ text-align: center;
+ width: auto;
+}
+
+.footer p {
+ color: #777;
+ margin-bottom: 0;
+}
+
/* Fix calendar button vertical pos */
.date-input-buttons {
diff --git a/jm2l/templates/Interventions/Interventions.mako b/jm2l/templates/Interventions/Interventions.mako
index 8877efc..07fccad 100644
--- a/jm2l/templates/Interventions/Interventions.mako
+++ b/jm2l/templates/Interventions/Interventions.mako
@@ -1,6 +1,6 @@
<%namespace name="helpers" file="jm2l:templates/helpers.mako"/>
<%def name="Resume()">
-
+
La feuille de route de mes interventions
diff --git a/jm2l/templates/Logistique/Logistique.mako b/jm2l/templates/Logistique/Logistique.mako
index adb55ae..b5fc2bf 100644
--- a/jm2l/templates/Logistique/Logistique.mako
+++ b/jm2l/templates/Logistique/Logistique.mako
@@ -197,7 +197,7 @@ ListWrap = ["Co-voiturage",u"Hébergement","Matos"]
-
+
Section
@@ -246,7 +246,7 @@ ListWrap = ["Co-voiturage",u"Hébergement","Matos"]
-
+
Section
diff --git a/jm2l/templates/Participer.mako b/jm2l/templates/Participer.mako
index de636a2..a9e823d 100644
--- a/jm2l/templates/Participer.mako
+++ b/jm2l/templates/Participer.mako
@@ -1,5 +1,7 @@
<%inherit file="jm2l:templates/layout.mako"/>
<%namespace name="helpers" file="jm2l:templates/helpers.mako"/>
+
+
Si vous voulez aider l’organisation par des moyens financiers ou
@@ -73,7 +75,5 @@ DicForm ={
Cliquez sur ce lien pour finir votre inscription :
Mon lien
% endif
-
-
-
-
+
+
\ No newline at end of file
diff --git a/jm2l/templates/Public/Plan.mako b/jm2l/templates/Public/Plan.mako
index 450d7cd..96dd070 100644
--- a/jm2l/templates/Public/Plan.mako
+++ b/jm2l/templates/Public/Plan.mako
@@ -1,65 +1,77 @@
<%inherit file="jm2l:templates/layout.mako"/>
-Nous rejoindre
-
+
Nous rejoindre...
+
+
+
D’où que vous veniez, tout est mis en place pour que vous
+ puissiez vous rendre en toute simplicité sur les lieux de l’événement.
+ N'hésitez pas à utiliser la section covoiturage de votre profil. Et
+ pas de panique ! Demain, ce sera pire...
+
+
+
+
+
Le staff
+
+ Mail
+ » contact at jm2l.linux-azur.org
+ Téléphone
+ » +33 (0) 6 52 42 31 37
+
+
+
+
Le lieu
+
+ École Polytech’Nice-Sophia
+ 930, route des Colles (site des Templiers)
+ 06903 Sophia Antipolis (Biot)
+
+
GPS Lat.: 43°36'57.72"N - Lon.: 7°4'17.03"E
+
+
+
+
+
-
-
Lieu
-
École Polytech’Nice-Sophia
- 930, route des Colles (site des Templiers)
- 06903 Sophia Antipolis (Biot)
-
-
GPS Lat.: 43°36'57.72"N - Lon.: 7°4'17.03"E
-
D’où que vous veniez, tout est mis en place pour que vous
- puissiez vous rendre en toute simplicité sur les lieux de l’événement.
-
-
-
-
-
- Voir une carte plus grande
-
-
-
-
Depuis Nice (durée : environ 30') :
+
+
Bus
+
Depuis Nice (durée : environ 30') :
Trajet sur la ligne Nice-Sophia Express :
- ligne 230
+ ligne 230
Trajet sur la ligne Cagnes-Villeneuve-Biot-Sophia :
ligne 231
Trajet sur la ligne StLaurent-Cagnes-Sophia :
- ligne 232
+ ligne 232
Trajet sur la ligne Vence-StPaul-Valbonne-Sophia :
- ligne 233
+ ligne 233
Arrivée : descendre à l’arrêt lesTempliers (à 700m à pied) ou IUT (à 150m à pied)
-
Depuis Cannes (durée : environ 30') :
+
Depuis Cannes (durée : environ 30') :
Trajet sur la ligne Cannes - Sophia Antipolis :
- ligne 630
+ ligne 630
Arrivée : descendre à l’arrêt des LesTempliers (à 700m à pied) ou IUT (à 150m à pied)
-
Depuis Antibes (durée : entre 10 et 30') :
+
Depuis Antibes (durée : entre 10 et 30') :
Trajet sur la ligne Express (uniquement pour le vendredi)
ligne 100
@@ -120,22 +132,20 @@
-
-
Pas de panique ! Demain, ce sera pire... Enjoy ;-)
+
+
+
+
+
diff --git a/jm2l/templates/Public/Presse.mako b/jm2l/templates/Public/Presse.mako
index f7f086c..30c39bf 100644
--- a/jm2l/templates/Public/Presse.mako
+++ b/jm2l/templates/Public/Presse.mako
@@ -4,7 +4,9 @@ DisplayYear = request.session.get('year',2015)
%>
Dossier de presse ${DisplayYear}
% if content and content.doss_presse:
+
${content.doss_presse | n}
+
% endif
%if 0 and DisplayYear==2013:
diff --git a/jm2l/templates/Public/Programme.mako b/jm2l/templates/Public/Programme.mako
index a3274a1..bbba7f1 100644
--- a/jm2l/templates/Public/Programme.mako
+++ b/jm2l/templates/Public/Programme.mako
@@ -13,13 +13,21 @@ TabDisplay = [
border: 1px solid #ccc;
height: 65px;
}
+.SvgBody {
+ padding: 0px;
+ background-color: transparent;
+}
+.EvtBox {
+ font-size: 0.7em;
+ line-height: 1.2em;
+ padding:5px;
+ height:100%;
+}
.Conference {
- fill:#f9fde8;
- stroke: #a2bc13;
+ fill: #f9fde8;
}
.Concert {
- fill:#2EE;
- stroke: #ccc;
+ fill: #2EE;
}
.Atelier {
fill: #faebeb;
@@ -30,8 +38,7 @@ TabDisplay = [
stroke: #ff9912;
}
.Repas {
- fill:#2EE;
- stroke: #ccc;
+ fill: #2EE;
}
svg {
font: 10px sans-serif;
@@ -45,30 +52,28 @@ rect {
.axis path,
.axis line {
fill: none;
- stroke: #000;
+ stroke: #222;
}
Le Programme ${DisplayYear}
-
-
-
- % for Num, (Day, IdDay) in enumerate(Days):
- ${Day}
- % endfor
-
-
- % for Num, (Day, IdDay) in enumerate(Days):
-
- ## Container for SVG version of Programme
-
-
+
+
+ % for Num, (Day, IdDay) in enumerate(Days):
+ ${Day}
+ % endfor
+
+
+ % for Num, (Day, IdDay) in enumerate(Days):
+
+ ## Container for SVG version of Programme
+
- % endfor
+ % endfor
-
+
diff --git a/jm2l/templates/Staff/tasks.mako b/jm2l/templates/Staff/tasks.mako
index 30da49d..b03c89e 100644
--- a/jm2l/templates/Staff/tasks.mako
+++ b/jm2l/templates/Staff/tasks.mako
@@ -5,20 +5,14 @@
-
-
+
%def>
<%def name="cssAddOn()">
@@ -26,10 +20,12 @@
+
%def>
+
Green checkmarks indicate that class is visible in your current viewport.
Retour à la liste
% if 'uid' in form._fields.keys():
Editer une tâche
@@ -41,7 +37,7 @@ DicForm = {
'name': {'PlaceHolder':u"Nom de la tâche", "FieldStyle":"width:90%;" },
'area_uid': {"FieldStyle":"width:16em;", 'ContainerStyle':"float:left;" },
'closed_by': {"FieldStyle":"width:16em;", 'ContainerStyle':"float:left;" },
- 'due_date': {'PlaceHolder':u"27/11/2015", "FieldStyle":"width:8em;"},
+ 'due_date': {'PlaceHolder':u"27/11/2015", "FieldStyle":"width:8em;"},
'description': {'PlaceHolder':u"Description", "FieldStyle":"width:95%;min-height:150px;", "ckeditor":"1" },
}
%>
diff --git a/jm2l/templates/helpers.mako b/jm2l/templates/helpers.mako
index a8623d7..655e3cd 100644
--- a/jm2l/templates/helpers.mako
+++ b/jm2l/templates/helpers.mako
@@ -41,8 +41,8 @@ TabJs = {'select':[], 'desc':[]}
FieldStyle = DicFormat[Field.name].get("FieldStyle")
Class = [False,"ckeditor"][ "ckeditor" in DicFormat[Field.name] ]
%>
- % if Field.type == "DateField":
- ${Field(placeholder=PlaceHolder or False, style=FieldStyle, class_=Class, type = "date")}
+ % if Field.type == "date":
+ ${Field(placeholder=PlaceHolder or False, style=FieldStyle, class_="datepicker" )}
% else:
${Field(placeholder=PlaceHolder or False, style=FieldStyle, class_=Class)}
% endif
@@ -253,7 +253,7 @@ TabJs = {'select':[], 'desc':[]}
## Wrapper pour les intervention utilisateur
## -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
<%def name="show_Interventions(ListEvent, HeadTitle=None, NotFoundTitle=None)"> \
-
+
Date
% if HeadTitle:
@@ -521,3 +521,52 @@ TabJs = {'select':[], 'desc':[]}
${Place.description | n}
% endif
%def> \
+## -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+## Wrapper pour les sponsors
+## -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+<%def name="participants(Year)"> \
+
+
+
+ Nos sponsors ${Year}
+
+
+ <% num = -1 %>
+ % for entity in request.sponsors(Year):
+ % for thumb in entity.ThumbLinks:
+ <% num+=1 %>
+ % if (num%3==0):
+
+ % endif
+
+
+
+
+
+ % endfor
+ % endfor
+
+
+
+
+
+ Nos exposants ${Year}
+
+
+ <% num = -1 %>
+ % for entity in request.exposants(Year):
+ % for thumb in entity.ThumbLinks:
+ <% num+=1 %>
+ % if (num%3==0):
+
+ % endif
+
+
+
+
+
+ % endfor
+ % endfor
+
+
+%def> \
diff --git a/jm2l/templates/jm2l.mako b/jm2l/templates/jm2l.mako
index 7ee2700..c0c7a69 100644
--- a/jm2l/templates/jm2l.mako
+++ b/jm2l/templates/jm2l.mako
@@ -56,7 +56,7 @@
-
+
Mon Profil
diff --git a/jm2l/templates/layout.mako b/jm2l/templates/layout.mako
index ea2886d..caa2ed1 100644
--- a/jm2l/templates/layout.mako
+++ b/jm2l/templates/layout.mako
@@ -32,10 +32,44 @@ DisplayYear = request.session.get('year', 2015)
${helpers.uploader_js()}
-
-
-
+
+ % if DisplayYear!=2015:
+ ## style="background: url( ${"/img/%s/headerbg.png" % DisplayYear} ) repeat-x scroll 0 top #ffffff;">
+
+ % else:
+
+
+ % endif
+
@@ -96,19 +135,38 @@ ${helpers.uploader_js()}
-
- ${next.body()}
-
+
+
+
+
+ ${next.body()}
+
+
+
+ ${helpers.participants(DisplayYear)}
+
+
+
-##
-##