From ad982804588d9c3abd072ebfd18c1e3f44d2cd81 Mon Sep 17 00:00:00 2001 From: zty Date: Wed, 24 Sep 2025 13:59:55 +0800 Subject: [PATCH] =?UTF-8?q?add=20:=20ofm-=E6=96=B0=E5=A2=9E=E5=AE=A3?= =?UTF-8?q?=E4=BC=A0=E6=8A=A5=E9=81=93=E4=BF=9D=E5=AF=86=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ofm/migrations/0011_auto_20250924_1359.py | 27 +++++++++++++++++++ apps/ofm/models.py | 3 ++- apps/ofm/serializers.py | 2 ++ apps/ofm/services.py | 17 +++++++++++- apps/ofm/views.py | 2 +- 5 files changed, 48 insertions(+), 3 deletions(-) create mode 100644 apps/ofm/migrations/0011_auto_20250924_1359.py diff --git a/apps/ofm/migrations/0011_auto_20250924_1359.py b/apps/ofm/migrations/0011_auto_20250924_1359.py new file mode 100644 index 00000000..f30d67fe --- /dev/null +++ b/apps/ofm/migrations/0011_auto_20250924_1359.py @@ -0,0 +1,27 @@ +# 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='部室/研究院'), + ), + ] diff --git a/apps/ofm/models.py b/apps/ofm/models.py index 09aa8369..af3a5af1 100644 --- a/apps/ofm/models.py +++ b/apps/ofm/models.py @@ -112,6 +112,8 @@ class Publicity(CommonBDModel): number = models.CharField('记录编号', max_length=50) title = models.CharField('送审稿件标题', max_length=100) participants = models.CharField('所有撰稿人', max_length=50) + pub_dept = models.CharField('部室/研究院', null=True, blank=True, max_length=50) + pfile = models.CharField('稿件路径', null=True, blank=True, max_length=100) level = models.JSONField('用途', default=list, help_text=['重要', '一般', '非涉密']) content = models.JSONField('稿件内容涉及', default=list, help_text=[ "武器装备科研生产综合事项", @@ -120,7 +122,6 @@ class Publicity(CommonBDModel): other_content = models.CharField('其它内容', max_length=100, blank=True, null=True) report_purpose = models.CharField('宣传报道目的', max_length=100, blank=True, null=True) channel = models.JSONField('发布渠道', default=list, help_text=['互联网', '信息平台', '官微', '公开发行物', '其它']) - channel_other = models.CharField('其它渠道', max_length=50, blank=True, null=True) other_channel = models.CharField('其它渠道', max_length=50, blank=True, null=True) report_name = models.CharField('报道名称', max_length=50, blank=True, null=True) review = models.JSONField('第一撰稿人自审', default=list, help_text=['内容不涉及国家秘密和商业秘密,申请公开', '内容涉及国家秘密,申请按涉密渠道发布']) diff --git a/apps/ofm/serializers.py b/apps/ofm/serializers.py index b3b3201f..17af419f 100644 --- a/apps/ofm/serializers.py +++ b/apps/ofm/serializers.py @@ -106,6 +106,8 @@ class BorrowRecordSerializer(CustomModelSerializer): class PublicitySerializer(CustomModelSerializer): + create_by_name = serializers.CharField(source='create_by.name', read_only=True) + belong_dept_name = serializers.CharField(source='belong_dept.name', read_only=True) class Meta: model = Publicity fields = '__all__' diff --git a/apps/ofm/services.py b/apps/ofm/services.py index 02d0281c..8c7f47eb 100644 --- a/apps/ofm/services.py +++ b/apps/ofm/services.py @@ -1,7 +1,7 @@ from apps.wf.models import Ticket # TicketFlow, Transition, Workflow, CustomField, State, -from apps.ofm.models import LendingSeal, Vehicle, BorrowRecord +from apps.ofm.models import LendingSeal, Vehicle, BorrowRecord, publicity from rest_framework.exceptions import ParseError @@ -50,6 +50,21 @@ def bind_file(ticket: Ticket, transition, new_ticket_data: dict): ticket.ticket_data = ticket_data ticket.create_by = ins.create_by ticket.save() + if ins.ticket is None: + ins.ticket = ticket + ins.save() + + +def bind_publicity(ticket: Ticket, transition, new_ticket_data: dict): + ins = publicity.objects.get(id=new_ticket_data['t_id']) + ticket_data = ticket.ticket_data + ticket_data.update({ + 't_model': 'publicity', + 't_id': ins.id, + }) + ticket.ticket_data = ticket_data + ticket.create_by = ins.create_by + ticket.save() if ins.ticket is None: ins.ticket = ticket ins.save() \ No newline at end of file diff --git a/apps/ofm/views.py b/apps/ofm/views.py index 9ac103a0..f9b5010b 100644 --- a/apps/ofm/views.py +++ b/apps/ofm/views.py @@ -2,7 +2,7 @@ from django.shortcuts import render from apps.utils.viewsets import CustomModelViewSet, CustomGenericViewSet from .models import Mroom, MroomBooking, MroomSlot, LendingSeal, Vehicle, FileRecord, BorrowRecord, Publicity # Publicity, PatentInfo, PaperOfm, Platform, Project, PatentRecord, PaperRecord, ProjectApproval, ProjectInfo) -from .serializers import (MroomSerializer, MroomBookingSerializer, MroomSlotSerializer, LendingSealSerializer, VehicleSerializer, FileRecordSerializer, BorrowRecordSerializer, PublicitySerializer) +from .serializers import (MroomSerializer, MroomBookingSerializer, MroomSlotSerializer, LendingSealSerializer, VehicleSerializer, FileRecordSerializer, BorrowRecordSerializer, PublicitySerializer,) # ,SealSerializer, # LendingSealSerializer, FileRecordSerializer, BorrowRecordSerializer, PublicitySerializer, # PatentInfoSerializer, PaperSerializer, PlatformSerializer, ProjectSerializer, ProjectMemberSerializer, PaperRecordSerializer, ProjectApprovalSerializer, ProjectInfoSerializer)