From dd8cdb7564d961c8d73ff09f4414534fdac16157 Mon Sep 17 00:00:00 2001 From: Phuoc CAO Date: Mon, 13 Sep 2021 15:04:39 +0200 Subject: [PATCH] refonte de folder.pt et docs_search.pt --- .vscode/launch.json | 22 ++ .../templates/contents/doc_edit.pt | 10 - .../templates/contents/doc_search.pt | 43 ++- caotek_mesavoirs/templates/contents/folder.pt | 42 ++- caotek_mesavoirs/views/contents.py | 353 ++++++++++-------- 5 files changed, 277 insertions(+), 193 deletions(-) create mode 100644 .vscode/launch.json diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..a1a03c9 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,22 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "type": "python", + "request": "launch", + "name": "Pserve", + "python": "C:/pyramid10/Scripts/python.exe", + "program": "/pyramid10/Scripts/pserve.exe", + "args": [ + "-v", + "development.ini", + "--reload" + ], + "console": "integratedTerminal", + "pyramid": true, + } + ] +} \ No newline at end of file diff --git a/caotek_mesavoirs/templates/contents/doc_edit.pt b/caotek_mesavoirs/templates/contents/doc_edit.pt index 45e1ee8..79223a5 100644 --- a/caotek_mesavoirs/templates/contents/doc_edit.pt +++ b/caotek_mesavoirs/templates/contents/doc_edit.pt @@ -24,16 +24,6 @@ -
- -
- -
-
diff --git a/caotek_mesavoirs/templates/contents/doc_search.pt b/caotek_mesavoirs/templates/contents/doc_search.pt index a98bd82..652ad9b 100644 --- a/caotek_mesavoirs/templates/contents/doc_search.pt +++ b/caotek_mesavoirs/templates/contents/doc_search.pt @@ -20,24 +20,28 @@
-
- - - - - - - +
+
${ligne.intitule}${ligne.tag1}${ligne.cree_le.strftime("%d-%m-%Y")}${ligne.modif_le.strftime("%d-%m-%Y")}
+ + + + + + + +
TitreTagsDate
-
-

Aucun document ne correspond à la recherche

+
+

Aucun élément trouvé pour ce critère



- +
diff --git a/caotek_mesavoirs/views/contents.py b/caotek_mesavoirs/views/contents.py index f1f15dd..4b2a45b 100644 --- a/caotek_mesavoirs/views/contents.py +++ b/caotek_mesavoirs/views/contents.py @@ -1,164 +1,189 @@ -# -*- coding: utf8 -*- -from pyramid.response import Response -from pyramid.renderers import render, get_renderer -from pyramid.view import ( - view_config, - forbidden_view_config, -) -from pyramid.httpexceptions import ( - HTTPFound, - HTTPNotFound, - HTTPForbidden, -) - -from ..models.contents import * - -def isAnonymous(request): - logged_in = request.authenticated_userid - return logged_in is None - -@view_config(route_name='folder', renderer='../templates/contents/folder.pt') -def folder(request): - topic = request.matchdict['topic'] - logged_in = request.authenticated_userid - - # lire toutes les docs du topic - docs = get_docs_bytopic(request, topic, logged_in) - - return { - 'page_title': "Contenu de %s" % topic.upper(), - 'docs': docs, - 'topic': topic, - } - -@view_config(route_name='doc_edit', renderer='../templates/contents/doc_edit.pt', permission='view') -def doc_edit(request): - topic = request.matchdict['topic'] - doc_id = request.matchdict['doc_id'] - url = request.route_url('doc_edit', topic=topic, doc_id=doc_id) - logged_in = request.authenticated_userid - - # si anonyme, interdire de modifier les docs - if isAnonymous(request): - return HTTPFound(location=request.route_url('home')) - - message = "" - - statuts = ['private', 'public'] - - if doc_id == '0': - titre = "Nouveau doc" - # nouveau - doc = {} - doc['intitule'] = '' - doc['texte'] = '' - doc['topic'] = topic - doc['statut'] = 'private' - tags = {} - else: - titre = "Modifier : %s" % str(doc_id) - doc = get_docs(request, doc_id) - tags = get_docs_tags(request, doc.doc_id) - - d_tags = get_d_tags_manquant(request, topic, doc_id) - - if 'form.submitted' in request.params: - new_values = {} - for param, db_value in doc.items(): - if param in request.params and request.params[param] != db_value: - new_values[param] = request.params[param] - - if new_values: - new_values['topic'] = topic - update_doc(request, doc_id, new_values) - if doc_id != '0': - return HTTPFound(location=request.route_url('doc_view', doc_id=doc_id)) - else: - return HTTPFound(location=request.route_url('folder',topic=topic)) - - if 'form.deleted' in request.params: - if doc_id != '0': - delete_doc(request, doc_id) - request.session.flash(u"<%s> est supprimée avec succès." % doc.intitule, 'success') - return HTTPFound(location=request.route_url('folder',topic=topic)) - - return { - 'page_title': titre, - 'url': url, - 'message': message, - 'doc_id': doc_id, - 'doc': doc, - 'topic': topic, - 'tags': tags, - 'd_tags': d_tags, - 'statuts': statuts, - } - -@view_config(route_name='doc_search', renderer='../templates/contents/doc_search.pt') -def doc_search(request): - - logged_in = request.authenticated_userid - critere = '' - docs = [] - - if 'form.submitted' in request.params: - critere = request.params['critere'] - # si afficher tous les fiches ? - docs = get_docs_bycritere(request, critere, logged_in) - - return { - 'page_title': "Rechercher", - 'docs': docs, - 'critere': critere, - } - -@view_config(route_name='doc_view', renderer='../templates/contents/doc_view.pt') -def doc_view(request): - - doc_id = request.matchdict['doc_id'] - - # lire le document - doc = get_docs(request, doc_id) - - # si anonyme, interdire de voir les docs privés - if isAnonymous(request) and doc.statut == 'private': - return HTTPFound(location=request.route_url('home')) - - if doc_id == '2': - # mouvements portfolio, retour vers portfolio - url_retour = request.route_url('portfolio') - else: - url_retour = request.route_url('folder',topic=doc.topic) - - tags = get_docs_tags(request, doc.doc_id) - - # insèrer le path de static/img - texte = doc.texte.replace('static/img/', "%s/static/img/" % request.application_url) - - # convertir mardown en HTML - from markdown2 import Markdown - markdowner = Markdown() - texte = markdowner.convert(texte) - - return { - 'page_title': doc.intitule, - 'doc_id': doc_id, - 'doc': doc, - 'texte': texte, - 'topic': doc.topic, - 'tags': tags, - 'url_retour':url_retour, - } - -@view_config(route_name='tag_change') -def tag_change(request): - - logged_in = request.authenticated_userid - action = request.matchdict['action'] - topic = request.matchdict['topic'] - doc_id = request.matchdict['doc_id'] - tag = request.matchdict['tag'] - - change_doc_tag(request, action, doc_id, tag) - - return HTTPFound(location=request.route_url('doc_edit', topic=topic, doc_id=doc_id)) +# -*- coding: utf8 -*- +from pyramid.response import Response +from pyramid.renderers import render, get_renderer +from pyramid.view import ( + view_config, + forbidden_view_config, +) +from pyramid.httpexceptions import ( + HTTPFound, + HTTPNotFound, + HTTPForbidden, +) +import json + +from ..models.contents import * + +def isAnonymous(request): + logged_in = request.authenticated_userid + return logged_in is None + +@view_config(route_name='folder', renderer='../templates/contents/folder.pt') +def folder(request): + topic = request.matchdict['topic'] + logged_in = request.authenticated_userid + + # lire toutes les docs du topic + items = get_docs_bytopic(request, topic, logged_in) + + # construire la liste + liste=[] + for item in items: + # lire le(s) tag(s) du documents + tags = get_docs_tags(request, item.doc_id) + tags_list = '' + for tag in tags: + tags_list += tag.tag + ', ' + + cree_le = item.cree_le.strftime('%d/%m/%Y') + d = (item.intitule, tags_list, cree_le, item.doc_id) + liste.append(d) + + return { + 'page_title': "Contenu de %s" % topic.upper(), + 'topic': topic, + 'dt_data': json.dumps(liste), + } + +@view_config(route_name='doc_edit', renderer='../templates/contents/doc_edit.pt', permission='view') +def doc_edit(request): + topic = request.matchdict['topic'] + doc_id = request.matchdict['doc_id'] + url = request.route_url('doc_edit', topic=topic, doc_id=doc_id) + logged_in = request.authenticated_userid + + # si anonyme, interdire de modifier les docs + if isAnonymous(request): + return HTTPFound(location=request.route_url('home')) + + message = "" + + statuts = ['private', 'public'] + + if doc_id == '0': + titre = "Nouveau doc" + # nouveau + doc = {} + doc['intitule'] = '' + doc['texte'] = '' + doc['topic'] = topic + doc['statut'] = 'private' + tags = {} + else: + titre = "Modifier : %s" % str(doc_id) + doc = get_docs(request, doc_id) + tags = get_docs_tags(request, doc.doc_id) + + d_tags = get_d_tags_manquant(request, topic, doc_id) + + if 'form.submitted' in request.params: + new_values = {} + for param, db_value in doc.items(): + if param in request.params and request.params[param] != db_value: + new_values[param] = request.params[param] + + if new_values: + new_values['topic'] = topic + update_doc(request, doc_id, new_values) + if doc_id != '0': + return HTTPFound(location=request.route_url('doc_view', doc_id=doc_id)) + else: + return HTTPFound(location=request.route_url('folder',topic=topic)) + + if 'form.deleted' in request.params: + if doc_id != '0': + delete_doc(request, doc_id) + request.session.flash(u"<%s> est supprimée avec succès." % doc.intitule, 'success') + return HTTPFound(location=request.route_url('folder',topic=topic)) + + return { + 'page_title': titre, + 'url': url, + 'message': message, + 'doc_id': doc_id, + 'doc': doc, + 'topic': topic, + 'tags': tags, + 'd_tags': d_tags, + 'statuts': statuts, + } + +@view_config(route_name='doc_search', renderer='../templates/contents/doc_search.pt') +def doc_search(request): + + logged_in = request.authenticated_userid + critere = '' + liste=[] + + if 'form.submitted' in request.params: + critere = request.params['critere'] + # si afficher tous les fiches ? + items = get_docs_bycritere(request, critere, logged_in) + + # construire la liste + for item in items: + # lire le(s) tag(s) du documents + tags = get_docs_tags(request, item.doc_id) + tags_list = '' + for tag in tags: + tags_list += tag.tag + ', ' + + cree_le = item.cree_le.strftime('%d/%m/%Y') + d = (item.intitule, tags_list, cree_le, item.doc_id) + liste.append(d) + + return { + 'page_title': "Rechercher", + 'dt_data': json.dumps(liste), 'critere': critere, + } + +@view_config(route_name='doc_view', renderer='../templates/contents/doc_view.pt') +def doc_view(request): + + doc_id = request.matchdict['doc_id'] + + # lire le document + doc = get_docs(request, doc_id) + + # si anonyme, interdire de voir les docs privés + if isAnonymous(request) and doc.statut == 'private': + return HTTPFound(location=request.route_url('home')) + + if doc_id == '2': + # mouvements portfolio, retour vers portfolio + url_retour = request.route_url('portfolio') + else: + url_retour = request.route_url('folder',topic=doc.topic) + + tags = get_docs_tags(request, doc.doc_id) + + # insèrer le path de static/img + texte = doc.texte.replace('static/img/', "%s/static/img/" % request.application_url) + + # convertir mardown en HTML + from markdown2 import Markdown + markdowner = Markdown() + texte = markdowner.convert(texte) + + return { + 'page_title': doc.intitule, + 'doc_id': doc_id, + 'doc': doc, + 'texte': texte, + 'topic': doc.topic, + 'tags': tags, + 'url_retour':url_retour, + } + +@view_config(route_name='tag_change') +def tag_change(request): + + logged_in = request.authenticated_userid + action = request.matchdict['action'] + topic = request.matchdict['topic'] + doc_id = request.matchdict['doc_id'] + tag = request.matchdict['tag'] + + change_doc_tag(request, action, doc_id, tag) + + return HTTPFound(location=request.route_url('doc_edit', topic=topic, doc_id=doc_id))