Skip to content

Services

hypha.apply.dashboard.services

get_paf_for_review

get_paf_for_review(user, is_paf_approval_sequential)

Return a queryset of paf approvals ready for user's review

Source code in hypha/apply/dashboard/services.py
def get_paf_for_review(user, is_paf_approval_sequential):
    """Return a queryset of paf approvals ready for user's review"""
    user_groups = list(user.groups.all())

    paf_approvals = PAFApprovals.objects.annotate(
        roles_count=Count("paf_reviewer_role__user_roles")
    ).filter(
        roles_count=len(user_groups),
        approved=False,
    )

    for role in user_groups:
        paf_approvals = paf_approvals.filter(paf_reviewer_role__user_roles__id=role.id)

    if is_paf_approval_sequential:
        blocking_step = PAFApprovals.objects.filter(
            project=OuterRef("project"),
            approved=False,
            paf_reviewer_role__sort_order__lt=OuterRef("paf_reviewer_role__sort_order"),
        )
        paf_approvals = paf_approvals.exclude(Exists(blocking_step))

    return paf_approvals