2025-08-26 12:18:10 +03:30
|
|
|
from rest_framework import viewsets
|
2025-05-05 15:25:46 +03:30
|
|
|
|
2025-10-27 11:21:29 +03:30
|
|
|
from apps.authentication.mixins.region_filter import RegionFilterMixin
|
|
|
|
|
from apps.core.models import MobileTest, SystemConfig
|
|
|
|
|
from apps.core.serializers import MobileTestSerializer, SystemConfigSerializer
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class BaseViewSet(RegionFilterMixin, viewsets.ModelViewSet):
|
|
|
|
|
"""
|
|
|
|
|
All view sets in the project should inherit from this class.
|
|
|
|
|
It applies region-based filtering automatically to GET (list) requests.
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
def get_queryset(self):
|
|
|
|
|
queryset = super().get_queryset()
|
|
|
|
|
request = self.request
|
|
|
|
|
user = request.user
|
|
|
|
|
user_relation = user.user_relation.all()
|
|
|
|
|
|
|
|
|
|
if self.request.method.lower() == 'get' and not self.kwargs.get('pk'):
|
|
|
|
|
queryset = self.filter_by_region(queryset, org=True)
|
|
|
|
|
|
|
|
|
|
if not user_relation.first().role.type.key == 'ADM':
|
|
|
|
|
model_name = queryset.model.__name__.lower()
|
|
|
|
|
|
|
|
|
|
if model_name == 'user':
|
|
|
|
|
queryset = queryset.exclude(id=user.id)
|
|
|
|
|
|
|
|
|
|
elif model_name == 'organization':
|
|
|
|
|
queryset = queryset.exclude(id=user_relation.first().organization.id)
|
|
|
|
|
|
|
|
|
|
return queryset
|
|
|
|
|
|
2025-05-05 15:25:46 +03:30
|
|
|
|
|
|
|
|
class MobileTestViewSet(viewsets.ModelViewSet):
|
|
|
|
|
queryset = MobileTest.objects.all()
|
|
|
|
|
serializer_class = MobileTestSerializer
|
2025-08-26 12:18:10 +03:30
|
|
|
|
|
|
|
|
|
|
|
|
|
class SystemConfigViewSet(viewsets.ModelViewSet):
|
|
|
|
|
queryset = SystemConfig.objects.all()
|
|
|
|
|
serializer_class = SystemConfigSerializer
|