diff --git a/caotek_mesavoirs.egg-info/SOURCES.txt b/caotek_mesavoirs.egg-info/SOURCES.txt index df1d87b..c723683 100644 --- a/caotek_mesavoirs.egg-info/SOURCES.txt +++ b/caotek_mesavoirs.egg-info/SOURCES.txt @@ -17,6 +17,7 @@ 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/default.py caotek_mesavoirs/models/members.py caotek_mesavoirs/scripts/__init__.py caotek_mesavoirs/views/__init__.py diff --git a/caotek_mesavoirs/models/default.py b/caotek_mesavoirs/models/default.py index f66a630..6b57fd0 100644 --- a/caotek_mesavoirs/models/default.py +++ b/caotek_mesavoirs/models/default.py @@ -44,4 +44,45 @@ def delete_doc(request, doc_id): query = "delete from docs where doc_id = :doc_id;" results = request.dbsession.execute(query, {'doc_id': doc_id}) +def get_actifs(request, no_id): + if no_id == '0': + query = "SELECT * FROM actifs ORDER BY symbole" + results = request.dbsession.execute(query).fetchall() + else: + # lire le actif par son identifiant + query = """SELECT * FROM actifs WHERE no_id=:no_id;""" + results = request.dbsession.execute(query, {'no_id': no_id}).first() + return results +def get_categories(request, cat_id): + if cat_id == '0': + query = "SELECT * FROM categories ORDER BY categorie" + results = request.dbsession.execute(query).fetchall() + else: + # lire le actif par son identifiant + query = """SELECT * FROM categories WHERE cat_id=:cat_id;""" + results = request.dbsession.execute(query, {'cat_id': cat_id}).first() + return results + +def update_actif(request, no_id, new_values): + # formater les champs + s = '' + for param in new_values.keys(): + if param == 'symbole': + new_values['symbole'] = new_values['symbole'].upper() + + if s: + s += ",%s=:%s" % (param, param) + else: + s = "%s=:%s" % (param, param) + + if no_id == '0': + query = "INSERT INTO actifs SET %s" % s + else: + new_values['no_id'] = no_id + query = "UPDATE actifs SET %s WHERE no_id = :no_id;" % s + execute_query(request, query, new_values) + +def delete_actif(request, no_id): + query = "DELETE FROM actifs WHERE no_id = :no_id ;" + execute_query(request, query, {'no_id': no_id}) \ No newline at end of file diff --git a/caotek_mesavoirs/routes.py b/caotek_mesavoirs/routes.py index 3a6171b..e1c701b 100644 --- a/caotek_mesavoirs/routes.py +++ b/caotek_mesavoirs/routes.py @@ -4,6 +4,7 @@ def includeme(config): config.add_route('doc_edit', '/doc_edit/{doc_id}') config.add_route('doc_list', '/doc_list') config.add_route('doc_view', '/doc_view/{doc_id}') + config.add_route('actif_edit', '/actif_edit/{no_id}') # members config.add_route('changer_mdp', '/changer_mdp') config.add_route('envoyer_mdp', '/envoyer_mdp') diff --git a/caotek_mesavoirs/templates/404.pt b/caotek_mesavoirs/templates/404.pt index 2bdc080..6c68121 100644 --- a/caotek_mesavoirs/templates/404.pt +++ b/caotek_mesavoirs/templates/404.pt @@ -2,7 +2,7 @@
- +

404 Page non trouvée

diff --git a/caotek_mesavoirs/templates/actif_edit.pt b/caotek_mesavoirs/templates/actif_edit.pt new file mode 100644 index 0000000..ff7da1c --- /dev/null +++ b/caotek_mesavoirs/templates/actif_edit.pt @@ -0,0 +1,83 @@ + +
+ +
+
+
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+
+
+ +
+
+
+
+
+
+
+ Retour + + +
+
+
+
+ +
+
+
+ + + +
+ diff --git a/caotek_mesavoirs/templates/home.pt b/caotek_mesavoirs/templates/home.pt index 214a499..2b09d7f 100644 --- a/caotek_mesavoirs/templates/home.pt +++ b/caotek_mesavoirs/templates/home.pt @@ -1,11 +1,52 @@
-
+

+ + Nouvel actif +

+ + + + + + + + + + + + + + + +
NoSymboleLibelléCatégorieNombreCoursPRUValeurPlus-Value
+
-
-
-
+
+ +
diff --git a/caotek_mesavoirs/views/default.py b/caotek_mesavoirs/views/default.py index c5008d2..e5993a2 100644 --- a/caotek_mesavoirs/views/default.py +++ b/caotek_mesavoirs/views/default.py @@ -63,9 +63,19 @@ def home(request): request.session.flash(u"Utilisateur non trouvé : %s" % logged_in, 'warning') return HTTPFound(location=request.route_url('/home')) + # lire les actifs + items = get_actifs(request, '0') + + # construire la liste + liste=[] + for item in items: + d = (str(item.no_id), item.symbole, item.libelle, item.categorie, str(item.nombre), to_euro(item.cours), to_euro(item.pru), to_euro(item.valeur), to_euro(item.plus_value)) + liste.append(d) + return { 'page_title': u"%s %s" % (membre.prenom, membre.nom), - } + 'dt_data': json.dumps(liste), + } @view_config(route_name='doc_list', renderer='../templates/doc_list.pt', permission='view') def doc_list(request): @@ -103,7 +113,7 @@ def doc_edit(request): if len(intitule) > 0 and len(texte) > 0: update_doc(request, doc_id, intitule, texte, theme) - return HTTPFound(location=request.route_url('doc_list') + return HTTPFound(location=request.route_url('doc_list')) else: message = "Veuillez saisir un intitule et un texte." @@ -111,7 +121,7 @@ def doc_edit(request): if doc_id <> '0': delete_doc(request, doc_id) request.session.flash(u"<%s> est supprimée avec succès." % intitule, 'success') - return HTTPFound(location=request.route_url('doc_list') + return HTTPFound(location=request.route_url('doc_list')) return { 'page_title': titre, @@ -153,7 +163,7 @@ gestion.entreprise-dumas.com """ % (corps) - message = Message(subject=u"[Ent. Dumas] %s" % objet, + message = Message(subject=u"[Mes Avoirs] %s" % objet, sender=request.registry.settings['mondumas.admin_email'], body=body) message.add_recipient(destinataire) @@ -161,3 +171,50 @@ gestion.entreprise-dumas.com mailer.send_immediately(message) +@view_config(route_name='actif_edit', renderer='../templates/actif_edit.pt', permission='view') +def actif_edit(request): + no_id = request.matchdict['no_id'] + url = request.route_url('actif_edit', no_id=no_id) + message = '' + categories_list = get_categories(request,'0') + + if no_id == '0': + # nouveau + actif = {} + actif['no_id'] = '0' + actif['symbole'] = '' + actif['categorie'] = 'Actions Europe' + actif['nombre'] = '0' + actif['pru'] = '0' + page_title= 'Nouvel actif' + else: + # lire la fiche du actif + actif = get_actifs(request, no_id) + if not actif: + request.session.flash(u"Actif non trouvé : %s" % no_id, 'warning') + return HTTPFound(location=request.route_url('home')) + page_title= u"Fiche de %s" % (actif.symbole) + + if 'form.submitted' in request.params: + new_values = {} + for param, db_value in actif.items(): + if param in request.params and request.params[param] != db_value: + new_values[param] = request.params[param] + + if new_values: + update_actif(request, no_id, 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_actif(request, no_id) + 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, + 'actif': actif, + 'categories_list': categories_list, + 'message': message, + } \ No newline at end of file diff --git a/development.ini b/development.ini index 9194a8d..7179f37 100644 --- a/development.ini +++ b/development.ini @@ -18,7 +18,7 @@ pyramid.includes = pyramid_mailer pyramid_tm -sqlalchemy.url = mysql://root:phuoc@localhost/bd_mesavoirs?charset=utf8 +sqlalchemy.url = mysql://root:phuoc@192.168.1.98/bd_mesavoirs?charset=utf8 caotek_mesavoirs.admin_email = ctphuoc@bbox.fr