From 8b50412a581108405410c3f4b3e4d1ad43282f55 Mon Sep 17 00:00:00 2001 From: Phuoc CAO Date: Sat, 22 Jul 2017 13:11:01 +0200 Subject: [PATCH] tested login.pt --- caotek_mesavoirs.egg-info/PKG-INFO | 2 +- caotek_mesavoirs.egg-info/SOURCES.txt | 5 +- caotek_mesavoirs/__init__.py | 2 +- caotek_mesavoirs/models/agenda.py | 121 --------- .../models/{default.py => members.py} | 34 +-- caotek_mesavoirs/panels.py | 15 +- caotek_mesavoirs/routes.py | 10 +- caotek_mesavoirs/security.py | 6 +- caotek_mesavoirs/templates/agenda/agenda.pt | 47 ---- .../templates/agenda/dossier_view.pt | 111 -------- caotek_mesavoirs/templates/agenda/planning.pt | 59 ---- caotek_mesavoirs/templates/agenda/rdv_edit.pt | 91 ------- caotek_mesavoirs/templates/layouts/pdf.pt | 22 -- .../templates/{ => members}/changer_mdp.pt | 0 .../templates/{ => members}/envoyer_mdp.pt | 0 .../templates/{ => members}/login.pt | 6 +- .../templates/{ => members}/redefinir_mdp.pt | 0 .../templates/{ => members}/user_edit.pt | 17 +- .../templates/{ => members}/users_list.pt | 16 +- .../templates/panels/dropdown_menu_panel.pt | 3 +- caotek_mesavoirs/templates/security.py | 11 - caotek_mesavoirs/views/agenda.py | 200 -------------- caotek_mesavoirs/views/default.py | 230 ---------------- caotek_mesavoirs/views/members.py | 251 ++++++++++++++++++ development.ini | 3 +- production.ini | 2 +- 26 files changed, 296 insertions(+), 968 deletions(-) delete mode 100644 caotek_mesavoirs/models/agenda.py rename caotek_mesavoirs/models/{default.py => members.py} (65%) delete mode 100644 caotek_mesavoirs/templates/agenda/agenda.pt delete mode 100644 caotek_mesavoirs/templates/agenda/dossier_view.pt delete mode 100644 caotek_mesavoirs/templates/agenda/planning.pt delete mode 100644 caotek_mesavoirs/templates/agenda/rdv_edit.pt delete mode 100644 caotek_mesavoirs/templates/layouts/pdf.pt rename caotek_mesavoirs/templates/{ => members}/changer_mdp.pt (100%) rename caotek_mesavoirs/templates/{ => members}/envoyer_mdp.pt (100%) rename caotek_mesavoirs/templates/{ => members}/login.pt (91%) rename caotek_mesavoirs/templates/{ => members}/redefinir_mdp.pt (100%) rename caotek_mesavoirs/templates/{ => members}/user_edit.pt (87%) rename caotek_mesavoirs/templates/{ => members}/users_list.pt (73%) delete mode 100644 caotek_mesavoirs/templates/security.py delete mode 100644 caotek_mesavoirs/views/agenda.py create mode 100644 caotek_mesavoirs/views/members.py diff --git a/caotek_mesavoirs.egg-info/PKG-INFO b/caotek_mesavoirs.egg-info/PKG-INFO index 41fc5b0..28eec5a 100644 --- a/caotek_mesavoirs.egg-info/PKG-INFO +++ b/caotek_mesavoirs.egg-info/PKG-INFO @@ -9,7 +9,7 @@ License: UNKNOWN Description: # README # - Application web permettant aux personnels de l'entreprise Dumas d'accéder aux dossiers des clients + Cette application permet le suivi des avoirs financiers : actions, ETF, obligations (assurances-vie), livrets, etc... diff --git a/caotek_mesavoirs.egg-info/SOURCES.txt b/caotek_mesavoirs.egg-info/SOURCES.txt index 3a2d0c4..df1d87b 100644 --- a/caotek_mesavoirs.egg-info/SOURCES.txt +++ b/caotek_mesavoirs.egg-info/SOURCES.txt @@ -17,10 +17,9 @@ caotek_mesavoirs.egg-info/not-zip-safe caotek_mesavoirs.egg-info/requires.txt caotek_mesavoirs.egg-info/top_level.txt caotek_mesavoirs/models/__init__.py -caotek_mesavoirs/models/agenda.py -caotek_mesavoirs/models/default.py +caotek_mesavoirs/models/members.py caotek_mesavoirs/scripts/__init__.py caotek_mesavoirs/views/__init__.py -caotek_mesavoirs/views/agenda.py caotek_mesavoirs/views/default.py +caotek_mesavoirs/views/members.py caotek_mesavoirs/views/notfound.py \ No newline at end of file diff --git a/caotek_mesavoirs/__init__.py b/caotek_mesavoirs/__init__.py index 3afa2af..f8ffa16 100644 --- a/caotek_mesavoirs/__init__.py +++ b/caotek_mesavoirs/__init__.py @@ -12,7 +12,7 @@ def main(global_config, **settings): """ This function returns a Pyramid WSGI application. """ # declarations - session_factory = UnencryptedCookieSessionFactoryConfig('Ty6sIUe9') + session_factory = UnencryptedCookieSessionFactoryConfig('Ty6sIUf1') authn_policy = AuthTktAuthenticationPolicy('Ty6sIUe8', callback=groupfinder, hashalg='sha512') authz_policy = ACLAuthorizationPolicy() mailer_factory_from_settings(settings) diff --git a/caotek_mesavoirs/models/agenda.py b/caotek_mesavoirs/models/agenda.py deleted file mode 100644 index d6be209..0000000 --- a/caotek_mesavoirs/models/agenda.py +++ /dev/null @@ -1,121 +0,0 @@ -# -*- coding: utf8 -*- -from sqlalchemy import text -from sqlalchemy.ext.declarative import declarative_base -from sqlalchemy.orm import ( - scoped_session, - sessionmaker, -) -from zope.sqlalchemy import ( - ZopeTransactionExtension, - mark_changed -) - -from datetime import * -import dateutil.relativedelta -import transaction - -def execute_query(request, query, params): - """Execute query and mark session as changed""" - request.dbsession.execute(query, params) - mark_changed(request.dbsession) - transaction.commit() - -def get_agendas(request): - """ lire la liste des personnes ayant un agenda""" - query = "CALL spGET_AGENDAS('T')" - results = request.dbsession.execute(query).fetchall() - return results - -def get_table(code): - if code == 'DD': - table = 'dem_devis' - elif code == 'OS': - table = 'ordres' - else: - table = 'rdvous' - return table - -def get_table_details(code): - if code == 'DD': - table = 'dem_lig' - elif code == 'OS': - table = 'ordres_lig' - else: - table = 'rdvous_lig' - return table - - -def get_dossier_by_no(request,nodossier): - societe = nodossier[0:2] - table = get_table(nodossier[3:5]) - no_id = nodossier[6:] - query = """ -SELECT d.*, c.*, a.NOM as nom_cabinet, e.NOM as nom_expert FROM %s d -INNER JOIN clients c ON d.societe = c.societe and d.cd_cli = c.cd_cli -INNER JOIN p_cabinet a ON d.societe = a.societe and d.cabinet = a.code -INNER JOIN p_experts e ON d.societe = e.societe and d.cabinet = e.code_cab and d.expert = e.code_exp -where d.societe = '%s' and d.no_id=%s;""" % (table, societe, no_id); - results = request.dbsession.execute(query).first() - return results - -def get_dossier_rdv_by_no(request,nodossier, nolig): - societe = nodossier[0:2] - table = get_table_details(nodossier[3:5]) - no_id = nodossier[6:] - if nolig == '0': - query = "SELECT * FROM %s where societe = '%s' and no_id=%s;" % (table, societe, no_id) - results = request.dbsession.execute(query).fetchall() - else: - query = "SELECT * FROM %s where societe = '%s' and no_id=%s and nolig=%s;" % (table, societe, no_id, nolig) - results = request.dbsession.execute(query).first() - return results - -def get_rendez_vous(request, itc): - d = datetime.now() - d = d - dateutil.relativedelta.relativedelta(months=3) - # début du mois M-2 - datedeb = d.strftime('%Y-%m-01') - - # lire les rdv de l'ITC - query = """ - (SELECT CONCAT(l.societe,"-OS-",l.no_id) as nodossier, l.rdv_debut, l.rdv_fin, e.c_nom FROM ordres_lig l - INNER JOIN ordres e ON l.societe=e.societe AND l.no_id=e.no_id - WHERE l.datevi >= :datedeb AND l.liste=:itc ORDER BY l.datevi, l.heurevi) - UNION - (SELECT CONCAT(l.societe,"-DD-",l.no_id) as nodossier, l.rdv_debut, l.rdv_fin, e.c_nom FROM dem_lig l - INNER JOIN dem_devis e ON l.societe=e.societe AND l.no_id=e.no_id - WHERE l.datevi >= :datedeb AND l.liste=:itc ORDER BY l.datevi, l.heurevi) - UNION - (SELECT CONCAT(l.societe,"-RD-",l.no_id) as nodossier, l.rdv_debut, l.rdv_fin, e.c_nom FROM rdvous_lig l - INNER JOIN rdvous e ON l.societe=e.societe AND l.no_id=e.no_id - WHERE l.datevi >= :datedeb AND l.liste=:itc ORDER BY l.datevi, l.heurevi); -""" - results = request.dbsession.execute(query, {'datedeb': datedeb, 'itc': itc}).fetchall() - return results - -def delete_rdv(request, nodossier, nolig): - societe = nodossier[0:2] - table = get_table_details(nodossier[3:5]) - no_id = nodossier[6:] - - query = "DELETE FROM %s where societe = '%s' and no_id=%s and nolig=%s;" % (table, societe, no_id, nolig) - execute_query(request, query, {}) - -def update_rdv(request, nodossier, nolig, comment, commentvi, date_rdv): - societe = nodossier[0:2] - table = get_table_details(nodossier[3:5]) - no_id = nodossier[6:] - - # formater les champs - ddate = datetime.strptime(date_rdv, '%d-%m-%Y %H:%M') - datevi = ddate.strftime("%Y-%m-%d") - heurevi = date_rdv[-5:] - auj = date.today().strftime("%Y-%m-%d") - - if nolig == '0': - query = "INSERT INTO %s SET societe='%s',no_id=%s,date='%s',datevi='%s',heurevi='%s',comment='%s',commentvi='%s'" % (table, societe, no_id,auj,datevi, heurevi, comment, commentvi) - else: - query = "UPDATE %s SET datevi='%s', heurevi='%s', comment='%s', commentvi='%s' where societe = '%s' and no_id=%s and nolig=%s;" % (table, datevi, heurevi, comment, commentvi, societe, no_id, nolig) - - execute_query(request, query, {}) - diff --git a/caotek_mesavoirs/models/default.py b/caotek_mesavoirs/models/members.py similarity index 65% rename from caotek_mesavoirs/models/default.py rename to caotek_mesavoirs/models/members.py index 37cdafb..98cf23e 100644 --- a/caotek_mesavoirs/models/default.py +++ b/caotek_mesavoirs/models/members.py @@ -20,18 +20,18 @@ def execute_query(request, query, params): transaction.commit() def get_member_by_mdp_oublie(request, lien): - query = "SELECT * FROM p_users WHERE mdp_oublie=:lien;" + query = "SELECT * FROM members WHERE mdp_oublie=:lien;" results = request.dbsession.execute(query, {'lien':lien}).first() return results -def get_member_by_id(request, mbr_id): - if mbr_id == '0': - query = "SELECT * FROM P_USERS ORDER BY cd_uti" +def get_member_by_email(request, email): + if email == '0': + query = "SELECT * FROM members ORDER BY nom" results = request.dbsession.execute(query).fetchall() else: # lire le membres par son identifianr - query = """SELECT * FROM p_users WHERE CD_UTI=:mbr_id;""" - results = request.dbsession.execute(query, {'mbr_id': mbr_id}).first() + query = """SELECT * FROM members WHERE email=:email;""" + results = request.dbsession.execute(query, {'email': email}).first() return results def update_membre_mdp_oublie(request, login): @@ -41,21 +41,21 @@ def update_membre_mdp_oublie(request, login): # get a UUID - URL safe, Base64 r_uuid = base64.urlsafe_b64encode(uuid.uuid4().bytes) r_uuid = r_uuid.replace('=', '') - query = "UPDATE p_users SET mdp_oublie=:r_uuid, mdp_oublie_date=now() WHERE CD_UTI=:login;" + query = "UPDATE members SET mdp_oublie=:r_uuid, mdp_oublie_date=now() WHERE email=:login;" execute_query(request, query, {'r_uuid':r_uuid, 'login':login}) return r_uuid def update_membre_mdp(request, login, password): """Update password for member login""" - query = "UPDATE p_users SET mdp = SHA1(:password), mdp_oublie=NULL, mdp_oublie_date=NULL WHERE cd_uti=:login;" + query = "UPDATE members SET mdp = SHA1(:password), mdp_oublie=NULL, mdp_oublie_date=NULL WHERE email=:login;" execute_query(request, query, {'login': login, 'password': password}) def update_last_connection(request, login): """Update last connection for login """ - query = "UPDATE p_users SET dern_cnx_le=NOW() WHERE cd_uti=:login;" + query = "UPDATE members SET dern_cnx_le=NOW() WHERE email=:login;" execute_query(request, query, {'login': login}) -def update_membre(request, cd_uti, new_values): +def update_membre(request, email, new_values): # formater les champs s = '' for param in new_values.keys(): @@ -70,14 +70,14 @@ def update_membre(request, cd_uti, new_values): else: s = "%s=:%s" % (param, param) - if cd_uti == '0': - query = "INSERT INTO p_users SET %s" % s + if email == '': + query = "INSERT INTO members SET %s" % s else: - new_values['cd_uti'] = cd_uti - query = "UPDATE p_users SET %s WHERE cd_uti = :cd_uti;" % s + new_values['email'] = email + query = "UPDATE members SET %s WHERE email = :email;" % s execute_query(request, query, new_values) -def delete_membre(request, cd_uti): - query = "DELETE FROM p_users WHERE cd_uti = :cd_uti ;" - execute_query(request, query, {'cd_uti': cd_uti}) +def delete_membre(request, email): + query = "DELETE FROM members WHERE email = :email ;" + execute_query(request, query, {'email': email}) diff --git a/caotek_mesavoirs/panels.py b/caotek_mesavoirs/panels.py index 7dd0bab..09a48d0 100644 --- a/caotek_mesavoirs/panels.py +++ b/caotek_mesavoirs/panels.py @@ -3,7 +3,7 @@ from pyramid_layout.panel import panel_config from pyramid.security import authenticated_userid from .security import groupfinder -from .models.default import get_member_by_id +from .models.members import get_member_by_email @panel_config(name='dropdown_menu_panel', renderer='templates/panels/dropdown_menu_panel.pt') def dropdown_menu_panel(context, request): @@ -11,22 +11,13 @@ def dropdown_menu_panel(context, request): if logged_in is None: return { 'logged_in': '' } else: - member = get_member_by_id(request, logged_in) + member = get_member_by_email(request, logged_in) fullname = member.nom - email = member.email - if member.access == 9: - logged_in_fonction = 'Administrateur' - elif member.access == 8: - logged_in_fonction = 'Comptabilité' - elif member.access == 5: - logged_in_fonction = 'Gestion' - else: - logged_in_fonction = 'Production' + logged_in_fonction = member.acces return { 'logged_in': logged_in, 'logged_in_name': fullname, - 'logged_in_email': email, 'logged_in_fonction': logged_in_fonction, } diff --git a/caotek_mesavoirs/routes.py b/caotek_mesavoirs/routes.py index ac49f9c..0a0abc3 100644 --- a/caotek_mesavoirs/routes.py +++ b/caotek_mesavoirs/routes.py @@ -1,15 +1,11 @@ def includeme(config): config.add_static_view('static', 'static', cache_max_age=3600) config.add_route('home', '/') - config.add_route('agenda', '/agenda') + # members config.add_route('changer_mdp', '/changer_mdp') - config.add_route('dossier_view', '/dossier_view/{nodossier}') - config.add_route('rdv_edit','/rdv_edit/{nodossier}/{nolig}') config.add_route('envoyer_mdp', '/envoyer_mdp') - config.add_route('user_edit', '/user_edit/{cd_uti}') - config.add_route('users_list', '/users_list') config.add_route('login', '/login') config.add_route('logout', '/logout') - config.add_route('planning', '/planning') config.add_route('redefinir_mdp', '/redefinir_mdp/{lien}') - + config.add_route('user_edit', '/user_edit/{email}') + config.add_route('users_list', '/users_list') diff --git a/caotek_mesavoirs/security.py b/caotek_mesavoirs/security.py index c27e419..1bc9057 100644 --- a/caotek_mesavoirs/security.py +++ b/caotek_mesavoirs/security.py @@ -1,11 +1,11 @@ -from .models.default import get_member_by_id +from .models.members import get_member_by_email def groupfinder(userid, request): - member = get_member_by_id(request, userid) + member = get_member_by_email(request, userid) if member: # Roles administrateur ? - if member.access == 9: + if member.acces == 'ADMIN': return ['group:administrators'] else: return [] # it means that userid is logged in (it returns None if userid isn't logged in) diff --git a/caotek_mesavoirs/templates/agenda/agenda.pt b/caotek_mesavoirs/templates/agenda/agenda.pt deleted file mode 100644 index 96e7d76..0000000 --- a/caotek_mesavoirs/templates/agenda/agenda.pt +++ /dev/null @@ -1,47 +0,0 @@ - -
-
- -
-
- -
-

- RDV Peinture RDV Menuiserie  - RDV Plomberiee RDV Polynet  -

-
-
-
-
-
-
-
-
-
-
- - - -
-
- - diff --git a/caotek_mesavoirs/templates/agenda/dossier_view.pt b/caotek_mesavoirs/templates/agenda/dossier_view.pt deleted file mode 100644 index c6eb274..0000000 --- a/caotek_mesavoirs/templates/agenda/dossier_view.pt +++ /dev/null @@ -1,111 +0,0 @@ - -
-
- -
- -
- - - - - - - - - - - - - - - - - -

CHANTIER

-

${dossier.C_QUALITE} ${dossier.C_NOM}

- ${dossier.C_ADR}
- ${dossier.C_ADR2}
- ${dossier.C_CP} ${dossier.C_VILLE}
-
- Etage - Code
- Tél. domicile - prof.
- Tél. mobile - fax -
- ${dossier.C_ETAGE} - ${dossier.C_CODE}
- ${dossier.C_TEL1} - ${dossier.C_TEL2}
- ${dossier.C_TELP} - ${dossier.C_FAX} -
- Cabinet
- Expert
- Référence expert -
- ${dossier.nom_cabinet}
- ${dossier.nom_expert}
- ${dossier.REF_EXPERT}
-
- Police
- Sinistre
- Votre référence
-
- ${dossier.NOPOL}
- ${dossier.NOSIN}
- ${dossier.VREF}
-
-
- - -
- - - - - - - - - -

CLIENT

-

${dossier.QUALITE} ${dossier.NOM}

- ${dossier.ADRESSE}
- ${dossier.ADRESSE2}
- ${dossier.CP} ${dossier.VILLE}
-
- Responsable
- Tél. 1 - 2
- Tél. mobile - fax -
- ${dossier.NOMRESP}
- ${dossier.TEL1} - ${dossier.TEL2}
- ${dossier.TELP} - ${dossier.FAX} -
-
-
- -

SUIVI

-

- Nouvelle ligne

- - - - - - - - - - - - - - -
DateVisiteActionAvec
${detail.DATE.strftime('%d/%m/%Y')} - - - - ${detail.rdv_debut.strftime('%d/%m/%Y %H:%M')} - - ${detail.COMMENT} ${detail.COMMENTVI}${detail.LISTE}
- -
-
diff --git a/caotek_mesavoirs/templates/agenda/planning.pt b/caotek_mesavoirs/templates/agenda/planning.pt deleted file mode 100644 index 17d72aa..0000000 --- a/caotek_mesavoirs/templates/agenda/planning.pt +++ /dev/null @@ -1,59 +0,0 @@ - -
-
- -
-
- -
-
- -
-
- -
-
-
-

- RDV Peinture RDV Menuiserie  - RDV Plomberiee RDV Polynet  -

-
-
-
-
-
-
-
-
-
-
- - - -
-
- - diff --git a/caotek_mesavoirs/templates/agenda/rdv_edit.pt b/caotek_mesavoirs/templates/agenda/rdv_edit.pt deleted file mode 100644 index 1634c77..0000000 --- a/caotek_mesavoirs/templates/agenda/rdv_edit.pt +++ /dev/null @@ -1,91 +0,0 @@ - -
- -
-
-
-
- -
- -
- - - - -
-
- -
- -
- -
-
-
- -
- -
-
- -
-
-
- - Annuler - - -
-
-
- -
-
-
-
-
- - - -
- diff --git a/caotek_mesavoirs/templates/layouts/pdf.pt b/caotek_mesavoirs/templates/layouts/pdf.pt deleted file mode 100644 index 9b7ee39..0000000 --- a/caotek_mesavoirs/templates/layouts/pdf.pt +++ /dev/null @@ -1,22 +0,0 @@ - - - - ${page_title} - - - - - -
- - - - - diff --git a/caotek_mesavoirs/templates/changer_mdp.pt b/caotek_mesavoirs/templates/members/changer_mdp.pt similarity index 100% rename from caotek_mesavoirs/templates/changer_mdp.pt rename to caotek_mesavoirs/templates/members/changer_mdp.pt diff --git a/caotek_mesavoirs/templates/envoyer_mdp.pt b/caotek_mesavoirs/templates/members/envoyer_mdp.pt similarity index 100% rename from caotek_mesavoirs/templates/envoyer_mdp.pt rename to caotek_mesavoirs/templates/members/envoyer_mdp.pt diff --git a/caotek_mesavoirs/templates/login.pt b/caotek_mesavoirs/templates/members/login.pt similarity index 91% rename from caotek_mesavoirs/templates/login.pt rename to caotek_mesavoirs/templates/members/login.pt index 006e247..b6f8519 100644 --- a/caotek_mesavoirs/templates/login.pt +++ b/caotek_mesavoirs/templates/members/login.pt @@ -16,9 +16,9 @@
+ placeholder="Email" + data-fv-emailaddress="true" + data-fv-emailaddress-message="L'adresse email n'est pas valide" />
diff --git a/caotek_mesavoirs/templates/redefinir_mdp.pt b/caotek_mesavoirs/templates/members/redefinir_mdp.pt similarity index 100% rename from caotek_mesavoirs/templates/redefinir_mdp.pt rename to caotek_mesavoirs/templates/members/redefinir_mdp.pt diff --git a/caotek_mesavoirs/templates/user_edit.pt b/caotek_mesavoirs/templates/members/user_edit.pt similarity index 87% rename from caotek_mesavoirs/templates/user_edit.pt rename to caotek_mesavoirs/templates/members/user_edit.pt index 2bebe89..e443da3 100644 --- a/caotek_mesavoirs/templates/user_edit.pt +++ b/caotek_mesavoirs/templates/members/user_edit.pt @@ -11,15 +11,12 @@ data-fv-icon-validating="glyphicon glyphicon-refresh">
- -
- + +
+
@@ -86,7 +83,7 @@
diff --git a/caotek_mesavoirs/templates/users_list.pt b/caotek_mesavoirs/templates/members/users_list.pt similarity index 73% rename from caotek_mesavoirs/templates/users_list.pt rename to caotek_mesavoirs/templates/members/users_list.pt index a3efcd2..b44b643 100644 --- a/caotek_mesavoirs/templates/users_list.pt +++ b/caotek_mesavoirs/templates/members/users_list.pt @@ -11,13 +11,11 @@ - - - +
Login Nom, Prénom EmailAgenda Rôle Dern cnxEtatExpire le
@@ -35,22 +33,12 @@ pageLength: 50, bLengthChange: false, columnDefs: [ - { "targets": 0, + { "targets": 1, "render": function (data, type, full, meta) { // ajouter un link vers le formulaire return '' + data + ''; }, }, - { "targets": 3, - "render": function (data, type, full, meta) { - if (data != 0) { - return ''; - } - else { - return ''; - } - }, - } ] }); diff --git a/caotek_mesavoirs/templates/panels/dropdown_menu_panel.pt b/caotek_mesavoirs/templates/panels/dropdown_menu_panel.pt index 1556813..5bb66ff 100644 --- a/caotek_mesavoirs/templates/panels/dropdown_menu_panel.pt +++ b/caotek_mesavoirs/templates/panels/dropdown_menu_panel.pt @@ -3,8 +3,7 @@