How to use the river.models.approvement.Approvement.objects.filter function in river

To help you get started, weโ€™ve selected a few river examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github javrasya / django-river / river / services / approvement.py View on Github external
def get_final_approvements(content_type, field):
        final_states = StateService.get_final_states(content_type, field)
        return Approvement.objects.filter(meta__transition__destination_state__in=final_states, meta__transition__direction=FORWARD)
github javrasya / django-river / river / services / approvement.py View on Github external
if not approvement_pks:
            approvement_pks = []
        index += 1
        current_states = list(current_states.values_list('pk', flat=True)) if current_states else [getattr(workflow_object, field)]
        next_approvements = Approvement.objects.filter(workflow_object=workflow_object, field=field, meta__transition__source_state__in=current_states)
        if next_approvements.exists() and not next_approvements.filter(pk__in=approvement_pks).exists() and (not limit or index < limit):
            approvements = ApprovementService.get_next_approvements(
                workflow_object,
                field,
                approvement_pks=approvement_pks + list(next_approvements.values_list('pk', flat=True)),
                current_states=State.objects.filter(pk__in=next_approvements.values_list('meta__transition__destination_state', flat=True)),
                index=index,
                limit=limit
            )
        else:
            approvements = Approvement.objects.filter(pk__in=approvement_pks)

        return approvements
github javrasya / django-river / river / services / approvement.py View on Github external
def get_next_approvements(workflow_object, field, approvement_pks=None, current_states=None, index=0, limit=None):
        if not approvement_pks:
            approvement_pks = []
        index += 1
        current_states = list(current_states.values_list('pk', flat=True)) if current_states else [getattr(workflow_object, field)]
        next_approvements = Approvement.objects.filter(workflow_object=workflow_object, field=field, meta__transition__source_state__in=current_states)
        if next_approvements.exists() and not next_approvements.filter(pk__in=approvement_pks).exists() and (not limit or index < limit):
            approvements = ApprovementService.get_next_approvements(
                workflow_object,
                field,
                approvement_pks=approvement_pks + list(next_approvements.values_list('pk', flat=True)),
                current_states=State.objects.filter(pk__in=next_approvements.values_list('meta__transition__destination_state', flat=True)),
                index=index,
                limit=limit
            )
        else:
            approvements = Approvement.objects.filter(pk__in=approvement_pks)

        return approvements
github javrasya / django-river / river / services / approvement.py View on Github external
if destination_state:
                approvements = approvements.filter(meta__transition__destination_state=destination_state)

            return approvements

        def authorize_approvements(approvements):
            return approvements.filter(
                (
                    (Q(transactioner__isnull=True) | Q(transactioner=user)) &
                    (Q(permissions__isnull=True) | Q(permissions__in=user.user_permissions.all())) &
                    (Q(groups__isnull=True) | Q(groups__in=user.groups.all()))
                )
            )

        approvements = Approvement.objects.filter(
            workflow_object=workflow_object,
            field=field,
            meta__transition__source_state__in=source_states,
            status=PENDING,
            enabled=True
        )

        suitable_approvements = get_approvement(approvements.filter(skip=False))

        if user and not god_mod:
            suitable_approvements = authorize_approvements(suitable_approvements)

        skipped_approvements = get_approvement(approvements.filter(skip=True))
        if skipped_approvements:
            source_state_pks = list(skipped_approvements.values_list('meta__transition__destination_state', flat=True))
            suitable_approvements = suitable_approvements | ApprovementService.get_approvements_object_waiting_for_approval(workflow_object, field, State.objects.filter(pk__in=source_state_pks),
github javrasya / django-river / river / services / approvement.py View on Github external
def has_user_any_action(content_type, field, user):
        """
        :param content_type_id:
        :param field_id:
        :param user_id:
        :return: Boolean value indicates whether the user has any role for the content type and field are sent. Any elements existence
          accepted, rejected or pending for the user, means the user in active for the content type and field.
        """
        approvements = Approvement.objects.filter(Q(transactioner=user) | Q(permissions__in=user.user_permissions.all()) | Q(groups__in=user.groups.all())).filter(content_type=content_type,
                                                                                                                                                                   field=field)
        return approvements.count() != 0
github javrasya / django-river / river / services / approvement.py View on Github external
def get_initial_approvements(content_type, field):
        initial_state = StateService.get_initial_state(content_type, field)
        return Approvement.objects.filter(meta__transition__source_state=initial_state, meta__transition__direction=FORWARD)