From 7cd95bd1b5e397060ccbaeffb44a00b401076c4e Mon Sep 17 00:00:00 2001 From: zty Date: Wed, 22 Oct 2025 16:10:22 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20ofm-models=20=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E4=B8=93=E5=88=A9patent=20=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/ofm/migrations/0024_auto_20251022_1005.py | 2 +- apps/ofm/models.py | 5 +---- apps/ofm/services.py | 14 +++++++++++++- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/apps/ofm/migrations/0024_auto_20251022_1005.py b/apps/ofm/migrations/0024_auto_20251022_1005.py index 0cc0a98c..ca01922d 100644 --- a/apps/ofm/migrations/0024_auto_20251022_1005.py +++ b/apps/ofm/migrations/0024_auto_20251022_1005.py @@ -60,7 +60,7 @@ class Migration(migrations.Migration): migrations.AddField( model_name='patentinfo', name='tech_status', - field=models.JSONField(blank=True, default=apps.ofm.models.PatentInfo.default_document_state, help_text='技术状态信息列表,每个条目包含name(名称)、status(状态)、file(文件)字段', verbose_name='技术状态'), + field=models.JSONField(blank=True, default=list, help_text='技术状态信息列表,每个条目包含name(名称)、status(状态)、file(文件)字段', verbose_name='技术状态'), ), migrations.AlterField( model_name='borrowrecord', diff --git a/apps/ofm/models.py b/apps/ofm/models.py index afb322e0..4c247a26 100644 --- a/apps/ofm/models.py +++ b/apps/ofm/models.py @@ -170,9 +170,6 @@ class PatentInfo(CommonBDModel): ('Foreign', '国外申请'), (' PCT', 'PCT申请'), ) - - def default_document_state(self): - return [] name = models.CharField('拟申请专利名称', max_length=100) author = models.CharField('发明人(设计人)', max_length=100) @@ -180,7 +177,7 @@ class PatentInfo(CommonBDModel): is_public = models.BooleanField('是否公开', default=False) area = models.CharField('拟申请地域', max_length=50, choices=APPLY_AREAS, default='Domestic') other_area = models.CharField('其它申请地域', max_length=50, blank=True, null=True) - tech_status = models.JSONField('技术状态', default=default_document_state, blank=True, help_text='技术状态信息列表,每个条目包含name(名称)、status(状态)、file(文件)字段') + tech_status = models.JSONField('技术状态', default=list, blank=True, help_text='技术状态信息列表,每个条目包含name(名称)、status(状态)、file(文件)字段') tech_file = models.JSONField('技术文件', default=list, help_text='技术文件信息列表,每个条目包含name(名称)page(页数)字段') ticket = models.ForeignKey('wf.ticket', verbose_name='关联工单', on_delete=models.SET_NULL, related_name='patentInfo_ticket', null=True, blank=True, db_constraint=False) diff --git a/apps/ofm/services.py b/apps/ofm/services.py index cdef33be..cfceda7a 100644 --- a/apps/ofm/services.py +++ b/apps/ofm/services.py @@ -152,4 +152,16 @@ def bind_patent(ticket: Ticket, transition, new_ticket_data: dict): ticket.save() if ins.ticket is None: ins.ticket = ticket - ins.save() \ No newline at end of file + ins.save() + +def patent_save_ticket_data(ticket: Ticket, new_ticket_data: dict, **kwargs): + try: + obj = PatentInfo.objects.get(id=new_ticket_data['t_id']) + except PatentInfo.DoesNotExist: + raise ParseError("Publicity t_id 不存在") + data_save = {k: v for k, v in new_ticket_data.items() if k not in ['t_model', 't_id']} + + for k, v in data_save.items(): + setattr(obj, k, v) + obj.save() + \ No newline at end of file