diff --git a/apps/system/migrations/0006_auto_20241213_1249.py b/apps/system/migrations/0006_auto_20241213_1249.py new file mode 100644 index 00000000..6f5727ec --- /dev/null +++ b/apps/system/migrations/0006_auto_20241213_1249.py @@ -0,0 +1,43 @@ +# Generated by Django 3.2.12 on 2024-12-13 04:49 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('system', '0005_alter_permission_type'), + ] + + operations = [ + migrations.AddField( + model_name='permission', + name='component', + field=models.CharField(blank=True, max_length=100, null=True, verbose_name='组件'), + ), + migrations.AddField( + model_name='permission', + name='icon', + field=models.CharField(blank=True, max_length=30, null=True, verbose_name='图标'), + ), + migrations.AddField( + model_name='permission', + name='is_fullpage', + field=models.BooleanField(default=False, verbose_name='是否全屏'), + ), + migrations.AddField( + model_name='permission', + name='is_hidden', + field=models.BooleanField(default=False, verbose_name='是否隐藏'), + ), + migrations.AddField( + model_name='permission', + name='path', + field=models.CharField(blank=True, max_length=100, null=True, verbose_name='路由'), + ), + migrations.AddField( + model_name='permission', + name='route_name', + field=models.CharField(blank=True, max_length=30, null=True, verbose_name='路由名称'), + ), + ] diff --git a/apps/system/models.py b/apps/system/models.py index 516704c0..53658e3b 100755 --- a/apps/system/models.py +++ b/apps/system/models.py @@ -30,6 +30,13 @@ class Permission(ParentModel, BaseModel): '类型', choices=menu_type_choices, default=30) sort = models.PositiveSmallIntegerField('排序标记', default=1) codes = models.JSONField('权限标识', default=list, null=True, blank=True) + + route_name = models.CharField('路由名称', max_length=30, null=True, blank=True) + icon = models.CharField('图标', max_length=30, null=True, blank=True) + path = models.CharField('路由', max_length=100, null=True, blank=True) + component = models.CharField('组件', max_length=100, null=True, blank=True) + is_hidden = models.BooleanField('是否隐藏', default=False) + is_fullpage = models.BooleanField('是否全屏', default=False) def __str__(self): return self.name diff --git a/apps/system/views.py b/apps/system/views.py index ce92f414..ac1e6a7d 100755 --- a/apps/system/views.py +++ b/apps/system/views.py @@ -22,7 +22,7 @@ from apps.system.filters import DeptFilterSet, UserFilterSet # from django_q.models import Task as QTask, Schedule as QSchedule from apps.utils.mixins import (CustomCreateModelMixin, MyLoggingMixin) from django.conf import settings -from apps.utils.permission import ALL_PERMS, get_user_perms_map +from apps.utils.permission import ALL_PERMS from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet from server.celery import app as celery_app from .models import (Dept, Dictionary, DictType, File, Permission, Post, PostRole, Role, User, @@ -35,7 +35,8 @@ from .serializers import (ApkSerializer, DeptCreateUpdateSerializer, DeptSeriali PTaskSerializer, PTaskCreateUpdateSerializer, PTaskResultSerializer, RoleCreateUpdateSerializer, RoleSerializer, TaskRunSerializer, UserCreateSerializer, UserListSerializer, UserPostCreateSerializer, - UserPostSerializer, UserUpdateSerializer, MyScheduleCreateSerializer, MyScheduleSerializer) + UserPostSerializer, UserUpdateSerializer, UserFullInfoSerializer, + MyScheduleCreateSerializer, MyScheduleSerializer) from rest_framework.viewsets import GenericViewSet from cron_descriptor import get_description import locale @@ -541,24 +542,7 @@ class UserViewSet(CustomModelViewSet): 获取登录用户信息 """ user = request.user - perms = get_user_perms_map(user, update_cache=True) - data = { - 'id': user.id, - 'username': user.username, - 'type': user.type, - 'name': user.name, - 'roles': user.roles.values_list('name', flat=True), - 'avatar': user.avatar, - 'perms': perms, - 'belong_dept': user.belong_dept.id if user.belong_dept else None, - 'post': user.post.id if user.post else None, - 'belong_dept_name': user.belong_dept.name if user.belong_dept else '', - 'post_name': user.post.name if user.post else '', - 'is_superuser': user.is_superuser, - 'wxmp_openid': user.wxmp_openid, - 'wx_openid': user.wx_openid - } - return Response(data) + return Response(UserFullInfoSerializer(user).data) @action(methods=['post'], detail=False, permission_classes=[IsAuthenticated]) def bind_wxmp(self, request, pk=None):