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 ;"
|
||||
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" />
|
||||
<br />
|
||||
<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-icon-valid="glyphicon glyphicon-ok"
|
||||
data-fv-icon-invalid="glyphicon glyphicon-remove"
|
||||
@@ -14,7 +14,7 @@
|
||||
<label class="col-xs-2 control-label">Email</label>
|
||||
<div class="col-xs-5">
|
||||
<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-message="L'adresse email n'est pas valide" />
|
||||
</div>
|
||||
@@ -22,7 +22,7 @@
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-2" for="intitule">Nom et prénom</label>
|
||||
<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"
|
||||
data-fv-notempty="true"
|
||||
data-fv-notempty-message="Le nom est obligatoire"
|
||||
@@ -32,47 +32,28 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-xs-2 control-label">Email</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>
|
||||
<label class="control-label col-xs-2" for="acces">Accès</label>
|
||||
<div class="col-xs-2">
|
||||
<select class="form-control" id="access" name="access">
|
||||
<optgroup tal:repeat="item access">
|
||||
<option value="${item}" tal:attributes="selected individu.access==item[0] and 'selected' or None">${item}</option>
|
||||
</optgroup>
|
||||
<select class="form-control" id="acces" name="acces">
|
||||
<div tal:repeat="item acces_list">
|
||||
<option value="${item}" tal:attributes="selected membre.acces==item and 'selected' or None">${item}</option>
|
||||
</div>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="col-xs-offset-2 col-xs-7 checkbox">
|
||||
<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>
|
||||
<label class="control-label col-xs-2">Dernière modif.</label>
|
||||
<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 class="form-group">
|
||||
<div class="col-xs-offset-2 col-xs-7 checkbox">
|
||||
<p class="form-control-static">La fiche est active</p>
|
||||
<label class="control-label col-xs-2">Statut</label>
|
||||
<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>
|
||||
<br />
|
||||
@@ -83,8 +64,12 @@
|
||||
<button class="btn btn-primary" type="submit" name="form.submitted">
|
||||
<span class="glyphicon glyphicon-ok"></span> Enregistrer</button>
|
||||
<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>
|
||||
<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>
|
||||
|
||||
@@ -195,43 +195,29 @@ def user_edit(request):
|
||||
email = request.matchdict['email']
|
||||
url = request.route_url('user_edit', email=email)
|
||||
message = ''
|
||||
access = ["0 | Production", "5 | Gestion", u"8 | Comptabilité", "9 | Administration"]
|
||||
|
||||
acces_list = ["ADMIN", "MEMBRE"]
|
||||
|
||||
if email == '0':
|
||||
# nouveau
|
||||
individu = {}
|
||||
individu['email'] = ''
|
||||
individu['nom'] = ''
|
||||
individu['email'] = ''
|
||||
individu['access'] = '0 | Production'
|
||||
individu['actif'] = 1
|
||||
individu['agenda'] = 0
|
||||
page_title= 'Nouvelle Fiche'
|
||||
membre = {}
|
||||
membre['email'] = ''
|
||||
membre['nom'] = ''
|
||||
membre['acces'] = 'MEMBRE'
|
||||
page_title= 'Nouveau membre'
|
||||
else:
|
||||
# lire la fiche de l'individu
|
||||
individu = get_member_by_email(request, email)
|
||||
if not individu:
|
||||
# lire la fiche de l'membre
|
||||
membre = get_member_by_email(request, email)
|
||||
if not membre:
|
||||
request.session.flash(u"Utilisateur non trouvé : %s" % email, 'warning')
|
||||
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:
|
||||
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:
|
||||
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:
|
||||
update_membre(request, email, new_values)
|
||||
request.session.flash(u"La fiche a été mise à jour avec succès.", 'success')
|
||||
@@ -241,11 +227,21 @@ def user_edit(request):
|
||||
delete_membre(request, email)
|
||||
request.session.flash(u"La fiche a été supprimée avec succès.", 'success')
|
||||
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 {
|
||||
'page_title': page_title,
|
||||
'url': url,
|
||||
'individu': individu,
|
||||
'access': access,
|
||||
'membre': membre,
|
||||
'acces_list': acces_list,
|
||||
'message': message,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user