diff --git a/mondumas/models/default.py b/mondumas/models/default.py index a9adf49..6ea9c4c 100644 --- a/mondumas/models/default.py +++ b/mondumas/models/default.py @@ -19,6 +19,11 @@ def execute_query(request, query, params): mark_changed(request.dbsession) transaction.commit() +def get_codespostaux(request, code): + query = "SELECT * FROM p_codespostaux WHERE code_postal like :code;" + results = request.dbsession.execute(query, {'code': code + "%"}) + return results.fetchall() + def get_member_by_mdp_oublie(request, lien): query = "SELECT * FROM p_users WHERE mdp_oublie=:lien;" results = request.dbsession.execute(query, {'lien':lien}).first() diff --git a/mondumas/models/parametres.py b/mondumas/models/parametres.py index 18f7404..006f7af 100644 --- a/mondumas/models/parametres.py +++ b/mondumas/models/parametres.py @@ -82,3 +82,30 @@ def update_rdf_cause(request, old_code, code, libelle): else: query = "UPDATE rdf_causes SET code = :code, libelle = :libelle WHERE code = :old_code;" execute_query(request, query, {'old_code': old_code, 'code': code, 'libelle': libelle}) + +def get_texts(request, text_id): + """Lire les textes""" + if text_id == 0: + query = "SELECT * FROM p_texts ORDER BY theme, intitule;" + results = request.dbsession.execute(query).fetchall() + elif text_id == -1: + query = "SELECT * FROM p_texts where theme != 'INTERNE' ORDER BY theme, intitule;" + results = request.dbsession.execute(query).fetchall() + else: + query = "SELECT * FROM p_texts where text_id = :text_id;" + results = request.dbsession.execute(query, {'text_id': text_id}).first() + return results + +def update_text(request, text_id, intitule, texte, theme): + """créér ou modifier la text""" + if text_id == '0': + query = "INSERT INTO p_texts (intitule, texte, theme) VALUES(:intitule, :texte, :theme);" + execute_query(request, query, {'intitule': intitule, 'texte': texte, 'theme': theme}) + else: + query = "update p_texts set intitule=:intitule, texte=:texte, theme=:theme where text_id = :text_id;" + execute_query(request, query, {'text_id': text_id, 'intitule': intitule, 'texte': texte, 'theme': theme}) + +def delete_text(request, text_id): + """supprimer la text""" + query = "delete from p_texts where text_id = :text_id;" + execute_query(request, query, {'text_id': text_id}) diff --git a/mondumas/routes.py b/mondumas/routes.py index 9bb406b..dca6069 100644 --- a/mondumas/routes.py +++ b/mondumas/routes.py @@ -7,6 +7,7 @@ def includeme(config): # default config.add_route('home', '/') config.add_route('affiche_message','/affiche_message/{login}') + config.add_route('ajax_codepostal', '/ajax_codepostal') config.add_route('changer_mdp', '/changer_mdp') config.add_route('envoyer_mdp', '/envoyer_mdp') config.add_route('login', '/login') @@ -42,6 +43,9 @@ def includeme(config): config.add_route('orphans_de', '/orphans_de/{societe}') config.add_route('rdf_cause_edit', '/rdf_cause_edit/{code}') config.add_route('rdf_causes_list', '/rdf_causes_list') + config.add_route('text_edit', '/text_edit/{text_id}') + config.add_route('text_list', '/text_list') + config.add_route('text_view', '/text_view/{text_id}') config.add_route('user_edit', '/user_edit/{cd_uti}') config.add_route('users_list', '/users_list') config.add_route('users_ua', '/users_ua') diff --git a/mondumas/templates/dossier/dossier_edit.pt b/mondumas/templates/dossier/dossier_edit.pt index 1932efa..8a1a732 100644 --- a/mondumas/templates/dossier/dossier_edit.pt +++ b/mondumas/templates/dossier/dossier_edit.pt @@ -1,6 +1,8 @@
+
+
-
- -
- +
+ +
+ +
-
-
- -
- -
-
@@ -62,6 +49,11 @@ data-fv-stringlength-max="10" data-fv-stringlength-message="10 caractères maximum" />
+
+ +
@@ -91,7 +83,7 @@ value="${dossier.C_TEL1}" placeholder="20 caractères maximum" data-fv-phone="true" data-fv-phone-country="FR" - data-fv-phone-message="Ce numéro de téléphone n'est pas vailde" /> + data-fv-phone-message="Ce numéro de téléphone n'est pas valide" />
@@ -156,12 +148,28 @@

+ diff --git a/mondumas/templates/dossier/dossier_lookup.pt b/mondumas/templates/dossier/dossier_lookup.pt index eadce50..4310fe6 100644 --- a/mondumas/templates/dossier/dossier_lookup.pt +++ b/mondumas/templates/dossier/dossier_lookup.pt @@ -84,7 +84,18 @@ return '' + data + ''; }, }, - ] + ], + "createdRow": function( row, data, dataIndex ){ + if ( data[6] == "Humidité" ) { + $('td', row).eq(6).css('background-color', 'Crimson').css('color', 'white'); + } + if ( data[6] == "En-cours" ) { + $('td', row).eq(6).css('background-color', 'Orange'); + } + if ( data[6] == "Terminé" ) { + $('td', row).eq(6).css('background-color', 'LightGreen'); + } + }, }); }); diff --git a/mondumas/templates/dossier/dossier_view.pt b/mondumas/templates/dossier/dossier_view.pt index e7f29ab..923336d 100644 --- a/mondumas/templates/dossier/dossier_view.pt +++ b/mondumas/templates/dossier/dossier_view.pt @@ -24,11 +24,14 @@ Etage - Code
+ Ascenseur
Tél. domicile - prof.
Tél. mobile - fax ${dossier.C_ETAGE} - ${dossier.C_CODE}
+ NON
+ OUI
${dossier.C_TEL1} - ${dossier.C_TEL2}
${dossier.C_TELP} - ${dossier.C_FAX} diff --git a/mondumas/templates/layouts/global_layout.pt b/mondumas/templates/layouts/global_layout.pt index b721247..a3c067b 100644 --- a/mondumas/templates/layouts/global_layout.pt +++ b/mondumas/templates/layouts/global_layout.pt @@ -10,6 +10,7 @@ + diff --git a/mondumas/templates/parametres/parametres.pt b/mondumas/templates/parametres/parametres.pt index 352f6d3..a06ca05 100644 --- a/mondumas/templates/parametres/parametres.pt +++ b/mondumas/templates/parametres/parametres.pt @@ -11,6 +11,10 @@

RDF : CAUSES

+
+ +

TEXTES EMAIL

+

diff --git a/mondumas/templates/parametres/text_edit.pt b/mondumas/templates/parametres/text_edit.pt new file mode 100644 index 0000000..cd81e59 --- /dev/null +++ b/mondumas/templates/parametres/text_edit.pt @@ -0,0 +1,69 @@ + +
+ +
+ +
+ + +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+
+ + +  Annuler +
+
+
+
+ +
+
+ +
+
+
+ + + +
+ diff --git a/mondumas/templates/parametres/text_list.pt b/mondumas/templates/parametres/text_list.pt new file mode 100644 index 0000000..987504a --- /dev/null +++ b/mondumas/templates/parametres/text_list.pt @@ -0,0 +1,31 @@ + +
+ +
+

+ +   + Créer un nouveau texte +

+ + + + + + + + + + + + + +
IntituléThèmeDernière mise à jour
${ligne.intitule}${ligne.theme}
+
+ +
+
+
+ +
+ diff --git a/mondumas/templates/parametres/text_view.pt b/mondumas/templates/parametres/text_view.pt new file mode 100644 index 0000000..e965b03 --- /dev/null +++ b/mondumas/templates/parametres/text_view.pt @@ -0,0 +1,18 @@ + +
+ +
+ +  Fermer + +  Modifier +
+
+
Page text goes here.
+
+ +
+
+ +
+
diff --git a/mondumas/views/default.py b/mondumas/views/default.py index 8576403..5a58308 100644 --- a/mondumas/views/default.py +++ b/mondumas/views/default.py @@ -263,4 +263,18 @@ def affiche_message(request): 'url_identification': request.route_url('login_as', login=login) } +@view_config(route_name='ajax_codepostal') +def ajax_codepostal(request): + recherche = request.GET['recherche'] + + # lire les codes postaux commencant par + items = get_codespostaux(request, recherche) + + liste=[] + for row in items: + d = row.code_postal + " - " + row.libelle + liste.append(d) + + return Response(json.dumps(liste)) + diff --git a/mondumas/views/dossier.py b/mondumas/views/dossier.py index 941817b..67b3c80 100644 --- a/mondumas/views/dossier.py +++ b/mondumas/views/dossier.py @@ -81,9 +81,13 @@ def dossier_lookup(request): if len(chantiers) == 0: message = "Chantier non trouvé : %s" % name # construire la liste - for item in chantiers: + for item in chantiers: + if item.humidite != 0: + status = 'Humidité' + else: + status = item.status d = ('%s-%s' % (societe, item.numero),item.date.strftime('%d-%m-%Y'), item.nomcli, item.chantier, to_euro(item.montant), - item.nosin, item.status, item.usermaj) + item.nosin, status, item.usermaj) liste.append(d) if len(name) == 0 : @@ -254,12 +258,14 @@ def dossier_edit(request): logged_in = request.authenticated_userid nodossier = request.matchdict['nodossier'] url = request.route_url('dossier_edit', nodossier=nodossier) + message = '' dossier = get_dossier_by_no(request, nodossier) if not dossier: request.session.flash(u"Le dossier no %s est introuvable" % (nodossier), 'danger') return HTTPFound(location=request.route_url('dossier_lookup')) + code_postal = '%s - %s' % (dossier.C_CP, dossier.C_VILLE) # lire table expert experts = get_experts(request, dossier.CABINET, 0) @@ -269,7 +275,22 @@ def dossier_edit(request): if param in request.params and request.params[param] != db_value: new_values[param] = request.params[param] - if new_values: + # controle saisie code postal + code_postal = request.params['code_postal'] + cp = code_postal.split(' - ') + cp = code_postal.split(' - ') + if len(cp) < 2: + message = 'Code postal invalide. Veuillez sélectionner un parmi la liste.' + else: + new_values['c_cp'] = cp[0] + new_values['c_ville'] = cp[1] + + # ascenseur coché ? + if 'ascenseur' in request.params: + new_values['c_ascenseur'] = 1 + else: + new_values['c_ascenseur'] = 0 + update_dossier(request, nodossier, new_values) request.session.flash(u"Le dossier a été mis à jour avec succès.", 'success') return HTTPFound(location=request.route_url('dossier_view', nodossier=nodossier)) @@ -277,9 +298,11 @@ def dossier_edit(request): return { 'page_title': "Modifier le dossier : %s" % nodossier, 'url': url, + 'message': message, 'dossier': dossier, 'nodossier': nodossier, 'experts': experts, + 'code_postal': code_postal, } @view_config(route_name='upload_doc', renderer='../templates/dossier/upload_doc.pt', permission='view') diff --git a/mondumas/views/parametres.py b/mondumas/views/parametres.py index c126eb0..a09b2f7 100644 --- a/mondumas/views/parametres.py +++ b/mondumas/views/parametres.py @@ -13,6 +13,7 @@ from pyramid.httpexceptions import ( from pyramid_mailer.message import Message, Attachment from datetime import * +from docutils.core import publish_parts import hashlib from sqlalchemy.exc import DBAPIError @@ -361,3 +362,83 @@ def emails_msg(request): 'page_title': item.COMMENT, 'item': item, } + +@view_config(route_name='text_list', renderer='../templates/parametres/text_list.pt', permission='manage') +def text_list(request): + + # lire toutes les text + texts = get_texts(request, 0) + + return { + 'page_title': "Liste des textes", + 'texts': texts, + } + +@view_config(route_name='text_edit', renderer='../templates/parametres/text_edit.pt', permission='manage') +def text_edit(request): + text_id = request.matchdict['text_id'] + url = request.route_url('text_edit',text_id=text_id) + + message = "" + if text_id == '0': + titre = "Nouvelle text" + intitule = "" + texte = "" + theme = "" + else: + titre = "Modifier la text : %s" % str(text_id) + text = get_texts(request, text_id) + intitule = text.intitule + texte = text.texte + theme = text.theme + + if 'form.submitted' in request.params: + intitule = request.params["intitule"] + texte = request.params["texte"] + theme = request.params["theme"] + + if len(intitule) > 0 and len(texte) > 0: + update_text(request, text_id, intitule, texte, theme) + if text_id == '0': + # si creation text, retour à la liste des texts + return HTTPFound(location=request.route_url('text_list')) + else: + return HTTPFound(location=request.route_url('text_view', text_id=text_id)) + else: + message = "Veuillez saisir un intitule et un texte." + + if 'form.deleted' in request.params: + if text_id != '0': + delete_text(request, text_id) + request.session.flash("'%s' a été supprimée avec succès." % intitule, 'success') + return HTTPFound(location=request.route_url('text_list')) + + return { + 'page_title': titre, + 'url': url, + 'message': message, + 'text_id': text_id, + 'intitule': intitule, + 'texte': texte, + 'theme': theme, + 'themes': ["EMAIL","INTERNE"], + } + +@view_config(route_name='text_view', renderer='../templates/parametres/text_view.pt') +def text_view(request): + text_id = request.matchdict['text_id'] + current_route_path = request.current_route_path() + + text = get_texts(request, text_id) + intitule = text.intitule + # insèrer le path de static/img + img_path = '%s/static/img/' % request.application_url + + texte = text.texte.replace('static/img/', img_path) + # convertir reST en HTML + texte = publish_parts(texte, writer_name='html')['html_body'] + return { + 'page_title': intitule, + 'texte': texte, + 'text_id': text_id, + }