forked from tr4ck3ur/jm2l
Added Salle Physical Salle Management
Added Role Form for entities
This commit is contained in:
+11
-5
@@ -56,12 +56,17 @@ def main(global_config, **settings):
|
|||||||
config.add_route('vote_logo', '/vote_logo/{num:\d+}')
|
config.add_route('vote_logo', '/vote_logo/{num:\d+}')
|
||||||
|
|
||||||
# HTML Routes - Staff
|
# HTML Routes - Staff
|
||||||
config.add_route('list_task', '/Staff')
|
config.add_route('list_task', '/Staff')
|
||||||
config.add_route('handle_pole', '/Staff/poles{sep:/*}{pole_id:(\d+)?}')
|
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('handle_task', '/Staff/tasks{sep:/*}{task_id:(\d+)?}')
|
||||||
config.add_route('action_task', '/Staff/{action:(\w+)}/{task_id:(\d+)}')
|
config.add_route('action_task', '/Staff/{action:(\w+)}/{task_id:(\d+)}')
|
||||||
config.add_route('action_task_area', '/Staff/pole/{action:(\w+)}/{pole_id:(\d+)}')
|
config.add_route('action_task_area', '/Staff/pole/{action:(\w+)}/{pole_id:(\d+)}')
|
||||||
|
|
||||||
|
config.add_route('list_salles', '/ListSalles')
|
||||||
|
config.add_route('handle_salle', '/Salles{sep:/*}{salle_id:(\d+)?}')
|
||||||
|
config.add_route('handle_salle_phy', '/PhySalles{sep:/*}{salle_id:(\d+)?}')
|
||||||
|
config.add_route('action_salle', '/Salles/{action:(\w+)}/{salle_id:(\d+)}')
|
||||||
|
|
||||||
# HTML Routes - Public
|
# HTML Routes - Public
|
||||||
config.add_route('home', '/')
|
config.add_route('home', '/')
|
||||||
config.add_route('presse', '/{year:\d+}/dossier-de-presse')
|
config.add_route('presse', '/{year:\d+}/dossier-de-presse')
|
||||||
@@ -73,7 +78,8 @@ def main(global_config, **settings):
|
|||||||
|
|
||||||
## Events
|
## Events
|
||||||
config.add_route('event', '/event/{year:\d+}/{event_id:([\w-]+)?}')
|
config.add_route('event', '/event/{year:\d+}/{event_id:([\w-]+)?}')
|
||||||
config.add_route('link_event', '/MesJM2L/{year:\d+}/{intervention:\w+}/link')
|
config.add_route('link_event_user', '/MesJM2L/{year:\d+}/{intervention:\w+}/link_user')
|
||||||
|
config.add_route('link_event_tiers', '/MesJM2L/{year:\d+}/{intervention:\w+}/link_tiers')
|
||||||
config.add_route('edit_event', '/MesJM2L/{year:\d+}/{intervention:\w+}{sep:/*}{event_id:([\w-]+)?}')
|
config.add_route('edit_event', '/MesJM2L/{year:\d+}/{intervention:\w+}{sep:/*}{event_id:([\w-]+)?}')
|
||||||
|
|
||||||
## Entities
|
## Entities
|
||||||
|
|||||||
+40
-1
@@ -79,6 +79,13 @@ class TiersMember(MyBaseForm):
|
|||||||
year_uid = SelectField(u'Année', coerce=int, choices=zip(range(2006,2016),range(2006,2016)))
|
year_uid = SelectField(u'Année', coerce=int, choices=zip(range(2006,2016),range(2006,2016)))
|
||||||
user_uid = TextField(u'user')
|
user_uid = TextField(u'user')
|
||||||
role = TextField(u'Role')
|
role = TextField(u'Role')
|
||||||
|
|
||||||
|
class TiersRole(MyBaseForm):
|
||||||
|
class Meta:
|
||||||
|
csrf = False
|
||||||
|
|
||||||
|
year_uid = SelectField(u'Année', coerce=int, choices=zip(range(2006,2016),range(2006,2016)))
|
||||||
|
tiers_role = SelectField(u'Role', choices=TIERS_ROLE)
|
||||||
|
|
||||||
class TiersChoice(MyBaseForm):
|
class TiersChoice(MyBaseForm):
|
||||||
class Meta:
|
class Meta:
|
||||||
@@ -96,6 +103,13 @@ class AddIntervenant(MyBaseForm):
|
|||||||
event_uid = HiddenField()
|
event_uid = HiddenField()
|
||||||
intervenant = SelectField(u'Intervenant', coerce=int )
|
intervenant = SelectField(u'Intervenant', coerce=int )
|
||||||
|
|
||||||
|
class AddTiers(MyBaseForm):
|
||||||
|
class Meta:
|
||||||
|
csrf = False
|
||||||
|
|
||||||
|
event_uid = HiddenField()
|
||||||
|
tiers = SelectField(u'Entité', coerce=int )
|
||||||
|
|
||||||
class ConfCreateForm(MyBaseForm):
|
class ConfCreateForm(MyBaseForm):
|
||||||
|
|
||||||
event_type = HiddenField()
|
event_type = HiddenField()
|
||||||
@@ -133,6 +147,29 @@ class ConfCreateForm(MyBaseForm):
|
|||||||
class ConfUpdateForm(ConfCreateForm):
|
class ConfUpdateForm(ConfCreateForm):
|
||||||
uid = HiddenField()
|
uid = HiddenField()
|
||||||
|
|
||||||
|
class SalleForm(MyBaseForm):
|
||||||
|
year_uid = SelectField(u'Année', coerce=int)
|
||||||
|
phy_salle_id = SelectField('Salle Physique', coerce=int)
|
||||||
|
place_type = SelectField('Type', choices=[('Conference','Conference'),
|
||||||
|
('Stand','Stand'), ('Ateliers','Ateliers'), ('Autres','Autres') ])
|
||||||
|
name = TextField('Nom de la salle', [validators.Length(min=1, max=40)],
|
||||||
|
filters=[strip_filter])
|
||||||
|
description = TextAreaField('Description',
|
||||||
|
filters=[strip_filter])
|
||||||
|
|
||||||
|
class EditSalleForm(SalleForm):
|
||||||
|
salle_id = HiddenField()
|
||||||
|
|
||||||
|
class SallePhyForm(MyBaseForm):
|
||||||
|
name = TextField('Nom de la salle', [validators.Length(min=1, max=40)],
|
||||||
|
filters=[strip_filter])
|
||||||
|
nb_places = TextField('Nombre de places', [validators.Length(max=4)])
|
||||||
|
description = TextAreaField('Description',
|
||||||
|
filters=[strip_filter])
|
||||||
|
|
||||||
|
class EditSallePhyForm(SallePhyForm):
|
||||||
|
uid = HiddenField()
|
||||||
|
|
||||||
class PlaceCreateForm(MyBaseForm):
|
class PlaceCreateForm(MyBaseForm):
|
||||||
|
|
||||||
place_type = SelectField('Type', choices=PLACE_TYPE)
|
place_type = SelectField('Type', choices=PLACE_TYPE)
|
||||||
@@ -342,7 +379,9 @@ class TiersForm(MyBaseForm):
|
|||||||
description = u"Vous pouvez insérer les détails"
|
description = u"Vous pouvez insérer les détails"
|
||||||
)
|
)
|
||||||
|
|
||||||
membership = FieldList(FormField(TiersMember))
|
membership = FieldList(FormField(TiersMember))
|
||||||
|
|
||||||
|
roles = FieldList(FormField(TiersRole))
|
||||||
|
|
||||||
class UpdateTiersForm(TiersForm):
|
class UpdateTiersForm(TiersForm):
|
||||||
uid = HiddenField()
|
uid = HiddenField()
|
||||||
|
|||||||
@@ -345,6 +345,7 @@ class Salles(Base):
|
|||||||
created = Column(DateTime, default=datetime.datetime.now)
|
created = Column(DateTime, default=datetime.datetime.now)
|
||||||
last_change = Column(DateTime, default=datetime.datetime.now)
|
last_change = Column(DateTime, default=datetime.datetime.now)
|
||||||
|
|
||||||
|
phy = relationship(SallePhy)
|
||||||
@classmethod
|
@classmethod
|
||||||
def by_id(cls, uid):
|
def by_id(cls, uid):
|
||||||
return DBSession.query(cls).filter(cls.salle_id == uid).first()
|
return DBSession.query(cls).filter(cls.salle_id == uid).first()
|
||||||
|
|||||||
@@ -0,0 +1,90 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
<%inherit file="jm2l:templates/layout.mako"/>
|
||||||
|
<%
|
||||||
|
from slugify import slugify
|
||||||
|
%>
|
||||||
|
<a style="float:right;" class="btn btn-mini btn-info" role="button" href="/Salles">
|
||||||
|
<i class="icon-plus-sign icon-white"></i> Ajouter une Salle
|
||||||
|
</a>
|
||||||
|
<h3>Gestion des salles JM2L</h3>
|
||||||
|
|
||||||
|
<div class="row-fluid">
|
||||||
|
<div class="span10 offset1">
|
||||||
|
|
||||||
|
<div class="tabbable" id="main_tab">
|
||||||
|
<ul class="nav nav-tabs" style="margin-bottom: 5px;">
|
||||||
|
% for Num, Entity in enumerate(sorted(DicSalle.keys(), key=lambda x:x.year_uid)):
|
||||||
|
<li class="${["","active"][Num==0]}">
|
||||||
|
<a href="#${Entity.year_uid}" id="Map_Pole_${Entity.year_uid}" data-toggle="tab">${Entity.year_uid}</a>
|
||||||
|
</li>
|
||||||
|
% endfor
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<div class="tab-content" style="padding:0 10px">
|
||||||
|
|
||||||
|
% for Num, Entity in enumerate(sorted(DicSalle.keys(), key=lambda x:x.year_uid)):
|
||||||
|
<div class="tab-pane fade ${["","active "][Num==0]} in" id="${Entity.year_uid}">
|
||||||
|
<h4>${Entity.year_uid}</h4>
|
||||||
|
<table class="table table-striped table-bordered table-hover">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th colspan="2" style="text-align:center;">
|
||||||
|
Liste des salles
|
||||||
|
</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
% if len(DicSalle[Entity])==0:
|
||||||
|
<tr>
|
||||||
|
<td style="text-align:center;">
|
||||||
|
<i>Il n'y a pas de salle définie pour l'année ${Entity.year_uid}</i>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
% endif
|
||||||
|
% for Salle in DicSalle[Entity]:
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
${Salle.place_type or ""} <a href="/Salles/${Salle.salle_id}">${Salle.name or ""}</a>
|
||||||
|
${len(Salle.allevents)} : [
|
||||||
|
% for e in Salle.allevents:
|
||||||
|
<a href="/event/${e.for_year}/${e.slug}">${e.uid}</a>,
|
||||||
|
% endfor
|
||||||
|
]
|
||||||
|
<div class="pull-right">
|
||||||
|
% if Salle.phy_salle_id:
|
||||||
|
[ <a href="/PhySalles/${Salle.phy_salle_id}">${Salle.phy.name}</a> ${Salle.phy.nb_places} places ]
|
||||||
|
% else:
|
||||||
|
[ <a href="/PhySalles">Créer</a> ]
|
||||||
|
% endif
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
% if Salle.description:
|
||||||
|
<tr>
|
||||||
|
<td><div>${Salle.description | n}</div></td>
|
||||||
|
</tr>
|
||||||
|
% endif
|
||||||
|
% endfor
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
% endfor
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<%def name="jsAddOn()">
|
||||||
|
<script>
|
||||||
|
$('a[data-toggle="tab"]')
|
||||||
|
.on('shown', function(e) {
|
||||||
|
//stateObj = { tab: $(e.target).attr('href').substr(1) };
|
||||||
|
//history.replaceState(stateObj, "", "/Staff" + $(e.target).attr('href') );
|
||||||
|
location.hash = $(e.target).attr('href');
|
||||||
|
});
|
||||||
|
|
||||||
|
if (location.hash !== '') {
|
||||||
|
$('a[href="' + location.hash + '"]').tab('show');
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</%def>
|
||||||
@@ -0,0 +1,58 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
<%inherit file="jm2l:templates/layout.mako"/>
|
||||||
|
<%namespace name="helpers" file="jm2l:templates/helpers.mako"/>
|
||||||
|
<%def name="jsAddOn()">
|
||||||
|
<script src="/js/jm2l.js"></script>
|
||||||
|
<script src="/vendor/ckeditor/ckeditor.js"></script>
|
||||||
|
<script src="/vendor/select2/js/select2.js"></script>
|
||||||
|
</%def>
|
||||||
|
<%def name="cssAddOn()">
|
||||||
|
<link rel="stylesheet" href="/css/jm2l.css" />
|
||||||
|
<link rel="stylesheet" href="/vendor/select2/css/select2.css" type="text/css" media="screen" />
|
||||||
|
</%def>
|
||||||
|
|
||||||
|
<div class="row-fluid">
|
||||||
|
<div class="span10 offset1">
|
||||||
|
|
||||||
|
<a class="btn" href="${request.route_path('list_salles')}">
|
||||||
|
<i class="icon-arrow-left"></i> Retour à la liste
|
||||||
|
</a>
|
||||||
|
% if 'salle_id' in form._fields.keys():
|
||||||
|
<a class="btn btn-danger btn-mini pull-right" href="${request.route_path('action_salle', action='delete', salle_id=form.salle_id.data)}">
|
||||||
|
<i class="icon-remove icon-white"></i> Supprimer cette salle
|
||||||
|
</a>
|
||||||
|
%endif
|
||||||
|
% if 'salle_id' in form._fields.keys():
|
||||||
|
<h3>Editer une Salle</h3>
|
||||||
|
% else:
|
||||||
|
<h3>Ajouter une Salle</h3>
|
||||||
|
%endif
|
||||||
|
<%
|
||||||
|
DicForm = {
|
||||||
|
'year_uid': {'PlaceHolder':u"Année", "FieldStyle":"width:7em;", "ContainerStyle":"float:left;" },
|
||||||
|
'phy_salle_id': {'PlaceHolder':u"Salle Physique", "FieldStyle":"width:20em;", "ContainerStyle":"float:left;" },
|
||||||
|
'place_type': {'PlaceHolder':u"Type d'évenement","FieldStyle":"width:15em;" },
|
||||||
|
'name': {'PlaceHolder':u"Nom de la salle", "FieldStyle":"width:90%;" },
|
||||||
|
'description': {'PlaceHolder':u"Description", "ContainerStyle":"width:95%;min-height:150px;padding-top: 12px;", "ckeditor":"1" },
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
|
||||||
|
% if 'salle_id' in form._fields.keys():
|
||||||
|
<form action="/Salles/${form.salle_id.data}" method="post">
|
||||||
|
${form.salle_id()}
|
||||||
|
%else:
|
||||||
|
<form action="/Salles" method="post">
|
||||||
|
%endif
|
||||||
|
${helpers.DisplayForm(form, DicForm)}
|
||||||
|
|
||||||
|
<br>
|
||||||
|
<center>
|
||||||
|
<button type="submit" class="btn btn-large btn-primary" />
|
||||||
|
<i class="icon-ok icon-white"></i> Enregistrer
|
||||||
|
</button>
|
||||||
|
</center>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
<%inherit file="jm2l:templates/layout.mako"/>
|
||||||
|
<%namespace name="helpers" file="jm2l:templates/helpers.mako"/>
|
||||||
|
<%def name="jsAddOn()">
|
||||||
|
<script src="/js/jm2l.js"></script>
|
||||||
|
<script src="/vendor/ckeditor/ckeditor.js"></script>
|
||||||
|
<script src="/vendor/select2/js/select2.js"></script>
|
||||||
|
</%def>
|
||||||
|
<%def name="cssAddOn()">
|
||||||
|
<link rel="stylesheet" href="/vendor/fileupload/css/jquery.fileupload.css">
|
||||||
|
<link rel="stylesheet" href="/vendor/fileupload/css/jquery.fileupload-ui.css">
|
||||||
|
<link rel="stylesheet" href="/css/jm2l.css" />
|
||||||
|
<link rel="stylesheet" href="/vendor/select2/css/select2.css" type="text/css" media="screen" />
|
||||||
|
<!-- CSS adjustments for browsers with JavaScript disabled -->
|
||||||
|
<noscript><link rel="stylesheet" href="/vendor/fileupload/css/jquery.fileupload-noscript.css"></noscript>
|
||||||
|
<noscript><link rel="stylesheet" href="/vendor/fileupload/css/jquery.fileupload-ui-noscript.css"></noscript>
|
||||||
|
</%def>
|
||||||
|
|
||||||
|
<div class="row-fluid">
|
||||||
|
<div class="span10 offset1">
|
||||||
|
|
||||||
|
<a class="btn" href="${request.route_path('list_salles')}">
|
||||||
|
<i class="icon-arrow-left"></i> Retour à la liste
|
||||||
|
</a>
|
||||||
|
% if 'uid' in form._fields.keys():
|
||||||
|
<h3>Editer une Salle Physique</h3>
|
||||||
|
% else:
|
||||||
|
<h3>Ajouter une Salle Physique</h3>
|
||||||
|
%endif
|
||||||
|
<%
|
||||||
|
DicForm = {
|
||||||
|
'name': {'PlaceHolder':u"Nom de la salle", "FieldStyle":"width:25em;", "ContainerStyle":"float:left;" },
|
||||||
|
'nb_places': {'PlaceHolder':u"Nombre de places", "FieldStyle":"width:10em;" },
|
||||||
|
'description': {'PlaceHolder':u"Description", "ContainerStyle":"width:95%;min-height:150px;padding-top: 12px;", "ckeditor":"1" },
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
|
||||||
|
% if 'uid' in form._fields.keys():
|
||||||
|
<form action="/PhySalles/${form.uid.data}" method="post">
|
||||||
|
${form.uid()}
|
||||||
|
%else:
|
||||||
|
<form action="/PhySalles" method="post">
|
||||||
|
%endif
|
||||||
|
${helpers.DisplayForm(form, DicForm)}
|
||||||
|
|
||||||
|
<br>
|
||||||
|
<center>
|
||||||
|
<button type="submit" class="btn btn-large btn-primary" />
|
||||||
|
<i class="icon-ok icon-white"></i> Enregistrer
|
||||||
|
</button>
|
||||||
|
</center>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
% if 'uid' in form._fields.keys():
|
||||||
|
<center>
|
||||||
|
${helpers.uploader("salle", form.uid.data, u"Attachement" )}
|
||||||
|
</center>
|
||||||
|
%endif
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@@ -99,12 +99,31 @@ DicForm = {
|
|||||||
% endif
|
% endif
|
||||||
|
|
||||||
% if 'uid' in form._fields:
|
% if 'uid' in form._fields:
|
||||||
|
|
||||||
|
<fieldset>
|
||||||
|
<legend>Indiquez l'entité dont vous faites la promotion :</legend>
|
||||||
|
<p>
|
||||||
|
<form action="/MesJM2L/${form.for_year.data}/${form.event_type.data}/link_tiers" method="POST">
|
||||||
|
${formAddT.event_uid}
|
||||||
|
<input type="hidden" id="tiers" name="tiers" style="width:20em;"
|
||||||
|
class="form-control select2-offscreen" tabindex="-1">
|
||||||
|
</input>
|
||||||
|
<button type="submit" class="btn btn-primary" />
|
||||||
|
<i class="icon-plus icon-white"></i> Ajouter cette entitée
|
||||||
|
</button>
|
||||||
|
</form>
|
||||||
|
NB : Notez que les entités séléctionnées apparaissent dans les exposants.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>Ajouter vos co-intervenants</legend>
|
<legend>Ajouter vos co-intervenants</legend>
|
||||||
<p>
|
<p>
|
||||||
Vous avez la possibilité d'être plusieurs pour un même évenement.<br>
|
Vous avez la possibilité d'être plusieurs pour un même évenement.<br>
|
||||||
Chacun des intervenants doit être inscrit sur le site.
|
Chacun des intervenants doit être inscrit sur le site.
|
||||||
<form action="/MesJM2L/${form.for_year.data}/${form.event_type.data}/link" method="POST">
|
<form action="/MesJM2L/${form.for_year.data}/${form.event_type.data}/link_user" method="POST">
|
||||||
${formAdd.event_uid}
|
${formAdd.event_uid}
|
||||||
<input type="hidden" id="intervenant" name="intervenant" style="width:20em;"
|
<input type="hidden" id="intervenant" name="intervenant" style="width:20em;"
|
||||||
class="form-control select2-offscreen" tabindex="-1">
|
class="form-control select2-offscreen" tabindex="-1">
|
||||||
@@ -134,6 +153,21 @@ DicForm = {
|
|||||||
<script src="/vendor/select2/js/select2.js"></script>
|
<script src="/vendor/select2/js/select2.js"></script>
|
||||||
<script>
|
<script>
|
||||||
jQuery(function() {
|
jQuery(function() {
|
||||||
|
$("#tiers").select2(
|
||||||
|
{
|
||||||
|
placeholder: 'Entrez ici votre entitée',
|
||||||
|
minimumInputLength: 2, allowClear: true,
|
||||||
|
ajax: {
|
||||||
|
quietMillis: 250, url: "/json-tiers", dataType: 'json',
|
||||||
|
data: function (term, page) {
|
||||||
|
return { pageSize: 8, pageNum: page, searchTerm: term };
|
||||||
|
},
|
||||||
|
results: function (data, page) {
|
||||||
|
var more = (page * 8) < data.Total;
|
||||||
|
return { results: data.Results, more: more };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
$("#intervenant").select2(
|
$("#intervenant").select2(
|
||||||
{
|
{
|
||||||
placeholder: 'Entrez ici un Nom ou un Prénom',
|
placeholder: 'Entrez ici un Nom ou un Prénom',
|
||||||
|
|||||||
+144
-36
@@ -24,8 +24,9 @@ DicForm = {
|
|||||||
'name': {'PlaceHolder':u"Nom", 'ContainerStyle':"padding-right:5px;float:left;width:35em;", "FieldStyle":"width:31em;"},
|
'name': {'PlaceHolder':u"Nom", 'ContainerStyle':"padding-right:5px;float:left;width:35em;", "FieldStyle":"width:31em;"},
|
||||||
'tiers_type': {'PlaceHolder':u"Nature", 'ContainerStyle':"padding-right:5px;", "FieldStyle":"width:15em;"},
|
'tiers_type': {'PlaceHolder':u"Nature", 'ContainerStyle':"padding-right:5px;", "FieldStyle":"width:15em;"},
|
||||||
'description': {'PlaceHolder':u"Description", 'ContainerStyle':"padding-right:5px;padding-top: 20px;", "FieldStyle":"width:90%;min-height:150px;" },
|
'description': {'PlaceHolder':u"Description", 'ContainerStyle':"padding-right:5px;padding-top: 20px;", "FieldStyle":"width:90%;min-height:150px;" },
|
||||||
'website': {'PlaceHolder':u"Site web", 'ContainerStyle':"padding-right:15px;", 'ContainerStyle':"width:30em;"},
|
'website': {'PlaceHolder':u"Site web", 'ContainerStyle':"padding-right:15px;padding-top: 20px;", 'FieldStyle':"width:30em;"},
|
||||||
'membership': {'Ignore':True}
|
'membership': {'Ignore':True },
|
||||||
|
'roles': {'Ignore':True }
|
||||||
}
|
}
|
||||||
%>
|
%>
|
||||||
|
|
||||||
@@ -33,18 +34,18 @@ DicForm = {
|
|||||||
|
|
||||||
% if 'uid' in form._fields:
|
% if 'uid' in form._fields:
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>Acteurs</legend>
|
<legend>Ses acteurs</legend>
|
||||||
<div class="repeat">
|
<div class="repeat">
|
||||||
<table class="wrapper table table-striped table-bordered" width="100%">
|
<table class="wrapper table" width="100%">
|
||||||
<thead>
|
<thead>
|
||||||
<tr class="row">
|
<tr class="row">
|
||||||
<th style="width:5em;text-align:center;">Année</th>
|
<th style="width:5em;text-align:center;">Année</th>
|
||||||
<th style="width:22em;">Personne</th>
|
<th style="width:22em;text-align:center;">Personne</th>
|
||||||
<th style="width:22em;">Rôle</th>
|
<th style="width:22em;text-align:center;">Rôle</th>
|
||||||
<th style="width:10em;">Action</th>
|
<th style="width:10em;text-align:center;">Action</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody class="container">
|
<tbody class="container" id="tab_member">
|
||||||
<tr class="row template" style="line-height:2.2em;">
|
<tr class="row template" style="line-height:2.2em;">
|
||||||
<td>
|
<td>
|
||||||
<select class="form-control" style="width:5em;" name="membership-{{row-count-placeholder}}-year_uid"
|
<select class="form-control" style="width:5em;" name="membership-{{row-count-placeholder}}-year_uid"
|
||||||
@@ -77,7 +78,7 @@ DicForm = {
|
|||||||
<input type="hidden" class="form-control" name="membership-${num}-year_uid"
|
<input type="hidden" class="form-control" name="membership-${num}-year_uid"
|
||||||
id="membership-${num}-year_uid"
|
id="membership-${num}-year_uid"
|
||||||
value="${dicdata.get('year_uid')}" style="width:4em;" />
|
value="${dicdata.get('year_uid')}" style="width:4em;" />
|
||||||
<div id="content-${num}-year_uid">${dicdata.get('year_uid')}</div>
|
<div id="content-member-${num}-year_uid">${dicdata.get('year_uid')}</div>
|
||||||
</td>
|
</td>
|
||||||
<td style="text-align:center;">
|
<td style="text-align:center;">
|
||||||
<input type="hidden" class="form-control" name="membership-${num}-user_uid"
|
<input type="hidden" class="form-control" name="membership-${num}-user_uid"
|
||||||
@@ -86,17 +87,17 @@ DicForm = {
|
|||||||
tmpUser = DBUser.by_id(dicdata.get('user_uid'))
|
tmpUser = DBUser.by_id(dicdata.get('user_uid'))
|
||||||
%>
|
%>
|
||||||
% if tmpUser:
|
% if tmpUser:
|
||||||
<div id="content-${num}-user_uid">${tmpUser.prenom} ${tmpUser.nom}</div>
|
<div id="content-member-${num}-user_uid">${tmpUser.prenom} ${tmpUser.nom}</div>
|
||||||
% endif
|
% endif
|
||||||
</td>
|
</td>
|
||||||
<td style="text-align:center;">
|
<td style="text-align:center;">
|
||||||
<input type="text" class="form-control" name="membership-${num}-role" style="display:none"
|
<input type="text" class="form-control" name="membership-${num}-role" style="display:none;width:95%;"
|
||||||
id="membership-${num}-role"
|
id="membership-${num}-role"
|
||||||
value="${dicdata.get('role', 'Aucun')}" />
|
value="${dicdata.get('role', 'Aucun')}" />
|
||||||
<div id="content-${num}-role"><i>${dicdata.get('role', 'Aucun')}</i></div>
|
<div id="content-member-${num}-role"><i>${dicdata.get('role', 'Aucun')}</i></div>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<a class="btn btn-mini btn-primary" href="javascript:edit(${num})">
|
<a class="btn btn-mini btn-primary" href="#" onclick="return edit_member(this, ${num});">
|
||||||
<i class="icon-pencil icon-white"></i> Edit.
|
<i class="icon-pencil icon-white"></i> Edit.
|
||||||
</a>
|
</a>
|
||||||
<span class="remove btn btn-mini btn-danger">
|
<span class="remove btn btn-mini btn-danger">
|
||||||
@@ -117,6 +118,85 @@ DicForm = {
|
|||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
% endif
|
% endif
|
||||||
|
|
||||||
|
|
||||||
|
% if 'uid' in form._fields:
|
||||||
|
<fieldset>
|
||||||
|
<legend>Ses rôles</legend>
|
||||||
|
<div class="repeat">
|
||||||
|
<table class="wrapper table" width="100%">
|
||||||
|
<thead>
|
||||||
|
<tr class="row">
|
||||||
|
<th style="width:5em;text-align:center;">Année</th>
|
||||||
|
<th style="width:22em;text-align:center;">Rôle</th>
|
||||||
|
<th style="width:10em;text-align:center;">Action</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody class="container" id="tab_role">
|
||||||
|
<tr class="row template" style="line-height:2.2em;">
|
||||||
|
<td>
|
||||||
|
<select class="form-control" style="width:5em;" name="roles-{{row-count-placeholder}}-year_uid"
|
||||||
|
id="roles-{{row-count-placeholder}}-year_uid">
|
||||||
|
% for year in range(2015, 2005, -1):
|
||||||
|
<%
|
||||||
|
if year in [2014]:
|
||||||
|
continue
|
||||||
|
%> \
|
||||||
|
<option value="${year}">${year}</option>
|
||||||
|
%endfor
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
<td style="text-align: center;">
|
||||||
|
<select class="form-control" name="roles-{{row-count-placeholder}}-tiers_role" />
|
||||||
|
<option value="Exposant">Exposant</option>
|
||||||
|
<option value="Sponsor">Sponsor</option>
|
||||||
|
<option value="Donateur">Donateur</option>
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<span class="remove btn btn-mini btn-danger">
|
||||||
|
<i class="icon-remove-sign icon-white"></i> Suppr.
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
% for num, dicdata in enumerate(form._fields.get("roles").data):
|
||||||
|
<tr class="row" style="padding:5px;line-height:2.2em;">
|
||||||
|
<td style="text-align:center;">
|
||||||
|
<input type="hidden" class="form-control" name="roles-${num}-year_uid"
|
||||||
|
id="roles-${num}-year_uid"
|
||||||
|
value="${dicdata.get('year_uid')}" style="width:4em;" />
|
||||||
|
<div id="content-role-${num}-year_uid">${dicdata.get('year_uid')}</div>
|
||||||
|
</td>
|
||||||
|
<td style="text-align:center;">
|
||||||
|
<input type="hidden" class="form-control" name="roles-${num}-tiers_role"
|
||||||
|
id="roles-${num}-tiers_role"
|
||||||
|
value="${dicdata.get('tiers_role', 'Aucun')}" />
|
||||||
|
<div id="content-role-${num}-tiers_role"><i>${dicdata.get('tiers_role', 'Aucun')}</i></div>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<a class="btn btn-mini btn-primary" href="#" onclick="return edit_role(this, ${num});">
|
||||||
|
<i class="icon-pencil icon-white"></i> Edit.
|
||||||
|
</a>
|
||||||
|
<span class="remove btn btn-mini btn-danger">
|
||||||
|
<i class="icon-remove-sign icon-white"></i> Suppr.
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
% endfor
|
||||||
|
</tbody>
|
||||||
|
<tfoot>
|
||||||
|
<tr>
|
||||||
|
<td colspan="5" style="text-align:center;line-height: 3em;">
|
||||||
|
<span class="add btn btn-mini btn-primary"><i class="icon-plus-sign icon-white"></i> Ajouter</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tfoot>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
||||||
|
% endif
|
||||||
|
|
||||||
|
|
||||||
% if 'uid' in form._fields:
|
% if 'uid' in form._fields:
|
||||||
<button class="btn btn-primary" type="submit">Enregistrer</button>
|
<button class="btn btn-primary" type="submit">Enregistrer</button>
|
||||||
% else:
|
% else:
|
||||||
@@ -126,12 +206,12 @@ DicForm = {
|
|||||||
% if 'uid' in form._fields:
|
% if 'uid' in form._fields:
|
||||||
% if request.user:
|
% if request.user:
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>Support liés</legend>
|
<legend>Les supports liés</legend>
|
||||||
<div style="float:right;width:60%">
|
<div style="float:right;width:60%">
|
||||||
<p> En plus de vos support de présentation classique.
|
<p> En plus de vos support de présentation classique.
|
||||||
Pensez aussi aux affiches, aux flyers, aux stickers,
|
Pensez aussi aux affiches, aux flyers, aux stickers,
|
||||||
au bulletin d'adhésion à une association, à la documentation technique...
|
au bulletin d'adhésion à une association, à la documentation technique...
|
||||||
Tous ce qui peut être utile, de près ou de loin à la promotion de votre évenement.
|
Tous ce qui peut être utile, de près ou de loin à sa promotion.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
${helpers.uploader("tiers", form.uid.data, u"fichiers" )}
|
${helpers.uploader("tiers", form.uid.data, u"fichiers" )}
|
||||||
@@ -153,9 +233,13 @@ DicForm = {
|
|||||||
<script src="/vendor/ckeditor/ckeditor.js"></script>
|
<script src="/vendor/ckeditor/ckeditor.js"></script>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var year_data = Array();
|
var year_data = Array();
|
||||||
|
var role_data = Array();
|
||||||
var editor = CKEDITOR.replace('description', { autoGrow_onStartup: true, language: 'fr' } );
|
var editor = CKEDITOR.replace('description', { autoGrow_onStartup: true, language: 'fr' } );
|
||||||
for (var i=2005;i<2016;i++)
|
for (var i=2005;i<2016;i++)
|
||||||
year_data.push( {id:i, text:i.toString()});
|
year_data.push( {id:i, text:i.toString()});
|
||||||
|
role_data.push({id:'Exposant', text:'Exposant'});
|
||||||
|
role_data.push({id:'Sponsor', text:'Sponsor'});
|
||||||
|
role_data.push({id:'Donateur', text:'Donateur'});
|
||||||
|
|
||||||
$("#tiers_type").select2({});
|
$("#tiers_type").select2({});
|
||||||
|
|
||||||
@@ -173,42 +257,49 @@ jQuery(function() {
|
|||||||
{
|
{
|
||||||
is_ready: function(container, therow) {
|
is_ready: function(container, therow) {
|
||||||
var numrow=$(container).attr('data-rf-row-count');
|
var numrow=$(container).attr('data-rf-row-count');
|
||||||
$("#membership-"+ (numrow-1) +"-user_uid").select2(
|
if ($(container).attr("id")=="tab_member") {
|
||||||
{
|
$("#membership-"+ (numrow-1) +"-user_uid").select2(
|
||||||
placeholder: 'Entrez ici un Nom ou un Prénom',
|
{
|
||||||
minimumInputLength: 2, allowClear: true,
|
placeholder: 'Entrez ici un Nom ou un Prénom',
|
||||||
ajax: {
|
minimumInputLength: 2, allowClear: true,
|
||||||
quietMillis: 250, url: "/json-users", dataType: 'json',
|
ajax: {
|
||||||
data: function (term, page) {
|
quietMillis: 250, url: "/json-users", dataType: 'json',
|
||||||
return { pageSize: 8, pageNum: page, searchTerm: term };
|
data: function (term, page) {
|
||||||
},
|
return { pageSize: 8, pageNum: page, searchTerm: term };
|
||||||
results: function (data, page) {
|
},
|
||||||
var more = (page * 8) < data.Total;
|
results: function (data, page) {
|
||||||
return { results: data.Results, more: more };
|
var more = (page * 8) < data.Total;
|
||||||
|
return { results: data.Results, more: more };
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
});
|
$("#membership-"+ (numrow-1) +"-year_uid").select2({});
|
||||||
$("#membership-"+ (numrow-1) +"-year_uid").select2({});
|
}
|
||||||
|
if ($(container).attr("id")=="tab_role") {
|
||||||
|
$("#roles-"+ (numrow-1) +"-year_uid").select2({});
|
||||||
|
$("#roles-"+ (numrow-1) +"-tiers_role").select2({});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
function edit(num) {
|
function edit_member(srcobj, num) {
|
||||||
$("#content-"+ num +"-year_uid").hide();
|
$(srcobj).addClass("disabled");
|
||||||
|
$("#content-member-"+ num +"-year_uid").hide();
|
||||||
$("#membership-"+ num +"-year_uid").select2({
|
$("#membership-"+ num +"-year_uid").select2({
|
||||||
width:'80px',
|
width:'80px',
|
||||||
data: year_data
|
data: year_data
|
||||||
});
|
});
|
||||||
$('select').select2();
|
//$('select').select2();
|
||||||
$("#content-"+ num +"-user_uid").hide();
|
$("#content-member-"+ num +"-user_uid").hide();
|
||||||
$("#membership-"+ num +"-user_uid").select2(
|
$("#membership-"+ num +"-user_uid").select2(
|
||||||
{
|
{
|
||||||
width:'250px',
|
width:'250px',
|
||||||
placeholder: 'Entrez ici un Nom ou un Prénom',
|
placeholder: 'Entrez ici un Nom ou un Prénom',
|
||||||
minimumInputLength: 2, allowClear: true,
|
minimumInputLength: 2, allowClear: true,
|
||||||
initSelection: function(element, callback){
|
initSelection: function(element, callback){
|
||||||
callback({id: element.val(), text: $("#content-"+ num +"-user_uid").text() })
|
callback({id: element.val(), text: $("#content-member-"+ num +"-user_uid").text() })
|
||||||
},
|
},
|
||||||
ajax: {
|
ajax: {
|
||||||
quietMillis: 250, url: "/json-users", dataType: 'json',
|
quietMillis: 250, url: "/json-users", dataType: 'json',
|
||||||
@@ -221,8 +312,25 @@ function edit(num) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
$("#content-"+ num +"-role").hide();
|
$("#content-member-"+ num +"-role").hide();
|
||||||
$("#membership-"+ num +"-role").show();
|
$("#membership-"+ num +"-role").show();
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
function edit_role(srcobj, num) {
|
||||||
|
$(srcobj).addClass("disabled");
|
||||||
|
$("#roles-"+ num +"-year_uid").select2({
|
||||||
|
width:'80px',
|
||||||
|
data: year_data
|
||||||
|
});
|
||||||
|
$("#roles-"+ num +"-tiers_role").select2({
|
||||||
|
width:'100%',
|
||||||
|
data: role_data
|
||||||
|
});
|
||||||
|
$("#content-role-"+ num +"-year_uid").hide();
|
||||||
|
$("#content-role-"+ num +"-tiers_role").hide();
|
||||||
|
$("#roles-"+ num +"-tiers_role").show();
|
||||||
|
return false;
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
</%def>
|
</%def>
|
||||||
@@ -233,7 +233,7 @@ HandleControls();
|
|||||||
function handlevote() {
|
function handlevote() {
|
||||||
currentIndex = $('div.active').index() + 1;
|
currentIndex = $('div.active').index() + 1;
|
||||||
$('.carousel-vote a').attr('href', "/vote_logo/" + currentIndex )
|
$('.carousel-vote a').attr('href', "/vote_logo/" + currentIndex )
|
||||||
if (currentIndex==${request.user.vote_logo}) {
|
if (currentIndex==${request.user.vote_logo or 0}) {
|
||||||
$('.carousel-vote a').removeClass('btn-primary').addClass('btn-success')
|
$('.carousel-vote a').removeClass('btn-primary').addClass('btn-success')
|
||||||
$('.carousel-vote a').html("<i class='icon-ok icon-white'></i> Mon préféré ! ");
|
$('.carousel-vote a').html("<i class='icon-ok icon-white'></i> Mon préféré ! ");
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -38,6 +38,13 @@ ${The_entity_type.entity_subtype}
|
|||||||
<p>Cette entité n'a pas de description.</p>
|
<p>Cette entité n'a pas de description.</p>
|
||||||
% endif
|
% endif
|
||||||
</div>
|
</div>
|
||||||
|
<div class="footborderbox">
|
||||||
|
% if entity.website:
|
||||||
|
<div style="float:right;">
|
||||||
|
<a href="${entity.website}">${entity.website}</a>
|
||||||
|
</div>
|
||||||
|
% endif
|
||||||
|
</div>
|
||||||
|
|
||||||
% if 0:
|
% if 0:
|
||||||
% for media in entity.PhotosLinks:
|
% for media in entity.PhotosLinks:
|
||||||
@@ -87,7 +94,7 @@ ${The_entity_type.entity_subtype}
|
|||||||
</div>
|
</div>
|
||||||
</p>
|
</p>
|
||||||
% endfor
|
% endfor
|
||||||
|
<br/><br/>
|
||||||
<p style="float:right;">Créé le ${entity.created.strftime('%d %b %Y').decode('utf-8')}</p>
|
<p style="float:right;">Créé le ${entity.created.strftime('%d %b %Y').decode('utf-8')}</p>
|
||||||
<br/>
|
<br/>
|
||||||
<hr/>
|
<hr/>
|
||||||
|
|||||||
+2
-6
@@ -11,7 +11,7 @@ import magic
|
|||||||
import subprocess
|
import subprocess
|
||||||
import cStringIO as StringIO
|
import cStringIO as StringIO
|
||||||
# Database access imports
|
# Database access imports
|
||||||
from .models import User, Place, Tiers, Event
|
from .models import User, Place, Tiers, Event, SallePhy
|
||||||
|
|
||||||
MIN_FILE_SIZE = 1 # bytes
|
MIN_FILE_SIZE = 1 # bytes
|
||||||
MAX_FILE_SIZE = 500000000 # bytes
|
MAX_FILE_SIZE = 500000000 # bytes
|
||||||
@@ -84,11 +84,7 @@ class MediaPath():
|
|||||||
if media_table=='place':
|
if media_table=='place':
|
||||||
slug = Place.by_id(linked_id).slug
|
slug = Place.by_id(linked_id).slug
|
||||||
if media_table=='salle':
|
if media_table=='salle':
|
||||||
phyid = Salles.by_id(linked_id).phy_salle_id
|
slug = SallePhy.by_id(linked_id).slug
|
||||||
if phyid:
|
|
||||||
slug = SallePhy.by_id(phyid)
|
|
||||||
else:
|
|
||||||
slug = linked_id
|
|
||||||
p = IMAGEPATH + [ media_table ] + [ slug ]
|
p = IMAGEPATH + [ media_table ] + [ slug ]
|
||||||
elif media_table=='presse':
|
elif media_table=='presse':
|
||||||
# Use Year in linked_id
|
# Use Year in linked_id
|
||||||
|
|||||||
+142
-11
@@ -364,6 +364,74 @@ def action_task_area(request):
|
|||||||
DBSession.delete(Pole)
|
DBSession.delete(Pole)
|
||||||
return HTTPFound(location=request.route_url('list_task'))
|
return HTTPFound(location=request.route_url('list_task'))
|
||||||
|
|
||||||
|
|
||||||
|
@view_config(route_name='list_salles', renderer='jm2l:templates/Salles/list.mako')
|
||||||
|
def list_salles(request):
|
||||||
|
DicSalle = {}
|
||||||
|
years = DBSession.query( JM2L_Year ).all()
|
||||||
|
for year in years:
|
||||||
|
salles = DBSession.query( Salles )\
|
||||||
|
.filter( Salles.year_uid==year.year_uid )\
|
||||||
|
.order_by(Salles.name).all()
|
||||||
|
DicSalle[year] = salles
|
||||||
|
return {'DicSalle': DicSalle }
|
||||||
|
|
||||||
|
@view_config(route_name='handle_salle', renderer='jm2l:templates/Salles/salle.mako')
|
||||||
|
def handle_salle(request):
|
||||||
|
salle_id = request.matchdict.get('salle_id')
|
||||||
|
if salle_id:
|
||||||
|
Salle = Salles.by_id(int(salle_id))
|
||||||
|
if not Salle:
|
||||||
|
raise HTTPNotFound()
|
||||||
|
form = EditSalleForm(request.POST, Salle, meta={'csrf_context': request.session})
|
||||||
|
else:
|
||||||
|
Salle = Salles()
|
||||||
|
form = SalleForm(request.POST, Salle, meta={'csrf_context': request.session})
|
||||||
|
form.year_uid.choices = map(tuple, DBSession.query(JM2L_Year.year_uid, JM2L_Year.year_uid).all())
|
||||||
|
form.phy_salle_id.choices = map(tuple, DBSession.query(SallePhy.uid, SallePhy.name).all())
|
||||||
|
if request.method == 'POST' and form.validate():
|
||||||
|
form.populate_obj(Salle)
|
||||||
|
if 'uid' in form._fields.keys():
|
||||||
|
DBSession.merge(Salle)
|
||||||
|
else:
|
||||||
|
DBSession.add(Salle)
|
||||||
|
return HTTPFound(location=request.route_url('list_salles'))
|
||||||
|
return {'form':form }
|
||||||
|
|
||||||
|
@view_config(route_name='handle_salle_phy', renderer='jm2l:templates/Salles/salle_phy.mako')
|
||||||
|
def handle_salle_phy(request):
|
||||||
|
salle_id = request.matchdict.get('salle_id')
|
||||||
|
if salle_id:
|
||||||
|
Salle = SallePhy.by_id(int(salle_id))
|
||||||
|
if not Salle:
|
||||||
|
raise HTTPNotFound()
|
||||||
|
form = EditSallePhyForm(request.POST, Salle, meta={'csrf_context': request.session})
|
||||||
|
else:
|
||||||
|
Salle = SallePhy()
|
||||||
|
form = SallePhyForm(request.POST, Salle, meta={'csrf_context': request.session})
|
||||||
|
|
||||||
|
if request.method == 'POST' and form.validate():
|
||||||
|
form.populate_obj(Salle)
|
||||||
|
Salle.slug = slugify(Salle.name)
|
||||||
|
if 'uid' in form._fields.keys():
|
||||||
|
DBSession.merge(Salle)
|
||||||
|
else:
|
||||||
|
DBSession.add(Salle)
|
||||||
|
return HTTPFound(location=request.route_url('list_salles'))
|
||||||
|
return {'form':form }
|
||||||
|
|
||||||
|
@view_config(route_name='action_salle')
|
||||||
|
def action_salle(request):
|
||||||
|
action = request.matchdict.get('action')
|
||||||
|
salle_id = request.matchdict.get('salle_id')
|
||||||
|
Salle = Salles.by_id(int(salle_id))
|
||||||
|
if not Salle:
|
||||||
|
raise HTTPNotFound()
|
||||||
|
if action=='delete':
|
||||||
|
request.session.flash(('info', u'La Salle a été supprimée !'))
|
||||||
|
DBSession.delete(Salle)
|
||||||
|
return HTTPFound(location=request.route_url('list_salles'))
|
||||||
|
|
||||||
## =-=- Here, We handle HTTP requests - User Logged Part -=-=
|
## =-=- Here, We handle HTTP requests - User Logged Part -=-=
|
||||||
@view_config(route_name='exchange', renderer="jm2l:templates/Logistique/Logistique.mako")
|
@view_config(route_name='exchange', renderer="jm2l:templates/Logistique/Logistique.mako")
|
||||||
def exchange(request):
|
def exchange(request):
|
||||||
@@ -757,9 +825,9 @@ def show_event(request):
|
|||||||
'event':TheEvent, 'logged_in':request.authenticated_userid }
|
'event':TheEvent, 'logged_in':request.authenticated_userid }
|
||||||
return MainTab
|
return MainTab
|
||||||
|
|
||||||
@view_config(route_name='link_event')
|
@view_config(route_name='link_event_user')
|
||||||
def link_event(request):
|
def link_event_user(request):
|
||||||
""" Create user if not exist, add it to current event """
|
""" Get user and add it to current event """
|
||||||
year = int(request.matchdict.get('year', -1))
|
year = int(request.matchdict.get('year', -1))
|
||||||
form = AddIntervenant(request.POST, meta={'csrf_context': request.session})
|
form = AddIntervenant(request.POST, meta={'csrf_context': request.session})
|
||||||
intervention = request.matchdict.get('intervention', None)
|
intervention = request.matchdict.get('intervention', None)
|
||||||
@@ -778,6 +846,34 @@ def link_event(request):
|
|||||||
return HTTPFound(location=request.route_url('edit_event', sep='/',
|
return HTTPFound(location=request.route_url('edit_event', sep='/',
|
||||||
year=str(year), intervention=intervention, event_id=str(TargetEvent.uid)))
|
year=str(year), intervention=intervention, event_id=str(TargetEvent.uid)))
|
||||||
|
|
||||||
|
|
||||||
|
@view_config(route_name='link_event_tiers')
|
||||||
|
def link_event_tiers(request):
|
||||||
|
""" Create user if not exist, add it to current event """
|
||||||
|
year = int(request.matchdict.get('year', -1))
|
||||||
|
form = AddTiers(request.POST, meta={'csrf_context': request.session})
|
||||||
|
intervention = request.matchdict.get('intervention', None)
|
||||||
|
TargetEvent = Event.by_id(form.event_uid.data)
|
||||||
|
Exist = Tiers.by_id(form.tiers.data)
|
||||||
|
if not Exist:
|
||||||
|
request.session.flash(('error',u"Une erreur s'est produite lors de l'ajout de votre entitée !"))
|
||||||
|
return HTTPFound(location=request.route_url('edit_event', sep='/',
|
||||||
|
year=str(year), intervention=intervention, event_id=str(TargetEvent.uid)))
|
||||||
|
else:
|
||||||
|
TargetTiers = Exist
|
||||||
|
|
||||||
|
if len(DBSession.query(Role_Tiers)\
|
||||||
|
.filter(Role_Tiers.year_uid==year)\
|
||||||
|
.filter(Role_Tiers.tiers_role=="Exposant")\
|
||||||
|
.filter(Role_Tiers.tiers_uid==TargetTiers.uid)\
|
||||||
|
.all())==0:
|
||||||
|
tev = Role_Tiers(year_uid=year, tiers_role="Exposant", tiers_uid=TargetTiers.uid)
|
||||||
|
DBSession.add(tev)
|
||||||
|
|
||||||
|
return HTTPFound(location=request.route_url('edit_event', sep='/',
|
||||||
|
year=str(year), intervention=intervention, event_id=str(TargetEvent.uid)))
|
||||||
|
|
||||||
|
|
||||||
@view_config(route_name='edit_event', renderer="jm2l:templates/edit_event.mako")
|
@view_config(route_name='edit_event', renderer="jm2l:templates/edit_event.mako")
|
||||||
def edit_event(request):
|
def edit_event(request):
|
||||||
year = int(request.matchdict.get('year', -1))
|
year = int(request.matchdict.get('year', -1))
|
||||||
@@ -836,6 +932,16 @@ def edit_event(request):
|
|||||||
# Put some users on form
|
# Put some users on form
|
||||||
formAdd.intervenant.choices = [(u.uid, "%s %s" % (u.nom, u.prenom))
|
formAdd.intervenant.choices = [(u.uid, "%s %s" % (u.nom, u.prenom))
|
||||||
for u in Users]
|
for u in Users]
|
||||||
|
|
||||||
|
# Each event can get severals entities
|
||||||
|
formAddT = AddTiers(event_uid=TheEvent.uid)
|
||||||
|
# Build list of entities
|
||||||
|
# Get entities from db
|
||||||
|
TmpTiers = DBSession.query(Tiers)\
|
||||||
|
.order_by('name').limit(10)
|
||||||
|
# Put some entities on form
|
||||||
|
formAddT.tiers.choices = [(u.uid, "%s %s" % (u.nom, u.prenom))
|
||||||
|
for u in Users]
|
||||||
else:
|
else:
|
||||||
TheEvent = Event()
|
TheEvent = Event()
|
||||||
# prepare the form for creation
|
# prepare the form for creation
|
||||||
@@ -849,6 +955,11 @@ def edit_event(request):
|
|||||||
duration=60
|
duration=60
|
||||||
# No intervenant
|
# No intervenant
|
||||||
formAdd = None
|
formAdd = None
|
||||||
|
formAddT = None
|
||||||
|
|
||||||
|
SalleDispo = DBSession.query(Salles)\
|
||||||
|
.filter(Salles.year_uid==year)\
|
||||||
|
.order_by('name')
|
||||||
|
|
||||||
if intervention=="Conference":
|
if intervention=="Conference":
|
||||||
form.duration.choices =[
|
form.duration.choices =[
|
||||||
@@ -861,27 +972,27 @@ def edit_event(request):
|
|||||||
form.duration.choices.append( (duration,u'Conférence (%d min)' % duration) )
|
form.duration.choices.append( (duration,u'Conférence (%d min)' % duration) )
|
||||||
if not form._fields.has_key("uid"):
|
if not form._fields.has_key("uid"):
|
||||||
form.duration.data=60
|
form.duration.data=60
|
||||||
|
SalleDispo = SalleDispo.filter(Salles.place_type=='Conference')
|
||||||
elif intervention=="Stand":
|
elif intervention=="Stand":
|
||||||
form.duration.choices =[
|
form.duration.choices =[
|
||||||
(8*60, u'Toute la journée'),
|
(8*60, u'Toute la journée'),
|
||||||
(4*60, u'une demi-journée')
|
(4*60, u'une demi-journée')
|
||||||
]
|
]
|
||||||
|
SalleDispo = SalleDispo.filter(Salles.place_type=='Stand')
|
||||||
elif intervention=="Atelier":
|
elif intervention=="Atelier":
|
||||||
form.duration.choices = map( lambda d:(d, u'Atelier (%dh%.2d)' % (d/60, d%60) ), \
|
form.duration.choices = map( lambda d:(d, u'Atelier (%dh%.2d)' % (d/60, d%60) ), \
|
||||||
[60, 90, 120, 150, 180, 210, 240] )
|
[60, 90, 120, 150, 180, 210, 240] )
|
||||||
if not duration in map(lambda (d,y): d, form.duration.choices):
|
if not duration in map(lambda (d,y): d, form.duration.choices):
|
||||||
form.duration.choices.append( (duration,u'Atelier (%dh%.2d)' % (duration/60, duration%60) ) )
|
form.duration.choices.append( (duration,u'Atelier (%dh%.2d)' % (duration/60, duration%60) ) )
|
||||||
|
SalleDispo = SalleDispo.filter(Salles.place_type=='Ateliers')
|
||||||
elif intervention=="Table_Ronde":
|
elif intervention=="Table_Ronde":
|
||||||
form.duration.choices = map( lambda d:(d, u'Table ronde (%dh%.2d)' % (d/60, d%60) ), \
|
form.duration.choices = map( lambda d:(d, u'Table ronde (%dh%.2d)' % (d/60, d%60) ), \
|
||||||
[60, 90, 120, 150] )
|
[60, 90, 120, 150] )
|
||||||
if not duration in map(lambda (d,y): d, form.duration.choices):
|
if not duration in map(lambda (d,y): d, form.duration.choices):
|
||||||
form.duration.choices.append( (duration,u'Table ronde (%dh%.2d)' % (duration/60, duration%60) ) )
|
form.duration.choices.append( (duration,u'Table ronde (%dh%.2d)' % (duration/60, duration%60) ) )
|
||||||
|
SalleDispo = SalleDispo.filter(Salles.place_type=='Conference')
|
||||||
else:
|
else:
|
||||||
return HTTPForbidden(u"Pas encore disponible.")
|
return HTTPForbidden(u"Pas encore disponible.")
|
||||||
|
|
||||||
SalleDispo = DBSession.query(Salles)\
|
|
||||||
.filter(Salles.year_uid==year)\
|
|
||||||
.order_by('name')
|
|
||||||
|
|
||||||
form.salle_uid.choices = [(s.salle_id, s.name) for s in SalleDispo]
|
form.salle_uid.choices = [(s.salle_id, s.name) for s in SalleDispo]
|
||||||
form.start_sel.choices = TimeSlots
|
form.start_sel.choices = TimeSlots
|
||||||
@@ -900,14 +1011,14 @@ def edit_event(request):
|
|||||||
uev.user_uid = request.user.uid
|
uev.user_uid = request.user.uid
|
||||||
TheEvent.interventions.append( uev )
|
TheEvent.interventions.append( uev )
|
||||||
DBSession.flush()
|
DBSession.flush()
|
||||||
request.session.flash(('sucess','Votre intervention a été créee !'))
|
request.session.flash(('sucess',u'Votre intervention a été créee !'))
|
||||||
return HTTPFound(location=request.route_url('edit_event', sep='/',
|
return HTTPFound(location=request.route_url('edit_event', sep='/',
|
||||||
year=str(year), intervention=intervention, event_id=str(TheEvent.slug)))
|
year=str(year), intervention=intervention, event_id=str(TheEvent.slug)))
|
||||||
else:
|
else:
|
||||||
DBSession.merge(TheEvent)
|
DBSession.merge(TheEvent)
|
||||||
|
|
||||||
MainTab = {'programme':'','presse':'', 'plan':'', 'participer':'',
|
MainTab = {'programme':'','presse':'', 'plan':'', 'participer':'',
|
||||||
'event':TheEvent, 'form':form, 'formAdd':formAdd,
|
'event':TheEvent, 'form':form, 'formAdd':formAdd, 'formAddT':formAddT,
|
||||||
'logged_in':request.authenticated_userid }
|
'logged_in':request.authenticated_userid }
|
||||||
|
|
||||||
return MainTab
|
return MainTab
|
||||||
@@ -979,18 +1090,30 @@ def edit_tiers(request):
|
|||||||
|
|
||||||
#test_form = TiersForm(request.POST, TheTiers, meta={'csrf_context': request.session})
|
#test_form = TiersForm(request.POST, TheTiers, meta={'csrf_context': request.session})
|
||||||
if request.method == 'POST' and form.validate():
|
if request.method == 'POST' and form.validate():
|
||||||
print request.POST
|
|
||||||
ToDelete = list()
|
ToDelete = list()
|
||||||
|
ToDeleteR = list()
|
||||||
# First, we remove entries no more present
|
# First, we remove entries no more present
|
||||||
for obj in form.membership.object_data:
|
for obj in form.membership.object_data:
|
||||||
MatchEntry = filter( lambda x: x.object_data and x.object_data._sa_instance_state == obj._sa_instance_state,
|
MatchEntry = filter( lambda x: x.object_data and x.object_data._sa_instance_state == obj._sa_instance_state,
|
||||||
form.membership.entries )
|
form.membership.entries )
|
||||||
if not MatchEntry:
|
if not MatchEntry:
|
||||||
ToDelete.append(obj)
|
ToDelete.append(obj)
|
||||||
|
# For roles too
|
||||||
|
for obj in form.roles.object_data:
|
||||||
|
MatchEntry = filter( lambda x: x.object_data and x.object_data._sa_instance_state == obj._sa_instance_state,
|
||||||
|
form.roles.entries )
|
||||||
|
if not MatchEntry:
|
||||||
|
ToDeleteR.append(obj)
|
||||||
|
|
||||||
# We should remove it as it's not in original data
|
# We should remove it as it's not in original data
|
||||||
for obj in ToDelete:
|
for obj in ToDelete:
|
||||||
TheTiers.membership.remove(obj)
|
TheTiers.membership.remove(obj)
|
||||||
DBSession.delete(obj)
|
DBSession.delete(obj)
|
||||||
|
# For roles too
|
||||||
|
for obj in ToDeleteR:
|
||||||
|
TheTiers.roles.remove(obj)
|
||||||
|
DBSession.delete(obj)
|
||||||
|
|
||||||
# Then, it's time to consider new entries
|
# Then, it's time to consider new entries
|
||||||
for entry in form.membership.entries:
|
for entry in form.membership.entries:
|
||||||
if entry.object_data is None:
|
if entry.object_data is None:
|
||||||
@@ -998,6 +1121,14 @@ def edit_tiers(request):
|
|||||||
entry.object_data = TmpUser
|
entry.object_data = TmpUser
|
||||||
TheTiers.membership.append(TmpUser)
|
TheTiers.membership.append(TmpUser)
|
||||||
form.membership.object_data = TheTiers.membership
|
form.membership.object_data = TheTiers.membership
|
||||||
|
# For roles too
|
||||||
|
for entry in form.roles.entries:
|
||||||
|
if entry.object_data is None:
|
||||||
|
TmpRole = Role_Tiers()
|
||||||
|
entry.object_data = TmpRole
|
||||||
|
TheTiers.roles.append(TmpRole)
|
||||||
|
form.roles.object_data = TheTiers.roles
|
||||||
|
|
||||||
form.populate_obj(TheTiers)
|
form.populate_obj(TheTiers)
|
||||||
# Handle Remove of accents
|
# Handle Remove of accents
|
||||||
TheTiers.slug = slugify(form.name.data)
|
TheTiers.slug = slugify(form.name.data)
|
||||||
|
|||||||
Reference in New Issue
Block a user