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/python3.8
Python Version: 3.8.20
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, 22 Dec 2024 06:19:39 +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 0x7f0ea7138d90>>
    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 0x7f0ea4d0bf70>
    callback_args
    ()
    callback_kwargs
    {'training_id': '8'}
    middleware_method
    <bound method CsrfViewMiddleware.process_view of <django.middleware.csrf.CsrfViewMiddleware object at 0x7f0ea54a7b50>>
    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 0x7f0ea7138d90>
    wrapped_callback
    <function TrainingDetailView at 0x7f0ea4d0bf70>
  • /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 0x7f0ea4d0bf70>
    callback_args
    ()
    callback_kwargs
    {'training_id': '8'}
    middleware_method
    <bound method CsrfViewMiddleware.process_view of <django.middleware.csrf.CsrfViewMiddleware object at 0x7f0ea54a7b50>>
    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 0x7f0ea7138d90>
    wrapped_callback
    <function TrainingDetailView at 0x7f0ea4d0bf70>
  • /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 0x7f0ea487aac0>
  • /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 0x7f0ea487aac0>>
    kwargs
    {'training_id': '8'}
    request
    <WSGIRequest: GET '/embedded_api/training/8/dates/'>
    self
    <backend.views.embedded_api.TrainingDetailView object at 0x7f0ea487aac0>
  • /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 0x7f0ea487aac0>
    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 0x7f0ea613d0a0>
  • /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:11 training - Alternative Fuels>, <Training: PI:19 training - Bad Weather Preparation>, <Training: PI:10 training - Brushing up: ColReg knowledge>, <Training: PI:2 training - Brushing up proficiency as bridge team>, <Training: PI:23 training - Building a safer workplace through Good Housekeeping>, <Training: PI:9 training - Decarbonization in Shipping>, <Training: PI:21 training - Drain Oil Analysis -  Early recognition of engine problems>, <Training: PI:26 training - Engine Power Limitation>, <Training: PI:1 training - Enhancing Safety Leadership: a shift from compliance to commitment>, <Training: PI:6 training - Evolving multi-cultural and multi-generational teams>, <Training: PI:17 training - Increasing Awareness:  Risk Assessment>, <Training: PI:16 training - Issuance of Crew/Technical Dispensation/Exemption Letters>, <Training: PI:15 training - Lesson learned from Oil Spill Incident>, <Training: PI:22 training - Lubrication Oil Management>, <Training: PI:12 training - Machinery Space Fires>, <Training: PI:14 training - Marine Engine Troubles:  Reason and Cure!>, <Training: PI:18 training - Mooring Operations>, <Training: PI:7 training - Planning Techniques that help the crew to keep work in track>, <Training: PI:3 training - Promotion check | New Joiner check (tailor-made)​>, <Training: PI:5 training - Report writing (tailor-made)>, '...(remaining elements truncated)...']>




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.7.1; 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
'55870'
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=9, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('192.168.32.4', 8000), raddr=('192.168.32.1', 55870)>
wsgi.errors
<gunicorn.http.wsgi.WSGIErrorsWrapper object at 0x7f0ea47a9e50>
wsgi.file_wrapper
''
wsgi.input
<gunicorn.http.body.Body object at 0x7f0ea47a9f40>
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 0x7f0ea8734940>

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.