ajouter la possibilité d'activer ou de désactiver un membre
This commit is contained in:
@@ -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})
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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,
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user