diff --git a/jm2l/__init__.py b/jm2l/__init__.py
index 61ff343..c4ba2be 100644
--- a/jm2l/__init__.py
+++ b/jm2l/__init__.py
@@ -55,6 +55,7 @@ def main(global_config, **settings):
# HTML Routes - Staff
config.add_route('list_task', '/Staff')
+ config.add_route('handle_pole', '/Staff/poles{sep:/*}{pole_id:(\d+)?}')
config.add_route('handle_task', '/Staff/tasks{sep:/*}{task_id:(\d+)?}')
config.add_route('action_task', '/Staff/{action:(\w+)}/{task_id:(\d+)}')
diff --git a/jm2l/forms.py b/jm2l/forms.py
index 7cf076f..010cf28 100644
--- a/jm2l/forms.py
+++ b/jm2l/forms.py
@@ -47,17 +47,19 @@ ATELIER_DURATION = [ (15,u'Lighting talk ( 5 min)'),
class StaffArea(MyBaseForm):
- uid = HiddenField()
name = TextField(u'Pôle')
description = TextAreaField('Description', [validators.optional(), validators.Length(max=1000000)],
filters=[strip_filter]
)
+class EditStaffArea(StaffArea):
+ uid = HiddenField()
+
class StaffTasks(MyBaseForm):
name = TextField(u'Nom de la tâche')
area_uid = SelectField(u'Pôle concerné', coerce=int )
- due_date = DateField(u'Date prévue', format='%d/%m/%Y')
closed_by = SelectField(u'Assigné à', coerce=int )
+ due_date = DateField(u'Date prévue', format='%d/%m/%Y')
description = TextAreaField('Description', [validators.optional(), validators.Length(max=1000000)],
filters=[strip_filter])
@@ -111,29 +113,13 @@ class AddIntervenant(MyBaseForm):
u"son inscription sur le site.")
add = SubmitField('Ajouter des intervenants')
-class InterventionForm(MyBaseForm):
+class ConfCreateForm(MyBaseForm):
+
event_type = HiddenField()
for_year = HiddenField()
start_time = HiddenField()
end_time = HiddenField()
-
- name = TextField(u'Le nom de votre ',
- [validators.DataRequired(u'Vous devez spécifier un nom pour votre intérvention'),
- validators.Length(min=1, max=80, message='entre 1 et 80 car')],
- filters=[strip_filter])
-
- description = TextAreaField(u'Décrivez ici quelques détails à propos de votre intervention ',
- [validators.Optional(), validators.Length(max=1000000)],
- filters=[strip_filter]
- )
-class ConfCreateForm(InterventionForm):
- salle_uid = SelectField(u'Salle', coerce=int,
- description=u"Choisissez ici la salle en fonction "
- u"du nombres de personnes potentiellement intéressé par votre intervention "+
- u"l'organisation se réserve le droit de changer la salle (avec votre accord)."
-
- )
start_sel = SelectField(u'Début', coerce=int,
description=u"C'est une heure indicative correspondant au mieux à vos préférences "+
u"personnelles. Vous pouvez prendre un créneau horaire déjà réservé si vous avez des contraintes "
@@ -144,6 +130,22 @@ class ConfCreateForm(InterventionForm):
description=u"Précisez ici la durée de votre intervention"
)
+ salle_uid = SelectField(u'Salle', coerce=int,
+ description=u"Choisissez ici la salle en fonction "
+ u"du nombres de personnes potentiellement intéressé par votre intervention "+
+ u"l'organisation se réserve le droit de changer la salle (avec votre accord)."
+
+ )
+
+ name = TextField(u'Le nom de votre ',
+ [validators.DataRequired(u'Vous devez spécifier un nom pour votre intérvention'),
+ validators.Length(min=1, max=80, message='entre 1 et 80 car')],
+ filters=[strip_filter])
+
+ description = TextAreaField(u'Décrivez ici quelques détails à propos de votre intervention ',
+ [validators.Optional(), validators.Length(max=1000000)],
+ filters=[strip_filter]
+ )
class ConfUpdateForm(ConfCreateForm):
uid = HiddenField()
diff --git a/jm2l/models.py b/jm2l/models.py
index 2938f3a..f104228 100644
--- a/jm2l/models.py
+++ b/jm2l/models.py
@@ -46,6 +46,10 @@ class TasksArea(Base):
name = Column(Unicode(80))
description = Column(UnicodeText)
+ @classmethod
+ def by_id(cls, id):
+ return DBSession.query(cls).filter(cls.uid == id).first()
+
class Tasks(Base):
__tablename__ = 'staff_tasks'
uid = Column(Integer, primary_key=True)
diff --git a/jm2l/scripts/initializedb.py b/jm2l/scripts/initializedb.py
index 5223b94..38776dd 100644
--- a/jm2l/scripts/initializedb.py
+++ b/jm2l/scripts/initializedb.py
@@ -4,7 +4,7 @@ import sys
import transaction
import time
import lxml.etree as ET
-from datetime import datetime
+
from sqlalchemy import engine_from_config
from sqlalchemy import create_engine
import unicodedata
@@ -13,14 +13,13 @@ import urllib
from slugify import slugify
from sqlite3 import dbapi2 as sqlite
from os import path
-
from pyramid.paster import (
get_appsettings,
setup_logging,
)
-
from jm2l.models import *
+from datetime import datetime
def usage(argv):
cmd = os.path.basename(argv[0])
@@ -39,5 +38,30 @@ def main(argv=sys.argv):
DBSession.configure(bind=engine)
Base.metadata.create_all(engine)
with transaction.manager:
- admin = User(nom=u'jm2l', prenom='contact', slug='contact jm2l', password=u'jm2l', mail=u'contact@jm2l.linux-azur.org')
- DBSession.add(admin)
\ No newline at end of file
+ admin = User(nom=u'jm2l', prenom='contact',
+ slug='contact jm2l', password=u'jm2l',
+ mail=u'contact@jm2l.linux-azur.org',
+ Staff=1
+ )
+ DBSession.add(admin)
+
+ # Create 2015 year event
+ jm2l = JM2L_Year(year_uid=2015,
+ state="Ongoing",
+ description=u"%d, %dème édition des JM2L." % ( 2015, 9 ),
+ start_time=datetime.strptime("28-11-2015 10:00","%d-%m-%Y %H:%M"),
+ end_time=datetime.strptime("28-11-2015 19:00","%d-%m-%Y %H:%M")
+ )
+ DBSession.add(jm2l)
+
+ # Create 2015 Physic room event
+ phy_salle = SallePhy( name=u"Polytech salle 211",
+ description=u"Salle informatique, présence de postes de travail",)
+ DBSession.add(phy_salle)
+ DBSession.flush()
+
+ # Create matching room place (Name could change each year)
+ salle = Salles(name=u"Mystère", description=u"Salle Mystère",
+ phy_salle_id = phy_salle.uid,
+ year_uid = jm2l.year_uid)
+ DBSession.add(salle)
\ No newline at end of file
diff --git a/jm2l/templates/Logistique/Logistique.mako b/jm2l/templates/Logistique/Logistique.mako
index 48c1b05..adb55ae 100644
--- a/jm2l/templates/Logistique/Logistique.mako
+++ b/jm2l/templates/Logistique/Logistique.mako
@@ -298,7 +298,10 @@ ListWrap = ["Co-voiturage",u"Hébergement","Matos"]
## Handle the Javascript Refresh to live update Current Page
## -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
% if reload:
- <% DicExch = Exchanges.get_overview( request.user.uid ) %>
+ <%
+ DicExch = Exchanges.get_overview( request.user.uid )
+ context._kwargs['postpone_js'] = []
+ %>
${Route_wrapper(DicExch)}
${Exchange_wrapper(Type, DicExch[Type])}
%endif
diff --git a/jm2l/templates/Profil/Sejour.mak b/jm2l/templates/Profil/Sejour.mak
index f480a95..3fcd647 100644
--- a/jm2l/templates/Profil/Sejour.mak
+++ b/jm2l/templates/Profil/Sejour.mak
@@ -41,12 +41,18 @@ fieldset:disabled {
% endfor
-
+ ##
@@ -114,13 +120,20 @@ fieldset:disabled {
% endfor
% endfor
-
-
+ ##
diff --git a/jm2l/templates/Staff/list.mako b/jm2l/templates/Staff/list.mako
index f8ddb4a..b2cbe5d 100644
--- a/jm2l/templates/Staff/list.mako
+++ b/jm2l/templates/Staff/list.mako
@@ -1,35 +1,45 @@
# -*- coding: utf-8 -*-
<%inherit file="jm2l:templates/layout.mako"/>
-
+<%
+from slugify import slugify
+%>
+
+ Ajouter un Pôle d'activité
+
Liste des tâches JM2L Staff
-
- % for Num, Entity_Type in enumerate(tasks.keys()):
+ % for Num, Entity in enumerate(sorted(tasks.keys(), key=lambda x:x.name)):
- ${Entity_Type}
+ ${Entity.name}
% endfor
-% for Num, Entity_Type in enumerate(tasks.keys()):
-
+% for Num, Entity in enumerate(sorted(tasks.keys(), key=lambda x:x.name)):
+
+
+ Editer le pôle
+
+
${Entity.name}
+
${Entity.description | n}
- Nom
+
Ajouter une tâche
+ Liste des tâches
- % for task in tasks[Entity_Type]:
+ % for task in tasks[Entity]:
% if task.closed:
@@ -63,25 +73,18 @@
% endfor
-%if 0:
-
-% if tasks:
- % for task in tasks:
-
- ${task.name}
-
- %if task.description:
- ${task.description | n}
- %endif
-
- % endfor
-% else:
- Il n'y a pas de tâches ouverte.
-% endif
-
- Créer une nouvelle tâche
-
-
-%endif
\ No newline at end of file
+
+<%def name="jsAddOn()">
+
+%def>
\ No newline at end of file
diff --git a/jm2l/templates/Staff/tasks.mako b/jm2l/templates/Staff/tasks.mako
index df0c255..d3d9ded 100644
--- a/jm2l/templates/Staff/tasks.mako
+++ b/jm2l/templates/Staff/tasks.mako
@@ -15,6 +15,7 @@
%def>
+Retour à la liste
% if 'uid' in form._fields.keys():
Editer une tâche
% else:
@@ -24,9 +25,9 @@
DicForm = {
'name': {'PlaceHolder':u"Nom de la tâche", "FieldStyle":"width:90%;" },
'area_uid': {'PlaceHolder':u"Pôle", "FieldStyle":"width:16em;", 'ContainerStyle':"float:left;" },
- 'due_date': {'PlaceHolder':u"27/11/2015", "FieldStyle":"width:8em;", 'ContainerStyle':"float:left;"},
- 'closed_by': {'PlaceHolder':u"Assigné à", "FieldStyle":"width:16em;" },
- 'description': {'PlaceHolder':u"Description", "FieldStyle":"width:95%;min-height:150px;" },
+ 'closed_by': {'PlaceHolder':u"Assigné à", "FieldStyle":"width:16em;", 'ContainerStyle':"float:left;" },
+ '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/edit_event.mako b/jm2l/templates/edit_event.mako
index a957b48..fee9f33 100644
--- a/jm2l/templates/edit_event.mako
+++ b/jm2l/templates/edit_event.mako
@@ -3,7 +3,8 @@
<%namespace name="helpers" file="jm2l:templates/helpers.mako"/>
<%def name="jsAddOn()">
-
+
+
%def>
<%def name="cssAddOn()">
@@ -92,13 +93,12 @@ DicForm = {
'duration': {'PlaceHolder':u"Durée", 'ContainerStyle':"padding-right:15px;float:left;", "FieldStyle":"width:15em;"},
'salle_uid': {'PlaceHolder':u"Salle", 'ContainerStyle':"padding-right:15px;", "FieldStyle":"width:15em;"},
'name': {'PlaceHolder':u"Nom", 'ContainerStyle':"padding-right:5px;", "FieldStyle":"width:95%;"},
- 'description': {'PlaceHolder':u"Description", 'ContainerStyle':"padding-right:5px;", "FieldStyle":"width:90%;height:500px;" },
+ 'description': {'PlaceHolder':u"Description", 'ContainerStyle':"padding-right:5px;", "FieldStyle":"width:90%;height:500px;", "ckeditor":1 },
}
%>
${helpers.DisplayForm(form, DicForm)}
-
- Proposer
+ Proposer
@@ -116,8 +116,9 @@ DicForm = {
${helpers.uploader("event", form.uid.data, u"un support de présentation" )}
%else:
- NB: Vous devez proposer votre conférence avant de pouvoir
+ NB: Vous devez proposer votre conférence avant de pouvoir
téléverser votre support de présentation.
+
% endif
% if 'uid' in form._fields:
@@ -174,7 +175,8 @@ TabFields = [
## Then the submit for this form
${formAdd.add}
-
+
+
Créé le ${event.created.strftime('%d %b %Y').decode('utf-8')}
%else:
Créé le
@@ -205,13 +207,14 @@ TabFields = [
var editor = CKEDITOR.replace('description', { autoGrow_onStartup: true, language: 'fr' } );
% else:
- <%
- for jsitem in form._fields.keys():
+<%
+for jsitem in form._fields.keys():
+ context._kwargs['postpone_js'].append( "$('#%s-help').popover();" % jsitem )
+ if form._fields[jsitem].type=='SelectField':
+ context._kwargs['postpone_js'].append( "$('#%s').select2({width:'resolve'});" % jsitem )
+if formAdd:
+ for jsitem in formAdd._fields.keys():
context._kwargs['postpone_js'].append( "$('#%s-help').popover();" % jsitem )
- if form._fields[field].type=='SelectField':
- context._kwargs['postpone_js'].append( "$('#%s').select2({width:'resolve'});" % jsitem )
- if formAdd:
- for jsitem in formAdd._fields.keys():
-
- %>
+%>
+${helpers.uploader_js()}
% endif
\ No newline at end of file
diff --git a/jm2l/templates/edit_tiers.mako b/jm2l/templates/edit_tiers.mako
index f75b6e3..5b7a49c 100644
--- a/jm2l/templates/edit_tiers.mako
+++ b/jm2l/templates/edit_tiers.mako
@@ -1,10 +1,5 @@
<%inherit file="jm2l:templates/layout.mako"/>
<%namespace name="helpers" file="jm2l:templates/helpers.mako"/>
-<%def name="jsAddOn()">
-
-
-
-%def>
<%def name="cssAddOn()">
@@ -148,9 +143,15 @@ DicForm = {
+
% if 'uid' in form._fields:
${helpers.uploader_js()}
% endif
+
+<%def name="jsAddOn()">
+
+
+
+%def>
\ No newline at end of file
diff --git a/jm2l/templates/edit_tiers_categ.mako b/jm2l/templates/edit_tiers_categ.mako
index ba2df09..34795a0 100644
--- a/jm2l/templates/edit_tiers_categ.mako
+++ b/jm2l/templates/edit_tiers_categ.mako
@@ -1,7 +1,20 @@
<%inherit file="jm2l:templates/layout.mako"/>
<%namespace name="helpers" file="jm2l:templates/helpers.mako"/>
<%def name="jsAddOn()">
-
+
+
+
%def>
Gestion des catégories pour les entités
@@ -101,15 +114,3 @@
-
diff --git a/jm2l/templates/helpers.mako b/jm2l/templates/helpers.mako
index c0d966b..aaa1274 100644
--- a/jm2l/templates/helpers.mako
+++ b/jm2l/templates/helpers.mako
@@ -36,15 +36,12 @@ TabJs = {'select':[], 'desc':[]}
% endif
% if DicFormat.has_key(Field.name):
- % if DicFormat[Field.name].has_key("PlaceHolder") and DicFormat[Field.name].has_key("FieldStyle"):
- ${Field(placeholder=DicFormat[Field.name].get("PlaceHolder"), style=DicFormat[Field.name].get("FieldStyle"))}
- % elif DicFormat[Field.name].has_key("PlaceHolder"):
- ${Field(placeholder=DicFormat[Field.name].get("PlaceHolder"))}
- % elif DicFormat[Field.name].has_key("FieldStyle"):
- ${Field(style=DicFormat[Field.name].get("FieldStyle"))}
- % else:
- ${Field()}
- % endif
+ <%
+ PlaceHolder = DicFormat[Field.name].get("PlaceHolder")
+ FieldStyle = DicFormat[Field.name].get("FieldStyle")
+ Class = [None,"ckeditor"][ DicFormat[Field.name].has_key("ckeditor") ]
+ %>
+ ${Field(placeholder=PlaceHolder, style=FieldStyle, class_=Class)}
% else:
${Field()}
% endif
@@ -61,24 +58,12 @@ TabJs = {'select':[], 'desc':[]}
% endif
% endfor
-% if 0:
- ## Then Auto Handle Javascript calls
-
-% else:
<%
for jsitem in TabJs['select']:
context._kwargs['postpone_js'].append( "$('#%s').select2({});" % jsitem )
for jsitem in TabJs['desc']:
context._kwargs['postpone_js'].append( "$('#%s-help').popover();" % jsitem )
%>
-% endif
%def>
## -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
@@ -260,7 +245,7 @@ TabJs = {'select':[], 'desc':[]}
{% } %}
%if 1:
-##
+
% else:
diff --git a/jm2l/templates/layout.mako b/jm2l/templates/layout.mako
index 0a2c10e..4e1023b 100644
--- a/jm2l/templates/layout.mako
+++ b/jm2l/templates/layout.mako
@@ -45,9 +45,7 @@ DisplayYear = request.session.get('year', 2015)
${DisplayYear}