feat: ofm 修改 ofm 字段 并重新生成迁移文件
This commit is contained in:
parent
62d0ce87ea
commit
fb87fead4f
|
|
@ -1,5 +1,5 @@
|
||||||
from django_filters import rest_framework as filters
|
from django_filters import rest_framework as filters
|
||||||
from apps.ofm.models import MroomBooking, BorrowRecord, Vehicle
|
from apps.ofm.models import MroomBooking, BorrowRecord, VehicleUse
|
||||||
|
|
||||||
from .models import LendingSeal
|
from .models import LendingSeal
|
||||||
from apps.utils.filters import MyJsonListFilter
|
from apps.utils.filters import MyJsonListFilter
|
||||||
|
|
@ -17,7 +17,7 @@ class MroomBookingFilterset(filters.FilterSet):
|
||||||
|
|
||||||
class VehicleFilterset(filters.FilterSet):
|
class VehicleFilterset(filters.FilterSet):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Vehicle
|
model = VehicleUse
|
||||||
fields = {
|
fields = {
|
||||||
'slot_vehicle__vehreg': ['exact', 'in'],
|
'slot_vehicle__vehreg': ['exact', 'in'],
|
||||||
'slot_vehicle__vdate': ['exact', 'gte', 'lte'],
|
'slot_vehicle__vdate': ['exact', 'gte', 'lte'],
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
# Generated by Django 3.2.12 on 2025-06-25 09:29
|
# Generated by Django 3.2.12 on 2025-11-18 03:08
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
import django.core.validators
|
||||||
from django.db import migrations, models
|
from django.db import migrations, models
|
||||||
import django.db.models.deletion
|
import django.db.models.deletion
|
||||||
import django.utils.timezone
|
import django.utils.timezone
|
||||||
|
|
@ -11,7 +12,9 @@ class Migration(migrations.Migration):
|
||||||
initial = True
|
initial = True
|
||||||
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
('system', '0006_auto_20241213_1249'),
|
||||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||||
|
('wf', '0005_workflow_cate'),
|
||||||
]
|
]
|
||||||
|
|
||||||
operations = [
|
operations = [
|
||||||
|
|
@ -40,13 +43,114 @@ class Migration(migrations.Migration):
|
||||||
('update_time', models.DateTimeField(auto_now=True, 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='删除标记')),
|
('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')),
|
||||||
('title', models.CharField(max_length=100, verbose_name='会议主题')),
|
('title', models.CharField(max_length=100, verbose_name='会议主题')),
|
||||||
|
('note', models.TextField(blank=True, null=True, verbose_name='备注')),
|
||||||
|
('participant_count', models.PositiveIntegerField(default=0, verbose_name='参会人数')),
|
||||||
|
('key_participants', 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='mroombooking_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='mroombooking_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')),
|
('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='mroombooking_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')),
|
||||||
|
('ticket', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='mrooms_ticket', to='wf.ticket', verbose_name='关联会议室')),
|
||||||
('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='mroombooking_update_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='mroombooking_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')),
|
||||||
],
|
],
|
||||||
options={
|
options={
|
||||||
'abstract': False,
|
'abstract': False,
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='VehicleReg',
|
||||||
|
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=50, verbose_name='车辆名称')),
|
||||||
|
('brand', models.CharField(blank=True, max_length=50, null=True, verbose_name='品牌')),
|
||||||
|
('plate', models.CharField(max_length=50, verbose_name='车牌号')),
|
||||||
|
('km', models.PositiveIntegerField(blank=True, null=True, verbose_name='行驶里程')),
|
||||||
|
('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='vehiclereg_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='vehiclereg_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'abstract': False,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='VehicleUse',
|
||||||
|
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='删除标记')),
|
||||||
|
('location', models.CharField(blank=True, max_length=100, null=True, verbose_name='出发地点')),
|
||||||
|
('via', models.CharField(blank=True, max_length=100, null=True, verbose_name='途经地点')),
|
||||||
|
('destination', models.CharField(blank=True, max_length=100, null=True, verbose_name='到达地点')),
|
||||||
|
('start_km', models.PositiveIntegerField(verbose_name='出发公里数')),
|
||||||
|
('end_km', models.PositiveIntegerField(blank=True, null=True, verbose_name='归还公里数')),
|
||||||
|
('actual_km', models.PositiveIntegerField(editable=False, verbose_name='实际行驶公里数')),
|
||||||
|
('is_city', models.BooleanField(default=True, verbose_name='是否市内用车')),
|
||||||
|
('reason', models.CharField(max_length=100, verbose_name='用车事由')),
|
||||||
|
('reception', models.CharField(blank=True, max_length=50, null=True, verbose_name='接待人')),
|
||||||
|
('belong_dept', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='vehicleuse_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='vehicleuse_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')),
|
||||||
|
('ticket', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='vehicle_ticket', to='wf.ticket', verbose_name='关联工单')),
|
||||||
|
('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='vehicleuse_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')),
|
||||||
|
('vehiclereg', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='vehicle_record', to='ofm.vehiclereg')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'abstract': False,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='VehicleSlot',
|
||||||
|
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='删除标记')),
|
||||||
|
('vdate', models.DateField(db_index=True, verbose_name='使用日期')),
|
||||||
|
('slot', models.PositiveIntegerField(help_text='0-47', verbose_name='时段')),
|
||||||
|
('is_inuse', models.BooleanField(default=True, verbose_name='是否占用')),
|
||||||
|
('vehicle_use', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='slot_vehicle', to='ofm.vehicleuse')),
|
||||||
|
('vehreg', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='slot_record', to='ofm.vehiclereg')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'abstract': False,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Publicity',
|
||||||
|
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='删除标记')),
|
||||||
|
('number', models.CharField(blank=True, max_length=50, null=True, verbose_name='记录编号')),
|
||||||
|
('title', models.CharField(max_length=100, verbose_name='送审稿件标题')),
|
||||||
|
('participants', models.CharField(max_length=50, verbose_name='所有撰稿人')),
|
||||||
|
('pub_dept', models.CharField(blank=True, max_length=50, null=True, verbose_name='部室/研究院')),
|
||||||
|
('pfile', models.CharField(blank=True, max_length=100, null=True, verbose_name='稿件路径')),
|
||||||
|
('level', models.JSONField(default=list, help_text="['重要', '一般', '非涉密']", verbose_name='涉密等级')),
|
||||||
|
('content', models.JSONField(default=list, help_text="['武器装备科研生产综合事项', '其它']", verbose_name='稿件内容涉及')),
|
||||||
|
('other_content', models.CharField(blank=True, max_length=100, null=True, verbose_name='其它内容')),
|
||||||
|
('report_purpose', models.CharField(blank=True, max_length=100, null=True, verbose_name='宣传报道目的')),
|
||||||
|
('channel', models.JSONField(default=list, help_text="['互联网', '信息平台', '官微', '公开发行物', '其它']", verbose_name='发布渠道')),
|
||||||
|
('other_channel', models.CharField(blank=True, max_length=50, null=True, verbose_name='其它渠道')),
|
||||||
|
('report_name', models.CharField(blank=True, max_length=50, null=True, verbose_name='报道名称')),
|
||||||
|
('review', models.JSONField(blank=True, default=list, help_text="['内容不涉及国家秘密和商业秘密,申请公开', '内容涉及国家秘密,申请按涉密渠道发布']", null=True, verbose_name='第一撰稿人自审')),
|
||||||
|
('dept_opinion', models.CharField(blank=True, max_length=100, null=True, verbose_name='部门负责人意见')),
|
||||||
|
('disposal_method', models.CharField(blank=True, max_length=50, null=True, verbose_name='处理方式')),
|
||||||
|
('secret_level', models.CharField(blank=True, max_length=50, null=True, verbose_name='秘密等级')),
|
||||||
|
('secret_period', models.CharField(blank=True, max_length=50, null=True, verbose_name='秘密期限')),
|
||||||
|
('dept_opinion_review', models.CharField(blank=True, max_length=100, null=True, verbose_name='部门审查意见')),
|
||||||
|
('publicity_opinion', models.CharField(blank=True, max_length=100, null=True, verbose_name='宣传报道意见')),
|
||||||
|
('belong_dept', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='publicity_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='publicity_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')),
|
||||||
|
('ticket', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='publicity_ticket', to='wf.ticket', verbose_name='关联工单')),
|
||||||
|
('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='publicity_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'abstract': False,
|
||||||
|
},
|
||||||
|
),
|
||||||
migrations.CreateModel(
|
migrations.CreateModel(
|
||||||
name='MroomSlot',
|
name='MroomSlot',
|
||||||
fields=[
|
fields=[
|
||||||
|
|
@ -56,11 +160,83 @@ class Migration(migrations.Migration):
|
||||||
('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')),
|
('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')),
|
||||||
('mdate', models.DateField(db_index=True, verbose_name='会议日期')),
|
('mdate', models.DateField(db_index=True, verbose_name='会议日期')),
|
||||||
('slot', models.PositiveIntegerField(help_text='0-47', verbose_name='时段')),
|
('slot', models.PositiveIntegerField(help_text='0-47', verbose_name='时段')),
|
||||||
|
('is_inuse', models.BooleanField(default=True, verbose_name='是否占用')),
|
||||||
('booking', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='slot_b', to='ofm.mroombooking')),
|
('booking', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='slot_b', to='ofm.mroombooking')),
|
||||||
('mroom', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='slot_m', to='ofm.mroom')),
|
('mroom', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='slot_m', to='ofm.mroom')),
|
||||||
],
|
],
|
||||||
options={
|
options={
|
||||||
'unique_together': {('mroom', 'mdate', 'slot')},
|
'abstract': False,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='LendingSeal',
|
||||||
|
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='删除标记')),
|
||||||
|
('seal', models.JSONField(default=list, help_text='[公章,法人章,财务章,合同章,业务章,其他章]', verbose_name='印章信息')),
|
||||||
|
('seal_other', models.CharField(blank=True, max_length=50, null=True, verbose_name='其他印章')),
|
||||||
|
('filename', models.TextField(verbose_name='文件名称')),
|
||||||
|
('file', models.TextField(verbose_name='文件内容')),
|
||||||
|
('file_count', models.PositiveIntegerField(verbose_name='用印份数')),
|
||||||
|
('is_lending', models.BooleanField(default=False, verbose_name='是否借出')),
|
||||||
|
('contacts', models.CharField(blank=True, max_length=50, null=True, validators=[django.core.validators.RegexValidator('^1[3456789]\\d{9}$', '手机号码格式不正确')], verbose_name='联系方式')),
|
||||||
|
('lending_date', models.DateField(blank=True, null=True, verbose_name='借出日期')),
|
||||||
|
('return_date', models.DateField(blank=True, null=True, verbose_name='拟归还日期')),
|
||||||
|
('actual_return_date', models.DateField(blank=True, null=True, verbose_name='实际归还日期')),
|
||||||
|
('reason', models.CharField(blank=True, max_length=100, null=True, verbose_name='借用理由')),
|
||||||
|
('note', 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='lendingseal_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='lendingseal_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')),
|
||||||
|
('ticket', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='seal_ticket', to='wf.ticket', verbose_name='关联工单')),
|
||||||
|
('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='lendingseal_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'abstract': False,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='FileRecord',
|
||||||
|
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=100, verbose_name='资料名称')),
|
||||||
|
('number', models.CharField(blank=True, max_length=50, null=True, verbose_name='档案编号')),
|
||||||
|
('counts', models.CharField(blank=True, max_length=10, null=True, verbose_name='文件份数')),
|
||||||
|
('location', models.CharField(blank=True, max_length=100, null=True, verbose_name='存放位置')),
|
||||||
|
('contacts', models.CharField(blank=True, max_length=50, null=True, validators=[django.core.validators.RegexValidator('^1[3456789]\\d{9}$', '手机号码格式不正确')], verbose_name='存档人电话')),
|
||||||
|
('reciver', models.CharField(blank=True, max_length=50, null=True, verbose_name='接收人(综合办)')),
|
||||||
|
('remark', models.TextField(blank=True, max_length=200, null=True, verbose_name='备注')),
|
||||||
|
('belong_dept', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='filerecord_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='filerecord_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='filerecord_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'abstract': False,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='BorrowRecord',
|
||||||
|
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='删除标记')),
|
||||||
|
('borrow_date', models.DateField(blank=True, null=True, verbose_name='借阅日期')),
|
||||||
|
('return_date', models.DateField(blank=True, null=True, verbose_name='归还日期')),
|
||||||
|
('contacts', models.CharField(blank=True, max_length=50, null=True, validators=[django.core.validators.RegexValidator('^1[3456789]\\d{9}$', '手机号码格式不正确')], verbose_name='借阅人电话')),
|
||||||
|
('remark', models.JSONField(default=list, help_text="['借阅', '复印', '查阅']", verbose_name='用途')),
|
||||||
|
('belong_dept', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='borrowrecord_belong_dept', to='system.dept', verbose_name='所属部门')),
|
||||||
|
('borrow_file', models.ManyToManyField(related_name='borrow_records', to='ofm.FileRecord')),
|
||||||
|
('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='borrowrecord_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')),
|
||||||
|
('ticket', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='borrow_ticket', to='wf.ticket', verbose_name='关联工单')),
|
||||||
|
('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='borrowrecord_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'abstract': False,
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
|
|
|
||||||
|
|
@ -1,48 +0,0 @@
|
||||||
# Generated by Django 3.2.12 on 2025-09-05 03:07
|
|
||||||
|
|
||||||
from django.conf import settings
|
|
||||||
import django.core.validators
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
import django.utils.timezone
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('wf', '0002_alter_state_filter_dept'),
|
|
||||||
('system', '0006_auto_20241213_1249'),
|
|
||||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
|
||||||
('ofm', '0001_initial'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.CreateModel(
|
|
||||||
name='LendingSeal',
|
|
||||||
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='删除标记')),
|
|
||||||
('seal', models.JSONField(default=list, help_text='{"seal_name": "印章名称"}', verbose_name='印章信息')),
|
|
||||||
('filename', models.TextField(verbose_name='文件名称')),
|
|
||||||
('file', models.TextField(verbose_name='文件内容')),
|
|
||||||
('file_count', models.PositiveIntegerField(verbose_name='用印份数')),
|
|
||||||
('is_lending', models.BooleanField(default=False, verbose_name='是否借出')),
|
|
||||||
('contacts', models.CharField(blank=True, max_length=50, null=True, validators=[django.core.validators.RegexValidator('^1[3456789]\\d{9}$', '手机号码格式不正确')], verbose_name='联系方式')),
|
|
||||||
('lending_date', models.DateField(blank=True, null=True, verbose_name='借出日期')),
|
|
||||||
('return_date', models.DateField(blank=True, null=True, verbose_name='拟归还日期')),
|
|
||||||
('actual_return_date', models.DateField(blank=True, null=True, verbose_name='实际归还日期')),
|
|
||||||
('reason', models.CharField(blank=True, max_length=100, null=True, verbose_name='借用理由')),
|
|
||||||
('note', 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='lendingseal_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='lendingseal_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')),
|
|
||||||
('submit_user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='seal_submit_user', to=settings.AUTH_USER_MODEL, verbose_name='提交人')),
|
|
||||||
('ticket', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='seal_ticket', to='wf.ticket', verbose_name='关联工单')),
|
|
||||||
('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='lendingseal_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')),
|
|
||||||
],
|
|
||||||
options={
|
|
||||||
'abstract': False,
|
|
||||||
},
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,17 +0,0 @@
|
||||||
# Generated by Django 3.2.12 on 2025-09-08 03:11
|
|
||||||
|
|
||||||
from django.db import migrations
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('ofm', '0002_lendingseal'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.RemoveField(
|
|
||||||
model_name='lendingseal',
|
|
||||||
name='submit_user',
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,42 +0,0 @@
|
||||||
# Generated by Django 3.2.12 on 2025-09-10 06:26
|
|
||||||
|
|
||||||
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),
|
|
||||||
('wf', '0002_alter_state_filter_dept'),
|
|
||||||
('ofm', '0003_remove_lendingseal_submit_user'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.CreateModel(
|
|
||||||
name='Vehicle',
|
|
||||||
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='删除标记')),
|
|
||||||
('start_time', models.DateField(blank=True, null=True, verbose_name='出车时间')),
|
|
||||||
('end_time', models.DateField(blank=True, null=True, verbose_name='还车时间')),
|
|
||||||
('location', models.CharField(blank=True, max_length=100, null=True, verbose_name='出发地点')),
|
|
||||||
('destination', models.CharField(blank=True, max_length=100, null=True, verbose_name='到达地点')),
|
|
||||||
('start_km', models.PositiveIntegerField(verbose_name='出发公里数')),
|
|
||||||
('end_km', models.PositiveIntegerField(verbose_name='归还公里数')),
|
|
||||||
('actual_km', models.PositiveIntegerField(editable=False, verbose_name='实际行驶公里数')),
|
|
||||||
('is_city', models.BooleanField(default=True, verbose_name='是否市内用车')),
|
|
||||||
('reason', 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='vehicle_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')),
|
|
||||||
('ticket', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='vehicle_ticket', to='wf.ticket', verbose_name='关联工单')),
|
|
||||||
('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='vehicle_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')),
|
|
||||||
],
|
|
||||||
options={
|
|
||||||
'abstract': False,
|
|
||||||
},
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,18 +0,0 @@
|
||||||
# Generated by Django 3.2.12 on 2025-09-10 06:35
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('ofm', '0004_vehicle'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='vehicle',
|
|
||||||
name='via',
|
|
||||||
field=models.CharField(blank=True, max_length=100, null=True, verbose_name='途经地点'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
# Generated by Django 3.2.12 on 2025-09-11 01:53
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('system', '0006_auto_20241213_1249'),
|
|
||||||
('ofm', '0005_vehicle_via'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='vehicle',
|
|
||||||
name='belong_dept',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='vehicle_belong_dept', to='system.dept', verbose_name='所属部门'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,67 +0,0 @@
|
||||||
# Generated by Django 3.2.12 on 2025-09-11 06:41
|
|
||||||
|
|
||||||
from django.conf import settings
|
|
||||||
import django.core.validators
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
import django.utils.timezone
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('system', '0006_auto_20241213_1249'),
|
|
||||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
|
||||||
('ofm', '0006_vehicle_belong_dept'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='lendingseal',
|
|
||||||
name='seal',
|
|
||||||
field=models.JSONField(default=list, help_text='[公章,法人章,财务章,合同章,业务章,其他章]', verbose_name='印章信息'),
|
|
||||||
),
|
|
||||||
migrations.CreateModel(
|
|
||||||
name='FileRecord',
|
|
||||||
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=100, verbose_name='资料名称')),
|
|
||||||
('number', models.CharField(blank=True, max_length=50, null=True, verbose_name='档案编号')),
|
|
||||||
('counts', models.CharField(blank=True, max_length=10, null=True, verbose_name='文件份数')),
|
|
||||||
('location', models.CharField(blank=True, max_length=100, null=True, verbose_name='存放位置')),
|
|
||||||
('contacts', models.CharField(blank=True, max_length=50, null=True, validators=[django.core.validators.RegexValidator('^1[3456789]\\d{9}$', '手机号码格式不正确')], verbose_name='存档人电话')),
|
|
||||||
('reciver', models.CharField(blank=True, max_length=50, null=True, verbose_name='接收人(综合办)')),
|
|
||||||
('remark', models.TextField(blank=True, max_length=200, null=True, verbose_name='备注')),
|
|
||||||
('belong_dept', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='filerecord_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='filerecord_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='filerecord_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')),
|
|
||||||
],
|
|
||||||
options={
|
|
||||||
'abstract': False,
|
|
||||||
},
|
|
||||||
),
|
|
||||||
migrations.CreateModel(
|
|
||||||
name='BorrowRecord',
|
|
||||||
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='删除标记')),
|
|
||||||
('borrow_date', models.DateField(blank=True, null=True, verbose_name='借阅日期')),
|
|
||||||
('return_date', models.DateField(blank=True, null=True, verbose_name='归还日期')),
|
|
||||||
('contacts', models.CharField(blank=True, max_length=50, null=True, validators=[django.core.validators.RegexValidator('^1[3456789]\\d{9}$', '手机号码格式不正确')], verbose_name='借阅人电话')),
|
|
||||||
('remark', models.JSONField(default=list, help_text=['借阅', '复印', '查阅'], verbose_name='用途')),
|
|
||||||
('belong_dept', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='borrowrecord_belong_dept', to='system.dept', verbose_name='所属部门')),
|
|
||||||
('borrow_file', models.ManyToManyField(related_name='borrow_records', to='ofm.FileRecord')),
|
|
||||||
('borrow_user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='borrow_user', to=settings.AUTH_USER_MODEL)),
|
|
||||||
('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='borrowrecord_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='borrowrecord_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')),
|
|
||||||
],
|
|
||||||
options={
|
|
||||||
'abstract': False,
|
|
||||||
},
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,17 +0,0 @@
|
||||||
# Generated by Django 3.2.12 on 2025-09-12 06:42
|
|
||||||
|
|
||||||
from django.db import migrations
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('ofm', '0007_auto_20250911_1441'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.RemoveField(
|
|
||||||
model_name='borrowrecord',
|
|
||||||
name='borrow_user',
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
# Generated by Django 3.2.12 on 2025-09-12 07:00
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('wf', '0002_alter_state_filter_dept'),
|
|
||||||
('ofm', '0008_remove_borrowrecord_borrow_user'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='borrowrecord',
|
|
||||||
name='ticket',
|
|
||||||
field=models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='borrow_ticket', to='wf.ticket', verbose_name='关联工单'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,53 +0,0 @@
|
||||||
# Generated by Django 3.2.12 on 2025-09-19 01:21
|
|
||||||
|
|
||||||
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', '0006_auto_20241213_1249'),
|
|
||||||
('ofm', '0009_borrowrecord_ticket'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='lendingseal',
|
|
||||||
name='seal_other',
|
|
||||||
field=models.CharField(blank=True, max_length=50, null=True, verbose_name='其他印章'),
|
|
||||||
),
|
|
||||||
migrations.CreateModel(
|
|
||||||
name='Publicity',
|
|
||||||
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='删除标记')),
|
|
||||||
('number', models.CharField(max_length=50, verbose_name='记录编号')),
|
|
||||||
('title', models.CharField(max_length=100, verbose_name='送审稿件标题')),
|
|
||||||
('participants', models.CharField(max_length=50, verbose_name='所有撰稿人')),
|
|
||||||
('level', models.JSONField(default=list, help_text=['重要', '一般', '非涉密'], verbose_name='用途')),
|
|
||||||
('content', models.JSONField(default=list, help_text=['武器装备科研生产综合事项', '其它'], verbose_name='稿件内容涉及')),
|
|
||||||
('other_content', models.CharField(blank=True, max_length=100, null=True, verbose_name='其它内容')),
|
|
||||||
('report_purpose', models.CharField(blank=True, max_length=100, null=True, verbose_name='宣传报道目的')),
|
|
||||||
('channel', models.JSONField(default=list, help_text=['互联网', '信息平台', '官微', '公开发行物', '其它'], verbose_name='发布渠道')),
|
|
||||||
('channel_other', models.CharField(blank=True, max_length=50, null=True, verbose_name='其它渠道')),
|
|
||||||
('other_channel', models.CharField(blank=True, max_length=50, null=True, verbose_name='其它渠道')),
|
|
||||||
('report_name', models.CharField(blank=True, max_length=50, null=True, verbose_name='报道名称')),
|
|
||||||
('review', models.JSONField(default=list, help_text=['内容不涉及国家秘密和商业秘密,申请公开', '内容涉及国家秘密,申请按涉密渠道发布'], verbose_name='第一撰稿人自审')),
|
|
||||||
('dept_opinion', models.JSONField(default=list, help_text=['同意', '不同意'], verbose_name='部门负责人意见')),
|
|
||||||
('dept_opinion_review', models.CharField(blank=True, max_length=100, null=True, verbose_name='部门审查意见')),
|
|
||||||
('publicity_opinion', models.JSONField(default=list, help_text=['同意公开宣传报道', '不同意任何渠道的宣传报道'], verbose_name='宣传统战部审查意见')),
|
|
||||||
('belong_dept', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='publicity_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='publicity_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='publicity_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')),
|
|
||||||
],
|
|
||||||
options={
|
|
||||||
'abstract': False,
|
|
||||||
},
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,27 +0,0 @@
|
||||||
# Generated by Django 3.2.12 on 2025-09-24 05:59
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('ofm', '0010_auto_20250919_0921'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.RemoveField(
|
|
||||||
model_name='publicity',
|
|
||||||
name='channel_other',
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='publicity',
|
|
||||||
name='pfile',
|
|
||||||
field=models.CharField(blank=True, max_length=100, null=True, verbose_name='稿件路径'),
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='publicity',
|
|
||||||
name='pub_dept',
|
|
||||||
field=models.CharField(blank=True, max_length=50, null=True, verbose_name='部室/研究院'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
# Generated by Django 3.2.12 on 2025-09-24 06:07
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('wf', '0003_workflow_view_path'),
|
|
||||||
('ofm', '0011_auto_20250924_1359'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='publicity',
|
|
||||||
name='ticket',
|
|
||||||
field=models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='publicity_ticket', to='wf.ticket', verbose_name='关联工单'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
# Generated by Django 3.2.12 on 2025-09-25 07:41
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('wf', '0003_workflow_view_path'),
|
|
||||||
('ofm', '0012_publicity_ticket'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='mroomslot',
|
|
||||||
name='ticket',
|
|
||||||
field=models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='mrooms_ticket', to='wf.ticket', verbose_name='关联会议室'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,33 +0,0 @@
|
||||||
# Generated by Django 3.2.12 on 2025-09-28 02:23
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('wf', '0003_workflow_view_path'),
|
|
||||||
('ofm', '0013_mroomslot_ticket'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='mroombooking',
|
|
||||||
name='ticket',
|
|
||||||
field=models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='mrooms_ticket', to='wf.ticket', verbose_name='关联会议室'),
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='mroomslot',
|
|
||||||
name='is_inuse',
|
|
||||||
field=models.BooleanField(default=True, verbose_name='是否占用'),
|
|
||||||
),
|
|
||||||
migrations.AlterUniqueTogether(
|
|
||||||
name='mroomslot',
|
|
||||||
unique_together={('mroom', 'mdate', 'slot', 'is_inuse')},
|
|
||||||
),
|
|
||||||
migrations.RemoveField(
|
|
||||||
model_name='mroomslot',
|
|
||||||
name='ticket',
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,18 +0,0 @@
|
||||||
# Generated by Django 3.2.12 on 2025-09-28 06:15
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('ofm', '0014_auto_20250928_1023'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='vehicle',
|
|
||||||
name='end_km',
|
|
||||||
field=models.PositiveIntegerField(blank=True, null=True, verbose_name='归还公里数'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,35 +0,0 @@
|
||||||
# Generated by Django 3.2.12 on 2025-09-29 07:51
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('system', '0006_auto_20241213_1249'),
|
|
||||||
('ofm', '0015_alter_vehicle_end_km'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='mroombooking',
|
|
||||||
name='belong_dept',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='mroombooking_belong_dept', to='system.dept', verbose_name='所属部门'),
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='mroombooking',
|
|
||||||
name='key_participants',
|
|
||||||
field=models.TextField(blank=True, null=True, verbose_name='主要参会领导'),
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='mroombooking',
|
|
||||||
name='note',
|
|
||||||
field=models.TextField(blank=True, null=True, verbose_name='备注'),
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='mroombooking',
|
|
||||||
name='participant_count',
|
|
||||||
field=models.PositiveIntegerField(default=0, verbose_name='参会人数'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,23 +0,0 @@
|
||||||
# Generated by Django 3.2.12 on 2025-10-10 08:31
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('ofm', '0016_auto_20250929_1551'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='publicity',
|
|
||||||
name='secret_period',
|
|
||||||
field=models.CharField(blank=True, max_length=50, null=True, verbose_name='秘密期限'),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='publicity',
|
|
||||||
name='level',
|
|
||||||
field=models.JSONField(default=list, help_text=['重要', '一般', '非涉密'], verbose_name='涉密等级'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,33 +0,0 @@
|
||||||
# Generated by Django 3.2.12 on 2025-10-11 01:22
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('ofm', '0017_auto_20251010_1631'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='publicity',
|
|
||||||
name='dept_opinion',
|
|
||||||
field=models.JSONField(blank=True, default=list, help_text=['同意', '不同意'], null=True, verbose_name='部门负责人意见'),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='publicity',
|
|
||||||
name='number',
|
|
||||||
field=models.CharField(blank=True, max_length=50, null=True, verbose_name='记录编号'),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='publicity',
|
|
||||||
name='publicity_opinion',
|
|
||||||
field=models.JSONField(blank=True, default=list, help_text=['同意公开宣传报道', '不同意任何渠道的宣传报道'], null=True, verbose_name='宣传统战部审查意见'),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='publicity',
|
|
||||||
name='review',
|
|
||||||
field=models.JSONField(blank=True, default=list, help_text=['内容不涉及国家秘密和商业秘密,申请公开', '内容涉及国家秘密,申请按涉密渠道发布'], null=True, verbose_name='第一撰稿人自审'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,28 +0,0 @@
|
||||||
# Generated by Django 3.2.12 on 2025-10-11 03:28
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('ofm', '0018_auto_20251011_0922'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='publicity',
|
|
||||||
name='dept_opinion',
|
|
||||||
field=models.JSONField(default=list, help_text=['同意', '不同意'], verbose_name='部门负责人意见'),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='publicity',
|
|
||||||
name='publicity_opinion',
|
|
||||||
field=models.JSONField(blank=True, default=list, help_text=['同意公开宣传报道', '不同意任何渠道的宣传报道'], verbose_name='宣传统战部审查意见'),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='publicity',
|
|
||||||
name='review',
|
|
||||||
field=models.JSONField(blank=True, default=list, help_text=['内容不涉及国家秘密和商业秘密,申请公开', '内容涉及国家秘密,申请按涉密渠道发布'], verbose_name='第一撰稿人自审'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,28 +0,0 @@
|
||||||
# Generated by Django 3.2.12 on 2025-10-11 06:27
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('ofm', '0019_auto_20251011_1128'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='publicity',
|
|
||||||
name='dept_opinion',
|
|
||||||
field=models.JSONField(blank=True, default=list, help_text=['同意', '不同意'], null=True, verbose_name='部门负责人意见'),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='publicity',
|
|
||||||
name='publicity_opinion',
|
|
||||||
field=models.JSONField(blank=True, default=list, help_text=['同意公开宣传报道', '不同意任何渠道的宣传报道'], null=True, verbose_name='宣传统战部审查意见'),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='publicity',
|
|
||||||
name='review',
|
|
||||||
field=models.JSONField(blank=True, default=list, help_text=['内容不涉及国家秘密和商业秘密,申请公开', '内容涉及国家秘密,申请按涉密渠道发布'], null=True, verbose_name='第一撰稿人自审'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,18 +0,0 @@
|
||||||
# Generated by Django 3.2.12 on 2025-10-13 01:01
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('ofm', '0020_auto_20251011_1427'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='publicity',
|
|
||||||
name='publicity_opinion',
|
|
||||||
field=models.CharField(blank=True, max_length=100, null=True, verbose_name='宣传报道意见'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,17 +0,0 @@
|
||||||
# Generated by Django 3.2.12 on 2025-10-17 06:50
|
|
||||||
|
|
||||||
from django.db import migrations
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('ofm', '0021_alter_publicity_publicity_opinion'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AlterUniqueTogether(
|
|
||||||
name='mroomslot',
|
|
||||||
unique_together=set(),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,49 +0,0 @@
|
||||||
# Generated by Django 3.2.12 on 2025-10-21 06:08
|
|
||||||
|
|
||||||
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 = [
|
|
||||||
('wf', '0004_workflow_view_path2'),
|
|
||||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
|
||||||
('system', '0006_auto_20241213_1249'),
|
|
||||||
('ofm', '0022_alter_mroomslot_unique_together'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.CreateModel(
|
|
||||||
name='PatentInfo',
|
|
||||||
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=100, verbose_name='拟申请专利名称')),
|
|
||||||
('author', models.CharField(max_length=100, verbose_name='发明人(设计人)')),
|
|
||||||
('type', models.CharField(choices=[('invention', '发明专利'), ('utility', '实用新型专利'), ('design', '外观设计专利')], default='invention', max_length=50, verbose_name='专利类型')),
|
|
||||||
('is_public', models.BooleanField(default=False, verbose_name='是否公开')),
|
|
||||||
('area', models.CharField(choices=[('Domestic', '国内申请'), ('Foreign', '国外申请'), (' PCT', 'PCT申请')], default='Domestic', max_length=50, verbose_name='拟申请地域')),
|
|
||||||
('identified', models.BooleanField(default=False, verbose_name='是否进行过科技成果鉴定')),
|
|
||||||
('published_article', models.BooleanField(default=False, verbose_name='是否发表过文章')),
|
|
||||||
('exhibited', models.BooleanField(default=False, verbose_name='是否参与过展会展出')),
|
|
||||||
('applied_to_production', models.BooleanField(default=False, verbose_name='是否参与应用于生产/销售')),
|
|
||||||
('participated_in_exchange', models.BooleanField(default=False, verbose_name='是否参与过技术交流')),
|
|
||||||
('tech_background_pages', models.PositiveIntegerField(blank=True, null=True, verbose_name='技术背景材料页数')),
|
|
||||||
('tech_disclosure_pages', models.PositiveIntegerField(blank=True, null=True, verbose_name='技术交底材料页数')),
|
|
||||||
('novelty_report_pages', models.PositiveIntegerField(blank=True, null=True, verbose_name='查新检索报告页数')),
|
|
||||||
('diagrams_or_photos_pages', models.PositiveIntegerField(blank=True, null=True, verbose_name='图/照片页数或张数')),
|
|
||||||
('belong_dept', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='patentinfo_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='patentinfo_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')),
|
|
||||||
('ticket', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='patentInfo_ticket', to='wf.ticket', verbose_name='关联工单')),
|
|
||||||
('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='patentinfo_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')),
|
|
||||||
],
|
|
||||||
options={
|
|
||||||
'abstract': False,
|
|
||||||
},
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,95 +0,0 @@
|
||||||
# Generated by Django 3.2.12 on 2025-10-22 02:05
|
|
||||||
|
|
||||||
import apps.ofm.models
|
|
||||||
from django.db import migrations, models
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('ofm', '0023_patentinfo'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.RemoveField(
|
|
||||||
model_name='patentinfo',
|
|
||||||
name='applied_to_production',
|
|
||||||
),
|
|
||||||
migrations.RemoveField(
|
|
||||||
model_name='patentinfo',
|
|
||||||
name='diagrams_or_photos_pages',
|
|
||||||
),
|
|
||||||
migrations.RemoveField(
|
|
||||||
model_name='patentinfo',
|
|
||||||
name='exhibited',
|
|
||||||
),
|
|
||||||
migrations.RemoveField(
|
|
||||||
model_name='patentinfo',
|
|
||||||
name='identified',
|
|
||||||
),
|
|
||||||
migrations.RemoveField(
|
|
||||||
model_name='patentinfo',
|
|
||||||
name='novelty_report_pages',
|
|
||||||
),
|
|
||||||
migrations.RemoveField(
|
|
||||||
model_name='patentinfo',
|
|
||||||
name='participated_in_exchange',
|
|
||||||
),
|
|
||||||
migrations.RemoveField(
|
|
||||||
model_name='patentinfo',
|
|
||||||
name='published_article',
|
|
||||||
),
|
|
||||||
migrations.RemoveField(
|
|
||||||
model_name='patentinfo',
|
|
||||||
name='tech_background_pages',
|
|
||||||
),
|
|
||||||
migrations.RemoveField(
|
|
||||||
model_name='patentinfo',
|
|
||||||
name='tech_disclosure_pages',
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='patentinfo',
|
|
||||||
name='other_area',
|
|
||||||
field=models.CharField(blank=True, max_length=50, null=True, verbose_name='其它申请地域'),
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='patentinfo',
|
|
||||||
name='tech_file',
|
|
||||||
field=models.JSONField(default=list, help_text='技术文件信息列表,每个条目包含name(名称)page(页数)字段', verbose_name='技术文件'),
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='patentinfo',
|
|
||||||
name='tech_status',
|
|
||||||
field=models.JSONField(blank=True, default=list, help_text='技术状态信息列表,每个条目包含name(名称)、status(状态)、file(文件)字段', verbose_name='技术状态'),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='borrowrecord',
|
|
||||||
name='remark',
|
|
||||||
field=models.JSONField(default=list, help_text="['借阅', '复印', '查阅']", verbose_name='用途'),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='publicity',
|
|
||||||
name='channel',
|
|
||||||
field=models.JSONField(default=list, help_text="['互联网', '信息平台', '官微', '公开发行物', '其它']", verbose_name='发布渠道'),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='publicity',
|
|
||||||
name='content',
|
|
||||||
field=models.JSONField(default=list, help_text="['武器装备科研生产综合事项', '其它']", verbose_name='稿件内容涉及'),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='publicity',
|
|
||||||
name='dept_opinion',
|
|
||||||
field=models.JSONField(blank=True, default=list, help_text="['同意', '不同意']", null=True, verbose_name='部门负责人意见'),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='publicity',
|
|
||||||
name='level',
|
|
||||||
field=models.JSONField(default=list, help_text="['重要', '一般', '非涉密']", verbose_name='涉密等级'),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='publicity',
|
|
||||||
name='review',
|
|
||||||
field=models.JSONField(blank=True, default=list, help_text="['内容不涉及国家秘密和商业秘密,申请公开', '内容涉及国家秘密,申请按涉密渠道发布']", null=True, verbose_name='第一撰稿人自审'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,18 +0,0 @@
|
||||||
# Generated by Django 3.2.12 on 2025-10-24 05:46
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('ofm', '0024_auto_20251022_1005'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='patentinfo',
|
|
||||||
name='area',
|
|
||||||
field=models.CharField(choices=[('Domestic', '国内申请'), ('Foreign', '国外申请'), ('PCT', 'PCT申请')], default='Domestic', max_length=50, verbose_name='拟申请地域'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,41 +0,0 @@
|
||||||
# Generated by Django 3.2.12 on 2025-10-29 03:13
|
|
||||||
|
|
||||||
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),
|
|
||||||
('wf', '0004_workflow_view_path2'),
|
|
||||||
('ofm', '0025_alter_patentinfo_area'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.CreateModel(
|
|
||||||
name='PaperSe',
|
|
||||||
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='删除标记')),
|
|
||||||
('paper_name', models.CharField(max_length=100, verbose_name='拟发表论文名称')),
|
|
||||||
('publication_name', models.CharField(max_length=100, verbose_name='拟投期刊名称')),
|
|
||||||
('author', models.CharField(max_length=100, verbose_name='作者')),
|
|
||||||
('paper_type', models.CharField(max_length=100, verbose_name='拟发表文章类型')),
|
|
||||||
('is_chinese_core', models.BooleanField(default=False, verbose_name='是否为中文核心')),
|
|
||||||
('is_sci', models.BooleanField(default=False, verbose_name='是否被SCI/EI收录')),
|
|
||||||
('tech_status', models.JSONField(blank=True, default=list, help_text='技术状态信息列表,每个条目包含name(名称)、status(状态)、file(文件)字段', verbose_name='技术状态')),
|
|
||||||
('tech_file', models.JSONField(default=list, help_text='技术文件信息列表,每个条目包含name(名称)page(页数)字段', verbose_name='技术文件')),
|
|
||||||
('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='paperse_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')),
|
|
||||||
('ticket', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='paperse_ticket', to='wf.ticket', verbose_name='关联工单')),
|
|
||||||
('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='paperse_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')),
|
|
||||||
],
|
|
||||||
options={
|
|
||||||
'abstract': False,
|
|
||||||
},
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,44 +0,0 @@
|
||||||
# Generated by Django 3.2.12 on 2025-10-29 06:26
|
|
||||||
|
|
||||||
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),
|
|
||||||
('wf', '0004_workflow_view_path2'),
|
|
||||||
('ofm', '0026_paperse'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.CreateModel(
|
|
||||||
name='Papersecret',
|
|
||||||
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='删除标记')),
|
|
||||||
('paper_name', models.CharField(max_length=100, verbose_name='拟发表论文名称')),
|
|
||||||
('publication_name', models.CharField(max_length=100, verbose_name='拟投期刊名称')),
|
|
||||||
('author', models.CharField(max_length=100, verbose_name='作者')),
|
|
||||||
('paper_type', models.CharField(max_length=100, verbose_name='拟发表文章类型')),
|
|
||||||
('is_chinese_core', models.BooleanField(default=False, verbose_name='是否为中文核心')),
|
|
||||||
('is_sci', models.BooleanField(default=False, verbose_name='是否被SCI/EI收录')),
|
|
||||||
('tech_status', models.JSONField(blank=True, default=list, help_text='技术状态信息列表,每个条目包含name(名称)、status(状态)、file(文件)字段', verbose_name='技术状态')),
|
|
||||||
('tech_file', models.JSONField(default=list, help_text='技术文件信息列表,每个条目包含name(名称)page(页数)字段', verbose_name='技术文件')),
|
|
||||||
('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='papersecret_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')),
|
|
||||||
('ticket', models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='paperse_ticket', to='wf.ticket', verbose_name='关联工单')),
|
|
||||||
('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='papersecret_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')),
|
|
||||||
],
|
|
||||||
options={
|
|
||||||
'abstract': False,
|
|
||||||
},
|
|
||||||
),
|
|
||||||
migrations.DeleteModel(
|
|
||||||
name='PaperSe',
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
# Generated by Django 3.2.12 on 2025-10-30 05:55
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('system', '0006_auto_20241213_1249'),
|
|
||||||
('ofm', '0027_auto_20251029_1426'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='papersecret',
|
|
||||||
name='belong_dept',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='papersecret_belong_dept', to='system.dept', verbose_name='所属部门'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,35 +0,0 @@
|
||||||
# Generated by Django 3.2.12 on 2025-11-03 01:39
|
|
||||||
|
|
||||||
from django.db import migrations
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('ofm', '0028_papersecret_belong_dept'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.RemoveField(
|
|
||||||
model_name='patentinfo',
|
|
||||||
name='belong_dept',
|
|
||||||
),
|
|
||||||
migrations.RemoveField(
|
|
||||||
model_name='patentinfo',
|
|
||||||
name='create_by',
|
|
||||||
),
|
|
||||||
migrations.RemoveField(
|
|
||||||
model_name='patentinfo',
|
|
||||||
name='ticket',
|
|
||||||
),
|
|
||||||
migrations.RemoveField(
|
|
||||||
model_name='patentinfo',
|
|
||||||
name='update_by',
|
|
||||||
),
|
|
||||||
migrations.DeleteModel(
|
|
||||||
name='Papersecret',
|
|
||||||
),
|
|
||||||
migrations.DeleteModel(
|
|
||||||
name='PatentInfo',
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,23 +0,0 @@
|
||||||
# Generated by Django 3.2.12 on 2025-11-05 09:15
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('ofm', '0029_auto_20251103_0939'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='vehicle',
|
|
||||||
name='end_time',
|
|
||||||
field=models.DateTimeField(blank=True, null=True, verbose_name='还车时间'),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='vehicle',
|
|
||||||
name='start_time',
|
|
||||||
field=models.DateTimeField(blank=True, null=True, verbose_name='出车时间'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,28 +0,0 @@
|
||||||
# Generated by Django 3.2.12 on 2025-11-06 08:08
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('ofm', '0030_auto_20251105_1715'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='publicity',
|
|
||||||
name='disposal_method',
|
|
||||||
field=models.CharField(blank=True, max_length=50, null=True, verbose_name='处理方式'),
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='publicity',
|
|
||||||
name='secret_level',
|
|
||||||
field=models.CharField(blank=True, max_length=50, null=True, verbose_name='秘密等级'),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='publicity',
|
|
||||||
name='dept_opinion',
|
|
||||||
field=models.CharField(blank=True, max_length=100, null=True, verbose_name='部门负责人意见'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,70 +0,0 @@
|
||||||
# Generated by Django 3.2.12 on 2025-11-17 08:15
|
|
||||||
|
|
||||||
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),
|
|
||||||
('ofm', '0031_auto_20251106_1608'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.CreateModel(
|
|
||||||
name='VehicleReg',
|
|
||||||
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=50, verbose_name='车辆名称')),
|
|
||||||
('brand', models.CharField(blank=True, max_length=50, null=True, verbose_name='品牌')),
|
|
||||||
('plate', models.CharField(max_length=50, verbose_name='车牌号')),
|
|
||||||
('km', models.PositiveIntegerField(blank=True, null=True, verbose_name='行驶里程')),
|
|
||||||
('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='vehiclereg_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='vehiclereg_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')),
|
|
||||||
],
|
|
||||||
options={
|
|
||||||
'abstract': False,
|
|
||||||
},
|
|
||||||
),
|
|
||||||
migrations.RemoveField(
|
|
||||||
model_name='vehicle',
|
|
||||||
name='end_time',
|
|
||||||
),
|
|
||||||
migrations.RemoveField(
|
|
||||||
model_name='vehicle',
|
|
||||||
name='start_time',
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='vehicle',
|
|
||||||
name='reception',
|
|
||||||
field=models.CharField(blank=True, max_length=50, null=True, verbose_name='接待人'),
|
|
||||||
),
|
|
||||||
migrations.CreateModel(
|
|
||||||
name='VehicleSlot',
|
|
||||||
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='删除标记')),
|
|
||||||
('vdate', models.DateField(db_index=True, verbose_name='使用日期')),
|
|
||||||
('slot', models.PositiveIntegerField(help_text='0-47', verbose_name='时段')),
|
|
||||||
('is_inuse', models.BooleanField(default=True, verbose_name='是否占用')),
|
|
||||||
('vehicle', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='slot_vehicle', to='ofm.vehicle')),
|
|
||||||
('vehreg', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='slot_record', to='ofm.vehiclereg')),
|
|
||||||
],
|
|
||||||
options={
|
|
||||||
'abstract': False,
|
|
||||||
},
|
|
||||||
),
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='vehicle',
|
|
||||||
name='vehiclereg',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='vehicle_record', to='ofm.vehiclereg'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -53,8 +53,8 @@ class VehicleReg(CommonADModel):
|
||||||
plate = models.CharField('车牌号', max_length=50)
|
plate = models.CharField('车牌号', max_length=50)
|
||||||
km = models.PositiveIntegerField('行驶里程', null=True, blank=True)
|
km = models.PositiveIntegerField('行驶里程', null=True, blank=True)
|
||||||
|
|
||||||
class Vehicle(CommonBDModel):
|
class VehicleUse(CommonBDModel):
|
||||||
"""TN: 用车申请"""
|
"""TN: 用车记录"""
|
||||||
vehiclereg = models.ForeignKey(VehicleReg, on_delete=models.CASCADE, related_name="vehicle_record", null=True, blank=True)
|
vehiclereg = models.ForeignKey(VehicleReg, on_delete=models.CASCADE, related_name="vehicle_record", null=True, blank=True)
|
||||||
location = models.CharField('出发地点', null=True, blank=True, max_length=100)
|
location = models.CharField('出发地点', null=True, blank=True, max_length=100)
|
||||||
via = models.CharField('途经地点', null=True, blank=True, max_length=100)
|
via = models.CharField('途经地点', null=True, blank=True, max_length=100)
|
||||||
|
|
@ -82,7 +82,7 @@ class Vehicle(CommonBDModel):
|
||||||
|
|
||||||
class VehicleSlot(BaseModel):
|
class VehicleSlot(BaseModel):
|
||||||
vehreg = models.ForeignKey(VehicleReg, on_delete=models.CASCADE, related_name="slot_record")
|
vehreg = models.ForeignKey(VehicleReg, on_delete=models.CASCADE, related_name="slot_record")
|
||||||
vehicle = models.ForeignKey(Vehicle, on_delete=models.CASCADE, related_name="slot_vehicle")
|
vehicle_use = models.ForeignKey(VehicleUse, on_delete=models.CASCADE, related_name="slot_vehicle")
|
||||||
vdate = models.DateField('使用日期', db_index=True)
|
vdate = models.DateField('使用日期', db_index=True)
|
||||||
slot = models.PositiveIntegerField('时段', help_text='0-47')
|
slot = models.PositiveIntegerField('时段', help_text='0-47')
|
||||||
is_inuse = models.BooleanField('是否占用', default=True)
|
is_inuse = models.BooleanField('是否占用', default=True)
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
from .models import (Mroom, MroomBooking, MroomSlot, LendingSeal, Vehicle, FileRecord, BorrowRecord, Publicity, VehicleReg, VehicleSlot)
|
from .models import (Mroom, MroomBooking, MroomSlot, LendingSeal, VehicleUse, FileRecord, BorrowRecord, Publicity, VehicleReg, VehicleSlot)
|
||||||
from apps.utils.serializers import CustomModelSerializer
|
from apps.utils.serializers import CustomModelSerializer
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
from django.db import transaction
|
from django.db import transaction
|
||||||
|
|
@ -70,7 +70,7 @@ class VehicleRecordSerializer(CustomModelSerializer):
|
||||||
fields = '__all__'
|
fields = '__all__'
|
||||||
|
|
||||||
|
|
||||||
class VehicleSerializer(CustomModelSerializer):
|
class VehicleUseSerializer(CustomModelSerializer):
|
||||||
vehreg = serializers.PrimaryKeyRelatedField(queryset=VehicleReg.objects.all(), write_only=True, label="车辆信息")
|
vehreg = serializers.PrimaryKeyRelatedField(queryset=VehicleReg.objects.all(), write_only=True, label="车辆信息")
|
||||||
vdate = serializers.DateField(write_only=True, label="预订日期")
|
vdate = serializers.DateField(write_only=True, label="预订日期")
|
||||||
slots = serializers.ListField(child=serializers.IntegerField(), write_only=True, label="时段索引")
|
slots = serializers.ListField(child=serializers.IntegerField(), write_only=True, label="时段索引")
|
||||||
|
|
@ -79,7 +79,7 @@ class VehicleSerializer(CustomModelSerializer):
|
||||||
belong_dept_name = serializers.CharField(source='belong_dept.name', read_only=True)
|
belong_dept_name = serializers.CharField(source='belong_dept.name', read_only=True)
|
||||||
ticket_ = TicketSimpleSerializer(source='ticket', read_only=True)
|
ticket_ = TicketSimpleSerializer(source='ticket', read_only=True)
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Vehicle
|
model = VehicleUse
|
||||||
fields = '__all__'
|
fields = '__all__'
|
||||||
read_only_fields = EXCLUDE_FIELDS + ['actual_km']
|
read_only_fields = EXCLUDE_FIELDS + ['actual_km']
|
||||||
extra_kwargs = {'belong_dept': {'required': True}}
|
extra_kwargs = {'belong_dept': {'required': True}}
|
||||||
|
|
@ -88,31 +88,32 @@ class VehicleSerializer(CustomModelSerializer):
|
||||||
vehreg = validated_data.pop('vehreg')
|
vehreg = validated_data.pop('vehreg')
|
||||||
slots = validated_data.pop('slots')
|
slots = validated_data.pop('slots')
|
||||||
vdate = validated_data.pop('vdate')
|
vdate = validated_data.pop('vdate')
|
||||||
vehicle = super().create(validated_data)
|
vehicle_use = super().create(validated_data)
|
||||||
VehicleSlot.objects.filter(vehicle=vehicle).delete()
|
VehicleSlot.objects.filter(vehicle_use=vehicle_use).delete()
|
||||||
for slot in slots:
|
for slot in slots:
|
||||||
if slot < 0 or slot > 47:
|
if slot < 0 or slot > 47:
|
||||||
raise ParseError("时段索引超出范围")
|
raise ParseError("时段索引超出范围")
|
||||||
ms_exists = VehicleSlot.objects.filter(vehreg=vehreg, vdate=vdate, slot=slot, is_inuse=True).exists()
|
ms_exists = VehicleSlot.objects.filter(vehreg=vehreg, vdate=vdate, slot=slot, is_inuse=True).exists()
|
||||||
if ms_exists:
|
if ms_exists:
|
||||||
raise ParseError("时段已预订,请刷新重选")
|
raise ParseError("时段已预订,请刷新重选")
|
||||||
VehicleSlot.objects.create(vehicle=vehicle, slot=slot, vdate=vdate, vehreg=vehreg, is_inuse=True)
|
VehicleSlot.objects.create(vehicle_use=vehicle_use, slot=slot, vdate=vdate, vehreg=vehreg, is_inuse=True)
|
||||||
return vehicle
|
return vehicle_use
|
||||||
|
|
||||||
def update(self, instance, validated_data):
|
def update(self, instance, validated_data):
|
||||||
vehreg = validated_data.pop('vehreg')
|
vehreg = validated_data.pop('vehreg')
|
||||||
slots = validated_data.pop('slots')
|
slots = validated_data.pop('slots')
|
||||||
vdate = validated_data.pop('vdate')
|
vdate = validated_data.pop('vdate')
|
||||||
vehicle = super().update(instance, validated_data)
|
vehicle_use = super().update(instance, validated_data)
|
||||||
VehicleSlot.objects.filter(vehicle=vehicle).delete()
|
VehicleSlot.objects.filter(vehicle_use=vehicle_use).delete()
|
||||||
for slot in slots:
|
for slot in slots:
|
||||||
if slot < 0 or slot > 47:
|
if slot < 0 or slot > 47:
|
||||||
raise ParseError("时段索引超出范围")
|
raise ParseError("时段索引超出范围")
|
||||||
ms_exists = VehicleSlot.objects.filter(vehreg=vehreg, vdate=vdate, slot=slot, is_inuse=True).exists()
|
ms_exists = VehicleSlot.objects.filter(vehreg=vehreg, vdate=vdate, slot=slot, is_inuse=True).exists()
|
||||||
if ms_exists:
|
if ms_exists:
|
||||||
raise ParseError("时段已预订,请刷新重选")
|
raise ParseError("时段已预订,请刷新重选")
|
||||||
VehicleSlot.objects.create(vehicle=vehicle, slot=slot, vdate=vdate, vehreg=vehreg, is_inuse=True)
|
VehicleSlot.objects.create(vehicle_use=vehicle_use, slot=slot, vdate=vdate, vehreg=vehreg, is_inuse=True)
|
||||||
return vehicle
|
return vehicle_use
|
||||||
|
|
||||||
|
|
||||||
class VehSlotSerializer(CustomModelSerializer):
|
class VehSlotSerializer(CustomModelSerializer):
|
||||||
veh_name = serializers.CharField(source='vehreg.name', read_only=True)
|
veh_name = serializers.CharField(source='vehreg.name', read_only=True)
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
from django.urls import path, include
|
from django.urls import path, include
|
||||||
from rest_framework.routers import DefaultRouter
|
from rest_framework.routers import DefaultRouter
|
||||||
from apps.ofm.views import (MroomViewSet, MroomBookingViewSet, MroomSlotViewSet,LendingSealViewSet, VehicleViewSet,
|
from apps.ofm.views import (MroomViewSet, MroomBookingViewSet, MroomSlotViewSet,LendingSealViewSet, VehicleUseViewSet,
|
||||||
VehicleRegViewSet, VehicleSlotViewSet, FilerecordViewSet, FileborrowViewSet, PublicityViewSet)
|
VehicleRegViewSet, VehicleSlotViewSet, FilerecordViewSet, FileborrowViewSet, PublicityViewSet)
|
||||||
|
|
||||||
API_BASE_URL = 'api/ofm/'
|
API_BASE_URL = 'api/ofm/'
|
||||||
|
|
@ -12,9 +12,9 @@ router.register('mroombooking', MroomBookingViewSet, basename='mroombooking')
|
||||||
router.register('mroomslot', MroomSlotViewSet, basename='mroomslot')
|
router.register('mroomslot', MroomSlotViewSet, basename='mroomslot')
|
||||||
# router.register('sealmanage', SealManageViewSet, basename='sealmanage')
|
# router.register('sealmanage', SealManageViewSet, basename='sealmanage')
|
||||||
router.register('lendingseal', LendingSealViewSet, basename='lendingseal')
|
router.register('lendingseal', LendingSealViewSet, basename='lendingseal')
|
||||||
router.register('vehicle', VehicleViewSet, basename='vehicle')
|
router.register('vehicle-use', VehicleUseViewSet, basename='vehicle_use')
|
||||||
router.register('vsolt', VehicleSlotViewSet, basename='vslot')
|
router.register('vsolt', VehicleSlotViewSet, basename='vslot')
|
||||||
router.register('vreg', VehicleRegViewSet, basename='vreg')
|
router.register('vehicle', VehicleRegViewSet, basename='vehicle')
|
||||||
router.register('filerecord', FilerecordViewSet, basename='filerecord')
|
router.register('filerecord', FilerecordViewSet, basename='filerecord')
|
||||||
router.register('fileborrow', FileborrowViewSet, basename='fileborrow')
|
router.register('fileborrow', FileborrowViewSet, basename='fileborrow')
|
||||||
router.register('publicity', PublicityViewSet, basename='publicity')
|
router.register('publicity', PublicityViewSet, basename='publicity')
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
from django.shortcuts import render
|
from django.shortcuts import render
|
||||||
from apps.utils.viewsets import CustomModelViewSet, CustomGenericViewSet
|
from apps.utils.viewsets import CustomModelViewSet, CustomGenericViewSet
|
||||||
from .models import Mroom, MroomBooking, MroomSlot, LendingSeal, Vehicle, VehicleSlot, VehicleReg, FileRecord, BorrowRecord, Publicity
|
from .models import Mroom, MroomBooking, MroomSlot, LendingSeal, VehicleUse, VehicleSlot, VehicleReg, FileRecord, BorrowRecord, Publicity
|
||||||
|
|
||||||
from .serializers import (MroomSerializer, MroomBookingSerializer, MroomSlotSerializer, LendingSealSerializer,
|
from .serializers import (MroomSerializer, MroomBookingSerializer, MroomSlotSerializer, LendingSealSerializer,
|
||||||
VehicleSerializer, VehicleRecordSerializer, VehSlotSerializer, FileRecordSerializer, BorrowRecordSerializer, PublicitySerializer)
|
VehicleUseSerializer, VehicleRecordSerializer, VehSlotSerializer, FileRecordSerializer, BorrowRecordSerializer, PublicitySerializer)
|
||||||
from apps.utils.mixins import CustomListModelMixin
|
from apps.utils.mixins import CustomListModelMixin
|
||||||
from rest_framework.exceptions import ParseError
|
from rest_framework.exceptions import ParseError
|
||||||
from apps.ofm.filters import MroomBookingFilterset, SealFilter, BorrowRecordFilter, VehicleFilterset
|
from apps.ofm.filters import MroomBookingFilterset, SealFilter, BorrowRecordFilter, VehicleFilterset
|
||||||
|
|
@ -133,22 +133,22 @@ class VehicleRegViewSet(CustomModelViewSet):
|
||||||
serializer_class = VehicleRecordSerializer
|
serializer_class = VehicleRecordSerializer
|
||||||
ordering = ["-create_time"]
|
ordering = ["-create_time"]
|
||||||
|
|
||||||
class VehicleViewSet(CustomModelViewSet):
|
class VehicleUseViewSet(CustomModelViewSet):
|
||||||
"""list: 会议室预订
|
"""list: 车辆使用
|
||||||
|
|
||||||
会议室预订
|
车辆使用
|
||||||
"""
|
"""
|
||||||
queryset = Vehicle.objects.all()
|
queryset = VehicleUse.objects.all()
|
||||||
serializer_class = VehicleSerializer
|
serializer_class = VehicleUseSerializer
|
||||||
select_related_fields = ["create_by", "ticket", "belong_dept"]
|
select_related_fields = ["create_by", "ticket", "belong_dept"]
|
||||||
filterset_class = VehicleFilterset
|
filterset_class = VehicleFilterset
|
||||||
|
|
||||||
def add_info_for_list(self, data):
|
def add_info_for_list(self, data):
|
||||||
vehicle_ids = [d["id"] for d in data]
|
vehicle_ids = [d["id"] for d in data]
|
||||||
slots = VehicleSlot.objects.filter(vehicle__in=vehicle_ids).order_by("vehreg", "vehicle", "vdate", "slot")
|
slots = VehicleSlot.objects.filter(vehicle__in=vehicle_ids).order_by("vehreg", "vehicle_use", "vdate", "slot")
|
||||||
vehicle_info = {}
|
vehicle_info = {}
|
||||||
for slot in slots:
|
for slot in slots:
|
||||||
vehicle_id = slot.vehicle.id
|
vehicle_id = slot.vehicle_use.id
|
||||||
|
|
||||||
if vehicle_id not in vehicle_info:
|
if vehicle_id not in vehicle_info:
|
||||||
vehicle_info[vehicle_id] = {
|
vehicle_info[vehicle_id] = {
|
||||||
|
|
@ -192,7 +192,7 @@ class VehicleViewSet(CustomModelViewSet):
|
||||||
return f"{hours:02d}:{minutes:02d}"
|
return f"{hours:02d}:{minutes:02d}"
|
||||||
|
|
||||||
def perform_update(self, serializer):
|
def perform_update(self, serializer):
|
||||||
ins:Vehicle = self.get_object()
|
ins:VehicleUse = self.get_object()
|
||||||
ticket = ins.ticket
|
ticket = ins.ticket
|
||||||
if ticket is None or ticket.state.type == 1:
|
if ticket is None or ticket.state.type == 1:
|
||||||
pass
|
pass
|
||||||
|
|
@ -222,7 +222,7 @@ class VehicleSlotViewSet(CustomListModelMixin, CustomGenericViewSet):
|
||||||
"""
|
"""
|
||||||
queryset = VehicleSlot.objects.all()
|
queryset = VehicleSlot.objects.all()
|
||||||
serializer_class = VehSlotSerializer
|
serializer_class = VehSlotSerializer
|
||||||
filterset_fields = ["vehreg", "vehicle", "vdate", "is_inuse"]
|
filterset_fields = ["vehreg", "vehicle_use", "vdate", "is_inuse"]
|
||||||
|
|
||||||
|
|
||||||
class FilerecordViewSet(CustomModelViewSet):
|
class FilerecordViewSet(CustomModelViewSet):
|
||||||
|
|
@ -258,120 +258,3 @@ class PublicityViewSet(CustomModelViewSet):
|
||||||
ordering = ["-create_time", "number"]
|
ordering = ["-create_time", "number"]
|
||||||
|
|
||||||
|
|
||||||
# class PatentInfoViewSet(CustomModelViewSet):
|
|
||||||
# """list: 专利
|
|
||||||
|
|
||||||
# 专利
|
|
||||||
# """
|
|
||||||
# queryset = PatentInfo.objects.all()
|
|
||||||
# serializer_class = PatentInfoSerializer
|
|
||||||
# filterset_fields = ["name", "author", "type"]
|
|
||||||
# ordering = ["-create_time", "name", "author", "type"]
|
|
||||||
|
|
||||||
|
|
||||||
# class PapersecretViewSet(CustomModelViewSet):
|
|
||||||
# """list: 论文申密审批
|
|
||||||
|
|
||||||
# 论文申密审批
|
|
||||||
# """
|
|
||||||
# queryset = Papersecret.objects.all()
|
|
||||||
# serializer_class = PaperSeSerializer
|
|
||||||
# filterset_fields = ["paper_name", "author"]
|
|
||||||
# ordering = ["-create_time", "paper_name"]
|
|
||||||
|
|
||||||
|
|
||||||
# class PatentRecordViewSet(CustomModelViewSet):
|
|
||||||
# """list: 专利台账登记
|
|
||||||
|
|
||||||
# 专利台账登记
|
|
||||||
# """
|
|
||||||
# queryset = PatentRecord.objects.all()
|
|
||||||
# serializer_class = PatentRecordSerializer
|
|
||||||
# select_related_fields = ["patent"]
|
|
||||||
# filterset_fields = ["title", "volume_number","inventors"]
|
|
||||||
# ordering = ["-create_time", "title", "type"]
|
|
||||||
# search_fields = ["title", "volume_number", "inventors"]
|
|
||||||
|
|
||||||
# def get_queryset(self):
|
|
||||||
# qs = super().get_queryset()
|
|
||||||
# patent_type = self.request.query_params.get('patent_type', None)
|
|
||||||
# if patent_type:
|
|
||||||
# qs = qs.filter(patent__type=patent_type)
|
|
||||||
# return qs
|
|
||||||
|
|
||||||
|
|
||||||
# @action(detail=False, methods=['get'])
|
|
||||||
# def patent_name(self, request):
|
|
||||||
# """获取专利列表"""
|
|
||||||
# search = request.query_params.get('search', '')
|
|
||||||
# queryset = PatentInfo.objects.all()
|
|
||||||
# if search:
|
|
||||||
# queryset = queryset.filter(name__icontains=search)
|
|
||||||
# patents = [{'id': patent.id, 'name': patent.name} for patent in queryset]
|
|
||||||
# return Response(patents)
|
|
||||||
|
|
||||||
|
|
||||||
# class PlatformViewSet(CustomModelViewSet):
|
|
||||||
# """list: 平台
|
|
||||||
|
|
||||||
# 平台
|
|
||||||
# """
|
|
||||||
# queryset = Platform.objects.all()
|
|
||||||
# serializer_class = PlatformSerializer
|
|
||||||
# filterset_fields = ["name"]
|
|
||||||
# ordering = ["create_time", "name"]
|
|
||||||
|
|
||||||
|
|
||||||
# class ProjectViewSet(CustomModelViewSet):
|
|
||||||
# """list: 项目
|
|
||||||
|
|
||||||
# 项目
|
|
||||||
# """
|
|
||||||
# queryset = Project.objects.all()
|
|
||||||
# serializer_class = ProjectSerializer
|
|
||||||
# filterset_fields = ["name"]
|
|
||||||
# ordering = ["create_time", "name"]
|
|
||||||
|
|
||||||
|
|
||||||
# class PatentRecordViewSet(CustomModelViewSet):
|
|
||||||
# """list: 专利台账登记
|
|
||||||
|
|
||||||
# 专利台账登记
|
|
||||||
# """
|
|
||||||
# queryset = PatentRecord.objects.all()
|
|
||||||
# serializer_class = ProjectMemberSerializer
|
|
||||||
# filterset_fields = ["patent", "type"]
|
|
||||||
# ordering = ["create_time", "patent", "type"]
|
|
||||||
|
|
||||||
|
|
||||||
# class PaperRecordViewSet(CustomModelViewSet):
|
|
||||||
# """list: 论文台账登记
|
|
||||||
|
|
||||||
# 论文台账登记
|
|
||||||
# """
|
|
||||||
# queryset = PaperRecord.objects.all()
|
|
||||||
# serializer_class = ProjectMemberSerializer
|
|
||||||
# filterset_fields = ["index", "title", "paper_code","paper_type", "authors"]
|
|
||||||
# ordering = ["create_time", "paper", "type"]
|
|
||||||
|
|
||||||
|
|
||||||
# class ProjectApprovalViewSet(CustomModelViewSet):
|
|
||||||
# """list: 立项审批表
|
|
||||||
|
|
||||||
# 立项审批表
|
|
||||||
# """
|
|
||||||
# queryset = ProjectApproval.objects.all()
|
|
||||||
# serializer_class = ProjectApprovalSerializer
|
|
||||||
# filterset_fields = ["project_start_date"]
|
|
||||||
# ordering = ["project_start_date"]
|
|
||||||
|
|
||||||
|
|
||||||
# class ProjectInfoViewSet(CustomModelViewSet):
|
|
||||||
# """list: 项目信息
|
|
||||||
|
|
||||||
# 项目信息
|
|
||||||
# """
|
|
||||||
# queryset = ProjectInfo.objects.all()
|
|
||||||
# serializer_class = ProjectInfoSerializer
|
|
||||||
# filterset_fields = ["serial_number", "name", "platform", "project_source"]
|
|
||||||
# ordering = ["serial_number", "name"]
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue