def get_policy_proposal_list(self, policy_slug=None, mandate=None, party=None, limit=None): proposal_query = ( db.session.query( distinct(Proposal.id) ) .filter(Proposal.date >= LEGISLATURE_2016_START) .outerjoin(Proposal.policy_domain) ) if policy_slug: proposal_query = proposal_query.filter_by(slug=policy_slug) if mandate is not None: proposal_query = ( proposal_query .join(Proposal.sponsorships) .filter_by(mandate=mandate) ) elif party is not None: proposal_query = ( proposal_query .join(Proposal.sponsorships) .join(Sponsorship.mandate) .join(Mandate.group_memberships) .filter(MpGroupMembership.mp_group == party) .filter(MpGroupMembership.interval.contains(Proposal.date)) ) query = ( Proposal.query .filter(Proposal.id.in_([r[0] for r in proposal_query])) .order_by(Proposal.modification_date.desc()) ) if limit is not None: query = query.limit(limit) return [ { 'title': proposal.title, 'date': proposal.date, 'modification_date': proposal.modification_date, 'id': proposal.id, 'status': proposal.status, 'tacit_approval': pluck_tacit_approval(proposal), 'controversy': proposal.controversy.all(), 'cdeppk_cdep': proposal.cdeppk_cdep, 'cdeppk_senate': proposal.cdeppk_senate, } for proposal in query ]
def get_proposals(self): return [ { 'id': sp.proposal.id, 'title': sp.proposal.title, 'status': sp.proposal.status, 'tacit_approval': pluck_tacit_approval(sp.proposal), 'controversy': sp.proposal.controversy.all(), } for sp in ( self.mandate.sponsorships .options(joinedload('proposal')) .join(Sponsorship.proposal) .order_by(Proposal.date.desc()) ) ]
def get_policy_tacit_approval_list(self, limit=None): qs = self.get_policy_tacit_approval_qs().order_by(Proposal.modification_date.desc()) if limit: qs = qs.limit(limit) return [ { "title": proposal.title, "id": proposal.id, "status": proposal.status, "tacit_approval": pluck_tacit_approval(proposal), "controversy": proposal.controversy.all(), "date": proposal.date, "modification_date": proposal.modification_date, } for proposal in qs ]
def get_policy_tacit_approval_list(self, limit=None): qs = ( self.get_policy_tacit_approval_qs() .order_by(Proposal.modification_date.desc()) ) if limit: qs = qs.limit(limit) return [ { 'title': proposal.title, 'id': proposal.id, 'status': proposal.status, 'tacit_approval': pluck_tacit_approval(proposal), 'controversy': proposal.controversy.all(), 'date': proposal.date, 'modification_date': proposal.modification_date, } for proposal in qs ]
def get_policy_controversy_list(self, limit=None): qs = ( db.session.query(ProposalControversy, Proposal) .join(ProposalControversy.proposal) .order_by(Proposal.modification_date.desc()) ) if limit: qs = qs.limit(limit) return [ { "title": controversy.title, "id": proposal.id, "status": proposal.status, "tacit_approval": pluck_tacit_approval(proposal), "controversy": proposal.controversy.all(), "date": proposal.date, "modification_date": proposal.modification_date, } for (controversy, proposal) in qs ]
def get_policy_controversy_list(self, limit=None): qs = ( db.session.query( ProposalControversy, Proposal, ) .join(ProposalControversy.proposal) .order_by(Proposal.modification_date.desc()) ) if limit: qs = qs.limit(limit) return [ { 'title': controversy.title, 'id': proposal.id, 'status': proposal.status, 'tacit_approval': pluck_tacit_approval(proposal), 'controversy': proposal.controversy.all(), 'date': proposal.date, 'modification_date': proposal.modification_date, } for (controversy, proposal) in qs ]