HXSecurity / DongTai-web

dongtai web is the front-end project of "huoxian DongTaiIast" and is responsible for page display
Apache License 2.0
17 stars 25 forks source link

[Bug]: 新建项目无法保存 #327

Closed zha0cai closed 1 year ago

zha0cai commented 1 year ago

Preflight Checklist

Version

1.9.3

Installation Type

Official Docker Compose

Service Name

DongTai-WebAPI

Describe the details of the bug and the steps to reproduce it

版本

1.9.3

部署方式

•Docker Compose

复现步骤

  1. Virtual Box 新安装 Centos7,版本 CentOS-7-x86_64-DVD-1708.iso
  1. 前置环境准备 [root@localhost home]# uname -r 3.10.0-693.el7.x86_64 [root@localhost home]# yum -y update [root@localhost ~]# cd /home // 安装 docker 和 docker-compose [root@localhost ~]# docker -v Docker version 23.0.1, build a5ee5b1 [root@localhost ~]# docker-compose --version Docker Compose version v2.17.0

  2. 接着进入官方安装步骤 https://doc.dongtai.io/docs/getting-started/server/deploy-docker-compose

    [root@localhost home]# cd DongTai/ [root@localhost DongTai]# git pull Already up-to-date. [root@localhost DongTai]# cd deploy/docker-compose/ [root@localhost docker-compose]# ./dtctl install

    [+] Running 15/15 ✔ Network dongtai_default Created 0.2s ✔ Volume "dongtai_iast-vol" Created 0.0s ✔ Volume "dongtai_mysql-vol" Created 0.0s ✔ Container dongtai-dongtai-mysql-1 Started 2.9s ✔ Container dongtai-dongtai-worker-other-1 Started 4.0s ✔ Container dongtai-dongtai-worker-sca-1 Started 2.8s ✔ Container dongtai-dongtai-worker-high-freq-1 Started 3.8s ✔ Container dongtai-dongtai-logrotate-1 Started 2.7s ✔ Container dongtai-dongtai-server-1 Started 3.9s ✔ Container dongtai-dongtai-redis-1 Started 3.9s ✔ Container dongtai-dongtai-worker-task-1 Started 3.1s ✔ Container dongtai-dongtai-logstash-1 Started 2.4s ✔ Container dongtai-dongtai-worker-beat-1 Started 2.8s ✔ Container dongtai-dongtai-worker-es-1 Started 4.0s ✔ Container dongtai-dongtai-web-1 Started 5.1s [Important] Installation success!

  3. 登录 -- 添加项目,问题还是存在 注:由于是新安装测试,所以没有配置 SCAToken 现象 新建项目 -- 保存 image

​ API 导航 -- 查看请求 -- 点击 url:接口异常

Additional Information

No response

Logs

[pid: 19|app: 0|req: 4/11] ipaddr () {36 vars in 842 bytes} [Fri Mar 24 15:17:55 2023] GET /api/v1/user/department/token => generated 165 bytes in 14 msecs (HTTP/1.0 200) 10 headers in 394 bytes (1 switches on core 7)
[pid: 20|app: 0|req: 5/12] ipaddr () {36 vars in 836 bytes} [Fri Mar 24 15:17:55 2023] GET /api/v1/strategy/user/list => generated 131 bytes in 16 msecs (HTTP/1.0 200) 10 headers in 394 bytes (1 switches on core 4)
ERROR 2023-03-24 15:18:01,880 [project_add.post:185] The database backend does not accept 0 as a value for AutoField.
Traceback (most recent call last):
  File "/opt/dongtai/./dongtai_web/views/project_add.py", line 127, in post
    project = IastProject.objects.create(name=name,
  File "/usr/local/lib/python3.10/site-packages/django/db/models/manager.py", line 85, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "/usr/local/lib/python3.10/site-packages/django/db/models/query.py", line 453, in create
    obj.save(force_insert=True, using=self.db)
  File "/usr/local/lib/python3.10/site-packages/django/db/models/base.py", line 739, in save
    self.save_base(using=using, force_insert=force_insert,
  File "/usr/local/lib/python3.10/site-packages/django/db/models/base.py", line 776, in save_base
    updated = self._save_table(
  File "/usr/local/lib/python3.10/site-packages/django/db/models/base.py", line 881, in _save_table
    results = self._do_insert(cls._base_manager, using, fields, returning_fields, raw)
  File "/usr/local/lib/python3.10/site-packages/django/db/models/base.py", line 919, in _do_insert
    return manager._insert(
  File "/usr/local/lib/python3.10/site-packages/django/db/models/manager.py", line 85, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "/usr/local/lib/python3.10/site-packages/django/db/models/query.py", line 1270, in _insert
    return query.get_compiler(using=using).execute_sql(returning_fields)
  File "/usr/local/lib/python3.10/site-packages/django/db/models/sql/compiler.py", line 1415, in execute_sql
    for sql, params in self.as_sql():
  File "/usr/local/lib/python3.10/site-packages/django/db/models/sql/compiler.py", line 1358, in as_sql
    value_rows = [
  File "/usr/local/lib/python3.10/site-packages/django/db/models/sql/compiler.py", line 1359, in <listcomp>
    [self.prepare_value(field, self.pre_save_val(field, obj)) for field in fields]
  File "/usr/local/lib/python3.10/site-packages/django/db/models/sql/compiler.py", line 1359, in <listcomp>
    [self.prepare_value(field, self.pre_save_val(field, obj)) for field in fields]
  File "/usr/local/lib/python3.10/site-packages/django/db/models/sql/compiler.py", line 1300, in prepare_value
    value = field.get_db_prep_save(value, connection=self.connection)
  File "/usr/local/lib/python3.10/site-packages/django/db/models/fields/related.py", line 971, in get_db_prep_save
    return self.target_field.get_db_prep_save(value, connection=connection)
  File "/usr/local/lib/python3.10/site-packages/django/db/models/fields/__init__.py", line 842, in get_db_prep_save
    return self.get_db_prep_value(value, connection=connection, prepared=False)
  File "/usr/local/lib/python3.10/site-packages/django/db/models/fields/__init__.py", line 2487, in get_db_prep_value
    value = connection.ops.validate_autopk_value(value)
  File "/usr/local/lib/python3.10/site-packages/django/db/backends/mysql/operations.py", line 236, in validate_autopk_value
    raise ValueError('The database backend does not accept 0 as a '
ValueError: The database backend does not accept 0 as a value for AutoField.
之前的日志
[pid: 69|app: 0|req: 1948/2671] ipaddr () {38 vars in 574 bytes} [Thu Mar 23 17:53:54 2023] POST /api/v1/report/upload => generated 60 bytes in 32 msecs (HTTP/1.0 200) 10 headers in 380 bytes (1 switches on core 5)
ERROR 2023-03-23 17:54:02,627 [project_add.post:185] The database backend does not accept 0 as a value for AutoField.
Traceback (most recent call last):
  File "/opt/dongtai/./dongtai_web/views/project_add.py", line 178, in post
    project.save(update_fields=[
  File "/usr/local/lib/python3.10/site-packages/django/db/models/base.py", line 739, in save
    self.save_base(using=using, force_insert=force_insert,
  File "/usr/local/lib/python3.10/site-packages/django/db/models/base.py", line 776, in save_base
    updated = self._save_table(
  File "/usr/local/lib/python3.10/site-packages/django/db/models/base.py", line 858, in _save_table
    updated = self._do_update(base_qs, using, pk_val, values, update_fields,
  File "/usr/local/lib/python3.10/site-packages/django/db/models/base.py", line 912, in _do_update
    return filtered._update(values) > 0
  File "/usr/local/lib/python3.10/site-packages/django/db/models/query.py", line 802, in _update
    return query.get_compiler(self.db).execute_sql(CURSOR)
  File "/usr/local/lib/python3.10/site-packages/django/db/models/sql/compiler.py", line 1559, in execute_sql
    cursor = super().execute_sql(result_type)
  File "/usr/local/lib/python3.10/site-packages/django/db/models/sql/compiler.py", line 1162, in execute_sql
    sql, params = self.as_sql()
  File "/usr/local/lib/python3.10/site-packages/django/db/backends/mysql/compiler.py", line 44, in as_sql
    update_query, update_params = super().as_sql()
  File "/usr/local/lib/python3.10/site-packages/django/db/models/sql/compiler.py", line 1525, in as_sql
    val = field.get_db_prep_save(val, connection=self.connection)
  File "/usr/local/lib/python3.10/site-packages/django/db/models/fields/related.py", line 971, in get_db_prep_save
    return self.target_field.get_db_prep_save(value, connection=connection)
  File "/usr/local/lib/python3.10/site-packages/django/db/models/fields/__init__.py", line 842, in get_db_prep_save
    return self.get_db_prep_value(value, connection=connection, prepared=False)
  File "/usr/local/lib/python3.10/site-packages/django/db/models/fields/__init__.py", line 2487, in get_db_prep_value
    value = connection.ops.validate_autopk_value(value)
  File "/usr/local/lib/python3.10/site-packages/django/db/backends/mysql/operations.py", line 236, in validate_autopk_value
    raise ValueError('The database backend does not accept 0 as a '
ValueError: The database backend does not accept 0 as a value for AutoField.

ERROR 2023-03-24 10:56:51,714 [method_graph.get:67] invalid literal for int() with base 10: 'undefined'
Traceback (most recent call last):
  File "/opt/dongtai/./dongtai_web/views/method_graph.py", line 24, in get
    method_pool_id = int(request.query_params.get('method_pool_id'))
ValueError: invalid literal for int() with base 10: 'undefined'
ERROR 2023-03-24 10:56:51,714 [__init__.dispatch:111] url: /api/v1/engine/method_pool/sca,exc:Field 'id' expected a number but got 'undefined'.
Traceback (most recent call last):
  File "/usr/local/lib/python3.10/site-packages/django/db/models/fields/__init__.py", line 1823, 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 "/opt/dongtai/./dongtai_common/endpoint/__init__.py", line 109, in dispatch
    response = handler(request, *args, **kwargs)
  File "/opt/dongtai/./dongtai_web/views/engine_method_pool_sca.py", line 36, in get
    method_pool = MethodPool.objects.filter(
  File "/usr/local/lib/python3.10/site-packages/django/db/models/manager.py", line 85, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "/usr/local/lib/python3.10/site-packages/django/db/models/query.py", line 941, in filter
    return self._filter_or_exclude(False, args, kwargs)
  File "/usr/local/lib/python3.10/site-packages/django/db/models/query.py", line 961, in _filter_or_exclude
    clone._filter_or_exclude_inplace(negate, args, kwargs)
  File "/usr/local/lib/python3.10/site-packages/django/db/models/query.py", line 968, in _filter_or_exclude_inplace
    self._query.add_q(Q(*args, **kwargs))
  File "/usr/local/lib/python3.10/site-packages/django/db/models/sql/query.py", line 1416, in add_q
    clause, _ = self._add_q(q_object, self.used_aliases)
  File "/usr/local/lib/python3.10/site-packages/django/db/models/sql/query.py", line 1435, in _add_q
    child_clause, needed_inner = self.build_filter(
  File "/usr/local/lib/python3.10/site-packages/django/db/models/sql/query.py", line 1370, in build_filter
    condition = self.build_lookup(lookups, col, value)
  File "/usr/local/lib/python3.10/site-packages/django/db/models/sql/query.py", line 1216, in build_lookup
    lookup = lookup_class(lhs, rhs)
  File "/usr/local/lib/python3.10/site-packages/django/db/models/lookups.py", line 25, in __init__
    self.rhs = self.get_prep_lookup()
  File "/usr/local/lib/python3.10/site-packages/django/db/models/lookups.py", line 77, in get_prep_lookup
    return self.lhs.output_field.get_prep_value(self.rhs)
  File "/usr/local/lib/python3.10/site-packages/django/db/models/fields/__init__.py", line 1825, in get_prep_value
    raise e.__class__(
ValueError: Field 'id' expected a number but got 'undefined'.
Bidaya0 commented 1 year ago

Fixed in https://github.com/HXSecurity/DongTai-web/pull/326