feat: 增加相关方黑名单
This commit is contained in:
parent
96c12108e0
commit
121d6ec15c
|
@ -0,0 +1,36 @@
|
|||
# Generated by Django 3.2.12 on 2023-04-07 01:32
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import django.utils.timezone
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
('system', '0002_myschedule'),
|
||||
('rpm', '0009_auto_20230323_1745'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='BlackList',
|
||||
fields=[
|
||||
('id', models.CharField(editable=False, help_text='主键ID', max_length=20, primary_key=True, serialize=False, verbose_name='主键ID')),
|
||||
('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')),
|
||||
('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')),
|
||||
('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')),
|
||||
('name', models.CharField(max_length=20, verbose_name='名称')),
|
||||
('number', models.CharField(max_length=50, verbose_name='信用代码')),
|
||||
('reason', models.TextField(verbose_name='原因')),
|
||||
('belong_dept', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='blacklist_belong_dept', to='system.dept', verbose_name='所属部门')),
|
||||
('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='blacklist_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')),
|
||||
('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='blacklist_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
),
|
||||
]
|
|
@ -24,6 +24,14 @@ class Rparty(CommonBModel):
|
|||
admin = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, blank=True)
|
||||
|
||||
|
||||
class BlackList(CommonBDModel):
|
||||
"""黑名单
|
||||
"""
|
||||
name = models.CharField('名称', max_length=20)
|
||||
number = models.CharField('信用代码', max_length=50)
|
||||
reason = models.TextField('原因')
|
||||
|
||||
|
||||
class Rfile(CommonBDModel):
|
||||
"""
|
||||
相关方文件库
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
|
||||
from apps.hrm.models import Employee
|
||||
from apps.rpm.models import Rcertificate, Remployee, Rfile, Rparty, Rpjcertificate, Rpjfile, Rpjmember, Rpj
|
||||
from apps.rpm.models import Rcertificate, Remployee, Rfile, Rparty, Rpjcertificate, Rpjfile, Rpjmember, Rpj, BlackList
|
||||
from apps.system.models import Dept
|
||||
from apps.system.services import sync_dahua_dept
|
||||
from apps.utils.constants import EXCLUDE_FIELDS
|
||||
|
@ -17,6 +17,7 @@ from apps.wf.serializers import TicketSimpleSerializer
|
|||
from apps.rpm.services import rpj_member_come, rpj_certificate_in
|
||||
from apps.rpm.models import RpjLog
|
||||
from django.conf import settings
|
||||
from django.db.models import Q
|
||||
|
||||
|
||||
class RpartyCreateUpdateSerializer(CustomModelSerializer):
|
||||
|
@ -30,6 +31,8 @@ class RpartyCreateUpdateSerializer(CustomModelSerializer):
|
|||
|
||||
@transaction.atomic
|
||||
def create(self, validated_data):
|
||||
if BlackList.objects.filter(Q(name=validated_data['name'])|Q(number=validated_data['number'])).exists():
|
||||
raise ParseError('该相关方在黑名单中')
|
||||
dept = Dept()
|
||||
dept.name = validated_data['name']
|
||||
dept.parent = validated_data['belong_dept']
|
||||
|
@ -330,4 +333,25 @@ class RpjfileSerializer(CustomModelSerializer):
|
|||
class RpjfileUpdateSerializer(CustomModelSerializer):
|
||||
class Meta:
|
||||
model = Rpjfile
|
||||
fields = ['files']
|
||||
fields = ['files']
|
||||
|
||||
|
||||
class BlackListCreateSerializer(CustomModelSerializer):
|
||||
class Meta:
|
||||
model = BlackList
|
||||
fields = ['name', 'number', 'reason']
|
||||
|
||||
|
||||
class BlackListUpdateSerializer(CustomModelSerializer):
|
||||
class Meta:
|
||||
model = BlackList
|
||||
fields = ['reason']
|
||||
|
||||
|
||||
class BlackListSerializer(CustomModelSerializer):
|
||||
create_by_ = UserSimpleSerializer(source='create_by', read_only=True)
|
||||
update_by_ = UserSimpleSerializer(source='update_by', read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = BlackList
|
||||
fields = '__all__'
|
|
@ -1,4 +1,4 @@
|
|||
from apps.rpm.views import (RcertificateViewSet, RpartyViewSet, RemployeeViewSet, RfileViewSet, RpjViewSet,
|
||||
from apps.rpm.views import (RcertificateViewSet, RpartyViewSet, RemployeeViewSet, RfileViewSet, RpjViewSet, BlackListViewSet,
|
||||
RpjfileViewSet, RpjmemberViewSet, RpjLogViewSet)
|
||||
from django.urls import path, include
|
||||
from rest_framework.routers import DefaultRouter
|
||||
|
@ -15,6 +15,7 @@ router.register('rpj', RpjViewSet, basename='rpj')
|
|||
router.register('rpj_member', RpjmemberViewSet, basename='rpj_member')
|
||||
router.register('rpj_log', RpjLogViewSet, basename='rpj_log')
|
||||
router.register('rpj_file', RpjfileViewSet, basename='rpj_file')
|
||||
router.register('blacklist', BlackListViewSet, basename='blacklist')
|
||||
urlpatterns = [
|
||||
path(API_BASE_URL, include(router.urls)),
|
||||
]
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
from apps.rpm.filters import RpjFilterSet
|
||||
from apps.rpm.models import Rcertificate, Remployee, Rparty, Rfile, Rpjfile, Rpjmember, Rpj, RpjLog
|
||||
from apps.rpm.models import Rcertificate, Remployee, Rparty, Rfile, Rpjfile, Rpjmember, Rpj, RpjLog, BlackList
|
||||
from apps.rpm.serializers import (RcertificateCreateUpdateSerializer,
|
||||
RcertificateSerializer, RemployeeCreateSerializer, RemployeeSerializer,
|
||||
RemployeeUpdateSerializer, RpartyAssignSerializer, RpartyCreateUpdateSerializer,
|
||||
RfileListSerializer, RpartySerializer, RpjListSerializer, RpjfileSerializer,
|
||||
RpjfileUpdateSerializer, RpjmemberCreateSerializer, RpjLogSerializer,
|
||||
RpjCreateSerializer, RpjUpdateSerializer, RpjmemberSerializer, RpjmemberUpdateSerializer)
|
||||
RpjCreateSerializer, RpjUpdateSerializer, RpjmemberSerializer, RpjmemberUpdateSerializer,
|
||||
BlackListCreateSerializer, BlackListUpdateSerializer, BlackListSerializer)
|
||||
from apps.rpm.services import sync_to_rep, rpj_member_leave
|
||||
from apps.system.models import Dictionary, Post, User, UserPost
|
||||
from apps.system.serializers import UserCreateSerializer
|
||||
|
@ -26,7 +27,7 @@ class RpartyViewSet(CustomModelViewSet):
|
|||
create_serializer_class = RpartyCreateUpdateSerializer
|
||||
update_serializer_class = RpartyCreateUpdateSerializer
|
||||
serializer_class = RpartySerializer
|
||||
select_related_fields = ['admin', 'belong_dept']
|
||||
select_related_fields = ['admin', 'belong_dept', 'create_by']
|
||||
search_fields = ['name']
|
||||
data_filter = True
|
||||
|
||||
|
@ -192,6 +193,8 @@ class RpjViewSet(CustomModelViewSet):
|
|||
vdata['rparty'] = self.request.user.belong_dept.rparty
|
||||
if not vdata.get('rparty', None):
|
||||
raise ParseError('请指定相关方')
|
||||
if BlackList.objects.filter(Q(name=vdata['rparty'].name)|Q(number=vdata['rparty'].number)).exists():
|
||||
raise ParseError('该相关方在黑名单中')
|
||||
if not vdata.get('belong_dept', None):
|
||||
vdata['belong_dept'] = vdata['rparty'].belong_dept
|
||||
ins = serializer.save()
|
||||
|
@ -283,3 +286,12 @@ class RpjfileViewSet(UpdateModelMixin, DestroyModelMixin, ListModelMixin, Custom
|
|||
if obj.rpj.state != Rpj.RPJ_CREATE:
|
||||
raise ParseError('项目非创建状态不可删除')
|
||||
return super().destroy(request, *args, **kwargs)
|
||||
|
||||
|
||||
class BlackListViewSet(CustomModelViewSet):
|
||||
queryset = BlackList.objects.all()
|
||||
create_serializer_class = BlackListCreateSerializer
|
||||
update_serializer_class = BlackListUpdateSerializer
|
||||
serializer_class = BlackListSerializer
|
||||
select_related_fields = ['create_by', 'update_by']
|
||||
search_fields = ['name', 'number']
|
|
@ -27,6 +27,7 @@ class CustomModelSerializer(DynamicFieldsMixin, serializers.ModelSerializer):
|
|||
if getattr(self.request, 'user', None):
|
||||
if getattr(self.Meta.model, 'create_by', None):
|
||||
validated_data['create_by'] = self.request.user
|
||||
validated_data['update_by'] = self.request.user
|
||||
if 'belong_dept' in validated_data:
|
||||
pass
|
||||
elif getattr(self.request.user, 'belong_dept', None):
|
||||
|
|
Loading…
Reference in New Issue