diff --git a/apps/ecm/migrations/0003_rename_filter_sender_notifysetting_filter_recipient.py b/apps/ecm/migrations/0003_rename_filter_sender_notifysetting_filter_recipient.py new file mode 100644 index 00000000..905788c0 --- /dev/null +++ b/apps/ecm/migrations/0003_rename_filter_sender_notifysetting_filter_recipient.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.12 on 2022-06-18 09:04 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('ecm', '0002_alter_eventcate_speakers'), + ] + + operations = [ + migrations.RenameField( + model_name='notifysetting', + old_name='filter_sender', + new_name='filter_recipient', + ), + ] diff --git a/apps/ecm/migrations/0004_alter_notifysetting_event_cate.py b/apps/ecm/migrations/0004_alter_notifysetting_event_cate.py new file mode 100644 index 00000000..c0376590 --- /dev/null +++ b/apps/ecm/migrations/0004_alter_notifysetting_event_cate.py @@ -0,0 +1,19 @@ +# Generated by Django 3.2.12 on 2022-06-19 03:29 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('ecm', '0003_rename_filter_sender_notifysetting_filter_recipient'), + ] + + operations = [ + migrations.AlterField( + model_name='notifysetting', + name='event_cate', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ecm.eventcate', verbose_name='关联事件种类'), + ), + ] diff --git a/apps/ecm/models.py b/apps/ecm/models.py index 13859fc3..15e7190b 100644 --- a/apps/ecm/models.py +++ b/apps/ecm/models.py @@ -35,8 +35,7 @@ class NotifySetting(CommonAModel): (30, '属地部门'), (40, '属地部门以上') ) - event_cate = models.ForeignKey(EventCate, verbose_name='关联事件种类', - to_field='code', on_delete=models.CASCADE) + event_cate = models.ForeignKey(EventCate, verbose_name='关联事件种类', on_delete=models.CASCADE) post = models.ForeignKey(Post, verbose_name='提醒岗位', on_delete=models.CASCADE, null=True, blank=True) filter_recipient = models.PositiveSmallIntegerField('提醒人员过滤', null=True, blank=True) diff --git a/apps/ecm/serializers.py b/apps/ecm/serializers.py index 24ac6a63..8e3d505c 100644 --- a/apps/ecm/serializers.py +++ b/apps/ecm/serializers.py @@ -31,6 +31,8 @@ class EventCateUpdateSerializer(CustomModelSerializer): class NotifySettingsSerializer(CustomModelSerializer): + post_name = serializers.CharField(source='post.name', read_only=True) + class Meta: model = NotifySetting fields = '__all__' diff --git a/apps/rpm/models.py b/apps/rpm/models.py index f2639b5f..c845e1a9 100644 --- a/apps/rpm/models.py +++ b/apps/rpm/models.py @@ -23,7 +23,7 @@ class Rparty(CommonBModel): description = models.TextField('概述', null=True, blank=True) -class RpartyFile(BaseModel): +class Rfile(BaseModel): """ 相关方文件库 """ diff --git a/apps/rpm/serializers.py b/apps/rpm/serializers.py index 83eb072e..edb686b3 100644 --- a/apps/rpm/serializers.py +++ b/apps/rpm/serializers.py @@ -52,7 +52,7 @@ class RpartyAssignSerializer(serializers.Serializer): username = serializers.CharField('用户名') -class RpartyFileListSerializer(CustomModelSerializer): +class RfileListSerializer(CustomModelSerializer): rparty_ = RpartySimpleSerializer(source='rparty', read_only=True) file_cate_ = DictSerializer(source='file_cate', read_only=True) files_ = FileSerializer(source='files', many=True, read_only=True) diff --git a/apps/rpm/urls.py b/apps/rpm/urls.py index 68a7eacc..e8b8f9f8 100644 --- a/apps/rpm/urls.py +++ b/apps/rpm/urls.py @@ -1,5 +1,5 @@ from apps.rpm.models import RpjFile -from apps.rpm.views import RpartyViewSet, RemployeeViewSet, RpartyFileViewSet, RpjViewSet, RpjmemberViewSet +from apps.rpm.views import RpartyViewSet, RemployeeViewSet, RfileViewSet, RpjViewSet, RpjmemberViewSet from django.urls import path, include from rest_framework.routers import DefaultRouter @@ -9,7 +9,7 @@ HTML_BASE_URL = 'rpm/' router = DefaultRouter() router.register('rparty', RpartyViewSet, basename='rparty') router.register('remployee', RemployeeViewSet, basename='remployee') -router.register('rparty_file', RpartyFileViewSet, basename='rparty_file') +router.register('rfile', RfileViewSet, basename='rfile') router.register('rpj', RpjViewSet, basename='rpj') router.register('rpj_member', RpjmemberViewSet, basename='rpj_member') router.register('rpj_file', RpjFile, basename='rpj_file') diff --git a/apps/rpm/views.py b/apps/rpm/views.py index 8bd11ae7..b32058fa 100644 --- a/apps/rpm/views.py +++ b/apps/rpm/views.py @@ -1,8 +1,8 @@ from django.shortcuts import render from apps.hrm.models import Certificate, Employee from apps.hrm.serializers import CertificateCreateUpdateSerializer, CertificateSerializer, EmployeeSerializer -from apps.rpm.models import Rcertificate, Remployee, Rparty, RpartyFile, Rpjmember, Rpj -from apps.rpm.serializers import RcertificateCreateUpdateSerializer, RcertificateSerializer, RemployeeCreateSerializer, RemployeeSerializer, RpartyAssignSerializer, RpartyCreateUpdateSerializer, RpartyFileListSerializer, RpartySerializer, RpjListSerializer, RpjmemberCreateSerializer, RpjmemberCreatesSerializer, RpjCreateUpdateSerializer, RpjmemberSerializer, RpjmemberUpdateSerializer +from apps.rpm.models import Rcertificate, Remployee, Rparty, Rfile, Rpjmember, Rpj +from apps.rpm.serializers import RcertificateCreateUpdateSerializer, RcertificateSerializer, RemployeeCreateSerializer, RemployeeSerializer, RpartyAssignSerializer, RpartyCreateUpdateSerializer, RfileListSerializer, RpartySerializer, RpjListSerializer, RpjmemberCreateSerializer, RpjmemberCreatesSerializer, RpjCreateUpdateSerializer, RpjmemberSerializer, RpjmemberUpdateSerializer from apps.system.models import Post, User, UserPost from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet from rest_framework.mixins import CreateModelMixin, ListModelMixin, RetrieveModelMixin @@ -47,10 +47,10 @@ class RpartyViewSet(CustomModelViewSet): return Response() -class RpartyFileViewSet(ListModelMixin, CustomGenericViewSet): +class RfileViewSet(ListModelMixin, CustomGenericViewSet): perms_map = {'get': 'rparty_file:view'} - queryset = RpartyFile.objects.all() - list_serializer_class = RpartyFileListSerializer + queryset = Rfile.objects.all() + list_serializer_class = RfileListSerializer def get_queryset(self): queryset = super().get_queryset() diff --git a/apps/utils/exceptions.py b/apps/utils/exceptions.py index 948faff3..f7c0c514 100755 --- a/apps/utils/exceptions.py +++ b/apps/utils/exceptions.py @@ -7,6 +7,7 @@ from rest_framework import exceptions from rest_framework.response import Response from rest_framework.views import set_rollback from server.settings import myLogger +import json def custom_exception_hander(exc, context): @@ -27,12 +28,11 @@ def custom_exception_hander(exc, context): headers['Retry-After'] = '%d' % exc.wait data = {'err_detail': exc.detail} if isinstance(exc.detail, dict): - prefix = list(exc.detail.keys())[0] data['err_code'] = exc.default_code - data['err_msg'] = prefix + str(exc.detail[prefix]) # 取一部分方便前端alert + data['err_msg'] = json.dumps(exc.detail, ensure_ascii=False) # 取一部分方便前端alert elif isinstance(exc.detail, list): data['err_code'] = exc.default_code - data['err_msg'] = str(exc.detail[0]) if exc.detail else '' + data['err_msg'] = json.dumps(exc.detail, ensure_ascii=False) else: data = {'err_msg': exc.detail, 'err_code': exc.get_codes()} diff --git a/apps/utils/viewsets.py b/apps/utils/viewsets.py index 11841fdc..891b6239 100755 --- a/apps/utils/viewsets.py +++ b/apps/utils/viewsets.py @@ -130,7 +130,4 @@ class CustomModelViewSet(CreateModelMixin, UpdateModelMixin, ListModelMixin, raise ValidationError(**PKS_ERROR) def perform_destroy(self, instance): - if self.delete_soft: - instance.delete(update_by=self.request.user) - else: - instance.delete(soft=False) + instance.delete(update_by=self.request.user)