from .model import Article from .model import ArticleSchema #import flask from datetime import datetime from sqlalchemy import func from sqlalchemy import exc import json from src import clogger from src.sections.model import Section from src.organizations.model import Organization from src.database import db_session, read_json from src.controller import BaseController #from src.organizations.controller import controller as org_controller class ArtController(BaseController): __myclass__=Article __jsonid__='article' def pagination_params(self,v): try: if v.has_key("per_page"): pp=int(v["per_page"]) else: pp=20 except ValueError: pp=20 try: if v.has_key("page"): o=(int(v["page"])-1) *pp else: o=0 except ValueError: o=0 if not (isinstance(pp,int) and pp>0 and pp<10000): pp=20 if not (isinstance(o,int) and o>=0 and o<100000): o=0 p1=(pp,o) return p1 def search(self,s): return db_session.query(Article).query.filter(Article.title.like("%"+s+"%")).order_by(Article.published_date.desc()).limit(20).all() def get_all(self): return db_session.query(Article).order_by(Article.published_date.desc()).all() def get_all_page(self,lim, off): arts=db_session.query(Article).order_by(Article.published_date.desc()).limit(lim).offset(off).all() return arts def get_section_page(self,section_id, lim, off): return db_session.query(Article).filter(Article.section_id==section_id).order_by(Article.published_date.desc()).limit(lim).offset(off).all() def get_organization_page(self,organization_id, lim, off): sid=db_session.query(Section.id).filter(Section.organization_id==int(organization_id)).all() sid=map(lambda a:a[0], sid) articles=db_session.query(Article).filter(Article.section_id.in_(sid)).order_by(Article.published_date.desc()).limit(lim).offset(off).all() return articles # # return Article.query.filter(Article.section_id==section_id).order_by(Article.published_date.desc()).limit(lim).offset(off).all() def section_count(self,section_id): return db_session.query(func.count(Article.id)).filter(Article.section_id==section_id).scalar() def organization_count(self,organization_id): sid=db_session.query(Section.id).filter(Section.organization_id==int(organization_id)).all() sid=map(lambda a:a[0], sid) return db_session.query(func.count(Article.id)).filter(Article.section_id.in_(sid)).scalar() def count(self): return db_session.query(func.count(Article.id)).scalar() controller=ArtController()