minvws / nl-kat-coordination

Repo nl-kat-coordination for minvws
European Union Public License 1.2
123 stars 55 forks source link

TypeError in aggregate report generation when having an organisation tag #2816

Closed stephanie0x00 closed 5 months ago

stephanie0x00 commented 5 months ago

Describe the bug When you want to create a Multi-Report it is required to provide an organisation tag to your organisation. When you want to generate the aggregate report you get a TypeError.

To Reproduce Steps to reproduce the behavior:

  1. Click on Settings for your organisation.
  2. Click the Edit button and add one (or more) tags.
  3. Save the config.
  4. Go through the aggregate report flow.
  5. The error will show after clicking the 'generate report' button in the required/suggested plugin selection.

Expected behavior Generating an Aggregate report when an organisation tag is provided.

Screenshots image

OpenKAT version commit 5273eaa897206e18775f939d2f426189fc383e21 (HEAD -> main, origin/main, origin/HEAD)

Environment:

Request Method: GET
Request URL: http://127.0.0.1:8000/en/aa/reports/aggregate-report/view/?json=true&observed_at=2024-04-10&ooi=Hostname%7Cinternet%7Cmispo.es&clearance_level=2&clearance_level=3&clearance_level=4&clearance_type=declared&plugin=dns-records&plugin=dns-sec&plugin=nmap&plugin=rpki&plugin=ssl-certificates&plugin=ssl-version&plugin=security_txt_downloader&plugin=testssl-sh-ciphers&plugin=webpage-analysis&report_type=systems-report&report_type=ipv6-report&report_type=mail-report&report_type=name-server-report&report_type=open-ports-report&report_type=rpki-report&report_type=safe-connections-report&report_type=vulnerability-report&report_type=web-system-report

Django Version: 4.2.11
Python Version: 3.11.9
Installed Applications:
['whitenoise.runserver_nostatic',
 'django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'django.forms',
 'django_otp',
 'django_otp.plugins.otp_static',
 'django_otp.plugins.otp_totp',
 'two_factor',
 'account',
 'tools',
 'fmea',
 'crisis_room',
 'onboarding',
 'katalogus',
 'django_password_validators',
 'django_password_validators.password_history',
 'rest_framework',
 'tagulous',
 'compressor',
 'reports',
 'knox',
 'csp']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
 'whitenoise.middleware.WhiteNoiseMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.locale.LocaleMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django_otp.middleware.OTPMiddleware',
 'rocky.middleware.auth_required.AuthRequiredMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware',
 'rocky.middleware.onboarding.OnboardingMiddleware',
 'csp.middleware.CSPMiddleware']

Traceback (most recent call last):
  File "/usr/local/lib/python3.11/site-packages/django/core/handlers/exception.py", line 55, in inner
    response = get_response(request)
               ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/django/core/handlers/base.py", line 197, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/django/views/generic/base.py", line 104, in view
    return self.dispatch(request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/django/views/generic/base.py", line 143, in dispatch
    return handler(request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/rocky/reports/views/aggregate_report.py", line 167, in get
    response = JsonResponse(response, encoder=JSONEncoder)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/django/http/response.py", line 731, in __init__
    data = json.dumps(data, cls=encoder, **json_dumps_params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/json/__init__.py", line 238, in dumps
    **kw).encode(obj)
          ^^^^^^^^^^^
  File "/usr/local/lib/python3.11/json/encoder.py", line 200, in encode
    chunks = self.iterencode(o, _one_shot=True)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/json/encoder.py", line 258, in iterencode
    return _iterencode(o, 0)
           ^^^^^^^^^^^^^^^^^
  File "/app/rocky/reports/utils.py", line 26, in default
    return super().default(o)
           ^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/django/core/serializers/json.py", line 106, in default
    return super().default(o)
           ^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/json/encoder.py", line 180, in default
    raise TypeError(f'Object of type {o.__class__.__name__} '
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Exception Type: TypeError at /en/aa/reports/aggregate-report/view/
Exception Value: Object of type OrganizationTag is not JSON serializable
stephanie0x00 commented 5 months ago

Issue seems to be resolved on main commit 5aa3902ba9aa89f38ac2d3dae022322cdf208b24 (HEAD -> main, origin/main, origin/HEAD)