'destination'
Request Method: | GET |
---|---|
Request URL: | http://localhost:8000/wycieczka/787/sladami-trolli/1075/rezerwuj |
Django Version: | 4.0.10 |
Exception Type: | KeyError |
Exception Value: | 'destination' |
Exception Location: | /code/orient/service.py, line 48, in __format_trips_data |
Python Executable: | /usr/local/bin/python3 |
Python Version: | 3.10.13 |
Python Path: | ['/code', '/usr/local/lib/python310.zip', '/usr/local/lib/python3.10', '/usr/local/lib/python3.10/lib-dynload', '/usr/local/lib/python3.10/site-packages'] |
Server time: | Thu, 28 Mar 2024 12:21:07 +0100 |
/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py
, line 56, in inner
return inner
else:
@wraps(get_response)
def inner(request):
try:
response = get_response(request)…
except Exception as exc:
response = response_for_exception(request, exc)
return response
return inner
Variable | Value |
---|---|
exc | KeyError('destination') |
get_response | <bound method BaseHandler._get_response of <django.core.handlers.wsgi.WSGIHandler object at 0x7f317167c580>> |
request | <WSGIRequest: GET '/wycieczka/787/sladami-trolli/1075/rezerwuj'> |
/usr/local/lib/python3.10/site-packages/django/core/handlers/base.py
, line 197, in _get_response
if response is None:
wrapped_callback = self.make_view_atomic(callback)
# If it is an asynchronous view, run it in a subthread.
if asyncio.iscoroutinefunction(wrapped_callback):
wrapped_callback = async_to_sync(wrapped_callback)
try:
response = wrapped_callback(request, *callback_args, **callback_kwargs)…
except Exception as e:
response = self.process_exception_by_middleware(e, request)
if response is None:
raise
# Complain if the view returned None (a common error).
Variable | Value |
---|---|
callback | <function reservation at 0x7f316f1236d0> |
callback_args | () |
callback_kwargs | {'event_pk': 1075, 'slug': 'sladami-trolli', 'trip_pk': 787} |
request | <WSGIRequest: GET '/wycieczka/787/sladami-trolli/1075/rezerwuj'> |
response | None |
self | <django.core.handlers.wsgi.WSGIHandler object at 0x7f317167c580> |
wrapped_callback | <function reservation at 0x7f316f1236d0> |
/code/orient/views.py
, line 175, in reservation
recommended = [trip for trip in recommended if trip['country']['isEnabled'] is True]
return render(request, "recommended.html", {
'recommended': recommended,
})
def reservation(request, trip_pk, event_pk, slug):
trip_details = OrientService.get_trip_details(trip_pk)…
if settings.RESERVATION_DISABLED:
return redirect(f'/wycieczka/{trip_pk}/slug')
if request.method == 'POST' and not 'step' in request.POST:
if 'create' in request.POST:
Variable | Value |
---|---|
event_pk | 1075 |
request | <WSGIRequest: GET '/wycieczka/787/sladami-trolli/1075/rezerwuj'> |
slug | 'sladami-trolli' |
trip_pk | 787 |
/code/orient/service.py
, line 118, in get_trip_details
trips = OrientService.__format_trips_data(trips, trips_data)
return trips
@staticmethod
def get_trip_details(trip_pk: int):
trip = requests.get(f'{settings.API_URL}core/events/trips/trips/{trip_pk}/').json()
trips_data = requests.get(f"{settings.API_URL}core/events/trips/trips/app_details?trip_id={trip_pk}").json()
return OrientService.__format_trips_data([trip], trips_data)[0]…
@staticmethod
def make_reservation(data):
result = requests.post(f"{settings.API_URL}core/events/event-dates/event-customer/make-reservation/", json=data)
return result
Variable | Value |
---|---|
trip | {'detail': 'Nie znaleziono.'} |
trip_pk | 787 |
trips_data | [] |
/code/orient/service.py
, line 48, in __format_trips_data
@staticmethod
def get_destination(dest):
return next(iter([x for x in OrientService.CONTINENT_CHOICES if x[2] == dest]))
@staticmethod
def __format_trips_data(trips, trips_data):
for trip in trips:
trip['destination'] = OrientService.__get_destination_name(trip['destination'])…
trip['details'] = copy.deepcopy(next(iter([x for x in trips_data if x['pk'] == trip['pk']]), None))
if trip['details'] and trip['details']['info']:
trip['details']['info'] = trip['details']['info'][0]
trip['details']['info']['food'] = trip['details']['info']['food'].replace('<br>', '')
trip['details']['info']['accommodation'] = trip['details']['info']['accommodation'].replace('<br>', '')
for i, element in enumerate(trip['images']):
Variable | Value |
---|---|
trip | {'detail': 'Nie znaleziono.'} |
trips | [{'detail': 'Nie znaleziono.'}] |
trips_data | [] |
AnonymousUser
No GET data
No POST data
No FILES data
No cookie data
Variable | Value |
---|---|
API_URL | '********************' |
CONTENT_LENGTH | '' |
CONTENT_TYPE | 'text/plain' |
DB_HOST | '172.17.0.1' |
DB_NAME | 'erp_website' |
DB_PASS | '********************' |
DB_PORT | '5432' |
DB_USER | 'erp_website' |
DJANGO_SETTINGS_MODULE | 'website.settings' |
EMAIL_FROM | 'rezerwacje@orientravel.pl' |
EMAIL_HOST | 'mail.orientravel.pl' |
EMAIL_HOST_PASSWORD | '********************' |
EMAIL_HOST_USER | 'rezerwacje@orientravel.pl' |
EMAIL_PORT | '25' |
GATEWAY_INTERFACE | 'CGI/1.1' |
GPG_KEY | '********************' |
HOME | '/root' |
HOSTNAME | 'eea865b8719a' |
HTTP_ACCEPT | '*/*' |
HTTP_CONNECTION | 'close' |
HTTP_HOST | 'localhost:8000' |
HTTP_USER_AGENT | 'claudebot' |
HTTP_X_FORWARDED_FOR | '3.90.205.166' |
LANG | 'C.UTF-8' |
P24_CRC | '2744c3b7922c92aa' |
P24_ID | '110005' |
P24_KEY | '********************' |
PATH | '/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin' |
PATH_INFO | '/wycieczka/787/sladami-trolli/1075/rezerwuj' |
PWD | '/code' |
PYTHONDONTWRITEBYTECODE | '1' |
PYTHONUNBUFFERED | '1' |
PYTHON_GET_PIP_SHA256 | '45a2bb8bf2bb5eff16fdd00faef6f29731831c7c59bd9fc2bf1f3bed511ff1fe' |
PYTHON_GET_PIP_URL | 'https://github.com/pypa/get-pip/raw/9af82b715db434abb94a0a6f3569f43e72157346/public/get-pip.py' |
PYTHON_PIP_VERSION | '23.0.1' |
PYTHON_SETUPTOOLS_VERSION | '65.5.1' |
PYTHON_VERSION | '3.10.13' |
QUERY_STRING | '' |
REMOTE_ADDR | '127.0.0.1' |
REMOTE_HOST | '' |
REQUEST_METHOD | 'GET' |
RUN_MAIN | 'true' |
SCRIPT_NAME | '' |
SERVER_NAME | 'eea865b8719a' |
SERVER_PORT | '8000' |
SERVER_PROTOCOL | 'HTTP/1.0' |
SERVER_SOFTWARE | 'WSGIServer/0.2' |
SHLVL | '1' |
TERM | 'xterm' |
TZ | 'Europe/Warsaw' |
_ | '/usr/local/bin/python3' |
wsgi.errors | <_io.TextIOWrapper name='<stderr>' mode='w' encoding='utf-8'> |
wsgi.file_wrapper | <class 'wsgiref.util.FileWrapper'> |
wsgi.input | <django.core.handlers.wsgi.LimitedStream object at 0x7f316ed17f40> |
wsgi.multiprocess | False |
wsgi.multithread | True |
wsgi.run_once | False |
wsgi.url_scheme | 'http' |
wsgi.version | (1, 0) |
website.settings
Setting | Value |
---|---|
ABSOLUTE_URL_OVERRIDES | {} |
ADMINS | [] |
ALLOWED_HOSTS | ['*'] |
API_URL | '********************' |
APPEND_SLASH | True |
AUTHENTICATION_BACKENDS | ['django.contrib.auth.backends.ModelBackend'] |
AUTH_PASSWORD_VALIDATORS | '********************' |
AUTH_USER_MODEL | 'auth.User' |
BASE_DIR | PosixPath('/code') |
CACHES | {'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'}} |
CACHE_MIDDLEWARE_ALIAS | 'default' |
CACHE_MIDDLEWARE_KEY_PREFIX | '********************' |
CACHE_MIDDLEWARE_SECONDS | 600 |
CORS_ALLOWED_ORIGINS | ['http://localhost:4200', 'http://127.0.0.1:4200', 'http://0.0.0.0:4200', 'http://orientravel.pl', 'https://orientravel.pl', 'http://host.notbug.pl:3037'] |
CORS_ALLOW_ALL_ORIGINS | True |
CORS_ALLOW_CREDENTIALS | True |
CORS_ALLOW_HEADERS | ['accept', 'accept-encoding', 'authorization', 'content-type', 'dnt', 'origin', 'user-agent', 'x-csrftoken', 'x-requested-with', 'sessionId', 'template_tag_file'] |
CORS_ALLOW_METHODS | ['DELETE', 'GET', 'OPTIONS', 'PATCH', 'POST', 'PUT'] |
CORS_ORIGIN_WHITELIST | ('127.0.0.1', 'localhost', '0.0.0.0', 'host.notbug.pl', 'host.notbug.pl:3037', 'orientravel.pl', 'https://orientravel.pl') |
CSRF_COOKIE_AGE | 31449600 |
CSRF_COOKIE_DOMAIN | None |
CSRF_COOKIE_HTTPONLY | False |
CSRF_COOKIE_NAME | 'csrftoken' |
CSRF_COOKIE_PATH | '/' |
CSRF_COOKIE_SAMESITE | 'Lax' |
CSRF_COOKIE_SECURE | False |
CSRF_FAILURE_VIEW | 'django.views.csrf.csrf_failure' |
CSRF_HEADER_NAME | 'HTTP_X_CSRFTOKEN' |
CSRF_TRUSTED_ORIGINS | [] |
CSRF_USE_SESSIONS | False |
DATABASES | {'default': {'ATOMIC_REQUESTS': False, 'AUTOCOMMIT': True, 'CONN_MAX_AGE': 0, 'ENGINE': 'django.db.backends.postgresql', 'HOST': '172.17.0.1', 'NAME': 'erp_website', 'OPTIONS': {}, 'PASSWORD': '********************', 'PORT': '5432', 'TEST': {'CHARSET': None, 'COLLATION': None, 'MIGRATE': True, 'MIRROR': None, 'NAME': None}, 'TIME_ZONE': None, 'USER': 'erp_website'}} |
DATABASE_ROUTERS | [] |
DATA_UPLOAD_MAX_MEMORY_SIZE | 2621440 |
DATA_UPLOAD_MAX_NUMBER_FIELDS | 1000 |
DATA_UPLOAD_MAX_NUMBER_FILES | 100 |
DATETIME_FORMAT | 'N j, Y, P' |
DATETIME_INPUT_FORMATS | ['%Y-%m-%d %H:%M:%S', '%Y-%m-%d %H:%M:%S.%f', '%Y-%m-%d %H:%M', '%m/%d/%Y %H:%M:%S', '%m/%d/%Y %H:%M:%S.%f', '%m/%d/%Y %H:%M', '%m/%d/%y %H:%M:%S', '%m/%d/%y %H:%M:%S.%f', '%m/%d/%y %H:%M'] |
DATE_FORMAT | 'N j, Y' |
DATE_INPUT_FORMATS | ['%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', '%b %d %Y', '%b %d, %Y', '%d %b %Y', '%d %b, %Y', '%B %d %Y', '%B %d, %Y', '%d %B %Y', '%d %B, %Y'] |
DEBUG | True |
DEBUG_PROPAGATE_EXCEPTIONS | False |
DECIMAL_SEPARATOR | '.' |
DEFAULT_AUTO_FIELD | 'django.db.models.BigAutoField' |
DEFAULT_CHARSET | 'utf-8' |
DEFAULT_EXCEPTION_REPORTER | 'django.views.debug.ExceptionReporter' |
DEFAULT_EXCEPTION_REPORTER_FILTER | 'django.views.debug.SafeExceptionReporterFilter' |
DEFAULT_FILE_STORAGE | 'django.core.files.storage.FileSystemStorage' |
DEFAULT_FROM_EMAIL | 'webmaster@localhost' |
DEFAULT_INDEX_TABLESPACE | '' |
DEFAULT_TABLESPACE | '' |
DISALLOWED_USER_AGENTS | [] |
EMAIL_BACKEND | 'django.core.mail.backends.smtp.EmailBackend' |
EMAIL_FROM | 'rezerwacje@orientravel.pl' |
EMAIL_HOST | 'smtp.mailtrap.io' |
EMAIL_HOST_PASSWORD | '********************' |
EMAIL_HOST_USER | 'cce09ae4bc663c' |
EMAIL_PORT | '25' |
EMAIL_SSL_CERTFILE | None |
EMAIL_SSL_KEYFILE | '********************' |
EMAIL_SUBJECT_PREFIX | '[Django] ' |
EMAIL_TIMEOUT | None |
EMAIL_USE_LOCALTIME | False |
EMAIL_USE_SSL | False |
EMAIL_USE_TLS | False |
FILE_UPLOAD_DIRECTORY_PERMISSIONS | None |
FILE_UPLOAD_HANDLERS | ['django.core.files.uploadhandler.MemoryFileUploadHandler', 'django.core.files.uploadhandler.TemporaryFileUploadHandler'] |
FILE_UPLOAD_MAX_MEMORY_SIZE | 2621440 |
FILE_UPLOAD_PERMISSIONS | 420 |
FILE_UPLOAD_TEMP_DIR | None |
FIRST_DAY_OF_WEEK | 0 |
FIXTURE_DIRS | [] |
FORCE_SCRIPT_NAME | None |
FORMAT_MODULE_PATH | None |
FORM_RENDERER | 'django.forms.renderers.DjangoTemplates' |
IGNORABLE_404_URLS | [] |
INSTALLED_APPS | ['django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'core', 'simple_history', 'orient'] |
INTERNAL_IPS | [] |
LANGUAGES | [('af', 'Afrikaans'), ('ar', 'Arabic'), ('ar-dz', 'Algerian Arabic'), ('ast', 'Asturian'), ('az', 'Azerbaijani'), ('bg', 'Bulgarian'), ('be', 'Belarusian'), ('bn', 'Bengali'), ('br', 'Breton'), ('bs', 'Bosnian'), ('ca', 'Catalan'), ('cs', 'Czech'), ('cy', 'Welsh'), ('da', 'Danish'), ('de', 'German'), ('dsb', 'Lower Sorbian'), ('el', 'Greek'), ('en', 'English'), ('en-au', 'Australian English'), ('en-gb', 'British English'), ('eo', 'Esperanto'), ('es', 'Spanish'), ('es-ar', 'Argentinian Spanish'), ('es-co', 'Colombian Spanish'), ('es-mx', 'Mexican Spanish'), ('es-ni', 'Nicaraguan Spanish'), ('es-ve', 'Venezuelan Spanish'), ('et', 'Estonian'), ('eu', 'Basque'), ('fa', 'Persian'), ('fi', 'Finnish'), ('fr', 'French'), ('fy', 'Frisian'), ('ga', 'Irish'), ('gd', 'Scottish Gaelic'), ('gl', 'Galician'), ('he', 'Hebrew'), ('hi', 'Hindi'), ('hr', 'Croatian'), ('hsb', 'Upper Sorbian'), ('hu', 'Hungarian'), ('hy', 'Armenian'), ('ia', 'Interlingua'), ('id', 'Indonesian'), ('ig', 'Igbo'), ('io', 'Ido'), ('is', 'Icelandic'), ('it', 'Italian'), ('ja', 'Japanese'), ('ka', 'Georgian'), ('kab', 'Kabyle'), ('kk', 'Kazakh'), ('km', 'Khmer'), ('kn', 'Kannada'), ('ko', 'Korean'), ('ky', 'Kyrgyz'), ('lb', 'Luxembourgish'), ('lt', 'Lithuanian'), ('lv', 'Latvian'), ('mk', 'Macedonian'), ('ml', 'Malayalam'), ('mn', 'Mongolian'), ('mr', 'Marathi'), ('ms', 'Malay'), ('my', 'Burmese'), ('nb', 'Norwegian Bokmål'), ('ne', 'Nepali'), ('nl', 'Dutch'), ('nn', 'Norwegian Nynorsk'), ('os', 'Ossetic'), ('pa', 'Punjabi'), ('pl', 'Polish'), ('pt', 'Portuguese'), ('pt-br', 'Brazilian Portuguese'), ('ro', 'Romanian'), ('ru', 'Russian'), ('sk', 'Slovak'), ('sl', 'Slovenian'), ('sq', 'Albanian'), ('sr', 'Serbian'), ('sr-latn', 'Serbian Latin'), ('sv', 'Swedish'), ('sw', 'Swahili'), ('ta', 'Tamil'), ('te', 'Telugu'), ('tg', 'Tajik'), ('th', 'Thai'), ('tk', 'Turkmen'), ('tr', 'Turkish'), ('tt', 'Tatar'), ('udm', 'Udmurt'), ('uk', 'Ukrainian'), ('ur', 'Urdu'), ('uz', 'Uzbek'), ('vi', 'Vietnamese'), ('zh-hans', 'Simplified Chinese'), ('zh-hant', 'Traditional Chinese')] |
LANGUAGES_BIDI | ['he', 'ar', 'ar-dz', 'fa', 'ur'] |
LANGUAGE_CODE | 'pl-pl' |
LANGUAGE_COOKIE_AGE | None |
LANGUAGE_COOKIE_DOMAIN | None |
LANGUAGE_COOKIE_HTTPONLY | False |
LANGUAGE_COOKIE_NAME | 'django_language' |
LANGUAGE_COOKIE_PATH | '/' |
LANGUAGE_COOKIE_SAMESITE | None |
LANGUAGE_COOKIE_SECURE | False |
LDAP_PASS | '********************' |
LDAP_ROOT_DN | '' |
LDAP_SERVER | '' |
LDAP_USER | '' |
LOCALE_PATHS | [] |
LOGGING | {} |
LOGGING_CONFIG | 'logging.config.dictConfig' |
LOGIN_REDIRECT_URL | '/accounts/profile/' |
LOGIN_URL | '/accounts/login/' |
LOGOUT_REDIRECT_URL | None |
MANAGERS | [] |
MEDIA_ROOT | '/code/media' |
MEDIA_URL | '/media/' |
MESSAGE_STORAGE | 'django.contrib.messages.storage.fallback.FallbackStorage' |
MIDDLEWARE | ['django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'simple_history.middleware.HistoryRequestMiddleware'] |
MIGRATION_MODULES | {} |
MONTH_DAY_FORMAT | 'F j' |
NO_AUTH_URLS | [] |
NUMBER_GROUPING | 0 |
P24_CRC | '2744c3b7922c92aa' |
P24_ID | '110005' |
P24_KEY | '********************' |
PASSWORD_HASHERS | '********************' |
PASSWORD_RESET_TIMEOUT | '********************' |
PREPEND_WWW | False |
RESERVATION_DISABLED | False |
REST_FRAMEWORK | {'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination', 'PAGE_SIZE': 10} |
ROOT_URLCONF | 'website.urls' |
SECRET_KEY | '********************' |
SECURE_CONTENT_TYPE_NOSNIFF | True |
SECURE_CROSS_ORIGIN_OPENER_POLICY | 'same-origin' |
SECURE_HSTS_INCLUDE_SUBDOMAINS | False |
SECURE_HSTS_PRELOAD | False |
SECURE_HSTS_SECONDS | 0 |
SECURE_PROXY_SSL_HEADER | None |
SECURE_REDIRECT_EXEMPT | [] |
SECURE_REFERRER_POLICY | 'same-origin' |
SECURE_SSL_HOST | None |
SECURE_SSL_REDIRECT | False |
SERVER_EMAIL | 'root@localhost' |
SESSION_CACHE_ALIAS | 'default' |
SESSION_COOKIE_AGE | 1209600 |
SESSION_COOKIE_DOMAIN | None |
SESSION_COOKIE_HTTPONLY | True |
SESSION_COOKIE_NAME | 'sessionid' |
SESSION_COOKIE_PATH | '/' |
SESSION_COOKIE_SAMESITE | 'Lax' |
SESSION_COOKIE_SECURE | False |
SESSION_ENGINE | 'django.contrib.sessions.backends.db' |
SESSION_EXPIRE_AT_BROWSER_CLOSE | False |
SESSION_FILE_PATH | None |
SESSION_SAVE_EVERY_REQUEST | False |
SESSION_SERIALIZER | 'django.contrib.sessions.serializers.JSONSerializer' |
SETTINGS_MODULE | 'website.settings' |
SHORT_DATETIME_FORMAT | 'm/d/Y P' |
SHORT_DATE_FORMAT | 'm/d/Y' |
SIGNING_BACKEND | 'django.core.signing.TimestampSigner' |
SILENCED_SYSTEM_CHECKS | [] |
STATICFILES_DIRS | [PosixPath('/code/static'), '/var/www/static/'] |
STATICFILES_FINDERS | ['django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder'] |
STATICFILES_STORAGE | 'django.contrib.staticfiles.storage.StaticFilesStorage' |
STATIC_ROOT | None |
STATIC_URL | '/static/' |
TEMPLATES | [{'APP_DIRS': True, 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [PosixPath('/code/templates')], 'OPTIONS': {'context_processors': ['django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages']}}] |
TEST_NON_SERIALIZED_APPS | [] |
TEST_RUNNER | 'django.test.runner.DiscoverRunner' |
THOUSAND_SEPARATOR | ',' |
TIME_FORMAT | 'P' |
TIME_INPUT_FORMATS | ['%H:%M:%S', '%H:%M:%S.%f', '%H:%M'] |
TIME_ZONE | 'Europe/Warsaw' |
USE_DEPRECATED_PYTZ | False |
USE_I18N | True |
USE_L10N | True |
USE_THOUSAND_SEPARATOR | False |
USE_TZ | True |
USE_X_FORWARDED_HOST | False |
USE_X_FORWARDED_PORT | False |
WSGI_APPLICATION | 'website.wsgi.application' |
X_FRAME_OPTIONS | 'DENY' |
YEAR_MONTH_FORMAT | 'F Y' |
You’re seeing this error because you have DEBUG = True
in your
Django settings file. Change that to False
, and Django will
display a standard page generated by the handler for this status code.