Ejemplo n.º 1
0
    def handle(self, *args, **options):
        # SELECT "petitions_petition"."id", "petitions_petition"."title", (
        #     SELECT petitions_petitionstatuschange.status
        #     FROM petitions_petitionstatuschange
        #     WHERE petitions_petition.id=petitions_petitionstatuschange.petition_id
        #     ORDER BY petitions_petitionstatuschange.id
        #     DESC LIMIT 1
        #     ) as status
        # FROM petitions_petition
        # WHERE status == 'active'

        last_status = str(PetitionStatusChange.objects.
                          values('status').
                          extra(where=['petition_id = {}.id'.
                                format(Petition._meta.db_table)]).
                          order_by('-id')[:1].query)
        active_petitions = Petition.objects.\
            annotate(parent_petition_id=F('id')).\
            extra(select={'status': last_status},
                  where=['status = "{}"'.format(Petition.ACTIVE)])
        for petition in active_petitions:
            check_conditions(petition)
Ejemplo n.º 2
0
 def perform_create(self, serializer):
     serializer.save(author=self.request.user)
     petition = serializer.validated_data["petition"]
     check_conditions(petition)