diff --git a/gvsds/apps/gerp/views/viewsets.py b/gvsds/apps/gerp/views/viewsets.py index b9d6bb1f..ff43b95d 100644 --- a/gvsds/apps/gerp/views/viewsets.py +++ b/gvsds/apps/gerp/views/viewsets.py @@ -20,13 +20,26 @@ from gvsdsdk.models import ( CashReceiptsPaymentsLedger as SdkCashReceiptsPaymentsLedger, Asset as SdkAsset, Liability as SdkLiability, + Tenant as SdkTenant, + Company as SdkCompany, + Department as SdkDepartment, + Role as SdkRole, + UserRole as SdkUserRole, + RolePermission as SdkRolePermission, + Permission as SdkPermission, + FileAsset as SdkFileAsset, + WorkOrder as SdkWorkOrder, + Message as SdkMessage, + Menu as SdkMenu, + ItemReference as SdkItemReference, + Backpack as SdkBackpack, + PositionTemplate as SdkPositionTemplate, + Position as SdkPosition, ) from . import ELTAuthenticatedAPIView from ..models import ( - Tenant, Company, Department, Role, - UserRole, UserRoleDepartment, RolePermission, Permission, FileAsset, WorkOrder, Message, Menu, - DepartmentSMTM, ItemReference, Backpack, - PositionTemplate, Position, + UserRoleDepartment, + DepartmentSMTM, ) from ..serializers import ( TenantSerializer, CompanyInfoSerializer, CompanySerializer, @@ -46,7 +59,7 @@ from ..serializers import ( class TenantViewSet(TenantScopedMixin, viewsets.ModelViewSet): - queryset = Tenant.objects.all() + queryset = SdkTenant.objects.all() serializer_class = TenantSerializer permission_classes = [IsAuthenticated] @@ -82,7 +95,7 @@ class CompanyInfoViewSet(TenantScopedMixin, viewsets.ModelViewSet): class CompanyViewSet(TenantScopedMixin, viewsets.ModelViewSet): - queryset = Company.objects.all() + queryset = SdkCompany.objects.all() serializer_class = CompanySerializer permission_classes = [IsAuthenticated] @@ -120,7 +133,7 @@ class CompanyViewSet(TenantScopedMixin, viewsets.ModelViewSet): class DepartmentViewSet(CompanyScopedMixin, viewsets.ModelViewSet): - queryset = Department.objects.select_related('CompanyUUID', 'ParentDeptUUID') + queryset = SdkDepartment.objects.all() serializer_class = DepartmentSerializer permission_classes = [IsAuthenticated] @@ -176,7 +189,7 @@ class DepartmentViewSet(CompanyScopedMixin, viewsets.ModelViewSet): class RoleViewSet(TenantScopedMixin, viewsets.ModelViewSet): - queryset = Role.objects.all() + queryset = SdkRole.objects.all() serializer_class = RoleSerializer permission_classes = [IsAuthenticated] @@ -264,7 +277,7 @@ class WorkgroupViewSet(CompanyScopedMixin, viewsets.ModelViewSet): class UserRoleViewSet(CompanyScopedMixin, viewsets.ModelViewSet): - queryset = UserRole.objects.all() + queryset = SdkUserRole.objects.all() serializer_class = UserRoleSerializer permission_classes = [IsAuthenticated, IsAdminUser] @@ -373,7 +386,7 @@ class UserRoleViewSet(CompanyScopedMixin, viewsets.ModelViewSet): # 部门树分组:tree=1 时附带部门树(前端"按部门树展示成员"面板用) if request.query_params.get('tree') == '1': try: - dept_qs = Department.objects.all() + dept_qs = SdkDepartment.objects.all() # 与 UserRole 同公司隔离:仅当前公司部门(管理员特权模式不过滤) if not IsAdminScopeDisabled(request): current_company = getattr(request, 'current_company_uuid', None) @@ -406,7 +419,7 @@ class UserRoleViewSet(CompanyScopedMixin, viewsets.ModelViewSet): class RolePermissionViewSet(CompanyScopedMixin, viewsets.ModelViewSet): - queryset = RolePermission.objects.all() + queryset = SdkRolePermission.objects.all() serializer_class = RolePermissionSerializer permission_classes = [IsAuthenticated, IsAdminUser] @@ -440,10 +453,10 @@ class RolePermissionViewSet(CompanyScopedMixin, viewsets.ModelViewSet): role = RoleManager.GetRoleByUUID(data['RoleUUID']) if role and getattr(role, 'TenantUUID_id', None) != current_tenant and getattr(role, 'TenantUUID', None) != current_tenant: return Response({'code': 403, 'msg': '无权操作:目标角色不属于当前租户'}, status=403) - perm = Permission.objects.filter(PermUUID=data['PermUUID']).first() + perm = SdkPermission.objects.filter(PermUUID=data['PermUUID']).first() if perm and getattr(perm, 'TenantUUID_id', None) != current_tenant and getattr(perm, 'TenantUUID', None) != current_tenant: return Response({'code': 403, 'msg': '无权操作:目标权限不属于当前租户'}, status=403) - existing = RolePermission.objects.filter( + existing = SdkRolePermission.objects.filter( RoleUUID=data['RoleUUID'], PermUUID=data['PermUUID'], CompanyUUID=company_uuid, @@ -467,7 +480,7 @@ class RolePermissionViewSet(CompanyScopedMixin, viewsets.ModelViewSet): class PermissionViewSet(TenantScopedMixin, viewsets.ModelViewSet): - queryset = Permission.objects.all() + queryset = SdkPermission.objects.all() serializer_class = PermissionSerializer permission_classes = [IsAuthenticated, IsAdminUser] @@ -560,7 +573,7 @@ class PermissionViewSet(TenantScopedMixin, viewsets.ModelViewSet): class FileAssetViewSet(CompanyScopedMixin, viewsets.ModelViewSet): - queryset = FileAsset.objects.select_related('CompanyUUID') + queryset = SdkFileAsset.objects.all() serializer_class = FileAssetSerializer permission_classes = [IsAuthenticated] @@ -655,7 +668,7 @@ class FileAssetViewSet(CompanyScopedMixin, viewsets.ModelViewSet): class WorkOrderViewSet(CompanyScopedMixin, viewsets.ModelViewSet): - queryset = WorkOrder.objects.all() + queryset = SdkWorkOrder.objects.all() serializer_class = WorkOrderSerializer permission_classes = [IsAuthenticated] @@ -698,7 +711,7 @@ class WorkOrderViewSet(CompanyScopedMixin, viewsets.ModelViewSet): class MessageViewSet(CompanyScopedMixin, viewsets.ModelViewSet): - queryset = Message.objects.select_related('SenderUUID', 'ReceiverUUID') + queryset = SdkMessage.objects.all() serializer_class = MessageSerializer permission_classes = [IsAuthenticated] @@ -714,14 +727,14 @@ class MessageViewSet(CompanyScopedMixin, viewsets.ModelViewSet): class MenuViewSet(viewsets.ModelViewSet): """菜单表为系统级全局配置,不按公司/租户隔离(与 FormService.COMPANY_SCOPE_EXEMPT_TABLES 一致)""" - queryset = Menu.objects.all() + queryset = SdkMenu.objects.all() serializer_class = MenuSerializer permission_classes = [IsAuthenticated] @action(detail=False, methods=['get']) def search(self, request): keyword = request.query_params.get('keyword', '') - qs = Menu.objects.all() + qs = self.get_queryset() if keyword: qs = qs.filter(MenuTitle__icontains=keyword) serializer = self.get_serializer(qs[:20], many=True) @@ -730,7 +743,7 @@ class MenuViewSet(viewsets.ModelViewSet): @action(detail=False, methods=['get']) def list_by_company(self, request): CompanyUUID = request.query_params.get('CompanyUUID', '') - qs = Menu.objects.all() + qs = self.get_queryset() if CompanyUUID: qs = qs.filter(CompanyUUID=CompanyUUID) else: @@ -752,7 +765,7 @@ class DepartmentSMTMViewSet(viewsets.ModelViewSet): class ItemReferenceViewSet(viewsets.ModelViewSet): - queryset = ItemReference.objects.all() + queryset = SdkItemReference.objects.all() serializer_class = ItemReferenceSerializer permission_classes = [IsAuthenticated] @@ -804,7 +817,7 @@ class ItemReferenceViewSet(viewsets.ModelViewSet): class BackpackViewSet(CompanyScopedMixin, viewsets.ModelViewSet): - queryset = Backpack.objects.select_related('UserUUID', 'ItemTemplateUUID') + queryset = SdkBackpack.objects.all() serializer_class = BackpackSerializer permission_classes = [IsAuthenticated] @@ -925,7 +938,7 @@ class LiabilityViewSet(UserScopedMixin, viewsets.ModelViewSet): class PositionTemplateViewSet(TenantScopedMixin, viewsets.ModelViewSet): - queryset = PositionTemplate.objects.all() + queryset = SdkPositionTemplate.objects.all() serializer_class = PositionTemplateSerializer permission_classes = [IsAuthenticated, IsAdminUser] @@ -946,7 +959,7 @@ class PositionTemplatePermissionViewSet(viewsets.ModelViewSet): class PositionViewSet(TenantScopedMixin, viewsets.ModelViewSet): - queryset = Position.objects.all() + queryset = SdkPosition.objects.all() serializer_class = PositionTemplateSerializer # 复用,search 只需基本字段 permission_classes = [IsAuthenticated]