Quellcode durchsuchen

Added Caroussel for Room pictures

Fix mail from Damien remarks
Added room pictures
Added tiers deletion
Added Redirect to login when not logged
master
tr4ck3ur des JM2L vor 9 Jahren
Ursprung
Commit
7cf8f61c4e
14 geänderte Dateien mit 165 neuen und 41 gelöschten Zeilen
  1. +3
    -2
      jm2l/__init__.py
  2. +7
    -2
      jm2l/models.py
  3. +2
    -2
      jm2l/static/css/jm2l.css
  4. BIN
      jm2l/static/img/no-image.jpg
  5. +2
    -0
      jm2l/templates/Salles/pict_salle.mako
  6. +18
    -0
      jm2l/templates/edit_event.mako
  7. +13
    -4
      jm2l/templates/edit_tiers.mako
  8. +41
    -0
      jm2l/templates/helpers.mako
  9. +1
    -0
      jm2l/templates/layout.mako
  10. +14
    -16
      jm2l/templates/mail_html.mako
  11. +6
    -5
      jm2l/templates/view_event.mako
  12. +6
    -1
      jm2l/templates/view_tiers.mako
  13. +9
    -3
      jm2l/upload.py
  14. +43
    -6
      jm2l/views.py

+ 3
- 2
jm2l/__init__.py Datei anzeigen

@@ -67,6 +67,7 @@ def main(global_config, **settings):
config.add_route('handle_salle', '/Salles{sep:/*}{salle_id:(\d+)?}') config.add_route('handle_salle', '/Salles{sep:/*}{salle_id:(\d+)?}')
config.add_route('handle_salle_phy', '/PhySalles{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+)}') config.add_route('action_salle', '/Salles/{action:(\w+)}/{salle_id:(\d+)}')
config.add_route('pict_salle', '/salle_picture/{salle_id:(\d+)}')


# HTML Routes - Public # HTML Routes - Public
config.add_route('home', '/{year:(\d+/)?}') config.add_route('home', '/{year:(\d+/)?}')
@@ -86,10 +87,10 @@ def main(global_config, **settings):
## Entities ## Entities
config.add_route('entities', '/entities') #{sep:/*}{Nature:\w+?}') config.add_route('entities', '/entities') #{sep:/*}{Nature:\w+?}')
config.add_route('add_entity', '/entity')
config.add_route('add_entity', '/entity')
config.add_route('delete_entity', '/entity/{entity_id:(\d+)}/delete')
config.add_route('show_entity', '/entity/{tiers_type:(\w+)}/{entity_id:([\w-]+)?}') config.add_route('show_entity', '/entity/{tiers_type:(\w+)}/{entity_id:([\w-]+)?}')
config.add_route('edit_entity', '/entity/{tiers_type:(\w+)}/{entity_id:([\w-]+)}/edit') config.add_route('edit_entity', '/entity/{tiers_type:(\w+)}/{entity_id:([\w-]+)}/edit')
config.add_route('edit_entity_cat', '/categorie/entity') config.add_route('edit_entity_cat', '/categorie/entity')
## Users ## Users


+ 7
- 2
jm2l/models.py Datei anzeigen

@@ -260,8 +260,8 @@ class Tiers(Base):
roles = relationship('Role_Tiers', backref="roles_tiers") #secondary='role_tiers_link' ) roles = relationship('Role_Tiers', backref="roles_tiers") #secondary='role_tiers_link' )
@classmethod @classmethod
def by_id(cls, id):
return DBSession.query(cls).filter(cls.uid == id).first()
def by_id(cls, uid):
return DBSession.query(cls).filter(cls.uid == uid).first()
@classmethod @classmethod
def by_slug(cls, slug): def by_slug(cls, slug):
@@ -348,6 +348,11 @@ class SallePhy(Base):
@classmethod @classmethod
def by_id(cls, uid): def by_id(cls, uid):
return DBSession.query(cls).filter(cls.uid == uid).first() return DBSession.query(cls).filter(cls.uid == uid).first()

@property
def PhotosLinks(self):
from .upload import MediaPath
return MediaPath().get_list('salle', self.uid, 'Image')
class Salles(Base): class Salles(Base):
__tablename__ = 'salle' __tablename__ = 'salle'


+ 2
- 2
jm2l/static/css/jm2l.css Datei anzeigen

@@ -205,8 +205,8 @@ a {
border: 1px solid #d4d4d4; border: 1px solid #d4d4d4;
} }
.ShowEntities td img { .ShowEntities td img {
width: 100%;
height: 100%;
width: 5em;
height: 5em;
} }


.ShowEntities td:hover { .ShowEntities td:hover {


BIN
jm2l/static/img/no-image.jpg Datei anzeigen

Vorher Nachher
Breite: 279  |  Höhe: 279  |  Größe: 6.9 KiB

+ 2
- 0
jm2l/templates/Salles/pict_salle.mako Datei anzeigen

@@ -0,0 +1,2 @@
<%namespace name="helpers" file="jm2l:templates/helpers.mako"/>
${helpers.show_salles(Salles, IdSalle)}

+ 18
- 0
jm2l/templates/edit_event.mako Datei anzeigen

@@ -20,6 +20,9 @@
<div class="row-fluid"> <div class="row-fluid">
<div class="span10 offset1"> <div class="span10 offset1">


<div id="SalleCarousel">
${helpers.show_salles( Salles, form.salle_uid.data or form.salle_uid.choices[0][0] )}
</div>


% if 'uid' in form._fields: % if 'uid' in form._fields:
<div class="borderboxtime"> <div class="borderboxtime">
@@ -31,6 +34,7 @@
</div> </div>
%endif %endif
<h3 style="line-height:30px;" class="lowshadow">${form.event_type.data}</h3> <h3 style="line-height:30px;" class="lowshadow">${form.event_type.data}</h3>

% if 'uid' in form._fields: % if 'uid' in form._fields:
<div class="borderbox"> <div class="borderbox">
Intrevenants programmés: Intrevenants programmés:
@@ -186,6 +190,20 @@ DicForm = {
} }
} }
}); });
$(document.body).on("change","#salle_uid",function(){
$.ajax({
url:'/salle_picture/' + this.value,
success:function(result, status, jqXHR){
var pictureresult = $('<div />').append(result).find('#MyPictureCarousel').html();
var picturename = $('<div />').append(result).find('#CarName').html();
$('#MyPictureCarousel').html(pictureresult);
$('#CarName').html(picturename);
},
error:function(result, error){
alert(error);
},
});
});
}); });
</script> </script>
</%def> </%def>


+ 13
- 4
jm2l/templates/edit_tiers.mako Datei anzeigen

@@ -12,7 +12,11 @@
<div class="row-fluid"> <div class="row-fluid">
<div class="span10 offset1"> <div class="span10 offset1">
% if 'uid' in form._fields.keys():
<a class="btn btn-danger btn-mini pull-right" href="${request.route_path('delete_entity', action='delete_entity', entity_id=form.uid.data)}">
<i class="icon-remove icon-white"></i> Supprimer cette entit&eacute;e
</a>
%endif
<a class="pull-right" href="/categorie/entity">Editer les catégories</a> <a class="pull-right" href="/categorie/entity">Editer les catégories</a>
<br> <br>
<form action="" method="POST"> <form action="" method="POST">
@@ -196,12 +200,17 @@ DicForm = {
</fieldset> </fieldset>
% endif % endif
<br>
<center>
<button type="submit" class="btn btn-large btn-primary" />
% if 'uid' in form._fields: % if 'uid' in form._fields:
<button class="btn btn-primary" type="submit">Enregistrer</button>
<i class="icon-ok icon-white"></i> Mettre &agrave; jour
% else: % else:
<button class="btn btn-primary" type="submit">Proposer</button>
<i class="icon-ok icon-white"></i> Proposer
</button>
% endif % endif
</center>
</form> </form>
% if 'uid' in form._fields: % if 'uid' in form._fields:
% if request.user: % if request.user:


+ 41
- 0
jm2l/templates/helpers.mako Datei anzeigen

@@ -506,6 +506,47 @@ TabJs = {'select':[], 'desc':[]}
</div> </div>
</%def> \ </%def> \
## -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= ## -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
<%def name="show_salles(Salles, IdSalle)"> \
<div class="profile-icon pull-right" style="padding: 0 15px;">
<%
if not IdSalle:
return ""
SallePhy = Salles.by_id(IdSalle).phy
if not SallePhy:
return ""
photos = SallePhy.PhotosLinks
%>
<div id="CarName" style="text-align: center;line-height:20px;"><strong>Salle</strong>: ${Salles.by_id(IdSalle).name}</div>
<div id="MyPictureCarousel" class="carousel slide">
% if len(photos)>1:
<!-- Carousel nav -->
<a class="Ucarousel-control left" href="#MyPictureCarousel" data-slide="prev">&lsaquo;</a>
<a class="Ucarousel-control right" href="#MyPictureCarousel" data-slide="next">&rsaquo;</a>
% endif
<!-- Carousel items -->
<div class="carousel-inner">
% if len(photos):
% for num, link in enumerate(photos):
<div class="${['','active '][num==0]}item" id="UserPic${num}">
<div style="margin:auto;">
<img src="${link}" class="img-polaroid" style="max-height:205px;max-width:235px;" alt="Photo ${SallePhy.name}" />
</div>
</div>
% endfor
% else:
<div class="active item" id="UserPic0">
<div style="margin:auto;width:170px;">
<center>
<img src="/img/no-image.jpg" class="img-polaroid" alt="Photo ${SallePhy.name}" style="max-height:130px;" />
<center>
</div>
</div>
% endif
</div>
</div>
</div>
</%def> \
## -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
## Wrapper pour les échanges utilisateurs ## Wrapper pour les échanges utilisateurs
## -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= ## -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
<%def name="show_exchange(Exchange, Asker, Provider)"> \ <%def name="show_exchange(Exchange, Asker, Provider)"> \


+ 1
- 0
jm2l/templates/layout.mako Datei anzeigen

@@ -125,6 +125,7 @@ ${helpers.uploader_js()}
% if request.user.Staff: % if request.user.Staff:
<li><a href="/Staff">Partie Staff</a></li> <li><a href="/Staff">Partie Staff</a></li>
<li><a href="/ListSalles">Gérer les salles</a></li> <li><a href="/ListSalles">Gérer les salles</a></li>
<li><a href="/entities">Gérer les entités</a></li>
% endif % endif
<li><a href="/sign/out">Me déconnecter</a></li> <li><a href="/sign/out">Me déconnecter</a></li>
% else: % else:


+ 14
- 16
jm2l/templates/mail_html.mako Datei anzeigen

@@ -5,24 +5,24 @@ Bonjour ${User.prenom},<br>
<br> <br>
Vous venez de vous inscrire sur le site des JM2L et c'est une bonne idée :).<br> Vous venez de vous inscrire sur le site des JM2L et c'est une bonne idée :).<br>
<br> <br>
Pour accéder à votre espace il vous suffit dorénavant de cliquer sur le lien suivant :<br>
Pour acc&eacute;der à votre espace il vous suffit dor&eacute;navant de cliquer sur le lien suivant :<br>
<a href="${request.route_url('bymail', hash=User.my_hash)}">Votre lien !</a> <a href="${request.route_url('bymail', hash=User.my_hash)}">Votre lien !</a>
<br> <br>
À partir de là vous avez la possibilité de :
À partir de là vous avez la possibilit&eacute; de :
<ul> <ul>
<li>inscrire votre stand pour la journée du 28 novembre</li>
<li>inscrire une conférence</li>
<li>inscrire votre stand pour la journ&eacute;e du 28 novembre</li>
<li>inscrire une conf&eacute;rence</li>
<li>inscrire un atelier</li> <li>inscrire un atelier</li>
<li>chercher/proposer du covoiturage</li> <li>chercher/proposer du covoiturage</li>
<li>chercher/proposer un hébergement</li>
<li>chercher/proposer un h&eacute;bergement</li>
<li>vous faire rembourser vos frais</li> <li>vous faire rembourser vos frais</li>
<li>chercher proposer du matériel (câbles, etc)</li>
<li>chercher proposer du mat&eacute;riel (câbles, etc)</li>
</ul> </ul>


<p> <p>
Pour plus d'information vous pouvez vous connectez au site des JM2L : http://jm2l.linux-azur.org ou Pour plus d'information vous pouvez vous connectez au site des JM2L : http://jm2l.linux-azur.org ou
nous envoyer un mail à «contact at jm2l.linux-azur.org ». Et si vous êtes vraiment perdu vous pouvez nous envoyer un mail à «contact at jm2l.linux-azur.org ». Et si vous êtes vraiment perdu vous pouvez
toujours nous téléphoner au +33 6 52 42 31 37.
toujours nous t&eacute;l&eacute;phoner au +33 6 52 42 31 37.
</p> </p>
<p> <p>
Nous vous attendons avec impatience le 28 novembre à Sophia Antipolis pour fêter le libre et partager Nous vous attendons avec impatience le 28 novembre à Sophia Antipolis pour fêter le libre et partager
@@ -38,29 +38,27 @@ Bonjour ${User.prenom},<br>
<br> <br>
Vous venez de demander le renvoi de vos identifiants sur le site des JM2L.<br> Vous venez de demander le renvoi de vos identifiants sur le site des JM2L.<br>
<br> <br>
Pour accéder à votre espace il vous suffit dorénavant de cliquer sur le lien suivant :<br>
Pour acc&eacute;der à votre espace il vous suffit dorénavant de cliquer sur le lien suivant :<br>
<a href="${request.route_url('bymail', hash=User.my_hash)}">Votre lien !</a> <a href="${request.route_url('bymail', hash=User.my_hash)}">Votre lien !</a>
<br> <br>
N'hésitez pas à l'ajouter à vos liens favoris.
N'h&eacute;sitez pas à l'ajouter à vos liens favoris.
<br> <br>
Vos identifiants de connection sont les suivants: Vos identifiants de connection sont les suivants:
<br> <br>
<b>Login</b>: ${User.slug}
<br>
<b>Password</b>: ${User.password}
<br>
Une fois connecté vous pouvez changer votre mot de passe sur votre fiche.
<b>Login</b>: ${User.slug}<br>
<b>Password</b>: ${User.password}<br>
Une fois connect&eacute; vous pouvez changer votre mot de passe sur votre fiche.
<br> <br>
<p> <p>
Pour plus d'information vous pouvez nous envoyer un mail à «contact at jm2l.linux-azur.org ». Et si vous êtes vraiment perdu vous pouvez Pour plus d'information vous pouvez nous envoyer un mail à «contact at jm2l.linux-azur.org ». Et si vous êtes vraiment perdu vous pouvez
toujours nous téléphoner au +33 6 52 42 31 37.
toujours nous t&eacute;l&eacute;phoner au +33 6 52 42 31 37.
</p> </p>
<p> <p>
Nous vous attendons avec impatience le 28 novembre 2015 à Sophia Antipolis pour fêter le libre et partager Nous vous attendons avec impatience le 28 novembre 2015 à Sophia Antipolis pour fêter le libre et partager
de la connaissance, de la bonne humeur et du soleil :) de la connaissance, de la bonne humeur et du soleil :)
</p> </p>
<br> <br>
L'équipe des <b>JM2L</b>
L'&eacute;quipe des <b>JM2L</b>
<br> <br>
</%def> \ </%def> \
% if action=='Welcome': % if action=='Welcome':


+ 6
- 5
jm2l/templates/view_event.mako Datei anzeigen

@@ -8,14 +8,16 @@
</%def> </%def>
<div class="row-fluid"> <div class="row-fluid">
<div class="span10 offset1"> <div class="span10 offset1">

<div id="SalleCarousel">
${helpers.show_salles( Salles, event.Salle.salle_id )}
</div>
<strong>${event.event_type}</strong>: <strong>${event.event_type}</strong>:
<div class="borderboxtime"> <div class="borderboxtime">
${event.start_time.strftime('%d %b %Y').decode('utf-8')} - ${event.start_time.strftime('%d %b %Y').decode('utf-8')} -
${event.start_time.strftime('%H:%M')} à ${event.end_time.strftime('%H:%M')} ${event.start_time.strftime('%H:%M')} à ${event.end_time.strftime('%H:%M')}
%if event.Salle:
- <strong>Salle</strong>: ${event.Salle.name}
%endif
##%if event.Salle:
## - <strong>Salle</strong>: ${event.Salle.name}
##%endif
</div> </div>
##%if event.event_uid: ##%if event.event_uid:
## <a href="http://jm2l.linux-azur.org/node/${event.event_uid}">Link</a> - ## <a href="http://jm2l.linux-azur.org/node/${event.event_uid}">Link</a> -
@@ -26,7 +28,6 @@ ${event.start_time.strftime('%H:%M')} à ${event.end_time.strftime('%H:%M')}
<a href="/MesJM2L/${event.for_year}/${event.event_type}/${event.slug}">Editer</a> <a href="/MesJM2L/${event.for_year}/${event.event_type}/${event.slug}">Editer</a>
% endif % endif
<h3 style="line-height:30px;">${event.name}</h3> <h3 style="line-height:30px;">${event.name}</h3>

% if event.description : % if event.description :
<div class="borderbox"> <div class="borderbox">
${event.description | n} ${event.description | n}


+ 6
- 1
jm2l/templates/view_tiers.mako Datei anzeigen

@@ -17,7 +17,12 @@ ${The_entity_type.entity_subtype}
## <a href="http://jm2l.linux-azur.org/node/${entity.tiers_id}">Link</a> - ## <a href="http://jm2l.linux-azur.org/node/${entity.tiers_id}">Link</a> -
##%endif ##%endif
% if request.user and (request.user.Staff or request.user in entity.members): % if request.user and (request.user.Staff or request.user in entity.members):
<a href="/entity/${entity.get_entity_type.entity_type}/${entity.slug}/edit">Editer</a>
<a href="/entity/${entity.get_entity_type.slug_entity_type}/${entity.slug}/edit">Editer</a>
% endif
% if request.user and (request.user.Staff or request.user in entity.members):
<a class="btn btn-danger btn-mini pull-right" href="${request.route_path('delete_entity', action='delete_entity', entity_id=entity.uid)}">
<i class="icon-remove icon-white"></i> Supprimer cette entit&eacute;e
</a>
% endif % endif
<div clear='both'></div> <div clear='both'></div>
<div> <div>


+ 9
- 3
jm2l/upload.py Datei anzeigen

@@ -2,6 +2,7 @@
from pyramid.view import view_config, view_defaults from pyramid.view import view_config, view_defaults
from pyramid.response import Response from pyramid.response import Response
from pyramid.exceptions import NotFound from pyramid.exceptions import NotFound
from pyramid.httpexceptions import HTTPNotFound
from pyramid.request import Request from pyramid.request import Request
from PIL import Image from PIL import Image
import re, os, shutil import re, os, shutil
@@ -13,6 +14,7 @@ import cStringIO as StringIO
# Database access imports # Database access imports
from .models import User, Place, Tiers, Event, SallePhy from .models import User, Place, Tiers, Event, SallePhy


CurrentYear = 2015
MIN_FILE_SIZE = 1 # bytes MIN_FILE_SIZE = 1 # bytes
MAX_FILE_SIZE = 500000000 # bytes MAX_FILE_SIZE = 500000000 # bytes
IMAGE_TYPES = re.compile('image/(gif|p?jpeg|(x-)?png)') IMAGE_TYPES = re.compile('image/(gif|p?jpeg|(x-)?png)')
@@ -103,15 +105,19 @@ class MediaPath():
p = IMAGEPATH + [ media_table ] + [ linked_id ] p = IMAGEPATH + [ media_table ] + [ linked_id ]
elif media_table=='tasks': elif media_table=='tasks':
# Use Current Year # Use Current Year
p = IMAGEPATH + [ str(2015), media_table ] + [ linked_id ]
p = IMAGEPATH + [ str(CurrentYear), media_table ] + [ linked_id ]
elif media_table=='poles': elif media_table=='poles':
# Use Current Year # Use Current Year
p = IMAGEPATH + [ str(2015), media_table ] + [ linked_id ]
p = IMAGEPATH + [ str(CurrentYear), media_table ] + [ linked_id ]
elif media_table in ['RIB', 'Justif']: elif media_table in ['RIB', 'Justif']:
slug = User.by_id(linked_id).slug slug = User.by_id(linked_id).slug
p = IMAGEPATH + ['users'] + [ slug ] + [ self.media_table ] p = IMAGEPATH + ['users'] + [ slug ] + [ self.media_table ]
elif media_table=='users': elif media_table=='users':
slug = User.by_id(linked_id).slug
user = User.by_id(linked_id)
if not user:
raise HTTPNotFound()
else:
slug = user.slug
p = IMAGEPATH + ['users'] + [ slug ] p = IMAGEPATH + ['users'] + [ slug ]
elif media_table=='event': elif media_table=='event':
ev = Event.by_id(linked_id) ev = Event.by_id(linked_id)


+ 43
- 6
jm2l/views.py Datei anzeigen

@@ -911,6 +911,11 @@ def change_year(request):
def pict_user(request): def pict_user(request):
return {"uprofil":request.user} return {"uprofil":request.user}


@view_config(route_name='pict_salle', renderer="jm2l:templates/Salles/pict_salle.mako")
def pict_salle(request):
salle_id = int(request.matchdict.get('salle_id', -1))
return {"Salles":Salles, "IdSalle":salle_id}

@view_config(route_name='event', renderer="jm2l:templates/view_event.mako") @view_config(route_name='event', renderer="jm2l:templates/view_event.mako")
def show_event(request): def show_event(request):
year = int(request.matchdict.get('year', -1)) year = int(request.matchdict.get('year', -1))
@@ -924,7 +929,7 @@ def show_event(request):
if TheEvent is None: if TheEvent is None:
raise HTTPNotFound() raise HTTPNotFound()
MainTab = {'programme':'','presse':'', 'plan':'', 'participer':'', MainTab = {'programme':'','presse':'', 'plan':'', 'participer':'',
'event':TheEvent, 'logged_in':request.authenticated_userid }
'event':TheEvent, 'logged_in':request.authenticated_userid, "Salles":Salles }
return MainTab return MainTab


@view_config(route_name='link_event_user') @view_config(route_name='link_event_user')
@@ -1121,6 +1126,7 @@ def edit_event(request):
MainTab = {'programme':'','presse':'', 'plan':'', 'participer':'', MainTab = {'programme':'','presse':'', 'plan':'', 'participer':'',
'event':TheEvent, 'form':form, 'formAdd':formAdd, 'formAddT':formAddT, 'event':TheEvent, 'form':form, 'formAdd':formAdd, 'formAddT':formAddT,
'Salles':Salles,
'logged_in':request.authenticated_userid } 'logged_in':request.authenticated_userid }
return MainTab return MainTab
@@ -1154,6 +1160,32 @@ def show_tiers(request):
'entity':TheTiers, 'logged_in':request.authenticated_userid } 'entity':TheTiers, 'logged_in':request.authenticated_userid }
return MainTab return MainTab



@view_config(route_name='delete_entity')
def delete_tiers(request):
entity_id = request.matchdict.get('entity_id', None)
if entity_id:
if entity_id.isdigit():
TheTiers = Tiers.by_id(int(entity_id))
if TheTiers is None:
raise HTTPNotFound()
else:
TheTiers = Tiers.by_slug(entity_id)
if TheTiers is None:
raise HTTPNotFound()
if len(TheTiers.membership)!=0:
request.session.flash(('error', u"Vous devez supprimer tous les membres liés avant la suppression d'une entitée."))
return HTTPFound(location=request.route_url('show_entity', entity_id=TheTiers.slug, tiers_type=TheTiers.get_entity_type.slug_entity_type))
if len(TheTiers.membership)!=0:
request.session.flash(('error', u"Vous devez supprimer tous les roles liés avant la suppression d'une entitée."))
return HTTPFound(location=request.route_url('show_entity', entity_id=TheTiers.slug, tiers_type=TheTiers.get_entity_type.slug_entity_type))
DBSession.delete(TheTiers)
request.session.flash(('info', u"L'entitée a bien été supprimée"))
return HTTPFound(location=request.route_url('entities'))
else:
raise HTTPNotFound()


@view_config(route_name='add_entity', renderer="jm2l:templates/edit_tiers.mako") @view_config(route_name='add_entity', renderer="jm2l:templates/edit_tiers.mako")
@view_config(route_name='edit_entity', renderer="jm2l:templates/edit_tiers.mako") @view_config(route_name='edit_entity', renderer="jm2l:templates/edit_tiers.mako")
def edit_tiers(request): def edit_tiers(request):
@@ -1241,7 +1273,9 @@ def edit_tiers(request):
return HTTPFound(location=request.route_url('edit_entity', sep='/', return HTTPFound(location=request.route_url('edit_entity', sep='/',
entity_id=str(TheTiers.slug), tiers_type=TheTiers.get_entity_type.entity_type)) entity_id=str(TheTiers.slug), tiers_type=TheTiers.get_entity_type.entity_type))
DBSession.merge(TheTiers) DBSession.merge(TheTiers)
return HTTPFound(location=request.route_url('entities'))
return HTTPFound(location=request.route_url('show_entity', entity_id=TheTiers.slug,
tiers_type=TheTiers.get_entity_type.slug_entity_type))

MainTab = {'programme':'','presse':'', 'plan':'', 'participer':'', MainTab = {'programme':'','presse':'', 'plan':'', 'participer':'',
'form':form, 'DBUser':User, 'UserOptions':UserOptions, 'form':form, 'DBUser':User, 'UserOptions':UserOptions,
'logged_in':request.authenticated_userid } 'logged_in':request.authenticated_userid }
@@ -1355,10 +1389,13 @@ def link_role_entity(request):


@forbidden_view_config() @forbidden_view_config()
def forbidden(reason, request): def forbidden(reason, request):
#return Response('forbidden')
request.response.status = 403
return render_to_response('jm2l:templates/Errors/403.mako', { "reason":reason },
request=request)
if 'ident' in reason.detail:
request.session.flash(('info', reason.detail))
return HTTPFound(location='/sign/login' )
else:
request.response.status = 403
return render_to_response('jm2l:templates/Errors/403.mako', { "reason":reason },
request=request)


@notfound_view_config() @notfound_view_config()
def notfound(reason, request): def notfound(reason, request):


Laden…
Abbrechen
Speichern