From 7cf8f61c4e4f58fd8779797d7c9c0ab769ccd69a Mon Sep 17 00:00:00 2001 From: tr4ck3ur Date: Thu, 9 Apr 2015 01:20:18 +0200 Subject: [PATCH] Added Caroussel for Room pictures Fix mail from Damien remarks Added room pictures Added tiers deletion Added Redirect to login when not logged --- jm2l/__init__.py | 5 +-- jm2l/models.py | 9 +++-- jm2l/static/css/jm2l.css | 4 +-- jm2l/static/img/no-image.jpg | Bin 0 -> 7026 bytes jm2l/templates/Salles/pict_salle.mako | 2 ++ jm2l/templates/edit_event.mako | 18 ++++++++++ jm2l/templates/edit_tiers.mako | 17 ++++++--- jm2l/templates/helpers.mako | 41 +++++++++++++++++++++ jm2l/templates/layout.mako | 1 + jm2l/templates/mail_html.mako | 30 ++++++++-------- jm2l/templates/view_event.mako | 11 +++--- jm2l/templates/view_tiers.mako | 7 +++- jm2l/upload.py | 12 +++++-- jm2l/views.py | 49 ++++++++++++++++++++++---- 14 files changed, 165 insertions(+), 41 deletions(-) create mode 100644 jm2l/static/img/no-image.jpg create mode 100644 jm2l/templates/Salles/pict_salle.mako diff --git a/jm2l/__init__.py b/jm2l/__init__.py index 4c5920c..7e29124 100644 --- a/jm2l/__init__.py +++ b/jm2l/__init__.py @@ -67,6 +67,7 @@ def main(global_config, **settings): 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+)}') + config.add_route('pict_salle', '/salle_picture/{salle_id:(\d+)}') # HTML Routes - Public config.add_route('home', '/{year:(\d+/)?}') @@ -86,10 +87,10 @@ def main(global_config, **settings): ## Entities 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('edit_entity', '/entity/{tiers_type:(\w+)}/{entity_id:([\w-]+)}/edit') - config.add_route('edit_entity_cat', '/categorie/entity') ## Users diff --git a/jm2l/models.py b/jm2l/models.py index 7443c92..de4aa46 100644 --- a/jm2l/models.py +++ b/jm2l/models.py @@ -260,8 +260,8 @@ class Tiers(Base): roles = relationship('Role_Tiers', backref="roles_tiers") #secondary='role_tiers_link' ) @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 def by_slug(cls, slug): @@ -348,6 +348,11 @@ class SallePhy(Base): @classmethod def by_id(cls, uid): 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): __tablename__ = 'salle' diff --git a/jm2l/static/css/jm2l.css b/jm2l/static/css/jm2l.css index 60f22ba..3959118 100644 --- a/jm2l/static/css/jm2l.css +++ b/jm2l/static/css/jm2l.css @@ -205,8 +205,8 @@ a { border: 1px solid #d4d4d4; } .ShowEntities td img { - width: 100%; - height: 100%; + width: 5em; + height: 5em; } .ShowEntities td:hover { diff --git a/jm2l/static/img/no-image.jpg b/jm2l/static/img/no-image.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4c0fc21bf86850b3f2409efeeae64c7d8a907f9e GIT binary patch literal 7026 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 literal 0 HcmV?d00001 diff --git a/jm2l/templates/Salles/pict_salle.mako b/jm2l/templates/Salles/pict_salle.mako new file mode 100644 index 0000000..ae5e4c3 --- /dev/null +++ b/jm2l/templates/Salles/pict_salle.mako @@ -0,0 +1,2 @@ +<%namespace name="helpers" file="jm2l:templates/helpers.mako"/> +${helpers.show_salles(Salles, IdSalle)} \ No newline at end of file diff --git a/jm2l/templates/edit_event.mako b/jm2l/templates/edit_event.mako index 86697f0..8c29898 100644 --- a/jm2l/templates/edit_event.mako +++ b/jm2l/templates/edit_event.mako @@ -20,6 +20,9 @@
+
+ ${helpers.show_salles( Salles, form.salle_uid.data or form.salle_uid.choices[0][0] )} +
% if 'uid' in form._fields:
@@ -31,6 +34,7 @@
%endif

${form.event_type.data}

+ % if 'uid' in form._fields:
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 = $('
').append(result).find('#MyPictureCarousel').html(); + var picturename = $('
').append(result).find('#CarName').html(); + $('#MyPictureCarousel').html(pictureresult); + $('#CarName').html(picturename); + }, + error:function(result, error){ + alert(error); + }, + }); + }); }); diff --git a/jm2l/templates/edit_tiers.mako b/jm2l/templates/edit_tiers.mako index 18100f5..5da789d 100644 --- a/jm2l/templates/edit_tiers.mako +++ b/jm2l/templates/edit_tiers.mako @@ -12,7 +12,11 @@
- +% if 'uid' in form._fields.keys(): + + Supprimer cette entitée + +%endif Editer les catégories
@@ -196,12 +200,17 @@ DicForm = { % endif - +
+
+ + Mettre à jour % else: - + Proposer + % endif +
+
% if 'uid' in form._fields: % if request.user: diff --git a/jm2l/templates/helpers.mako b/jm2l/templates/helpers.mako index 30bfb83..3853aa8 100644 --- a/jm2l/templates/helpers.mako +++ b/jm2l/templates/helpers.mako @@ -506,6 +506,47 @@ TabJs = {'select':[], 'desc':[]}
\ ## -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +<%def name="show_salles(Salles, IdSalle)"> \ +
+ <% + if not IdSalle: + return "" + SallePhy = Salles.by_id(IdSalle).phy + if not SallePhy: + return "" + photos = SallePhy.PhotosLinks + %> +
Salle: ${Salles.by_id(IdSalle).name}
+ +
+ \ +## -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= ## Wrapper pour les échanges utilisateurs ## -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= <%def name="show_exchange(Exchange, Asker, Provider)"> \ diff --git a/jm2l/templates/layout.mako b/jm2l/templates/layout.mako index 13d8175..ad6d66f 100644 --- a/jm2l/templates/layout.mako +++ b/jm2l/templates/layout.mako @@ -125,6 +125,7 @@ ${helpers.uploader_js()} % if request.user.Staff:
  • Partie Staff
  • Gérer les salles
  • +
  • Gérer les entités
  • % endif
  • Me déconnecter
  • % else: diff --git a/jm2l/templates/mail_html.mako b/jm2l/templates/mail_html.mako index f3ccf09..66572ec 100644 --- a/jm2l/templates/mail_html.mako +++ b/jm2l/templates/mail_html.mako @@ -5,24 +5,24 @@ Bonjour ${User.prenom},

    Vous venez de vous inscrire sur le site des JM2L et c'est une bonne idée :).

    -Pour accéder à votre espace il vous suffit dorénavant de cliquer sur le lien suivant :
    +Pour accéder à votre espace il vous suffit dorénavant de cliquer sur le lien suivant :
    Votre lien !
    -À partir de là vous avez la possibilité de : +À partir de là vous avez la possibilité de :
      -
    • inscrire votre stand pour la journée du 28 novembre
    • -
    • inscrire une conférence
    • +
    • inscrire votre stand pour la journée du 28 novembre
    • +
    • inscrire une conférence
    • inscrire un atelier
    • chercher/proposer du covoiturage
    • -
    • chercher/proposer un hébergement
    • +
    • chercher/proposer un hébergement
    • vous faire rembourser vos frais
    • -
    • chercher proposer du matériel (câbles, etc)
    • +
    • chercher proposer du matériel (câbles, etc)

    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 -toujours nous téléphoner au +33 6 52 42 31 37. +toujours nous téléphoner au +33 6 52 42 31 37.

    Nous vous attendons avec impatience le 28 novembre à Sophia Antipolis pour fêter le libre et partager @@ -38,29 +38,27 @@ Bonjour ${User.prenom},

    Vous venez de demander le renvoi de vos identifiants sur le site des JM2L.

    -Pour accéder à votre espace il vous suffit dorénavant de cliquer sur le lien suivant :
    +Pour accéder à votre espace il vous suffit dorénavant de cliquer sur le lien suivant :
    Votre lien !
    -N'hésitez pas à l'ajouter à vos liens favoris. +N'hésitez pas à l'ajouter à vos liens favoris.
    Vos identifiants de connection sont les suivants:
    -Login: ${User.slug} -
    -Password: ${User.password} -
    -Une fois connecté vous pouvez changer votre mot de passe sur votre fiche. +Login: ${User.slug}
    +Password: ${User.password}
    +Une fois connecté vous pouvez changer votre mot de passe sur votre fiche.

    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éléphoner au +33 6 52 42 31 37.

    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 :)


    -L'équipe des JM2L +L'équipe des JM2L
    \ % if action=='Welcome': diff --git a/jm2l/templates/view_event.mako b/jm2l/templates/view_event.mako index 53adf51..32776b8 100644 --- a/jm2l/templates/view_event.mako +++ b/jm2l/templates/view_event.mako @@ -8,14 +8,16 @@
    - +
    + ${helpers.show_salles( Salles, event.Salle.salle_id )} +
    ${event.event_type}:
    ${event.start_time.strftime('%d %b %Y').decode('utf-8')} - ${event.start_time.strftime('%H:%M')} à ${event.end_time.strftime('%H:%M')} -%if event.Salle: - - Salle: ${event.Salle.name} -%endif +##%if event.Salle: +## - Salle: ${event.Salle.name} +##%endif
    ##%if event.event_uid: ## Link - @@ -26,7 +28,6 @@ ${event.start_time.strftime('%H:%M')} à ${event.end_time.strftime('%H:%M')} Editer % endif

    ${event.name}

    - % if event.description :
    ${event.description | n} diff --git a/jm2l/templates/view_tiers.mako b/jm2l/templates/view_tiers.mako index f82913e..900ad95 100644 --- a/jm2l/templates/view_tiers.mako +++ b/jm2l/templates/view_tiers.mako @@ -17,7 +17,12 @@ ${The_entity_type.entity_subtype} ## Link - ##%endif % if request.user and (request.user.Staff or request.user in entity.members): - Editer + Editer +% endif +% if request.user and (request.user.Staff or request.user in entity.members): + + Supprimer cette entitée + % endif
    diff --git a/jm2l/upload.py b/jm2l/upload.py index ce05c93..063d804 100644 --- a/jm2l/upload.py +++ b/jm2l/upload.py @@ -2,6 +2,7 @@ from pyramid.view import view_config, view_defaults from pyramid.response import Response from pyramid.exceptions import NotFound +from pyramid.httpexceptions import HTTPNotFound from pyramid.request import Request from PIL import Image import re, os, shutil @@ -13,6 +14,7 @@ import cStringIO as StringIO # Database access imports from .models import User, Place, Tiers, Event, SallePhy +CurrentYear = 2015 MIN_FILE_SIZE = 1 # bytes MAX_FILE_SIZE = 500000000 # bytes IMAGE_TYPES = re.compile('image/(gif|p?jpeg|(x-)?png)') @@ -103,15 +105,19 @@ class MediaPath(): p = IMAGEPATH + [ media_table ] + [ linked_id ] elif media_table=='tasks': # Use Current Year - p = IMAGEPATH + [ str(2015), media_table ] + [ linked_id ] + p = IMAGEPATH + [ str(CurrentYear), media_table ] + [ linked_id ] elif media_table=='poles': # 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']: slug = User.by_id(linked_id).slug p = IMAGEPATH + ['users'] + [ slug ] + [ self.media_table ] 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 ] elif media_table=='event': ev = Event.by_id(linked_id) diff --git a/jm2l/views.py b/jm2l/views.py index c82a5d8..ae76a14 100644 --- a/jm2l/views.py +++ b/jm2l/views.py @@ -911,6 +911,11 @@ def change_year(request): def pict_user(request): 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") def show_event(request): year = int(request.matchdict.get('year', -1)) @@ -924,7 +929,7 @@ def show_event(request): if TheEvent is None: raise HTTPNotFound() MainTab = {'programme':'','presse':'', 'plan':'', 'participer':'', - 'event':TheEvent, 'logged_in':request.authenticated_userid } + 'event':TheEvent, 'logged_in':request.authenticated_userid, "Salles":Salles } return MainTab @view_config(route_name='link_event_user') @@ -1121,6 +1126,7 @@ def edit_event(request): MainTab = {'programme':'','presse':'', 'plan':'', 'participer':'', 'event':TheEvent, 'form':form, 'formAdd':formAdd, 'formAddT':formAddT, + 'Salles':Salles, 'logged_in':request.authenticated_userid } return MainTab @@ -1154,6 +1160,32 @@ def show_tiers(request): 'entity':TheTiers, 'logged_in':request.authenticated_userid } 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='edit_entity', renderer="jm2l:templates/edit_tiers.mako") def edit_tiers(request): @@ -1241,7 +1273,9 @@ def edit_tiers(request): return HTTPFound(location=request.route_url('edit_entity', sep='/', entity_id=str(TheTiers.slug), tiers_type=TheTiers.get_entity_type.entity_type)) 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':'', 'form':form, 'DBUser':User, 'UserOptions':UserOptions, 'logged_in':request.authenticated_userid } @@ -1355,10 +1389,13 @@ def link_role_entity(request): @forbidden_view_config() 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() def notfound(reason, request):