# -*- 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 transaction from urllib.request import urlopen from .default import ( execute_query, ) def get_docs(request, doc_id): """Lire les doc""" if doc_id == 0: 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_bytopic(request, topic, logged_in): """Lire les doc""" if logged_in == None: anon = "AND statut = 'public' " else: 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 topic=:topic ORDER BY intitule;" results = request.dbsession.execute(query, {'topic': topic}).fetchall() return results def get_d_tags(request): query = "SELECT * FROM d_tags;" results = request.dbsession.execute(query).fetchall() return results def get_d_topics(request, logged_in): if logged_in == None: query = "SELECT * FROM d_topics WHERE statut = 'public';" else: query = "SELECT * FROM d_topics;" results = request.dbsession.execute(query).fetchall() return results def get_docs_bycritere(request, critere, logged_in): if logged_in == None: query = "SELECT * FROM docs WHERE (texte like :critere OR intitule like :critere) AND statut = 'public';" else: query = "SELECT * FROM docs WHERE (texte like :critere OR intitule like :critere);" results = request.dbsession.execute(query, {'critere': '%' + critere + '%'}).fetchall() return results def update_doc(request, doc_id, new_values): """créér ou modifier le doc""" # formater les champs s = '' for param in new_values.keys(): if s: s += ",%s=:%s" % (param, param) else: s = "%s=:%s" % (param, param) if doc_id == '0': query = "INSERT INTO docs SET %s;" % s else: new_values['doc_id'] = doc_id query = "update docs SET %s WHERE doc_id = :doc_id;" % s execute_query(request, query, new_values) def delete_doc(request, doc_id): """supprimer la doc""" query = "delete from docs where doc_id = :doc_id;" execute_query(request, query, {'doc_id': doc_id})