adjust citysite table name to activesites

This commit is contained in:
Alberto-Audrix committed 2026-09-11 15:51:29 +07:00
1 parent fb0f996776
commit 64b37b6b6d
27 files changed
+382 -221

No files matched your search

+23 -21
View File
@@ -1,11 +1,11 @@
"""Visibility scoping for HQ executives.
- director / director_admin: all sites / city sites / GMs
- director / director_admin: all sites / active sites / GMs
- buh / bu_admin: only GMs (and gm_admins) they manage, plus those GMs' sites
- gm / gm_admin: only their own sites / city sites they registered
- gm / gm_admin: only their own sites / active sites they registered
Farm Site rows are only visible to non-directors when linked to an active
CitySite in the viewer's Pengaturan registry.
ActiveSite in the viewer's Pengaturan registry.
"""
from __future__ import annotations
@@ -61,7 +61,7 @@ def managed_gm_ids(buh: User) -> list[int]:
def visible_owner_ids(user: User) -> list[int] | None:
"""
Site.user / CitySite.registered_by ids this viewer may see.
Site.user / ActiveSite.registered_by ids this viewer may see.
Returns None when there is no restriction (director / superuser).
"""
@@ -74,13 +74,13 @@ def visible_owner_ids(user: User) -> list[int] | None:
return []
def visible_active_city_site_ids(user: User) -> list[int] | None:
def visible_active_site_ids(user: User) -> list[int] | None:
"""
Active CitySite pks in this viewer's Pengaturan registry.
Enabled ActiveSite pks in this viewer's Pengaturan registry.
Returns None for directors (no restriction). Empty list means no farm sites.
"""
from apps.sync.models import CitySite
from apps.sync.models import ActiveSite
owners = visible_owner_ids(user)
if owners is None:
@@ -88,7 +88,7 @@ def visible_active_city_site_ids(user: User) -> list[int] | None:
if not owners:
return []
return list(
CitySite.objects.filter(
ActiveSite.objects.filter(
registered_by_id__in=owners,
is_active=True,
).values_list("pk", flat=True)
@@ -120,13 +120,13 @@ def filter_sites_queryset(qs: QuerySet, viewer: User) -> QuerySet:
return qs
if not owners:
return qs.none()
city_ids = visible_active_city_site_ids(viewer)
if not city_ids:
active_ids = visible_active_site_ids(viewer)
if not active_ids:
return qs.none()
return qs.filter(user_id__in=owners, city_site_id__in=city_ids)
return qs.filter(user_id__in=owners, active_site_id__in=active_ids)
def filter_city_sites_queryset(qs: QuerySet, viewer: User) -> QuerySet:
def filter_active_sites_queryset(qs: QuerySet, viewer: User) -> QuerySet:
owners = visible_owner_ids(viewer)
if owners is None:
return qs
@@ -141,10 +141,12 @@ def filter_kandangs_queryset(qs: QuerySet, viewer: User) -> QuerySet:
return qs
if not owners:
return qs.none()
city_ids = visible_active_city_site_ids(viewer)
if not city_ids:
active_ids = visible_active_site_ids(viewer)
if not active_ids:
return qs.none()
return qs.filter(site__user_id__in=owners, site__city_site_id__in=city_ids)
return qs.filter(
site__user_id__in=owners, site__active_site_id__in=active_ids
)
def filter_flocks_queryset(qs: QuerySet, viewer: User) -> QuerySet:
@@ -153,12 +155,12 @@ def filter_flocks_queryset(qs: QuerySet, viewer: User) -> QuerySet:
return qs
if not owners:
return qs.none()
city_ids = visible_active_city_site_ids(viewer)
if not city_ids:
active_ids = visible_active_site_ids(viewer)
if not active_ids:
return qs.none()
return qs.filter(
kandang__site__user_id__in=owners,
kandang__site__city_site_id__in=city_ids,
kandang__site__active_site_id__in=active_ids,
)
@@ -168,10 +170,10 @@ def filter_cycles_queryset(qs: QuerySet, viewer: User) -> QuerySet:
return qs
if not owners:
return qs.none()
city_ids = visible_active_city_site_ids(viewer)
if not city_ids:
active_ids = visible_active_site_ids(viewer)
if not active_ids:
return qs.none()
return qs.filter(
kandang__site__user_id__in=owners,
kandang__site__city_site_id__in=city_ids,
kandang__site__active_site_id__in=active_ids,
)