Files
ctp_blogr/cao_blogr/services/blog_record.py
2023-02-09 21:53:51 +01:00

66 lines
2.3 KiB
Python

import sqlalchemy as sa
import datetime #<- will be used to set default dates on models
from sqlalchemy import or_
from ..models.blog_record import BlogRecord, Tags
class BlogRecordService(object):
@classmethod
def by_criteria(cls, request, criteria):
search = "%{}%".format(criteria)
query = request.dbsession.query(BlogRecord)
query = query.filter(or_(BlogRecord.title.like(search), BlogRecord.body.like(search)))
if request.authenticated_userid == None:
# if user is anonym, display only published posts
query = query.filter(BlogRecord.status == 'publié')
return query.all()
@classmethod
def by_id(cls, request, _id):
query = request.dbsession.query(BlogRecord)
return query.get(_id)
@classmethod
def by_tag(cls, request, tag):
query = request.dbsession.query(BlogRecord)
query = query.filter(BlogRecord.tag == tag)
if request.authenticated_userid == None:
# if user is anonym, display only published posts
query = query.filter(BlogRecord.status == 'publié')
return query.order_by(sa.desc(BlogRecord.created)).all()
@classmethod
def get_last_created(cls, request):
# gest the 10 last created posts
query = request.dbsession.query(BlogRecord)
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(15).all()
return query
@classmethod
def delete(cls, request, id):
request.dbsession.query(BlogRecord).filter(BlogRecord.id == id).delete(synchronize_session=False)
return
@classmethod
def get_tags(cls, request):
query = request.dbsession.query(Tags)
query = query.order_by(Tags.tag).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 tag_delete(cls, request, id):
request.dbsession.query(Tags).filter(Tags.id == id).delete(synchronize_session=False)
return