swagger修正
This commit is contained in:
parent
2e7a9a2b7e
commit
3830a1b000
|
@ -1,3 +1,9 @@
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
|
|
||||||
|
from apps.ecm.models import Event
|
||||||
|
|
||||||
# Register your models here.
|
# Register your models here.
|
||||||
|
|
||||||
|
@admin.register(Event)
|
||||||
|
class EventAdmin(admin.ModelAdmin):
|
||||||
|
date_hierarchy = 'create_time'
|
|
@ -0,0 +1,23 @@
|
||||||
|
# Generated by Django 3.2.12 on 2022-06-20 07:17
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('system', '0001_initial'),
|
||||||
|
('ecm', '0004_alter_notifysetting_event_cate'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.RemoveField(
|
||||||
|
model_name='event',
|
||||||
|
name='imgs',
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='event',
|
||||||
|
name='imgs',
|
||||||
|
field=models.ManyToManyField(blank=True, to='system.File', verbose_name='事件图片'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -2,7 +2,7 @@ from django.db import models
|
||||||
from apps.am.models import Area
|
from apps.am.models import Area
|
||||||
from apps.hrm.models import Employee
|
from apps.hrm.models import Employee
|
||||||
from apps.utils.models import BaseModel, CommonAModel, CommonBModel
|
from apps.utils.models import BaseModel, CommonAModel, CommonBModel
|
||||||
from apps.system.models import Dept, Post, User
|
from apps.system.models import Dept, File, Post, User
|
||||||
from apps.third.models import TDevice
|
from apps.third.models import TDevice
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
# Create your models here.
|
# Create your models here.
|
||||||
|
@ -24,6 +24,9 @@ class EventCate(CommonAModel):
|
||||||
filter_area_level = models.PositiveSmallIntegerField('固定音响区域级别过滤', choices=Area.AREA_LEVEL_CHOICES,
|
filter_area_level = models.PositiveSmallIntegerField('固定音响区域级别过滤', choices=Area.AREA_LEVEL_CHOICES,
|
||||||
default=Area.AREA_LEVEL_1)
|
default=Area.AREA_LEVEL_1)
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return self.name
|
||||||
|
|
||||||
|
|
||||||
class NotifySetting(CommonAModel):
|
class NotifySetting(CommonAModel):
|
||||||
"""
|
"""
|
||||||
|
@ -51,7 +54,7 @@ class Event(CommonBModel):
|
||||||
事件
|
事件
|
||||||
"""
|
"""
|
||||||
cate = models.ForeignKey(EventCate, verbose_name='事件种类', on_delete=models.CASCADE)
|
cate = models.ForeignKey(EventCate, verbose_name='事件种类', on_delete=models.CASCADE)
|
||||||
imgs = models.JSONField('事件图片', default=list, null=False, blank=True)
|
imgs = models.ManyToManyField(File, verbose_name='事件图片', blank=True)
|
||||||
area = models.ForeignKey(Area, verbose_name='发生区域', on_delete=models.CASCADE)
|
area = models.ForeignKey(Area, verbose_name='发生区域', on_delete=models.CASCADE)
|
||||||
location = models.JSONField('事件点位坐标', default=dict, null=False, blank=True)
|
location = models.JSONField('事件点位坐标', default=dict, null=False, blank=True)
|
||||||
peope_type = models.CharField('当事人员类型', choices=Employee.PEOPLE_TYPE_CHOICES,
|
peope_type = models.CharField('当事人员类型', choices=Employee.PEOPLE_TYPE_CHOICES,
|
||||||
|
@ -77,7 +80,7 @@ class Remind(BaseModel):
|
||||||
on_delete=models.CASCADE, null=True, blank=True)
|
on_delete=models.CASCADE, null=True, blank=True)
|
||||||
post = models.ForeignKey(Post, verbose_name='岗位',
|
post = models.ForeignKey(Post, verbose_name='岗位',
|
||||||
on_delete=models.CASCADE, null=True, blank=True)
|
on_delete=models.CASCADE, null=True, blank=True)
|
||||||
dept = models.ForeignKey(Dept, verbose_name='部门',
|
dept = models.ForeignKey(Dept, verbose_name='部门',
|
||||||
on_delete=models.CASCADE, null=True, blank=True)
|
on_delete=models.CASCADE, null=True, blank=True)
|
||||||
msg = models.TextField('推送文本', null=True, blank=True)
|
msg = models.TextField('推送文本', null=True, blank=True)
|
||||||
is_read = models.BooleanField('站内信已读', default=False)
|
is_read = models.BooleanField('站内信已读', default=False)
|
||||||
|
|
|
@ -0,0 +1,204 @@
|
||||||
|
# Generated by Django 3.2.12 on 2022-06-20 01:42
|
||||||
|
|
||||||
|
from django.conf import settings
|
||||||
|
from django.db import migrations, models
|
||||||
|
import django.db.models.deletion
|
||||||
|
import django.utils.timezone
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
initial = True
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||||
|
('hrm', '0002_auto_20220617_1124'),
|
||||||
|
('wf', '0001_initial'),
|
||||||
|
('system', '0001_initial'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Rcertificate',
|
||||||
|
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=20, unique=True, verbose_name='证书编号')),
|
||||||
|
('type', models.PositiveSmallIntegerField(choices=[(10, '特种作业证书'), (20, '特种设备操作证书'), (30, '安全管理人员证书')], default=10, verbose_name='证书类型')),
|
||||||
|
('issue_date', models.DateField(verbose_name='发证日期')),
|
||||||
|
('expiration_date', models.DateField(verbose_name='有效期')),
|
||||||
|
('review_date', models.DateField(verbose_name='下一次复审日期')),
|
||||||
|
('file', models.CharField(blank=True, max_length=1000, null=True, verbose_name='文件地址')),
|
||||||
|
('certificate', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='hrm.certificate', verbose_name='关联认可证书')),
|
||||||
|
('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='rcertificate_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'abstract': False,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Remployee',
|
||||||
|
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='姓名')),
|
||||||
|
('phone', models.CharField(max_length=11, verbose_name='手机号')),
|
||||||
|
('photo', models.CharField(max_length=1000, verbose_name='证件照')),
|
||||||
|
('id_number', models.CharField(max_length=100, verbose_name='身份证号')),
|
||||||
|
('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='remployee_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')),
|
||||||
|
('employee', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='hrm.employee', verbose_name='成员信息')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'abstract': False,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Rparty',
|
||||||
|
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(blank=True, max_length=50, null=True, verbose_name='信用代码')),
|
||||||
|
('lawer', models.CharField(blank=True, max_length=20, null=True, verbose_name='法人')),
|
||||||
|
('contacter', models.CharField(max_length=20, verbose_name='联系人')),
|
||||||
|
('phone', models.CharField(max_length=20, verbose_name='联系电话')),
|
||||||
|
('email', models.EmailField(blank=True, max_length=254, null=True, verbose_name='邮箱')),
|
||||||
|
('addresss', models.CharField(blank=True, max_length=200, null=True, verbose_name='企业地址')),
|
||||||
|
('description', models.TextField(blank=True, null=True, verbose_name='概述')),
|
||||||
|
('belong_dept', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='rparty_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='rparty_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')),
|
||||||
|
('dept', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='system.dept', verbose_name='关联部门')),
|
||||||
|
('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='rparty_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'abstract': False,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Rpj',
|
||||||
|
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='名称')),
|
||||||
|
('type', models.PositiveSmallIntegerField(default=10, verbose_name='项目类型')),
|
||||||
|
('contract_number', models.CharField(max_length=20, verbose_name='合同编号')),
|
||||||
|
('come_time', models.DateTimeField(verbose_name='进厂时间')),
|
||||||
|
('leave_time', models.DateTimeField(verbose_name='离厂时间')),
|
||||||
|
('state', models.PositiveSmallIntegerField(default=10, verbose_name='状态')),
|
||||||
|
('belong_dept', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='rpj_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='rpj_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')),
|
||||||
|
('rparty', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rpm.rparty', verbose_name='关联相关方')),
|
||||||
|
('ticket', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='wf.ticket', verbose_name='关联工单')),
|
||||||
|
('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='rpj_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'abstract': False,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Rpjcertificate',
|
||||||
|
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=20, verbose_name='证书编号')),
|
||||||
|
('type', models.PositiveSmallIntegerField(choices=[(10, '特种作业证书'), (20, '特种设备操作证书'), (30, '安全管理人员证书')], default=10, verbose_name='证书类型')),
|
||||||
|
('issue_date', models.DateField(verbose_name='发证日期')),
|
||||||
|
('expiration_date', models.DateField(verbose_name='有效期')),
|
||||||
|
('review_date', models.DateField(verbose_name='下一次复审日期')),
|
||||||
|
('file', models.CharField(blank=True, max_length=1000, null=True, verbose_name='文件地址')),
|
||||||
|
('rcertificate', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='rpm.rcertificate', verbose_name='关联相关方证书')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'abstract': False,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Rpjmember',
|
||||||
|
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='删除标记')),
|
||||||
|
('duty', models.CharField(blank=True, max_length=20, null=True, verbose_name='职责')),
|
||||||
|
('is_manager', models.BooleanField(default=False, verbose_name='是否项目负责人')),
|
||||||
|
('rcertificates', models.ManyToManyField(through='rpm.Rpjcertificate', to='rpm.Rcertificate')),
|
||||||
|
('remployee', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='rpm.remployee', verbose_name='关联人员')),
|
||||||
|
('rpj', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rpm.rpj', verbose_name='关联项目')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'abstract': False,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Rpjfile',
|
||||||
|
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='删除标记')),
|
||||||
|
('file_cate', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='system.dictionary', verbose_name='文件种类')),
|
||||||
|
('files', models.ManyToManyField(blank=True, to='system.File', verbose_name='文件')),
|
||||||
|
('rpj', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rpm.rpj', verbose_name='关联相关方项目')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'abstract': False,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='rpjcertificate',
|
||||||
|
name='rpj_member',
|
||||||
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rpm.rpjmember', verbose_name='关联项目成员'),
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Rfile',
|
||||||
|
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='删除标记')),
|
||||||
|
('file_cate', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='system.dictionary', verbose_name='文件种类')),
|
||||||
|
('files', models.ManyToManyField(to='system.File', verbose_name='文件')),
|
||||||
|
('rparty', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rpm.rparty', verbose_name='关联相关方')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'abstract': False,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='remployee',
|
||||||
|
name='rparty',
|
||||||
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rpm.rparty', verbose_name='所属相关方'),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='remployee',
|
||||||
|
name='rpj',
|
||||||
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='rpm.rpj', verbose_name='最近所属相关方项目'),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='remployee',
|
||||||
|
name='update_by',
|
||||||
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='remployee_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人'),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='rcertificate',
|
||||||
|
name='remployee',
|
||||||
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rpm.remployee', verbose_name='关联相关方成员'),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='rcertificate',
|
||||||
|
name='update_by',
|
||||||
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='rcertificate_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -67,13 +67,13 @@ class Rpj(CommonBDModel):
|
||||||
on_delete=models.CASCADE, null=True, blank=True)
|
on_delete=models.CASCADE, null=True, blank=True)
|
||||||
|
|
||||||
|
|
||||||
class RpjFile(BaseModel):
|
class Rpjfile(BaseModel):
|
||||||
"""
|
"""
|
||||||
相关方项目文件库
|
相关方项目文件库
|
||||||
"""
|
"""
|
||||||
file_cate = models.ForeignKey(Dictionary, verbose_name='文件种类',
|
file_cate = models.ForeignKey(Dictionary, verbose_name='文件种类',
|
||||||
on_delete=models.CASCADE, null=True, blank=True)
|
on_delete=models.CASCADE, null=True, blank=True)
|
||||||
files = models.ManyToManyField(File, verbose_name='文件')
|
files = models.ManyToManyField(File, verbose_name='文件', blank=True)
|
||||||
rpj = models.ForeignKey(Rpj, verbose_name='关联相关方项目', on_delete=models.CASCADE)
|
rpj = models.ForeignKey(Rpj, verbose_name='关联相关方项目', on_delete=models.CASCADE)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
from apps.hrm.models import Certificate, Employee
|
from apps.hrm.models import Certificate, Employee
|
||||||
from apps.hrm.serializers import phone_check
|
from apps.hrm.serializers import phone_check
|
||||||
from apps.rpm.models import Rcertificate, Remployee, Rparty, Rpjcertificate, Rpjmember, Rpj
|
from apps.rpm.models import Rcertificate, Remployee, Rfile, Rparty, Rpjcertificate, Rpjfile, Rpjmember, Rpj
|
||||||
from apps.system.models import Dept
|
from apps.system.models import Dept
|
||||||
from apps.utils.constants import EXCLUDE_FIELDS
|
from apps.utils.constants import EXCLUDE_FIELDS
|
||||||
from apps.utils.serializers import CustomModelSerializer
|
from apps.utils.serializers import CustomModelSerializer
|
||||||
|
@ -22,7 +22,7 @@ class RpartyCreateUpdateSerializer(CustomModelSerializer):
|
||||||
def create(self, validated_data):
|
def create(self, validated_data):
|
||||||
instance = super().create(validated_data)
|
instance = super().create(validated_data)
|
||||||
dept = Dept.objects.create(name=instance.name,
|
dept = Dept.objects.create(name=instance.name,
|
||||||
parent=instance.belong_dept)
|
parent=instance.belong_dept, type='rparty')
|
||||||
instance.dept = dept
|
instance.dept = dept
|
||||||
instance.save()
|
instance.save()
|
||||||
return instance
|
return instance
|
||||||
|
@ -49,7 +49,7 @@ class RpartySimpleSerializer(CustomModelSerializer):
|
||||||
|
|
||||||
|
|
||||||
class RpartyAssignSerializer(serializers.Serializer):
|
class RpartyAssignSerializer(serializers.Serializer):
|
||||||
username = serializers.CharField('用户名')
|
username = serializers.CharField(label='用户名')
|
||||||
|
|
||||||
|
|
||||||
class RfileListSerializer(CustomModelSerializer):
|
class RfileListSerializer(CustomModelSerializer):
|
||||||
|
@ -57,6 +57,10 @@ class RfileListSerializer(CustomModelSerializer):
|
||||||
file_cate_ = DictSerializer(source='file_cate', read_only=True)
|
file_cate_ = DictSerializer(source='file_cate', read_only=True)
|
||||||
files_ = FileSerializer(source='files', many=True, read_only=True)
|
files_ = FileSerializer(source='files', many=True, read_only=True)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = Rfile
|
||||||
|
fields = '__all__'
|
||||||
|
|
||||||
|
|
||||||
class RpjCreateUpdateSerializer(CustomModelSerializer):
|
class RpjCreateUpdateSerializer(CustomModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
|
@ -76,7 +80,7 @@ class RemployeeCreateSerializer(CustomModelSerializer):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Remployee
|
model = Remployee
|
||||||
fields = ['name', 'phone', 'photo', 'id_number']
|
fields = ['name', 'phone', 'photo', 'id_number', 'rparty']
|
||||||
# model = Employee
|
# model = Employee
|
||||||
# exclude = EXCLUDE_FIELDS + ['is_atwork', 'last_check_time',
|
# exclude = EXCLUDE_FIELDS + ['is_atwork', 'last_check_time',
|
||||||
# 'not_work_remark', 'third_info', 'type']
|
# 'not_work_remark', 'third_info', 'type']
|
||||||
|
@ -118,11 +122,11 @@ class RpjmemberCreatesSerializer(CustomModelSerializer):
|
||||||
|
|
||||||
|
|
||||||
class RpjmemberCreateSerializer(CustomModelSerializer):
|
class RpjmemberCreateSerializer(CustomModelSerializer):
|
||||||
rcertificates = serializers.PrimaryKeyRelatedField(label='证书ID', many=True)
|
rcertificates = serializers.PrimaryKeyRelatedField(label='证书ID', many=True, queryset=Rcertificate.objects.all())
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Rpjmember
|
model = Rpjmember
|
||||||
fields = ['employee', 'rpj', 'duty', 'is_manager']
|
fields = ['remployee', 'rpj', 'duty', 'is_manager', 'rcertificates']
|
||||||
|
|
||||||
def create(self, validated_data):
|
def create(self, validated_data):
|
||||||
rpj = validated_data['rpj']
|
rpj = validated_data['rpj']
|
||||||
|
@ -146,7 +150,7 @@ class RpjmemberCreateSerializer(CustomModelSerializer):
|
||||||
|
|
||||||
|
|
||||||
class RpjmemberUpdateSerializer(CustomModelSerializer):
|
class RpjmemberUpdateSerializer(CustomModelSerializer):
|
||||||
rcertificates = serializers.PrimaryKeyRelatedField(label='证书ID', many=True)
|
rcertificates = serializers.PrimaryKeyRelatedField(label='证书ID', many=True, queryset=Rcertificate.objects.all())
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Rpjmember
|
model = Rpjmember
|
||||||
|
@ -173,3 +177,15 @@ class RpjmemberSerializer(CustomModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Rpjmember
|
model = Rpjmember
|
||||||
fields = '__all__'
|
fields = '__all__'
|
||||||
|
|
||||||
|
|
||||||
|
class RpjfileSerializer(CustomModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = Rpjfile
|
||||||
|
fields = '__all__'
|
||||||
|
|
||||||
|
|
||||||
|
class RpjfileUpdateSerializer(CustomModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = Rpjfile
|
||||||
|
fields = ['files']
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
from apps.rpm.models import RpjFile
|
from apps.rpm.views import RpartyViewSet, RemployeeViewSet, RfileViewSet, RpjViewSet, RpjfileViewSet, RpjmemberViewSet
|
||||||
from apps.rpm.views import RpartyViewSet, RemployeeViewSet, RfileViewSet, RpjViewSet, RpjmemberViewSet
|
|
||||||
from django.urls import path, include
|
from django.urls import path, include
|
||||||
from rest_framework.routers import DefaultRouter
|
from rest_framework.routers import DefaultRouter
|
||||||
|
|
||||||
|
@ -12,7 +11,7 @@ router.register('remployee', RemployeeViewSet, basename='remployee')
|
||||||
router.register('rfile', RfileViewSet, basename='rfile')
|
router.register('rfile', RfileViewSet, basename='rfile')
|
||||||
router.register('rpj', RpjViewSet, basename='rpj')
|
router.register('rpj', RpjViewSet, basename='rpj')
|
||||||
router.register('rpj_member', RpjmemberViewSet, basename='rpj_member')
|
router.register('rpj_member', RpjmemberViewSet, basename='rpj_member')
|
||||||
router.register('rpj_file', RpjFile, basename='rpj_file')
|
router.register('rpj_file', RpjfileViewSet, basename='rpj_file')
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path(API_BASE_URL, include(router.urls)),
|
path(API_BASE_URL, include(router.urls)),
|
||||||
]
|
]
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
from django.shortcuts import render
|
from django.shortcuts import render
|
||||||
from apps.hrm.models import Certificate, Employee
|
from apps.hrm.models import Certificate, Employee
|
||||||
from apps.hrm.serializers import CertificateCreateUpdateSerializer, CertificateSerializer, EmployeeSerializer
|
from apps.hrm.serializers import CertificateCreateUpdateSerializer, CertificateSerializer, EmployeeSerializer
|
||||||
from apps.rpm.models import Rcertificate, Remployee, Rparty, Rfile, Rpjmember, Rpj
|
from apps.rpm.models import Rcertificate, Remployee, Rparty, Rfile, Rpjfile, Rpjmember, Rpj
|
||||||
from apps.rpm.serializers import RcertificateCreateUpdateSerializer, RcertificateSerializer, RemployeeCreateSerializer, RemployeeSerializer, RpartyAssignSerializer, RpartyCreateUpdateSerializer, RfileListSerializer, RpartySerializer, RpjListSerializer, RpjmemberCreateSerializer, RpjmemberCreatesSerializer, RpjCreateUpdateSerializer, RpjmemberSerializer, RpjmemberUpdateSerializer
|
from apps.rpm.serializers import RcertificateCreateUpdateSerializer, RcertificateSerializer, RemployeeCreateSerializer, RemployeeSerializer, RpartyAssignSerializer, RpartyCreateUpdateSerializer, RfileListSerializer, RpartySerializer, RpjListSerializer, RpjfileSerializer, RpjfileUpdateSerializer, RpjmemberCreateSerializer, RpjmemberCreatesSerializer, RpjCreateUpdateSerializer, RpjmemberSerializer, RpjmemberUpdateSerializer
|
||||||
from apps.system.models import Post, User, UserPost
|
from apps.system.models import Post, User, UserPost
|
||||||
from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet
|
from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet
|
||||||
from rest_framework.mixins import CreateModelMixin, ListModelMixin, RetrieveModelMixin
|
from rest_framework.mixins import CreateModelMixin, ListModelMixin, RetrieveModelMixin, DestroyModelMixin, UpdateModelMixin
|
||||||
from apps.utils.mixins import CustomDestoryModelMixin
|
from apps.utils.mixins import CustomDestoryModelMixin
|
||||||
from rest_framework.decorators import action
|
from rest_framework.decorators import action
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
|
@ -161,3 +161,22 @@ class RpjmemberViewSet(CustomModelViewSet):
|
||||||
if obj.rpj.state == Rpj.RPJ_CREATE:
|
if obj.rpj.state == Rpj.RPJ_CREATE:
|
||||||
raise ParseError('项目非创建状态不可删除')
|
raise ParseError('项目非创建状态不可删除')
|
||||||
return super().destroy(request, *args, **kwargs)
|
return super().destroy(request, *args, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
|
class RpjfileViewSet(UpdateModelMixin, DestroyModelMixin, ListModelMixin, CustomGenericViewSet):
|
||||||
|
perms_map = {'get': '*', 'put': 'rpj:update', 'delete': 'rpj:update'}
|
||||||
|
queryset = Rpjfile.objects.all()
|
||||||
|
update_serializer_class = RpjfileUpdateSerializer
|
||||||
|
serializer_class = RpjfileSerializer
|
||||||
|
|
||||||
|
def update(self, request, *args, **kwargs):
|
||||||
|
obj = self.get_object()
|
||||||
|
if obj.rpj.state == Rpj.RPJ_CREATE:
|
||||||
|
raise ParseError('项目非创建状态不可修改')
|
||||||
|
return super().update(request, *args, **kwargs)
|
||||||
|
|
||||||
|
def destroy(self, request, *args, **kwargs):
|
||||||
|
obj = self.get_object()
|
||||||
|
if obj.rpj.state == Rpj.RPJ_CREATE:
|
||||||
|
raise ParseError('项目非创建状态不可删除')
|
||||||
|
return super().destroy(request, *args, **kwargs)
|
||||||
|
|
|
@ -51,6 +51,7 @@ urlpatterns = [
|
||||||
path('', include('apps.hrm.urls')),
|
path('', include('apps.hrm.urls')),
|
||||||
path('', include('apps.am.urls')),
|
path('', include('apps.am.urls')),
|
||||||
path('', include('apps.ecm.urls')),
|
path('', include('apps.ecm.urls')),
|
||||||
|
path('', include('apps.rpm.urls')),
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue