From ca04eb551b69ab68a7bcd380b651141c6a50f5b3 Mon Sep 17 00:00:00 2001 From: Phuoc CAO Date: Thu, 17 Dec 2020 12:13:22 +0100 Subject: [PATCH] ajout cabinet+experts --- mondumas/models/default.py | 10 +- mondumas/models/parametres.py | 20 ++ mondumas/routes.py | 3 + mondumas/templates/devis/devis_ligne.pt | 6 +- mondumas/templates/dossier/dossier_edit.pt | 15 +- mondumas/templates/dossier/dossier_lookup.pt | 22 +-- mondumas/templates/dossier/dossier_view.pt | 8 +- mondumas/templates/parametres/cabinet_edit.pt | 184 ++++++++++++++++++ mondumas/templates/parametres/cabinets.pt | 57 ++++++ mondumas/templates/parametres/expert_edit.pt | 116 +++++++++++ mondumas/templates/parametres/parametres.pt | 7 + mondumas/views/default.py | 2 +- mondumas/views/devis.py | 9 +- mondumas/views/dossier.py | 9 +- mondumas/views/parametres.py | 134 ++++++++++++- production.ini | 10 +- 16 files changed, 566 insertions(+), 46 deletions(-) create mode 100644 mondumas/templates/parametres/cabinet_edit.pt create mode 100644 mondumas/templates/parametres/cabinets.pt create mode 100644 mondumas/templates/parametres/expert_edit.pt diff --git a/mondumas/models/default.py b/mondumas/models/default.py index cbff819..13d086a 100644 --- a/mondumas/models/default.py +++ b/mondumas/models/default.py @@ -26,11 +26,6 @@ def get_userAccess(request, logged_in): else: return 0 -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() @@ -128,3 +123,8 @@ def get_article(request, type, libelle): results = request.dbsession.execute(query, {'ref': libelle}).first() return results +def get_codespostaux(request, codep): + query = "SELECT * FROM p_codespostaux WHERE code_postal LIKE :code;" + results = request.dbsession.execute(query, {'code': codep+"%"}).fetchall() + return results + diff --git a/mondumas/models/parametres.py b/mondumas/models/parametres.py index ff99c7e..ae8978a 100644 --- a/mondumas/models/parametres.py +++ b/mondumas/models/parametres.py @@ -44,6 +44,26 @@ def get_dossiers_byChantier(request, societe, name): results = request.dbsession.execute(query).fetchall() return results +def get_cabinets_by_id(request, code): + # lire les cabinets + if code == '0': + query = """SELECT * FROM P_CABINET WHERE afficher <> 0 ORDER BY nom;""" + results = request.dbsession.execute(query).fetchall() + else: + query = """SELECT * FROM P_CABINET WHERE code=:code;""" + results = request.dbsession.execute(query, {'code': code}).first() + return results + +def get_experts_by_id(request, code_cab, code_exp): + # lire les experts du cabinet + if code_exp == '0': + query = """SELECT * FROM P_EXPERTS WHERE code_cab=:code_cab AND en_activite <> 0 ORDER BY nom;""" + results = request.dbsession.execute(query, {'code_cab': code_cab}).fetchall() + else: + query = """SELECT * FROM P_EXPERTS WHERE code_cab=:code_cab AND code_exp=:code_exp;""" + results = request.dbsession.execute(query, {'code_cab': code_cab}, {'code_exp': code_exp}).first() + return results + def get_rdf_causes_by_id(request, code): # lire les rdf_causes if code == '0': diff --git a/mondumas/routes.py b/mondumas/routes.py index 3750cbe..57c9cfb 100644 --- a/mondumas/routes.py +++ b/mondumas/routes.py @@ -50,10 +50,13 @@ def includeme(config): config.add_route('parametres', '/parametres') config.add_route('article_edit', '/article_edit/{ref}') config.add_route('articles', '/articles') + config.add_route('cabinet_edit', '/cabinet_edit/{code}') + config.add_route('cabinets', '/cabinets') config.add_route('connecter_a', '/connecter_a/{login}') config.add_route('dashboard', '/dashboard') config.add_route('emails_msg', '/emails_msg/{nolig}') config.add_route('emails_sent', '/emails_sent') + config.add_route('expert_edit', '/expert_edit/{code_cab}/{code_exp}') config.add_route('infrastructure', '/infrastructure') config.add_route('last_emailing', '/last_emailing') config.add_route('orphans_de', '/orphans_de/{societe}') diff --git a/mondumas/templates/devis/devis_ligne.pt b/mondumas/templates/devis/devis_ligne.pt index 25450f7..b5e9e70 100644 --- a/mondumas/templates/devis/devis_ligne.pt +++ b/mondumas/templates/devis/devis_ligne.pt @@ -39,9 +39,9 @@
- +
- +
@@ -81,7 +81,7 @@

${ligne.ref}

- +

${ligne.libelle}

diff --git a/mondumas/templates/dossier/dossier_edit.pt b/mondumas/templates/dossier/dossier_edit.pt index ade2cac..45a07ed 100644 --- a/mondumas/templates/dossier/dossier_edit.pt +++ b/mondumas/templates/dossier/dossier_edit.pt @@ -32,7 +32,7 @@
- +
+
+ +
+ +
+
@@ -152,6 +161,8 @@

+
+ - +
diff --git a/mondumas/templates/dossier/dossier_lookup.pt b/mondumas/templates/dossier/dossier_lookup.pt index 870d1ee..14642fc 100644 --- a/mondumas/templates/dossier/dossier_lookup.pt +++ b/mondumas/templates/dossier/dossier_lookup.pt @@ -28,18 +28,16 @@
-
+
+
+ +
-
-
- -
-
@@ -101,15 +99,6 @@ }); }); - $('#site-search-form').formValidation({ - framework: 'bootstrap', - message: 'This value is not valid', - icon: { - valid: 'glyphicon glyphicon-ok', - invalid: 'glyphicon glyphicon-remove', - validating: 'glyphicon glyphicon-refresh' - }, - }); $('form input').on('keypress', function(e) { var code = e.keyCode || e.which; if (code === 13) { @@ -118,7 +107,6 @@ document.getElementById("submitButton").click(); } }); - diff --git a/mondumas/templates/dossier/dossier_view.pt b/mondumas/templates/dossier/dossier_view.pt index 8ae1c98..e8f8005 100644 --- a/mondumas/templates/dossier/dossier_view.pt +++ b/mondumas/templates/dossier/dossier_view.pt @@ -17,8 +17,9 @@ ${dossier.C_ADR}
${dossier.C_ADR2}
${dossier.C_CP} ${dossier.C_VILLE}
- ${dossier.C_EMAIL} - !!! Email vide !!! + ${dossier.C_EMAIL} + !!! Email vide !!!
+ ${dossier.C_EMAIL2} @@ -187,7 +188,8 @@

DEVIS - FACTURES

- + Nouveau devis

diff --git a/mondumas/templates/parametres/cabinet_edit.pt b/mondumas/templates/parametres/cabinet_edit.pt new file mode 100644 index 0000000..1afaa44 --- /dev/null +++ b/mondumas/templates/parametres/cabinet_edit.pt @@ -0,0 +1,184 @@ + +
+ +
+
+ + +
+
+ +

CABINET

+
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+ +
+
+ +
+ +
+

${cabinet.modif_le.strftime('%d-%m-%Y %H:%M')}

+
+
+
+
+ + Annuler + + +
+
+ +
+ + +
+

EXPERTS

+

+ + Nouvel expert +

+
+ + + + + + + + + + + + + + +
CodeNom expertTél 1Tél 2Email
${expert.CODE_EXP} + ${expert.NOM} + ${expert.TEL1}${expert.TEL2}${expert.email}
+
+ +
+
+
+ + + + + + + diff --git a/mondumas/templates/parametres/cabinets.pt b/mondumas/templates/parametres/cabinets.pt new file mode 100644 index 0000000..6623bc3 --- /dev/null +++ b/mondumas/templates/parametres/cabinets.pt @@ -0,0 +1,57 @@ + +
+ +

+ + Retour + + Nouvelle cause +

+ + + + + + + + + + + + + +
CodeNomTél. 1Tél. 2PortableVilleModif le
+ +
+
+ + + +
+
+ + diff --git a/mondumas/templates/parametres/expert_edit.pt b/mondumas/templates/parametres/expert_edit.pt new file mode 100644 index 0000000..988fa2a --- /dev/null +++ b/mondumas/templates/parametres/expert_edit.pt @@ -0,0 +1,116 @@ + +
+ +
+
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+ +
+
+ +
+ +
+

${expert.modif_le.strftime('%d-%m-%Y %H:%M')}

+
+
+
+
+ + Annuler + + +
+
+
+
+
+
+ + + + + +
+ diff --git a/mondumas/templates/parametres/parametres.pt b/mondumas/templates/parametres/parametres.pt index deae604..3755e3d 100644 --- a/mondumas/templates/parametres/parametres.pt +++ b/mondumas/templates/parametres/parametres.pt @@ -21,6 +21,13 @@

+
+
+ +

CABINETS EXP.

+
+
+
diff --git a/mondumas/views/default.py b/mondumas/views/default.py index f916b6f..84ab192 100644 --- a/mondumas/views/default.py +++ b/mondumas/views/default.py @@ -276,7 +276,7 @@ def ajax_codepostal(request): # lire les codes postaux commencant par items = get_codespostaux(request, recherche) - + # import pdb;pdb.set_trace() liste=[] for row in items: d = row.code_postal + " - " + row.libelle diff --git a/mondumas/views/devis.py b/mondumas/views/devis.py index 55fd9a5..97353cf 100644 --- a/mondumas/views/devis.py +++ b/mondumas/views/devis.py @@ -144,10 +144,9 @@ def devis_web(request): 'page-size': 'A4', 'margin-top': '1cm', 'margin-right': '1cm', - 'margin-bottom': '1cm', - 'margin-left': '1cm', + 'margin-bottom': '2cm', + 'margin-left': '1.5cm', 'footer-font-size':'7', - 'footer-center': soc.code_ape, 'footer-right': '[page] / [topage]', } @@ -336,9 +335,9 @@ def devis_preview(request): if ligne.ref == 'T1': dt_html += '

%s

' % ligne.libelle elif ligne.ref == 'T2': - dt_html += '

%s

' % ligne.libelle + dt_html += '

%s

' % ligne.libelle elif ligne.ref == 'TX': - dt_html += '

%s

' % ligne.libelle + dt_html += '

%s

' % ligne.libelle elif ligne.type_ligne == 'AR': dt_html += '%s' % ligne.ref dt_html += '

%s
' % ligne.libelle diff --git a/mondumas/views/dossier.py b/mondumas/views/dossier.py index c46ef16..f9888b6 100644 --- a/mondumas/views/dossier.py +++ b/mondumas/views/dossier.py @@ -134,6 +134,7 @@ def dossier_view(request): return { 'page_title': "Dossier : %s" % (nodossier), 'url': url, + 'logged_in': logged_in, 'nodossier': nodossier, 'dossier': dossier, 'details': details, @@ -606,10 +607,10 @@ def rdf_view(request): # import pdb;pdb.set_trace() options = { 'page-size': 'A4', - 'margin-top': '2cm', - 'margin-right': '2cm', - 'margin-bottom': '3cm', - 'margin-left': '2cm', + 'margin-top': '1cm', + 'margin-right': '1cm', + 'margin-bottom': '2cm', + 'margin-left': '1.5cm', 'footer-font-size':'7', 'footer-right': '[page] / [topage]', } diff --git a/mondumas/views/parametres.py b/mondumas/views/parametres.py index 734e263..ac8a0e6 100644 --- a/mondumas/views/parametres.py +++ b/mondumas/views/parametres.py @@ -279,7 +279,7 @@ def rdf_causes(request): 'dt_data': json.dumps(liste), } -@view_config(route_name='rdf_cause_edit', renderer='../templates/parametres/rdf_cause_edit.pt', permission='view') +@view_config(route_name='rdf_cause_edit', renderer='../templates/parametres/rdf_cause_edit.pt', permission='manage') def rdf_cause_edit(request): logged_in = request.authenticated_userid @@ -528,3 +528,135 @@ def article_edit(request): 'item': item, 'familles': familles, } + +@view_config(route_name='cabinets', renderer='../templates/parametres/cabinets.pt', permission='view') +def cabinets(request): + + # lire les CABINETS + items = get_cabinets_by_id(request, '0') + + # construire la liste + liste=[] + for item in items: + modif_le = item.modif_le.strftime('%d/%m/%Y') + d = (item.CODE, item.NOM, item.TEL1, item.TEL2, item.TELP, item.VILLE, modif_le) + liste.append(d) + + + return { + 'page_title': 'Liste des cabinets', + 'dt_data': json.dumps(liste), + } + +@view_config(route_name='cabinet_edit', renderer='../templates/parametres/cabinet_edit.pt', permission='view') +def cabinet_edit(request): + + logged_in = request.authenticated_userid + code = request.matchdict['code'] + url = request.route_url("cabinet_edit", code=code) + + message = '' + if code == '0': + # nouveau + cabinet = {} + cabinet['CODE'] = '' + cabinet['NOM'] = '' + cabinet['TEL1'] = '' + cabinet['TEL2'] = '' + cabinet['TELP'] = '' + cabinet['ADR'] = '' + cabinet['ADR2'] = '' + cabinet['CP'] = '' + cabinet['VILLE'] = '' + cabinet['afficher'] = 0 + cabinet['modif_le'] = datetime.now() + page_title= 'Nouveau cabinet' + else: + # lire cabinets + cabinet = get_cabinets_by_id(request, code) + if not cabinet: + request.session.flash(u"Cabinet non trouvé : %s" % code, 'warning') + return HTTPFound(location=request.route_url('cabinets')) + + page_title= "Modification de %s" % (cabinet.NOM) + code_postal = '%s - %s' % (cabinet.CP, cabinet.VILLE) + experts = get_experts_by_id(request, cabinet.CODE, '0') + + if 'form.submitted' in request.params: + code = request.params['code'] + libelle = request.params['libelle'] + + update_cabinet(request, code, libelle) + request.session.flash(u"Le cabinet a été mis à jour avec succès.", 'success') + return HTTPFound(location=request.route_url('cabinets')) + + if 'form.deleted' in request.params: + delete_cabinet(request, code) + request.session.flash(u"Le cabinet a été supprimé avec succès.", 'success') + return HTTPFound(location=request.route_url('cabinets')) + + return { + 'page_title': page_title, + 'url': url, + 'cabinet': cabinet, + 'experts': experts, + 'code_postal': code_postal, + 'message': message, + } + +@view_config(route_name='expert_edit', renderer='../templates/parametres/expert_edit.pt', permission='view') +def expert_edit(request): + + logged_in = request.authenticated_userid + code_cab = request.matchdict['code_cab'] + code_exp = request.matchdict['code_exp'] + url = request.route_url("expert_edit", code_cab=code_cab, code_exp=code_exp) + + message = '' + if code_exp == '0': + # nouveau + expert = {} + expert['CODE'] = '' + expert['NOM'] = '' + expert['TEL1'] = '' + expert['TEL2'] = '' + expert['TELP'] = '' + expert['ADR'] = '' + expert['ADR2'] = '' + expert['CP'] = '' + expert['VILLE'] = '' + expert['afficher'] = 0 + expert['modif_le'] = datetime.now() + page_title= 'Nouveau expert' + else: + # lire experts + expert = get_experts_by_id(request, code) + if not expert: + request.session.flash(u"expert non trouvé : %s" % code, 'warning') + return HTTPFound(location=request.route_url('experts')) + + page_title= "Modification de %s" % (expert.NOM) + code_postal = '%s - %s' % (expert.CP, expert.VILLE) + experts = get_experts_by_id(request, expert.CODE, '0') + + if 'form.submitted' in request.params: + code = request.params['code'] + libelle = request.params['libelle'] + + update_expert(request, code, libelle) + request.session.flash(u"Le expert a été mis à jour avec succès.", 'success') + return HTTPFound(location=request.route_url('experts')) + + if 'form.deleted' in request.params: + delete_expert(request, code) + request.session.flash(u"Le expert a été supprimé avec succès.", 'success') + return HTTPFound(location=request.route_url('experts')) + + return { + 'page_title': page_title, + 'url': url, + 'expert': expert, + 'experts': experts, + 'code_postal': code_postal, + 'message': message, + } diff --git a/production.ini b/production.ini index 9840028..0a3a884 100644 --- a/production.ini +++ b/production.ini @@ -20,16 +20,16 @@ pyramid.includes = sqlalchemy.url = mysql://phuoc:phuoc!@192.168.0.31/bddevfac?charset=utf8 sqlalchemy.pool_recycle = 3600 -mondumas.admin_email = sas.dumas@orange.fr +mondumas.admin_email = no-reply@entreprise-dumas.co mondumas.devfac_url = mondumas:static/DEVFAC/ mondumas.devfac_dir = /DEVFAC14/DOCS_ATTACHES # Mailer configuration -mail.host = smtp.orange.fr +mail.host = v5.alinto.netc mail.port = 465 -mail.username = sas.dumas@orange.fr -mail.password = sasdumas -mail.ssl = yes +mail.username = sasdumas@entreprise-dumas.com +mail.password = Sasdumas69 +mail.ssl = True [server:main] use = egg:waitress#main