Example #1
0
    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
        ]
Example #2
0
 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())
         )
     ]
Example #3
0
 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
     ]
Example #4
0
 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
     ]
Example #5
0
    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
        ]
Example #6
0
    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
        ]