DoesNotExist<br /> at /embedded_api/training/8/dates/


DoesNotExist
at /embedded_api/training/8/dates/

Training matching query does not exist.
Request Method: GET
Request URL: http://nsb-booking.clients.taliox.net/embedded_api/training/8/dates/
Django Version: 2.1.5
Exception Type: DoesNotExist
Exception Value:
Training matching query does not exist.
Exception Location: /usr/local/lib/python3.8/site-packages/django/db/models/query.py in get, line 397
Python Executable: /usr/local/bin/python
Python Version: 3.8.18
Python Path:
['/app/gabaeck',
 '/app',
 '/usr/local/bin',
 '/usr/local/lib/python38.zip',
 '/usr/local/lib/python3.8',
 '/usr/local/lib/python3.8/lib-dynload',
 '/root/.local/lib/python3.8/site-packages',
 '/usr/local/lib/python3.8/site-packages']
Server time: Sun, 14 Apr 2024 21:30:43 +0000

Traceback
Switch to copy-and-paste view

  • /usr/local/lib/python3.8/site-packages/django/core/handlers/exception.py in inner

    1.     This decorator is automatically applied to all middleware to ensure that
    2.     no middleware leaks an exception and that the next middleware in the stack
    3.     can rely on getting a response instead of an exception.
    4.     """
    5.     @wraps(get_response)
    6.     def inner(request):
    7.         try:
    1.             response = get_response(request)

      ...

    1.         except Exception as exc:
    2.             response = response_for_exception(request, exc)
    3.         return response
    4.     return inner
    5. 
      
    6. 
      
    Variable Value
    exc
    DoesNotExist('Training matching query does not exist.')
    get_response
    <bound method BaseHandler._get_response of <django.core.handlers.wsgi.WSGIHandler object at 0x7f543bce85e0>>
    request
    <WSGIRequest: GET '/embedded_api/training/8/dates/'>
  • /usr/local/lib/python3.8/site-packages/django/core/handlers/base.py in _get_response

    1.                 break
    2. 
      
    3.         if response is None:
    4.             wrapped_callback = self.make_view_atomic(callback)
    5.             try:
    6.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)
    7.             except Exception as e:
    1.                 response = self.process_exception_by_middleware(e, request)

      ...

    1. 
      
    2.         # Complain if the view returned None (a common error).
    3.         if response is None:
    4.             if isinstance(callback, types.FunctionType):    # FBV
    5.                 view_name = callback.__name__
    6.             else:                                           # CBV
    Variable Value
    callback
    <function TrainingDetailView at 0x7f5439babb80>
    callback_args
    ()
    callback_kwargs
    {'training_id': '8'}
    middleware_method
    <bound method CsrfViewMiddleware.process_view of <django.middleware.csrf.CsrfViewMiddleware object at 0x7f543a2a8100>>
    request
    <WSGIRequest: GET '/embedded_api/training/8/dates/'>
    resolver
    <URLResolver 'gabaeck.urls' (None:None) '^/'>
    resolver_match
    ResolverMatch(func=backend.views.embedded_api.TrainingDetailView, args=(), kwargs={'training_id': '8'}, url_name=embedded_api.training_detail, app_names=[], namespaces=[])
    response
    None
    self
    <django.core.handlers.wsgi.WSGIHandler object at 0x7f543bce85e0>
    wrapped_callback
    <function TrainingDetailView at 0x7f5439babb80>
  • /usr/local/lib/python3.8/site-packages/django/core/handlers/base.py in _get_response

    1.             response = middleware_method(request, callback, callback_args, callback_kwargs)
    2.             if response:
    3.                 break
    4. 
      
    5.         if response is None:
    6.             wrapped_callback = self.make_view_atomic(callback)
    7.             try:
    1.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

      ...

    1.             except Exception as e:
    2.                 response = self.process_exception_by_middleware(e, request)
    3. 
      
    4.         # Complain if the view returned None (a common error).
    5.         if response is None:
    6.             if isinstance(callback, types.FunctionType):    # FBV
    Variable Value
    callback
    <function TrainingDetailView at 0x7f5439babb80>
    callback_args
    ()
    callback_kwargs
    {'training_id': '8'}
    middleware_method
    <bound method CsrfViewMiddleware.process_view of <django.middleware.csrf.CsrfViewMiddleware object at 0x7f543a2a8100>>
    request
    <WSGIRequest: GET '/embedded_api/training/8/dates/'>
    resolver
    <URLResolver 'gabaeck.urls' (None:None) '^/'>
    resolver_match
    ResolverMatch(func=backend.views.embedded_api.TrainingDetailView, args=(), kwargs={'training_id': '8'}, url_name=embedded_api.training_detail, app_names=[], namespaces=[])
    response
    None
    self
    <django.core.handlers.wsgi.WSGIHandler object at 0x7f543bce85e0>
    wrapped_callback
    <function TrainingDetailView at 0x7f5439babb80>
  • /usr/local/lib/python3.8/site-packages/django/views/generic/base.py in view

    1.         def view(request, *args, **kwargs):
    2.             self = cls(**initkwargs)
    3.             if hasattr(self, 'get') and not hasattr(self, 'head'):
    4.                 self.head = self.get
    5.             self.request = request
    6.             self.args = args
    7.             self.kwargs = kwargs
    1.             return self.dispatch(request, *args, **kwargs)

      ...

    1.         view.view_class = cls
    2.         view.view_initkwargs = initkwargs
    3. 
      
    4.         # take name and docstring from class
    5.         update_wrapper(view, cls, updated=())
    6. 
      
    Variable Value
    args
    ()
    cls
    <class 'backend.views.embedded_api.TrainingDetailView'>
    initkwargs
    {}
    kwargs
    {'training_id': '8'}
    request
    <WSGIRequest: GET '/embedded_api/training/8/dates/'>
    self
    <backend.views.embedded_api.TrainingDetailView object at 0x7f54392d4820>
  • /usr/local/lib/python3.8/site-packages/django/views/generic/base.py in dispatch

    1.         # Try to dispatch to the right method; if a method doesn't exist,
    2.         # defer to the error handler. Also defer to the error handler if the
    3.         # request method isn't on the approved list.
    4.         if request.method.lower() in self.http_method_names:
    5.             handler = getattr(self, request.method.lower(), self.http_method_not_allowed)
    6.         else:
    7.             handler = self.http_method_not_allowed
    1.         return handler(request, *args, **kwargs)

      ...

    1. 
      
    2.     def http_method_not_allowed(self, request, *args, **kwargs):
    3.         logger.warning(
    4.             'Method Not Allowed (%s): %s', request.method, request.path,
    5.             extra={'status_code': 405, 'request': request}
    6.         )
    Variable Value
    args
    ()
    handler
    <bound method TrainingDetailView.get of <backend.views.embedded_api.TrainingDetailView object at 0x7f54392d4820>>
    kwargs
    {'training_id': '8'}
    request
    <WSGIRequest: GET '/embedded_api/training/8/dates/'>
    self
    <backend.views.embedded_api.TrainingDetailView object at 0x7f54392d4820>
  • /app/backend/views/embedded_api.py in get

    1. class CatchallView(views.View):
    2.     def get(self, request: HttpRequest):
    3.         path = request.GET.get("p")
    4. 
      
    5. 
      
    6. class TrainingDetailView(views.View):
    7.     def get(self, request: HttpRequest, training_id):
    1.         training = Training.objects.get(pk=training_id)

      ...

    1. 
      
    2.         training_dates = (
    3.             training.trainingdate_set
    4.             .filter(start__gt=timezone.now())
    5.             .filter(deleted_at__isnull=True)
    6.             .exclude(status=TrainingDate.CANCELED)
    Variable Value
    request
    <WSGIRequest: GET '/embedded_api/training/8/dates/'>
    self
    <backend.views.embedded_api.TrainingDetailView object at 0x7f54392d4820>
    training_id
    '8'
  • /usr/local/lib/python3.8/site-packages/django/db/models/manager.py in manager_method

    1.     def check(self, **kwargs):
    2.         return []
    3. 
      
    4.     @classmethod
    5.     def _get_queryset_methods(cls, queryset_class):
    6.         def create_method(name, method):
    7.             def manager_method(self, *args, **kwargs):
    1.                 return getattr(self.get_queryset(), name)(*args, **kwargs)

      ...

    1.             manager_method.__name__ = method.__name__
    2.             manager_method.__doc__ = method.__doc__
    3.             return manager_method
    4. 
      
    5.         new_methods = {}
    6.         for name, method in inspect.getmembers(queryset_class, predicate=inspect.isfunction):
    Variable Value
    args
    ()
    kwargs
    {'pk': '8'}
    name
    'get'
    self
    <backend.models.page_item.TrainingManager object at 0x7f543af3fdc0>
  • /usr/local/lib/python3.8/site-packages/django/db/models/query.py in get

    1.         clone = self.filter(*args, **kwargs)
    2.         if self.query.can_filter() and not self.query.distinct_fields:
    3.             clone = clone.order_by()
    4.         num = len(clone)
    5.         if num == 1:
    6.             return clone._result_cache[0]
    7.         if not num:
    1.             raise self.model.DoesNotExist(

      ...

    1.                 "%s matching query does not exist." %
    2.                 self.model._meta.object_name
    3.             )
    4.         raise self.model.MultipleObjectsReturned(
    5.             "get() returned more than one %s -- it returned %s!" %
    6.             (self.model._meta.object_name, num)
    Variable Value
    args
    ()
    clone
    <QuerySet []>
    kwargs
    {'pk': '8'}
    num
    0
    self
    <QuerySet [<Training: PI:6 training - Bridging gaps – leading multi-cultural and multi-generational teams>, <Training: PI:9 training - Decarbonization in Shipping - an introduction>, <Training: PI:1 training - Enhancing Safety Leadership: When to exercise authority that ensures safety (group training)>, <Training: PI:4 training - For Experienced Seafarers only: Deepening the Principles of Voyager Planning​>, <Training: PI:7 training - Planning Techniques that help the Crew to keep Work in Track>, <Training: PI:5 training - Report writing (tailor-made)>, <Training: PI:2 training - Simulator learning: Brushing up proficiency as bridge team>, <Training: PI:3 training - Utilizing the simulator: Promotion check | New Joiner check (tailor-made)​>]>




Request information

USER

AnonymousUser

GET

No GET data

POST

No POST data

FILES

No FILES data

No cookie data

META

Variable Value
HTTP_ACCEPT
'*/*'
HTTP_ACCEPT_ENCODING
'deflate, gzip, br'
HTTP_CONNECTION
'close'
HTTP_HOST
'nsb-booking.clients.taliox.net'
HTTP_USER_AGENT
'WordPress/6.5.2; https://nsb-academy.com'
HTTP_X_FORWARDED_FOR
'116.202.114.110'
HTTP_X_FORWARDED_PROTO
'https'
HTTP_X_REAL_IP
'116.202.114.110'
PATH_INFO
'/embedded_api/training/8/dates/'
QUERY_STRING
''
RAW_URI
'/embedded_api/training/8/dates/'
REMOTE_ADDR
'192.168.32.1'
REMOTE_PORT
'35260'
REQUEST_METHOD
'GET'
SCRIPT_NAME
''
SERVER_NAME
'0.0.0.0'
SERVER_PORT
'8000'
SERVER_PROTOCOL
'HTTP/1.0'
SERVER_SOFTWARE
'gunicorn/20.1.0'
gunicorn.socket
<socket.socket fd=8, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('192.168.32.4', 8000), raddr=('192.168.32.1', 35260)>
wsgi.errors
<gunicorn.http.wsgi.WSGIErrorsWrapper object at 0x7f54392ed820>
wsgi.file_wrapper
''
wsgi.input
<gunicorn.http.body.Body object at 0x7f54392ed250>
wsgi.input_terminated
True
wsgi.multiprocess
True
wsgi.multithread
False
wsgi.run_once
False
wsgi.url_scheme
'http'
wsgi.version
(1, 0)

Settings

Using settings module gabaeck.settings_prod

Setting Value
ABSOLUTE_URL_OVERRIDES
{}
ADMINS
[]
ALLOWED_HOSTS
['nsbbackend.staging.taliox.net', 'nsb-booking.clients.taliox.net']
APPEND_SLASH
True
AUTHENTICATION_BACKENDS
['django.contrib.auth.backends.ModelBackend']
AUTH_PASSWORD_VALIDATORS
'********************'
AUTH_USER_MODEL
'accounts.User'
BASE_DIR
'/app'
CACHES
{'cron_cache': {'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
                'LOCATION': 'cache_table_cron'},
 'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'}}
CACHE_MIDDLEWARE_ALIAS
'default'
CACHE_MIDDLEWARE_KEY_PREFIX
'********************'
CACHE_MIDDLEWARE_SECONDS
600
CRON_CLASSES
['backend.cronjobs.SendMailCronJob']
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
CURRENCIES
('USD', 'EUR', 'MXN', 'CNY', 'THB', 'MYR', 'DKK', 'NOK', 'CHF')
DATABASES
{'default': {'ATOMIC_REQUESTS': False,
             'AUTOCOMMIT': True,
             'CONN_MAX_AGE': 0,
             'ENGINE': 'django.db.backends.postgresql',
             'HOST': 'database',
             'NAME': 'elephant',
             'OPTIONS': {},
             'PASSWORD': '********************',
             'PORT': '5432',
             'TEST': {'CHARSET': None,
                      'COLLATION': None,
                      'MIRROR': None,
                      'NAME': None},
             'TIME_ZONE': None,
             'USER': 'elephant'}}
DATABASE_ROUTERS
[]
DATA_UPLOAD_MAX_MEMORY_SIZE
2621440
DATA_UPLOAD_MAX_NUMBER_FIELDS
1000
DATETIME_FORMAT
'd F Y H:i'
DATETIME_INPUT_FORMATS
['%Y-%m-%d %H:%M:%S',
 '%Y-%m-%d %H:%M:%S.%f',
 '%Y-%m-%d %H:%M',
 '%Y-%m-%d',
 '%m/%d/%Y %H:%M:%S',
 '%m/%d/%Y %H:%M:%S.%f',
 '%m/%d/%Y %H:%M',
 '%m/%d/%Y',
 '%m/%d/%y %H:%M:%S',
 '%m/%d/%y %H:%M:%S.%f',
 '%m/%d/%y %H:%M',
 '%m/%d/%y']
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_CHARSET
'utf-8'
DEFAULT_CONTENT_TYPE
'text/html'
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_PAGE_SIZE
20
DEFAULT_TABLESPACE
''
DISALLOWED_USER_AGENTS
[]
DJANGO_CRON_CACHE
'cron_cache'
EMAIL_BACKEND
'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST
'localhost'
EMAIL_HOST_PASSWORD
'********************'
EMAIL_HOST_USER
''
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_CHARSET
'utf-8'
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
None
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
['backend.apps.BackendConfig',
 'backapi.apps.BackapiConfig',
 'accounts',
 'django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'django_icons',
 'rest_framework',
 'django.forms',
 'djmoney',
 'django_cron',
 'elephant.apps.ElephantConfig']
INTERNAL_IPS
['127.0.0.1']
LANGUAGES
[('en', 'English')]
LANGUAGES_BIDI
['he', 'ar', 'fa', 'ur']
LANGUAGE_CODE
'en'
LANGUAGE_COOKIE_AGE
None
LANGUAGE_COOKIE_DOMAIN
None
LANGUAGE_COOKIE_NAME
'django_language'
LANGUAGE_COOKIE_PATH
'/'
LOCALE_PATHS
[]
LOGGING
{'filters': {'require_debug_true': {'()': 'django.utils.log.RequireDebugTrue'}},
 'handlers': {'console': {'class': 'logging.StreamHandler',
                          'filters': ['require_debug_true'],
                          'level': 'DEBUG'}},
 'loggers': {'django.db.backends': {'handlers': ['console'], 'level': 'DEBUG'}},
 'version': 1}
LOGGING_CONFIG
'logging.config.dictConfig'
LOGIN_REDIRECT_URL
'/'
LOGIN_URL
'/login'
LOGOUT_REDIRECT_URL
'/login/'
MANAGERS
[]
MEDIA_ROOT
'/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.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware',
 'django.middleware.locale.LocaleMiddleware']
MIGRATION_MODULES
{}
MONTH_DAY_FORMAT
'F j'
NUMBER_GROUPING
0
PASSWORD_HASHERS
'********************'
PASSWORD_RESET_TIMEOUT_DAYS
'********************'
PREPEND_WWW
False
REST_FRAMEWORK
{'DEFAULT_AUTHENTICATION_CLASSES': ('rest_framework.authentication.BasicAuthentication',
                                    'rest_framework.authentication.SessionAuthentication')}
ROOT_URLCONF
'gabaeck.urls'
ROUND_HALF_EVEN
'ROUND_HALF_EVEN'
SECRET_KEY
'********************'
SECURE_BROWSER_XSS_FILTER
False
SECURE_CONTENT_TYPE_NOSNIFF
False
SECURE_HSTS_INCLUDE_SUBDOMAINS
False
SECURE_HSTS_PRELOAD
False
SECURE_HSTS_SECONDS
0
SECURE_PROXY_SSL_HEADER
None
SECURE_REDIRECT_EXEMPT
[]
SECURE_SSL_HOST
None
SECURE_SSL_REDIRECT
False
SELECTABLE_PAGE_SIZES
[20, 50, 100]
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
'gabaeck.settings_prod'
SHORT_DATETIME_FORMAT
'm/d/Y P'
SHORT_DATE_FORMAT
'm/d/Y'
SIGNING_BACKEND
'django.core.signing.TimestampSigner'
SILENCED_SYSTEM_CHECKS
[]
STATICFILES_DIRS
[]
STATICFILES_FINDERS
['django.contrib.staticfiles.finders.FileSystemFinder',
 'django.contrib.staticfiles.finders.AppDirectoriesFinder']
STATICFILES_STORAGE
'django.contrib.staticfiles.storage.StaticFilesStorage'
STATIC_ROOT
'/static'
STATIC_URL
'/static/'
TEMPLATES
[{'APP_DIRS': True,
  'BACKEND': 'django.template.backends.django.DjangoTemplates',
  'DIRS': [],
  'OPTIONS': {'builtins': ['elephant.templatetags.translation'],
              '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
'UTC'
USE_I18N
True
USE_L10N
False
USE_THOUSAND_SEPARATOR
False
USE_TZ
False
USE_X_FORWARDED_HOST
False
USE_X_FORWARDED_PORT
False
WSGI_APPLICATION
'gabaeck.wsgi.application'
X_FRAME_OPTIONS
'SAMEORIGIN'
YEAR_MONTH_FORMAT
'F Y'
_FORMATTER
<moneyed.localization.CurrencyFormatter object at 0x7f543c5e3940>

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.