日常修复内容20260422
This commit is contained in:
2
.idea/misc.xml
generated
2
.idea/misc.xml
generated
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Black">
|
||||
<option name="sdkName" value="Python 3.8 (cdtestplant_v1)" />
|
||||
<option name="sdkName" value="uv (cdtestplant_v1)" />
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" project-jdk-name="uv (cdtestplant_v1)" project-jdk-type="Python SDK" />
|
||||
</project>
|
||||
Binary file not shown.
Binary file not shown.
@@ -15,7 +15,7 @@ from pathlib import Path
|
||||
from utils.chen_response import ChenResponse
|
||||
# 导入数据库ORM
|
||||
from apps.project.models import Project, Contact, Abbreviation, ProjectSoftSummary, StuctSortData, StaticSoftItem, StaticSoftHardware, \
|
||||
DynamicSoftTable, DynamicHardwareTable, ProjectDynamicDescription, EvaluateData, EnvAnalysis
|
||||
DynamicSoftTable, DynamicHardwareTable, ProjectDynamicDescription, EvaluateData, EnvAnalysis, Design
|
||||
from apps.dict.models import Dict
|
||||
# 导入工具函数
|
||||
from utils.util import get_str_dict, get_list_dict, get_testType, get_ident, get_str_abbr
|
||||
@@ -91,12 +91,23 @@ class GenerateControllerDG(ControllerBase, FragementToolsMixin):
|
||||
html_parser = RichParser(single_qs.design.description)
|
||||
desc_list = html_parser.get_final_list(doc)
|
||||
# 查询关联design以及普通design
|
||||
doc_list = [{'dut_name': single_qs.dut.name, 'design_chapter': single_qs.design.chapter,
|
||||
'design_name': single_qs.design.name}]
|
||||
for relate_design in single_qs.otherDesign.all():
|
||||
ddict = {'dut_name': relate_design.dut.name, 'design_chapter': relate_design.chapter,
|
||||
'design_name': relate_design.name}
|
||||
doc_list = [{
|
||||
'dut_name': single_qs.dut.name,
|
||||
'design_chapter': single_qs.design.chapter,
|
||||
'design_name': single_qs.design.name,
|
||||
'dut_type': single_qs.dut.type # 添加 type 字段用于排序
|
||||
}]
|
||||
for relate_design in single_qs.otherDesign.all(): # type: Design
|
||||
ddict = {
|
||||
'dut_name': relate_design.dut.name,
|
||||
'design_chapter': relate_design.chapter,
|
||||
'design_name': relate_design.name,
|
||||
'dut_type': relate_design.dut.type # 添加 type 字段用于排序
|
||||
}
|
||||
doc_list.append(ddict)
|
||||
# 定义排序顺序映射
|
||||
TYPE_ORDER = {'YZ': 0, 'XQ': 1, 'XY': 2, 'SJ': 3, None: 99, '': 999}
|
||||
doc_list.sort(key=lambda x: TYPE_ORDER.get(x.get('dut_type'), 999))
|
||||
|
||||
# 组装单个测试项
|
||||
## 打印本项目是FPGA还是CPU
|
||||
@@ -403,10 +414,13 @@ class GenerateControllerDG(ControllerBase, FragementToolsMixin):
|
||||
interface_dict = {
|
||||
'name': interface.name,
|
||||
'ident': interface.ident,
|
||||
'source': interface.source,
|
||||
'to': interface.to,
|
||||
'type': interface.type,
|
||||
'protocal': interface.protocal,
|
||||
'is_bidirectional': interface.is_bidirectional, # 是否有反向
|
||||
'jk_info_list': [{
|
||||
'source': item.source,
|
||||
'destination': item.destination,
|
||||
'description': item.description,
|
||||
} for item in interface.jkField.all()]
|
||||
}
|
||||
interface_list.append(interface_dict)
|
||||
# 项目接口图处理 - 2026/2/4
|
||||
@@ -423,7 +437,7 @@ class GenerateControllerDG(ControllerBase, FragementToolsMixin):
|
||||
'iters': interfaceNameList,
|
||||
'iter_list': interface_list,
|
||||
'image_render': image_render if image_render else "",
|
||||
'fontnote': fontnote if fontnote else "".join([project_name, '接口示意图'])
|
||||
'fontnote': fontnote if fontnote else "".join([project_name, '接口示意图']),
|
||||
}
|
||||
doc.render(context, autoescape=True)
|
||||
try:
|
||||
@@ -469,7 +483,7 @@ class GenerateControllerDG(ControllerBase, FragementToolsMixin):
|
||||
except PermissionError as e:
|
||||
return ChenResponse(status=400, code=400, message="模版文件已打开,请关闭后再试,{0}".format(e))
|
||||
|
||||
# 通用生成静态软件项、静态硬件项、动态软件项、动态硬件信息的context,包含fontnote和table
|
||||
# 通用生成静态软件项、静态硬件项、动态软件项、动态硬件信息、测评数据的context,包含fontnote和table
|
||||
@classmethod
|
||||
def create_table_context(cls, table_data: list[list[str]], doc: DocxTemplate):
|
||||
"""注意:该函数会增加一列序号列,并且支持单元格内回车换行(段落换行)"""
|
||||
|
||||
@@ -8,7 +8,7 @@ from django.db.models import QuerySet, Q
|
||||
from docxtpl import DocxTemplate
|
||||
from docx import Document
|
||||
# 导入模型
|
||||
from apps.project.models import Project, Round, Dut, InfluenceArea
|
||||
from apps.project.models import Project, Round, Dut
|
||||
from apps.dict.models import Dict
|
||||
# 导入项目工具
|
||||
from utils.util import get_list_dict, get_str_dict, get_ident, get_case_ident, get_testType
|
||||
@@ -19,7 +19,6 @@ from utils.path_utils import project_path
|
||||
from apps.createDocument.extensions.util import delete_dir_files
|
||||
from apps.createDocument.extensions.parse_rich_text import RichParser
|
||||
from apps.createDocument.extensions.documentTime import DocTime
|
||||
from utils.util import get_str_abbr
|
||||
from apps.createDocument.extensions.content_result_tool import create_influence_context
|
||||
# 导入生成日志记录模块
|
||||
from apps.createSeiTaiDocument.extensions.logger import GenerateLogger
|
||||
@@ -234,7 +233,7 @@ class GenerateControllerHSM(ControllerBase):
|
||||
xq_dut: Dut = hround.rdField.filter(type='XQ').first()
|
||||
# 处理代码版本
|
||||
last_round_key = str(int(hround.key) - 1)
|
||||
last_round: Round = project_obj.pField.filter(key=last_round_key).first()
|
||||
last_round: Round | None = project_obj.pField.filter(key=last_round_key).first()
|
||||
last_round_so_dut = last_round.rdField.filter(type='SO').first()
|
||||
if not last_round_so_dut:
|
||||
return ChenResponse(code=400, status=400,
|
||||
|
||||
Binary file not shown.
@@ -38,6 +38,17 @@ def create_sm_docx(template_name: str, context: dict, id: int) -> ChenResponse:
|
||||
except PermissionError as e:
|
||||
return ChenResponse(status=400, code=400, message="模版文件已打开,请关闭后再试,{0}".format(e))
|
||||
|
||||
def create_hsm_docx(template_name: str, context: dict, id: int) -> ChenResponse:
|
||||
"""生成最终回归测试说明文档工具函数"""
|
||||
input_path = Path.cwd() / 'media' / project_path(id) / 'form_template' / 'hsm' / template_name
|
||||
doc = DocxTemplate(input_path)
|
||||
doc.render(context, autoescape=True)
|
||||
try:
|
||||
doc.save(Path.cwd() / "media" / project_path(id) / "output_dir/hsm" / template_name)
|
||||
return ChenResponse(status=200, code=200, message="文档生成成功!")
|
||||
except PermissionError as e:
|
||||
return ChenResponse(status=400, code=400, message="模版文件已打开,请关闭后再试,{0}".format(e))
|
||||
|
||||
def create_dg_docx(template_name: str, context: dict, id: int) -> ChenResponse:
|
||||
"""生成最终大纲文档工具函数"""
|
||||
input_path = Path.cwd() / 'media' / project_path(id) / 'form_template' / 'dg' / template_name
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -15,7 +15,7 @@ from typing import List
|
||||
from utils.chen_response import ChenResponse
|
||||
from utils.chen_crud import multi_delete_design
|
||||
from utils.codes import HTTP_INDEX_ERROR
|
||||
from apps.project.models import Design, Dut, Round, Project
|
||||
from apps.project.models import Design, Dut, Round, Project, JKDesignInfo
|
||||
from apps.project.schemas.design import DeleteSchema, DesignFilterSchema, DesignModelOutSchema, \
|
||||
DesignTreeReturnSchema, \
|
||||
DesignTreeInputSchema, DesignCreateOutSchema, DesignCreateInputSchema, MultiDesignCreateInputSchema, \
|
||||
@@ -25,6 +25,22 @@ from utils.smallTools.interfaceTools import conditionNoneToBlank
|
||||
from apps.project.tools.auto_create_data import auto_create_renji
|
||||
from apps.project.tool.dragAndDrop import DesignDrapAtoB
|
||||
|
||||
def _save_jk_direction_info(design: Design, direction: str, source: str, destination: str, description: str):
|
||||
"""保存或更新 JKDesignInfo 记录"""
|
||||
if not source and not destination and not description:
|
||||
# 如果三个字段全为空,则删除可能存在的记录(避免冗余数据)
|
||||
JKDesignInfo.objects.filter(jk=design, direction=direction).delete()
|
||||
return
|
||||
JKDesignInfo.objects.update_or_create(
|
||||
jk=design,
|
||||
direction=direction,
|
||||
defaults={
|
||||
'source': source or '',
|
||||
'destination': destination or '',
|
||||
'description': description or '',
|
||||
}
|
||||
)
|
||||
|
||||
@api_controller("/project", auth=JWTAuth(), permissions=[IsAuthenticated], tags=['设计需求数据'])
|
||||
class DesignController(ControllerBase):
|
||||
@route.get("/getDesignDemandList", response=List[DesignModelOutSchema], exclude_none=True,
|
||||
@@ -97,7 +113,30 @@ class DesignController(ControllerBase):
|
||||
{'key': key_string, 'round': round_instance, 'dut': dut_instance, 'title': payload.name})
|
||||
asert_dict.pop("round_key")
|
||||
asert_dict.pop("dut_key")
|
||||
# 去掉Design不使用的字段
|
||||
asert_dict.pop("forward_source", None)
|
||||
asert_dict.pop("forward_destination", None)
|
||||
asert_dict.pop("forward_description", None)
|
||||
asert_dict.pop("reverse_source", None)
|
||||
asert_dict.pop("reverse_destination", None)
|
||||
asert_dict.pop("reverse_description", None)
|
||||
qs = Design.objects.create(**asert_dict)
|
||||
# 处理接口方向信息(仅当 demandType == '3' 且存在正向/反向数据时)
|
||||
if payload.demandType == '3':
|
||||
_save_jk_direction_info(
|
||||
design=qs,
|
||||
direction=JKDesignInfo.Direction.FORWARD,
|
||||
source=payload.forward_source,
|
||||
destination=payload.forward_destination,
|
||||
description=payload.forward_description,
|
||||
)
|
||||
_save_jk_direction_info(
|
||||
design=qs,
|
||||
direction=JKDesignInfo.Direction.REVERSE,
|
||||
source=payload.reverse_source,
|
||||
destination=payload.reverse_destination,
|
||||
description=payload.reverse_description,
|
||||
)
|
||||
return qs
|
||||
|
||||
# 批量增加设计需求,对应前端批量增加页面modal
|
||||
@@ -136,15 +175,36 @@ class DesignController(ControllerBase):
|
||||
# 判断是否和同项目同轮次的标识重复
|
||||
if len(design_search) > 1 and payload.ident != '':
|
||||
return ChenResponse(code=400, status=400, message='研制需求的标识重复,请检查')
|
||||
|
||||
# 查到当前
|
||||
design_qs = Design.objects.get(id=id)
|
||||
for attr, value in payload.dict().items():
|
||||
if attr == 'project_id' or attr == 'round_key' or attr == 'dut_key':
|
||||
if attr in ('project_id', 'round_key', 'dut_key'):
|
||||
continue
|
||||
if attr == 'name':
|
||||
setattr(design_qs, "title", value)
|
||||
setattr(design_qs, attr, value)
|
||||
design_qs.save()
|
||||
|
||||
# 处理接口方向信息更新
|
||||
if payload.demandType == '3':
|
||||
_save_jk_direction_info(
|
||||
design=design_qs,
|
||||
direction=JKDesignInfo.Direction.FORWARD,
|
||||
source=payload.forward_source,
|
||||
destination=payload.forward_destination,
|
||||
description=payload.forward_description,
|
||||
)
|
||||
_save_jk_direction_info(
|
||||
design=design_qs,
|
||||
direction=JKDesignInfo.Direction.REVERSE,
|
||||
source=payload.reverse_source,
|
||||
destination=payload.reverse_destination,
|
||||
description=payload.reverse_description,
|
||||
)
|
||||
else:
|
||||
# 如果需求类型不再是接口,则删除已有的方向信息
|
||||
JKDesignInfo.objects.filter(jk=design_qs).delete()
|
||||
return design_qs
|
||||
|
||||
# 删除设计需求
|
||||
|
||||
@@ -463,7 +463,7 @@ class ProjectController(ControllerBase):
|
||||
return ChenResponse(status=200, code=25001, data={"table": item_obj.table, "fontnote": item_obj.fontnote})
|
||||
return ChenResponse(status=200, code=25002, data=None)
|
||||
|
||||
# ~~~静态软件项、静态硬件项、动态软件项、动态硬件项 - 新增或修改~~~
|
||||
# ~~~静态软件项、静态硬件项、动态软件项、动态硬件项、测评数据 - 新增或修改~~~
|
||||
@route.post("/post_static_dynamic_item/")
|
||||
@transaction.atomic
|
||||
def post_static_dynamic_item(self, data: StaticDynamicData):
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
# Generated by Django 6.0.4 on 2026-04-21 18:21
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('project', '0032_alter_design_protocal'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='design',
|
||||
name='protocal',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='design',
|
||||
name='to',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='design',
|
||||
name='type',
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='design',
|
||||
name='source',
|
||||
field=models.CharField(blank=True, default='', help_text='接口来源', max_length=256, null=True, verbose_name='接口来源'),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='JKDesignInfo',
|
||||
fields=[
|
||||
('id', models.BigAutoField(help_text='Id', primary_key=True, serialize=False, verbose_name='Id')),
|
||||
('remark', models.CharField(blank=True, help_text='描述', max_length=255, null=True, verbose_name='描述')),
|
||||
('update_datetime', models.DateField(auto_now=True, help_text='修改时间', null=True, verbose_name='修改时间')),
|
||||
('create_datetime', models.DateField(auto_now_add=True, help_text='创建时间', null=True, verbose_name='创建时间')),
|
||||
('sort', models.IntegerField(blank=True, default=1, help_text='显示排序', null=True, verbose_name='显示排序')),
|
||||
('direction', models.CharField(choices=[('forward', '正向'), ('reverse', '反向')], max_length=10, verbose_name='方向')),
|
||||
('description', models.TextField(blank=True, default='', max_length=1024, null=True, verbose_name='接口描述')),
|
||||
('source', models.CharField(blank=True, default='', max_length=200, null=True, verbose_name='来源')),
|
||||
('destination', models.CharField(blank=True, default='', max_length=200, null=True, verbose_name='目的地')),
|
||||
('jk', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='jkField', to='project.design', verbose_name='所属接口Design')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': '接口一个方向的信息',
|
||||
'verbose_name_plural': '接口一个方向的信息',
|
||||
'unique_together': {('jk', 'direction')},
|
||||
},
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,37 @@
|
||||
# Generated by Django 6.0.4 on 2026-04-21 18:27
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('project', '0033_remove_design_protocal_remove_design_to_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='design',
|
||||
name='source',
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='design',
|
||||
name='type',
|
||||
field=models.CharField(blank=True, default='', help_text='接口类型', max_length=1024, null=True, verbose_name='接口类型'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='jkdesigninfo',
|
||||
name='description',
|
||||
field=models.TextField(blank=True, max_length=1024, null=True, verbose_name='接口描述'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='jkdesigninfo',
|
||||
name='destination',
|
||||
field=models.CharField(blank=True, max_length=200, null=True, verbose_name='目的地'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='jkdesigninfo',
|
||||
name='source',
|
||||
field=models.CharField(blank=True, max_length=200, null=True, verbose_name='来源'),
|
||||
),
|
||||
]
|
||||
18
apps/project/migrations/0035_design_is_bidirectional.py
Normal file
18
apps/project/migrations/0035_design_is_bidirectional.py
Normal file
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 6.0.4 on 2026-04-21 18:38
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('project', '0034_remove_design_source_design_type_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='design',
|
||||
name='is_bidirectional',
|
||||
field=models.BooleanField(default=False, verbose_name='是否双向'),
|
||||
),
|
||||
]
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -15,9 +15,9 @@ class Project(CoreModel):
|
||||
help_text="项目标识", unique=True) # 唯一
|
||||
name = models.CharField(max_length=100, blank=True, null=True, verbose_name="项目名称",
|
||||
help_text="项目名称")
|
||||
beginTime = models.DateField(auto_now_add=True, null=True, blank=True, help_text="开始时间",
|
||||
beginTime = models.DateField(null=True, blank=True, help_text="开始时间",
|
||||
verbose_name="开始时间")
|
||||
endTime = models.DateField(auto_now_add=True, null=True, blank=True, help_text="结束时间",
|
||||
endTime = models.DateField(null=True, blank=True, help_text="结束时间",
|
||||
verbose_name="结束时间")
|
||||
duty_person = models.CharField(max_length=64, verbose_name="负责人", help_text="负责人")
|
||||
member = models.JSONField(null=True, blank=True, help_text="项目成员", verbose_name="项目成员",
|
||||
@@ -198,15 +198,12 @@ class Design(CoreModel):
|
||||
dut = models.ForeignKey(to="Dut", db_constraint=False, related_name="rsField", on_delete=models.CASCADE,
|
||||
verbose_name='归属轮次', help_text='归属轮次', related_query_name='rsQuery')
|
||||
# 如果是demandTye='3'则加上如下字段
|
||||
source = models.CharField(max_length=64, blank=True, null=True, default='', verbose_name='接口来源',
|
||||
help_text='接口来源')
|
||||
to = models.CharField(max_length=64, blank=True, null=True, default='', verbose_name='接口目的地',
|
||||
help_text='接口目的地')
|
||||
type = models.CharField(max_length=64, blank=True, null=True, default='', verbose_name='接口类型',
|
||||
type = models.CharField(max_length=1024, blank=True, null=True, default='', verbose_name='接口类型',
|
||||
help_text='接口类型')
|
||||
# 注意:该字段改为接口数据
|
||||
protocal = models.CharField(max_length=1024, blank=True, null=True, default='', verbose_name='接口数据',
|
||||
help_text='接口数据')
|
||||
is_bidirectional = models.BooleanField(
|
||||
default=False,
|
||||
verbose_name="是否双向"
|
||||
)
|
||||
|
||||
def __str__(self):
|
||||
return f'设计需求:{self.name}'
|
||||
@@ -217,6 +214,29 @@ class Design(CoreModel):
|
||||
verbose_name_plural = verbose_name
|
||||
ordering = ('key',)
|
||||
|
||||
class JKDesignInfo(CoreModel):
|
||||
class Direction(models.TextChoices):
|
||||
FORWARD = 'forward', '正向'
|
||||
REVERSE = 'reverse', '反向'
|
||||
|
||||
jk = models.ForeignKey(Design, on_delete=models.CASCADE, related_name="jkField", verbose_name="所属接口Design")
|
||||
direction = models.CharField(
|
||||
max_length=10,
|
||||
choices=Direction.choices, # type: ignore
|
||||
verbose_name="方向"
|
||||
)
|
||||
description = models.TextField(max_length=1024, blank=True, null=True, verbose_name="接口描述")
|
||||
source = models.CharField(max_length=200, blank=True, null=True, verbose_name="来源")
|
||||
destination = models.CharField(max_length=200, blank=True, null=True, verbose_name="目的地")
|
||||
|
||||
class Meta:
|
||||
unique_together = [['jk', 'direction']] # 同一个方向仅一条记录
|
||||
verbose_name = "接口一个方向的信息"
|
||||
verbose_name_plural = "接口一个方向的信息"
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.jk.name} - {self.get_direction_display()}"
|
||||
|
||||
class TestDemand(CoreModel):
|
||||
"""测试项"""
|
||||
objects = models.Manager()
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -1,5 +1,5 @@
|
||||
from typing import Optional
|
||||
from apps.project.models import Design
|
||||
from apps.project.models import Design, JKDesignInfo
|
||||
from ninja import Field, Schema, ModelSchema
|
||||
from typing import List, Union
|
||||
from pydantic import AliasChoices
|
||||
@@ -30,11 +30,54 @@ class DesignModelOutSchemaOrigin(ModelSchema):
|
||||
class DesignModelOutSchema(ModelSchema):
|
||||
# 新增字段 - 上级的dut对象
|
||||
dut: Optional[DutModelOutSchema] = None
|
||||
is_bidirectional: bool = Field(False, alias='is_bidirectional')
|
||||
forward_source: str = Field("")
|
||||
forward_destination: str = Field("")
|
||||
forward_description: str = Field("")
|
||||
reverse_source: str = Field("")
|
||||
reverse_destination: str = Field("")
|
||||
reverse_description: str = Field("")
|
||||
|
||||
class Meta:
|
||||
model = Design
|
||||
exclude = ['project', 'round', 'dut', 'remark', 'sort']
|
||||
|
||||
# ---------- 解析器方法 ----------
|
||||
@staticmethod
|
||||
def resolve_is_bidirectional(obj: Design) -> bool:
|
||||
return obj.is_bidirectional
|
||||
|
||||
@staticmethod
|
||||
def resolve_forward_source(obj: Design) -> str:
|
||||
"""从 JKDesignInfo 正向记录中获取 source"""
|
||||
info = obj.jkField.filter(direction=JKDesignInfo.Direction.FORWARD).first()
|
||||
return info.source if info else ""
|
||||
|
||||
@staticmethod
|
||||
def resolve_forward_destination(obj: Design) -> str:
|
||||
info = obj.jkField.filter(direction=JKDesignInfo.Direction.FORWARD).first()
|
||||
return info.destination if info else ""
|
||||
|
||||
@staticmethod
|
||||
def resolve_forward_description(obj: Design) -> str:
|
||||
info = obj.jkField.filter(direction=JKDesignInfo.Direction.FORWARD).first()
|
||||
return info.description if info else ""
|
||||
|
||||
@staticmethod
|
||||
def resolve_reverse_source(obj: Design) -> str:
|
||||
info = obj.jkField.filter(direction=JKDesignInfo.Direction.REVERSE).first()
|
||||
return info.source if info else ""
|
||||
|
||||
@staticmethod
|
||||
def resolve_reverse_destination(obj: Design) -> str:
|
||||
info = obj.jkField.filter(direction=JKDesignInfo.Direction.REVERSE).first()
|
||||
return info.destination if info else ""
|
||||
|
||||
@staticmethod
|
||||
def resolve_reverse_description(obj: Design) -> str:
|
||||
info = obj.jkField.filter(direction=JKDesignInfo.Direction.REVERSE).first()
|
||||
return info.description if info else ""
|
||||
|
||||
# 处理树状结构的schema
|
||||
class DesignTreeReturnSchema(Schema):
|
||||
title: str = Field(..., alias='title')
|
||||
@@ -66,11 +109,15 @@ class DesignCreateInputSchema(Schema):
|
||||
demandType: str = Field(None, alias="demandType")
|
||||
description: str = Field("", alias="description")
|
||||
chapter: str = Field(None, alias='chapter')
|
||||
# 接口独有的4个字段
|
||||
source: str = Field('', alias='source')
|
||||
to: str = Field('', alias='to')
|
||||
# 接口类型包含
|
||||
type: str = Field('', alias='type')
|
||||
protocal: str = Field('', alias='protocal')
|
||||
is_bidirectional: bool = Field(False, alias='is_bidirectional')
|
||||
forward_source: str = Field("")
|
||||
forward_destination: str = Field("")
|
||||
forward_description: str = Field("")
|
||||
reverse_source: str = Field("")
|
||||
reverse_destination: str = Field("")
|
||||
reverse_description: str = Field("")
|
||||
|
||||
class SingleDesignSchema(Schema):
|
||||
ident: str = Field(None, alias="ident")
|
||||
|
||||
Binary file not shown.
Binary file not shown.
923
logs/root_log
923
logs/root_log
@@ -1,334 +1,8 @@
|
||||
[WARNING][2026-03-14 10:35:20,046][log.py:249]Unauthorized: /api/system/getInfo
|
||||
[WARNING][2026-03-14 10:35:20,146][log.py:249]Unauthorized: /api/system/logout
|
||||
[WARNING][2026-03-14 10:35:24,335][backend.py:91]Caught LDAPError looking up user: SERVER_DOWN({'result': -1, 'desc': "Can't contact LDAP server", 'ctrls': []})
|
||||
[WARNING][2026-04-07 09:27:09,901][log.py:249]Not Found: /
|
||||
[WARNING][2026-04-07 09:27:10,065][log.py:249]Not Found: /favicon.ico
|
||||
[WARNING][2026-04-07 18:03:09,337][backend.py:91]Caught LDAPError looking up user: SERVER_DOWN({'result': -1, 'desc': "Can't contact LDAP server", 'ctrls': []})
|
||||
[WARNING][2026-04-15 18:38:48,504][log.py:249]Unauthorized: /api/system/getInfo
|
||||
[WARNING][2026-04-15 18:38:48,566][log.py:249]Unauthorized: /api/system/logout
|
||||
[WARNING][2026-04-15 18:38:55,114][backend.py:91]Caught LDAPError looking up user: SERVER_DOWN({'result': -1, 'desc': "Can't contact LDAP server", 'ctrls': []})
|
||||
[WARNING][2026-04-16 09:18:04,544][log.py:249]Unauthorized: /api/system/getInfo
|
||||
[WARNING][2026-04-16 09:18:04,605][log.py:249]Unauthorized: /api/system/logout
|
||||
[WARNING][2026-04-16 09:18:08,604][backend.py:91]Caught LDAPError looking up user: SERVER_DOWN({'result': -1, 'desc': "Can't contact LDAP server", 'ctrls': []})
|
||||
[WARNING][2026-04-16 09:27:24,231][backend.py:91]Caught LDAPError looking up user: SERVER_DOWN({'result': -1, 'desc': "Can't contact LDAP server", 'ctrls': []})
|
||||
[WARNING][2026-04-16 09:36:04,828][backend.py:91]Caught LDAPError looking up user: SERVER_DOWN({'result': -1, 'desc': "Can't contact LDAP server", 'ctrls': []})
|
||||
[ERROR][2026-04-16 10:57:10,857][log.py:249]Internal Server Error: /api/project/testDemand/save
|
||||
[WARNING][2026-04-16 13:38:39,790][backend.py:91]Caught LDAPError looking up user: SERVER_DOWN({'result': -1, 'desc': "Can't contact LDAP server", 'ctrls': []})
|
||||
[ERROR][2026-04-16 14:05:52,897][log.py:249]Internal Server Error: /api/project/testDemand/save
|
||||
[WARNING][2026-04-16 14:28:36,656][operation.py:136]"POST - GenerateSeitaiController[create_smDocument] /api/create/smDocument" ('rId15',)
|
||||
[ERROR][2026-04-16 14:28:36,656][errors.py:131]'rId15'
|
||||
Traceback (most recent call last):
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\operation.py", line 217, in run
|
||||
result = self.view_func(request, **ctx.kwargs["view_func_kwargs"])
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\controllers\route\route_functions.py", line 108, in as_view
|
||||
result = self.route.view_func(
|
||||
ctx.controller_instance, *args, **ctx.view_func_kwargs
|
||||
)
|
||||
File "D:\programs\uv\python\cpython-3.13.11-windows-x86_64-none\Lib\contextlib.py", line 85, in inner
|
||||
return func(*args, **kwds)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\apps\createSeiTaiDocument\controllers.py", line 105, in create_smDocument
|
||||
result = generate_temp_doc('sm', payload.id, frag_list=payload.frag)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\apps\createSeiTaiDocument\docXmlUtils.py", line 199, in generate_temp_doc
|
||||
related_part: ImagePart = doc_copied.part.related_parts[embed]
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
||||
KeyError: 'rId15'
|
||||
[ERROR][2026-04-16 14:28:36,662][log.py:249]Internal Server Error: /api/create/smDocument
|
||||
[WARNING][2026-04-16 14:30:45,351][operation.py:136]"POST - GenerateSeitaiController[create_hsmDocument] /api/create/hsmDocument" ('rId15',)
|
||||
[ERROR][2026-04-16 14:30:45,351][errors.py:131]'rId15'
|
||||
Traceback (most recent call last):
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\operation.py", line 217, in run
|
||||
result = self.view_func(request, **ctx.kwargs["view_func_kwargs"])
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\controllers\route\route_functions.py", line 108, in as_view
|
||||
result = self.route.view_func(
|
||||
ctx.controller_instance, *args, **ctx.view_func_kwargs
|
||||
)
|
||||
File "D:\programs\uv\python\cpython-3.13.11-windows-x86_64-none\Lib\contextlib.py", line 85, in inner
|
||||
return func(*args, **kwds)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\apps\createSeiTaiDocument\controllers.py", line 190, in create_hsmDocument
|
||||
result = generate_temp_doc('hsm', payload.id, round_num=cname, frag_list=payload.frag)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\apps\createSeiTaiDocument\docXmlUtils.py", line 199, in generate_temp_doc
|
||||
related_part: ImagePart = doc_copied.part.related_parts[embed]
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
||||
KeyError: 'rId15'
|
||||
[ERROR][2026-04-16 14:30:45,352][log.py:249]Internal Server Error: /api/create/hsmDocument
|
||||
[WARNING][2026-04-16 14:31:17,977][operation.py:136]"POST - GenerateSeitaiController[create_bgDocument] /api/create/bgDocument" ('rId15',)
|
||||
[ERROR][2026-04-16 14:31:17,977][errors.py:131]'rId15'
|
||||
Traceback (most recent call last):
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\operation.py", line 217, in run
|
||||
result = self.view_func(request, **ctx.kwargs["view_func_kwargs"])
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\controllers\route\route_functions.py", line 108, in as_view
|
||||
result = self.route.view_func(
|
||||
ctx.controller_instance, *args, **ctx.view_func_kwargs
|
||||
)
|
||||
File "D:\programs\uv\python\cpython-3.13.11-windows-x86_64-none\Lib\contextlib.py", line 85, in inner
|
||||
return func(*args, **kwds)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\apps\createSeiTaiDocument\controllers.py", line 314, in create_bgDocument
|
||||
result = generate_temp_doc('bg', payload.id, frag_list=payload.frag)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\apps\createSeiTaiDocument\docXmlUtils.py", line 199, in generate_temp_doc
|
||||
related_part: ImagePart = doc_copied.part.related_parts[embed]
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
||||
KeyError: 'rId15'
|
||||
[ERROR][2026-04-16 14:31:17,978][log.py:249]Internal Server Error: /api/create/bgDocument
|
||||
[WARNING][2026-04-16 15:42:36,466][operation.py:136]"POST - GenerateSeitaiController[create_smDocument] /api/create/smDocument" ('rId15',)
|
||||
[ERROR][2026-04-16 15:42:36,466][errors.py:131]'rId15'
|
||||
Traceback (most recent call last):
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\operation.py", line 217, in run
|
||||
result = self.view_func(request, **ctx.kwargs["view_func_kwargs"])
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\controllers\route\route_functions.py", line 108, in as_view
|
||||
result = self.route.view_func(
|
||||
ctx.controller_instance, *args, **ctx.view_func_kwargs
|
||||
)
|
||||
File "D:\programs\uv\python\cpython-3.13.11-windows-x86_64-none\Lib\contextlib.py", line 85, in inner
|
||||
return func(*args, **kwds)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\apps\createSeiTaiDocument\controllers.py", line 105, in create_smDocument
|
||||
result = generate_temp_doc('sm', payload.id, frag_list=payload.frag)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\apps\createSeiTaiDocument\docXmlUtils.py", line 199, in generate_temp_doc
|
||||
related_part: ImagePart = doc_copied.part.related_parts[embed]
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
||||
KeyError: 'rId15'
|
||||
[ERROR][2026-04-16 15:42:36,470][log.py:249]Internal Server Error: /api/create/smDocument
|
||||
[WARNING][2026-04-16 15:53:58,706][operation.py:136]"POST - GenerateSeitaiController[create_smDocument] /api/create/smDocument" ('rId15',)
|
||||
[ERROR][2026-04-16 15:53:58,706][errors.py:131]'rId15'
|
||||
Traceback (most recent call last):
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\operation.py", line 217, in run
|
||||
result = self.view_func(request, **ctx.kwargs["view_func_kwargs"])
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\controllers\route\route_functions.py", line 108, in as_view
|
||||
result = self.route.view_func(
|
||||
ctx.controller_instance, *args, **ctx.view_func_kwargs
|
||||
)
|
||||
File "D:\programs\uv\python\cpython-3.13.11-windows-x86_64-none\Lib\contextlib.py", line 85, in inner
|
||||
return func(*args, **kwds)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\apps\createSeiTaiDocument\controllers.py", line 105, in create_smDocument
|
||||
result = generate_temp_doc('sm', payload.id, frag_list=payload.frag)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\apps\createSeiTaiDocument\docXmlUtils.py", line 199, in generate_temp_doc
|
||||
related_part: ImagePart = doc_copied.part.related_parts[embed]
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
||||
KeyError: 'rId15'
|
||||
[ERROR][2026-04-16 15:53:58,707][log.py:249]Internal Server Error: /api/create/smDocument
|
||||
[WARNING][2026-04-16 15:56:20,961][operation.py:136]"POST - GenerateSeitaiController[create_smDocument] /api/create/smDocument" ('rId15',)
|
||||
[ERROR][2026-04-16 15:56:20,961][errors.py:131]'rId15'
|
||||
Traceback (most recent call last):
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\operation.py", line 217, in run
|
||||
result = self.view_func(request, **ctx.kwargs["view_func_kwargs"])
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\controllers\route\route_functions.py", line 108, in as_view
|
||||
result = self.route.view_func(
|
||||
ctx.controller_instance, *args, **ctx.view_func_kwargs
|
||||
)
|
||||
File "D:\programs\uv\python\cpython-3.13.11-windows-x86_64-none\Lib\contextlib.py", line 85, in inner
|
||||
return func(*args, **kwds)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\apps\createSeiTaiDocument\controllers.py", line 105, in create_smDocument
|
||||
result = generate_temp_doc('sm', payload.id, frag_list=payload.frag)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\apps\createSeiTaiDocument\docXmlUtils.py", line 200, in generate_temp_doc
|
||||
related_part: ImagePart = doc_copied.part.related_parts[embed]
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
||||
KeyError: 'rId15'
|
||||
[ERROR][2026-04-16 15:56:20,964][log.py:249]Internal Server Error: /api/create/smDocument
|
||||
[WARNING][2026-04-16 15:56:53,464][operation.py:136]"POST - GenerateSeitaiController[create_smDocument] /api/create/smDocument" ('rId15',)
|
||||
[ERROR][2026-04-16 15:56:53,464][errors.py:131]'rId15'
|
||||
Traceback (most recent call last):
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\operation.py", line 217, in run
|
||||
result = self.view_func(request, **ctx.kwargs["view_func_kwargs"])
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\controllers\route\route_functions.py", line 108, in as_view
|
||||
result = self.route.view_func(
|
||||
ctx.controller_instance, *args, **ctx.view_func_kwargs
|
||||
)
|
||||
File "D:\programs\uv\python\cpython-3.13.11-windows-x86_64-none\Lib\contextlib.py", line 85, in inner
|
||||
return func(*args, **kwds)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\apps\createSeiTaiDocument\controllers.py", line 105, in create_smDocument
|
||||
result = generate_temp_doc('sm', payload.id, frag_list=payload.frag)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\apps\createSeiTaiDocument\docXmlUtils.py", line 201, in generate_temp_doc
|
||||
related_part: ImagePart = doc_copied.part.related_parts[embed]
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
||||
KeyError: 'rId15'
|
||||
[ERROR][2026-04-16 15:56:53,497][log.py:249]Internal Server Error: /api/create/smDocument
|
||||
[WARNING][2026-04-16 16:20:18,046][operation.py:136]"POST - GenerateSeitaiController[create_smDocument] /api/create/smDocument" ('rId15',)
|
||||
[ERROR][2026-04-16 16:20:18,046][errors.py:131]'rId15'
|
||||
Traceback (most recent call last):
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\operation.py", line 217, in run
|
||||
result = self.view_func(request, **ctx.kwargs["view_func_kwargs"])
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\controllers\route\route_functions.py", line 108, in as_view
|
||||
result = self.route.view_func(
|
||||
ctx.controller_instance, *args, **ctx.view_func_kwargs
|
||||
)
|
||||
File "D:\programs\uv\python\cpython-3.13.11-windows-x86_64-none\Lib\contextlib.py", line 85, in inner
|
||||
return func(*args, **kwds)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\apps\createSeiTaiDocument\controllers.py", line 105, in create_smDocument
|
||||
result = generate_temp_doc('sm', payload.id, frag_list=payload.frag)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\apps\createSeiTaiDocument\docXmlUtils.py", line 199, in generate_temp_doc
|
||||
related_part: ImagePart = doc_copied.part.related_parts[embed]
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
||||
KeyError: 'rId15'
|
||||
[ERROR][2026-04-16 16:20:18,050][log.py:249]Internal Server Error: /api/create/smDocument
|
||||
[WARNING][2026-04-16 16:23:25,686][operation.py:136]"POST - GenerateSeitaiController[create_smDocument] /api/create/smDocument" ('rId15',)
|
||||
[ERROR][2026-04-16 16:23:25,686][errors.py:131]'rId15'
|
||||
Traceback (most recent call last):
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\operation.py", line 217, in run
|
||||
result = self.view_func(request, **ctx.kwargs["view_func_kwargs"])
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\controllers\route\route_functions.py", line 108, in as_view
|
||||
result = self.route.view_func(
|
||||
ctx.controller_instance, *args, **ctx.view_func_kwargs
|
||||
)
|
||||
File "D:\programs\uv\python\cpython-3.13.11-windows-x86_64-none\Lib\contextlib.py", line 85, in inner
|
||||
return func(*args, **kwds)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\apps\createSeiTaiDocument\controllers.py", line 105, in create_smDocument
|
||||
result = generate_temp_doc('sm', payload.id, frag_list=payload.frag)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\apps\createSeiTaiDocument\docXmlUtils.py", line 200, in generate_temp_doc
|
||||
related_part: ImagePart = doc_copied.part.related_parts[embed]
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
||||
KeyError: 'rId15'
|
||||
[ERROR][2026-04-16 16:23:25,824][log.py:249]Internal Server Error: /api/create/smDocument
|
||||
[WARNING][2026-04-16 16:29:41,449][operation.py:136]"POST - GenerateSeitaiController[create_smDocument] /api/create/smDocument" ('rId15',)
|
||||
[ERROR][2026-04-16 16:29:41,449][errors.py:131]'rId15'
|
||||
Traceback (most recent call last):
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\operation.py", line 217, in run
|
||||
result = self.view_func(request, **ctx.kwargs["view_func_kwargs"])
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\controllers\route\route_functions.py", line 108, in as_view
|
||||
result = self.route.view_func(
|
||||
ctx.controller_instance, *args, **ctx.view_func_kwargs
|
||||
)
|
||||
File "D:\programs\uv\python\cpython-3.13.11-windows-x86_64-none\Lib\contextlib.py", line 85, in inner
|
||||
return func(*args, **kwds)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\apps\createSeiTaiDocument\controllers.py", line 105, in create_smDocument
|
||||
result = generate_temp_doc('sm', payload.id, frag_list=payload.frag)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\apps\createSeiTaiDocument\docXmlUtils.py", line 200, in generate_temp_doc
|
||||
related_part: ImagePart = doc_copied.part.related_parts[embed]
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
|
||||
KeyError: 'rId15'
|
||||
[ERROR][2026-04-16 16:29:41,452][log.py:249]Internal Server Error: /api/create/smDocument
|
||||
[WARNING][2026-04-16 17:14:40,599][operation.py:136]"POST - UploadDocumentController[upload_file] /api/documentUpload/file" ("'DocumentPart' object has no attribute 'get_or_add_image_part'",)
|
||||
[ERROR][2026-04-16 17:14:40,600][errors.py:131]'DocumentPart' object has no attribute 'get_or_add_image_part'
|
||||
Traceback (most recent call last):
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\operation.py", line 217, in run
|
||||
result = self.view_func(request, **ctx.kwargs["view_func_kwargs"])
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\controllers\route\route_functions.py", line 108, in as_view
|
||||
result = self.route.view_func(
|
||||
ctx.controller_instance, *args, **ctx.view_func_kwargs
|
||||
)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\apps\createSeiTaiDocument\controllers.py", line 459, in upload_file
|
||||
self.get_dg_to_reuse_dir(target_dir.parent.parent / 'reuse')
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\apps\createSeiTaiDocument\controllers.py", line 486, in get_dg_to_reuse_dir
|
||||
self._copy_element_with_images(child, src_doc, new_doc)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\apps\createSeiTaiDocument\controllers.py", line 515, in _copy_element_with_images
|
||||
new_image_part = dst_doc.part.get_or_add_image_part(image_blob)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
AttributeError: 'DocumentPart' object has no attribute 'get_or_add_image_part'. Did you mean: 'get_or_add_image'?
|
||||
[ERROR][2026-04-16 17:14:40,603][log.py:249]Internal Server Error: /api/documentUpload/file
|
||||
[WARNING][2026-04-16 17:15:14,670][operation.py:136]"POST - UploadDocumentController[upload_file] /api/documentUpload/file" ("'bytes' object has no attribute 'seek'",)
|
||||
[ERROR][2026-04-16 17:15:14,671][errors.py:131]'bytes' object has no attribute 'seek'
|
||||
Traceback (most recent call last):
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\operation.py", line 217, in run
|
||||
result = self.view_func(request, **ctx.kwargs["view_func_kwargs"])
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\controllers\route\route_functions.py", line 108, in as_view
|
||||
result = self.route.view_func(
|
||||
ctx.controller_instance, *args, **ctx.view_func_kwargs
|
||||
)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\apps\createSeiTaiDocument\controllers.py", line 459, in upload_file
|
||||
self.get_dg_to_reuse_dir(target_dir.parent.parent / 'reuse')
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\apps\createSeiTaiDocument\controllers.py", line 486, in get_dg_to_reuse_dir
|
||||
self._copy_element_with_images(child, src_doc, new_doc)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\apps\createSeiTaiDocument\controllers.py", line 515, in _copy_element_with_images
|
||||
new_image_part = dst_doc.part.get_or_add_image(image_blob)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\docx\parts\story.py", line 37, in get_or_add_image
|
||||
image_part = package.get_or_add_image_part(image_descriptor)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\docx\package.py", line 31, in get_or_add_image_part
|
||||
return self.image_parts.get_or_add_image_part(image_descriptor)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\docx\package.py", line 74, in get_or_add_image_part
|
||||
image = Image.from_file(image_descriptor)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\docx\image\image.py", line 47, in from_file
|
||||
stream.seek(0)
|
||||
^^^^^^^^^^^
|
||||
AttributeError: 'bytes' object has no attribute 'seek'
|
||||
[ERROR][2026-04-16 17:15:14,679][log.py:249]Internal Server Error: /api/documentUpload/file
|
||||
[WARNING][2026-04-16 17:15:34,677][operation.py:136]"POST - UploadDocumentController[upload_file] /api/documentUpload/file" ("'DocumentPart' object has no attribute 'get_or_add_image_part'",)
|
||||
[ERROR][2026-04-16 17:15:34,677][errors.py:131]'DocumentPart' object has no attribute 'get_or_add_image_part'
|
||||
Traceback (most recent call last):
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\operation.py", line 217, in run
|
||||
result = self.view_func(request, **ctx.kwargs["view_func_kwargs"])
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\controllers\route\route_functions.py", line 108, in as_view
|
||||
result = self.route.view_func(
|
||||
ctx.controller_instance, *args, **ctx.view_func_kwargs
|
||||
)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\apps\createSeiTaiDocument\controllers.py", line 459, in upload_file
|
||||
self.get_dg_to_reuse_dir(target_dir.parent.parent / 'reuse')
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\apps\createSeiTaiDocument\controllers.py", line 486, in get_dg_to_reuse_dir
|
||||
self._copy_element_with_images(child, src_doc, new_doc)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\apps\createSeiTaiDocument\controllers.py", line 515, in _copy_element_with_images
|
||||
new_image_part = dst_doc.part.get_or_add_image_part(image_blob)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
AttributeError: 'DocumentPart' object has no attribute 'get_or_add_image_part'. Did you mean: 'get_or_add_image'?
|
||||
[ERROR][2026-04-16 17:15:34,681][log.py:249]Internal Server Error: /api/documentUpload/file
|
||||
[WARNING][2026-04-16 17:17:47,027][operation.py:136]"POST - UploadDocumentController[upload_file] /api/documentUpload/file" ("BaseOxmlElement.xpath() got an unexpected keyword argument 'namespaces'",)
|
||||
[ERROR][2026-04-16 17:17:47,027][errors.py:131]BaseOxmlElement.xpath() got an unexpected keyword argument 'namespaces'
|
||||
Traceback (most recent call last):
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\operation.py", line 217, in run
|
||||
result = self.view_func(request, **ctx.kwargs["view_func_kwargs"])
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\controllers\route\route_functions.py", line 108, in as_view
|
||||
result = self.route.view_func(
|
||||
ctx.controller_instance, *args, **ctx.view_func_kwargs
|
||||
)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\apps\createSeiTaiDocument\controllers.py", line 462, in upload_file
|
||||
self.get_dg_to_reuse_dir(target_dir.parent.parent / 'reuse')
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\apps\createSeiTaiDocument\controllers.py", line 489, in get_dg_to_reuse_dir
|
||||
self._copy_element_with_images(child, src_doc, new_doc)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\apps\createSeiTaiDocument\controllers.py", line 510, in _copy_element_with_images
|
||||
pic_nodes = new_element.xpath('.//pic:pic', namespaces=namespaces)
|
||||
TypeError: BaseOxmlElement.xpath() got an unexpected keyword argument 'namespaces'
|
||||
[ERROR][2026-04-16 17:17:47,029][log.py:249]Internal Server Error: /api/documentUpload/file
|
||||
[WARNING][2026-04-16 17:19:37,022][operation.py:136]"POST - UploadDocumentController[upload_file] /api/documentUpload/file" ("'lxml.etree._Element' object has no attribute 'xml'",)
|
||||
[ERROR][2026-04-16 17:19:37,022][errors.py:131]'lxml.etree._Element' object has no attribute 'xml'
|
||||
Traceback (most recent call last):
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\operation.py", line 217, in run
|
||||
result = self.view_func(request, **ctx.kwargs["view_func_kwargs"])
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\controllers\route\route_functions.py", line 108, in as_view
|
||||
result = self.route.view_func(
|
||||
ctx.controller_instance, *args, **ctx.view_func_kwargs
|
||||
)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\apps\createSeiTaiDocument\controllers.py", line 462, in upload_file
|
||||
self.get_dg_to_reuse_dir(target_dir.parent.parent / 'reuse')
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\apps\createSeiTaiDocument\controllers.py", line 489, in get_dg_to_reuse_dir
|
||||
self._copy_element_with_images(child, src_doc, new_doc)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\apps\createSeiTaiDocument\controllers.py", line 497, in _copy_element_with_images
|
||||
new_element = parse_xml(element.xml)
|
||||
^^^^^^^^^^^
|
||||
AttributeError: 'lxml.etree._Element' object has no attribute 'xml'
|
||||
[ERROR][2026-04-16 17:19:37,024][log.py:249]Internal Server Error: /api/documentUpload/file
|
||||
[WARNING][2026-04-16 17:21:20,339][operation.py:136]"POST - UploadDocumentController[upload_file] /api/documentUpload/file" ("BaseOxmlElement.xpath() got an unexpected keyword argument 'namespaces'",)
|
||||
[ERROR][2026-04-16 17:21:20,339][errors.py:131]BaseOxmlElement.xpath() got an unexpected keyword argument 'namespaces'
|
||||
Traceback (most recent call last):
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\operation.py", line 217, in run
|
||||
result = self.view_func(request, **ctx.kwargs["view_func_kwargs"])
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\controllers\route\route_functions.py", line 108, in as_view
|
||||
result = self.route.view_func(
|
||||
ctx.controller_instance, *args, **ctx.view_func_kwargs
|
||||
)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\apps\createSeiTaiDocument\controllers.py", line 462, in upload_file
|
||||
self.get_dg_to_reuse_dir(target_dir.parent.parent / 'reuse')
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\apps\createSeiTaiDocument\controllers.py", line 489, in get_dg_to_reuse_dir
|
||||
self._copy_element_with_images(child, src_doc, new_doc)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\apps\createSeiTaiDocument\controllers.py", line 511, in _copy_element_with_images
|
||||
pic_nodes = new_element.xpath('.//pic:pic', namespaces=nsmap)
|
||||
TypeError: BaseOxmlElement.xpath() got an unexpected keyword argument 'namespaces'
|
||||
[ERROR][2026-04-16 17:21:20,341][log.py:249]Internal Server Error: /api/documentUpload/file
|
||||
[WARNING][2026-04-17 13:45:31,769][log.py:249]Unauthorized: /api/system/getInfo
|
||||
[WARNING][2026-04-17 13:45:31,835][log.py:249]Unauthorized: /api/system/logout
|
||||
[WARNING][2026-04-17 13:45:36,826][backend.py:91]Caught LDAPError looking up user: SERVER_DOWN({'result': -1, 'desc': "Can't contact LDAP server", 'ctrls': []})
|
||||
[WARNING][2026-04-17 14:20:04,514][logger.py:25][回归测试记录模块][字典数据缺失]片段:字典数据runtime数据缺失,请检查相应数据是否存在
|
||||
[WARNING][2026-04-17 14:20:04,518][logger.py:25][回归测试记录模块][字典数据缺失]片段:字典数据devplant数据缺失,请检查相应数据是否存在
|
||||
[WARNING][2026-04-17 16:18:06,060][operation.py:136]"PUT - TestDemandController[update_testDemand] /api/project/testDemand/update/670" (1406, "Data too long for column 'adequacy' at row 1")
|
||||
[ERROR][2026-04-17 16:18:06,060][errors.py:131](1406, "Data too long for column 'adequacy' at row 1")
|
||||
[WARNING][2026-04-22 09:45:35,603][log.py:249]Unauthorized: /api/system/getInfo
|
||||
[WARNING][2026-04-22 09:45:35,677][log.py:249]Unauthorized: /api/system/logout
|
||||
[WARNING][2026-04-22 09:45:39,967][backend.py:91]Caught LDAPError looking up user: SERVER_DOWN({'result': -1, 'desc': "Can't contact LDAP server", 'ctrls': []})
|
||||
[WARNING][2026-04-22 11:03:49,239][operation.py:136]"PUT - DesignController[update_design] /api/project/editDesignDemand/4030" (1048, "Column 'is_bidirectional' cannot be null")
|
||||
[ERROR][2026-04-22 11:03:49,239][errors.py:131](1048, "Column 'is_bidirectional' cannot be null")
|
||||
Traceback (most recent call last):
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\backends\utils.py", line 105, in _execute
|
||||
return self.cursor.execute(sql, params)
|
||||
@@ -344,7 +18,7 @@ Traceback (most recent call last):
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\MySQLdb\connections.py", line 286, in query
|
||||
_mysql.connection.query(self, query)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
|
||||
MySQLdb.DataError: (1406, "Data too long for column 'adequacy' at row 1")
|
||||
MySQLdb.IntegrityError: (1048, "Column 'is_bidirectional' cannot be null")
|
||||
|
||||
The above exception was the direct cause of the following exception:
|
||||
|
||||
@@ -357,9 +31,9 @@ Traceback (most recent call last):
|
||||
)
|
||||
File "D:\programs\uv\python\cpython-3.13.11-windows-x86_64-none\Lib\contextlib.py", line 85, in inner
|
||||
return func(*args, **kwds)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\apps\project\controllers\testDemand.py", line 270, in update_testDemand
|
||||
testDemand_qs.save()
|
||||
~~~~~~~~~~~~~~~~~~^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\apps\project\controllers\design.py", line 148, in update_design
|
||||
design_qs.save()
|
||||
~~~~~~~~~~~~~~^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\base.py", line 874, in save
|
||||
self.save_base(
|
||||
~~~~~~~~~~~~~~^
|
||||
@@ -426,168 +100,10 @@ Traceback (most recent call last):
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\MySQLdb\connections.py", line 286, in query
|
||||
_mysql.connection.query(self, query)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
|
||||
django.db.utils.DataError: (1406, "Data too long for column 'adequacy' at row 1")
|
||||
[ERROR][2026-04-17 16:18:06,071][log.py:249]Internal Server Error: /api/project/testDemand/update/670
|
||||
[WARNING][2026-04-17 16:35:01,341][log.py:249]Bad Request: /api/testmanage/project/save
|
||||
[WARNING][2026-04-17 16:45:59,963][log.py:249]Bad Request: /api/testmanage/project/save
|
||||
[WARNING][2026-04-17 16:46:01,209][log.py:249]Bad Request: /api/testmanage/project/save
|
||||
[WARNING][2026-04-17 17:01:10,991][log.py:249]Bad Request: /api/testmanage/project/save
|
||||
[WARNING][2026-04-20 09:31:28,826][log.py:249]Unauthorized: /api/system/getInfo
|
||||
[WARNING][2026-04-20 09:31:28,893][log.py:249]Unauthorized: /api/system/logout
|
||||
[WARNING][2026-04-20 09:31:36,102][backend.py:91]Caught LDAPError looking up user: SERVER_DOWN({'result': -1, 'desc': "Can't contact LDAP server", 'ctrls': []})
|
||||
[ERROR][2026-04-20 09:34:09,062][log.py:249]Internal Server Error: /api/project/testDemand/save
|
||||
[ERROR][2026-04-20 09:34:10,386][log.py:249]Internal Server Error: /api/project/testDemand/save
|
||||
[ERROR][2026-04-20 09:34:10,841][log.py:249]Internal Server Error: /api/project/testDemand/save
|
||||
[WARNING][2026-04-20 10:25:04,532][operation.py:136]"GET - GenerateControllerDG[create_static_hard] /api/generate/create/static_hard" ('All strings must be XML compatible: Unicode or ASCII, no NULL bytes or control characters',)
|
||||
[ERROR][2026-04-20 10:25:04,532][errors.py:131]All strings must be XML compatible: Unicode or ASCII, no NULL bytes or control characters
|
||||
Traceback (most recent call last):
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\operation.py", line 217, in run
|
||||
result = self.view_func(request, **ctx.kwargs["view_func_kwargs"])
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\controllers\route\route_functions.py", line 108, in as_view
|
||||
result = self.route.view_func(
|
||||
ctx.controller_instance, *args, **ctx.view_func_kwargs
|
||||
)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\apps\createDocument\controllers\dg.py", line 567, in create_static_hard
|
||||
res = self.uniform_static_dynamic_response(id, '静态硬件和固件项_2.docx', '静态硬件和固件项.docx', StaticSoftHardware)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\apps\createDocument\controllers\dg.py", line 535, in uniform_static_dynamic_response
|
||||
subdoc = cls.create_table_context(table_data, doc)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\apps\createDocument\controllers\dg.py", line 498, in create_table_context
|
||||
cell.text = cell.text.replace("\n", "\a")
|
||||
^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\docx\table.py", line 284, in text
|
||||
r.text = text
|
||||
^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\docx\oxml\text\run.py", line 143, in text
|
||||
_RunContentAppender.append_to_run_from_text(self, text)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\docx\oxml\text\run.py", line 279, in append_to_run_from_text
|
||||
appender.add_text(text)
|
||||
~~~~~~~~~~~~~~~~~^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\docx\oxml\text\run.py", line 285, in add_text
|
||||
self.flush()
|
||||
~~~~~~~~~~^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\docx\oxml\text\run.py", line 306, in flush
|
||||
self._r.add_t(text)
|
||||
~~~~~~~~~~~~~^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\docx\oxml\text\run.py", line 42, in add_t
|
||||
t = self._add_t(text=text)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\docx\oxml\xmlchemy.py", line 288, in _add_child
|
||||
setattr(child, key, value)
|
||||
~~~~~~~^^^^^^^^^^^^^^^^^^^
|
||||
File "src/lxml/etree.pyx", line 1168, in lxml.etree._Element.text.__set__
|
||||
File "src/lxml/apihelpers.pxi", line 763, in lxml.etree._setNodeText
|
||||
File "src/lxml/apihelpers.pxi", line 751, in lxml.etree._createTextNode
|
||||
File "src/lxml/apihelpers.pxi", line 1556, in lxml.etree._utf8
|
||||
ValueError: All strings must be XML compatible: Unicode or ASCII, no NULL bytes or control characters
|
||||
[ERROR][2026-04-20 10:25:04,710][log.py:249]Internal Server Error: /api/generate/create/static_hard
|
||||
[WARNING][2026-04-20 10:25:26,146][operation.py:136]"GET - GenerateControllerDG[create_static_hard] /api/generate/create/static_hard" ('All strings must be XML compatible: Unicode or ASCII, no NULL bytes or control characters',)
|
||||
[ERROR][2026-04-20 10:25:26,150][errors.py:131]All strings must be XML compatible: Unicode or ASCII, no NULL bytes or control characters
|
||||
Traceback (most recent call last):
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\operation.py", line 217, in run
|
||||
result = self.view_func(request, **ctx.kwargs["view_func_kwargs"])
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\controllers\route\route_functions.py", line 108, in as_view
|
||||
result = self.route.view_func(
|
||||
ctx.controller_instance, *args, **ctx.view_func_kwargs
|
||||
)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\apps\createDocument\controllers\dg.py", line 567, in create_static_hard
|
||||
res = self.uniform_static_dynamic_response(id, '静态硬件和固件项_2.docx', '静态硬件和固件项.docx', StaticSoftHardware)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\apps\createDocument\controllers\dg.py", line 535, in uniform_static_dynamic_response
|
||||
subdoc = cls.create_table_context(table_data, doc)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\apps\createDocument\controllers\dg.py", line 498, in create_table_context
|
||||
cell.text = cell.text.replace("\n", "\a")
|
||||
^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\docx\table.py", line 284, in text
|
||||
r.text = text
|
||||
^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\docx\oxml\text\run.py", line 143, in text
|
||||
_RunContentAppender.append_to_run_from_text(self, text)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\docx\oxml\text\run.py", line 279, in append_to_run_from_text
|
||||
appender.add_text(text)
|
||||
~~~~~~~~~~~~~~~~~^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\docx\oxml\text\run.py", line 285, in add_text
|
||||
self.flush()
|
||||
~~~~~~~~~~^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\docx\oxml\text\run.py", line 306, in flush
|
||||
self._r.add_t(text)
|
||||
~~~~~~~~~~~~~^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\docx\oxml\text\run.py", line 42, in add_t
|
||||
t = self._add_t(text=text)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\docx\oxml\xmlchemy.py", line 288, in _add_child
|
||||
setattr(child, key, value)
|
||||
~~~~~~~^^^^^^^^^^^^^^^^^^^
|
||||
File "src/lxml/etree.pyx", line 1168, in lxml.etree._Element.text.__set__
|
||||
File "src/lxml/apihelpers.pxi", line 763, in lxml.etree._setNodeText
|
||||
File "src/lxml/apihelpers.pxi", line 751, in lxml.etree._createTextNode
|
||||
File "src/lxml/apihelpers.pxi", line 1556, in lxml.etree._utf8
|
||||
ValueError: All strings must be XML compatible: Unicode or ASCII, no NULL bytes or control characters
|
||||
[ERROR][2026-04-20 10:25:26,215][log.py:249]Internal Server Error: /api/generate/create/static_hard
|
||||
[WARNING][2026-04-20 10:25:46,224][operation.py:136]"GET - GenerateControllerDG[create_static_hard] /api/generate/create/static_hard" ('All strings must be XML compatible: Unicode or ASCII, no NULL bytes or control characters',)
|
||||
[ERROR][2026-04-20 10:25:46,224][errors.py:131]All strings must be XML compatible: Unicode or ASCII, no NULL bytes or control characters
|
||||
Traceback (most recent call last):
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\operation.py", line 217, in run
|
||||
result = self.view_func(request, **ctx.kwargs["view_func_kwargs"])
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\controllers\route\route_functions.py", line 108, in as_view
|
||||
result = self.route.view_func(
|
||||
ctx.controller_instance, *args, **ctx.view_func_kwargs
|
||||
)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\apps\createDocument\controllers\dg.py", line 565, in create_static_hard
|
||||
res = self.uniform_static_dynamic_response(id, '静态硬件和固件项_2.docx', '静态硬件和固件项.docx', StaticSoftHardware)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\apps\createDocument\controllers\dg.py", line 533, in uniform_static_dynamic_response
|
||||
subdoc = cls.create_table_context(table_data, doc)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\apps\createDocument\controllers\dg.py", line 496, in create_table_context
|
||||
cell.text = table_data[row][col - 1].replace("\n", "\a")
|
||||
^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\docx\table.py", line 284, in text
|
||||
r.text = text
|
||||
^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\docx\oxml\text\run.py", line 143, in text
|
||||
_RunContentAppender.append_to_run_from_text(self, text)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\docx\oxml\text\run.py", line 279, in append_to_run_from_text
|
||||
appender.add_text(text)
|
||||
~~~~~~~~~~~~~~~~~^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\docx\oxml\text\run.py", line 285, in add_text
|
||||
self.flush()
|
||||
~~~~~~~~~~^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\docx\oxml\text\run.py", line 306, in flush
|
||||
self._r.add_t(text)
|
||||
~~~~~~~~~~~~~^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\docx\oxml\text\run.py", line 42, in add_t
|
||||
t = self._add_t(text=text)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\docx\oxml\xmlchemy.py", line 288, in _add_child
|
||||
setattr(child, key, value)
|
||||
~~~~~~~^^^^^^^^^^^^^^^^^^^
|
||||
File "src/lxml/etree.pyx", line 1168, in lxml.etree._Element.text.__set__
|
||||
File "src/lxml/apihelpers.pxi", line 763, in lxml.etree._setNodeText
|
||||
File "src/lxml/apihelpers.pxi", line 751, in lxml.etree._createTextNode
|
||||
File "src/lxml/apihelpers.pxi", line 1556, in lxml.etree._utf8
|
||||
ValueError: All strings must be XML compatible: Unicode or ASCII, no NULL bytes or control characters
|
||||
[ERROR][2026-04-20 10:25:46,266][log.py:249]Internal Server Error: /api/generate/create/static_hard
|
||||
[WARNING][2026-04-20 10:34:26,463][operation.py:136]"POST - DesignController[create_design] /api/project/designDemand/save" (1406, "Data too long for column 'protocal' at row 1")
|
||||
[ERROR][2026-04-20 10:34:26,463][errors.py:131](1406, "Data too long for column 'protocal' at row 1")
|
||||
Traceback (most recent call last):
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\backends\utils.py", line 105, in _execute
|
||||
return self.cursor.execute(sql, params)
|
||||
~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\backends\mysql\base.py", line 78, in execute
|
||||
return self.cursor.execute(query, args)
|
||||
~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\MySQLdb\cursors.py", line 179, in execute
|
||||
res = self._query(mogrified_query)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\MySQLdb\cursors.py", line 330, in _query
|
||||
db.query(q)
|
||||
~~~~~~~~^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\MySQLdb\connections.py", line 286, in query
|
||||
_mysql.connection.query(self, query)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
|
||||
MySQLdb.DataError: (1406, "Data too long for column 'protocal' at row 1")
|
||||
|
||||
The above exception was the direct cause of the following exception:
|
||||
|
||||
django.db.utils.IntegrityError: (1048, "Column 'is_bidirectional' cannot be null")
|
||||
[ERROR][2026-04-22 11:03:49,254][log.py:249]Internal Server Error: /api/project/editDesignDemand/4030
|
||||
[WARNING][2026-04-22 11:23:22,342][operation.py:136]"POST - DesignController[create_design] /api/project/designDemand/save" ("Design() got unexpected keyword arguments: 'forward_source', 'forward_destination', 'forward_description', 'reverse_source', 'reverse_destination', 'reverse_description'",)
|
||||
[ERROR][2026-04-22 11:23:22,342][errors.py:131]Design() got unexpected keyword arguments: 'forward_source', 'forward_destination', 'forward_description', 'reverse_source', 'reverse_destination', 'reverse_description'
|
||||
Traceback (most recent call last):
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\operation.py", line 217, in run
|
||||
result = self.view_func(request, **ctx.kwargs["view_func_kwargs"])
|
||||
@@ -597,107 +113,21 @@ Traceback (most recent call last):
|
||||
)
|
||||
File "D:\programs\uv\python\cpython-3.13.11-windows-x86_64-none\Lib\contextlib.py", line 85, in inner
|
||||
return func(*args, **kwds)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\apps\project\controllers\design.py", line 100, in create_design
|
||||
File "E:\pycharmProjects\cdtestplant_v1\apps\project\controllers\design.py", line 116, in create_design
|
||||
qs = Design.objects.create(**asert_dict)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\manager.py", line 87, in manager_method
|
||||
return getattr(self.get_queryset(), name)(*args, **kwargs)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 669, in create
|
||||
obj.save(force_insert=True, using=self.db)
|
||||
~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\base.py", line 874, in save
|
||||
self.save_base(
|
||||
~~~~~~~~~~~~~~^
|
||||
using=using,
|
||||
^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 667, in create
|
||||
obj = self.model(**kwargs)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\base.py", line 590, in __init__
|
||||
raise TypeError(
|
||||
...<2 lines>...
|
||||
update_fields=update_fields,
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
)
|
||||
^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\base.py", line 966, in save_base
|
||||
updated = self._save_table(
|
||||
raw,
|
||||
...<4 lines>...
|
||||
update_fields,
|
||||
)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\base.py", line 1169, in _save_table
|
||||
results = self._do_insert(
|
||||
cls._base_manager, using, insert_fields, returning_fields, raw
|
||||
)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\base.py", line 1220, in _do_insert
|
||||
return manager._insert(
|
||||
~~~~~~~~~~~~~~~^
|
||||
[self],
|
||||
^^^^^^^
|
||||
...<3 lines>...
|
||||
raw=raw,
|
||||
^^^^^^^^
|
||||
)
|
||||
^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\manager.py", line 87, in manager_method
|
||||
return getattr(self.get_queryset(), name)(*args, **kwargs)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 1918, in _insert
|
||||
return query.get_compiler(using=using).execute_sql(returning_fields)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\compiler.py", line 1925, in execute_sql
|
||||
cursor.execute(sql, params)
|
||||
~~~~~~~~~~~~~~^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\backends\utils.py", line 122, in execute
|
||||
return super().execute(sql, params)
|
||||
~~~~~~~~~~~~~~~^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\backends\utils.py", line 79, in execute
|
||||
return self._execute_with_wrappers(
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||||
sql, params, many=False, executor=self._execute
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
)
|
||||
^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\backends\utils.py", line 92, in _execute_with_wrappers
|
||||
return executor(sql, params, many, context)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\backends\utils.py", line 100, in _execute
|
||||
with self.db.wrap_database_errors:
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\utils.py", line 94, in __exit__
|
||||
raise dj_exc_value.with_traceback(traceback) from exc_value
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\backends\utils.py", line 105, in _execute
|
||||
return self.cursor.execute(sql, params)
|
||||
~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\backends\mysql\base.py", line 78, in execute
|
||||
return self.cursor.execute(query, args)
|
||||
~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\MySQLdb\cursors.py", line 179, in execute
|
||||
res = self._query(mogrified_query)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\MySQLdb\cursors.py", line 330, in _query
|
||||
db.query(q)
|
||||
~~~~~~~~^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\MySQLdb\connections.py", line 286, in query
|
||||
_mysql.connection.query(self, query)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
|
||||
django.db.utils.DataError: (1406, "Data too long for column 'protocal' at row 1")
|
||||
[ERROR][2026-04-20 10:34:26,484][log.py:249]Internal Server Error: /api/project/designDemand/save
|
||||
[WARNING][2026-04-20 10:35:26,599][operation.py:136]"POST - DesignController[create_design] /api/project/designDemand/save" (1406, "Data too long for column 'protocal' at row 1")
|
||||
[ERROR][2026-04-20 10:35:26,599][errors.py:131](1406, "Data too long for column 'protocal' at row 1")
|
||||
Traceback (most recent call last):
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\backends\utils.py", line 105, in _execute
|
||||
return self.cursor.execute(sql, params)
|
||||
~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\backends\mysql\base.py", line 78, in execute
|
||||
return self.cursor.execute(query, args)
|
||||
~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\MySQLdb\cursors.py", line 179, in execute
|
||||
res = self._query(mogrified_query)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\MySQLdb\cursors.py", line 330, in _query
|
||||
db.query(q)
|
||||
~~~~~~~~^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\MySQLdb\connections.py", line 286, in query
|
||||
_mysql.connection.query(self, query)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
|
||||
MySQLdb.DataError: (1406, "Data too long for column 'protocal' at row 1")
|
||||
|
||||
The above exception was the direct cause of the following exception:
|
||||
|
||||
TypeError: Design() got unexpected keyword arguments: 'forward_source', 'forward_destination', 'forward_description', 'reverse_source', 'reverse_destination', 'reverse_description'
|
||||
[ERROR][2026-04-22 11:23:22,347][log.py:249]Internal Server Error: /api/project/designDemand/save
|
||||
[WARNING][2026-04-22 13:13:59,640][operation.py:136]"GET - GenerateControllerDG[create_interface] /api/generate/create/interface" ("'Design' object has no attribute 'source'",)
|
||||
[ERROR][2026-04-22 13:13:59,640][errors.py:131]'Design' object has no attribute 'source'
|
||||
Traceback (most recent call last):
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\operation.py", line 217, in run
|
||||
result = self.view_func(request, **ctx.kwargs["view_func_kwargs"])
|
||||
@@ -705,307 +135,8 @@ Traceback (most recent call last):
|
||||
result = self.route.view_func(
|
||||
ctx.controller_instance, *args, **ctx.view_func_kwargs
|
||||
)
|
||||
File "D:\programs\uv\python\cpython-3.13.11-windows-x86_64-none\Lib\contextlib.py", line 85, in inner
|
||||
return func(*args, **kwds)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\apps\project\controllers\design.py", line 100, in create_design
|
||||
qs = Design.objects.create(**asert_dict)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\manager.py", line 87, in manager_method
|
||||
return getattr(self.get_queryset(), name)(*args, **kwargs)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 669, in create
|
||||
obj.save(force_insert=True, using=self.db)
|
||||
~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\base.py", line 874, in save
|
||||
self.save_base(
|
||||
~~~~~~~~~~~~~~^
|
||||
using=using,
|
||||
^^^^^^^^^^^^
|
||||
...<2 lines>...
|
||||
update_fields=update_fields,
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
)
|
||||
^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\base.py", line 966, in save_base
|
||||
updated = self._save_table(
|
||||
raw,
|
||||
...<4 lines>...
|
||||
update_fields,
|
||||
)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\base.py", line 1169, in _save_table
|
||||
results = self._do_insert(
|
||||
cls._base_manager, using, insert_fields, returning_fields, raw
|
||||
)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\base.py", line 1220, in _do_insert
|
||||
return manager._insert(
|
||||
~~~~~~~~~~~~~~~^
|
||||
[self],
|
||||
^^^^^^^
|
||||
...<3 lines>...
|
||||
raw=raw,
|
||||
^^^^^^^^
|
||||
)
|
||||
^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\manager.py", line 87, in manager_method
|
||||
return getattr(self.get_queryset(), name)(*args, **kwargs)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 1918, in _insert
|
||||
return query.get_compiler(using=using).execute_sql(returning_fields)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\compiler.py", line 1925, in execute_sql
|
||||
cursor.execute(sql, params)
|
||||
~~~~~~~~~~~~~~^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\backends\utils.py", line 122, in execute
|
||||
return super().execute(sql, params)
|
||||
~~~~~~~~~~~~~~~^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\backends\utils.py", line 79, in execute
|
||||
return self._execute_with_wrappers(
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||||
sql, params, many=False, executor=self._execute
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
)
|
||||
^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\backends\utils.py", line 92, in _execute_with_wrappers
|
||||
return executor(sql, params, many, context)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\backends\utils.py", line 100, in _execute
|
||||
with self.db.wrap_database_errors:
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\utils.py", line 94, in __exit__
|
||||
raise dj_exc_value.with_traceback(traceback) from exc_value
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\backends\utils.py", line 105, in _execute
|
||||
return self.cursor.execute(sql, params)
|
||||
~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\backends\mysql\base.py", line 78, in execute
|
||||
return self.cursor.execute(query, args)
|
||||
~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\MySQLdb\cursors.py", line 179, in execute
|
||||
res = self._query(mogrified_query)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\MySQLdb\cursors.py", line 330, in _query
|
||||
db.query(q)
|
||||
~~~~~~~~^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\MySQLdb\connections.py", line 286, in query
|
||||
_mysql.connection.query(self, query)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
|
||||
django.db.utils.DataError: (1406, "Data too long for column 'protocal' at row 1")
|
||||
[ERROR][2026-04-20 10:35:26,608][log.py:249]Internal Server Error: /api/project/designDemand/save
|
||||
[WARNING][2026-04-20 10:35:27,464][operation.py:136]"POST - DesignController[create_design] /api/project/designDemand/save" (1406, "Data too long for column 'protocal' at row 1")
|
||||
[ERROR][2026-04-20 10:35:27,464][errors.py:131](1406, "Data too long for column 'protocal' at row 1")
|
||||
Traceback (most recent call last):
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\backends\utils.py", line 105, in _execute
|
||||
return self.cursor.execute(sql, params)
|
||||
~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\backends\mysql\base.py", line 78, in execute
|
||||
return self.cursor.execute(query, args)
|
||||
~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\MySQLdb\cursors.py", line 179, in execute
|
||||
res = self._query(mogrified_query)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\MySQLdb\cursors.py", line 330, in _query
|
||||
db.query(q)
|
||||
~~~~~~~~^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\MySQLdb\connections.py", line 286, in query
|
||||
_mysql.connection.query(self, query)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
|
||||
MySQLdb.DataError: (1406, "Data too long for column 'protocal' at row 1")
|
||||
|
||||
The above exception was the direct cause of the following exception:
|
||||
|
||||
Traceback (most recent call last):
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\operation.py", line 217, in run
|
||||
result = self.view_func(request, **ctx.kwargs["view_func_kwargs"])
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\controllers\route\route_functions.py", line 108, in as_view
|
||||
result = self.route.view_func(
|
||||
ctx.controller_instance, *args, **ctx.view_func_kwargs
|
||||
)
|
||||
File "D:\programs\uv\python\cpython-3.13.11-windows-x86_64-none\Lib\contextlib.py", line 85, in inner
|
||||
return func(*args, **kwds)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\apps\project\controllers\design.py", line 100, in create_design
|
||||
qs = Design.objects.create(**asert_dict)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\manager.py", line 87, in manager_method
|
||||
return getattr(self.get_queryset(), name)(*args, **kwargs)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 669, in create
|
||||
obj.save(force_insert=True, using=self.db)
|
||||
~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\base.py", line 874, in save
|
||||
self.save_base(
|
||||
~~~~~~~~~~~~~~^
|
||||
using=using,
|
||||
^^^^^^^^^^^^
|
||||
...<2 lines>...
|
||||
update_fields=update_fields,
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
)
|
||||
^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\base.py", line 966, in save_base
|
||||
updated = self._save_table(
|
||||
raw,
|
||||
...<4 lines>...
|
||||
update_fields,
|
||||
)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\base.py", line 1169, in _save_table
|
||||
results = self._do_insert(
|
||||
cls._base_manager, using, insert_fields, returning_fields, raw
|
||||
)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\base.py", line 1220, in _do_insert
|
||||
return manager._insert(
|
||||
~~~~~~~~~~~~~~~^
|
||||
[self],
|
||||
^^^^^^^
|
||||
...<3 lines>...
|
||||
raw=raw,
|
||||
^^^^^^^^
|
||||
)
|
||||
^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\manager.py", line 87, in manager_method
|
||||
return getattr(self.get_queryset(), name)(*args, **kwargs)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 1918, in _insert
|
||||
return query.get_compiler(using=using).execute_sql(returning_fields)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\compiler.py", line 1925, in execute_sql
|
||||
cursor.execute(sql, params)
|
||||
~~~~~~~~~~~~~~^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\backends\utils.py", line 122, in execute
|
||||
return super().execute(sql, params)
|
||||
~~~~~~~~~~~~~~~^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\backends\utils.py", line 79, in execute
|
||||
return self._execute_with_wrappers(
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||||
sql, params, many=False, executor=self._execute
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
)
|
||||
^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\backends\utils.py", line 92, in _execute_with_wrappers
|
||||
return executor(sql, params, many, context)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\backends\utils.py", line 100, in _execute
|
||||
with self.db.wrap_database_errors:
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\utils.py", line 94, in __exit__
|
||||
raise dj_exc_value.with_traceback(traceback) from exc_value
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\backends\utils.py", line 105, in _execute
|
||||
return self.cursor.execute(sql, params)
|
||||
~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\backends\mysql\base.py", line 78, in execute
|
||||
return self.cursor.execute(query, args)
|
||||
~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\MySQLdb\cursors.py", line 179, in execute
|
||||
res = self._query(mogrified_query)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\MySQLdb\cursors.py", line 330, in _query
|
||||
db.query(q)
|
||||
~~~~~~~~^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\MySQLdb\connections.py", line 286, in query
|
||||
_mysql.connection.query(self, query)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
|
||||
django.db.utils.DataError: (1406, "Data too long for column 'protocal' at row 1")
|
||||
[ERROR][2026-04-20 10:35:27,473][log.py:249]Internal Server Error: /api/project/designDemand/save
|
||||
[WARNING][2026-04-20 10:35:27,981][operation.py:136]"POST - DesignController[create_design] /api/project/designDemand/save" (1406, "Data too long for column 'protocal' at row 1")
|
||||
[ERROR][2026-04-20 10:35:27,981][errors.py:131](1406, "Data too long for column 'protocal' at row 1")
|
||||
Traceback (most recent call last):
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\backends\utils.py", line 105, in _execute
|
||||
return self.cursor.execute(sql, params)
|
||||
~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\backends\mysql\base.py", line 78, in execute
|
||||
return self.cursor.execute(query, args)
|
||||
~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\MySQLdb\cursors.py", line 179, in execute
|
||||
res = self._query(mogrified_query)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\MySQLdb\cursors.py", line 330, in _query
|
||||
db.query(q)
|
||||
~~~~~~~~^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\MySQLdb\connections.py", line 286, in query
|
||||
_mysql.connection.query(self, query)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
|
||||
MySQLdb.DataError: (1406, "Data too long for column 'protocal' at row 1")
|
||||
|
||||
The above exception was the direct cause of the following exception:
|
||||
|
||||
Traceback (most recent call last):
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\operation.py", line 217, in run
|
||||
result = self.view_func(request, **ctx.kwargs["view_func_kwargs"])
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\controllers\route\route_functions.py", line 108, in as_view
|
||||
result = self.route.view_func(
|
||||
ctx.controller_instance, *args, **ctx.view_func_kwargs
|
||||
)
|
||||
File "D:\programs\uv\python\cpython-3.13.11-windows-x86_64-none\Lib\contextlib.py", line 85, in inner
|
||||
return func(*args, **kwds)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\apps\project\controllers\design.py", line 100, in create_design
|
||||
qs = Design.objects.create(**asert_dict)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\manager.py", line 87, in manager_method
|
||||
return getattr(self.get_queryset(), name)(*args, **kwargs)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 669, in create
|
||||
obj.save(force_insert=True, using=self.db)
|
||||
~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\base.py", line 874, in save
|
||||
self.save_base(
|
||||
~~~~~~~~~~~~~~^
|
||||
using=using,
|
||||
^^^^^^^^^^^^
|
||||
...<2 lines>...
|
||||
update_fields=update_fields,
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
)
|
||||
^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\base.py", line 966, in save_base
|
||||
updated = self._save_table(
|
||||
raw,
|
||||
...<4 lines>...
|
||||
update_fields,
|
||||
)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\base.py", line 1169, in _save_table
|
||||
results = self._do_insert(
|
||||
cls._base_manager, using, insert_fields, returning_fields, raw
|
||||
)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\base.py", line 1220, in _do_insert
|
||||
return manager._insert(
|
||||
~~~~~~~~~~~~~~~^
|
||||
[self],
|
||||
^^^^^^^
|
||||
...<3 lines>...
|
||||
raw=raw,
|
||||
^^^^^^^^
|
||||
)
|
||||
^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\manager.py", line 87, in manager_method
|
||||
return getattr(self.get_queryset(), name)(*args, **kwargs)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 1918, in _insert
|
||||
return query.get_compiler(using=using).execute_sql(returning_fields)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\compiler.py", line 1925, in execute_sql
|
||||
cursor.execute(sql, params)
|
||||
~~~~~~~~~~~~~~^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\backends\utils.py", line 122, in execute
|
||||
return super().execute(sql, params)
|
||||
~~~~~~~~~~~~~~~^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\backends\utils.py", line 79, in execute
|
||||
return self._execute_with_wrappers(
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~^
|
||||
sql, params, many=False, executor=self._execute
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
)
|
||||
^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\backends\utils.py", line 92, in _execute_with_wrappers
|
||||
return executor(sql, params, many, context)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\backends\utils.py", line 100, in _execute
|
||||
with self.db.wrap_database_errors:
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\utils.py", line 94, in __exit__
|
||||
raise dj_exc_value.with_traceback(traceback) from exc_value
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\backends\utils.py", line 105, in _execute
|
||||
return self.cursor.execute(sql, params)
|
||||
~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\backends\mysql\base.py", line 78, in execute
|
||||
return self.cursor.execute(query, args)
|
||||
~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\MySQLdb\cursors.py", line 179, in execute
|
||||
res = self._query(mogrified_query)
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\MySQLdb\cursors.py", line 330, in _query
|
||||
db.query(q)
|
||||
~~~~~~~~^^^
|
||||
File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\MySQLdb\connections.py", line 286, in query
|
||||
_mysql.connection.query(self, query)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
|
||||
django.db.utils.DataError: (1406, "Data too long for column 'protocal' at row 1")
|
||||
[ERROR][2026-04-20 10:35:27,991][log.py:249]Internal Server Error: /api/project/designDemand/save
|
||||
[WARNING][2026-04-20 10:45:28,053][log.py:249]Bad Request: /api/project/editDesignDemand/4028
|
||||
[ERROR][2026-04-20 17:05:17,173][log.py:249]Internal Server Error: /api/project/case/create_by_demand
|
||||
File "E:\pycharmProjects\cdtestplant_v1\apps\createDocument\controllers\dg.py", line 417, in create_interface
|
||||
'source': interface.source,
|
||||
^^^^^^^^^^^^^^^^
|
||||
AttributeError: 'Design' object has no attribute 'source'
|
||||
[ERROR][2026-04-22 13:13:59,650][log.py:249]Internal Server Error: /api/generate/create/interface
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user