Merge branch 'master' of https://bitbucket.org/ctphuoc/caotek_mesavoirs
This commit is contained in:
@@ -17,10 +17,12 @@ caotek_mesavoirs.egg-info/not-zip-safe
|
|||||||
caotek_mesavoirs.egg-info/requires.txt
|
caotek_mesavoirs.egg-info/requires.txt
|
||||||
caotek_mesavoirs.egg-info/top_level.txt
|
caotek_mesavoirs.egg-info/top_level.txt
|
||||||
caotek_mesavoirs/models/__init__.py
|
caotek_mesavoirs/models/__init__.py
|
||||||
|
caotek_mesavoirs/models/actifs.py
|
||||||
caotek_mesavoirs/models/default.py
|
caotek_mesavoirs/models/default.py
|
||||||
caotek_mesavoirs/models/members.py
|
caotek_mesavoirs/models/members.py
|
||||||
caotek_mesavoirs/scripts/__init__.py
|
caotek_mesavoirs/scripts/__init__.py
|
||||||
caotek_mesavoirs/views/__init__.py
|
caotek_mesavoirs/views/__init__.py
|
||||||
|
caotek_mesavoirs/views/actifs.py
|
||||||
caotek_mesavoirs/views/default.py
|
caotek_mesavoirs/views/default.py
|
||||||
caotek_mesavoirs/views/members.py
|
caotek_mesavoirs/views/members.py
|
||||||
caotek_mesavoirs/views/notfound.py
|
caotek_mesavoirs/views/notfound.py
|
||||||
@@ -44,13 +44,32 @@ def delete_doc(request, doc_id):
|
|||||||
query = "delete from docs where doc_id = :doc_id;"
|
query = "delete from docs where doc_id = :doc_id;"
|
||||||
results = request.dbsession.execute(query, {'doc_id': doc_id})
|
results = request.dbsession.execute(query, {'doc_id': doc_id})
|
||||||
|
|
||||||
def get_categories(request, cat_id):
|
def get_categories(request, no_cat):
|
||||||
if cat_id == '0':
|
if no_cat == '0':
|
||||||
query = "SELECT * FROM categories ORDER BY categorie"
|
query = "SELECT * FROM categories ORDER BY categorie"
|
||||||
results = request.dbsession.execute(query).fetchall()
|
results = request.dbsession.execute(query).fetchall()
|
||||||
else:
|
else:
|
||||||
# lire le actif par son identifiant
|
# lire le actif par son identifiant
|
||||||
query = """SELECT * FROM categories WHERE cat_id=:cat_id;"""
|
query = """SELECT * FROM categories WHERE no_cat=:no_cat;"""
|
||||||
results = request.dbsession.execute(query, {'cat_id': cat_id}).first()
|
results = request.dbsession.execute(query, {'no_cat': no_cat}).first()
|
||||||
return results
|
return results
|
||||||
|
|
||||||
|
def update_categorie(request, no_cat, new_values):
|
||||||
|
# formater les champs
|
||||||
|
s = ''
|
||||||
|
for param in new_values.keys():
|
||||||
|
if s:
|
||||||
|
s += ",%s=:%s" % (param, param)
|
||||||
|
else:
|
||||||
|
s = "%s=:%s" % (param, param)
|
||||||
|
|
||||||
|
if no_cat == '0':
|
||||||
|
query = "INSERT INTO categories SET %s" % s
|
||||||
|
else:
|
||||||
|
new_values['no_cat'] = no_cat
|
||||||
|
query = "UPDATE categories SET %s WHERE no_cat = :no_cat;" % s
|
||||||
|
execute_query(request, query, new_values)
|
||||||
|
|
||||||
|
def delete_categorie(request, no_cat):
|
||||||
|
query = "DELETE FROM categories WHERE no_cat = :no_cat ;"
|
||||||
|
execute_query(request, query, {'no_cat': no_cat})
|
||||||
@@ -4,6 +4,7 @@ def includeme(config):
|
|||||||
config.add_route('doc_edit', '/doc_edit/{doc_id}')
|
config.add_route('doc_edit', '/doc_edit/{doc_id}')
|
||||||
config.add_route('doc_list', '/doc_list')
|
config.add_route('doc_list', '/doc_list')
|
||||||
config.add_route('doc_view', '/doc_view/{doc_id}')
|
config.add_route('doc_view', '/doc_view/{doc_id}')
|
||||||
|
config.add_route('categorie_edit', '/categorie_edit/{no_cat}')
|
||||||
# actifs
|
# actifs
|
||||||
config.add_route('actifs_list', '/actifs_list')
|
config.add_route('actifs_list', '/actifs_list')
|
||||||
config.add_route('actif_edit', '/actif_edit/{no_id}')
|
config.add_route('actif_edit', '/actif_edit/{no_id}')
|
||||||
|
|||||||
64
caotek_mesavoirs/templates/categorie_edit.pt
Normal file
64
caotek_mesavoirs/templates/categorie_edit.pt
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
<metal:block use-macro="main_template">
|
||||||
|
<div metal:fill-slot="content">
|
||||||
|
|
||||||
|
<div tal:condition="message" tal:content="message" class="alert alert-danger" />
|
||||||
|
<br />
|
||||||
|
<div class="row">
|
||||||
|
<form id="categorie_edit-form" class="form-horizontal" action="${url}" method="post" tal:condition="categorie"
|
||||||
|
data-fv-framework="bootstrap"
|
||||||
|
data-fv-icon-valid="glyphicon glyphicon-ok"
|
||||||
|
data-fv-icon-invalid="glyphicon glyphicon-remove"
|
||||||
|
data-fv-icon-validating="glyphicon glyphicon-refresh">
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-xs-2 control-label">Categorie</label>
|
||||||
|
<div class="col-xs-3">
|
||||||
|
<input class="form-control" type="text" name="categorie"
|
||||||
|
value="${categorie.categorie}" placeholder="15 caractères maximum"
|
||||||
|
data-fv-notempty="true"
|
||||||
|
data-fv-notempty-message="Le symbole est obligatoire"
|
||||||
|
data-fv-stringlength="true"
|
||||||
|
data-fv-stringlength-max="15"
|
||||||
|
data-fv-stringlength-message="15 caractères maximum" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="control-label col-xs-2" for="pc_cible">Pourcentage cible</label>
|
||||||
|
<div class="col-xs-2">
|
||||||
|
<input class="form-control" type="text" id="pc_cible" name="pc_cible" value="${categorie.pc_cible}"
|
||||||
|
data-fv-digits="true"
|
||||||
|
data-fv-digits-message="Le nombre doit être composé que de chiffres" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<br />
|
||||||
|
<div class="form-group">
|
||||||
|
<div class="col-xs-offset-2 col-xs-10">
|
||||||
|
<div class="form-group">
|
||||||
|
<a class="btn btn-default" href="${request.application_url}/categories_list">
|
||||||
|
<span class="glyphicon glyphicon-chevron-left"></span> Retour</a>
|
||||||
|
<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="categorie.no_cat <> 0">
|
||||||
|
<span class="glyphicon glyphicon-remove"></span> Supprimer</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
</div> <!-- row -->
|
||||||
|
|
||||||
|
<script>
|
||||||
|
$(document).ready(function() {
|
||||||
|
$('#categorie_edit-form').formValidation();
|
||||||
|
$('form input').on('keypress', function(e) {
|
||||||
|
return e.which !== 13;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</metal:block>
|
||||||
@@ -2,6 +2,34 @@
|
|||||||
<div metal:fill-slot="content">
|
<div metal:fill-slot="content">
|
||||||
|
|
||||||
<div tal:condition="message" tal:content="message" class="alert alert-danger" />
|
<div tal:condition="message" tal:content="message" class="alert alert-danger" />
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<a href="categorie_edit/0" class="btn btn-success" role="button">
|
||||||
|
<span class="glyphicon glyphicon-plus"></span> Nouvelle categorie</a>
|
||||||
|
</p>
|
||||||
|
<div class="col-md-6">
|
||||||
|
<table id="categories_list" class="table table-striped table-bordered">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Categorie</th>
|
||||||
|
<th class="text-right">% cible</th>
|
||||||
|
<th class="text-right">% atteint</th>
|
||||||
|
<th class="text-right">Valeur</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr tal:repeat="item items">
|
||||||
|
<td class="${item.bg}"><a href="categorie_edit/${item.no_cat}">${item.categorie}</a></td>
|
||||||
|
<td class="text-right">${layout.to_percent(item.pc_cible)}</td>
|
||||||
|
<td class="text-right">${layout.to_percent(item.pc_atteint)}</td>
|
||||||
|
<td class="text-right">${layout.to_euro(item.valeur)}</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
|
||||||
</div><!-- content -->
|
</div><!-- content -->
|
||||||
</metal:block>
|
</metal:block>
|
||||||
|
|||||||
@@ -73,9 +73,13 @@ def home(request):
|
|||||||
request.session.flash(u"Utilisateur non trouvé : %s" % logged_in, 'warning')
|
request.session.flash(u"Utilisateur non trouvé : %s" % logged_in, 'warning')
|
||||||
return HTTPFound(location=request.route_url('/'))
|
return HTTPFound(location=request.route_url('/'))
|
||||||
|
|
||||||
|
# lire les categories
|
||||||
|
items = get_categories(request, '0')
|
||||||
|
|
||||||
return {
|
return {
|
||||||
'page_title': u"%s %s" % (membre.prenom, membre.nom),
|
'page_title': u"%s %s" % (membre.prenom, membre.nom),
|
||||||
'message': message,
|
'message': message,
|
||||||
|
'items': items,
|
||||||
}
|
}
|
||||||
|
|
||||||
@view_config(route_name='doc_list', renderer='../templates/doc_list.pt', permission='view')
|
@view_config(route_name='doc_list', renderer='../templates/doc_list.pt', permission='view')
|
||||||
@@ -171,3 +175,50 @@ gestion.entreprise-dumas.com
|
|||||||
mailer = get_mailer(request)
|
mailer = get_mailer(request)
|
||||||
|
|
||||||
mailer.send_immediately(message)
|
mailer.send_immediately(message)
|
||||||
|
|
||||||
|
|
||||||
|
@view_config(route_name='categorie_edit', renderer='../templates/categorie_edit.pt', permission='view')
|
||||||
|
def categorie_edit(request):
|
||||||
|
no_cat = request.matchdict['no_cat']
|
||||||
|
url = request.route_url('categorie_edit', no_cat=no_cat)
|
||||||
|
message = ''
|
||||||
|
categories_list = get_categories(request,'0')
|
||||||
|
|
||||||
|
if no_cat == '0':
|
||||||
|
# nouveau
|
||||||
|
categorie = {}
|
||||||
|
categorie['no_cat'] = '0'
|
||||||
|
categorie['categorie'] = ''
|
||||||
|
categorie['pc_cible'] = '0'
|
||||||
|
page_title= u'Nouvelle catégorie'
|
||||||
|
else:
|
||||||
|
# lire la fiche de la categorie
|
||||||
|
categorie = get_categories(request, no_cat)
|
||||||
|
if not categorie:
|
||||||
|
request.session.flash(u"Catégorie non trouvé : %s" % no_cat, 'warning')
|
||||||
|
return HTTPFound(location=request.route_url('home'))
|
||||||
|
page_title= u"Catégorie : %s" % (categorie.categorie)
|
||||||
|
|
||||||
|
if 'form.submitted' in request.params:
|
||||||
|
new_values = {}
|
||||||
|
for param, db_value in categorie.items():
|
||||||
|
if param in request.params and request.params[param] != db_value:
|
||||||
|
new_values[param] = request.params[param]
|
||||||
|
|
||||||
|
if new_values:
|
||||||
|
update_categorie(request, no_cat, new_values)
|
||||||
|
request.session.flash(u"La fiche a été mise à jour avec succès.", 'success')
|
||||||
|
return HTTPFound(location=request.route_url('home'))
|
||||||
|
|
||||||
|
|
||||||
|
if 'form.deleted' in request.params:
|
||||||
|
delete_categorie(request, no_cat)
|
||||||
|
request.session.flash(u"La fiche a été supprimée avec succès.", 'success')
|
||||||
|
return HTTPFound(location=request.route_url('home'))
|
||||||
|
|
||||||
|
return {
|
||||||
|
'page_title': page_title,
|
||||||
|
'url': url,
|
||||||
|
'categorie': categorie,
|
||||||
|
'message': message,
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user