refonte : theme->topic et home.pt

This commit is contained in:
2021-09-11 09:40:52 +02:00
parent d24becec1c
commit e8542c9b66
11 changed files with 100 additions and 76 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -53,7 +53,7 @@
<div class="form-group">
<label class="control-label col-xs-2">Dossier</label>
<div class="col-xs-7">
<p class="form-control-static">${doc.theme}</p>
<p class="form-control-static">${doc.topic}</p>
</div>
</div>
<div class="form-group">

View File

@@ -3,7 +3,7 @@
<p>
<a href="${url_retour}">[&nbsp;Fermer&nbsp;]</a>&nbsp;
<a href="${request.application_url}/doc_edit/${theme}/${doc_id}" tal:condition="not layout.isAnonymous()">[&nbsp;Modifier&nbsp;]</a>
<a href="${request.application_url}/doc_edit/${topic}/${doc_id}" tal:condition="not layout.isAnonymous()">[&nbsp;Modifier&nbsp;]</a>
</p>
<hr>
<div tal:replace="structure texte">

View File

@@ -3,7 +3,7 @@
<p>
<a href="${request.application_url}">[&nbsp;Retour&nbsp;]</a>&nbsp;
<a href="${request.application_url}/doc_edit/${theme}/0" tal:condition="not layout.isAnonymous()">[&nbsp;Créer&nbsp;]</a>
<a href="${request.application_url}/doc_edit/${topic}/0" tal:condition="not layout.isAnonymous()">[&nbsp;Créer&nbsp;]</a>
</p>
<div class="row">
<table class="table">

View File

@@ -54,7 +54,10 @@
</div>
<div class="collapse navbar-collapse" id="myNavbar">
<ul class="nav navbar-nav navbar-right">
<!-- <li><a href="${request.application_url}/histo_list">HISTORIQUE</a></li> -->
<!-- si anonyme, lien pour se connecter -->
<li tal:condition="layout.isAnonymous()">
<a href="${request.application_url}/login"><span class="glyphicon glyphicon-user"></span></a></li>
<li><a href="${request.application_url}/doc_search"><span class="glyphicon glyphicon-search"></span></a></li>
${panel('dropdown_menu_panel')}
</ul>
</div>
@@ -66,7 +69,7 @@
<br />
<div class="container">
<div align="center" tal:condition="not layout.isAnonymous()">
<span class="menu-item" tal:repeat="item layout.get_themes()">
<span class="menu-item" tal:repeat="item layout.get_topics()">
<a href="${request.application_url}/folder/${item}">${item}</a>&nbsp;
</span>
</div>
@@ -93,20 +96,7 @@
<footer class="container-fluid bg-black">
<div class="row">
<p class="text-center" tal:condition="not layout.isAnonymous()">
<a href="https://www.instagram.com/ctphuoc/" alt="instagram" target="_blank">
<img src="${request.static_url('caotek_mesavoirs:static/img/instagram.png')}" /></a><br />
<br />
</p>
<p class="text-center">&copy; 2017&nbsp;-&nbsp;Phuoc Cao&nbsp;|&nbsp;
<a href="${request.application_url}/apropos">à propos</a>&nbsp;|&nbsp;
<a href="${request.application_url}/doc_search">recherche</a>
<span tal:condition="layout.isAnonymous()">
&nbsp;|&nbsp;
<a href="${request.application_url}/login">se connecter</a>
&nbsp;|&nbsp;
</span>
</p>
<p class="text-center">&copy; 2017&nbsp;-&nbsp;<a href="${request.application_url}/apropos">Phuoc Cao</a></p>
</div>
</footer>

View File

@@ -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,
}

View File

@@ -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, cest ouvrir la cage",

View File

@@ -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)

View File

@@ -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()