From e8542c9b66c7be6751a1261f50e022c64532806f Mon Sep 17 00:00:00 2001 From: Phuoc CAO Date: Sat, 11 Sep 2021 09:40:52 +0200 Subject: [PATCH] refonte : theme->topic et home.pt --- caotek_mesavoirs/layout.py | 12 ++--- caotek_mesavoirs/models/contents.py | 22 ++++----- caotek_mesavoirs/routes.py | 4 +- .../templates/contents/doc_edit.pt | 2 +- .../templates/contents/doc_view.pt | 2 +- caotek_mesavoirs/templates/contents/folder.pt | 2 +- caotek_mesavoirs/templates/global_layout.pt | 22 +++------ caotek_mesavoirs/views/contents.py | 30 ++++++------ caotek_mesavoirs/views/default.py | 4 +- gmail_nb.py | 27 +++++++--- gmail_purge.py | 49 ++++++++++++++----- 11 files changed, 100 insertions(+), 76 deletions(-) diff --git a/caotek_mesavoirs/layout.py b/caotek_mesavoirs/layout.py index 761365b..69aa715 100644 --- a/caotek_mesavoirs/layout.py +++ b/caotek_mesavoirs/layout.py @@ -8,7 +8,7 @@ from .views.default import ( to_decimal, ) from .models.contents import ( - get_docs_themes, + get_d_topics, ) @layout_config(template='templates/global_layout.pt') @@ -46,12 +46,12 @@ class GlobalLayout(object): return is_admin - def get_themes(self): - # lire toutes les themes + def get_topics(self): + # lire toutes les topics logged_in = self.request.authenticated_userid - themes = get_docs_themes(self.request, logged_in) + topics = get_d_topics(self.request, logged_in) dossiers = [] - for theme in themes: - dossiers.append(theme.theme) + for topic in topics: + dossiers.append(topic.topic) return dossiers diff --git a/caotek_mesavoirs/models/contents.py b/caotek_mesavoirs/models/contents.py index f2da8f3..35b1dcb 100644 --- a/caotek_mesavoirs/models/contents.py +++ b/caotek_mesavoirs/models/contents.py @@ -19,36 +19,36 @@ from .default import ( def get_docs(request, doc_id): """Lire les doc""" if doc_id == 0: - query = "SELECT * FROM docs ORDER BY theme, intitule;" + query = "SELECT * FROM docs ORDER BY topic, intitule;" results = request.dbsession.execute(query).fetchall() else: query = "SELECT * FROM docs where doc_id = :doc_id;" results = request.dbsession.execute(query, {'doc_id': doc_id}).first() return results -def get_docs_bytheme(request, theme, logged_in): +def get_docs_bytopic(request, topic, logged_in): """Lire les doc""" if logged_in == None: anon = "AND statut = 'public' " else: anon = "" - if theme == 'BLOG': - query = "SELECT * FROM docs WHERE theme=:theme %s ORDER BY cree_le DESC LIMIT 10;" % anon + if topic == 'BLOG': + query = "SELECT * FROM docs WHERE topic=:topic %s ORDER BY cree_le DESC LIMIT 10;" % anon else: - query = "SELECT * FROM docs WHERE theme=:theme ORDER BY intitule;" - results = request.dbsession.execute(query, {'theme': theme}).fetchall() + query = "SELECT * FROM docs WHERE topic=:topic ORDER BY intitule;" + results = request.dbsession.execute(query, {'topic': topic}).fetchall() return results -def get_docs_tags(request): - query = "SELECT * FROM docs_tags;" +def get_d_tags(request): + query = "SELECT * FROM d_tags;" results = request.dbsession.execute(query).fetchall() return results -def get_docs_themes(request, logged_in): +def get_d_topics(request, logged_in): if logged_in == None: - query = "SELECT * FROM docs_themes WHERE statut = 'public';" + query = "SELECT * FROM d_topics WHERE statut = 'public';" else: - query = "SELECT * FROM docs_themes;" + query = "SELECT * FROM d_topics;" results = request.dbsession.execute(query).fetchall() return results diff --git a/caotek_mesavoirs/routes.py b/caotek_mesavoirs/routes.py index 10f28ff..db90740 100644 --- a/caotek_mesavoirs/routes.py +++ b/caotek_mesavoirs/routes.py @@ -3,8 +3,8 @@ def includeme(config): config.add_route('home', '/') config.add_route('apropos', 'apropos') # contents - config.add_route('folder', '/folder/{theme}') - config.add_route('doc_edit', '/doc_edit/{theme}/{doc_id}') + config.add_route('folder', '/folder/{topic}') + config.add_route('doc_edit', '/doc_edit/{topic}/{doc_id}') config.add_route('doc_view', '/doc_view/{doc_id}') config.add_route('doc_search', '/doc_search') # portfolio diff --git a/caotek_mesavoirs/templates/contents/doc_edit.pt b/caotek_mesavoirs/templates/contents/doc_edit.pt index fac59cd..055e334 100644 --- a/caotek_mesavoirs/templates/contents/doc_edit.pt +++ b/caotek_mesavoirs/templates/contents/doc_edit.pt @@ -53,7 +53,7 @@
-

${doc.theme}

+

${doc.topic}

diff --git a/caotek_mesavoirs/templates/contents/doc_view.pt b/caotek_mesavoirs/templates/contents/doc_view.pt index 40681fe..5241455 100644 --- a/caotek_mesavoirs/templates/contents/doc_view.pt +++ b/caotek_mesavoirs/templates/contents/doc_view.pt @@ -3,7 +3,7 @@

[ Fermer ]  - [ Modifier ] + [ Modifier ]


diff --git a/caotek_mesavoirs/templates/contents/folder.pt b/caotek_mesavoirs/templates/contents/folder.pt index aee78d5..ca3c8ea 100644 --- a/caotek_mesavoirs/templates/contents/folder.pt +++ b/caotek_mesavoirs/templates/contents/folder.pt @@ -3,7 +3,7 @@

[ Retour ]  - [ Créer ] + [ Créer ]

diff --git a/caotek_mesavoirs/templates/global_layout.pt b/caotek_mesavoirs/templates/global_layout.pt index ffcbe2f..0837cfb 100644 --- a/caotek_mesavoirs/templates/global_layout.pt +++ b/caotek_mesavoirs/templates/global_layout.pt @@ -54,7 +54,10 @@ @@ -66,7 +69,7 @@
- + ${item} 
@@ -93,20 +96,7 @@ diff --git a/caotek_mesavoirs/views/contents.py b/caotek_mesavoirs/views/contents.py index f43755e..ea368a3 100644 --- a/caotek_mesavoirs/views/contents.py +++ b/caotek_mesavoirs/views/contents.py @@ -19,23 +19,23 @@ def isAnonymous(request): @view_config(route_name='folder', renderer='../templates/contents/folder.pt') def folder(request): - theme = request.matchdict['theme'] + topic = request.matchdict['topic'] logged_in = request.authenticated_userid - # lire toutes les docs du theme - docs = get_docs_bytheme(request, theme, logged_in) + # lire toutes les docs du topic + docs = get_docs_bytopic(request, topic, logged_in) return { - 'page_title': "Contenu de %s" % theme.upper(), + 'page_title': "Contenu de %s" % topic.upper(), 'docs': docs, - 'theme': theme, + 'topic': topic, } @view_config(route_name='doc_edit', renderer='../templates/contents/doc_edit.pt', permission='view') def doc_edit(request): - theme = request.matchdict['theme'] + topic = request.matchdict['topic'] doc_id = request.matchdict['doc_id'] - url = request.route_url('doc_edit', theme=theme, doc_id=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 @@ -43,7 +43,7 @@ def doc_edit(request): return HTTPFound(location=request.route_url('home')) message = "" - tags = get_docs_tags(request) + tags = get_d_tags(request) statuts = ['private', 'public'] if doc_id == '0': @@ -52,7 +52,7 @@ def doc_edit(request): doc = {} doc['intitule'] = '' doc['texte'] = '' - doc['theme'] = theme + doc['topic'] = topic doc['tag1'] = '' doc['tag2'] = '' doc['statut'] = 'private' @@ -67,18 +67,18 @@ def doc_edit(request): new_values[param] = request.params[param] if new_values: - new_values['theme'] = theme + 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',theme=theme)) + 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',theme=theme)) + return HTTPFound(location=request.route_url('folder',topic=topic)) return { 'page_title': titre, @@ -86,7 +86,7 @@ def doc_edit(request): 'message': message, 'doc_id': doc_id, 'doc': doc, - 'theme': theme, + 'topic': topic, 'tags': tags, 'statuts': statuts, } @@ -125,7 +125,7 @@ def doc_view(request): # mouvements portfolio, retour vers portfolio url_retour = request.route_url('portfolio') else: - url_retour = request.route_url('folder',theme=doc.theme) + url_retour = request.route_url('folder',topic=doc.topic) tags = doc.tag1 if doc.tag2: tags += ', ' + doc.tag2 @@ -143,7 +143,7 @@ def doc_view(request): 'doc_id': doc_id, 'doc': doc, 'texte': texte, - 'theme': doc.theme, + 'topic': doc.topic, 'tags': tags, 'url_retour':url_retour, } diff --git a/caotek_mesavoirs/views/default.py b/caotek_mesavoirs/views/default.py index 403360e..686d8cc 100644 --- a/caotek_mesavoirs/views/default.py +++ b/caotek_mesavoirs/views/default.py @@ -20,7 +20,7 @@ from ..models.members import ( get_member_by_email ) from ..models.contents import ( - get_docs_bytheme + get_docs_bytopic ) # import datetime @@ -72,7 +72,7 @@ def home(request): id_photo = member.photo_instagram # lire toutes les docs - items = get_docs_bytheme(request, 'BLOG', logged_in) + items = get_docs_bytopic(request, 'BLOG', logged_in) return { 'page_title': "Méditer, c’est ouvrir la cage", diff --git a/gmail_nb.py b/gmail_nb.py index 7377dfe..c49e81a 100644 --- a/gmail_nb.py +++ b/gmail_nb.py @@ -3,21 +3,32 @@ # Compter les emails BEFORE DATE # +from pprint import pprint +import datetime import imaplib -# connecter au serveur IMAP de la societe -mbx_name = 'ctphuoc@gmail.com' -mbx_pwd = 'ztwciswzhxxogcfv' +# connecter au serveur IMAP conn = imaplib.IMAP4_SSL('imap.gmail.com') +conn.login('ctphuoc@gmail.com', 'ztwciswzhxxogcfv') -conn.login(mbx_name, mbx_pwd) -# select INBOX -conn.select('INBOX') -rv, data = conn.search(None, 'BEFORE "01-FEB-2006"') +# lister les dossiers +typ, data = conn.list() +print('Liste des dossiers :') +pprint(data) + +# delete mails before 15 years +before_date = (datetime.date.today() - datetime.timedelta(10)).strftime("%d-%b-%Y") +print("Supprimer emails avant " + before_date) + +# select ALL +conn.select('[Gmail]/Corbeille') + +rv, data = conn.search(None, '(BEFORE {0})'.format(before_date)) nb_mails = str(len(data[0])) +print("Nombre de emails : " + nb_mails) + # deconnexion du serveur conn.close() conn.logout() -print("Nombre de emails : " + nb_mails) \ No newline at end of file diff --git a/gmail_purge.py b/gmail_purge.py index 83388b8..baaba77 100644 --- a/gmail_purge.py +++ b/gmail_purge.py @@ -3,25 +3,48 @@ # Compter les emails BEFORE DATE # +from pprint import pprint +import datetime import imaplib -# connecter au serveur IMAP de la societe -mbx_name = 'ctphuoc@gmail.com' -mbx_pwd = 'ztwciswzhxxogcfv' +# connecter au serveur IMAP conn = imaplib.IMAP4_SSL('imap.gmail.com') +conn.login('ctphuoc@gmail.com', 'ztwciswzhxxogcfv') -conn.login(mbx_name, mbx_pwd) -# select INBOX +# lister les dossiers +typ, data = conn.list() +print('Liste des dossiers :') +pprint(data) + +# delete mails before 14 years +before_date = (datetime.date.today() - datetime.timedelta(5110)).strftime("%d-%b-%Y") +print("Delete emails before " + before_date) + +# select ALL conn.select('INBOX') -rv, data = conn.search(None, 'BEFORE "01-FEB-2006"') -messages = data[0].split(b' ') -for mail in messages: - # mark the mail as deleted - conn.store(mail, "+FLAGS", "\\Deleted") - print(str(mail) + " supprimé") -# delete all the selected messages -conn.expunge() +rv, data = conn.search(None, '(BEFORE {0})'.format(before_date)) +nb_mails = str(len(data[0])) +print(nb_mails + " emails founded") + +resp = input ("Enter 'c' to continue, or 'a' to abort : ") +if resp=="c": + print("Moving " + nb_mails + " emails to Trash") + messages = data[0].split(b' ') + for mail in messages: + # move to trash + conn.store(mail, '+X-GM-LABELS', '\\Trash') + + #This block empties trash, remove if you want to keep, Gmail auto purges trash after 30 days. + print("Emptying Trash & Expunge...") + conn.select('[Gmail]/Corbeille') + conn.store("1:*", '+FLAGS', '\\Deleted') + # delete all the selected messages + conn.expunge() + print("Script completed") +else: + print("Script aborted") + # deconnexion du serveur conn.close() conn.logout()