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:
Click on Settings for your organisation.
Click the Edit button and add one (or more) tags.
Save the config.
Go through the aggregate report flow.
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
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
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:
Expected behavior Generating an Aggregate report when an organisation tag is provided.
Screenshots
OpenKAT version commit 5273eaa897206e18775f939d2f426189fc383e21 (HEAD -> main, origin/main, origin/HEAD)