Add initial implementations for forms and organization apps with serializers, factories, and admin configurations
Some checks failed
CI/CD Pipeline / Run Tests (push) Failing after 45s
CI/CD Pipeline / Code Quality Checks (push) Failing after 48s
CI/CD Pipeline / Build Docker Images (push) Has been skipped
CI/CD Pipeline / Push to Gitea Registry (push) Has been skipped
CI/CD Pipeline / Deploy to Server (push) Has been skipped
Some checks failed
CI/CD Pipeline / Run Tests (push) Failing after 45s
CI/CD Pipeline / Code Quality Checks (push) Failing after 48s
CI/CD Pipeline / Build Docker Images (push) Has been skipped
CI/CD Pipeline / Push to Gitea Registry (push) Has been skipped
CI/CD Pipeline / Deploy to Server (push) Has been skipped
This commit is contained in:
@@ -11,6 +11,8 @@ from apps.organization.serializers import (
|
||||
OrganizationListSerializer,
|
||||
OrganizationSerializer,
|
||||
)
|
||||
from apps.registers.models import RegistryMembershipPeriod
|
||||
from django.db.models import Prefetch
|
||||
from django_filters import rest_framework as filters
|
||||
from rest_framework.permissions import IsAuthenticated
|
||||
|
||||
@@ -21,10 +23,18 @@ class OrganizationFilter(filters.FilterSet):
|
||||
name = filters.CharFilter(lookup_expr="icontains")
|
||||
inn = filters.CharFilter(lookup_expr="exact")
|
||||
ogrn = filters.CharFilter(lookup_expr="exact")
|
||||
registry = filters.UUIDFilter(method="filter_registry")
|
||||
|
||||
@staticmethod
|
||||
def filter_registry(queryset, _name, value):
|
||||
return queryset.filter(
|
||||
membership_periods__registry_id=value,
|
||||
membership_periods__ended_at__isnull=True,
|
||||
).distinct()
|
||||
|
||||
class Meta:
|
||||
model = Organization
|
||||
fields = ["name", "inn", "ogrn"]
|
||||
fields = ["name", "inn", "ogrn", "registry"]
|
||||
|
||||
|
||||
class OrganizationViewSet(ReadOnlyViewSet[Organization]):
|
||||
@@ -55,3 +65,18 @@ class OrganizationViewSet(ReadOnlyViewSet[Organization]):
|
||||
if self.action in self.serializer_classes:
|
||||
return self.serializer_classes[self.action]
|
||||
return super().get_serializer_class()
|
||||
|
||||
def get_queryset(self):
|
||||
return (
|
||||
super()
|
||||
.get_queryset()
|
||||
.prefetch_related(
|
||||
Prefetch(
|
||||
"membership_periods",
|
||||
queryset=RegistryMembershipPeriod.objects.filter(
|
||||
ended_at__isnull=True
|
||||
).select_related("registry"),
|
||||
to_attr="active_membership_periods_prefetched",
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user