import sqlalchemy as sa import datetime #<- will be used to set default dates on models 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_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