refactor(gerp): P2 完成 25 个 ViewSet queryset 全部换源 gvsdsdk 模型

This commit is contained in:
TermiNexus committed 2026-08-07 22:33:58 +08:00
1 parent 9dd3ff8aca
commit 010ff46765
1 file changed
+37 -24
+37 -24
View File
@@ -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]