From 67c2cfad10510cb742eba5a93e8e49d11655e269 Mon Sep 17 00:00:00 2001 From: chenjunyi <314298729@qq.com> Date: Sat, 10 May 2025 19:21:24 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=A7=E8=A1=A8=E5=8A=9F=E8=83=BD=E5=AE=8C?= =?UTF-8?q?=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../__pycache__/case.cpython-313.pyc | Bin 16231 -> 21337 bytes .../__pycache__/design.cpython-313.pyc | Bin 11675 -> 13465 bytes .../__pycache__/dut.cpython-313.pyc | Bin 16659 -> 17117 bytes .../__pycache__/testDemand.cpython-313.pyc | Bin 17832 -> 21641 bytes apps/project/controllers/case.py | 116 +- apps/project/controllers/design.py | 62 +- apps/project/controllers/dut.py | 9 +- apps/project/controllers/testDemand.py | 95 +- .../schemas/__pycache__/case.cpython-313.pyc | Bin 7304 -> 8908 bytes .../__pycache__/design.cpython-313.pyc | Bin 4895 -> 5850 bytes .../__pycache__/testDemand.cpython-313.pyc | Bin 6866 -> 7953 bytes apps/project/schemas/case.py | 35 + apps/project/schemas/design.py | 21 + apps/project/schemas/testDemand.py | 25 +- logs/root_log | 2595 +++++++++++++++++ 15 files changed, 2916 insertions(+), 42 deletions(-) diff --git a/apps/project/controllers/__pycache__/case.cpython-313.pyc b/apps/project/controllers/__pycache__/case.cpython-313.pyc index 333f809fb60308799dd4690e727f822c09fd946c..38d406f23530f399c3b4ac51f318ae157274eb38 100644 GIT binary patch delta 7577 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 biRS1*kxY`CUtbeA0mTw$$YYTocyay@vXjM~ diff --git a/apps/project/controllers/__pycache__/dut.cpython-313.pyc b/apps/project/controllers/__pycache__/dut.cpython-313.pyc index a9039ac9305f808ae93f349fa5f87549dfcfa7c0..95b6d12313bd3f4f2a047dd6a816aa5242aedb03 100644 GIT binary patch delta 2041 zcmZ9Mdu&rx9LIZZU)#EF6gJka^s(KAtsNa>jJYwGGg%!GC z!wT5*A1&=QY+u6eno7-OioLf?DQDZv<;KEZdy~ZWnaYgiT;C-04rS4t-ohg(urVl3 zw$EH@ba1N{VdYZXilGeDci}P&mxf+a%d4?Lc z#q8j|9`0KUUsB1I8q3XI#dqJclGNcmze-s`OGyb;k;?kBR$w`RSTq4dSe<p=llxUVA1AGVDB74##iAM=#=*0|3xLewEz0e0 zlFRq&jwS~Aa++Wv=5Q3!9zc|3j*PIE+~Z_4Q|u|z^OkC4w@b7@L<_tV6qU`3rk}_y z;}na?ZSzFKqID5#lD#K8OQNte)5w!iH5Q>Okz|P7k)5QA{VO}jB&(>7lGihbsxKQh zbwevE5{nWm+krE&%UzJfE>}R>3t(_rvOTx)BmCu{KG5yw_u`nhUXH**%sc@zV@%zz z#^?Z-y$(7EWs-gGty(h#QQRjK`_K$?*CCqFcmrxG77DBMHCSK~x#h$mrC7Uf(Msf? zl|U7Tx8T9l={}r_zTSXDfixgi(8*5vy2<;Q-+eDji$&vaLwA}Zn}>U*jiprn6+Rg6 zBs=SOSwt10>>l=|zmI&yy!AWHXs^p#&5qQ!kr=yLzi#|IqKP}P8PYbyHKdYhjk@se z1V(VEPmO4F0+K1B##BwEZs<+|Zvr0R0`MV6wlo+_YauNf4u&+1M*BxJH609!0n-jx z;SYiqF988$N(b2Sr8jE|btcQ#?8&;Ye#vgY+*PVkE;nSNJG5VgGe)mb8}qf<%HAp5`W`g z6dn{FLY*@lU~e_In8fFjU_Up@Pd_I-heB!eLd#&?0;B+OZN;wt7Y1M1+z0kKEWZFc zS>UmE$hQ|;dh`R=U}2#*aDEf`8khod*&$5>w}2U-h9hf;hoT8@UhW#*#j%L}4RraD zWOy`~3TZ?1HZUm$%3 zAkag5yoy&~hSjd#Z-wM-&vkPnbAI&!$t^4%^~&b0iYFr@F}0ok!`5^hbEYM-g&gmi V)d_*`SyK6)#mgVV?6;1({{YAO?;8LB delta 1789 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 U4_q4FLGWf#6cl_z0GbEwe?k1NhyVZp diff --git a/apps/project/controllers/case.py b/apps/project/controllers/case.py index 2771928..d5bb157 100644 --- a/apps/project/controllers/case.py +++ b/apps/project/controllers/case.py @@ -7,11 +7,14 @@ from ninja.errors import HttpError from utils.chen_pagination import MyPagination from django.db import transaction from django.shortcuts import get_object_or_404 +from django.db.models.functions import Replace +from django.db.models import Q, F, Value from typing import List from utils.chen_response import ChenResponse from utils.chen_crud import multi_delete_case from apps.project.models import Design, Dut, Round, TestDemand, Case, CaseStep, Project, Problem -from apps.project.schemas.case import DeleteSchema, CaseModelOutSchema, CaseFilterSchema, CaseTreeReturnSchema, \ +from apps.project.schemas.case import DeleteSchema, CaseModelOutSchema, CaseFilterSchema, \ + CaseTreeReturnSchema, ReplaceCaseSchema, PersonReplaceSchema, ExetimeReplaceSchema, \ CaseTreeInputSchema, CaseCreateOutSchema, CaseCreateInputSchema, DemandNodeSchema from utils.util import get_testType from utils.codes import HTTP_INDEX_ERROR, HTTP_EXISTS_CASES @@ -35,15 +38,23 @@ class CaseController(ControllerBase): qs = Case.objects.filter(id=case_id) # type:ignore else: conditionNoneToBlank(data) - test_key = "".join([data.round_id, '-', data.dut_id, '-', data.design_id, '-', data.test_id]) - qs = Case.objects.filter(project__id=data.project_id, test__key=test_key, # type:ignore - ident__icontains=data.ident, - name__icontains=data.name, - designPerson__icontains=data.designPerson, - testPerson__icontains=data.testPerson, - monitorPerson__icontains=data.monitorPerson, - summarize__icontains=data.summarize, - ).order_by("key") + query_params = { + 'project__id': data.project_id, + 'ident__icontains': data.ident, + 'name__icontains': data.name, + 'designPerson__icontains': data.designPerson, + 'testPerson__icontains': data.testPerson, + 'monitorPerson__icontains': data.monitorPerson, + 'summarize__icontains': data.summarize + } + # 如果没有多个key则是“那个汇总界面” + if data.dut_id and data.design_id and data.test_id: + test_key = "".join([data.round_id, '-', data.dut_id, '-', data.design_id, '-', data.test_id]) + query_params['test__key'] = test_key + else: + # 汇总界面只查round + query_params['round__key'] = data.round_id + qs = Case.objects.filter(**query_params).order_by("key") # 由于有嵌套query_set存在,把每个用例的schema加上一个字段 query_list = [] for query_single in qs: @@ -54,6 +65,14 @@ class CaseController(ControllerBase): related_problem: Problem = query_single.caseField.first() if query_single.caseField.all(): setattr(query_single, 'problem', related_problem) + # 2025年5月10日在test字段加上testContent + test_obj = query_single.test + sub_list = [] + for step_obj in test_obj.testQField.all(): + setattr(step_obj, "subStep", step_obj.testStepField.all().values()) + sub_list.append(step_obj) + setattr(test_obj, "testContent", sub_list) + setattr(query_single, 'test', test_obj) query_list.append(query_single) return query_list @@ -69,6 +88,17 @@ class CaseController(ControllerBase): return case raise HttpError(500, "您获取的数据不存在") + @route.get("/getCaseOneById", response=CaseModelOutSchemaWithoutProblem, url_name='case-one-by-id') + @transaction.atomic + def get_case_by_id(self, id: int): + """用于在用例树状页面,获取promblem信息,这里根据key获取信息""" + case = Case.objects.filter(id=id).first() + if case: + setattr(case, "testStep", case.step.all().values()) + setattr(case, 'testType', get_testType(case.test.testType, dict_code='testType')) + return case + raise HttpError(500, "您获取的数据不存在") + # 处理树状数据 @route.get("/getCaseInfo", response=List[CaseTreeReturnSchema], url_name="case-info") @transaction.atomic @@ -108,8 +138,9 @@ class CaseController(ControllerBase): # 直接把测试项的标识给前端处理显示 asert_dict['ident'] = test_instance.ident # ~~~~~~~~~end~~~~~~~~~ - asert_dict.update({'key': key_string, 'round': round_instance, 'dut': dut_instance, 'design': design_instance, - "test": test_instance, 'title': payload.name}) + asert_dict.update( + {'key': key_string, 'round': round_instance, 'dut': dut_instance, 'design': design_instance, + "test": test_instance, 'title': payload.name}) asert_dict.pop("round_key") asert_dict.pop("dut_key") asert_dict.pop("design_key") @@ -144,7 +175,8 @@ class CaseController(ControllerBase): content_single.delete() data_list = [] for item in value: - if item['operation'] or item['expect'] or item['result'] or item['passed'] or item['status']: + if item['operation'] or item['expect'] or item['result'] or item['passed'] or item[ + 'status']: item["case"] = case_qs data_list.append(CaseStep(**item)) CaseStep.objects.bulk_create(data_list) # type:ignore @@ -186,7 +218,8 @@ class CaseController(ControllerBase): # 先查询当前测试项下面有无case case_exists = demand.tcField.exists() if case_exists: - return ChenResponse(status=500, code=HTTP_EXISTS_CASES, message='测试项下面有用例,请删除后生成') + return ChenResponse(status=500, code=HTTP_EXISTS_CASES, + message='测试项下面有用例,请删除后生成') # 查询所有测试子项 sub_items = demand.testQField.all() # 每一个子项都创建一个用例,先声明一个列表,后面可以bulk_create @@ -224,7 +257,8 @@ class CaseController(ControllerBase): CaseStep.objects.create(**case_step_dict) # type:ignore index += 1 # 这里返回一个demand的key用于前端刷新树状图 - return ChenResponse(data={'key': demand_node.key}, status=200, code=200, message='测试项自动生成用例成功') + return ChenResponse(data={'key': demand_node.key}, status=200, code=200, + message='测试项自动生成用例成功') # 测试用例复制/移动到测试项上 @route.get("/case/copy_or_move_to_demand", url_name='case-copy-move-demand') @@ -240,6 +274,56 @@ class CaseController(ControllerBase): # 测试用例复制/移动到用例 @route.get("/case/copy_or_move_by_case", url_name='case-copy-move-case') @transaction.atomic - def copy_move_case_by_case(self, project_id: int, drag_key: str, drop_key: str, move: bool, position: int): + def copy_move_case_by_case(self, project_id: int, drag_key: str, drop_key: str, move: bool, + position: int): case_to_case_copy_or_move(project_id, drag_key, drop_key, move, position) return ChenResponse(data={'old': {'key': drag_key}, 'new': {'key': drop_key}}) + + # 用例-替换接口 + @route.post("/case/replace/", url_name='case-replace') + @transaction.atomic + def replace_case_step_content(self, payload: ReplaceCaseSchema): + # 1.首先查询项目 + project_obj: Project = get_object_or_404(Project, id=payload.project_id) + # 2.查询[所有轮次]的selectRows的id + case_qs = project_obj.pcField.filter(id__in=payload.selectRows, round__key=payload.round_key) + # 3.批量替换里面文本(解构不影响老数组) + selectColumn = [x for x in payload.selectColumn if x != 'testStep'] + replace_kwargs = { + field_name: Replace(F(field_name), Value(payload.originText), Value(payload.replaceText)) + for field_name in selectColumn + } + # 4.单独处理testContentStep的操作、预期-查询所有 + # 4.1.获取所有关联的TestDemandContentStep + step_count = 0 + if 'testStep' in payload.selectColumn: + caseStep_qs = CaseStep.objects.filter(case__in=case_qs) + # 批量更新 operation 和 expect + step_count = caseStep_qs.update( + operation=Replace(F('operation'), Value(payload.originText), Value(payload.replaceText)), + expect=Replace(F('expect'), Value(payload.originText), Value(payload.replaceText)) + ) + # 5.提交更新 + replace_count = case_qs.update(**replace_kwargs) + return {'count': replace_count + step_count} + + # 批量替换设计人员、执行人员、审核人员 + @route.post("/case/personReplace/", url_name='case-person-replace') + @transaction.atomic + def bulk_replace_person(self, payload: PersonReplaceSchema): + # 替换设计人员 + case_qs = Case.objects.filter(id__in=payload.selectRows) + if payload.designPerson != '不替换' and payload.designPerson != '': + case_qs.update(designPerson=payload.designPerson) + if payload.testPerson != '不替换' and payload.testPerson != '': + case_qs.update(testPerson=payload.testPerson) + if payload.monitorPerson != '不替换' and payload.monitorPerson != '': + case_qs.update(monitorPerson=payload.monitorPerson) + + # 批量替换事件 + @route.post("/case/timeReplace/", url_name='case-time-replace') + @transaction.atomic + def bulk_replace_time(self, payload: ExetimeReplaceSchema): + # 替换设计人员 + case_qs = Case.objects.filter(id__in=payload.selectRows) + case_qs.update(exe_time=payload.exetime) diff --git a/apps/project/controllers/design.py b/apps/project/controllers/design.py index 33e6079..27ff3ea 100644 --- a/apps/project/controllers/design.py +++ b/apps/project/controllers/design.py @@ -6,30 +6,44 @@ from ninja.pagination import paginate from ninja.errors import HttpError from utils.chen_pagination import MyPagination from django.db import transaction +from django.db.models import F, Value +from django.db.models.functions import Replace from django.shortcuts import get_object_or_404 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.schemas.design import DeleteSchema, DesignFilterSchema, DesignModelOutSchema, DesignTreeReturnSchema, \ - DesignTreeInputSchema, DesignCreateOutSchema, DesignCreateInputSchema, MultiDesignCreateInputSchema +from apps.project.schemas.design import DeleteSchema, DesignFilterSchema, DesignModelOutSchema, \ + DesignTreeReturnSchema, \ + DesignTreeInputSchema, DesignCreateOutSchema, DesignCreateInputSchema, MultiDesignCreateInputSchema, \ + ReplaceDesignContentSchema from apps.project.tools.delete_change_key import design_delete_sub_node_key from utils.smallTools.interfaceTools import conditionNoneToBlank @api_controller("/project", auth=JWTAuth(), permissions=[IsAuthenticated], tags=['设计需求数据']) class DesignController(ControllerBase): - @route.get("/getDesignDemandList", response=List[DesignModelOutSchema], exclude_none=True, url_name="design-list") + @route.get("/getDesignDemandList", response=List[DesignModelOutSchema], exclude_none=True, + url_name="design-list") @transaction.atomic @paginate(MyPagination) def get_design_list(self, datafilter: DesignFilterSchema = Query(...)): conditionNoneToBlank(datafilter) - dut_key = "".join([datafilter.round_id, '-', datafilter.dut_id]) - qs = Design.objects.filter(project__id=datafilter.project_id, dut__key=dut_key, - ident__icontains=datafilter.ident, - name__icontains=datafilter.name, - demandType__contains=datafilter.demandType, - chapter__icontains=datafilter.chapter).order_by('id') + query_params = { + 'project__id': datafilter.project_id, + 'ident__icontains': datafilter.ident, + 'name__icontains': datafilter.name, + 'demandType__contains': datafilter.demandType, + 'chapter__icontains': datafilter.chapter + } + # 判断是否传递dut_id,如果没传递则查询轮次全部 + if datafilter.dut_id: + dut_key = f"{datafilter.round_id}-{datafilter.dut_id}" + query_params['dut__key'] = dut_key + else: + # 如果没有dut__key则要查询round__key + query_params['round__key'] = datafilter.round_id + qs = Design.objects.filter(**query_params).order_by('id') return qs @route.get("/getDesignOne", response=DesignModelOutSchema, url_name='design-one') @@ -39,6 +53,13 @@ class DesignController(ControllerBase): return design_qs raise HttpError(500, "未找到相应的数据") + @route.get("/getDesignOneById", response=DesignModelOutSchema, url_name='design-one-by-id') + def get_one_by_id(self, id: int): + design_qs = Design.objects.filter(id=id).first() + if design_qs: + return design_qs + raise HttpError(500, "未找到相应的数据") + # 处理树状数据 @route.get("/getDesignDemandInfo", response=List[DesignTreeReturnSchema], url_name="design-info") def get_design_tree(self, payload: DesignTreeInputSchema = Query(...)): @@ -55,7 +76,8 @@ class DesignController(ControllerBase): # 构造dut_key dut_key = "".join([payload.round_key, "-", payload.dut_key]) # 判重标识-不需要再查询round以后的 - if Design.objects.filter(project__id=payload.project_id, round__key=payload.round_key, dut__key=dut_key, + if Design.objects.filter(project__id=payload.project_id, round__key=payload.round_key, + dut__key=dut_key, ident=payload.ident).exists() and asert_dict['ident'] != "": return ChenResponse(code=400, status=400, message='研制需求的标识重复,请检查') # 查询当前key应该为多少 @@ -64,7 +86,8 @@ class DesignController(ControllerBase): # 查询当前的round_id round_instance = Round.objects.get(project__id=payload.project_id, key=payload.round_key) dut_instance = Dut.objects.get(project__id=payload.project_id, key=dut_key) - asert_dict.update({'key': key_string, 'round': round_instance, 'dut': dut_instance, 'title': payload.name}) + asert_dict.update( + {'key': key_string, 'round': round_instance, 'dut': dut_instance, 'title': payload.name}) asert_dict.pop("round_key") asert_dict.pop("dut_key") qs = Design.objects.create(**asert_dict) @@ -156,3 +179,20 @@ class DesignController(ControllerBase): round_dict['children'].append(dut_dict) data_list.append(round_dict) return ChenResponse(message='获取成功', data=data_list) + + # 设计需求-替换接口 + @route.post("/designDemand/replace/", url_name='design-replace') + @transaction.atomic + def replace_content(self, payload: ReplaceDesignContentSchema): + # 1.首先查询项目 + project_obj: Project = get_object_or_404(Project, id=payload.project_id) + # 2.查询[所有轮次]的selectRows的id + design_qs = project_obj.psField.filter(id__in=payload.selectRows, round__key=payload.round_key) + # 3.批量替换里面文本 + replace_kwargs = { + field_name: Replace(F(field_name), Value(payload.originText), Value(payload.replaceText)) + for field_name in payload.selectColumn + } + # 4.提交更新 + replace_count = design_qs.update(**replace_kwargs) + return {'count': replace_count} diff --git a/apps/project/controllers/dut.py b/apps/project/controllers/dut.py index ddb51ac..4a9f012 100644 --- a/apps/project/controllers/dut.py +++ b/apps/project/controllers/dut.py @@ -42,7 +42,7 @@ class DutController(ControllerBase): qs = Dut.objects.filter(project__id=payload.project_id, round__key=payload.key) return qs - # 获取单个dut + # 获取单个dut-根据项目id和dut.key @route.get("/getDutOne", response=DutModelOutSchema, url_name="dut-one") @transaction.atomic def get_dut(self, project_id: int, key: str): @@ -51,6 +51,13 @@ class DutController(ControllerBase): return dut_qs raise HttpError(500, "未找到相应的数据") + @route.get("/getDutOneById", response=DutModelOutSchema, url_name='dut-one-by-id') + def get_one_by_id(self, id: int): + dut_qs = Dut.objects.filter(id=id).first() + if dut_qs: + return dut_qs + raise HttpError(500, "未找到相应的数据") + # 添加被测件 @route.post("/dut/save", url_name="dut-create", response=DutCreateOutSchema) @transaction.atomic diff --git a/apps/project/controllers/testDemand.py b/apps/project/controllers/testDemand.py index c04d912..0953764 100644 --- a/apps/project/controllers/testDemand.py +++ b/apps/project/controllers/testDemand.py @@ -6,6 +6,8 @@ from ninja.pagination import paginate from ninja.errors import HttpError from utils.chen_pagination import MyPagination from django.db import transaction +from django.db.models.functions import Replace +from django.db.models import Q, F, Value from django.shortcuts import get_object_or_404 from typing import List from utils.chen_response import ChenResponse @@ -13,7 +15,8 @@ from utils.chen_crud import multi_delete_testDemand from utils.codes import HTTP_INDEX_ERROR from apps.project.models import Design, Dut, Round, TestDemand, TestDemandContent, TestDemandContentStep from apps.project.schemas.testDemand import DeleteSchema, TestDemandModelOutSchema, TestDemandFilterSchema, \ - TestDemandTreeReturnSchema, TestDemandTreeInputSchema, TestDemandCreateOutSchema, TestDemandCreateInputSchema, \ + TestDemandTreeReturnSchema, TestDemandTreeInputSchema, TestDemandCreateOutSchema, \ + TestDemandCreateInputSchema, ReplaceDemandContentSchema, \ TestDemandRelatedSchema, TestDemandExistRelatedSchema, DemandCopyToDesignSchema # 导入ORM from apps.project.models import Project @@ -30,12 +33,29 @@ class TestDemandController(ControllerBase): @paginate(MyPagination) def get_test_demand_list(self, datafilter: TestDemandFilterSchema = Query(...)): conditionNoneToBlank(datafilter) - design_key = "".join([datafilter.round_id, '-', datafilter.dut_id, '-', datafilter.design_id]) - qs = TestDemand.objects.filter(project__id=datafilter.project_id, design__key=design_key, - ident__icontains=datafilter.ident, - name__icontains=datafilter.name, - testType__contains=datafilter.testType, - priority__icontains=datafilter.priority).order_by("key") + query_params = { + 'project__id': datafilter.project_id, + 'ident__icontains': datafilter.ident, + 'name__icontains': datafilter.name, + 'testType__contains': datafilter.testType, + 'priority__icontains': datafilter.priority + } + # 如果没有传递多个key则认为是“那个轮次汇总界面” + if datafilter.dut_id and datafilter.design_id: + design_key = "".join([datafilter.round_id, '-', datafilter.dut_id, '-', datafilter.design_id]) + query_params['design__key'] = design_key + else: + # 轮次汇总界面要查round__key + query_params['round__key'] = datafilter.round_id + # 判断是否存在testDesciption有则表示是大表查询 + if datafilter.testDesciption: + query_params['testDesciption__icontains'] = datafilter.testDesciption + qs = TestDemand.objects.filter(**query_params).order_by("key") + # 判断是否存在testContent有则表示是大表查询,这里需要查询子字段 + if datafilter.testContent: + qs = qs.filter(Q(testQField__subName__icontains=datafilter.testContent) | + Q(testQField__testStepField__operation__icontains=datafilter.testContent) | + Q(testQField__testStepField__expect__icontains=datafilter.testContent)) # 由于有嵌套query_set存在,把每个测试需求的schema加上一个字段 query_list = [] for query_single in qs: @@ -61,6 +81,20 @@ class TestDemandController(ControllerBase): return demand_qs raise HttpError(500, "未找到相应的数据") + # 根据id直接查询 + @route.get("/getTestDemandOneById", response=TestDemandModelOutSchema, url_name='testDemand-one-by-id') + @transaction.atomic + def get_demand_by_id(self, id: int): + demand_qs = TestDemand.objects.filter(id=id).first() + if demand_qs: + sub_list = [] + for step_obj in demand_qs.testQField.all(): + setattr(step_obj, "subStep", step_obj.testStepField.all().values()) + sub_list.append(step_obj) + setattr(demand_qs, "testContent", sub_list) + return demand_qs + raise HttpError(500, "未找到相应的数据") + # 处理树状数据 @route.get("/getTestdemandInfo", response=List[TestDemandTreeReturnSchema], url_name="testDemand-info") @transaction.atomic @@ -78,11 +112,13 @@ class TestDemandController(ControllerBase): if payload.ident and project_qs: exists = project_qs.ptField.filter(ident=payload.ident).exists() if exists: - return ChenResponse(code=500, status=500, message='测试项标识和其他测试项重复,请更换测试项标识!!!') + return ChenResponse(code=500, status=500, + message='测试项标识和其他测试项重复,请更换测试项标识!!!') # 构造design_key design_key = "".join([payload.round_key, "-", payload.dut_key, '-', payload.design_key]) # 查询当前key应该为多少 - test_demand_count = TestDemand.objects.filter(project__id=payload.project_id, design__key=design_key).count() + test_demand_count = TestDemand.objects.filter(project__id=payload.project_id, + design__key=design_key).count() key_string = ''.join([design_key, "-", str(test_demand_count)]) # 查询当前各个前面节点的instance round_instance = Round.objects.get(project__id=payload.project_id, key=payload.round_key) @@ -90,8 +126,9 @@ class TestDemandController(ControllerBase): key="".join([payload.round_key, "-", payload.dut_key])) design_instance = Design.objects.get(project__id=payload.project_id, key="".join( [payload.round_key, "-", payload.dut_key, '-', payload.design_key])) - asert_dict.update({'key': key_string, 'round': round_instance, 'dut': dut_instance, 'design': design_instance, - 'title': payload.name}) + asert_dict.update( + {'key': key_string, 'round': round_instance, 'dut': dut_instance, 'design': design_instance, + 'title': payload.name}) asert_dict.pop("round_key") asert_dict.pop("dut_key") asert_dict.pop("design_key") @@ -153,11 +190,13 @@ class TestDemandController(ControllerBase): ) for step in item["subStep"] ]) + setattr(testDemand_qs, attr, value) # ~~~2024年5月9日:测试项更新标识后还要更新下面用例的标识~~~ if testDemand_qs.ident != old_ident: for case in testDemand_qs.tcField.all(): case.ident = testDemand_qs.ident case.save() + testDemand_qs.save() return testDemand_qs # 删除测试项 @@ -179,7 +218,7 @@ class TestDemandController(ControllerBase): single_qs.key = test_demand_key index = index + 1 single_qs.save() - demand_delete_sub_node_key(single_qs) # 删除后需重排子节点 + demand_delete_sub_node_key(single_qs) # 删除后需重排子节点 return ChenResponse(message="测试需求删除成功!") # 查询一个项目的所有测试项 @@ -215,7 +254,8 @@ class TestDemandController(ControllerBase): if ti.pk == test_id: non_exist_ids.remove(test_id) if len(non_exist_ids) <= 0 < len(test_item_ids): - return ChenResponse(status=400, code=200, message='选择的测试项全部存在于当前设计需求中,请重新选择...') + return ChenResponse(status=400, code=200, + message='选择的测试项全部存在于当前设计需求中,请重新选择...') # 先查询现在有的关联测试项 for item in design_item.odField.values('id'): item_id = item.get('id', None) @@ -251,3 +291,32 @@ class TestDemandController(ControllerBase): """前端测试项右键复制到某个设计需求下面""" new_demand_key = demand_copy_to_design(data.project_id, data.demand_key, data.design_id, data.depth) return ChenResponse(data={'key': new_demand_key}) + + # 测试项-替换接口 + @route.post("/testDemand/replace/", url_name='testDemand-replace') + @transaction.atomic + def replace_demand_content(self, payload: ReplaceDemandContentSchema): + # 1.首先查询项目 + project_obj: Project = get_object_or_404(Project, id=payload.project_id) + # 2.查询[所有轮次]的selectRows的id + demand_qs = project_obj.ptField.filter(id__in=payload.selectRows, round__key=payload.round_key) + # 3.批量替换里面文本(解构不影响老数组) + selectColumn = [x for x in payload.selectColumn if x != 'testContent'] + replace_kwargs = { + field_name: Replace(F(field_name), Value(payload.originText), Value(payload.replaceText)) + for field_name in selectColumn + } + # 4.单独处理testContentStep的操作、预期-查询所有 + # 4.1.获取所有关联的TestDemandContentStep + step_count = 0 + if 'testContent' in payload.selectColumn: + test_demand_contents = TestDemandContent.objects.filter(testDemand__in=demand_qs) + test_steps = TestDemandContentStep.objects.filter(testDemandContent__in=test_demand_contents) + # 批量更新 operation 和 expect + step_count = test_steps.update( + operation=Replace(F('operation'), Value(payload.originText), Value(payload.replaceText)), + expect=Replace(F('expect'), Value(payload.originText), Value(payload.replaceText)) + ) + # 5.提交更新 + replace_count = demand_qs.update(**replace_kwargs) + return {'count': replace_count + step_count} diff --git a/apps/project/schemas/__pycache__/case.cpython-313.pyc b/apps/project/schemas/__pycache__/case.cpython-313.pyc index 45f5136b142de530e5d4c8ed17643d655af6d52f..8da042027ca2657521942209ec317308c4b6a1fd 100644 GIT binary patch literal 8908 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 O_ivo}UkNUxjsFAYnr~A8 delta 2724 zcmai0T}&KR6rNf3|7U<@|CdF6Et?88A%wQ}Ppc>;ELhOi3euGwma)q&xwABi(XCM_ zhG@k5Y~q{IhZ4hs@A_tZ&<7(@BowX!w8tZL_ zP5^SK2LxP~c736Zg}0LHIhLYT-sws5_gzPL%-JF<{AS<`FFNCLGp{*^5@BJI%X(QG zOe26OAjZFNcGQv>!ooZ$Ek=g>Y^A)Y6N147vl+&15a)>Ee*qqM>unNEiOO)dj z<@kP-10u?GImJKpydrn-KJUmhdHd+@3&U|v07VvBt`yYLy!zroX|i@DcXD0v@Dtq+5VZ8`VmlI-vj7MQ{yZ&sbv3x2p$Y+lO#sL992+-58FvqYA z=;43+N6c`>cFu&BWY3^rbF80lE4?kJ#Mtn%%4)eVuNBy7{*&@@4WVSCwwl~xiS+~G z021~TMo$As;suPJ0Xz$s1 zG+b4!T2k40exvmm3C?Ak8!J|EBB>+AiiJp%SD;3Su$ZDuYT*Rd`vvGd@KiHMgp zF}WGKqo#9N`<}$pZ{9>bI%^RN*3vpFum()>?P#AF&1!~-_u)TRV+i{ucXx>Mp@Z#6sy$1qtwDV!&4UD5M-1pf%=7- zo+?10`1ui6bd>tvjU%a((EscTfVNQ3w9iiH2J8S;-jf*%(j$&(E}P+>biRF=e%qKo z2?k&~44{XYUbF>FsZFV@DL)iDoeQD$$~U|x#7A+pq@H42EXd+t|CH}`b@G3@PWsY& Vl2^Vc@5T6J_oV+1$t7oK>%ViY&+z~N diff --git a/apps/project/schemas/__pycache__/design.cpython-313.pyc b/apps/project/schemas/__pycache__/design.cpython-313.pyc index a15d153c2ebae37e1b7ec36edcfb51bbe13cfa5c..abf5ec0342dd7f74c59add250ff55be40951e684 100644 GIT binary patch literal 5850 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 baA~I$d8`RD!lfP4<&kFozcB0wy~Y0kGzrQD delta 2108 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

Q|?2H0+y2HGK(bdFiX?5hQSK7)bZr3-7 zcipsj7k2N{yc+<#ww(;Gxx@iVqtpb)DPmpu06GFW18mrogj5O`kJ#ocVr`EW+$M5t z1|-82PdeBmJg8GI*-&?4G65V&heRi3RIn8VE@d150Zb+_495_ytqgC>o`ur8tL62v z6Rq^gR`^smZR40ejbMD@wS7@`3I$Btc@-p(m>s4GW%VUD13Hrjs)8En5*jZM8h<_j zxX*_BHN=C22W)td@DSlW;u6*(gog?55tOhtM0kYo9zh9fQNo7^?-7)+79%`LI1v=E zX)GVlC&-#UEsoCuSQ0R@GCX&p`+Q+7N#j#AKH0@nTAJ`Q;c3LRVK%%F&W!M}-H~c{ z3nU3MB8g%`%(!^;KCquMy}&349+WV2R)OLtHc-SdZDfAIieNhvw8)FJ2x~WBLLRW_ z5CA#BOOTRqU$Lyi%c|0nAScL6cmUZDyym!DFB5s;7HOeOKC<`b7>2>S(|H3i^5KuL z#840`B0^+fl~@rjEDqY_z9v?0p&+{CViIKGg@TSDHh>mHbT64gg(q{zKa^Ou*rAY(4 zY2(BxphwB|^s!d#`L=RuWB&xquB>X``rFFHK=)0cS+4czms_LfkY+tn&WV(X|FthX z(Npo-{u;#YooXjxkvn@u+RFQgX(ao25FsjX58;7)5O8tk5IDRQg8m`G#hF9k z0m8$C)0smHu?Vn*Fdy!@`YpW*yI$F%U->UMUMq1@xYvOaabl_uwWq+Adt-dP7$ z5m(p5_o2Sq#8zgtA0eHHGalLYB6}Id2uYb(3$hTHGsO4z%z60%ym#-n>4)%W zxt=xICr}sa{S-?S_rJkX&tPFkgY}HlGniBUa5B?pxBv=#8sjR6opaOw#V|N?U+lR7 zz-#+85QB!v!wYLn{`gtJiaigMb|?ap2UQpaPAz^qwTy@p%Ur#&G+&3aD0~^Qf`;@) zPK$?1%;fl~1ylPKu9o$NdH0D-s;5lK!@tKll-u=s)$!2sJ7{JkpkR!F0Dq4rKEJUs z6#qOYO7UShyqtcd3=6Nt-pK_|C zB+7I3>f*hcrCH~fg1aB7@RfFs{}rwGWESi$i=U z{2;i;TxwKm3nFI{{|+JSYb=%F+ft>(XoIJZM?^lSaO4RTucEk$g3i2XcB11%Lur$y z6iNXqoD2UC=~nzb^fT@|5B~=~p#HB^~=w znrcZ?KS&2U9$8MTp6N(%>-gMqX6<@Mf?Fq`%HwOnjs&+(RF$)G^F6G_ip$ViTSUZk>oCkF4Ft@<=D*k@q*#|B>KEfBe6*ijjr@ delta 3000 zcmaJ@OKe+36n!uLJpW@mapF&!q@NI6NK1gwQb?ONX=vTXEjSGV(ngNotK-(O-LX>| zSh%aUqT&!k&BXb7MC+iIkI>Gk5Nsd*|MH zSv&m8Sl}PO-=oma^mocqSLa$Fs$N{2q0xRPuRdWrRIuysX*nD!GL zXmK27wv*Uk3){tPh}duo+s$kjvE3Vv6%k=JLTpcqZ4a}(#74oU8*%h99V0s4VjN{Q zL2O?O8)J3{vHdM zoIVQYiW-#PIu`0sX=>G##dLPr*fsz=JnaVT0kk`eRXjzj@LEMCZzvCfJ8wB2gcBbn zZab|oTY~YNZW~P!2e<(&zZat|BOJymASnNE4p|Wn^MyUF9aW>Uq(wU(_R0^m8TrsX zK#id&N$GHn)VI4W^bH4VYR0u(aYZ+_4){5;h1V*|0s+TwIn40M+uHxab+<r)#$r>3+F07E|xbzY`I8HWrfo-n+XpK@rS%BtvG;tWm8^8Ozy{ zK3yo*43Wt#(d^-X+~FGvzCfN#mng54^o4>h4#?Mh$Lm}I$xy4%4V_MmjsbcAEOwGc zrmb2NVhY?e;1$3Lz)3&~(5_s@u>e4|SKlMJDaZUbJooLRR_ewPoIKY#ET0U#Sw~^* zGaa=;t!Rh|nwYlB#;WNk8dr^CqjbGn3qM0U#3=v^Ka0_;fOgVmumHfJ)iHvbQtceG zaz4|Lb-n%!Eu_T}LKb8tr|B6Lmh^2cX;UtFBP-leR|ZD`aB@}71`k=1GF0#*azeAq zAA={{2Veys@)K=bWU3J`335F^Ol>iKFmgrDEAg>BlxbWWB_ z7Ylju206rORkz!6#Q+N;Lohr!5~UvynoedvUJR#hC6PeexQ zoaYH*O}Eum|o6T zdS!Xh5CYmvH)X6bhe9)K<;;5J8VjtNZ@jZ@jg@JmC4QsE#s#N@Pi~ik$0M==T810I zIr&ZWf)&s*1@u+@Jdx>U7@`78c6$XQPOZSGsnp+AX;ajOQp?Y#D|%dBBjGii05~u8 z_*pmiAEvU>(IbD2=e#-$IOJ)0G!gY7W$C2Vm-4evME=z0*vBWmLo23zv0N^0x?3v~ zZ^IElmv<9;e0&n7>10A4-7!>mlnSLwSu4dFY+VGVv$k3(l=9Y1aNm1DyDF=Cwp1(R z1Q#g(L&jY=jGg=ujb+YK-rNgJ)eKh4!@khvj;iUa*y-aadfZeJcG{ zzb5$0rmE_1%Iwd|teotBJ`r%JDfP~~>k9s^2i@wkcjnd=`m-LDpZ34y`B$;4QFi+u DkOB$p diff --git a/apps/project/schemas/case.py b/apps/project/schemas/case.py index bab469b..fdea45d 100644 --- a/apps/project/schemas/case.py +++ b/apps/project/schemas/case.py @@ -5,6 +5,7 @@ from typing import List, Union, Optional from datetime import date # 关联问题单 from apps.project.schemas.problem import ProblemModelOutSchema +from apps.project.schemas.testDemand import TestDemandModelOutSchemaOrigin # 删除schema class DeleteSchema(Schema): @@ -31,12 +32,25 @@ class CaseModelOutSchemaWithoutProblem(ModelSchema): model = Case model_exclude = ['project', 'round', 'dut', 'design', 'test', 'remark', 'sort'] +# 输出case:关联问题单 +class CaseModelOutSchemaOrigin(ModelSchema): + testStep: List[CaseStepSchema] + testType: str # 用例额外字段,用于测试类型FT的标识给前端 + # 新增:关联的问题单 + problem: Optional[ProblemModelOutSchema] = None + + class Config: + model = Case + model_exclude = ['project', 'round', 'dut', 'design', 'test', 'remark', 'sort'] + # 输出case:关联问题单 class CaseModelOutSchema(ModelSchema): testStep: List[CaseStepSchema] testType: str # 用例额外字段,用于测试类型FT的标识给前端 # 新增:关联的问题单 problem: Optional[ProblemModelOutSchema] = None + # 2025年5月10日新增上级字段 + test: Optional[TestDemandModelOutSchemaOrigin] = None class Config: model = Case @@ -119,3 +133,24 @@ class DemandNodeSchema(Schema): isLeaf: bool = False key: str = Field(None, alias='nodekey') title: str = Field(None) + +# 替换文本输入Schema +class ReplaceCaseSchema(Schema): + project_id: int + round_key: str + originText: str + replaceText: str + selectRows: List[int] + selectColumn: List[str] + +# 人员替换Schema +class PersonReplaceSchema(Schema): + selectRows: List[int] = None + designPerson: str + testPerson: str + monitorPerson: str + +# 事件替换Schema +class ExetimeReplaceSchema(Schema): + selectRows: List[int] = None + exetime: str diff --git a/apps/project/schemas/design.py b/apps/project/schemas/design.py index d8a56da..b4cd65d 100644 --- a/apps/project/schemas/design.py +++ b/apps/project/schemas/design.py @@ -1,7 +1,10 @@ +from typing import Optional from apps.project.models import Design from ninja import Field, Schema, ModelSchema from typing import List, Union from pydantic import AliasChoices +# 上级dut-schema +from apps.project.schemas.dut import DutModelOutSchema # 删除schema class DeleteSchema(Schema): @@ -18,7 +21,16 @@ class DesignFilterSchema(Schema): # 新增字段 - chapter chapter: str = Field(None, alias='chapter') +# 2025年改为2个输出,因为下级需要上级,原始不再嵌套上级 +class DesignModelOutSchemaOrigin(ModelSchema): + class Config: + model = Design + model_exclude = ['project', 'round', 'dut', 'remark', 'sort'] + class DesignModelOutSchema(ModelSchema): + # 新增字段 - 上级的dut对象 + dut: Optional[DutModelOutSchema] = None + class Config: model = Design model_exclude = ['project', 'round', 'dut', 'remark', 'sort'] @@ -72,3 +84,12 @@ class MultiDesignCreateInputSchema(Schema): project_id: int = Field(..., alias="projectId") dut_key: str = Field(..., alias="key") data: List[SingleDesignSchema] + +# 批量替换design的接口Schema +class ReplaceDesignContentSchema(Schema): + project_id: int + round_key: str + originText: str + replaceText: str + selectRows: List[int] + selectColumn: List[str] diff --git a/apps/project/schemas/testDemand.py b/apps/project/schemas/testDemand.py index e9a7fc1..4688ece 100644 --- a/apps/project/schemas/testDemand.py +++ b/apps/project/schemas/testDemand.py @@ -1,4 +1,5 @@ from apps.project.models import TestDemand, TestDemandContent, TestDemandContentStep +from apps.project.schemas.design import DesignModelOutSchemaOrigin # 注意导入的是不含上级的Schema from ninja import Field, Schema, ModelSchema from typing import List, Union, Optional from pydantic import AliasChoices @@ -20,8 +21,18 @@ class TestContentSchema(ModelSchema): model = TestDemandContent fields = ["subName"] +# 2025年修改为两个,一个含上级一个不含 +class TestDemandModelOutSchemaOrigin(ModelSchema): + testContent: List[TestContentSchema] # 下级对象 + + class Meta: + model = TestDemand + exclude = ['project', 'round', 'dut', 'design', 'remark', 'sort'] + class TestDemandModelOutSchema(ModelSchema): - testContent: List[TestContentSchema] + testContent: List[TestContentSchema] # 下级对象 + # 2025年5月9日新增上级字段design + design: Optional[DesignModelOutSchemaOrigin] = None class Meta: model = TestDemand @@ -38,6 +49,9 @@ class TestDemandFilterSchema(Schema): testType: str = Field(None, alias='testType') name: str = Field(None, alias='name') priority: str = Field(None, alias="priority") + # 新增查询字段,给大表的查询 + testDesciption: str = Field(None, alias="testDesciption") + testContent: str = Field(None, alias="testContent") # 处理树状结构的schema class TestDemandTreeReturnSchema(Schema): @@ -102,3 +116,12 @@ class DemandCopyToDesignSchema(Schema): design_id: int demand_key: str depth: bool = False + +# 替换文本输入Schema +class ReplaceDemandContentSchema(Schema): + project_id: int + round_key: str + originText: str + replaceText: str + selectRows: List[int] + selectColumn: List[str] diff --git a/logs/root_log b/logs/root_log index 1cf2c72..df0fd13 100644 --- a/logs/root_log +++ b/logs/root_log @@ -735,3 +735,2598 @@ Traceback (most recent call last): f'is not JSON serializable') TypeError: Object of type bytes is not JSON serializable [ERROR][2025-04-30 14:54:39,513][log.py:248]Internal Server Error: /api/dut_upload/upload_xq_docx/ +[WARNING][2025-05-03 14:58:41,676][log.py:248]Unauthorized: /api/system/getInfo +[WARNING][2025-05-03 14:58:41,748][log.py:248]Unauthorized: /api/system/logout +[WARNING][2025-05-03 14:58:50,087][backend.py:91]Caught LDAPError looking up user: SERVER_DOWN({'result': -1, 'desc': "Can't contact LDAP server", 'ctrls': []}) +[WARNING][2025-05-06 13:33:41,215][log.py:248]Unauthorized: /api/system/getInfo +[WARNING][2025-05-06 13:33:41,274][log.py:248]Unauthorized: /api/system/logout +[WARNING][2025-05-06 13:33:47,949][backend.py:91]Caught LDAPError looking up user: SERVER_DOWN({'result': -1, 'desc': "Can't contact LDAP server", 'ctrls': []}) +[WARNING][2025-05-06 16:02:15,792][operation.py:133]"GET - RoundController[get_round_tree] /api/project/getRoundInfo/undefined" ("Field 'id' expected a number but got 'undefined'.",) +[ERROR][2025-05-06 16:02:15,793][errors.py:131]Field 'id' expected a number but got 'undefined'. +Traceback (most recent call last): + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\fields\__init__.py", line 2128, in get_prep_value + return int(value) +ValueError: invalid literal for int() with base 10: 'undefined' + +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 214, 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 99, in as_view + result = self.route.view_func( + ctx.controller_instance, *args, **ctx.view_func_kwargs + ) + File "E:\pycharmProjects\cdtestplant_v1\apps\project\controllers\round.py", line 16, in get_round_tree + qs = Round.objects.filter(project__id=project_id).order_by('key') + ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^ + 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 1481, in filter + return self._filter_or_exclude(False, args, kwargs) + ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 1499, in _filter_or_exclude + clone._filter_or_exclude_inplace(negate, args, kwargs) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 1506, in _filter_or_exclude_inplace + self._query.add_q(Q(*args, **kwargs)) + ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1643, in add_q + clause, _ = self._add_q(q_object, can_reuse) + ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1675, in _add_q + child_clause, needed_inner = self.build_filter( + ~~~~~~~~~~~~~~~~~^ + child, + ^^^^^^ + ...<7 lines>... + update_join_types=update_join_types, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1585, in build_filter + condition = self.build_lookup(lookups, col, value) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1412, in build_lookup + lookup = lookup_class(lhs, rhs) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 38, in __init__ + self.rhs = self.get_prep_lookup() + ~~~~~~~~~~~~~~~~~~~~^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 410, in get_prep_lookup + return super().get_prep_lookup() + ~~~~~~~~~~~~~~~~~~~~~~~^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 96, in get_prep_lookup + return self.lhs.output_field.get_prep_value(self.rhs) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\fields\__init__.py", line 2130, in get_prep_value + raise e.__class__( + "Field '%s' expected a number but got %r." % (self.name, value), + ) from e +ValueError: Field 'id' expected a number but got 'undefined'. +[ERROR][2025-05-06 16:02:15,874][log.py:248]Internal Server Error: /api/project/getRoundInfo/undefined +[WARNING][2025-05-06 16:02:24,312][operation.py:133]"GET - RoundController[get_round_tree] /api/project/getRoundInfo/undefined" ("Field 'id' expected a number but got 'undefined'.",) +[ERROR][2025-05-06 16:02:24,312][errors.py:131]Field 'id' expected a number but got 'undefined'. +Traceback (most recent call last): + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\fields\__init__.py", line 2128, in get_prep_value + return int(value) +ValueError: invalid literal for int() with base 10: 'undefined' + +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 214, 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 99, in as_view + result = self.route.view_func( + ctx.controller_instance, *args, **ctx.view_func_kwargs + ) + File "E:\pycharmProjects\cdtestplant_v1\apps\project\controllers\round.py", line 16, in get_round_tree + qs = Round.objects.filter(project__id=project_id).order_by('key') + ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^ + 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 1481, in filter + return self._filter_or_exclude(False, args, kwargs) + ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 1499, in _filter_or_exclude + clone._filter_or_exclude_inplace(negate, args, kwargs) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 1506, in _filter_or_exclude_inplace + self._query.add_q(Q(*args, **kwargs)) + ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1643, in add_q + clause, _ = self._add_q(q_object, can_reuse) + ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1675, in _add_q + child_clause, needed_inner = self.build_filter( + ~~~~~~~~~~~~~~~~~^ + child, + ^^^^^^ + ...<7 lines>... + update_join_types=update_join_types, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1585, in build_filter + condition = self.build_lookup(lookups, col, value) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1412, in build_lookup + lookup = lookup_class(lhs, rhs) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 38, in __init__ + self.rhs = self.get_prep_lookup() + ~~~~~~~~~~~~~~~~~~~~^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 410, in get_prep_lookup + return super().get_prep_lookup() + ~~~~~~~~~~~~~~~~~~~~~~~^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 96, in get_prep_lookup + return self.lhs.output_field.get_prep_value(self.rhs) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\fields\__init__.py", line 2130, in get_prep_value + raise e.__class__( + "Field '%s' expected a number but got %r." % (self.name, value), + ) from e +ValueError: Field 'id' expected a number but got 'undefined'. +[ERROR][2025-05-06 16:02:24,316][log.py:248]Internal Server Error: /api/project/getRoundInfo/undefined +[WARNING][2025-05-06 16:03:25,742][operation.py:133]"GET - RoundController[get_round_tree] /api/project/getRoundInfo/undefined" ("Field 'id' expected a number but got 'undefined'.",) +[ERROR][2025-05-06 16:03:25,742][errors.py:131]Field 'id' expected a number but got 'undefined'. +Traceback (most recent call last): + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\fields\__init__.py", line 2128, in get_prep_value + return int(value) +ValueError: invalid literal for int() with base 10: 'undefined' + +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 214, 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 99, in as_view + result = self.route.view_func( + ctx.controller_instance, *args, **ctx.view_func_kwargs + ) + File "E:\pycharmProjects\cdtestplant_v1\apps\project\controllers\round.py", line 16, in get_round_tree + qs = Round.objects.filter(project__id=project_id).order_by('key') + ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^ + 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 1481, in filter + return self._filter_or_exclude(False, args, kwargs) + ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 1499, in _filter_or_exclude + clone._filter_or_exclude_inplace(negate, args, kwargs) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 1506, in _filter_or_exclude_inplace + self._query.add_q(Q(*args, **kwargs)) + ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1643, in add_q + clause, _ = self._add_q(q_object, can_reuse) + ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1675, in _add_q + child_clause, needed_inner = self.build_filter( + ~~~~~~~~~~~~~~~~~^ + child, + ^^^^^^ + ...<7 lines>... + update_join_types=update_join_types, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1585, in build_filter + condition = self.build_lookup(lookups, col, value) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1412, in build_lookup + lookup = lookup_class(lhs, rhs) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 38, in __init__ + self.rhs = self.get_prep_lookup() + ~~~~~~~~~~~~~~~~~~~~^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 410, in get_prep_lookup + return super().get_prep_lookup() + ~~~~~~~~~~~~~~~~~~~~~~~^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 96, in get_prep_lookup + return self.lhs.output_field.get_prep_value(self.rhs) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\fields\__init__.py", line 2130, in get_prep_value + raise e.__class__( + "Field '%s' expected a number but got %r." % (self.name, value), + ) from e +ValueError: Field 'id' expected a number but got 'undefined'. +[ERROR][2025-05-06 16:03:25,756][log.py:248]Internal Server Error: /api/project/getRoundInfo/undefined +[WARNING][2025-05-06 16:04:23,165][operation.py:133]"GET - RoundController[get_round_tree] /api/project/getRoundInfo/undefined" ("Field 'id' expected a number but got 'undefined'.",) +[ERROR][2025-05-06 16:04:23,166][errors.py:131]Field 'id' expected a number but got 'undefined'. +Traceback (most recent call last): + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\fields\__init__.py", line 2128, in get_prep_value + return int(value) +ValueError: invalid literal for int() with base 10: 'undefined' + +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 214, 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 99, in as_view + result = self.route.view_func( + ctx.controller_instance, *args, **ctx.view_func_kwargs + ) + File "E:\pycharmProjects\cdtestplant_v1\apps\project\controllers\round.py", line 16, in get_round_tree + qs = Round.objects.filter(project__id=project_id).order_by('key') + ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^ + 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 1481, in filter + return self._filter_or_exclude(False, args, kwargs) + ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 1499, in _filter_or_exclude + clone._filter_or_exclude_inplace(negate, args, kwargs) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 1506, in _filter_or_exclude_inplace + self._query.add_q(Q(*args, **kwargs)) + ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1643, in add_q + clause, _ = self._add_q(q_object, can_reuse) + ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1675, in _add_q + child_clause, needed_inner = self.build_filter( + ~~~~~~~~~~~~~~~~~^ + child, + ^^^^^^ + ...<7 lines>... + update_join_types=update_join_types, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1585, in build_filter + condition = self.build_lookup(lookups, col, value) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1412, in build_lookup + lookup = lookup_class(lhs, rhs) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 38, in __init__ + self.rhs = self.get_prep_lookup() + ~~~~~~~~~~~~~~~~~~~~^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 410, in get_prep_lookup + return super().get_prep_lookup() + ~~~~~~~~~~~~~~~~~~~~~~~^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 96, in get_prep_lookup + return self.lhs.output_field.get_prep_value(self.rhs) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\fields\__init__.py", line 2130, in get_prep_value + raise e.__class__( + "Field '%s' expected a number but got %r." % (self.name, value), + ) from e +ValueError: Field 'id' expected a number but got 'undefined'. +[ERROR][2025-05-06 16:04:23,170][log.py:248]Internal Server Error: /api/project/getRoundInfo/undefined +[WARNING][2025-05-07 08:18:25,348][log.py:248]Unauthorized: /api/system/getInfo +[WARNING][2025-05-07 08:18:25,429][log.py:248]Unauthorized: /api/system/logout +[WARNING][2025-05-07 08:18:50,242][backend.py:91]Caught LDAPError looking up user: SERVER_DOWN({'result': -1, 'desc': "Can't contact LDAP server", 'ctrls': []}) +[WARNING][2025-05-07 09:31:56,318][log.py:248]Not Found: / +[WARNING][2025-05-07 09:31:56,445][log.py:248]Not Found: /favicon.ico +[WARNING][2025-05-07 09:52:10,698][operation.py:133]"GET - DutController[get_dut_type] /api/project/dut/dut_type" ("'NoneType' object has no attribute 'type'",) +[ERROR][2025-05-07 09:52:10,698][errors.py:131]'NoneType' object has no attribute 'type' +Traceback (most recent call last): + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\operation.py", line 214, 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 99, in as_view + result = self.route.view_func( + ctx.controller_instance, *args, **ctx.view_func_kwargs + ) + File "D:\python13\Lib\contextlib.py", line 85, in inner + return func(*args, **kwds) + File "E:\pycharmProjects\cdtestplant_v1\apps\project\controllers\dut.py", line 202, in get_dut_type + return ChenResponse(code=200, status=200, data={'dut_type': dut.type}) + ^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'type' +[ERROR][2025-05-07 09:52:10,729][log.py:248]Internal Server Error: /api/project/dut/dut_type +[WARNING][2025-05-07 09:52:10,745][operation.py:133]"GET - DutController[get_dut_type] /api/project/dut/dut_type" ("'NoneType' object has no attribute 'type'",) +[ERROR][2025-05-07 09:52:10,745][errors.py:131]'NoneType' object has no attribute 'type' +Traceback (most recent call last): + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\operation.py", line 214, 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 99, in as_view + result = self.route.view_func( + ctx.controller_instance, *args, **ctx.view_func_kwargs + ) + File "D:\python13\Lib\contextlib.py", line 85, in inner + return func(*args, **kwds) + File "E:\pycharmProjects\cdtestplant_v1\apps\project\controllers\dut.py", line 202, in get_dut_type + return ChenResponse(code=200, status=200, data={'dut_type': dut.type}) + ^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'type' +[ERROR][2025-05-07 09:52:10,749][log.py:248]Internal Server Error: /api/project/dut/dut_type +[WARNING][2025-05-07 09:52:10,761][operation.py:133]"GET - DutController[get_dut_type] /api/project/dut/dut_type" ("'NoneType' object has no attribute 'type'",) +[ERROR][2025-05-07 09:52:10,762][errors.py:131]'NoneType' object has no attribute 'type' +Traceback (most recent call last): + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\operation.py", line 214, 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 99, in as_view + result = self.route.view_func( + ctx.controller_instance, *args, **ctx.view_func_kwargs + ) + File "D:\python13\Lib\contextlib.py", line 85, in inner + return func(*args, **kwds) + File "E:\pycharmProjects\cdtestplant_v1\apps\project\controllers\dut.py", line 202, in get_dut_type + return ChenResponse(code=200, status=200, data={'dut_type': dut.type}) + ^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'type' +[ERROR][2025-05-07 09:52:10,764][log.py:248]Internal Server Error: /api/project/dut/dut_type +[WARNING][2025-05-07 09:52:17,191][operation.py:133]"GET - DutController[get_dut_type] /api/project/dut/dut_type" ("'NoneType' object has no attribute 'type'",) +[ERROR][2025-05-07 09:52:17,191][errors.py:131]'NoneType' object has no attribute 'type' +Traceback (most recent call last): + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\operation.py", line 214, 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 99, in as_view + result = self.route.view_func( + ctx.controller_instance, *args, **ctx.view_func_kwargs + ) + File "D:\python13\Lib\contextlib.py", line 85, in inner + return func(*args, **kwds) + File "E:\pycharmProjects\cdtestplant_v1\apps\project\controllers\dut.py", line 202, in get_dut_type + return ChenResponse(code=200, status=200, data={'dut_type': dut.type}) + ^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'type' +[WARNING][2025-05-07 09:52:17,195][operation.py:133]"GET - DutController[get_dut_type] /api/project/dut/dut_type" ("'NoneType' object has no attribute 'type'",) +[ERROR][2025-05-07 09:52:17,203][errors.py:131]'NoneType' object has no attribute 'type' +Traceback (most recent call last): + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\operation.py", line 214, 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 99, in as_view + result = self.route.view_func( + ctx.controller_instance, *args, **ctx.view_func_kwargs + ) + File "D:\python13\Lib\contextlib.py", line 85, in inner + return func(*args, **kwds) + File "E:\pycharmProjects\cdtestplant_v1\apps\project\controllers\dut.py", line 202, in get_dut_type + return ChenResponse(code=200, status=200, data={'dut_type': dut.type}) + ^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'type' +[WARNING][2025-05-07 09:52:17,212][operation.py:133]"GET - DutController[get_dut_type] /api/project/dut/dut_type" ("'NoneType' object has no attribute 'type'",) +[ERROR][2025-05-07 09:52:17,213][log.py:248]Internal Server Error: /api/project/dut/dut_type +[ERROR][2025-05-07 09:52:17,215][errors.py:131]'NoneType' object has no attribute 'type' +Traceback (most recent call last): + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\operation.py", line 214, 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 99, in as_view + result = self.route.view_func( + ctx.controller_instance, *args, **ctx.view_func_kwargs + ) + File "D:\python13\Lib\contextlib.py", line 85, in inner + return func(*args, **kwds) + File "E:\pycharmProjects\cdtestplant_v1\apps\project\controllers\dut.py", line 202, in get_dut_type + return ChenResponse(code=200, status=200, data={'dut_type': dut.type}) + ^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'type' +[ERROR][2025-05-07 09:52:17,229][log.py:248]Internal Server Error: /api/project/dut/dut_type +[ERROR][2025-05-07 09:52:17,249][log.py:248]Internal Server Error: /api/project/dut/dut_type +[WARNING][2025-05-07 09:53:21,559][operation.py:133]"GET - DutController[get_dut_type] /api/project/dut/dut_type" ("'NoneType' object has no attribute 'type'",) +[ERROR][2025-05-07 09:53:21,559][errors.py:131]'NoneType' object has no attribute 'type' +Traceback (most recent call last): + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\operation.py", line 214, 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 99, in as_view + result = self.route.view_func( + ctx.controller_instance, *args, **ctx.view_func_kwargs + ) + File "D:\python13\Lib\contextlib.py", line 85, in inner + return func(*args, **kwds) + File "E:\pycharmProjects\cdtestplant_v1\apps\project\controllers\dut.py", line 202, in get_dut_type + return ChenResponse(code=200, status=200, data={'dut_type': dut.type}) + ^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'type' +[ERROR][2025-05-07 09:53:21,563][log.py:248]Internal Server Error: /api/project/dut/dut_type +[WARNING][2025-05-07 09:53:21,740][operation.py:133]"GET - DutController[get_dut_type] /api/project/dut/dut_type" ("'NoneType' object has no attribute 'type'",) +[ERROR][2025-05-07 09:53:21,741][errors.py:131]'NoneType' object has no attribute 'type' +Traceback (most recent call last): + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\operation.py", line 214, 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 99, in as_view + result = self.route.view_func( + ctx.controller_instance, *args, **ctx.view_func_kwargs + ) + File "D:\python13\Lib\contextlib.py", line 85, in inner + return func(*args, **kwds) + File "E:\pycharmProjects\cdtestplant_v1\apps\project\controllers\dut.py", line 202, in get_dut_type + return ChenResponse(code=200, status=200, data={'dut_type': dut.type}) + ^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'type' +[ERROR][2025-05-07 09:53:21,744][log.py:248]Internal Server Error: /api/project/dut/dut_type +[WARNING][2025-05-07 09:53:23,427][operation.py:133]"GET - DutController[get_dut_type] /api/project/dut/dut_type" ("'NoneType' object has no attribute 'type'",) +[ERROR][2025-05-07 09:53:23,429][errors.py:131]'NoneType' object has no attribute 'type' +Traceback (most recent call last): + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\operation.py", line 214, 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 99, in as_view + result = self.route.view_func( + ctx.controller_instance, *args, **ctx.view_func_kwargs + ) + File "D:\python13\Lib\contextlib.py", line 85, in inner + return func(*args, **kwds) + File "E:\pycharmProjects\cdtestplant_v1\apps\project\controllers\dut.py", line 202, in get_dut_type + return ChenResponse(code=200, status=200, data={'dut_type': dut.type}) + ^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'type' +[ERROR][2025-05-07 09:53:23,431][log.py:248]Internal Server Error: /api/project/dut/dut_type +[WARNING][2025-05-07 09:53:23,988][operation.py:133]"GET - DutController[get_dut_type] /api/project/dut/dut_type" ("'NoneType' object has no attribute 'type'",) +[ERROR][2025-05-07 09:53:23,989][errors.py:131]'NoneType' object has no attribute 'type' +Traceback (most recent call last): + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\operation.py", line 214, 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 99, in as_view + result = self.route.view_func( + ctx.controller_instance, *args, **ctx.view_func_kwargs + ) + File "D:\python13\Lib\contextlib.py", line 85, in inner + return func(*args, **kwds) + File "E:\pycharmProjects\cdtestplant_v1\apps\project\controllers\dut.py", line 202, in get_dut_type + return ChenResponse(code=200, status=200, data={'dut_type': dut.type}) + ^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'type' +[ERROR][2025-05-07 09:53:23,993][log.py:248]Internal Server Error: /api/project/dut/dut_type +[WARNING][2025-05-07 09:53:47,322][operation.py:133]"GET - DutController[get_dut_type] /api/project/dut/dut_type" ("'NoneType' object has no attribute 'type'",) +[ERROR][2025-05-07 09:53:47,323][errors.py:131]'NoneType' object has no attribute 'type' +Traceback (most recent call last): + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\operation.py", line 214, 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 99, in as_view + result = self.route.view_func( + ctx.controller_instance, *args, **ctx.view_func_kwargs + ) + File "D:\python13\Lib\contextlib.py", line 85, in inner + return func(*args, **kwds) + File "E:\pycharmProjects\cdtestplant_v1\apps\project\controllers\dut.py", line 202, in get_dut_type + return ChenResponse(code=200, status=200, data={'dut_type': dut.type}) + ^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'type' +[ERROR][2025-05-07 09:53:47,324][log.py:248]Internal Server Error: /api/project/dut/dut_type +[WARNING][2025-05-07 09:53:58,390][operation.py:133]"GET - DutController[get_dut_type] /api/project/dut/dut_type" ("'NoneType' object has no attribute 'type'",) +[ERROR][2025-05-07 09:53:58,390][errors.py:131]'NoneType' object has no attribute 'type' +Traceback (most recent call last): + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\operation.py", line 214, 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 99, in as_view + result = self.route.view_func( + ctx.controller_instance, *args, **ctx.view_func_kwargs + ) + File "D:\python13\Lib\contextlib.py", line 85, in inner + return func(*args, **kwds) + File "E:\pycharmProjects\cdtestplant_v1\apps\project\controllers\dut.py", line 202, in get_dut_type + return ChenResponse(code=200, status=200, data={'dut_type': dut.type}) + ^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'type' +[ERROR][2025-05-07 09:53:58,391][log.py:248]Internal Server Error: /api/project/dut/dut_type +[WARNING][2025-05-07 09:55:52,748][operation.py:133]"GET - DutController[get_dut_type] /api/project/dut/dut_type" ("'NoneType' object has no attribute 'type'",) +[ERROR][2025-05-07 09:55:52,748][errors.py:131]'NoneType' object has no attribute 'type' +Traceback (most recent call last): + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\operation.py", line 214, 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 99, in as_view + result = self.route.view_func( + ctx.controller_instance, *args, **ctx.view_func_kwargs + ) + File "D:\python13\Lib\contextlib.py", line 85, in inner + return func(*args, **kwds) + File "E:\pycharmProjects\cdtestplant_v1\apps\project\controllers\dut.py", line 202, in get_dut_type + return ChenResponse(code=200, status=200, data={'dut_type': dut.type}) + ^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'type' +[ERROR][2025-05-07 09:55:52,753][log.py:248]Internal Server Error: /api/project/dut/dut_type +[WARNING][2025-05-07 09:55:55,868][operation.py:133]"GET - DutController[get_dut_type] /api/project/dut/dut_type" ("'NoneType' object has no attribute 'type'",) +[ERROR][2025-05-07 09:55:55,870][errors.py:131]'NoneType' object has no attribute 'type' +Traceback (most recent call last): + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\operation.py", line 214, 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 99, in as_view + result = self.route.view_func( + ctx.controller_instance, *args, **ctx.view_func_kwargs + ) + File "D:\python13\Lib\contextlib.py", line 85, in inner + return func(*args, **kwds) + File "E:\pycharmProjects\cdtestplant_v1\apps\project\controllers\dut.py", line 202, in get_dut_type + return ChenResponse(code=200, status=200, data={'dut_type': dut.type}) + ^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'type' +[ERROR][2025-05-07 09:55:55,874][log.py:248]Internal Server Error: /api/project/dut/dut_type +[WARNING][2025-05-07 09:56:02,966][operation.py:133]"GET - DutController[get_dut_type] /api/project/dut/dut_type" ("'NoneType' object has no attribute 'type'",) +[ERROR][2025-05-07 09:56:02,966][errors.py:131]'NoneType' object has no attribute 'type' +Traceback (most recent call last): + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\operation.py", line 214, 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 99, in as_view + result = self.route.view_func( + ctx.controller_instance, *args, **ctx.view_func_kwargs + ) + File "D:\python13\Lib\contextlib.py", line 85, in inner + return func(*args, **kwds) + File "E:\pycharmProjects\cdtestplant_v1\apps\project\controllers\dut.py", line 202, in get_dut_type + return ChenResponse(code=200, status=200, data={'dut_type': dut.type}) + ^^^^^^^^ +AttributeError: 'NoneType' object has no attribute 'type' +[ERROR][2025-05-07 09:56:02,968][log.py:248]Internal Server Error: /api/project/dut/dut_type +[WARNING][2025-05-07 10:40:45,425][operation.py:133]"GET - DesignController[get_design_list] /api/project/getDesignDemandList" ("Field 'id' expected a number but got ''.",) +[ERROR][2025-05-07 10:40:45,425][errors.py:131]Field 'id' expected a number but got ''. +Traceback (most recent call last): + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\fields\__init__.py", line 2128, in get_prep_value + return int(value) +ValueError: invalid literal for int() with base 10: '' + +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 214, 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 99, in as_view + result = self.route.view_func( + ctx.controller_instance, *args, **ctx.view_func_kwargs + ) + File "D:\python13\Lib\contextlib.py", line 85, in inner + return func(*args, **kwds) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja\pagination.py", line 250, in view_with_pagination + items = func(request, **kwargs) + File "E:\pycharmProjects\cdtestplant_v1\apps\project\controllers\design.py", line 28, in get_design_list + qs = Design.objects.filter(project__id=datafilter.project_id, dut__key=dut_key, + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ident__icontains=datafilter.ident, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + name__icontains=datafilter.name, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + demandType__contains=datafilter.demandType, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + chapter__icontains=datafilter.chapter).order_by('id') + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + 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 1481, in filter + return self._filter_or_exclude(False, args, kwargs) + ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 1499, in _filter_or_exclude + clone._filter_or_exclude_inplace(negate, args, kwargs) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 1506, in _filter_or_exclude_inplace + self._query.add_q(Q(*args, **kwargs)) + ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1643, in add_q + clause, _ = self._add_q(q_object, can_reuse) + ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1675, in _add_q + child_clause, needed_inner = self.build_filter( + ~~~~~~~~~~~~~~~~~^ + child, + ^^^^^^ + ...<7 lines>... + update_join_types=update_join_types, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1585, in build_filter + condition = self.build_lookup(lookups, col, value) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1412, in build_lookup + lookup = lookup_class(lhs, rhs) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 38, in __init__ + self.rhs = self.get_prep_lookup() + ~~~~~~~~~~~~~~~~~~~~^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 410, in get_prep_lookup + return super().get_prep_lookup() + ~~~~~~~~~~~~~~~~~~~~~~~^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 96, in get_prep_lookup + return self.lhs.output_field.get_prep_value(self.rhs) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\fields\__init__.py", line 2130, in get_prep_value + raise e.__class__( + "Field '%s' expected a number but got %r." % (self.name, value), + ) from e +ValueError: Field 'id' expected a number but got ''. +[ERROR][2025-05-07 10:40:45,515][log.py:248]Internal Server Error: /api/project/getDesignDemandList +[WARNING][2025-05-07 10:41:03,136][backend.py:91]Caught LDAPError looking up user: SERVER_DOWN({'result': -1, 'desc': "Can't contact LDAP server", 'ctrls': []}) +[WARNING][2025-05-07 10:41:03,892][operation.py:133]"GET - DesignController[get_design_list] /api/project/getDesignDemandList" ("Field 'id' expected a number but got ''.",) +[ERROR][2025-05-07 10:41:03,892][errors.py:131]Field 'id' expected a number but got ''. +Traceback (most recent call last): + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\fields\__init__.py", line 2128, in get_prep_value + return int(value) +ValueError: invalid literal for int() with base 10: '' + +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 214, 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 99, in as_view + result = self.route.view_func( + ctx.controller_instance, *args, **ctx.view_func_kwargs + ) + File "D:\python13\Lib\contextlib.py", line 85, in inner + return func(*args, **kwds) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja\pagination.py", line 250, in view_with_pagination + items = func(request, **kwargs) + File "E:\pycharmProjects\cdtestplant_v1\apps\project\controllers\design.py", line 28, in get_design_list + qs = Design.objects.filter(project__id=datafilter.project_id, dut__key=dut_key, + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ident__icontains=datafilter.ident, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + name__icontains=datafilter.name, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + demandType__contains=datafilter.demandType, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + chapter__icontains=datafilter.chapter).order_by('id') + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + 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 1481, in filter + return self._filter_or_exclude(False, args, kwargs) + ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 1499, in _filter_or_exclude + clone._filter_or_exclude_inplace(negate, args, kwargs) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 1506, in _filter_or_exclude_inplace + self._query.add_q(Q(*args, **kwargs)) + ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1643, in add_q + clause, _ = self._add_q(q_object, can_reuse) + ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1675, in _add_q + child_clause, needed_inner = self.build_filter( + ~~~~~~~~~~~~~~~~~^ + child, + ^^^^^^ + ...<7 lines>... + update_join_types=update_join_types, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1585, in build_filter + condition = self.build_lookup(lookups, col, value) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1412, in build_lookup + lookup = lookup_class(lhs, rhs) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 38, in __init__ + self.rhs = self.get_prep_lookup() + ~~~~~~~~~~~~~~~~~~~~^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 410, in get_prep_lookup + return super().get_prep_lookup() + ~~~~~~~~~~~~~~~~~~~~~~~^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 96, in get_prep_lookup + return self.lhs.output_field.get_prep_value(self.rhs) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\fields\__init__.py", line 2130, in get_prep_value + raise e.__class__( + "Field '%s' expected a number but got %r." % (self.name, value), + ) from e +ValueError: Field 'id' expected a number but got ''. +[ERROR][2025-05-07 10:41:03,907][log.py:248]Internal Server Error: /api/project/getDesignDemandList +[WARNING][2025-05-07 10:41:04,923][operation.py:133]"GET - DesignController[get_design_list] /api/project/getDesignDemandList" ("Field 'id' expected a number but got ''.",) +[ERROR][2025-05-07 10:41:04,924][errors.py:131]Field 'id' expected a number but got ''. +Traceback (most recent call last): + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\fields\__init__.py", line 2128, in get_prep_value + return int(value) +ValueError: invalid literal for int() with base 10: '' + +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 214, 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 99, in as_view + result = self.route.view_func( + ctx.controller_instance, *args, **ctx.view_func_kwargs + ) + File "D:\python13\Lib\contextlib.py", line 85, in inner + return func(*args, **kwds) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja\pagination.py", line 250, in view_with_pagination + items = func(request, **kwargs) + File "E:\pycharmProjects\cdtestplant_v1\apps\project\controllers\design.py", line 28, in get_design_list + qs = Design.objects.filter(project__id=datafilter.project_id, dut__key=dut_key, + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ident__icontains=datafilter.ident, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + name__icontains=datafilter.name, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + demandType__contains=datafilter.demandType, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + chapter__icontains=datafilter.chapter).order_by('id') + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + 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 1481, in filter + return self._filter_or_exclude(False, args, kwargs) + ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 1499, in _filter_or_exclude + clone._filter_or_exclude_inplace(negate, args, kwargs) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 1506, in _filter_or_exclude_inplace + self._query.add_q(Q(*args, **kwargs)) + ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1643, in add_q + clause, _ = self._add_q(q_object, can_reuse) + ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1675, in _add_q + child_clause, needed_inner = self.build_filter( + ~~~~~~~~~~~~~~~~~^ + child, + ^^^^^^ + ...<7 lines>... + update_join_types=update_join_types, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1585, in build_filter + condition = self.build_lookup(lookups, col, value) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1412, in build_lookup + lookup = lookup_class(lhs, rhs) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 38, in __init__ + self.rhs = self.get_prep_lookup() + ~~~~~~~~~~~~~~~~~~~~^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 410, in get_prep_lookup + return super().get_prep_lookup() + ~~~~~~~~~~~~~~~~~~~~~~~^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 96, in get_prep_lookup + return self.lhs.output_field.get_prep_value(self.rhs) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\fields\__init__.py", line 2130, in get_prep_value + raise e.__class__( + "Field '%s' expected a number but got %r." % (self.name, value), + ) from e +ValueError: Field 'id' expected a number but got ''. +[ERROR][2025-05-07 10:41:04,927][log.py:248]Internal Server Error: /api/project/getDesignDemandList +[WARNING][2025-05-07 10:41:06,942][operation.py:133]"GET - DesignController[get_design_list] /api/project/getDesignDemandList" ("Field 'id' expected a number but got ''.",) +[ERROR][2025-05-07 10:41:06,942][errors.py:131]Field 'id' expected a number but got ''. +Traceback (most recent call last): + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\fields\__init__.py", line 2128, in get_prep_value + return int(value) +ValueError: invalid literal for int() with base 10: '' + +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 214, 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 99, in as_view + result = self.route.view_func( + ctx.controller_instance, *args, **ctx.view_func_kwargs + ) + File "D:\python13\Lib\contextlib.py", line 85, in inner + return func(*args, **kwds) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja\pagination.py", line 250, in view_with_pagination + items = func(request, **kwargs) + File "E:\pycharmProjects\cdtestplant_v1\apps\project\controllers\design.py", line 28, in get_design_list + qs = Design.objects.filter(project__id=datafilter.project_id, dut__key=dut_key, + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ident__icontains=datafilter.ident, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + name__icontains=datafilter.name, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + demandType__contains=datafilter.demandType, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + chapter__icontains=datafilter.chapter).order_by('id') + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + 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 1481, in filter + return self._filter_or_exclude(False, args, kwargs) + ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 1499, in _filter_or_exclude + clone._filter_or_exclude_inplace(negate, args, kwargs) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 1506, in _filter_or_exclude_inplace + self._query.add_q(Q(*args, **kwargs)) + ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1643, in add_q + clause, _ = self._add_q(q_object, can_reuse) + ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1675, in _add_q + child_clause, needed_inner = self.build_filter( + ~~~~~~~~~~~~~~~~~^ + child, + ^^^^^^ + ...<7 lines>... + update_join_types=update_join_types, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1585, in build_filter + condition = self.build_lookup(lookups, col, value) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1412, in build_lookup + lookup = lookup_class(lhs, rhs) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 38, in __init__ + self.rhs = self.get_prep_lookup() + ~~~~~~~~~~~~~~~~~~~~^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 410, in get_prep_lookup + return super().get_prep_lookup() + ~~~~~~~~~~~~~~~~~~~~~~~^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 96, in get_prep_lookup + return self.lhs.output_field.get_prep_value(self.rhs) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\fields\__init__.py", line 2130, in get_prep_value + raise e.__class__( + "Field '%s' expected a number but got %r." % (self.name, value), + ) from e +ValueError: Field 'id' expected a number but got ''. +[ERROR][2025-05-07 10:41:06,949][log.py:248]Internal Server Error: /api/project/getDesignDemandList +[WARNING][2025-05-07 10:41:08,185][operation.py:133]"GET - DesignController[get_design_list] /api/project/getDesignDemandList" ("Field 'id' expected a number but got ''.",) +[ERROR][2025-05-07 10:41:08,186][errors.py:131]Field 'id' expected a number but got ''. +Traceback (most recent call last): + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\fields\__init__.py", line 2128, in get_prep_value + return int(value) +ValueError: invalid literal for int() with base 10: '' + +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 214, 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 99, in as_view + result = self.route.view_func( + ctx.controller_instance, *args, **ctx.view_func_kwargs + ) + File "D:\python13\Lib\contextlib.py", line 85, in inner + return func(*args, **kwds) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja\pagination.py", line 250, in view_with_pagination + items = func(request, **kwargs) + File "E:\pycharmProjects\cdtestplant_v1\apps\project\controllers\design.py", line 28, in get_design_list + qs = Design.objects.filter(project__id=datafilter.project_id, dut__key=dut_key, + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ident__icontains=datafilter.ident, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + name__icontains=datafilter.name, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + demandType__contains=datafilter.demandType, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + chapter__icontains=datafilter.chapter).order_by('id') + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + 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 1481, in filter + return self._filter_or_exclude(False, args, kwargs) + ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 1499, in _filter_or_exclude + clone._filter_or_exclude_inplace(negate, args, kwargs) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 1506, in _filter_or_exclude_inplace + self._query.add_q(Q(*args, **kwargs)) + ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1643, in add_q + clause, _ = self._add_q(q_object, can_reuse) + ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1675, in _add_q + child_clause, needed_inner = self.build_filter( + ~~~~~~~~~~~~~~~~~^ + child, + ^^^^^^ + ...<7 lines>... + update_join_types=update_join_types, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1585, in build_filter + condition = self.build_lookup(lookups, col, value) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1412, in build_lookup + lookup = lookup_class(lhs, rhs) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 38, in __init__ + self.rhs = self.get_prep_lookup() + ~~~~~~~~~~~~~~~~~~~~^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 410, in get_prep_lookup + return super().get_prep_lookup() + ~~~~~~~~~~~~~~~~~~~~~~~^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 96, in get_prep_lookup + return self.lhs.output_field.get_prep_value(self.rhs) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\fields\__init__.py", line 2130, in get_prep_value + raise e.__class__( + "Field '%s' expected a number but got %r." % (self.name, value), + ) from e +ValueError: Field 'id' expected a number but got ''. +[ERROR][2025-05-07 10:41:08,211][log.py:248]Internal Server Error: /api/project/getDesignDemandList +[WARNING][2025-05-07 10:41:09,236][operation.py:133]"GET - DesignController[get_design_list] /api/project/getDesignDemandList" ("Field 'id' expected a number but got ''.",) +[ERROR][2025-05-07 10:41:09,236][errors.py:131]Field 'id' expected a number but got ''. +Traceback (most recent call last): + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\fields\__init__.py", line 2128, in get_prep_value + return int(value) +ValueError: invalid literal for int() with base 10: '' + +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 214, 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 99, in as_view + result = self.route.view_func( + ctx.controller_instance, *args, **ctx.view_func_kwargs + ) + File "D:\python13\Lib\contextlib.py", line 85, in inner + return func(*args, **kwds) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja\pagination.py", line 250, in view_with_pagination + items = func(request, **kwargs) + File "E:\pycharmProjects\cdtestplant_v1\apps\project\controllers\design.py", line 28, in get_design_list + qs = Design.objects.filter(project__id=datafilter.project_id, dut__key=dut_key, + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ident__icontains=datafilter.ident, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + name__icontains=datafilter.name, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + demandType__contains=datafilter.demandType, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + chapter__icontains=datafilter.chapter).order_by('id') + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + 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 1481, in filter + return self._filter_or_exclude(False, args, kwargs) + ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 1499, in _filter_or_exclude + clone._filter_or_exclude_inplace(negate, args, kwargs) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 1506, in _filter_or_exclude_inplace + self._query.add_q(Q(*args, **kwargs)) + ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1643, in add_q + clause, _ = self._add_q(q_object, can_reuse) + ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1675, in _add_q + child_clause, needed_inner = self.build_filter( + ~~~~~~~~~~~~~~~~~^ + child, + ^^^^^^ + ...<7 lines>... + update_join_types=update_join_types, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1585, in build_filter + condition = self.build_lookup(lookups, col, value) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1412, in build_lookup + lookup = lookup_class(lhs, rhs) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 38, in __init__ + self.rhs = self.get_prep_lookup() + ~~~~~~~~~~~~~~~~~~~~^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 410, in get_prep_lookup + return super().get_prep_lookup() + ~~~~~~~~~~~~~~~~~~~~~~~^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 96, in get_prep_lookup + return self.lhs.output_field.get_prep_value(self.rhs) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\fields\__init__.py", line 2130, in get_prep_value + raise e.__class__( + "Field '%s' expected a number but got %r." % (self.name, value), + ) from e +ValueError: Field 'id' expected a number but got ''. +[ERROR][2025-05-07 10:41:09,243][log.py:248]Internal Server Error: /api/project/getDesignDemandList +[WARNING][2025-05-07 10:41:11,255][operation.py:133]"GET - DesignController[get_design_list] /api/project/getDesignDemandList" ("Field 'id' expected a number but got ''.",) +[ERROR][2025-05-07 10:41:11,256][errors.py:131]Field 'id' expected a number but got ''. +Traceback (most recent call last): + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\fields\__init__.py", line 2128, in get_prep_value + return int(value) +ValueError: invalid literal for int() with base 10: '' + +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 214, 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 99, in as_view + result = self.route.view_func( + ctx.controller_instance, *args, **ctx.view_func_kwargs + ) + File "D:\python13\Lib\contextlib.py", line 85, in inner + return func(*args, **kwds) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja\pagination.py", line 250, in view_with_pagination + items = func(request, **kwargs) + File "E:\pycharmProjects\cdtestplant_v1\apps\project\controllers\design.py", line 28, in get_design_list + qs = Design.objects.filter(project__id=datafilter.project_id, dut__key=dut_key, + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ident__icontains=datafilter.ident, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + name__icontains=datafilter.name, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + demandType__contains=datafilter.demandType, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + chapter__icontains=datafilter.chapter).order_by('id') + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + 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 1481, in filter + return self._filter_or_exclude(False, args, kwargs) + ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 1499, in _filter_or_exclude + clone._filter_or_exclude_inplace(negate, args, kwargs) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 1506, in _filter_or_exclude_inplace + self._query.add_q(Q(*args, **kwargs)) + ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1643, in add_q + clause, _ = self._add_q(q_object, can_reuse) + ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1675, in _add_q + child_clause, needed_inner = self.build_filter( + ~~~~~~~~~~~~~~~~~^ + child, + ^^^^^^ + ...<7 lines>... + update_join_types=update_join_types, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1585, in build_filter + condition = self.build_lookup(lookups, col, value) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1412, in build_lookup + lookup = lookup_class(lhs, rhs) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 38, in __init__ + self.rhs = self.get_prep_lookup() + ~~~~~~~~~~~~~~~~~~~~^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 410, in get_prep_lookup + return super().get_prep_lookup() + ~~~~~~~~~~~~~~~~~~~~~~~^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 96, in get_prep_lookup + return self.lhs.output_field.get_prep_value(self.rhs) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\fields\__init__.py", line 2130, in get_prep_value + raise e.__class__( + "Field '%s' expected a number but got %r." % (self.name, value), + ) from e +ValueError: Field 'id' expected a number but got ''. +[ERROR][2025-05-07 10:41:11,263][log.py:248]Internal Server Error: /api/project/getDesignDemandList +[WARNING][2025-05-07 10:42:09,637][operation.py:133]"GET - DesignController[get_design_list] /api/project/getDesignDemandList" ("Field 'id' expected a number but got ''.",) +[ERROR][2025-05-07 10:42:09,637][errors.py:131]Field 'id' expected a number but got ''. +Traceback (most recent call last): + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\fields\__init__.py", line 2128, in get_prep_value + return int(value) +ValueError: invalid literal for int() with base 10: '' + +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 214, 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 99, in as_view + result = self.route.view_func( + ctx.controller_instance, *args, **ctx.view_func_kwargs + ) + File "D:\python13\Lib\contextlib.py", line 85, in inner + return func(*args, **kwds) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja\pagination.py", line 250, in view_with_pagination + items = func(request, **kwargs) + File "E:\pycharmProjects\cdtestplant_v1\apps\project\controllers\design.py", line 28, in get_design_list + qs = Design.objects.filter(project__id=datafilter.project_id, dut__key=dut_key, + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ident__icontains=datafilter.ident, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + name__icontains=datafilter.name, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + demandType__contains=datafilter.demandType, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + chapter__icontains=datafilter.chapter).order_by('id') + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + 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 1481, in filter + return self._filter_or_exclude(False, args, kwargs) + ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 1499, in _filter_or_exclude + clone._filter_or_exclude_inplace(negate, args, kwargs) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 1506, in _filter_or_exclude_inplace + self._query.add_q(Q(*args, **kwargs)) + ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1643, in add_q + clause, _ = self._add_q(q_object, can_reuse) + ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1675, in _add_q + child_clause, needed_inner = self.build_filter( + ~~~~~~~~~~~~~~~~~^ + child, + ^^^^^^ + ...<7 lines>... + update_join_types=update_join_types, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1585, in build_filter + condition = self.build_lookup(lookups, col, value) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1412, in build_lookup + lookup = lookup_class(lhs, rhs) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 38, in __init__ + self.rhs = self.get_prep_lookup() + ~~~~~~~~~~~~~~~~~~~~^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 410, in get_prep_lookup + return super().get_prep_lookup() + ~~~~~~~~~~~~~~~~~~~~~~~^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 96, in get_prep_lookup + return self.lhs.output_field.get_prep_value(self.rhs) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\fields\__init__.py", line 2130, in get_prep_value + raise e.__class__( + "Field '%s' expected a number but got %r." % (self.name, value), + ) from e +ValueError: Field 'id' expected a number but got ''. +[ERROR][2025-05-07 10:42:09,644][log.py:248]Internal Server Error: /api/project/getDesignDemandList +[WARNING][2025-05-07 10:42:10,978][operation.py:133]"GET - DesignController[get_design_list] /api/project/getDesignDemandList" ("Field 'id' expected a number but got ''.",) +[ERROR][2025-05-07 10:42:10,979][errors.py:131]Field 'id' expected a number but got ''. +Traceback (most recent call last): + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\fields\__init__.py", line 2128, in get_prep_value + return int(value) +ValueError: invalid literal for int() with base 10: '' + +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 214, 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 99, in as_view + result = self.route.view_func( + ctx.controller_instance, *args, **ctx.view_func_kwargs + ) + File "D:\python13\Lib\contextlib.py", line 85, in inner + return func(*args, **kwds) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja\pagination.py", line 250, in view_with_pagination + items = func(request, **kwargs) + File "E:\pycharmProjects\cdtestplant_v1\apps\project\controllers\design.py", line 28, in get_design_list + qs = Design.objects.filter(project__id=datafilter.project_id, dut__key=dut_key, + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ident__icontains=datafilter.ident, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + name__icontains=datafilter.name, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + demandType__contains=datafilter.demandType, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + chapter__icontains=datafilter.chapter).order_by('id') + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + 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 1481, in filter + return self._filter_or_exclude(False, args, kwargs) + ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 1499, in _filter_or_exclude + clone._filter_or_exclude_inplace(negate, args, kwargs) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 1506, in _filter_or_exclude_inplace + self._query.add_q(Q(*args, **kwargs)) + ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1643, in add_q + clause, _ = self._add_q(q_object, can_reuse) + ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1675, in _add_q + child_clause, needed_inner = self.build_filter( + ~~~~~~~~~~~~~~~~~^ + child, + ^^^^^^ + ...<7 lines>... + update_join_types=update_join_types, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1585, in build_filter + condition = self.build_lookup(lookups, col, value) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1412, in build_lookup + lookup = lookup_class(lhs, rhs) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 38, in __init__ + self.rhs = self.get_prep_lookup() + ~~~~~~~~~~~~~~~~~~~~^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 410, in get_prep_lookup + return super().get_prep_lookup() + ~~~~~~~~~~~~~~~~~~~~~~~^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 96, in get_prep_lookup + return self.lhs.output_field.get_prep_value(self.rhs) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\fields\__init__.py", line 2130, in get_prep_value + raise e.__class__( + "Field '%s' expected a number but got %r." % (self.name, value), + ) from e +ValueError: Field 'id' expected a number but got ''. +[ERROR][2025-05-07 10:42:10,987][log.py:248]Internal Server Error: /api/project/getDesignDemandList +[WARNING][2025-05-07 10:43:11,516][operation.py:133]"GET - DesignController[get_design_list] /api/project/getDesignDemandList" ("Field 'id' expected a number but got ''.",) +[ERROR][2025-05-07 10:43:11,516][errors.py:131]Field 'id' expected a number but got ''. +Traceback (most recent call last): + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\fields\__init__.py", line 2128, in get_prep_value + return int(value) +ValueError: invalid literal for int() with base 10: '' + +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 214, 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 99, in as_view + result = self.route.view_func( + ctx.controller_instance, *args, **ctx.view_func_kwargs + ) + File "D:\python13\Lib\contextlib.py", line 85, in inner + return func(*args, **kwds) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja\pagination.py", line 250, in view_with_pagination + items = func(request, **kwargs) + File "E:\pycharmProjects\cdtestplant_v1\apps\project\controllers\design.py", line 29, in get_design_list + qs = Design.objects.filter(project__id=datafilter.project_id, dut__key=dut_key, + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ident__icontains=datafilter.ident, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + name__icontains=datafilter.name, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + demandType__contains=datafilter.demandType, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + chapter__icontains=datafilter.chapter).order_by('id') + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + 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 1481, in filter + return self._filter_or_exclude(False, args, kwargs) + ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 1499, in _filter_or_exclude + clone._filter_or_exclude_inplace(negate, args, kwargs) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 1506, in _filter_or_exclude_inplace + self._query.add_q(Q(*args, **kwargs)) + ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1643, in add_q + clause, _ = self._add_q(q_object, can_reuse) + ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1675, in _add_q + child_clause, needed_inner = self.build_filter( + ~~~~~~~~~~~~~~~~~^ + child, + ^^^^^^ + ...<7 lines>... + update_join_types=update_join_types, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1585, in build_filter + condition = self.build_lookup(lookups, col, value) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1412, in build_lookup + lookup = lookup_class(lhs, rhs) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 38, in __init__ + self.rhs = self.get_prep_lookup() + ~~~~~~~~~~~~~~~~~~~~^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 410, in get_prep_lookup + return super().get_prep_lookup() + ~~~~~~~~~~~~~~~~~~~~~~~^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 96, in get_prep_lookup + return self.lhs.output_field.get_prep_value(self.rhs) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\fields\__init__.py", line 2130, in get_prep_value + raise e.__class__( + "Field '%s' expected a number but got %r." % (self.name, value), + ) from e +ValueError: Field 'id' expected a number but got ''. +[ERROR][2025-05-07 10:43:11,523][log.py:248]Internal Server Error: /api/project/getDesignDemandList +[WARNING][2025-05-07 10:43:13,537][operation.py:133]"GET - DesignController[get_design_list] /api/project/getDesignDemandList" ("Field 'id' expected a number but got ''.",) +[ERROR][2025-05-07 10:43:13,537][errors.py:131]Field 'id' expected a number but got ''. +Traceback (most recent call last): + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\fields\__init__.py", line 2128, in get_prep_value + return int(value) +ValueError: invalid literal for int() with base 10: '' + +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 214, 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 99, in as_view + result = self.route.view_func( + ctx.controller_instance, *args, **ctx.view_func_kwargs + ) + File "D:\python13\Lib\contextlib.py", line 85, in inner + return func(*args, **kwds) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja\pagination.py", line 250, in view_with_pagination + items = func(request, **kwargs) + File "E:\pycharmProjects\cdtestplant_v1\apps\project\controllers\design.py", line 29, in get_design_list + qs = Design.objects.filter(project__id=datafilter.project_id, dut__key=dut_key, + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ident__icontains=datafilter.ident, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + name__icontains=datafilter.name, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + demandType__contains=datafilter.demandType, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + chapter__icontains=datafilter.chapter).order_by('id') + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + 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 1481, in filter + return self._filter_or_exclude(False, args, kwargs) + ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 1499, in _filter_or_exclude + clone._filter_or_exclude_inplace(negate, args, kwargs) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 1506, in _filter_or_exclude_inplace + self._query.add_q(Q(*args, **kwargs)) + ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1643, in add_q + clause, _ = self._add_q(q_object, can_reuse) + ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1675, in _add_q + child_clause, needed_inner = self.build_filter( + ~~~~~~~~~~~~~~~~~^ + child, + ^^^^^^ + ...<7 lines>... + update_join_types=update_join_types, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1585, in build_filter + condition = self.build_lookup(lookups, col, value) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1412, in build_lookup + lookup = lookup_class(lhs, rhs) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 38, in __init__ + self.rhs = self.get_prep_lookup() + ~~~~~~~~~~~~~~~~~~~~^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 410, in get_prep_lookup + return super().get_prep_lookup() + ~~~~~~~~~~~~~~~~~~~~~~~^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 96, in get_prep_lookup + return self.lhs.output_field.get_prep_value(self.rhs) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\fields\__init__.py", line 2130, in get_prep_value + raise e.__class__( + "Field '%s' expected a number but got %r." % (self.name, value), + ) from e +ValueError: Field 'id' expected a number but got ''. +[ERROR][2025-05-07 10:43:13,541][log.py:248]Internal Server Error: /api/project/getDesignDemandList +[WARNING][2025-05-07 10:43:14,722][operation.py:133]"GET - DesignController[get_design_list] /api/project/getDesignDemandList" ("Field 'id' expected a number but got ''.",) +[ERROR][2025-05-07 10:43:14,722][errors.py:131]Field 'id' expected a number but got ''. +Traceback (most recent call last): + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\fields\__init__.py", line 2128, in get_prep_value + return int(value) +ValueError: invalid literal for int() with base 10: '' + +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 214, 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 99, in as_view + result = self.route.view_func( + ctx.controller_instance, *args, **ctx.view_func_kwargs + ) + File "D:\python13\Lib\contextlib.py", line 85, in inner + return func(*args, **kwds) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja\pagination.py", line 250, in view_with_pagination + items = func(request, **kwargs) + File "E:\pycharmProjects\cdtestplant_v1\apps\project\controllers\design.py", line 29, in get_design_list + qs = Design.objects.filter(project__id=datafilter.project_id, dut__key=dut_key, + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ident__icontains=datafilter.ident, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + name__icontains=datafilter.name, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + demandType__contains=datafilter.demandType, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + chapter__icontains=datafilter.chapter).order_by('id') + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + 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 1481, in filter + return self._filter_or_exclude(False, args, kwargs) + ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 1499, in _filter_or_exclude + clone._filter_or_exclude_inplace(negate, args, kwargs) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 1506, in _filter_or_exclude_inplace + self._query.add_q(Q(*args, **kwargs)) + ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1643, in add_q + clause, _ = self._add_q(q_object, can_reuse) + ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1675, in _add_q + child_clause, needed_inner = self.build_filter( + ~~~~~~~~~~~~~~~~~^ + child, + ^^^^^^ + ...<7 lines>... + update_join_types=update_join_types, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1585, in build_filter + condition = self.build_lookup(lookups, col, value) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1412, in build_lookup + lookup = lookup_class(lhs, rhs) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 38, in __init__ + self.rhs = self.get_prep_lookup() + ~~~~~~~~~~~~~~~~~~~~^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 410, in get_prep_lookup + return super().get_prep_lookup() + ~~~~~~~~~~~~~~~~~~~~~~~^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 96, in get_prep_lookup + return self.lhs.output_field.get_prep_value(self.rhs) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\fields\__init__.py", line 2130, in get_prep_value + raise e.__class__( + "Field '%s' expected a number but got %r." % (self.name, value), + ) from e +ValueError: Field 'id' expected a number but got ''. +[ERROR][2025-05-07 10:43:14,732][log.py:248]Internal Server Error: /api/project/getDesignDemandList +[WARNING][2025-05-07 10:43:15,752][operation.py:133]"GET - DesignController[get_design_list] /api/project/getDesignDemandList" ("Field 'id' expected a number but got ''.",) +[ERROR][2025-05-07 10:43:15,752][errors.py:131]Field 'id' expected a number but got ''. +Traceback (most recent call last): + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\fields\__init__.py", line 2128, in get_prep_value + return int(value) +ValueError: invalid literal for int() with base 10: '' + +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 214, 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 99, in as_view + result = self.route.view_func( + ctx.controller_instance, *args, **ctx.view_func_kwargs + ) + File "D:\python13\Lib\contextlib.py", line 85, in inner + return func(*args, **kwds) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja\pagination.py", line 250, in view_with_pagination + items = func(request, **kwargs) + File "E:\pycharmProjects\cdtestplant_v1\apps\project\controllers\design.py", line 29, in get_design_list + qs = Design.objects.filter(project__id=datafilter.project_id, dut__key=dut_key, + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ident__icontains=datafilter.ident, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + name__icontains=datafilter.name, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + demandType__contains=datafilter.demandType, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + chapter__icontains=datafilter.chapter).order_by('id') + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + 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 1481, in filter + return self._filter_or_exclude(False, args, kwargs) + ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 1499, in _filter_or_exclude + clone._filter_or_exclude_inplace(negate, args, kwargs) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 1506, in _filter_or_exclude_inplace + self._query.add_q(Q(*args, **kwargs)) + ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1643, in add_q + clause, _ = self._add_q(q_object, can_reuse) + ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1675, in _add_q + child_clause, needed_inner = self.build_filter( + ~~~~~~~~~~~~~~~~~^ + child, + ^^^^^^ + ...<7 lines>... + update_join_types=update_join_types, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1585, in build_filter + condition = self.build_lookup(lookups, col, value) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1412, in build_lookup + lookup = lookup_class(lhs, rhs) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 38, in __init__ + self.rhs = self.get_prep_lookup() + ~~~~~~~~~~~~~~~~~~~~^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 410, in get_prep_lookup + return super().get_prep_lookup() + ~~~~~~~~~~~~~~~~~~~~~~~^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 96, in get_prep_lookup + return self.lhs.output_field.get_prep_value(self.rhs) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\fields\__init__.py", line 2130, in get_prep_value + raise e.__class__( + "Field '%s' expected a number but got %r." % (self.name, value), + ) from e +ValueError: Field 'id' expected a number but got ''. +[ERROR][2025-05-07 10:43:15,766][log.py:248]Internal Server Error: /api/project/getDesignDemandList +[WARNING][2025-05-07 10:43:54,656][operation.py:133]"GET - DesignController[get_design_list] /api/project/getDesignDemandList" ("Field 'id' expected a number but got ''.",) +[ERROR][2025-05-07 10:43:54,656][errors.py:131]Field 'id' expected a number but got ''. +Traceback (most recent call last): + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\fields\__init__.py", line 2128, in get_prep_value + return int(value) +ValueError: invalid literal for int() with base 10: '' + +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 214, 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 99, in as_view + result = self.route.view_func( + ctx.controller_instance, *args, **ctx.view_func_kwargs + ) + File "D:\python13\Lib\contextlib.py", line 85, in inner + return func(*args, **kwds) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja\pagination.py", line 250, in view_with_pagination + items = func(request, **kwargs) + File "E:\pycharmProjects\cdtestplant_v1\apps\project\controllers\design.py", line 29, in get_design_list + qs = Design.objects.filter(project__id=datafilter.project_id, dut__key=dut_key, + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ident__icontains=datafilter.ident, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + name__icontains=datafilter.name, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + demandType__contains=datafilter.demandType, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + chapter__icontains=datafilter.chapter).order_by('id') + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + 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 1481, in filter + return self._filter_or_exclude(False, args, kwargs) + ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 1499, in _filter_or_exclude + clone._filter_or_exclude_inplace(negate, args, kwargs) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 1506, in _filter_or_exclude_inplace + self._query.add_q(Q(*args, **kwargs)) + ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1643, in add_q + clause, _ = self._add_q(q_object, can_reuse) + ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1675, in _add_q + child_clause, needed_inner = self.build_filter( + ~~~~~~~~~~~~~~~~~^ + child, + ^^^^^^ + ...<7 lines>... + update_join_types=update_join_types, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1585, in build_filter + condition = self.build_lookup(lookups, col, value) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1412, in build_lookup + lookup = lookup_class(lhs, rhs) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 38, in __init__ + self.rhs = self.get_prep_lookup() + ~~~~~~~~~~~~~~~~~~~~^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 410, in get_prep_lookup + return super().get_prep_lookup() + ~~~~~~~~~~~~~~~~~~~~~~~^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 96, in get_prep_lookup + return self.lhs.output_field.get_prep_value(self.rhs) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\fields\__init__.py", line 2130, in get_prep_value + raise e.__class__( + "Field '%s' expected a number but got %r." % (self.name, value), + ) from e +ValueError: Field 'id' expected a number but got ''. +[ERROR][2025-05-07 10:43:54,672][log.py:248]Internal Server Error: /api/project/getDesignDemandList +[WARNING][2025-05-07 10:43:58,694][operation.py:133]"GET - DesignController[get_design_list] /api/project/getDesignDemandList" ("Field 'id' expected a number but got ''.",) +[ERROR][2025-05-07 10:43:58,694][errors.py:131]Field 'id' expected a number but got ''. +Traceback (most recent call last): + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\fields\__init__.py", line 2128, in get_prep_value + return int(value) +ValueError: invalid literal for int() with base 10: '' + +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 214, 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 99, in as_view + result = self.route.view_func( + ctx.controller_instance, *args, **ctx.view_func_kwargs + ) + File "D:\python13\Lib\contextlib.py", line 85, in inner + return func(*args, **kwds) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja\pagination.py", line 250, in view_with_pagination + items = func(request, **kwargs) + File "E:\pycharmProjects\cdtestplant_v1\apps\project\controllers\design.py", line 29, in get_design_list + qs = Design.objects.filter(project__id=datafilter.project_id, dut__key=dut_key, + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ident__icontains=datafilter.ident, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + name__icontains=datafilter.name, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + demandType__contains=datafilter.demandType, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + chapter__icontains=datafilter.chapter).order_by('id') + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + 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 1481, in filter + return self._filter_or_exclude(False, args, kwargs) + ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 1499, in _filter_or_exclude + clone._filter_or_exclude_inplace(negate, args, kwargs) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 1506, in _filter_or_exclude_inplace + self._query.add_q(Q(*args, **kwargs)) + ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1643, in add_q + clause, _ = self._add_q(q_object, can_reuse) + ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1675, in _add_q + child_clause, needed_inner = self.build_filter( + ~~~~~~~~~~~~~~~~~^ + child, + ^^^^^^ + ...<7 lines>... + update_join_types=update_join_types, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1585, in build_filter + condition = self.build_lookup(lookups, col, value) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1412, in build_lookup + lookup = lookup_class(lhs, rhs) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 38, in __init__ + self.rhs = self.get_prep_lookup() + ~~~~~~~~~~~~~~~~~~~~^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 410, in get_prep_lookup + return super().get_prep_lookup() + ~~~~~~~~~~~~~~~~~~~~~~~^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 96, in get_prep_lookup + return self.lhs.output_field.get_prep_value(self.rhs) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\fields\__init__.py", line 2130, in get_prep_value + raise e.__class__( + "Field '%s' expected a number but got %r." % (self.name, value), + ) from e +ValueError: Field 'id' expected a number but got ''. +[ERROR][2025-05-07 10:43:58,702][log.py:248]Internal Server Error: /api/project/getDesignDemandList +[WARNING][2025-05-07 10:44:10,283][operation.py:133]"GET - DesignController[get_design_list] /api/project/getDesignDemandList" ("Field 'id' expected a number but got ''.",) +[ERROR][2025-05-07 10:44:10,283][errors.py:131]Field 'id' expected a number but got ''. +Traceback (most recent call last): + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\fields\__init__.py", line 2128, in get_prep_value + return int(value) +ValueError: invalid literal for int() with base 10: '' + +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 214, 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 99, in as_view + result = self.route.view_func( + ctx.controller_instance, *args, **ctx.view_func_kwargs + ) + File "D:\python13\Lib\contextlib.py", line 85, in inner + return func(*args, **kwds) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja\pagination.py", line 250, in view_with_pagination + items = func(request, **kwargs) + File "E:\pycharmProjects\cdtestplant_v1\apps\project\controllers\design.py", line 29, in get_design_list + qs = Design.objects.filter(project__id=datafilter.project_id, dut__key=dut_key, + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ident__icontains=datafilter.ident, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + name__icontains=datafilter.name, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + demandType__contains=datafilter.demandType, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + chapter__icontains=datafilter.chapter).order_by('id') + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + 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 1481, in filter + return self._filter_or_exclude(False, args, kwargs) + ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 1499, in _filter_or_exclude + clone._filter_or_exclude_inplace(negate, args, kwargs) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 1506, in _filter_or_exclude_inplace + self._query.add_q(Q(*args, **kwargs)) + ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1643, in add_q + clause, _ = self._add_q(q_object, can_reuse) + ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1675, in _add_q + child_clause, needed_inner = self.build_filter( + ~~~~~~~~~~~~~~~~~^ + child, + ^^^^^^ + ...<7 lines>... + update_join_types=update_join_types, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1585, in build_filter + condition = self.build_lookup(lookups, col, value) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1412, in build_lookup + lookup = lookup_class(lhs, rhs) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 38, in __init__ + self.rhs = self.get_prep_lookup() + ~~~~~~~~~~~~~~~~~~~~^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 410, in get_prep_lookup + return super().get_prep_lookup() + ~~~~~~~~~~~~~~~~~~~~~~~^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 96, in get_prep_lookup + return self.lhs.output_field.get_prep_value(self.rhs) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\fields\__init__.py", line 2130, in get_prep_value + raise e.__class__( + "Field '%s' expected a number but got %r." % (self.name, value), + ) from e +ValueError: Field 'id' expected a number but got ''. +[ERROR][2025-05-07 10:44:10,300][log.py:248]Internal Server Error: /api/project/getDesignDemandList +[WARNING][2025-05-07 10:44:11,311][operation.py:133]"GET - DesignController[get_design_list] /api/project/getDesignDemandList" ("Field 'id' expected a number but got ''.",) +[ERROR][2025-05-07 10:44:11,311][errors.py:131]Field 'id' expected a number but got ''. +Traceback (most recent call last): + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\fields\__init__.py", line 2128, in get_prep_value + return int(value) +ValueError: invalid literal for int() with base 10: '' + +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 214, 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 99, in as_view + result = self.route.view_func( + ctx.controller_instance, *args, **ctx.view_func_kwargs + ) + File "D:\python13\Lib\contextlib.py", line 85, in inner + return func(*args, **kwds) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja\pagination.py", line 250, in view_with_pagination + items = func(request, **kwargs) + File "E:\pycharmProjects\cdtestplant_v1\apps\project\controllers\design.py", line 29, in get_design_list + qs = Design.objects.filter(project__id=datafilter.project_id, dut__key=dut_key, + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ident__icontains=datafilter.ident, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + name__icontains=datafilter.name, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + demandType__contains=datafilter.demandType, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + chapter__icontains=datafilter.chapter).order_by('id') + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + 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 1481, in filter + return self._filter_or_exclude(False, args, kwargs) + ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 1499, in _filter_or_exclude + clone._filter_or_exclude_inplace(negate, args, kwargs) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 1506, in _filter_or_exclude_inplace + self._query.add_q(Q(*args, **kwargs)) + ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1643, in add_q + clause, _ = self._add_q(q_object, can_reuse) + ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1675, in _add_q + child_clause, needed_inner = self.build_filter( + ~~~~~~~~~~~~~~~~~^ + child, + ^^^^^^ + ...<7 lines>... + update_join_types=update_join_types, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1585, in build_filter + condition = self.build_lookup(lookups, col, value) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1412, in build_lookup + lookup = lookup_class(lhs, rhs) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 38, in __init__ + self.rhs = self.get_prep_lookup() + ~~~~~~~~~~~~~~~~~~~~^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 410, in get_prep_lookup + return super().get_prep_lookup() + ~~~~~~~~~~~~~~~~~~~~~~~^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 96, in get_prep_lookup + return self.lhs.output_field.get_prep_value(self.rhs) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\fields\__init__.py", line 2130, in get_prep_value + raise e.__class__( + "Field '%s' expected a number but got %r." % (self.name, value), + ) from e +ValueError: Field 'id' expected a number but got ''. +[ERROR][2025-05-07 10:44:11,324][log.py:248]Internal Server Error: /api/project/getDesignDemandList +[WARNING][2025-05-07 10:44:15,269][operation.py:133]"GET - DesignController[get_design_list] /api/project/getDesignDemandList" ("Field 'id' expected a number but got ''.",) +[ERROR][2025-05-07 10:44:15,269][errors.py:131]Field 'id' expected a number but got ''. +Traceback (most recent call last): + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\fields\__init__.py", line 2128, in get_prep_value + return int(value) +ValueError: invalid literal for int() with base 10: '' + +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 214, 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 99, in as_view + result = self.route.view_func( + ctx.controller_instance, *args, **ctx.view_func_kwargs + ) + File "D:\python13\Lib\contextlib.py", line 85, in inner + return func(*args, **kwds) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja\pagination.py", line 250, in view_with_pagination + items = func(request, **kwargs) + File "E:\pycharmProjects\cdtestplant_v1\apps\project\controllers\design.py", line 29, in get_design_list + qs = Design.objects.filter(project__id=datafilter.project_id, dut__key=dut_key, + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ident__icontains=datafilter.ident, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + name__icontains=datafilter.name, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + demandType__contains=datafilter.demandType, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + chapter__icontains=datafilter.chapter).order_by('id') + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + 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 1481, in filter + return self._filter_or_exclude(False, args, kwargs) + ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 1499, in _filter_or_exclude + clone._filter_or_exclude_inplace(negate, args, kwargs) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 1506, in _filter_or_exclude_inplace + self._query.add_q(Q(*args, **kwargs)) + ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1643, in add_q + clause, _ = self._add_q(q_object, can_reuse) + ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1675, in _add_q + child_clause, needed_inner = self.build_filter( + ~~~~~~~~~~~~~~~~~^ + child, + ^^^^^^ + ...<7 lines>... + update_join_types=update_join_types, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1585, in build_filter + condition = self.build_lookup(lookups, col, value) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1412, in build_lookup + lookup = lookup_class(lhs, rhs) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 38, in __init__ + self.rhs = self.get_prep_lookup() + ~~~~~~~~~~~~~~~~~~~~^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 410, in get_prep_lookup + return super().get_prep_lookup() + ~~~~~~~~~~~~~~~~~~~~~~~^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 96, in get_prep_lookup + return self.lhs.output_field.get_prep_value(self.rhs) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\fields\__init__.py", line 2130, in get_prep_value + raise e.__class__( + "Field '%s' expected a number but got %r." % (self.name, value), + ) from e +ValueError: Field 'id' expected a number but got ''. +[ERROR][2025-05-07 10:44:15,279][log.py:248]Internal Server Error: /api/project/getDesignDemandList +[WARNING][2025-05-07 10:44:19,303][operation.py:133]"GET - DesignController[get_design_list] /api/project/getDesignDemandList" ("Field 'id' expected a number but got ''.",) +[ERROR][2025-05-07 10:44:19,303][errors.py:131]Field 'id' expected a number but got ''. +Traceback (most recent call last): + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\fields\__init__.py", line 2128, in get_prep_value + return int(value) +ValueError: invalid literal for int() with base 10: '' + +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 214, 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 99, in as_view + result = self.route.view_func( + ctx.controller_instance, *args, **ctx.view_func_kwargs + ) + File "D:\python13\Lib\contextlib.py", line 85, in inner + return func(*args, **kwds) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja\pagination.py", line 250, in view_with_pagination + items = func(request, **kwargs) + File "E:\pycharmProjects\cdtestplant_v1\apps\project\controllers\design.py", line 29, in get_design_list + qs = Design.objects.filter(project__id=datafilter.project_id, dut__key=dut_key, + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ident__icontains=datafilter.ident, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + name__icontains=datafilter.name, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + demandType__contains=datafilter.demandType, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + chapter__icontains=datafilter.chapter).order_by('id') + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + 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 1481, in filter + return self._filter_or_exclude(False, args, kwargs) + ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 1499, in _filter_or_exclude + clone._filter_or_exclude_inplace(negate, args, kwargs) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 1506, in _filter_or_exclude_inplace + self._query.add_q(Q(*args, **kwargs)) + ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1643, in add_q + clause, _ = self._add_q(q_object, can_reuse) + ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1675, in _add_q + child_clause, needed_inner = self.build_filter( + ~~~~~~~~~~~~~~~~~^ + child, + ^^^^^^ + ...<7 lines>... + update_join_types=update_join_types, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1585, in build_filter + condition = self.build_lookup(lookups, col, value) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1412, in build_lookup + lookup = lookup_class(lhs, rhs) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 38, in __init__ + self.rhs = self.get_prep_lookup() + ~~~~~~~~~~~~~~~~~~~~^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 410, in get_prep_lookup + return super().get_prep_lookup() + ~~~~~~~~~~~~~~~~~~~~~~~^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 96, in get_prep_lookup + return self.lhs.output_field.get_prep_value(self.rhs) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\fields\__init__.py", line 2130, in get_prep_value + raise e.__class__( + "Field '%s' expected a number but got %r." % (self.name, value), + ) from e +ValueError: Field 'id' expected a number but got ''. +[ERROR][2025-05-07 10:44:19,318][log.py:248]Internal Server Error: /api/project/getDesignDemandList +[WARNING][2025-05-07 10:45:08,818][operation.py:133]"GET - DesignController[get_design_list] /api/project/getDesignDemandList" ("Field 'id' expected a number but got ''.",) +[ERROR][2025-05-07 10:45:08,818][errors.py:131]Field 'id' expected a number but got ''. +Traceback (most recent call last): + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\fields\__init__.py", line 2128, in get_prep_value + return int(value) +ValueError: invalid literal for int() with base 10: '' + +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 214, 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 99, in as_view + result = self.route.view_func( + ctx.controller_instance, *args, **ctx.view_func_kwargs + ) + File "D:\python13\Lib\contextlib.py", line 85, in inner + return func(*args, **kwds) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja\pagination.py", line 250, in view_with_pagination + items = func(request, **kwargs) + File "E:\pycharmProjects\cdtestplant_v1\apps\project\controllers\design.py", line 29, in get_design_list + qs = Design.objects.filter(project__id=datafilter.project_id, dut__key=dut_key, + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ident__icontains=datafilter.ident, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + name__icontains=datafilter.name, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + demandType__contains=datafilter.demandType, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + chapter__icontains=datafilter.chapter).order_by('id') + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + 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 1481, in filter + return self._filter_or_exclude(False, args, kwargs) + ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 1499, in _filter_or_exclude + clone._filter_or_exclude_inplace(negate, args, kwargs) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 1506, in _filter_or_exclude_inplace + self._query.add_q(Q(*args, **kwargs)) + ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1643, in add_q + clause, _ = self._add_q(q_object, can_reuse) + ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1675, in _add_q + child_clause, needed_inner = self.build_filter( + ~~~~~~~~~~~~~~~~~^ + child, + ^^^^^^ + ...<7 lines>... + update_join_types=update_join_types, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1585, in build_filter + condition = self.build_lookup(lookups, col, value) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1412, in build_lookup + lookup = lookup_class(lhs, rhs) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 38, in __init__ + self.rhs = self.get_prep_lookup() + ~~~~~~~~~~~~~~~~~~~~^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 410, in get_prep_lookup + return super().get_prep_lookup() + ~~~~~~~~~~~~~~~~~~~~~~~^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 96, in get_prep_lookup + return self.lhs.output_field.get_prep_value(self.rhs) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\fields\__init__.py", line 2130, in get_prep_value + raise e.__class__( + "Field '%s' expected a number but got %r." % (self.name, value), + ) from e +ValueError: Field 'id' expected a number but got ''. +[ERROR][2025-05-07 10:45:08,822][log.py:248]Internal Server Error: /api/project/getDesignDemandList +[WARNING][2025-05-07 10:45:09,957][operation.py:133]"GET - DesignController[get_design_list] /api/project/getDesignDemandList" ("Field 'id' expected a number but got ''.",) +[ERROR][2025-05-07 10:45:09,957][errors.py:131]Field 'id' expected a number but got ''. +Traceback (most recent call last): + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\fields\__init__.py", line 2128, in get_prep_value + return int(value) +ValueError: invalid literal for int() with base 10: '' + +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 214, 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 99, in as_view + result = self.route.view_func( + ctx.controller_instance, *args, **ctx.view_func_kwargs + ) + File "D:\python13\Lib\contextlib.py", line 85, in inner + return func(*args, **kwds) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja\pagination.py", line 250, in view_with_pagination + items = func(request, **kwargs) + File "E:\pycharmProjects\cdtestplant_v1\apps\project\controllers\design.py", line 29, in get_design_list + qs = Design.objects.filter(project__id=datafilter.project_id, dut__key=dut_key, + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ident__icontains=datafilter.ident, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + name__icontains=datafilter.name, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + demandType__contains=datafilter.demandType, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + chapter__icontains=datafilter.chapter).order_by('id') + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + 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 1481, in filter + return self._filter_or_exclude(False, args, kwargs) + ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 1499, in _filter_or_exclude + clone._filter_or_exclude_inplace(negate, args, kwargs) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 1506, in _filter_or_exclude_inplace + self._query.add_q(Q(*args, **kwargs)) + ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1643, in add_q + clause, _ = self._add_q(q_object, can_reuse) + ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1675, in _add_q + child_clause, needed_inner = self.build_filter( + ~~~~~~~~~~~~~~~~~^ + child, + ^^^^^^ + ...<7 lines>... + update_join_types=update_join_types, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1585, in build_filter + condition = self.build_lookup(lookups, col, value) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1412, in build_lookup + lookup = lookup_class(lhs, rhs) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 38, in __init__ + self.rhs = self.get_prep_lookup() + ~~~~~~~~~~~~~~~~~~~~^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 410, in get_prep_lookup + return super().get_prep_lookup() + ~~~~~~~~~~~~~~~~~~~~~~~^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 96, in get_prep_lookup + return self.lhs.output_field.get_prep_value(self.rhs) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\fields\__init__.py", line 2130, in get_prep_value + raise e.__class__( + "Field '%s' expected a number but got %r." % (self.name, value), + ) from e +ValueError: Field 'id' expected a number but got ''. +[ERROR][2025-05-07 10:45:09,962][log.py:248]Internal Server Error: /api/project/getDesignDemandList +[WARNING][2025-05-07 10:45:10,976][operation.py:133]"GET - DesignController[get_design_list] /api/project/getDesignDemandList" ("Field 'id' expected a number but got ''.",) +[ERROR][2025-05-07 10:45:10,976][errors.py:131]Field 'id' expected a number but got ''. +Traceback (most recent call last): + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\fields\__init__.py", line 2128, in get_prep_value + return int(value) +ValueError: invalid literal for int() with base 10: '' + +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 214, 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 99, in as_view + result = self.route.view_func( + ctx.controller_instance, *args, **ctx.view_func_kwargs + ) + File "D:\python13\Lib\contextlib.py", line 85, in inner + return func(*args, **kwds) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja\pagination.py", line 250, in view_with_pagination + items = func(request, **kwargs) + File "E:\pycharmProjects\cdtestplant_v1\apps\project\controllers\design.py", line 29, in get_design_list + qs = Design.objects.filter(project__id=datafilter.project_id, dut__key=dut_key, + ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ident__icontains=datafilter.ident, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + name__icontains=datafilter.name, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + demandType__contains=datafilter.demandType, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + chapter__icontains=datafilter.chapter).order_by('id') + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + 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 1481, in filter + return self._filter_or_exclude(False, args, kwargs) + ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 1499, in _filter_or_exclude + clone._filter_or_exclude_inplace(negate, args, kwargs) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 1506, in _filter_or_exclude_inplace + self._query.add_q(Q(*args, **kwargs)) + ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1643, in add_q + clause, _ = self._add_q(q_object, can_reuse) + ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1675, in _add_q + child_clause, needed_inner = self.build_filter( + ~~~~~~~~~~~~~~~~~^ + child, + ^^^^^^ + ...<7 lines>... + update_join_types=update_join_types, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1585, in build_filter + condition = self.build_lookup(lookups, col, value) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1412, in build_lookup + lookup = lookup_class(lhs, rhs) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 38, in __init__ + self.rhs = self.get_prep_lookup() + ~~~~~~~~~~~~~~~~~~~~^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 410, in get_prep_lookup + return super().get_prep_lookup() + ~~~~~~~~~~~~~~~~~~~~~~~^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\lookups.py", line 96, in get_prep_lookup + return self.lhs.output_field.get_prep_value(self.rhs) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\fields\__init__.py", line 2130, in get_prep_value + raise e.__class__( + "Field '%s' expected a number but got %r." % (self.name, value), + ) from e +ValueError: Field 'id' expected a number but got ''. +[ERROR][2025-05-07 10:45:10,984][log.py:248]Internal Server Error: /api/project/getDesignDemandList +[WARNING][2025-05-07 16:13:06,500][log.py:248]Not Found: /api/project/getDesignOne/ +[WARNING][2025-05-07 16:13:43,229][log.py:248]Not Found: /api/project/getDesignOne/ +[WARNING][2025-05-07 16:13:48,127][log.py:248]Not Found: /api/project/getDesignOne/ +[WARNING][2025-05-07 16:14:16,225][log.py:248]Not Found: /api/project/getDesignOneById/ +[WARNING][2025-05-07 16:14:19,648][log.py:248]Not Found: /api/project/getDesignOneById/ +[WARNING][2025-05-07 16:14:49,096][operation.py:133]"GET - DesignController[get_one_by_id] /api/project/getDesignOneById" ([{'type': 'missing', 'loc': ('query', 'id'), 'msg': 'Field required'}],) +[WARNING][2025-05-07 16:14:49,104][log.py:248]Unprocessable Content: /api/project/getDesignOneById +[WARNING][2025-05-07 16:14:51,607][operation.py:133]"GET - DesignController[get_one_by_id] /api/project/getDesignOneById" ([{'type': 'missing', 'loc': ('query', 'id'), 'msg': 'Field required'}],) +[WARNING][2025-05-07 16:14:51,615][log.py:248]Unprocessable Content: /api/project/getDesignOneById +[WARNING][2025-05-07 16:15:37,031][operation.py:133]"GET - DesignController[get_one_by_id] /api/project/getDesignOneById" ([{'type': 'missing', 'loc': ('query', 'id'), 'msg': 'Field required'}],) +[WARNING][2025-05-07 16:15:37,042][log.py:248]Unprocessable Content: /api/project/getDesignOneById +[WARNING][2025-05-07 16:16:34,955][operation.py:133]"GET - DesignController[get_one_by_id] /api/project/getDesignOneById" ([{'type': 'missing', 'loc': ('query', 'id'), 'msg': 'Field required'}],) +[WARNING][2025-05-07 16:16:34,965][log.py:248]Unprocessable Content: /api/project/getDesignOneById +[WARNING][2025-05-07 16:16:40,964][operation.py:133]"GET - DesignController[get_one_by_id] /api/project/getDesignOneById" ([{'type': 'missing', 'loc': ('query', 'id'), 'msg': 'Field required'}],) +[WARNING][2025-05-07 16:16:40,974][log.py:248]Unprocessable Content: /api/project/getDesignOneById +[WARNING][2025-05-07 16:17:41,825][log.py:248]Not Found: /api/project/getDesignOneById/ +[WARNING][2025-05-07 16:17:45,267][log.py:248]Not Found: /api/project/getDesignOneById/ +[WARNING][2025-05-07 16:39:33,136][operation.py:133]"PUT - DesignController[update_design] /api/project/editDesignDemand/37" ([{'type': 'missing', 'loc': ('body', 'payload', 'round'), 'msg': 'Field required'}, {'type': 'missing', 'loc': ('body', 'payload', 'dut'), 'msg': 'Field required'}],) +[WARNING][2025-05-07 16:39:33,143][log.py:248]Unprocessable Content: /api/project/editDesignDemand/37 +[WARNING][2025-05-07 16:40:10,302][operation.py:133]"PUT - DesignController[update_design] /api/project/editDesignDemand/37" ([{'type': 'missing', 'loc': ('body', 'payload', 'round'), 'msg': 'Field required'}, {'type': 'missing', 'loc': ('body', 'payload', 'dut'), 'msg': 'Field required'}],) +[WARNING][2025-05-07 16:40:10,311][log.py:248]Unprocessable Content: /api/project/editDesignDemand/37 +[WARNING][2025-05-07 16:41:28,050][operation.py:133]"PUT - DesignController[update_design] /api/project/editDesignDemand/37" ([{'type': 'missing', 'loc': ('body', 'payload', 'round'), 'msg': 'Field required'}, {'type': 'missing', 'loc': ('body', 'payload', 'dut'), 'msg': 'Field required'}],) +[WARNING][2025-05-07 16:41:28,057][log.py:248]Unprocessable Content: /api/project/editDesignDemand/37 +[WARNING][2025-05-07 16:43:33,756][operation.py:133]"PUT - DesignController[update_design] /api/project/editDesignDemand/37" ('Design matching query does not exist.',) +[ERROR][2025-05-07 16:43:33,756][errors.py:131]Design matching query does not exist. +Traceback (most recent call last): + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\operation.py", line 214, 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 99, in as_view + result = self.route.view_func( + ctx.controller_instance, *args, **ctx.view_func_kwargs + ) + File "D:\python13\Lib\contextlib.py", line 85, in inner + return func(*args, **kwds) + File "E:\pycharmProjects\cdtestplant_v1\apps\project\controllers\design.py", line 122, in update_design + design_qs = Design.objects.get(id=id) + 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 633, in get + raise self.model.DoesNotExist( + "%s matching query does not exist." % self.model._meta.object_name + ) +apps.project.models.Design.DoesNotExist: Design matching query does not exist. +[ERROR][2025-05-07 16:43:33,786][log.py:248]Internal Server Error: /api/project/editDesignDemand/37 +[WARNING][2025-05-07 19:40:06,745][operation.py:133]"PUT - DesignController[update_design] /api/project/editDesignDemand/3785" ([{'type': 'string_type', 'loc': ('body', 'payload', 'dut'), 'msg': 'Input should be a valid string'}],) +[WARNING][2025-05-07 19:40:06,755][log.py:248]Unprocessable Content: /api/project/editDesignDemand/3785 +[WARNING][2025-05-07 19:40:11,148][operation.py:133]"PUT - DesignController[update_design] /api/project/editDesignDemand/3786" ([{'type': 'string_type', 'loc': ('body', 'payload', 'dut'), 'msg': 'Input should be a valid string'}],) +[WARNING][2025-05-07 19:40:11,157][log.py:248]Unprocessable Content: /api/project/editDesignDemand/3786 +[WARNING][2025-05-07 19:40:14,499][operation.py:133]"PUT - DesignController[update_design] /api/project/editDesignDemand/3787" ([{'type': 'string_type', 'loc': ('body', 'payload', 'dut'), 'msg': 'Input should be a valid string'}],) +[WARNING][2025-05-07 19:40:14,509][log.py:248]Unprocessable Content: /api/project/editDesignDemand/3787 +[WARNING][2025-05-07 19:40:19,211][operation.py:133]"PUT - DesignController[update_design] /api/project/editDesignDemand/3786" ([{'type': 'string_type', 'loc': ('body', 'payload', 'dut'), 'msg': 'Input should be a valid string'}],) +[WARNING][2025-05-07 19:40:19,223][log.py:248]Unprocessable Content: /api/project/editDesignDemand/3786 +[WARNING][2025-05-07 19:40:42,463][operation.py:133]"PUT - DesignController[update_design] /api/project/editDesignDemand/3785" ([{'type': 'string_type', 'loc': ('body', 'payload', 'dut'), 'msg': 'Input should be a valid string'}],) +[WARNING][2025-05-07 19:40:42,473][log.py:248]Unprocessable Content: /api/project/editDesignDemand/3785 +[WARNING][2025-05-07 19:42:17,215][operation.py:133]"PUT - DesignController[update_design] /api/project/editDesignDemand/3785" ([{'type': 'string_type', 'loc': ('body', 'payload', 'dut'), 'msg': 'Input should be a valid string'}],) +[WARNING][2025-05-07 19:42:17,223][log.py:248]Unprocessable Content: /api/project/editDesignDemand/3785 +[WARNING][2025-05-07 19:55:56,930][operation.py:133]"PUT - DesignController[update_design] /api/project/editDesignDemand/3785" ([{'type': 'string_type', 'loc': ('body', 'payload', 'dut'), 'msg': 'Input should be a valid string'}],) +[WARNING][2025-05-07 19:55:56,937][log.py:248]Unprocessable Content: /api/project/editDesignDemand/3785 +[WARNING][2025-05-07 19:56:20,666][operation.py:133]"PUT - DesignController[update_design] /api/project/editDesignDemand/3785" ([{'type': 'string_type', 'loc': ('body', 'payload', 'dut'), 'msg': 'Input should be a valid string'}],) +[WARNING][2025-05-07 19:56:20,676][log.py:248]Unprocessable Content: /api/project/editDesignDemand/3785 +[WARNING][2025-05-07 19:57:24,262][operation.py:133]"PUT - DesignController[update_design] /api/project/editDesignDemand/3785" ([{'type': 'string_type', 'loc': ('body', 'payload', 'dut'), 'msg': 'Input should be a valid string'}],) +[WARNING][2025-05-07 19:57:24,272][log.py:248]Unprocessable Content: /api/project/editDesignDemand/3785 +[WARNING][2025-05-08 09:04:45,795][log.py:248]Unauthorized: /api/system/getInfo +[WARNING][2025-05-08 09:04:45,865][log.py:248]Unauthorized: /api/system/logout +[WARNING][2025-05-08 09:04:53,523][backend.py:91]Caught LDAPError looking up user: SERVER_DOWN({'result': -1, 'desc': "Can't contact LDAP server", 'ctrls': []}) +[WARNING][2025-05-08 19:02:43,430][log.py:248]Not Found: /api/project/designDemand/replace/ +[WARNING][2025-05-08 19:21:09,059][operation.py:133]"POST - DesignController[replace_content] /api/project/designDemand/replace/" ("'ReplaceDesignContentSchema' object has no attribute 'id'",) +[ERROR][2025-05-08 19:21:09,059][errors.py:131]'ReplaceDesignContentSchema' object has no attribute 'id' +Traceback (most recent call last): + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\operation.py", line 214, 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 99, in as_view + result = self.route.view_func( + ctx.controller_instance, *args, **ctx.view_func_kwargs + ) + File "D:\python13\Lib\contextlib.py", line 85, in inner + return func(*args, **kwds) + File "E:\pycharmProjects\cdtestplant_v1\apps\project\controllers\design.py", line 179, in replace_content + project_obj = get_object_or_404(Project, id=payload.id) + ^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\pydantic\main.py", line 994, in __getattr__ + raise AttributeError(f'{type(self).__name__!r} object has no attribute {item!r}') +AttributeError: 'ReplaceDesignContentSchema' object has no attribute 'id' +[ERROR][2025-05-08 19:21:09,096][log.py:248]Internal Server Error: /api/project/designDemand/replace/ +[WARNING][2025-05-08 19:32:22,476][operation.py:133]"POST - DesignController[replace_content] /api/project/designDemand/replace/" ("Cannot resolve keyword '依据相关' into field. Choices are: chapter, create_datetime, dcQuery, demandType, description, dtQuery, dut, dut_id, id, ident, key, level, name, odQuery, project, project_id, protocal, remark, round, round_id, sort, source, title, to, type, update_datetime",) +[ERROR][2025-05-08 19:32:22,476][errors.py:131]Cannot resolve keyword '依据相关' into field. Choices are: chapter, create_datetime, dcQuery, demandType, description, dtQuery, dut, dut_id, id, ident, key, level, name, odQuery, project, project_id, protocal, remark, round, round_id, sort, source, title, to, type, update_datetime +Traceback (most recent call last): + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\operation.py", line 214, 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 99, in as_view + result = self.route.view_func( + ctx.controller_instance, *args, **ctx.view_func_kwargs + ) + File "D:\python13\Lib\contextlib.py", line 85, in inner + return func(*args, **kwds) + File "E:\pycharmProjects\cdtestplant_v1\apps\project\controllers\design.py", line 189, in replace_content + design_qs.update(**replace_kwargs) + ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\query.py", line 1233, in update + query.add_update_values(kwargs) + ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\subqueries.py", line 106, in add_update_values + return self.add_update_fields(values_seq) + ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\subqueries.py", line 120, in add_update_fields + val = val.resolve_expression(self, allow_joins=False, for_save=True) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\expressions.py", line 300, in resolve_expression + expr.resolve_expression(query, allow_joins, reuse, summarize) + ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\expressions.py", line 902, in resolve_expression + return query.resolve_ref(self.name, allow_joins, reuse, summarize) + ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 2046, in resolve_ref + join_info = self.setup_joins( + field_list, self.get_meta(), self.get_initial_alias(), can_reuse=reuse + ) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1897, in setup_joins + path, final_field, targets, rest = self.names_to_path( + ~~~~~~~~~~~~~~~~~~^ + names[:pivot], + ^^^^^^^^^^^^^^ + ...<2 lines>... + fail_on_missing=True, + ^^^^^^^^^^^^^^^^^^^^^ + ) + ^ + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\django\db\models\sql\query.py", line 1802, in names_to_path + raise FieldError( + ...<2 lines>... + ) +django.core.exceptions.FieldError: Cannot resolve keyword '依据相关' into field. Choices are: chapter, create_datetime, dcQuery, demandType, description, dtQuery, dut, dut_id, id, ident, key, level, name, odQuery, project, project_id, protocal, remark, round, round_id, sort, source, title, to, type, update_datetime +[ERROR][2025-05-08 19:32:22,516][log.py:248]Internal Server Error: /api/project/designDemand/replace/ +[WARNING][2025-05-09 09:33:16,083][log.py:248]Unauthorized: /api/system/getInfo +[WARNING][2025-05-09 09:33:16,194][log.py:248]Unauthorized: /api/system/logout +[WARNING][2025-05-09 09:33:27,023][backend.py:91]Caught LDAPError looking up user: SERVER_DOWN({'result': -1, 'desc': "Can't contact LDAP server", 'ctrls': []}) +[WARNING][2025-05-09 14:09:52,149][operation.py:133]"GET - DictController[get_dict] /api/system/dataDict/list" ([{'type': 'missing', 'loc': ('query', 'code'), 'msg': 'Field required'}],) +[WARNING][2025-05-09 14:09:52,149][log.py:248]Unprocessable Content: /api/system/dataDict/list +[WARNING][2025-05-09 14:09:55,442][operation.py:133]"GET - DictController[get_dict] /api/system/dataDict/list" ([{'type': 'missing', 'loc': ('query', 'code'), 'msg': 'Field required'}],) +[WARNING][2025-05-09 14:09:55,445][log.py:248]Unprocessable Content: /api/system/dataDict/list +[WARNING][2025-05-09 18:07:30,266][operation.py:133]"PUT - TestDemandController[update_testDemand] /api/project/testDemand/update/538" ([{'type': 'missing', 'loc': ('body', 'payload', 'designDemand'), 'msg': 'Field required'}],) +[WARNING][2025-05-09 18:07:30,274][log.py:248]Unprocessable Content: /api/project/testDemand/update/538 +[WARNING][2025-05-09 19:04:22,972][operation.py:133]"GET - TestDemandController[get_test_demand_list] /api/project/getTestDemandList" () +[ERROR][2025-05-09 19:04:22,972][errors.py:131]1 validation error for NinjaResponseSchema +response.items.0.design + Input should be a valid list [type=list_type, input_value=, input_type=Design] + For further information visit https://errors.pydantic.dev/2.11/v/list_type +Traceback (most recent call last): + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\operation.py", line 216, in run + _processed_results = self._result_to_response( + request, result, ctx.response + ) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja\operation.py", line 280, in _result_to_response + validated_object = response_model.model_validate( + resp_object, context={"request": request, "response_status": status} + ) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\pydantic\main.py", line 703, in model_validate + return cls.__pydantic_validator__.validate_python( + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ + obj, strict=strict, from_attributes=from_attributes, context=context, by_alias=by_alias, by_name=by_name + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ +pydantic_core._pydantic_core.ValidationError: 1 validation error for NinjaResponseSchema +response.items.0.design + Input should be a valid list [type=list_type, input_value=, input_type=Design] + For further information visit https://errors.pydantic.dev/2.11/v/list_type +[ERROR][2025-05-09 19:04:23,013][log.py:248]Internal Server Error: /api/project/getTestDemandList +[WARNING][2025-05-09 19:04:34,284][operation.py:133]"GET - TestDemandController[get_test_demand_list] /api/project/getTestDemandList" () +[ERROR][2025-05-09 19:04:34,284][errors.py:131]1 validation error for NinjaResponseSchema +response.items.0.design + Input should be a valid list [type=list_type, input_value=, input_type=Design] + For further information visit https://errors.pydantic.dev/2.11/v/list_type +Traceback (most recent call last): + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\operation.py", line 216, in run + _processed_results = self._result_to_response( + request, result, ctx.response + ) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja\operation.py", line 280, in _result_to_response + validated_object = response_model.model_validate( + resp_object, context={"request": request, "response_status": status} + ) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\pydantic\main.py", line 703, in model_validate + return cls.__pydantic_validator__.validate_python( + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ + obj, strict=strict, from_attributes=from_attributes, context=context, by_alias=by_alias, by_name=by_name + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ +pydantic_core._pydantic_core.ValidationError: 1 validation error for NinjaResponseSchema +response.items.0.design + Input should be a valid list [type=list_type, input_value=, input_type=Design] + For further information visit https://errors.pydantic.dev/2.11/v/list_type +[ERROR][2025-05-09 19:04:34,285][log.py:248]Internal Server Error: /api/project/getTestDemandList +[WARNING][2025-05-09 19:04:44,649][operation.py:133]"GET - TestDemandController[get_test_demand_list] /api/project/getTestDemandList" () +[ERROR][2025-05-09 19:04:44,649][errors.py:131]1 validation error for NinjaResponseSchema +response.items.0.design + Input should be a valid list [type=list_type, input_value=, input_type=Design] + For further information visit https://errors.pydantic.dev/2.11/v/list_type +Traceback (most recent call last): + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\operation.py", line 216, in run + _processed_results = self._result_to_response( + request, result, ctx.response + ) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja\operation.py", line 280, in _result_to_response + validated_object = response_model.model_validate( + resp_object, context={"request": request, "response_status": status} + ) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\pydantic\main.py", line 703, in model_validate + return cls.__pydantic_validator__.validate_python( + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ + obj, strict=strict, from_attributes=from_attributes, context=context, by_alias=by_alias, by_name=by_name + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ +pydantic_core._pydantic_core.ValidationError: 1 validation error for NinjaResponseSchema +response.items.0.design + Input should be a valid list [type=list_type, input_value=, input_type=Design] + For further information visit https://errors.pydantic.dev/2.11/v/list_type +[ERROR][2025-05-09 19:04:44,650][log.py:248]Internal Server Error: /api/project/getTestDemandList +[WARNING][2025-05-09 19:05:27,213][operation.py:133]"GET - TestDemandController[get_test_demand_list] /api/project/getTestDemandList" () +[ERROR][2025-05-09 19:05:27,213][errors.py:131]1 validation error for NinjaResponseSchema +response.items.0.design + Input should be a valid list [type=list_type, input_value=, input_type=Design] + For further information visit https://errors.pydantic.dev/2.11/v/list_type +Traceback (most recent call last): + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\operation.py", line 216, in run + _processed_results = self._result_to_response( + request, result, ctx.response + ) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja\operation.py", line 280, in _result_to_response + validated_object = response_model.model_validate( + resp_object, context={"request": request, "response_status": status} + ) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\pydantic\main.py", line 703, in model_validate + return cls.__pydantic_validator__.validate_python( + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ + obj, strict=strict, from_attributes=from_attributes, context=context, by_alias=by_alias, by_name=by_name + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ +pydantic_core._pydantic_core.ValidationError: 1 validation error for NinjaResponseSchema +response.items.0.design + Input should be a valid list [type=list_type, input_value=, input_type=Design] + For further information visit https://errors.pydantic.dev/2.11/v/list_type +[ERROR][2025-05-09 19:05:27,214][log.py:248]Internal Server Error: /api/project/getTestDemandList +[WARNING][2025-05-09 19:09:10,143][operation.py:133]"GET - DutController[get_one_by_id] /api/project/getDutOneById" (500, '未找到相应的数据') +[ERROR][2025-05-09 19:09:10,151][log.py:248]Internal Server Error: /api/project/getDutOneById +[WARNING][2025-05-09 19:13:20,485][operation.py:133]"GET - DutController[get_one_by_id] /api/project/getDutOneById" (500, '未找到相应的数据') +[ERROR][2025-05-09 19:13:20,494][log.py:248]Internal Server Error: /api/project/getDutOneById +[WARNING][2025-05-09 19:40:10,785][operation.py:133]"GET - DutController[get_one_by_id] /api/project/getDutOneById" (500, '未找到相应的数据') +[ERROR][2025-05-09 19:40:10,794][log.py:248]Internal Server Error: /api/project/getDutOneById +[WARNING][2025-05-09 19:40:24,209][operation.py:133]"GET - DutController[get_one_by_id] /api/project/getDutOneById" (500, '未找到相应的数据') +[ERROR][2025-05-09 19:40:24,218][log.py:248]Internal Server Error: /api/project/getDutOneById +[WARNING][2025-05-09 19:42:25,677][operation.py:133]"PUT - DesignController[update_design] /api/project/editDesignDemand/3788" ([{'type': 'string_type', 'loc': ('body', 'payload', 'dut'), 'msg': 'Input should be a valid string'}],) +[WARNING][2025-05-09 19:42:25,687][log.py:248]Unprocessable Content: /api/project/editDesignDemand/3788 +[WARNING][2025-05-09 19:43:26,061][operation.py:133]"PUT - DesignController[update_design] /api/project/editDesignDemand/3788" ([{'type': 'string_type', 'loc': ('body', 'payload', 'dut'), 'msg': 'Input should be a valid string'}],) +[WARNING][2025-05-09 19:43:26,073][log.py:248]Unprocessable Content: /api/project/editDesignDemand/3788 +[WARNING][2025-05-09 19:44:03,771][operation.py:133]"PUT - DesignController[update_design] /api/project/editDesignDemand/3788" ([{'type': 'string_type', 'loc': ('body', 'payload', 'dut'), 'msg': 'Input should be a valid string'}],) +[WARNING][2025-05-09 19:44:03,781][log.py:248]Unprocessable Content: /api/project/editDesignDemand/3788 +[WARNING][2025-05-09 19:44:30,349][operation.py:133]"PUT - DesignController[update_design] /api/project/editDesignDemand/3788" ([{'type': 'string_type', 'loc': ('body', 'payload', 'dut'), 'msg': 'Input should be a valid string'}],) +[WARNING][2025-05-09 19:44:30,361][log.py:248]Unprocessable Content: /api/project/editDesignDemand/3788 +[WARNING][2025-05-09 19:44:49,491][operation.py:133]"PUT - DesignController[update_design] /api/project/editDesignDemand/3788" ([{'type': 'string_type', 'loc': ('body', 'payload', 'dut'), 'msg': 'Input should be a valid string'}],) +[WARNING][2025-05-09 19:44:49,502][log.py:248]Unprocessable Content: /api/project/editDesignDemand/3788 +[WARNING][2025-05-09 19:55:19,627][backend.py:91]Caught LDAPError looking up user: SERVER_DOWN({'result': -1, 'desc': "Can't contact LDAP server", 'ctrls': []}) +[WARNING][2025-05-10 11:17:01,022][log.py:248]Unauthorized: /api/system/getInfo +[WARNING][2025-05-10 11:17:01,096][log.py:248]Unauthorized: /api/system/logout +[WARNING][2025-05-10 11:17:11,230][backend.py:91]Caught LDAPError looking up user: SERVER_DOWN({'result': -1, 'desc': "Can't contact LDAP server", 'ctrls': []}) +[WARNING][2025-05-10 14:31:08,098][log.py:248]Not Found: /api/project/getCaseOne +[WARNING][2025-05-10 14:31:16,258][log.py:248]Not Found: /api/project/getCaseOne +[WARNING][2025-05-10 14:31:22,405][log.py:248]Not Found: /api/project/getCaseOne +[WARNING][2025-05-10 14:31:29,196][log.py:248]Not Found: /api/project/getCaseOne +[WARNING][2025-05-10 14:31:45,267][log.py:248]Not Found: /api/project/getCaseOne +[WARNING][2025-05-10 14:31:53,078][log.py:248]Not Found: /api/project/getCaseOne +[WARNING][2025-05-10 14:59:08,824][operation.py:133]"GET - CaseController[get_case_list] /api/project/getCaseList" () +[ERROR][2025-05-10 14:59:08,825][errors.py:131]9 validation errors for NinjaResponseSchema +response.items.0.test.testContent + Field required [type=missing, input_value=>, input_type=DjangoGetter] + For further information visit https://errors.pydantic.dev/2.11/v/missing +response.items.1.test.testContent + Field required [type=missing, input_value=>, input_type=DjangoGetter] + For further information visit https://errors.pydantic.dev/2.11/v/missing +response.items.2.test.testContent + Field required [type=missing, input_value=>, input_type=DjangoGetter] + For further information visit https://errors.pydantic.dev/2.11/v/missing +response.items.3.test.testContent + Field required [type=missing, input_value=>, input_type=DjangoGetter] + For further information visit https://errors.pydantic.dev/2.11/v/missing +response.items.4.test.testContent + Field required [type=missing, input_value=>, input_type=DjangoGetter] + For further information visit https://errors.pydantic.dev/2.11/v/missing +response.items.5.test.testContent + Field required [type=missing, input_value=>, input_type=DjangoGetter] + For further information visit https://errors.pydantic.dev/2.11/v/missing +response.items.6.test.testContent + Field required [type=missing, input_value=>, input_type=DjangoGetter] + For further information visit https://errors.pydantic.dev/2.11/v/missing +response.items.7.test.testContent + Field required [type=missing, input_value=>, input_type=DjangoGetter] + For further information visit https://errors.pydantic.dev/2.11/v/missing +response.items.8.test.testContent + Field required [type=missing, input_value=>, input_type=DjangoGetter] + For further information visit https://errors.pydantic.dev/2.11/v/missing +Traceback (most recent call last): + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\operation.py", line 216, in run + _processed_results = self._result_to_response( + request, result, ctx.response + ) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja\operation.py", line 280, in _result_to_response + validated_object = response_model.model_validate( + resp_object, context={"request": request, "response_status": status} + ) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\pydantic\main.py", line 703, in model_validate + return cls.__pydantic_validator__.validate_python( + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ + obj, strict=strict, from_attributes=from_attributes, context=context, by_alias=by_alias, by_name=by_name + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ +pydantic_core._pydantic_core.ValidationError: 9 validation errors for NinjaResponseSchema +response.items.0.test.testContent + Field required [type=missing, input_value=>, input_type=DjangoGetter] + For further information visit https://errors.pydantic.dev/2.11/v/missing +response.items.1.test.testContent + Field required [type=missing, input_value=>, input_type=DjangoGetter] + For further information visit https://errors.pydantic.dev/2.11/v/missing +response.items.2.test.testContent + Field required [type=missing, input_value=>, input_type=DjangoGetter] + For further information visit https://errors.pydantic.dev/2.11/v/missing +response.items.3.test.testContent + Field required [type=missing, input_value=>, input_type=DjangoGetter] + For further information visit https://errors.pydantic.dev/2.11/v/missing +response.items.4.test.testContent + Field required [type=missing, input_value=>, input_type=DjangoGetter] + For further information visit https://errors.pydantic.dev/2.11/v/missing +response.items.5.test.testContent + Field required [type=missing, input_value=>, input_type=DjangoGetter] + For further information visit https://errors.pydantic.dev/2.11/v/missing +response.items.6.test.testContent + Field required [type=missing, input_value=>, input_type=DjangoGetter] + For further information visit https://errors.pydantic.dev/2.11/v/missing +response.items.7.test.testContent + Field required [type=missing, input_value=>, input_type=DjangoGetter] + For further information visit https://errors.pydantic.dev/2.11/v/missing +response.items.8.test.testContent + Field required [type=missing, input_value=>, input_type=DjangoGetter] + For further information visit https://errors.pydantic.dev/2.11/v/missing +[ERROR][2025-05-10 14:59:08,890][log.py:248]Internal Server Error: /api/project/getCaseList +[WARNING][2025-05-10 15:01:11,027][operation.py:133]"GET - CaseController[get_case_list] /api/project/getCaseList" () +[ERROR][2025-05-10 15:01:11,027][errors.py:131]9 validation errors for NinjaResponseSchema +response.items.0.test.testContent + Field required [type=missing, input_value=>, input_type=DjangoGetter] + For further information visit https://errors.pydantic.dev/2.11/v/missing +response.items.1.test.testContent + Field required [type=missing, input_value=>, input_type=DjangoGetter] + For further information visit https://errors.pydantic.dev/2.11/v/missing +response.items.2.test.testContent + Field required [type=missing, input_value=>, input_type=DjangoGetter] + For further information visit https://errors.pydantic.dev/2.11/v/missing +response.items.3.test.testContent + Field required [type=missing, input_value=>, input_type=DjangoGetter] + For further information visit https://errors.pydantic.dev/2.11/v/missing +response.items.4.test.testContent + Field required [type=missing, input_value=>, input_type=DjangoGetter] + For further information visit https://errors.pydantic.dev/2.11/v/missing +response.items.5.test.testContent + Field required [type=missing, input_value=>, input_type=DjangoGetter] + For further information visit https://errors.pydantic.dev/2.11/v/missing +response.items.6.test.testContent + Field required [type=missing, input_value=>, input_type=DjangoGetter] + For further information visit https://errors.pydantic.dev/2.11/v/missing +response.items.7.test.testContent + Field required [type=missing, input_value=>, input_type=DjangoGetter] + For further information visit https://errors.pydantic.dev/2.11/v/missing +response.items.8.test.testContent + Field required [type=missing, input_value=>, input_type=DjangoGetter] + For further information visit https://errors.pydantic.dev/2.11/v/missing +Traceback (most recent call last): + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja_extra\operation.py", line 216, in run + _processed_results = self._result_to_response( + request, result, ctx.response + ) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\ninja\operation.py", line 280, in _result_to_response + validated_object = response_model.model_validate( + resp_object, context={"request": request, "response_status": status} + ) + File "E:\pycharmProjects\cdtestplant_v1\.venv\Lib\site-packages\pydantic\main.py", line 703, in model_validate + return cls.__pydantic_validator__.validate_python( + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ + obj, strict=strict, from_attributes=from_attributes, context=context, by_alias=by_alias, by_name=by_name + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ) + ^ +pydantic_core._pydantic_core.ValidationError: 9 validation errors for NinjaResponseSchema +response.items.0.test.testContent + Field required [type=missing, input_value=>, input_type=DjangoGetter] + For further information visit https://errors.pydantic.dev/2.11/v/missing +response.items.1.test.testContent + Field required [type=missing, input_value=>, input_type=DjangoGetter] + For further information visit https://errors.pydantic.dev/2.11/v/missing +response.items.2.test.testContent + Field required [type=missing, input_value=>, input_type=DjangoGetter] + For further information visit https://errors.pydantic.dev/2.11/v/missing +response.items.3.test.testContent + Field required [type=missing, input_value=>, input_type=DjangoGetter] + For further information visit https://errors.pydantic.dev/2.11/v/missing +response.items.4.test.testContent + Field required [type=missing, input_value=>, input_type=DjangoGetter] + For further information visit https://errors.pydantic.dev/2.11/v/missing +response.items.5.test.testContent + Field required [type=missing, input_value=>, input_type=DjangoGetter] + For further information visit https://errors.pydantic.dev/2.11/v/missing +response.items.6.test.testContent + Field required [type=missing, input_value=>, input_type=DjangoGetter] + For further information visit https://errors.pydantic.dev/2.11/v/missing +response.items.7.test.testContent + Field required [type=missing, input_value=>, input_type=DjangoGetter] + For further information visit https://errors.pydantic.dev/2.11/v/missing +response.items.8.test.testContent + Field required [type=missing, input_value=>, input_type=DjangoGetter] + For further information visit https://errors.pydantic.dev/2.11/v/missing +[ERROR][2025-05-10 15:01:11,055][log.py:248]Internal Server Error: /api/project/getCaseList +[WARNING][2025-05-10 15:09:34,732][operation.py:133]"PUT - TestDemandController[update_testDemand] /api/project/testDemand/update/538" ([{'type': 'missing', 'loc': ('body', 'payload', 'designDemand'), 'msg': 'Field required'}],) +[WARNING][2025-05-10 15:09:34,749][log.py:248]Unprocessable Content: /api/project/testDemand/update/538 +[WARNING][2025-05-10 18:38:58,880][log.py:248]Not Found: /api/project/case/personReplace/ +[WARNING][2025-05-10 18:39:30,827][log.py:248]Not Found: /api/project/case/personReplace/ +[WARNING][2025-05-10 18:40:42,444][log.py:248]Method Not Allowed: /api/project/case/personReplace/ +[WARNING][2025-05-10 18:43:09,517][operation.py:133]"GET - CaseController[bulk_replace_person] /api/project/case/personReplace/" ([{'type': 'missing', 'loc': ('body', 'selectRows'), 'msg': 'Field required'}],) +[WARNING][2025-05-10 18:43:09,526][log.py:248]Unprocessable Content: /api/project/case/personReplace/ +[WARNING][2025-05-10 18:45:03,555][operation.py:133]"GET - CaseController[bulk_replace_person] /api/project/case/personReplace/" ([{'type': 'missing', 'loc': ('body', 'selectRows'), 'msg': 'Field required'}],) +[WARNING][2025-05-10 18:45:03,563][log.py:248]Unprocessable Content: /api/project/case/personReplace/ +[WARNING][2025-05-10 18:45:32,259][operation.py:133]"GET - CaseController[bulk_replace_person] /api/project/case/personReplace/" ([{'type': 'missing', 'loc': ('body', 'selectRows'), 'msg': 'Field required'}],) +[WARNING][2025-05-10 18:45:32,269][log.py:248]Unprocessable Content: /api/project/case/personReplace/ +[WARNING][2025-05-10 18:45:35,891][operation.py:133]"GET - CaseController[bulk_replace_person] /api/project/case/personReplace/" ([{'type': 'missing', 'loc': ('body', 'selectRows'), 'msg': 'Field required'}],) +[WARNING][2025-05-10 18:45:35,901][log.py:248]Unprocessable Content: /api/project/case/personReplace/ +[WARNING][2025-05-10 18:47:11,820][operation.py:133]"GET - CaseController[bulk_replace_person] /api/project/case/personReplace/" ([{'type': 'missing', 'loc': ('body', 'selectRows'), 'msg': 'Field required'}],) +[WARNING][2025-05-10 18:47:11,830][log.py:248]Unprocessable Content: /api/project/case/personReplace/ +[WARNING][2025-05-10 18:47:59,564][operation.py:133]"GET - CaseController[bulk_replace_person] /api/project/case/personReplace/" ([{'type': 'missing', 'loc': ('body', 'selectRows'), 'msg': 'Field required'}],) +[WARNING][2025-05-10 18:47:59,579][log.py:248]Unprocessable Content: /api/project/case/personReplace/ +[WARNING][2025-05-10 19:15:32,945][operation.py:133]"POST - CaseController[bulk_replace_person] /api/project/case/personReplace/" ([{'type': 'missing', 'loc': ('body', 'payload', 'designPerson'), 'msg': 'Field required'}, {'type': 'missing', 'loc': ('body', 'payload', 'testPerson'), 'msg': 'Field required'}, {'type': 'missing', 'loc': ('body', 'payload', 'monitorPerson'), 'msg': 'Field required'}],) +[WARNING][2025-05-10 19:15:32,955][log.py:248]Unprocessable Content: /api/project/case/personReplace/