factory/apps/srm/models.py

152 lines
9.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from django.db import models
from django.db import models, transaction
from apps.utils.models import CommonADModel, BaseModel, CommonBDModel
from apps.system.models import User
from django.core.validators import RegexValidator
from datetime import datetime
from rest_framework.exceptions import ParseError
# Create your models here.
class PatentInfo(CommonBDModel):
"""TN: 专利申密审批表单样式"""
PATENT_TYPE_CHOICES = (
('invention', '发明专利'),
('utility', '实用新型专利'),
('design', '外观设计专利'),
)
APPLY_AREAS = (
('Domestic', '国内申请'),
('Foreign', '国外申请'),
('PCT', 'PCT申请'),
)
name = models.CharField('拟申请专利名称', max_length=100)
author = models.CharField('发明人(设计人)', max_length=100)
type = models.CharField('专利类型', max_length=50, choices=PATENT_TYPE_CHOICES, default='invention')
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=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)
class Papersecret(CommonBDModel):
"""TN: 论文申密审批表单"""
paper_name = models.CharField('拟发表论文名称', max_length=100)
publication_name = models.CharField('拟投期刊名称', max_length=100)
author = models.CharField('作者', max_length=100)
paper_type = models.CharField('拟发表文章类型', max_length=100)
is_chinese_core = models.BooleanField('是否为中文核心', default=False)
is_sci = models.BooleanField('是否被SCI/EI收录', default=False)
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='paperse_ticket', null=True, blank=True, db_constraint=False)
class PatentRecord(CommonADModel):
"""TN: 专利台账登记"""
PATENT_TYPE_CHOICES = (
('invention', '发明专利'),
('utility', '实用新型专利'),
('design', '外观设计专利'),
)
volume_number = models.CharField(max_length=50, null=True, blank=True, verbose_name="卷号")
application_number = models.CharField(max_length=50, verbose_name="申请号(交局后补登)")
patent = models.ForeignKey('PatentInfo', verbose_name="专利名称", on_delete=models.CASCADE, related_name='patent_record')
pc_type = models.CharField('专利类型', max_length=50, choices=PATENT_TYPE_CHOICES, default='invention')
organization = models.CharField(max_length=100, verbose_name="单位")
inventors = models.CharField(max_length=255, verbose_name="发明人")
agent = models.CharField(max_length=255, null=True, blank=True, verbose_name="代理人")
affiliated_platforms = models.CharField(max_length=255, blank=True, verbose_name="归属平台")
affiliated_projects = models.CharField(max_length=255, blank=True, verbose_name="归属项目")
application_date = models.DateField(null=True, blank=True, verbose_name="申请日")
authorization_date = models.DateField(null=True, blank=True, verbose_name="授权日")
validity_years = models.IntegerField(null=True, blank=True, verbose_name="有效年限(年)")
annuity_paid = models.DecimalField(max_digits=10,decimal_places=2, null=True,blank=True,verbose_name="年费缴纳")
status = models.CharField(
max_length=20,
choices=[
("not_disclosed", "未公开"),
("under_examination", "实审中"),
("first_office_action", "一通"),
("second_office_action", "二通"),
("rejected", "驳回"),
("reexamination", "复审"),
("authorized", "授权")
],
verbose_name="状态"
)
award_info = models.TextField(null=True, blank=True, verbose_name="报奖情况")
bonus_amount = models.DecimalField(max_digits=10,decimal_places=2, null=True,blank=True,verbose_name="奖金金额(元)")
class PaperRecord(CommonADModel):
"""TN: 专利台账登记"""
PAPER_TYPE_CHOICES = (
('invention', '发明专利'),
('utility', '实用新型专利'),
('design', '外观设计专利'),
)
paper_number = models.CharField(max_length=50, null=True, blank=True, verbose_name="论文编号(投稿后补登)")
paper = models.ForeignKey('Papersecret', verbose_name="论文名称", on_delete=models.CASCADE, related_name='paper_record')
pa_type = models.CharField('论文类型', max_length=50, choices=PAPER_TYPE_CHOICES, default='invention')
organization = models.CharField(max_length=100, verbose_name="单位")
author = models.CharField(max_length=100, verbose_name="作者")
cor_author = models.CharField(max_length=100, verbose_name="通讯作者")
affiliated_platforms = models.CharField(max_length=255, blank=True, verbose_name="归属平台")
affiliated_projects = models.CharField(max_length=255, blank=True, verbose_name="归属项目")
accept_date = models.DateField(null=True, blank=True, verbose_name="接受日期")
public_date = models.DateField(null=True, blank=True, verbose_name="发表日期")
# validity_years = models.IntegerField(null=True, blank=True, verbose_name="有效年限(年)")
pub_paid = models.DecimalField(max_digits=10,decimal_places=2, null=True,blank=True,verbose_name="版面费缴纳")
status = models.CharField(
max_length=20,
choices=[
("审稿中", "审稿中"),
("一修", "一修"),
("二修", "二修"),
("接收", "接收"),
("发表", "发表"),
],
verbose_name="状态"
)
award_info = models.TextField(null=True, blank=True, verbose_name="报奖情况")
bonus_amount = models.DecimalField(max_digits=10,decimal_places=2, null=True,blank=True,verbose_name="奖金金额(元)")
# class ProjectApproval(CommonBDModel):
# """TN: 立项审批表"""
# project_start_date = models.DateField("立项日期", null=True, blank=True)
# is_self_initiated = models.BooleanField("自立项目", default=False)
# is_city_level = models.BooleanField("市级项目", default=False)
# is_province_level = models.BooleanField("省级项目", default=False)
# construction_period = models.CharField("建设期", max_length=100, null=True, blank=True)
# project_members = models.TextField("项目组员", null=True, blank=True)
# project_budget = models.DecimalField("项目预算(万元)", max_digits=12, decimal_places=2, null=True, blank=True)
# project_description = models.TextField("项目基本情况", null=True, blank=True)
# project_performance = models.TextField("目标绩效", null=True, blank=True)
# class ProjectInfo(CommonBDModel):
# """TN: 项目信息表
# """
# serial_number = models.CharField("序号", max_length=50, null=True, blank=True)
# red_head_doc_no = models.CharField("红头发文号/公示页", max_length=100, null=True, blank=True)
# name = models.CharField("名称", max_length=200, null=True, blank=True)
# project_type = models.CharField("项目类型", max_length=100, null=True, blank=True)
# platform = models.CharField("所属平台", max_length=100, null=True, blank=True)
# project_source = models.CharField("项目来源", max_length=100, null=True, blank=True)
# construction_period = models.CharField("建设期", max_length=100, null=True, blank=True)
# project_funding = models.DecimalField("项目资金(财政与自筹)", max_digits=15, decimal_places=2, null=True, blank=True)
# support_period = models.CharField("项目支持期", max_length=100, null=True, blank=True)
# undertaking_unit = models.CharField("承担单位", max_length=200, null=True, blank=True)
# responsible_person = models.CharField("负责人", max_length=50, null=True, blank=True)
# project_members = models.TextField("项目人员", null=True, blank=True)
# milestone = models.TextField("里程碑节点", null=True, blank=True)
# mid_term_status = models.TextField("项目中期情况", null=True, blank=True)
# acceptance_status = models.TextField("项目验收情况", null=True, blank=True)
# sci_tech_achievements = models.TextField("科技成果", null=True, blank=True)