ajouter la possibilité d'activer ou de désactiver un membre

This commit is contained in:
2017-07-22 15:05:54 +02:00
parent 8b50412a58
commit bd128102c2
3 changed files with 51 additions and 64 deletions

View File

@@ -81,3 +81,9 @@ def delete_membre(request, email):
query = "DELETE FROM members WHERE email = :email ;" query = "DELETE FROM members WHERE email = :email ;"
execute_query(request, query, {'email': email}) execute_query(request, query, {'email': email})
def update_membre_statut(request, email, action):
if action == 'on':
query = "UPDATE members SET expire_le = NULL WHERE email = :email ;"
else:
query = "UPDATE members SET expire_le = now() WHERE email = :email ;"
execute_query(request, query, {'email': email})

View File

@@ -4,7 +4,7 @@
<div tal:condition="message" tal:content="message" class="alert alert-danger" /> <div tal:condition="message" tal:content="message" class="alert alert-danger" />
<br /> <br />
<div class="row"> <div class="row">
<form id="user_edit-form" class="form-horizontal" action="${url}" method="post" tal:condition="individu" <form id="user_edit-form" class="form-horizontal" action="${url}" method="post" tal:condition="membre"
data-fv-framework="bootstrap" data-fv-framework="bootstrap"
data-fv-icon-valid="glyphicon glyphicon-ok" data-fv-icon-valid="glyphicon glyphicon-ok"
data-fv-icon-invalid="glyphicon glyphicon-remove" data-fv-icon-invalid="glyphicon glyphicon-remove"
@@ -14,7 +14,7 @@
<label class="col-xs-2 control-label">Email</label> <label class="col-xs-2 control-label">Email</label>
<div class="col-xs-5"> <div class="col-xs-5">
<input class="form-control" type="text" name="email" <input class="form-control" type="text" name="email"
value="${individu.email}" placeholder="55 caractères maximum" value="${membre.email}" placeholder="55 caractères maximum"
data-fv-emailaddress="true" data-fv-emailaddress="true"
data-fv-emailaddress-message="L'adresse email n'est pas valide" /> data-fv-emailaddress-message="L'adresse email n'est pas valide" />
</div> </div>
@@ -22,7 +22,7 @@
<div class="form-group"> <div class="form-group">
<label class="control-label col-xs-2" for="intitule">Nom et prénom</label> <label class="control-label col-xs-2" for="intitule">Nom et prénom</label>
<div class="col-xs-5"> <div class="col-xs-5">
<input class="form-control" type="text" id="intitule" name="nom" value="${individu.nom}" <input class="form-control" type="text" id="intitule" name="nom" value="${membre.nom}"
placeholder="30 caractères maximum" placeholder="30 caractères maximum"
data-fv-notempty="true" data-fv-notempty="true"
data-fv-notempty-message="Le nom est obligatoire" data-fv-notempty-message="Le nom est obligatoire"
@@ -32,47 +32,28 @@
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="col-xs-2 control-label">Email</label> <label class="control-label col-xs-2" for="acces">Accès</label>
<div class="col-xs-5">
<input class="form-control" type="text" name="email"
value="${individu.email}" placeholder="55 caractères maximum"
data-fv-emailaddress="true"
data-fv-emailaddress-message="L'adresse email n'est pas valide" />
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-2" for="access">Accès</label>
<div class="col-xs-2"> <div class="col-xs-2">
<select class="form-control" id="access" name="access"> <select class="form-control" id="acces" name="acces">
<optgroup tal:repeat="item access"> <div tal:repeat="item acces_list">
<option value="${item}" tal:attributes="selected individu.access==item[0] and 'selected' or None">${item}</option> <option value="${item}" tal:attributes="selected membre.acces==item and 'selected' or None">${item}</option>
</optgroup> </div>
</select> </select>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<div class="col-xs-offset-2 col-xs-7 checkbox"> <label class="control-label col-xs-2">Dernière modif.</label>
<label><input type="checkbox" name="agenda" value="individu.agenda" id="agenda"
tal:attributes="checked individu.agenda <> 0 and 'checked' or None">Peut prendre des rendez-vous
</label>
</div>
</div>
<div class="form-group">
<div class="col-xs-offset-2 col-xs-7 checkbox">
<label><input type="checkbox" name="actif" value="individu.actif" id="actif"
tal:attributes="checked individu.actif <> 0 and 'checked' or None">La fiche est active
</label>
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-2" for="access">Dernière modif.</label>
<div class="col-xs-7"> <div class="col-xs-7">
<p class="form-control-static">${individu.modif_le.strftime('%d/%m/%Y - %H:%M')}</p> <p class="form-control-static">${membre.modif_le.strftime('%d/%m/%Y - %H:%M')}</p>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<div class="col-xs-offset-2 col-xs-7 checkbox"> <label class="control-label col-xs-2">Statut</label>
<p class="form-control-static">La fiche est active</p> <div class="col-xs-7">
<div >
<p class="form-control-static text-danger" tal:condition="membre.expire_le">Désactivé le ${membre.modif_le.strftime('%d/%m/%Y')}</p>
</div>
<p class="form-control-static text-success" tal:condition="not membre.expire_le">Actif</p>
</div> </div>
</div> </div>
<br /> <br />
@@ -83,8 +64,12 @@
<button class="btn btn-primary" type="submit" name="form.submitted"> <button class="btn btn-primary" type="submit" name="form.submitted">
<span class="glyphicon glyphicon-ok"></span> Enregistrer</button> <span class="glyphicon glyphicon-ok"></span> Enregistrer</button>
<button class="btn btn-warning" type="submit" name="form.deleted" <button class="btn btn-warning" type="submit" name="form.deleted"
tal:condition="individu.email > 0"> tal:condition="membre.email > 0">
<span class="glyphicon glyphicon-remove"></span> Supprimer</button> <span class="glyphicon glyphicon-remove"></span> Supprimer</button>
<button class="btn btn-success" type="submit" name="form.activated"
tal:condition="membre.expire_le">Activer la fiche</button>
<button class="btn btn-danger" type="submit" name="form.desactivated"
tal:condition="not membre.expire_le">Désactiver la fiche</button>
</div> </div>
</div> </div>
</div> </div>

View File

@@ -195,43 +195,29 @@ def user_edit(request):
email = request.matchdict['email'] email = request.matchdict['email']
url = request.route_url('user_edit', email=email) url = request.route_url('user_edit', email=email)
message = '' message = ''
access = ["0 | Production", "5 | Gestion", u"8 | Comptabilité", "9 | Administration"] acces_list = ["ADMIN", "MEMBRE"]
if email == '0': if email == '0':
# nouveau # nouveau
individu = {} membre = {}
individu['email'] = '' membre['email'] = ''
individu['nom'] = '' membre['nom'] = ''
individu['email'] = '' membre['acces'] = 'MEMBRE'
individu['access'] = '0 | Production' page_title= 'Nouveau membre'
individu['actif'] = 1
individu['agenda'] = 0
page_title= 'Nouvelle Fiche'
else: else:
# lire la fiche de l'individu # lire la fiche de l'membre
individu = get_member_by_email(request, email) membre = get_member_by_email(request, email)
if not individu: if not membre:
request.session.flash(u"Utilisateur non trouvé : %s" % email, 'warning') request.session.flash(u"Utilisateur non trouvé : %s" % email, 'warning')
return HTTPFound(location=request.route_url('users_list')) return HTTPFound(location=request.route_url('users_list'))
page_title= u"Fiche de %s" %(individu.nom) page_title= u"Fiche de %s" %(membre.nom)
if 'form.submitted' in request.params: if 'form.submitted' in request.params:
new_values = {} new_values = {}
for param, db_value in individu.items(): for param, db_value in membre.items():
if param in request.params and request.params[param] != db_value: if param in request.params and request.params[param] != db_value:
new_values[param] = request.params[param] new_values[param] = request.params[param]
# actif coché ?
if 'actif' in request.params:
new_values['actif'] = 1
else:
new_values['actif'] = 0
# agenda coché ?
if 'agenda' in request.params:
new_values['agenda'] = 1
else:
new_values['agenda'] = 0
if new_values: if new_values:
update_membre(request, email, new_values) update_membre(request, email, new_values)
request.session.flash(u"La fiche a été mise à jour avec succès.", 'success') request.session.flash(u"La fiche a été mise à jour avec succès.", 'success')
@@ -242,10 +228,20 @@ def user_edit(request):
request.session.flash(u"La fiche a été supprimée avec succès.", 'success') request.session.flash(u"La fiche a été supprimée avec succès.", 'success')
return HTTPFound(location=request.route_url('users_list')) return HTTPFound(location=request.route_url('users_list'))
if 'form.activated' in request.params:
update_membre_statut(request, email, 'on')
# lire la fiche de l'membre
membre = get_member_by_email(request, email)
if 'form.desactivated' in request.params:
update_membre_statut(request, email, 'off')
# lire la fiche de l'membre
membre = get_member_by_email(request, email)
return { return {
'page_title': page_title, 'page_title': page_title,
'url': url, 'url': url,
'individu': individu, 'membre': membre,
'access': access, 'acces_list': acces_list,
'message': message, 'message': message,
} }