import sqlalchemy as sa import datetime #<- will be used to set default dates on models from sqlalchemy import or_, and_ from ..models.blog_record import BlogRecord, Topics, Tags 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) if request.authenticated_userid == None: # if user is anonym, display only published posts query = query.filter(BlogRecord.status == 'publié') if request.authenticated_userid != 'admin': # if user is not 'admin', hide admin posts query = query.filter(BlogRecord.tag != 'admin') if tag != '': query = query.filter(BlogRecord.tag == tag) return query.order_by(BlogRecord.tag, BlogRecord.title).all() @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))) if request.authenticated_userid != 'admin': # if user is not 'admin', hide admin posts query = query.filter(BlogRecord.tag != 'admin') return query.order_by(BlogRecord.title).all() @classmethod def by_id(cls, request, _id): query = request.dbsession.query(BlogRecord).filter(BlogRecord.id == _id).first() return query @classmethod def get_last_created(cls, request): # gest the last created posts query = request.dbsession.query(BlogRecord).filter(BlogRecord.topic_id != '_admin') if request.authenticated_userid == None: # if user is anonym, display only published posts query = query.filter(BlogRecord.status == 'publié') query = query.order_by(sa.desc(BlogRecord.created)).limit(10).all() return query @classmethod def get_last_edited(cls, request): # gest the last edited posts query = request.dbsession.query(BlogRecord).filter(BlogRecord.topic_id != '_admin') if request.authenticated_userid == None: # if user is anonym, display only published posts query = query.filter(BlogRecord.status == 'publié') query = query.order_by(sa.desc(BlogRecord.edited)).limit(10).all() return query @classmethod def get_activities(cls, request): # gest the Activities section query = request.dbsession.query(BlogRecord).filter(and_(BlogRecord.topic_id == '_admin', BlogRecord.tag == 'activities', BlogRecord.status == 'publié')) query = query.order_by(sa.desc(BlogRecord.created)).first() 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_tags_byId(cls, request, id): # gest the last 5 items modified query = request.dbsession.query(Tags).filter(Tags.id == id).first() return query @classmethod def get_topic_byTopic(cls, request, id): # get the name of a given topic query = request.dbsession.query(Topics).filter(Topics.topic == id).first() return query @classmethod def get_topics(cls, request): # get all topics query = request.dbsession.query(Topics).order_by(Topics.topic_name).all() return query @classmethod def delete(cls, request, id): request.dbsession.query(BlogRecord).filter(BlogRecord.id == id).delete(synchronize_session=False) return @classmethod def tag_delete(cls, request, id): request.dbsession.query(Tags).filter(Tags.id == id).delete(synchronize_session=False) return @classmethod def topic_delete(cls, request, id): request.dbsession.query(Topics).filter(Topics.topic == id).delete(synchronize_session=False) return