Files
cao_sunyata/cao_blogr/services/blog_record.py

69 lines
2.4 KiB
Python

import sqlalchemy as sa
import datetime #<- will be used to set default dates on models
from sqlalchemy import or_
from paginate_sqlalchemy import SqlalchemyOrmPage #<- provides pagination
from ..models.blog_record import BlogRecord, Topics, Tags
from markdown2 import Markdown
class BlogRecordService(object):
@classmethod
def by_topic(cls, request, topic, tag):
# get posts by topic
query = request.dbsession.query(BlogRecord).filter(BlogRecord.topic_id == topic, BlogRecord.tag == tag)
query = query.order_by(BlogRecord.tag, BlogRecord.title).all()
return query
@classmethod
def by_criteria(cls, request, criteria):
search = "%{}%".format(criteria)
query = request.dbsession.query(BlogRecord).filter(or_(BlogRecord.title.like(search),
BlogRecord.body.like(search))).all()
return query
@classmethod
def by_id(cls, request, _id):
query = request.dbsession.query(BlogRecord).filter(BlogRecord.id == _id).first()
return query
@classmethod
def get_last_five(cls, request):
# gest the last 5 items modified
query = request.dbsession.query(BlogRecord).filter(BlogRecord.topic_id != 'ADM')
query = query.order_by(sa.desc(BlogRecord.edited)).limit(5).all()
return query
@classmethod
def get_tags_byTopic(cls, request, topic):
# gest the last 5 items modified
query = request.dbsession.query(Tags).filter(Tags.topic == topic)
query = query.order_by(Tags.tag_name).all()
return query
@classmethod
def get_topic_name(cls, request, id):
# gest the name of a given topic
query = request.dbsession.query(Topics).filter(Topics.topic == id).first()
return query.topic_name.upper()
@classmethod
def proc_after_create(cls, request, _id):
entry = request.dbsession.query(BlogRecord).get(_id)
# convertir mardown en HTML
markdowner = Markdown()
entry.body_html = markdowner.convert(entry.body)
return
@classmethod
def proc_after_update(cls, request, _id):
entry = request.dbsession.query(BlogRecord).get(_id)
entry.edited = datetime.datetime.now()
entry.title_url = entry.slug
# convertir mardown en HTML
markdowner = Markdown()
entry.body_html = markdowner.convert(entry.body)
return