65 lines
2.1 KiB
Python
65 lines
2.1 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
|
|
from markdown2 import Markdown
|
|
|
|
|
|
class BlogRecordService(object):
|
|
|
|
@classmethod
|
|
def all(cls, request):
|
|
query = request.dbsession.query(BlogRecord)
|
|
return query.order_by(sa.desc(BlogRecord.created))
|
|
|
|
@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)
|
|
return query.get(_id)
|
|
|
|
@classmethod
|
|
def get_paginator(cls, request, page=1):
|
|
query = request.dbsession.query(BlogRecord)
|
|
query = query.order_by(sa.desc(BlogRecord.created))
|
|
query_params = request.GET.mixed()
|
|
|
|
def url_maker(link_page):
|
|
# replace page param with values generated by paginator
|
|
query_params['page'] = link_page
|
|
return request.current_route_url(_query=query_params)
|
|
|
|
return SqlalchemyOrmPage(query, page, items_per_page=5,
|
|
url_maker=url_maker)
|
|
|
|
@classmethod
|
|
def proc_after_create(cls, request, _id):
|
|
entry = request.dbsession.query(BlogRecord).get(_id)
|
|
# set default values
|
|
if entry.tag == '':
|
|
entry.tag = 'pyramid'
|
|
if entry.topic == '':
|
|
entry.topic = 'blog'
|
|
# 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()
|
|
# convertir mardown en HTML
|
|
markdowner = Markdown()
|
|
entry.body_html = markdowner.convert(entry.body)
|
|
return
|
|
|