estelam ticket, varizha , others
This commit is contained in:
1 parent
35a1ec1794
commit
6b546aad76
71 files changed
+2865
-191
No files matched your search
@@ -0,0 +1,35 @@
|
||||
"""Read-only option metadata for the staff dispatch composer."""
|
||||
|
||||
from django.db.models import Count, Q
|
||||
|
||||
from .models import GroupDispatch, TicketCategory
|
||||
from .policies import DispatchPolicy
|
||||
|
||||
|
||||
def dispatch_form_options(user, units, groups):
|
||||
"""Expose only permitted units; recipient counts follow the sending service."""
|
||||
units = list(units)
|
||||
eligible = (
|
||||
Q(contacts__user__is_active=True, contacts__user__mobile__isnull=False)
|
||||
& ~Q(contacts__user__mobile="")
|
||||
)
|
||||
return {
|
||||
"units": [
|
||||
{
|
||||
"id": unit.pk,
|
||||
"name": unit.name,
|
||||
"operations": [
|
||||
kind for kind in GroupDispatch.OperationType.values
|
||||
if DispatchPolicy.can_create(user, unit, kind)
|
||||
],
|
||||
}
|
||||
for unit in units
|
||||
],
|
||||
"groups": list(groups.annotate(recipient_count=Count("contacts", filter=eligible)).values(
|
||||
"id", "name", "unit_id", "recipient_count",
|
||||
)),
|
||||
"categories": list(TicketCategory.objects.filter(
|
||||
Q(unit_id__in=[unit.pk for unit in units]) | Q(unit__isnull=True),
|
||||
is_active=True,
|
||||
).order_by("title").values("id", "title", "unit_id")),
|
||||
}
|
||||
Reference in new issue
Block a user