From 9e4f54c41c0bd3a5425d01222a29dccc509e3521 Mon Sep 17 00:00:00 2001 From: tr4ck3ur Date: Sat, 21 Mar 2015 19:12:58 +0100 Subject: [PATCH] Many Changes before production load --- jm2l/__init__.py | 8 +- jm2l/forms.py | 2 +- jm2l/models.py | 26 ++++- jm2l/static/css/jm2l.css | 68 ++++++++++++ .../Interventions/Interventions.mako | 2 +- jm2l/templates/Logistique/Logistique.mako | 4 +- jm2l/templates/Participer.mako | 8 +- jm2l/templates/Public/Plan.mako | 102 ++++++++++-------- jm2l/templates/Public/Presse.mako | 2 + jm2l/templates/Public/Programme.mako | 49 +++++---- jm2l/templates/Staff/tasks.mako | 24 ++--- jm2l/templates/helpers.mako | 55 +++++++++- jm2l/templates/jm2l.mako | 2 +- jm2l/templates/layout.mako | 84 ++++++++++++--- jm2l/templates/list_tiers.mako | 2 +- jm2l/templates/mail_html.mako | 35 ++++-- jm2l/templates/mail_plain.mako | 23 +++- jm2l/upload.py | 26 +++++ 18 files changed, 399 insertions(+), 123 deletions(-) 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()"> - +
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"]
-
La feuille de route de mes interventions
+
@@ -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"/> +
+

Sponsoriser l’événement

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 @@
-

Staff JM2L :

-
    -
  • - Arnaud Delcasse +33 (0) 6 70 73 94 12 -
  • -
  • - Véronique Fritière +33 (0) 6 52 42 31 37 -
  • -
-

Coordinateur Polytech :

-
    -
  • Romain +33 (0) 7 60 57 42 68
  • -
+
-
-

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): -
- ## Container for SVG version of Programme -
-
+
+ +
+ % 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 name="cssAddOn()"> @@ -26,10 +20,12 @@ + +

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)"> \ -
Section
+
% if HeadTitle: @@ -521,3 +521,52 @@ TabJs = {'select':[], 'desc':[]} ${Place.description | n} % endif \ +## -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +## Wrapper pour les sponsors +## -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +<%def name="participants(Year)"> \ + +
Date
+ + + + + <% num = -1 %> + % for entity in request.sponsors(Year): + % for thumb in entity.ThumbLinks: + <% num+=1 %> + % if (num%3==0): + + % endif + + % endfor + % endfor + +
Nos sponsors ${Year}
+ + ${entity.name} + +
+
+ + + + + + <% num = -1 %> + % for entity in request.exposants(Year): + % for thumb in entity.ThumbLinks: + <% num+=1 %> + % if (num%3==0): + + % endif + + % endfor + % endfor + +
Nos exposants ${Year}
+ + ${entity.name} + +
+ \ 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 @@ -
+
@@ -96,19 +135,38 @@ ${helpers.uploader_js()}
-
- ${next.body()} -
+
+
+
+ + ${next.body()} +
+
+ + ${helpers.participants(DisplayYear)} +
+
+
-##


-##