TemplateSyntaxError at /surveys/s/H8d9tlVs0BgeAp1XA4NczXoiCcqAaN0r_lc0Eb63U1Y/

Invalid filter: 'split'
Request Method: GET
Request URL: http://localhost:8000/surveys/s/H8d9tlVs0BgeAp1XA4NczXoiCcqAaN0r_lc0Eb63U1Y/
Django Version: 6.0.1
Exception Type: TemplateSyntaxError
Exception Value:
Invalid filter: 'split'
Exception Location: /home/ismail/projects/HH/.venv/lib/python3.12/site-packages/django/template/base.py, line 682, in find_filter
Raised during: apps.surveys.public_views.survey_form
Python Executable: /home/ismail/projects/HH/.venv/bin/python3
Python Version: 3.12.3
Python Path:
['/home/ismail/projects/HH',
 '/home/ismail/projects/HH',
 '/usr/lib/python312.zip',
 '/usr/lib/python3.12',
 '/usr/lib/python3.12/lib-dynload',
 '/home/ismail/projects/HH/.venv/lib/python3.12/site-packages',
 '__editable__.px360-0.1.0.finder.__path_hook__']
Server time: Tue, 20 Jan 2026 18:03:50 +0300

Error during template rendering

In template /home/ismail/projects/HH/templates/surveys/public_form.html, error at line 451

Invalid filter: 'split'

441 <span>
442 {% if language == 'ar' %}محتمل جداً{% else %}Extremely likely{% endif %}
443 </span>
444 </div>
445 <input type="hidden" name="question_{{ question.id }}" id="question_{{ question.id }}"
446 {% if question.is_required %}required{% endif %}>
447
448 <!-- Likert Scale -->
449 {% elif question.question_type == 'likert' %}
450 <div class="likert-scale">
451 {% for value, label in "1:Strongly Disagree,2:Disagree,3:Neutral,4:Agree,5:Strongly Agree"|split:"," %}
452 {% with parts=label|split:":" %}
453 <label class="likert-option">
454 <input type="radio" name="question_{{ question.id }}" value="{{ parts.0 }}"
455 {% if question.is_required %}required{% endif %}
456 onchange="selectLikert(this)">
457 <span>{{ parts.1 }}</span>
458 </label>
459 {% endwith %}
460 {% endfor %}
461 </div>

Traceback Switch to copy-and-paste view

  • /home/ismail/projects/HH/.venv/lib/python3.12/site-packages/django/core/handlers/exception.py, line 55, in inner
    1.         return inner
    2.     else:
    3.         @wraps(get_response)
    4.         def inner(request):
    5.             try:
    1.                 response = get_response(request)
                                     ^^^^^^^^^^^^^^^^^^^^^
    1.             except Exception as exc:
    2.                 response = response_for_exception(request, exc)
    3.             return response
    4.         return inner
    Local vars
    Variable Value
    exc
    TemplateSyntaxError("Template: /home/ismail/projects/HH/templates/surveys/public_form.html, Invalid filter: 'split'")
    get_response
    <bound method BaseHandler._get_response of <django.core.handlers.wsgi.WSGIHandler object at 0x72a9b4a4b440>>
    request
    <WSGIRequest: GET '/surveys/s/H8d9tlVs0BgeAp1XA4NczXoiCcqAaN0r_lc0Eb63U1Y/'>
  • /home/ismail/projects/HH/.venv/lib/python3.12/site-packages/django/core/handlers/base.py, line 198, in _get_response
    1.         if response is None:
    2.             wrapped_callback = self.make_view_atomic(callback)
    3.             # If it is an asynchronous view, run it in a subthread.
    4.             if iscoroutinefunction(wrapped_callback):
    5.                 wrapped_callback = async_to_sync(wrapped_callback)
    6.             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.                 if response is None:
    4.                     raise
    5.         # Complain if the view returned None (a common error).
    Local vars
    Variable Value
    callback
    <function survey_form at 0x72a9b052dee0>
    callback_args
    ()
    callback_kwargs
    {'token': 'H8d9tlVs0BgeAp1XA4NczXoiCcqAaN0r_lc0Eb63U1Y'}
    middleware_method
    <bound method CsrfViewMiddleware.process_view of <CsrfViewMiddleware get_response=convert_exception_to_response.<locals>.inner>>
    request
    <WSGIRequest: GET '/surveys/s/H8d9tlVs0BgeAp1XA4NczXoiCcqAaN0r_lc0Eb63U1Y/'>
    response
    None
    self
    <django.core.handlers.wsgi.WSGIHandler object at 0x72a9b4a4b440>
    wrapped_callback
    <function survey_form at 0x72a9b052dee0>
  • /home/ismail/projects/HH/.venv/lib/python3.12/site-packages/django/views/decorators/http.py, line 64, in inner
    1.                         "Method Not Allowed (%s): %s",
    2.                         request.method,
    3.                         request.path,
    4.                         response=response,
    5.                         request=request,
    6.                     )
    7.                     return response
    1.                 return func(request, *args, **kwargs)
                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    1.         return inner
    2.     return decorator
    Local vars
    Variable Value
    args
    ()
    func
    <function survey_form at 0x72a9b052de40>
    kwargs
    {'token': 'H8d9tlVs0BgeAp1XA4NczXoiCcqAaN0r_lc0Eb63U1Y'}
    request
    <WSGIRequest: GET '/surveys/s/H8d9tlVs0BgeAp1XA4NczXoiCcqAaN0r_lc0Eb63U1Y/'>
    request_method_list
    ['GET', 'POST']
  • /home/ismail/projects/HH/apps/surveys/public_views.py, line 189, in survey_form
    1.     context = {
    2.         'survey': survey,
    3.         'questions': questions,
    4.         'language': language,
    5.         'total_questions': questions.count(),
    6.     }
    7.     
    1.     return render(request, 'surveys/public_form.html', context)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    1. def thank_you(request, token):
    2.     """Thank you page after survey completion"""
    3.     try:
    4.         survey = SurveyInstance.objects.select_related(
    Local vars
    Variable Value
    context
    {'language': 'en',
     'questions': <QuerySet [<SurveyQuestion: OPD Experience Survey - Q1: How satisfied were you with the registration proce>, <SurveyQuestion: OPD Experience Survey - Q2: How long did you wait to see the doctor?>, <SurveyQuestion: OPD Experience Survey - Q3: Did the doctor listen to your concerns?>, <SurveyQuestion: OPD Experience Survey - Q4: Did the doctor explain your diagnosis and treatmen>, <SurveyQuestion: OPD Experience Survey - Q5: How satisfied were you with the lab services?>, <SurveyQuestion: OPD Experience Survey - Q6: How satisfied were you with the pharmacy services?>, <SurveyQuestion: OPD Experience Survey - Q7: How would you rate your overall visit experience?>]>,
     'survey': <SurveyInstance: OPD Experience Survey - Full Journey>,
     'total_questions': 7}
    language
    'en'
    questions
    <QuerySet [<SurveyQuestion: OPD Experience Survey - Q1: How satisfied were you with the registration proce>, <SurveyQuestion: OPD Experience Survey - Q2: How long did you wait to see the doctor?>, <SurveyQuestion: OPD Experience Survey - Q3: Did the doctor listen to your concerns?>, <SurveyQuestion: OPD Experience Survey - Q4: Did the doctor explain your diagnosis and treatmen>, <SurveyQuestion: OPD Experience Survey - Q5: How satisfied were you with the lab services?>, <SurveyQuestion: OPD Experience Survey - Q6: How satisfied were you with the pharmacy services?>, <SurveyQuestion: OPD Experience Survey - Q7: How would you rate your overall visit experience?>]>
    request
    <WSGIRequest: GET '/surveys/s/H8d9tlVs0BgeAp1XA4NczXoiCcqAaN0r_lc0Eb63U1Y/'>
    survey
    <SurveyInstance: OPD Experience Survey - Full Journey>
    token
    'H8d9tlVs0BgeAp1XA4NczXoiCcqAaN0r_lc0Eb63U1Y'
  • /home/ismail/projects/HH/.venv/lib/python3.12/site-packages/django/shortcuts.py, line 25, in render
    1. def render(
    2.     request, template_name, context=None, content_type=None, status=None, using=None
    3. ):
    4.     """
    5.     Return an HttpResponse whose content is filled with the result of calling
    6.     django.template.loader.render_to_string() with the passed arguments.
    7.     """
    1.     content = loader.render_to_string(template_name, context, request, using=using)
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    1.     return HttpResponse(content, content_type, status)
    2. def redirect(to, *args, permanent=False, preserve_request=False, **kwargs):
    3.     """
    4.     Return an HttpResponseRedirect to the appropriate URL for the arguments
    Local vars
    Variable Value
    content_type
    None
    context
    {'language': 'en',
     'questions': <QuerySet [<SurveyQuestion: OPD Experience Survey - Q1: How satisfied were you with the registration proce>, <SurveyQuestion: OPD Experience Survey - Q2: How long did you wait to see the doctor?>, <SurveyQuestion: OPD Experience Survey - Q3: Did the doctor listen to your concerns?>, <SurveyQuestion: OPD Experience Survey - Q4: Did the doctor explain your diagnosis and treatmen>, <SurveyQuestion: OPD Experience Survey - Q5: How satisfied were you with the lab services?>, <SurveyQuestion: OPD Experience Survey - Q6: How satisfied were you with the pharmacy services?>, <SurveyQuestion: OPD Experience Survey - Q7: How would you rate your overall visit experience?>]>,
     'survey': <SurveyInstance: OPD Experience Survey - Full Journey>,
     'total_questions': 7}
    request
    <WSGIRequest: GET '/surveys/s/H8d9tlVs0BgeAp1XA4NczXoiCcqAaN0r_lc0Eb63U1Y/'>
    status
    None
    template_name
    'surveys/public_form.html'
    using
    None
  • /home/ismail/projects/HH/.venv/lib/python3.12/site-packages/django/template/loader.py, line 61, in render_to_string
    1.     Load a template and render it with a context. Return a string.
    2.     template_name may be a string or a list of strings.
    3.     """
    4.     if isinstance(template_name, (list, tuple)):
    5.         template = select_template(template_name, using=using)
    6.     else:
    1.         template = get_template(template_name, using=using)
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    1.     return template.render(context, request)
    2. def _engine_list(using=None):
    3.     return engines.all() if using is None else [engines[using]]
    Local vars
    Variable Value
    context
    {'language': 'en',
     'questions': <QuerySet [<SurveyQuestion: OPD Experience Survey - Q1: How satisfied were you with the registration proce>, <SurveyQuestion: OPD Experience Survey - Q2: How long did you wait to see the doctor?>, <SurveyQuestion: OPD Experience Survey - Q3: Did the doctor listen to your concerns?>, <SurveyQuestion: OPD Experience Survey - Q4: Did the doctor explain your diagnosis and treatmen>, <SurveyQuestion: OPD Experience Survey - Q5: How satisfied were you with the lab services?>, <SurveyQuestion: OPD Experience Survey - Q6: How satisfied were you with the pharmacy services?>, <SurveyQuestion: OPD Experience Survey - Q7: How would you rate your overall visit experience?>]>,
     'survey': <SurveyInstance: OPD Experience Survey - Full Journey>,
     'total_questions': 7}
    request
    <WSGIRequest: GET '/surveys/s/H8d9tlVs0BgeAp1XA4NczXoiCcqAaN0r_lc0Eb63U1Y/'>
    template_name
    'surveys/public_form.html'
    using
    None
  • /home/ismail/projects/HH/.venv/lib/python3.12/site-packages/django/template/loader.py, line 15, in get_template
    1.     Raise TemplateDoesNotExist if no such template exists.
    2.     """
    3.     chain = []
    4.     engines = _engine_list(using)
    5.     for engine in engines:
    6.         try:
    1.             return engine.get_template(template_name)
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    1.         except TemplateDoesNotExist as e:
    2.             chain.append(e)
    3.     raise TemplateDoesNotExist(template_name, chain=chain)
    Local vars
    Variable Value
    chain
    []
    engine
    <django.template.backends.django.DjangoTemplates object at 0x72a9b351a120>
    engines
    [<django.template.backends.django.DjangoTemplates object at 0x72a9b351a120>]
    template_name
    'surveys/public_form.html'
    using
    None
  • /home/ismail/projects/HH/.venv/lib/python3.12/site-packages/django/template/backends/django.py, line 79, in get_template
    1.         return errors
    2.     def from_string(self, template_code):
    3.         return Template(self.engine.from_string(template_code), self)
    4.     def get_template(self, template_name):
    5.         try:
    1.             return Template(self.engine.get_template(template_name), self)
                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    1.         except TemplateDoesNotExist as exc:
    2.             reraise(exc, self)
    3.     def get_templatetag_libraries(self, custom_libraries):
    4.         """
    5.         Return a collation of template tag libraries from installed
    Local vars
    Variable Value
    self
    <django.template.backends.django.DjangoTemplates object at 0x72a9b351a120>
    template_name
    'surveys/public_form.html'
  • /home/ismail/projects/HH/.venv/lib/python3.12/site-packages/django/template/engine.py, line 186, in get_template
    1.             template_name, _, partial_name = template_name.partition("#")
    2.         except AttributeError:
    3.             raise TemplateDoesNotExist(original_name)
    4.         if not template_name:
    5.             raise TemplateDoesNotExist(original_name)
    1.         template, origin = self.find_template(template_name)
                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    1.         if not hasattr(template, "render"):
    2.             # template needs to be compiled
    3.             template = Template(template, origin, template_name, engine=self)
    4.         if not partial_name:
    5.             return template
    Local vars
    Variable Value
    _
    ''
    original_name
    'surveys/public_form.html'
    partial_name
    ''
    self
    <Engine: dirs=[PosixPath('/home/ismail/projects/HH/templates')] app_dirs=True context_processors=['django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', 'django.template.context_processors.i18n', 'apps.core.context_processors.sidebar_counts', 'apps.core.context_processors.hospital_context'] debug=True loaders=[('django.template.loaders.cached.Loader', ['django.template.loaders.filesystem.Loader', 'django.template.loaders.app_directories.Loader'])] string_if_invalid='' file_charset='utf-8' libraries={'cache': 'django.templatetags.cache', 'i18n': 'django.templatetags.i18n', 'l10n': 'django.templatetags.l10n', 'static': 'django.templatetags.static', 'tz': 'django.templatetags.tz', 'admin_list': 'django.contrib.admin.templatetags.admin_list', 'admin_modify': 'django.contrib.admin.templatetags.admin_modify', 'admin_urls': 'django.contrib.admin.templatetags.admin_urls', 'log': 'django.contrib.admin.templatetags.log', 'auth': 'django.contrib.auth.templatetags.auth', 'rest_framework': 'rest_framework.templatetags.rest_framework', 'hospital_filters': 'apps.core.templatetags.hospital_filters', 'math': 'apps.complaints.templatetags.math', 'action_icons': 'apps.social.templatetags.action_icons', 'social_filters': 'apps.social.templatetags.social_filters', 'social_icons': 'apps.social.templatetags.social_icons', 'star_rating': 'apps.social.templatetags.star_rating', 'sentiment_tags': 'apps.ai_engine.templatetags.sentiment_tags', 'standards_filters': 'apps.standards.templatetags.standards_filters', 'debugger_tags': 'django_extensions.templatetags.debugger_tags', 'highlighting': 'django_extensions.templatetags.highlighting', 'indent_text': 'django_extensions.templatetags.indent_text', 'syntax_color': 'django_extensions.templatetags.syntax_color', 'widont': 'django_extensions.templatetags.widont'} builtins=['django.template.defaulttags', 'django.template.defaultfilters', 'django.template.loader_tags'] autoescape=True>
    template_name
    'surveys/public_form.html'
  • /home/ismail/projects/HH/.venv/lib/python3.12/site-packages/django/template/engine.py, line 159, in find_template
    1.                 "Invalid value in template loaders configuration: %r" % loader
    2.             )
    3.     def find_template(self, name, dirs=None, skip=None):
    4.         tried = []
    5.         for loader in self.template_loaders:
    6.             try:
    1.                 template = loader.get_template(name, skip=skip)
                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    1.                 return template, template.origin
    2.             except TemplateDoesNotExist as e:
    3.                 tried.extend(e.tried)
    4.         raise TemplateDoesNotExist(name, tried=tried)
    5.     def from_string(self, template_code):
    Local vars
    Variable Value
    dirs
    None
    loader
    <django.template.loaders.cached.Loader object at 0x72a9b002d190>
    name
    'surveys/public_form.html'
    self
    <Engine: dirs=[PosixPath('/home/ismail/projects/HH/templates')] app_dirs=True context_processors=['django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', 'django.template.context_processors.i18n', 'apps.core.context_processors.sidebar_counts', 'apps.core.context_processors.hospital_context'] debug=True loaders=[('django.template.loaders.cached.Loader', ['django.template.loaders.filesystem.Loader', 'django.template.loaders.app_directories.Loader'])] string_if_invalid='' file_charset='utf-8' libraries={'cache': 'django.templatetags.cache', 'i18n': 'django.templatetags.i18n', 'l10n': 'django.templatetags.l10n', 'static': 'django.templatetags.static', 'tz': 'django.templatetags.tz', 'admin_list': 'django.contrib.admin.templatetags.admin_list', 'admin_modify': 'django.contrib.admin.templatetags.admin_modify', 'admin_urls': 'django.contrib.admin.templatetags.admin_urls', 'log': 'django.contrib.admin.templatetags.log', 'auth': 'django.contrib.auth.templatetags.auth', 'rest_framework': 'rest_framework.templatetags.rest_framework', 'hospital_filters': 'apps.core.templatetags.hospital_filters', 'math': 'apps.complaints.templatetags.math', 'action_icons': 'apps.social.templatetags.action_icons', 'social_filters': 'apps.social.templatetags.social_filters', 'social_icons': 'apps.social.templatetags.social_icons', 'star_rating': 'apps.social.templatetags.star_rating', 'sentiment_tags': 'apps.ai_engine.templatetags.sentiment_tags', 'standards_filters': 'apps.standards.templatetags.standards_filters', 'debugger_tags': 'django_extensions.templatetags.debugger_tags', 'highlighting': 'django_extensions.templatetags.highlighting', 'indent_text': 'django_extensions.templatetags.indent_text', 'syntax_color': 'django_extensions.templatetags.syntax_color', 'widont': 'django_extensions.templatetags.widont'} builtins=['django.template.defaulttags', 'django.template.defaultfilters', 'django.template.loader_tags'] autoescape=True>
    skip
    None
    tried
    []
  • /home/ismail/projects/HH/.venv/lib/python3.12/site-packages/django/template/loaders/cached.py, line 57, in get_template
    1.             if isinstance(cached, type) and issubclass(cached, TemplateDoesNotExist):
    2.                 raise cached(template_name)
    3.             elif isinstance(cached, TemplateDoesNotExist):
    4.                 raise copy_exception(cached)
    5.             return cached
    6.         try:
    1.             template = super().get_template(template_name, skip)
                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    1.         except TemplateDoesNotExist as e:
    2.             self.get_template_cache[key] = (
    3.                 copy_exception(e) if self.engine.debug else TemplateDoesNotExist
    4.             )
    5.             raise
    6.         else:
    Local vars
    Variable Value
    __class__
    <class 'django.template.loaders.cached.Loader'>
    cached
    None
    key
    'surveys/public_form.html'
    self
    <django.template.loaders.cached.Loader object at 0x72a9b002d190>
    skip
    None
    template_name
    'surveys/public_form.html'
  • /home/ismail/projects/HH/.venv/lib/python3.12/site-packages/django/template/loaders/base.py, line 28, in get_template
    1.             try:
    2.                 contents = self.get_contents(origin)
    3.             except TemplateDoesNotExist:
    4.                 tried.append((origin, "Source does not exist"))
    5.                 continue
    6.             else:
    1.                 return Template(
                                 
    1.                     contents,
    2.                     origin,
    3.                     origin.template_name,
    4.                     self.engine,
    5.                 )
    Local vars
    Variable Value
    contents
    ('{% load i18n %}\n'
     '<!DOCTYPE html>\n'
     '<html lang="{{ language }}" dir="{% if language == \'ar\' %}rtl{% else '
     '%}ltr{% endif %}">\n'
     '<head>\n'
     '    <meta charset="UTF-8">\n'
     '    <meta name="viewport" content="width=device-width, initial-scale=1.0, '
     'maximum-scale=1.0, user-scalable=no">\n'
     "    <title>{% if language == 'ar' %}استبيان رضا المرضى{% else %}Patient "
     'Satisfaction Survey{% endif %} - PX360</title>\n'
     '    \n'
     '    <!-- Bootstrap 5 CSS -->\n'
     '    <link '
     'href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap{% if '
     'language == \'ar\' %}.rtl{% endif %}.min.css" rel="stylesheet">\n'
     '    <!-- Bootstrap Icons -->\n'
     '    <link '
     'href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.10.0/font/bootstrap-icons.css" '
     'rel="stylesheet">\n'
     '    \n'
     '    <style>\n'
     '        :root {\n'
     '            --primary-color: #667eea;\n'
     '            --secondary-color: #764ba2;\n'
     '            --success-color: #4caf50;\n'
     '            --warning-color: #ff9800;\n'
     '            --danger-color: #f44336;\n'
     '        }\n'
     '        \n'
     '        body {\n'
     '            background: linear-gradient(135deg, var(--primary-color) 0%, '
     'var(--secondary-color) 100%);\n'
     '            min-height: 100vh;\n'
     "            font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', "
     "Roboto, 'Helvetica Neue', Arial, sans-serif;\n"
     "            {% if language == 'ar' %}\n"
     "            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n"
     '            {% endif %}\n'
     '        }\n'
     '        \n'
     '        .survey-container {\n'
     '            max-width: 600px;\n'
     '            margin: 20px auto;\n'
     '            padding: 0 15px;\n'
     '        }\n'
     '        \n'
     '        .survey-card {\n'
     '            background: white;\n'
     '            border-radius: 20px;\n'
     '            box-shadow: 0 10px 40px rgba(0,0,0,0.2);\n'
     '            overflow: hidden;\n'
     '            margin-bottom: 20px;\n'
     '        }\n'
     '        \n'
     '        .survey-header {\n'
     '            background: linear-gradient(135deg, var(--primary-color) 0%, '
     'var(--secondary-color) 100%);\n'
     '            color: white;\n'
     '            padding: 30px 20px;\n'
     '            text-align: center;\n'
     '        }\n'
     '        \n'
     '        .survey-header h1 {\n'
     '            font-size: 1.5rem;\n'
     '            font-weight: 600;\n'
     '            margin-bottom: 10px;\n'
     '        }\n'
     '        \n'
     '        .survey-header p {\n'
     '            font-size: 0.9rem;\n'
     '            opacity: 0.9;\n'
     '            margin-bottom: 0;\n'
     '        }\n'
     '        \n'
     '        .progress-bar-container {\n'
     '            background: rgba(255,255,255,0.2);\n'
     '            height: 8px;\n'
     '            border-radius: 4px;\n'
     '            margin-top: 15px;\n'
     '            overflow: hidden;\n'
     '        }\n'
     '        \n'
     '        .progress-bar-fill {\n'
     '            background: white;\n'
     '            height: 100%;\n'
     '            border-radius: 4px;\n'
     '            transition: width 0.3s ease;\n'
     '        }\n'
     '        \n'
     '        .survey-body {\n'
     '            padding: 30px 20px;\n'
     '        }\n'
     '        \n'
     '        .question-card {\n'
     '            margin-bottom: 30px;\n'
     '            padding-bottom: 30px;\n'
     '            border-bottom: 1px solid #e0e0e0;\n'
     '        }\n'
     '        \n'
     '        .question-card:last-child {\n'
     '            border-bottom: none;\n'
     '            margin-bottom: 0;\n'
     '            padding-bottom: 0;\n'
     '        }\n'
     '        \n'
     '        .question-number {\n'
     '            display: inline-block;\n'
     '            background: var(--primary-color);\n'
     '            color: white;\n'
     '            width: 28px;\n'
     '            height: 28px;\n'
     '            border-radius: 50%;\n'
     '            text-align: center;\n'
     '            line-height: 28px;\n'
     '            font-size: 0.85rem;\n'
     '            font-weight: 600;\n'
     '            margin-bottom: 10px;\n'
     '        }\n'
     '        \n'
     '        .question-text {\n'
     '            font-size: 1.1rem;\n'
     '            font-weight: 500;… <trimmed 26615 bytes string>
    origin
    <Origin name='/home/ismail/projects/HH/templates/surveys/public_form.html'>
    self
    <django.template.loaders.cached.Loader object at 0x72a9b002d190>
    skip
    None
    template_name
    'surveys/public_form.html'
    tried
    []
  • /home/ismail/projects/HH/.venv/lib/python3.12/site-packages/django/template/base.py, line 157, in __init__
    1.             engine = Engine.get_default()
    2.         if origin is None:
    3.             origin = Origin(UNKNOWN_SOURCE)
    4.         self.name = name
    5.         self.origin = origin
    6.         self.engine = engine
    7.         self.source = str(template_string)  # May be lazy.
    1.         self.nodelist = self.compile_nodelist()
                                   ^^^^^^^^^^^^^^^^^^^^^^^
    1.     def __repr__(self):
    2.         return '<%s template_string="%s...">' % (
    3.             self.__class__.__qualname__,
    4.             self.source[:20].replace("\n", ""),
    5.         )
    Local vars
    Variable Value
    engine
    <Engine: dirs=[PosixPath('/home/ismail/projects/HH/templates')] app_dirs=True context_processors=['django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', 'django.template.context_processors.i18n', 'apps.core.context_processors.sidebar_counts', 'apps.core.context_processors.hospital_context'] debug=True loaders=[('django.template.loaders.cached.Loader', ['django.template.loaders.filesystem.Loader', 'django.template.loaders.app_directories.Loader'])] string_if_invalid='' file_charset='utf-8' libraries={'cache': 'django.templatetags.cache', 'i18n': 'django.templatetags.i18n', 'l10n': 'django.templatetags.l10n', 'static': 'django.templatetags.static', 'tz': 'django.templatetags.tz', 'admin_list': 'django.contrib.admin.templatetags.admin_list', 'admin_modify': 'django.contrib.admin.templatetags.admin_modify', 'admin_urls': 'django.contrib.admin.templatetags.admin_urls', 'log': 'django.contrib.admin.templatetags.log', 'auth': 'django.contrib.auth.templatetags.auth', 'rest_framework': 'rest_framework.templatetags.rest_framework', 'hospital_filters': 'apps.core.templatetags.hospital_filters', 'math': 'apps.complaints.templatetags.math', 'action_icons': 'apps.social.templatetags.action_icons', 'social_filters': 'apps.social.templatetags.social_filters', 'social_icons': 'apps.social.templatetags.social_icons', 'star_rating': 'apps.social.templatetags.star_rating', 'sentiment_tags': 'apps.ai_engine.templatetags.sentiment_tags', 'standards_filters': 'apps.standards.templatetags.standards_filters', 'debugger_tags': 'django_extensions.templatetags.debugger_tags', 'highlighting': 'django_extensions.templatetags.highlighting', 'indent_text': 'django_extensions.templatetags.indent_text', 'syntax_color': 'django_extensions.templatetags.syntax_color', 'widont': 'django_extensions.templatetags.widont'} builtins=['django.template.defaulttags', 'django.template.defaultfilters', 'django.template.loader_tags'] autoescape=True>
    name
    'surveys/public_form.html'
    origin
    <Origin name='/home/ismail/projects/HH/templates/surveys/public_form.html'>
    self
    <Template template_string="{% load i18n %}<!DO...">
    template_string
    ('{% load i18n %}\n'
     '<!DOCTYPE html>\n'
     '<html lang="{{ language }}" dir="{% if language == \'ar\' %}rtl{% else '
     '%}ltr{% endif %}">\n'
     '<head>\n'
     '    <meta charset="UTF-8">\n'
     '    <meta name="viewport" content="width=device-width, initial-scale=1.0, '
     'maximum-scale=1.0, user-scalable=no">\n'
     "    <title>{% if language == 'ar' %}استبيان رضا المرضى{% else %}Patient "
     'Satisfaction Survey{% endif %} - PX360</title>\n'
     '    \n'
     '    <!-- Bootstrap 5 CSS -->\n'
     '    <link '
     'href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap{% if '
     'language == \'ar\' %}.rtl{% endif %}.min.css" rel="stylesheet">\n'
     '    <!-- Bootstrap Icons -->\n'
     '    <link '
     'href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.10.0/font/bootstrap-icons.css" '
     'rel="stylesheet">\n'
     '    \n'
     '    <style>\n'
     '        :root {\n'
     '            --primary-color: #667eea;\n'
     '            --secondary-color: #764ba2;\n'
     '            --success-color: #4caf50;\n'
     '            --warning-color: #ff9800;\n'
     '            --danger-color: #f44336;\n'
     '        }\n'
     '        \n'
     '        body {\n'
     '            background: linear-gradient(135deg, var(--primary-color) 0%, '
     'var(--secondary-color) 100%);\n'
     '            min-height: 100vh;\n'
     "            font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', "
     "Roboto, 'Helvetica Neue', Arial, sans-serif;\n"
     "            {% if language == 'ar' %}\n"
     "            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n"
     '            {% endif %}\n'
     '        }\n'
     '        \n'
     '        .survey-container {\n'
     '            max-width: 600px;\n'
     '            margin: 20px auto;\n'
     '            padding: 0 15px;\n'
     '        }\n'
     '        \n'
     '        .survey-card {\n'
     '            background: white;\n'
     '            border-radius: 20px;\n'
     '            box-shadow: 0 10px 40px rgba(0,0,0,0.2);\n'
     '            overflow: hidden;\n'
     '            margin-bottom: 20px;\n'
     '        }\n'
     '        \n'
     '        .survey-header {\n'
     '            background: linear-gradient(135deg, var(--primary-color) 0%, '
     'var(--secondary-color) 100%);\n'
     '            color: white;\n'
     '            padding: 30px 20px;\n'
     '            text-align: center;\n'
     '        }\n'
     '        \n'
     '        .survey-header h1 {\n'
     '            font-size: 1.5rem;\n'
     '            font-weight: 600;\n'
     '            margin-bottom: 10px;\n'
     '        }\n'
     '        \n'
     '        .survey-header p {\n'
     '            font-size: 0.9rem;\n'
     '            opacity: 0.9;\n'
     '            margin-bottom: 0;\n'
     '        }\n'
     '        \n'
     '        .progress-bar-container {\n'
     '            background: rgba(255,255,255,0.2);\n'
     '            height: 8px;\n'
     '            border-radius: 4px;\n'
     '            margin-top: 15px;\n'
     '            overflow: hidden;\n'
     '        }\n'
     '        \n'
     '        .progress-bar-fill {\n'
     '            background: white;\n'
     '            height: 100%;\n'
     '            border-radius: 4px;\n'
     '            transition: width 0.3s ease;\n'
     '        }\n'
     '        \n'
     '        .survey-body {\n'
     '            padding: 30px 20px;\n'
     '        }\n'
     '        \n'
     '        .question-card {\n'
     '            margin-bottom: 30px;\n'
     '            padding-bottom: 30px;\n'
     '            border-bottom: 1px solid #e0e0e0;\n'
     '        }\n'
     '        \n'
     '        .question-card:last-child {\n'
     '            border-bottom: none;\n'
     '            margin-bottom: 0;\n'
     '            padding-bottom: 0;\n'
     '        }\n'
     '        \n'
     '        .question-number {\n'
     '            display: inline-block;\n'
     '            background: var(--primary-color);\n'
     '            color: white;\n'
     '            width: 28px;\n'
     '            height: 28px;\n'
     '            border-radius: 50%;\n'
     '            text-align: center;\n'
     '            line-height: 28px;\n'
     '            font-size: 0.85rem;\n'
     '            font-weight: 600;\n'
     '            margin-bottom: 10px;\n'
     '        }\n'
     '        \n'
     '        .question-text {\n'
     '            font-size: 1.1rem;\n'
     '            font-weight: 500;… <trimmed 26615 bytes string>
  • /home/ismail/projects/HH/.venv/lib/python3.12/site-packages/django/template/base.py, line 199, in compile_nodelist
    1.             tokens,
    2.             self.engine.template_libraries,
    3.             self.engine.template_builtins,
    4.             self.origin,
    5.         )
    6.         try:
    1.             nodelist = parser.parse()
                                  ^^^^^^^^^^^^^^
    1.             self.extra_data = parser.extra_data
    2.             return nodelist
    3.         except Exception as e:
    4.             if self.engine.debug:
    5.                 e.template_debug = self.get_exception_info(e, e.token)
    6.             if (
    Local vars
    Variable Value
    lexer
    <DebugLexer template_string="{% load i18n %}<!DO...", verbatim=False>
    parser
    <Parser tokens=[<Text token: "');                ...">, <Block token: "endif...">, <Text token: "Please answer all re...">, <Block token: "else...">, <Text token: "يرجى الإجابة على جمي...">, <Block token: "if language == "ar"...">, <Text token: ";            const ...">, <Var token: "total_questions...">, <Text token: "            </small...">, <Block token: "endif...">, <Text token: "                Tha...">, <Block token: "else...">, <Text token: "                شكر...">, <Block token: "if language == 'ar'...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "                   ...">, <Block token: "else...">, <Text token: "                   ...">, <Block token: "if language == 'ar'...">, <Text token: "                   ...">, <Block token: "endfor...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: ""></textarea>      ...">, <Block token: "endif...">, <Text token: "Enter your answer he...">, <Block token: "else...">, <Text token: "أدخل إجابتك هنا...">, <Block token: "if language == 'ar'...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: "" class="form-contro...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "elif question.questi...">, <Text token: "">                 ...">, <Block token: "endif...">, <Text token: "Enter your answer he...">, <Block token: "else...">, <Text token: "أدخل إجابتك هنا...">, <Block token: "if language == 'ar'...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: "" class="form-contro...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "elif question.questi...">, <Text token: "                   ...">, <Block token: "endfor...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "                   ...">, <Var token: "choice.label...">, <Text token: "                   ...">, <Block token: "else...">, <Text token: "                   ...">, <Var token: "choice.label_ar...">, <Text token: "                   ...">, <Block token: "if language == 'ar' ...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: ""                  ...">, <Var token: "choice.value...">, <Text token: "" value="...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "for choice in questi...">, <Text token: "                   ...">, <Block token: "elif question.questi...">, <Text token: ">                  ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: ""                  ...">, <Var token: "question.id...">, <Text token: "" id="question_...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "No...">, <Block token: "else...">, <Text token: "لا...">, <Block token: "if language == 'ar'...">, <Text token: "')">               ...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "Yes...">, <Block token: "else...">, <Text token: "نعم...">, <Block token: "if language == 'ar'...">, <Text token: "')">               ...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "elif question.questi...">, <Text token: "                   ...">, <Block token: "endfor...">, <Text token: "                   ...">, <Block token: "endwith...">, <Text token: "</span>            ...">, <Var token: "parts.1...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: ""                  ...">, <Var token: "parts.0...">, <Text token: "" value="...">, <Var token: "question.id...">, <Text token: "         … <trimmed 4195 bytes string>
    raw_message
    "Invalid filter: 'split'"
    self
    <Template template_string="{% load i18n %}<!DO...">
    tokens
    [<Block token: "load i18n...">,
     <Text token: "<!DOCTYPE html><ht...">,
     <Var token: "language...">,
     <Text token: "" dir="...">,
     <Block token: "if language == 'ar'...">,
     <Text token: "rtl...">,
     <Block token: "else...">,
     <Text token: "ltr...">,
     <Block token: "endif...">,
     <Text token: ""><head>    <meta ...">,
     <Block token: "if language == 'ar'...">,
     <Text token: "استبيان رضا المرضى...">,
     <Block token: "else...">,
     <Text token: "Patient Satisfaction...">,
     <Block token: "endif...">,
     <Text token: " - PX360</title>   ...">,
     <Block token: "if language == 'ar'...">,
     <Text token: ".rtl...">,
     <Block token: "endif...">,
     <Text token: ".min.css" rel="style...">,
     <Block token: "if language == 'ar'...">,
     <Text token: "            font-fa...">,
     <Block token: "endif...">,
     <Text token: "        }        ...">,
     <Block token: "if language == 'ar'...">,
     <Text token: "left...">,
     <Block token: "else...">,
     <Text token: "right...">,
     <Block token: "endif...">,
     <Text token: ": 20px;            ...">,
     <Block token: "if language == 'ar'...">,
     <Text token: "        <a href="?l...">,
     <Block token: "else...">,
     <Text token: "        <a href="?l...">,
     <Block token: "endif...">,
     <Text token: "    </div>    <di...">,
     <Block token: "if language == 'ar'...">,
     <Text token: "                   ...">,
     <Var token: "survey.survey_templa...">,
     <Text token: "                   ...">,
     <Block token: "else...">,
     <Text token: "                   ...">,
     <Var token: "survey.survey_templa...">,
     <Text token: "                   ...">,
     <Block token: "endif...">,
     <Text token: "                </h...">,
     <Block token: "if language == 'ar'...">,
     <Text token: "                   ...">,
     <Var token: "survey.survey_templa...">,
     <Text token: "                   ...">,
     <Block token: "else...">,
     <Text token: "                   ...">,
     <Var token: "survey.survey_templa...">,
     <Text token: "                   ...">,
     <Block token: "endif...">,
     <Text token: "                </p...">,
     <Block token: "if errors...">,
     <Text token: "                <di...">,
     <Block token: "if language == 'ar'...">,
     <Text token: "                   ...">,
     <Block token: "else...">,
     <Text token: "                   ...">,
     <Block token: "endif...">,
     <Text token: "                   ...">,
     <Block token: "for error in errors...">,
     <Text token: "                   ...">,
     <Var token: "error...">,
     <Text token: "</li>              ...">,
     <Block token: "endfor...">,
     <Text token: "                   ...">,
     <Block token: "endif...">,
     <Text token: "                <!...">,
     <Block token: "csrf_token...">,
     <Text token: "                   ...">,
     <Var token: "language...">,
     <Text token: "">                 ...">,
     <Block token: "for question in ques...">,
     <Text token: "                   ...">,
     <Var token: "forloop.counter...">,
     <Text token: "">                 ...">,
     <Var token: "forloop.counter...">,
     <Text token: "</div>             ...">,
     <Block token: "if language == 'ar' ...">,
     <Text token: "                   ...">,
     <Var token: "question.text_ar...">,
     <Text token: "                   ...">,
     <Block token: "else...">,
     <Text token: "                   ...">,
     <Var token: "question.text...">,
     <Text token: "                   ...">,
     <Block token: "endif...">,
     <Text token: "                   ...">,
     <Block token: "if question.is_requi...">,
     <Text token: "                   ...">,
     <Block token: "endif...">,
     <Text token: "                   ...">,
     <Block token: "if question.help_tex...">,
     <Text token: "                   ...">,
     <Block token: "if language == 'ar' ...">,
     <Text token: "                   ...">,
     <Var token: "question.help_text_a...">,
     <Text token: "                   ...">,
     <Block token: "else...">,
     <Text token: "                   ...">,
     <Var token: "question.help_text...">,
     <Text token: "                   ...">,
     <Block token: "endif...">,
     <Text token: "                   ...">,
     <Block token: "endif...">,
     <Text token: "                   ...">,
     <Block token: "if question.question...">,
     <Text token: "          … <trimmed 10298 bytes string>
  • /home/ismail/projects/HH/.venv/lib/python3.12/site-packages/django/template/base.py, line 585, in parse
    1.                 except KeyError:
    2.                     self.invalid_block_tag(token, command, parse_until)
    3.                 # Compile the callback into a node object and add it to
    4.                 # the node list.
    5.                 try:
    6.                     compiled_result = compile_func(self, token)
    7.                 except Exception as e:
    1.                     raise self.error(token, e)
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^
    1.                 self.extend_nodelist(nodelist, compiled_result, token)
    2.                 # Compile success. Remove the token from the command stack.
    3.                 self.command_stack.pop()
    4.         if parse_until:
    5.             self.unclosed_block_tag(parse_until)
    6.         return nodelist
    Local vars
    Variable Value
    command
    'for'
    compile_func
    <function do_for at 0x72a9b47325c0>
    compiled_result
    <django.template.defaulttags.CsrfTokenNode object at 0x72a9aadd9d60>
    filter_expression
    <FilterExpression 'language'>
    nodelist
    [<django.template.defaulttags.LoadNode object at 0x72a9aab643e0>,
     <TextNode: '\n<!DOCTYPE html>\n<html la'>,
     <Variable Node: language>,
     <TextNode: '" dir="'>,
     <IfNode>,
     <TextNode: '">\n<head>\n    <meta chars'>,
     <IfNode>,
     <TextNode: ' - PX360</title>\n    \n   '>,
     <IfNode>,
     <TextNode: '.min.css" rel="stylesheet'>,
     <IfNode>,
     <TextNode: '\n        }\n        \n     '>,
     <IfNode>,
     <TextNode: ': 20px;\n            backg'>,
     <IfNode>,
     <TextNode: '\n    </div>\n\n    <div cla'>,
     <IfNode>,
     <TextNode: '\n                </h1>\n  '>,
     <IfNode>,
     <TextNode: '\n                </p>\n   '>,
     <IfNode>,
     <TextNode: '\n\n                <!-- Su'>,
     <django.template.defaulttags.CsrfTokenNode object at 0x72a9aadd9d60>,
     <TextNode: '\n                    <inp'>,
     <Variable Node: language>,
     <TextNode: '">\n                    \n '>]
    parse_until
    []
    self
    <Parser tokens=[<Text token: "');                ...">, <Block token: "endif...">, <Text token: "Please answer all re...">, <Block token: "else...">, <Text token: "يرجى الإجابة على جمي...">, <Block token: "if language == "ar"...">, <Text token: ";            const ...">, <Var token: "total_questions...">, <Text token: "            </small...">, <Block token: "endif...">, <Text token: "                Tha...">, <Block token: "else...">, <Text token: "                شكر...">, <Block token: "if language == 'ar'...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "                   ...">, <Block token: "else...">, <Text token: "                   ...">, <Block token: "if language == 'ar'...">, <Text token: "                   ...">, <Block token: "endfor...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: ""></textarea>      ...">, <Block token: "endif...">, <Text token: "Enter your answer he...">, <Block token: "else...">, <Text token: "أدخل إجابتك هنا...">, <Block token: "if language == 'ar'...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: "" class="form-contro...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "elif question.questi...">, <Text token: "">                 ...">, <Block token: "endif...">, <Text token: "Enter your answer he...">, <Block token: "else...">, <Text token: "أدخل إجابتك هنا...">, <Block token: "if language == 'ar'...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: "" class="form-contro...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "elif question.questi...">, <Text token: "                   ...">, <Block token: "endfor...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "                   ...">, <Var token: "choice.label...">, <Text token: "                   ...">, <Block token: "else...">, <Text token: "                   ...">, <Var token: "choice.label_ar...">, <Text token: "                   ...">, <Block token: "if language == 'ar' ...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: ""                  ...">, <Var token: "choice.value...">, <Text token: "" value="...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "for choice in questi...">, <Text token: "                   ...">, <Block token: "elif question.questi...">, <Text token: ">                  ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: ""                  ...">, <Var token: "question.id...">, <Text token: "" id="question_...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "No...">, <Block token: "else...">, <Text token: "لا...">, <Block token: "if language == 'ar'...">, <Text token: "')">               ...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "Yes...">, <Block token: "else...">, <Text token: "نعم...">, <Block token: "if language == 'ar'...">, <Text token: "')">               ...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "elif question.questi...">, <Text token: "                   ...">, <Block token: "endfor...">, <Text token: "                   ...">, <Block token: "endwith...">, <Text token: "</span>            ...">, <Var token: "parts.1...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: ""                  ...">, <Var token: "parts.0...">, <Text token: "" value="...">, <Var token: "question.id...">, <Text token: "         … <trimmed 4195 bytes string>
    token
    <Block token: "for question in ques...">
    token_type
    2
    var_node
    <Variable Node: language>
  • /home/ismail/projects/HH/.venv/lib/python3.12/site-packages/django/template/base.py, line 583, in parse
    1.                 try:
    2.                     compile_func = self.tags[command]
    3.                 except KeyError:
    4.                     self.invalid_block_tag(token, command, parse_until)
    5.                 # Compile the callback into a node object and add it to
    6.                 # the node list.
    7.                 try:
    1.                     compiled_result = compile_func(self, token)
                                                 ^^^^^^^^^^^^^^^^^^^^^^^^^
    1.                 except Exception as e:
    2.                     raise self.error(token, e)
    3.                 self.extend_nodelist(nodelist, compiled_result, token)
    4.                 # Compile success. Remove the token from the command stack.
    5.                 self.command_stack.pop()
    6.         if parse_until:
    Local vars
    Variable Value
    command
    'for'
    compile_func
    <function do_for at 0x72a9b47325c0>
    compiled_result
    <django.template.defaulttags.CsrfTokenNode object at 0x72a9aadd9d60>
    filter_expression
    <FilterExpression 'language'>
    nodelist
    [<django.template.defaulttags.LoadNode object at 0x72a9aab643e0>,
     <TextNode: '\n<!DOCTYPE html>\n<html la'>,
     <Variable Node: language>,
     <TextNode: '" dir="'>,
     <IfNode>,
     <TextNode: '">\n<head>\n    <meta chars'>,
     <IfNode>,
     <TextNode: ' - PX360</title>\n    \n   '>,
     <IfNode>,
     <TextNode: '.min.css" rel="stylesheet'>,
     <IfNode>,
     <TextNode: '\n        }\n        \n     '>,
     <IfNode>,
     <TextNode: ': 20px;\n            backg'>,
     <IfNode>,
     <TextNode: '\n    </div>\n\n    <div cla'>,
     <IfNode>,
     <TextNode: '\n                </h1>\n  '>,
     <IfNode>,
     <TextNode: '\n                </p>\n   '>,
     <IfNode>,
     <TextNode: '\n\n                <!-- Su'>,
     <django.template.defaulttags.CsrfTokenNode object at 0x72a9aadd9d60>,
     <TextNode: '\n                    <inp'>,
     <Variable Node: language>,
     <TextNode: '">\n                    \n '>]
    parse_until
    []
    self
    <Parser tokens=[<Text token: "');                ...">, <Block token: "endif...">, <Text token: "Please answer all re...">, <Block token: "else...">, <Text token: "يرجى الإجابة على جمي...">, <Block token: "if language == "ar"...">, <Text token: ";            const ...">, <Var token: "total_questions...">, <Text token: "            </small...">, <Block token: "endif...">, <Text token: "                Tha...">, <Block token: "else...">, <Text token: "                شكر...">, <Block token: "if language == 'ar'...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "                   ...">, <Block token: "else...">, <Text token: "                   ...">, <Block token: "if language == 'ar'...">, <Text token: "                   ...">, <Block token: "endfor...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: ""></textarea>      ...">, <Block token: "endif...">, <Text token: "Enter your answer he...">, <Block token: "else...">, <Text token: "أدخل إجابتك هنا...">, <Block token: "if language == 'ar'...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: "" class="form-contro...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "elif question.questi...">, <Text token: "">                 ...">, <Block token: "endif...">, <Text token: "Enter your answer he...">, <Block token: "else...">, <Text token: "أدخل إجابتك هنا...">, <Block token: "if language == 'ar'...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: "" class="form-contro...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "elif question.questi...">, <Text token: "                   ...">, <Block token: "endfor...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "                   ...">, <Var token: "choice.label...">, <Text token: "                   ...">, <Block token: "else...">, <Text token: "                   ...">, <Var token: "choice.label_ar...">, <Text token: "                   ...">, <Block token: "if language == 'ar' ...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: ""                  ...">, <Var token: "choice.value...">, <Text token: "" value="...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "for choice in questi...">, <Text token: "                   ...">, <Block token: "elif question.questi...">, <Text token: ">                  ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: ""                  ...">, <Var token: "question.id...">, <Text token: "" id="question_...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "No...">, <Block token: "else...">, <Text token: "لا...">, <Block token: "if language == 'ar'...">, <Text token: "')">               ...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "Yes...">, <Block token: "else...">, <Text token: "نعم...">, <Block token: "if language == 'ar'...">, <Text token: "')">               ...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "elif question.questi...">, <Text token: "                   ...">, <Block token: "endfor...">, <Text token: "                   ...">, <Block token: "endwith...">, <Text token: "</span>            ...">, <Var token: "parts.1...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: ""                  ...">, <Var token: "parts.0...">, <Text token: "" value="...">, <Var token: "question.id...">, <Text token: "         … <trimmed 4195 bytes string>
    token
    <Block token: "for question in ques...">
    token_type
    2
    var_node
    <Variable Node: language>
  • /home/ismail/projects/HH/.venv/lib/python3.12/site-packages/django/template/defaulttags.py, line 894, in do_for
    1.     for var in loopvars:
    2.         if not var or not invalid_chars.isdisjoint(var):
    3.             raise TemplateSyntaxError(
    4.                 "'for' tag received an invalid argument: %s" % token.contents
    5.             )
    6.     sequence = parser.compile_filter(bits[in_index + 1])
    1.     nodelist_loop = parser.parse(
                               
    1.         (
    2.             "empty",
    3.             "endfor",
    4.         )
    5.     )
    6.     token = parser.next_token()
    Local vars
    Variable Value
    bits
    ['for', 'question', 'in', 'questions']
    in_index
    -2
    invalid_chars
    frozenset({' ', "'", '"', '|'})
    is_reversed
    False
    loopvars
    ['question']
    parser
    <Parser tokens=[<Text token: "');                ...">, <Block token: "endif...">, <Text token: "Please answer all re...">, <Block token: "else...">, <Text token: "يرجى الإجابة على جمي...">, <Block token: "if language == "ar"...">, <Text token: ";            const ...">, <Var token: "total_questions...">, <Text token: "            </small...">, <Block token: "endif...">, <Text token: "                Tha...">, <Block token: "else...">, <Text token: "                شكر...">, <Block token: "if language == 'ar'...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "                   ...">, <Block token: "else...">, <Text token: "                   ...">, <Block token: "if language == 'ar'...">, <Text token: "                   ...">, <Block token: "endfor...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: ""></textarea>      ...">, <Block token: "endif...">, <Text token: "Enter your answer he...">, <Block token: "else...">, <Text token: "أدخل إجابتك هنا...">, <Block token: "if language == 'ar'...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: "" class="form-contro...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "elif question.questi...">, <Text token: "">                 ...">, <Block token: "endif...">, <Text token: "Enter your answer he...">, <Block token: "else...">, <Text token: "أدخل إجابتك هنا...">, <Block token: "if language == 'ar'...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: "" class="form-contro...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "elif question.questi...">, <Text token: "                   ...">, <Block token: "endfor...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "                   ...">, <Var token: "choice.label...">, <Text token: "                   ...">, <Block token: "else...">, <Text token: "                   ...">, <Var token: "choice.label_ar...">, <Text token: "                   ...">, <Block token: "if language == 'ar' ...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: ""                  ...">, <Var token: "choice.value...">, <Text token: "" value="...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "for choice in questi...">, <Text token: "                   ...">, <Block token: "elif question.questi...">, <Text token: ">                  ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: ""                  ...">, <Var token: "question.id...">, <Text token: "" id="question_...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "No...">, <Block token: "else...">, <Text token: "لا...">, <Block token: "if language == 'ar'...">, <Text token: "')">               ...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "Yes...">, <Block token: "else...">, <Text token: "نعم...">, <Block token: "if language == 'ar'...">, <Text token: "')">               ...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "elif question.questi...">, <Text token: "                   ...">, <Block token: "endfor...">, <Text token: "                   ...">, <Block token: "endwith...">, <Text token: "</span>            ...">, <Var token: "parts.1...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: ""                  ...">, <Var token: "parts.0...">, <Text token: "" value="...">, <Var token: "question.id...">, <Text token: "         … <trimmed 4195 bytes string>
    sequence
    <FilterExpression 'questions'>
    token
    <Block token: "for question in ques...">
    var
    'question'
  • /home/ismail/projects/HH/.venv/lib/python3.12/site-packages/django/template/base.py, line 585, in parse
    1.                 except KeyError:
    2.                     self.invalid_block_tag(token, command, parse_until)
    3.                 # Compile the callback into a node object and add it to
    4.                 # the node list.
    5.                 try:
    6.                     compiled_result = compile_func(self, token)
    7.                 except Exception as e:
    1.                     raise self.error(token, e)
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^
    1.                 self.extend_nodelist(nodelist, compiled_result, token)
    2.                 # Compile success. Remove the token from the command stack.
    3.                 self.command_stack.pop()
    4.         if parse_until:
    5.             self.unclosed_block_tag(parse_until)
    6.         return nodelist
    Local vars
    Variable Value
    command
    'if'
    compile_func
    <function do_if at 0x72a9b4732ac0>
    compiled_result
    <IfNode>
    filter_expression
    <FilterExpression 'forloop.counter'>
    nodelist
    [<TextNode: '\n                    <div'>,
     <Variable Node: forloop.counter>,
     <TextNode: '">\n                      '>,
     <Variable Node: forloop.counter>,
     <TextNode: '</div>\n                  '>,
     <IfNode>,
     <TextNode: '\n                        '>,
     <IfNode>,
     <TextNode: '\n                        '>,
     <IfNode>,
     <TextNode: '\n                        '>]
    parse_until
    ('empty', 'endfor')
    self
    <Parser tokens=[<Text token: "');                ...">, <Block token: "endif...">, <Text token: "Please answer all re...">, <Block token: "else...">, <Text token: "يرجى الإجابة على جمي...">, <Block token: "if language == "ar"...">, <Text token: ";            const ...">, <Var token: "total_questions...">, <Text token: "            </small...">, <Block token: "endif...">, <Text token: "                Tha...">, <Block token: "else...">, <Text token: "                شكر...">, <Block token: "if language == 'ar'...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "                   ...">, <Block token: "else...">, <Text token: "                   ...">, <Block token: "if language == 'ar'...">, <Text token: "                   ...">, <Block token: "endfor...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: ""></textarea>      ...">, <Block token: "endif...">, <Text token: "Enter your answer he...">, <Block token: "else...">, <Text token: "أدخل إجابتك هنا...">, <Block token: "if language == 'ar'...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: "" class="form-contro...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "elif question.questi...">, <Text token: "">                 ...">, <Block token: "endif...">, <Text token: "Enter your answer he...">, <Block token: "else...">, <Text token: "أدخل إجابتك هنا...">, <Block token: "if language == 'ar'...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: "" class="form-contro...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "elif question.questi...">, <Text token: "                   ...">, <Block token: "endfor...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "                   ...">, <Var token: "choice.label...">, <Text token: "                   ...">, <Block token: "else...">, <Text token: "                   ...">, <Var token: "choice.label_ar...">, <Text token: "                   ...">, <Block token: "if language == 'ar' ...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: ""                  ...">, <Var token: "choice.value...">, <Text token: "" value="...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "for choice in questi...">, <Text token: "                   ...">, <Block token: "elif question.questi...">, <Text token: ">                  ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: ""                  ...">, <Var token: "question.id...">, <Text token: "" id="question_...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "No...">, <Block token: "else...">, <Text token: "لا...">, <Block token: "if language == 'ar'...">, <Text token: "')">               ...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "Yes...">, <Block token: "else...">, <Text token: "نعم...">, <Block token: "if language == 'ar'...">, <Text token: "')">               ...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "elif question.questi...">, <Text token: "                   ...">, <Block token: "endfor...">, <Text token: "                   ...">, <Block token: "endwith...">, <Text token: "</span>            ...">, <Var token: "parts.1...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: ""                  ...">, <Var token: "parts.0...">, <Text token: "" value="...">, <Var token: "question.id...">, <Text token: "         … <trimmed 4195 bytes string>
    token
    <Block token: "if question.question...">
    token_type
    2
    var_node
    <Variable Node: forloop.counter>
  • /home/ismail/projects/HH/.venv/lib/python3.12/site-packages/django/template/base.py, line 583, in parse
    1.                 try:
    2.                     compile_func = self.tags[command]
    3.                 except KeyError:
    4.                     self.invalid_block_tag(token, command, parse_until)
    5.                 # Compile the callback into a node object and add it to
    6.                 # the node list.
    7.                 try:
    1.                     compiled_result = compile_func(self, token)
                                                 ^^^^^^^^^^^^^^^^^^^^^^^^^
    1.                 except Exception as e:
    2.                     raise self.error(token, e)
    3.                 self.extend_nodelist(nodelist, compiled_result, token)
    4.                 # Compile success. Remove the token from the command stack.
    5.                 self.command_stack.pop()
    6.         if parse_until:
    Local vars
    Variable Value
    command
    'if'
    compile_func
    <function do_if at 0x72a9b4732ac0>
    compiled_result
    <IfNode>
    filter_expression
    <FilterExpression 'forloop.counter'>
    nodelist
    [<TextNode: '\n                    <div'>,
     <Variable Node: forloop.counter>,
     <TextNode: '">\n                      '>,
     <Variable Node: forloop.counter>,
     <TextNode: '</div>\n                  '>,
     <IfNode>,
     <TextNode: '\n                        '>,
     <IfNode>,
     <TextNode: '\n                        '>,
     <IfNode>,
     <TextNode: '\n                        '>]
    parse_until
    ('empty', 'endfor')
    self
    <Parser tokens=[<Text token: "');                ...">, <Block token: "endif...">, <Text token: "Please answer all re...">, <Block token: "else...">, <Text token: "يرجى الإجابة على جمي...">, <Block token: "if language == "ar"...">, <Text token: ";            const ...">, <Var token: "total_questions...">, <Text token: "            </small...">, <Block token: "endif...">, <Text token: "                Tha...">, <Block token: "else...">, <Text token: "                شكر...">, <Block token: "if language == 'ar'...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "                   ...">, <Block token: "else...">, <Text token: "                   ...">, <Block token: "if language == 'ar'...">, <Text token: "                   ...">, <Block token: "endfor...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: ""></textarea>      ...">, <Block token: "endif...">, <Text token: "Enter your answer he...">, <Block token: "else...">, <Text token: "أدخل إجابتك هنا...">, <Block token: "if language == 'ar'...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: "" class="form-contro...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "elif question.questi...">, <Text token: "">                 ...">, <Block token: "endif...">, <Text token: "Enter your answer he...">, <Block token: "else...">, <Text token: "أدخل إجابتك هنا...">, <Block token: "if language == 'ar'...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: "" class="form-contro...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "elif question.questi...">, <Text token: "                   ...">, <Block token: "endfor...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "                   ...">, <Var token: "choice.label...">, <Text token: "                   ...">, <Block token: "else...">, <Text token: "                   ...">, <Var token: "choice.label_ar...">, <Text token: "                   ...">, <Block token: "if language == 'ar' ...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: ""                  ...">, <Var token: "choice.value...">, <Text token: "" value="...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "for choice in questi...">, <Text token: "                   ...">, <Block token: "elif question.questi...">, <Text token: ">                  ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: ""                  ...">, <Var token: "question.id...">, <Text token: "" id="question_...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "No...">, <Block token: "else...">, <Text token: "لا...">, <Block token: "if language == 'ar'...">, <Text token: "')">               ...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "Yes...">, <Block token: "else...">, <Text token: "نعم...">, <Block token: "if language == 'ar'...">, <Text token: "')">               ...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "elif question.questi...">, <Text token: "                   ...">, <Block token: "endfor...">, <Text token: "                   ...">, <Block token: "endwith...">, <Text token: "</span>            ...">, <Var token: "parts.1...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: ""                  ...">, <Var token: "parts.0...">, <Text token: "" value="...">, <Var token: "question.id...">, <Text token: "         … <trimmed 4195 bytes string>
    token
    <Block token: "if question.question...">
    token_type
    2
    var_node
    <Variable Node: forloop.counter>
  • /home/ismail/projects/HH/.venv/lib/python3.12/site-packages/django/template/defaulttags.py, line 1002, in do_if
    1.     conditions_nodelists = [(condition, nodelist)]
    2.     token = parser.next_token()
    3.     # {% elif ... %} (repeatable)
    4.     while token.contents.startswith("elif"):
    5.         bits = token.split_contents()[1:]
    6.         condition = TemplateIfParser(parser, bits).parse()
    1.         nodelist = parser.parse(("elif", "else", "endif"))
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    1.         conditions_nodelists.append((condition, nodelist))
    2.         token = parser.next_token()
    3.     # {% else %} (optional)
    4.     if token.contents == "else":
    5.         nodelist = parser.parse(("endif",))
    Local vars
    Variable Value
    bits
    ['question.question_type', '==', "'likert'"]
    condition
    (== (literal <FilterExpression 'question.question_type'>) (literal <FilterExpression "'likert'">))
    conditions_nodelists
    [((== (literal <FilterExpression 'question.question_type'>) (literal <FilterExpression "'rating'">)),
      [<TextNode: '\n                        '>,
       <ForNode: for i in "12345", tail_len: 5>,
       <TextNode: '\n                        '>,
       <Variable Node: question.id>,
       <TextNode: '" id="question_'>,
       <Variable Node: question.id>,
       <TextNode: '" \n                      '>,
       <IfNode>,
       <TextNode: '>\n                       '>]),
     ((== (literal <FilterExpression 'question.question_type'>) (literal <FilterExpression "'nps'">)),
      [<TextNode: '\n                        '>,
       <ForNode: for i in "012345678910", tail_len: 7>,
       <TextNode: '\n                        '>,
       <IfNode>,
       <TextNode: '\n                        '>,
       <IfNode>,
       <TextNode: '\n                        '>,
       <Variable Node: question.id>,
       <TextNode: '" id="question_'>,
       <Variable Node: question.id>,
       <TextNode: '"\n                       '>,
       <IfNode>,
       <TextNode: '>\n                       '>])]
    nodelist
    [<TextNode: '\n                        '>,
     <ForNode: for i in "012345678910", tail_len: 7>,
     <TextNode: '\n                        '>,
     <IfNode>,
     <TextNode: '\n                        '>,
     <IfNode>,
     <TextNode: '\n                        '>,
     <Variable Node: question.id>,
     <TextNode: '" id="question_'>,
     <Variable Node: question.id>,
     <TextNode: '"\n                       '>,
     <IfNode>,
     <TextNode: '>\n                       '>]
    parser
    <Parser tokens=[<Text token: "');                ...">, <Block token: "endif...">, <Text token: "Please answer all re...">, <Block token: "else...">, <Text token: "يرجى الإجابة على جمي...">, <Block token: "if language == "ar"...">, <Text token: ";            const ...">, <Var token: "total_questions...">, <Text token: "            </small...">, <Block token: "endif...">, <Text token: "                Tha...">, <Block token: "else...">, <Text token: "                شكر...">, <Block token: "if language == 'ar'...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "                   ...">, <Block token: "else...">, <Text token: "                   ...">, <Block token: "if language == 'ar'...">, <Text token: "                   ...">, <Block token: "endfor...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: ""></textarea>      ...">, <Block token: "endif...">, <Text token: "Enter your answer he...">, <Block token: "else...">, <Text token: "أدخل إجابتك هنا...">, <Block token: "if language == 'ar'...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: "" class="form-contro...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "elif question.questi...">, <Text token: "">                 ...">, <Block token: "endif...">, <Text token: "Enter your answer he...">, <Block token: "else...">, <Text token: "أدخل إجابتك هنا...">, <Block token: "if language == 'ar'...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: "" class="form-contro...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "elif question.questi...">, <Text token: "                   ...">, <Block token: "endfor...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "                   ...">, <Var token: "choice.label...">, <Text token: "                   ...">, <Block token: "else...">, <Text token: "                   ...">, <Var token: "choice.label_ar...">, <Text token: "                   ...">, <Block token: "if language == 'ar' ...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: ""                  ...">, <Var token: "choice.value...">, <Text token: "" value="...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "for choice in questi...">, <Text token: "                   ...">, <Block token: "elif question.questi...">, <Text token: ">                  ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: ""                  ...">, <Var token: "question.id...">, <Text token: "" id="question_...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "No...">, <Block token: "else...">, <Text token: "لا...">, <Block token: "if language == 'ar'...">, <Text token: "')">               ...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "Yes...">, <Block token: "else...">, <Text token: "نعم...">, <Block token: "if language == 'ar'...">, <Text token: "')">               ...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "elif question.questi...">, <Text token: "                   ...">, <Block token: "endfor...">, <Text token: "                   ...">, <Block token: "endwith...">, <Text token: "</span>            ...">, <Var token: "parts.1...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: ""                  ...">, <Var token: "parts.0...">, <Text token: "" value="...">, <Var token: "question.id...">, <Text token: "         … <trimmed 4195 bytes string>
    token
    <Block token: "elif question.questi...">
  • /home/ismail/projects/HH/.venv/lib/python3.12/site-packages/django/template/base.py, line 585, in parse
    1.                 except KeyError:
    2.                     self.invalid_block_tag(token, command, parse_until)
    3.                 # Compile the callback into a node object and add it to
    4.                 # the node list.
    5.                 try:
    6.                     compiled_result = compile_func(self, token)
    7.                 except Exception as e:
    1.                     raise self.error(token, e)
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^
    1.                 self.extend_nodelist(nodelist, compiled_result, token)
    2.                 # Compile success. Remove the token from the command stack.
    3.                 self.command_stack.pop()
    4.         if parse_until:
    5.             self.unclosed_block_tag(parse_until)
    6.         return nodelist
    Local vars
    Variable Value
    command
    'for'
    compile_func
    <function do_for at 0x72a9b47325c0>
    nodelist
    [<TextNode: '\n                        '>]
    parse_until
    ('elif', 'else', 'endif')
    self
    <Parser tokens=[<Text token: "');                ...">, <Block token: "endif...">, <Text token: "Please answer all re...">, <Block token: "else...">, <Text token: "يرجى الإجابة على جمي...">, <Block token: "if language == "ar"...">, <Text token: ";            const ...">, <Var token: "total_questions...">, <Text token: "            </small...">, <Block token: "endif...">, <Text token: "                Tha...">, <Block token: "else...">, <Text token: "                شكر...">, <Block token: "if language == 'ar'...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "                   ...">, <Block token: "else...">, <Text token: "                   ...">, <Block token: "if language == 'ar'...">, <Text token: "                   ...">, <Block token: "endfor...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: ""></textarea>      ...">, <Block token: "endif...">, <Text token: "Enter your answer he...">, <Block token: "else...">, <Text token: "أدخل إجابتك هنا...">, <Block token: "if language == 'ar'...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: "" class="form-contro...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "elif question.questi...">, <Text token: "">                 ...">, <Block token: "endif...">, <Text token: "Enter your answer he...">, <Block token: "else...">, <Text token: "أدخل إجابتك هنا...">, <Block token: "if language == 'ar'...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: "" class="form-contro...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "elif question.questi...">, <Text token: "                   ...">, <Block token: "endfor...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "                   ...">, <Var token: "choice.label...">, <Text token: "                   ...">, <Block token: "else...">, <Text token: "                   ...">, <Var token: "choice.label_ar...">, <Text token: "                   ...">, <Block token: "if language == 'ar' ...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: ""                  ...">, <Var token: "choice.value...">, <Text token: "" value="...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "for choice in questi...">, <Text token: "                   ...">, <Block token: "elif question.questi...">, <Text token: ">                  ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: ""                  ...">, <Var token: "question.id...">, <Text token: "" id="question_...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "No...">, <Block token: "else...">, <Text token: "لا...">, <Block token: "if language == 'ar'...">, <Text token: "')">               ...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "Yes...">, <Block token: "else...">, <Text token: "نعم...">, <Block token: "if language == 'ar'...">, <Text token: "')">               ...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "elif question.questi...">, <Text token: "                   ...">, <Block token: "endfor...">, <Text token: "                   ...">, <Block token: "endwith...">, <Text token: "</span>            ...">, <Var token: "parts.1...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: ""                  ...">, <Var token: "parts.0...">, <Text token: "" value="...">, <Var token: "question.id...">, <Text token: "         … <trimmed 4195 bytes string>
    token
    <Block token: "for value, label in ...">
    token_type
    2
  • /home/ismail/projects/HH/.venv/lib/python3.12/site-packages/django/template/base.py, line 583, in parse
    1.                 try:
    2.                     compile_func = self.tags[command]
    3.                 except KeyError:
    4.                     self.invalid_block_tag(token, command, parse_until)
    5.                 # Compile the callback into a node object and add it to
    6.                 # the node list.
    7.                 try:
    1.                     compiled_result = compile_func(self, token)
                                                 ^^^^^^^^^^^^^^^^^^^^^^^^^
    1.                 except Exception as e:
    2.                     raise self.error(token, e)
    3.                 self.extend_nodelist(nodelist, compiled_result, token)
    4.                 # Compile success. Remove the token from the command stack.
    5.                 self.command_stack.pop()
    6.         if parse_until:
    Local vars
    Variable Value
    command
    'for'
    compile_func
    <function do_for at 0x72a9b47325c0>
    nodelist
    [<TextNode: '\n                        '>]
    parse_until
    ('elif', 'else', 'endif')
    self
    <Parser tokens=[<Text token: "');                ...">, <Block token: "endif...">, <Text token: "Please answer all re...">, <Block token: "else...">, <Text token: "يرجى الإجابة على جمي...">, <Block token: "if language == "ar"...">, <Text token: ";            const ...">, <Var token: "total_questions...">, <Text token: "            </small...">, <Block token: "endif...">, <Text token: "                Tha...">, <Block token: "else...">, <Text token: "                شكر...">, <Block token: "if language == 'ar'...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "                   ...">, <Block token: "else...">, <Text token: "                   ...">, <Block token: "if language == 'ar'...">, <Text token: "                   ...">, <Block token: "endfor...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: ""></textarea>      ...">, <Block token: "endif...">, <Text token: "Enter your answer he...">, <Block token: "else...">, <Text token: "أدخل إجابتك هنا...">, <Block token: "if language == 'ar'...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: "" class="form-contro...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "elif question.questi...">, <Text token: "">                 ...">, <Block token: "endif...">, <Text token: "Enter your answer he...">, <Block token: "else...">, <Text token: "أدخل إجابتك هنا...">, <Block token: "if language == 'ar'...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: "" class="form-contro...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "elif question.questi...">, <Text token: "                   ...">, <Block token: "endfor...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "                   ...">, <Var token: "choice.label...">, <Text token: "                   ...">, <Block token: "else...">, <Text token: "                   ...">, <Var token: "choice.label_ar...">, <Text token: "                   ...">, <Block token: "if language == 'ar' ...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: ""                  ...">, <Var token: "choice.value...">, <Text token: "" value="...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "for choice in questi...">, <Text token: "                   ...">, <Block token: "elif question.questi...">, <Text token: ">                  ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: ""                  ...">, <Var token: "question.id...">, <Text token: "" id="question_...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "No...">, <Block token: "else...">, <Text token: "لا...">, <Block token: "if language == 'ar'...">, <Text token: "')">               ...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "Yes...">, <Block token: "else...">, <Text token: "نعم...">, <Block token: "if language == 'ar'...">, <Text token: "')">               ...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "elif question.questi...">, <Text token: "                   ...">, <Block token: "endfor...">, <Text token: "                   ...">, <Block token: "endwith...">, <Text token: "</span>            ...">, <Var token: "parts.1...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: ""                  ...">, <Var token: "parts.0...">, <Text token: "" value="...">, <Var token: "question.id...">, <Text token: "         … <trimmed 4195 bytes string>
    token
    <Block token: "for value, label in ...">
    token_type
    2
  • /home/ismail/projects/HH/.venv/lib/python3.12/site-packages/django/template/defaulttags.py, line 893, in do_for
    1.     loopvars = re.split(r" *, *", " ".join(bits[1:in_index]))
    2.     for var in loopvars:
    3.         if not var or not invalid_chars.isdisjoint(var):
    4.             raise TemplateSyntaxError(
    5.                 "'for' tag received an invalid argument: %s" % token.contents
    6.             )
    1.     sequence = parser.compile_filter(bits[in_index + 1])
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    1.     nodelist_loop = parser.parse(
    2.         (
    3.             "empty",
    4.             "endfor",
    5.         )
    6.     )
    Local vars
    Variable Value
    bits
    ['for',
     'value,',
     'label',
     'in',
     '"1:Strongly Disagree,2:Disagree,3:Neutral,4:Agree,5:Strongly '
     'Agree"|split:","']
    in_index
    -2
    invalid_chars
    frozenset({' ', "'", '"', '|'})
    is_reversed
    False
    loopvars
    ['value', 'label']
    parser
    <Parser tokens=[<Text token: "');                ...">, <Block token: "endif...">, <Text token: "Please answer all re...">, <Block token: "else...">, <Text token: "يرجى الإجابة على جمي...">, <Block token: "if language == "ar"...">, <Text token: ";            const ...">, <Var token: "total_questions...">, <Text token: "            </small...">, <Block token: "endif...">, <Text token: "                Tha...">, <Block token: "else...">, <Text token: "                شكر...">, <Block token: "if language == 'ar'...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "                   ...">, <Block token: "else...">, <Text token: "                   ...">, <Block token: "if language == 'ar'...">, <Text token: "                   ...">, <Block token: "endfor...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: ""></textarea>      ...">, <Block token: "endif...">, <Text token: "Enter your answer he...">, <Block token: "else...">, <Text token: "أدخل إجابتك هنا...">, <Block token: "if language == 'ar'...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: "" class="form-contro...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "elif question.questi...">, <Text token: "">                 ...">, <Block token: "endif...">, <Text token: "Enter your answer he...">, <Block token: "else...">, <Text token: "أدخل إجابتك هنا...">, <Block token: "if language == 'ar'...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: "" class="form-contro...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "elif question.questi...">, <Text token: "                   ...">, <Block token: "endfor...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "                   ...">, <Var token: "choice.label...">, <Text token: "                   ...">, <Block token: "else...">, <Text token: "                   ...">, <Var token: "choice.label_ar...">, <Text token: "                   ...">, <Block token: "if language == 'ar' ...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: ""                  ...">, <Var token: "choice.value...">, <Text token: "" value="...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "for choice in questi...">, <Text token: "                   ...">, <Block token: "elif question.questi...">, <Text token: ">                  ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: ""                  ...">, <Var token: "question.id...">, <Text token: "" id="question_...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "No...">, <Block token: "else...">, <Text token: "لا...">, <Block token: "if language == 'ar'...">, <Text token: "')">               ...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "Yes...">, <Block token: "else...">, <Text token: "نعم...">, <Block token: "if language == 'ar'...">, <Text token: "')">               ...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "elif question.questi...">, <Text token: "                   ...">, <Block token: "endfor...">, <Text token: "                   ...">, <Block token: "endwith...">, <Text token: "</span>            ...">, <Var token: "parts.1...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: ""                  ...">, <Var token: "parts.0...">, <Text token: "" value="...">, <Var token: "question.id...">, <Text token: "         … <trimmed 4195 bytes string>
    token
    <Block token: "for value, label in ...">
    var
    'label'
  • /home/ismail/projects/HH/.venv/lib/python3.12/site-packages/django/template/base.py, line 676, in compile_filter
    1.         self.tags.update(lib.tags)
    2.         self.filters.update(lib.filters)
    3.     def compile_filter(self, token):
    4.         """
    5.         Convenient wrapper for FilterExpression
    6.         """
    1.         return FilterExpression(token, self)
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    1.     def find_filter(self, filter_name):
    2.         if filter_name in self.filters:
    3.             return self.filters[filter_name]
    4.         else:
    5.             raise TemplateSyntaxError("Invalid filter: '%s'" % filter_name)
    Local vars
    Variable Value
    self
    <Parser tokens=[<Text token: "');                ...">, <Block token: "endif...">, <Text token: "Please answer all re...">, <Block token: "else...">, <Text token: "يرجى الإجابة على جمي...">, <Block token: "if language == "ar"...">, <Text token: ";            const ...">, <Var token: "total_questions...">, <Text token: "            </small...">, <Block token: "endif...">, <Text token: "                Tha...">, <Block token: "else...">, <Text token: "                شكر...">, <Block token: "if language == 'ar'...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "                   ...">, <Block token: "else...">, <Text token: "                   ...">, <Block token: "if language == 'ar'...">, <Text token: "                   ...">, <Block token: "endfor...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: ""></textarea>      ...">, <Block token: "endif...">, <Text token: "Enter your answer he...">, <Block token: "else...">, <Text token: "أدخل إجابتك هنا...">, <Block token: "if language == 'ar'...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: "" class="form-contro...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "elif question.questi...">, <Text token: "">                 ...">, <Block token: "endif...">, <Text token: "Enter your answer he...">, <Block token: "else...">, <Text token: "أدخل إجابتك هنا...">, <Block token: "if language == 'ar'...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: "" class="form-contro...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "elif question.questi...">, <Text token: "                   ...">, <Block token: "endfor...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "                   ...">, <Var token: "choice.label...">, <Text token: "                   ...">, <Block token: "else...">, <Text token: "                   ...">, <Var token: "choice.label_ar...">, <Text token: "                   ...">, <Block token: "if language == 'ar' ...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: ""                  ...">, <Var token: "choice.value...">, <Text token: "" value="...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "for choice in questi...">, <Text token: "                   ...">, <Block token: "elif question.questi...">, <Text token: ">                  ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: ""                  ...">, <Var token: "question.id...">, <Text token: "" id="question_...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "No...">, <Block token: "else...">, <Text token: "لا...">, <Block token: "if language == 'ar'...">, <Text token: "')">               ...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "Yes...">, <Block token: "else...">, <Text token: "نعم...">, <Block token: "if language == 'ar'...">, <Text token: "')">               ...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "elif question.questi...">, <Text token: "                   ...">, <Block token: "endfor...">, <Text token: "                   ...">, <Block token: "endwith...">, <Text token: "</span>            ...">, <Var token: "parts.1...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: ""                  ...">, <Var token: "parts.0...">, <Text token: "" value="...">, <Var token: "question.id...">, <Text token: "         … <trimmed 4195 bytes string>
    token
    '"1:Strongly Disagree,2:Disagree,3:Neutral,4:Agree,5:Strongly Agree"|split:","'
  • /home/ismail/projects/HH/.venv/lib/python3.12/site-packages/django/template/base.py, line 771, in __init__
    1.             else:
    2.                 filter_name = match["filter_name"]
    3.                 args = []
    4.                 if constant_arg := match["constant_arg"]:
    5.                     args.append((False, Variable(constant_arg).resolve({})))
    6.                 elif var_arg := match["var_arg"]:
    7.                     args.append((True, Variable(var_arg)))
    1.                 filter_func = parser.find_filter(filter_name)
                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    1.                 self.args_check(filter_name, filter_func, args)
    2.                 filters.append((filter_func, args))
    3.             upto = match.end()
    4.         if upto != len(token):
    5.             raise TemplateSyntaxError(
    6.                 "Could not parse the remainder: '%s' "
    Local vars
    Variable Value
    args
    [(False, ',')]
    constant
    '"1:Strongly Disagree,2:Disagree,3:Neutral,4:Agree,5:Strongly Agree"'
    constant_arg
    '","'
    filter_name
    'split'
    filters
    []
    match
    <re.Match object; span=(67, 77), match='|split:","'>
    matches
    <callable_iterator object at 0x72a9aab17a30>
    parser
    <Parser tokens=[<Text token: "');                ...">, <Block token: "endif...">, <Text token: "Please answer all re...">, <Block token: "else...">, <Text token: "يرجى الإجابة على جمي...">, <Block token: "if language == "ar"...">, <Text token: ";            const ...">, <Var token: "total_questions...">, <Text token: "            </small...">, <Block token: "endif...">, <Text token: "                Tha...">, <Block token: "else...">, <Text token: "                شكر...">, <Block token: "if language == 'ar'...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "                   ...">, <Block token: "else...">, <Text token: "                   ...">, <Block token: "if language == 'ar'...">, <Text token: "                   ...">, <Block token: "endfor...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: ""></textarea>      ...">, <Block token: "endif...">, <Text token: "Enter your answer he...">, <Block token: "else...">, <Text token: "أدخل إجابتك هنا...">, <Block token: "if language == 'ar'...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: "" class="form-contro...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "elif question.questi...">, <Text token: "">                 ...">, <Block token: "endif...">, <Text token: "Enter your answer he...">, <Block token: "else...">, <Text token: "أدخل إجابتك هنا...">, <Block token: "if language == 'ar'...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: "" class="form-contro...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "elif question.questi...">, <Text token: "                   ...">, <Block token: "endfor...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "                   ...">, <Var token: "choice.label...">, <Text token: "                   ...">, <Block token: "else...">, <Text token: "                   ...">, <Var token: "choice.label_ar...">, <Text token: "                   ...">, <Block token: "if language == 'ar' ...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: ""                  ...">, <Var token: "choice.value...">, <Text token: "" value="...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "for choice in questi...">, <Text token: "                   ...">, <Block token: "elif question.questi...">, <Text token: ">                  ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: ""                  ...">, <Var token: "question.id...">, <Text token: "" id="question_...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "No...">, <Block token: "else...">, <Text token: "لا...">, <Block token: "if language == 'ar'...">, <Text token: "')">               ...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "Yes...">, <Block token: "else...">, <Text token: "نعم...">, <Block token: "if language == 'ar'...">, <Text token: "')">               ...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "elif question.questi...">, <Text token: "                   ...">, <Block token: "endfor...">, <Text token: "                   ...">, <Block token: "endwith...">, <Text token: "</span>            ...">, <Var token: "parts.1...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: ""                  ...">, <Var token: "parts.0...">, <Text token: "" value="...">, <Var token: "question.id...">, <Text token: "         … <trimmed 4195 bytes string>
    self
    <FilterExpression '"1:Strongly Disagree,2:Disagree,3:Neutral,4:Agree,5:Strongly Agree"|split:","'>
    start
    67
    token
    '"1:Strongly Disagree,2:Disagree,3:Neutral,4:Agree,5:Strongly Agree"|split:","'
    upto
    67
    var_obj
    '1:Strongly Disagree,2:Disagree,3:Neutral,4:Agree,5:Strongly Agree'
  • /home/ismail/projects/HH/.venv/lib/python3.12/site-packages/django/template/base.py, line 682, in find_filter
    1.         """
    2.         return FilterExpression(token, self)
    3.     def find_filter(self, filter_name):
    4.         if filter_name in self.filters:
    5.             return self.filters[filter_name]
    6.         else:
    1.             raise TemplateSyntaxError("Invalid filter: '%s'" % filter_name)
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    1. # This only matches constant *strings* (things in quotes or marked for
    2. # translation). Numbers are treated as variables for implementation reasons
    3. # (so that they retain their type when passed to filters).
    4. constant_string = r"""
    Local vars
    Variable Value
    filter_name
    'split'
    self
    <Parser tokens=[<Text token: "');                ...">, <Block token: "endif...">, <Text token: "Please answer all re...">, <Block token: "else...">, <Text token: "يرجى الإجابة على جمي...">, <Block token: "if language == "ar"...">, <Text token: ";            const ...">, <Var token: "total_questions...">, <Text token: "            </small...">, <Block token: "endif...">, <Text token: "                Tha...">, <Block token: "else...">, <Text token: "                شكر...">, <Block token: "if language == 'ar'...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "                   ...">, <Block token: "else...">, <Text token: "                   ...">, <Block token: "if language == 'ar'...">, <Text token: "                   ...">, <Block token: "endfor...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: ""></textarea>      ...">, <Block token: "endif...">, <Text token: "Enter your answer he...">, <Block token: "else...">, <Text token: "أدخل إجابتك هنا...">, <Block token: "if language == 'ar'...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: "" class="form-contro...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "elif question.questi...">, <Text token: "">                 ...">, <Block token: "endif...">, <Text token: "Enter your answer he...">, <Block token: "else...">, <Text token: "أدخل إجابتك هنا...">, <Block token: "if language == 'ar'...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: "" class="form-contro...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "elif question.questi...">, <Text token: "                   ...">, <Block token: "endfor...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "                   ...">, <Var token: "choice.label...">, <Text token: "                   ...">, <Block token: "else...">, <Text token: "                   ...">, <Var token: "choice.label_ar...">, <Text token: "                   ...">, <Block token: "if language == 'ar' ...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: ""                  ...">, <Var token: "choice.value...">, <Text token: "" value="...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "for choice in questi...">, <Text token: "                   ...">, <Block token: "elif question.questi...">, <Text token: ">                  ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: ""                  ...">, <Var token: "question.id...">, <Text token: "" id="question_...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "No...">, <Block token: "else...">, <Text token: "لا...">, <Block token: "if language == 'ar'...">, <Text token: "')">               ...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "Yes...">, <Block token: "else...">, <Text token: "نعم...">, <Block token: "if language == 'ar'...">, <Text token: "')">               ...">, <Var token: "question.id...">, <Text token: "                   ...">, <Block token: "elif question.questi...">, <Text token: "                   ...">, <Block token: "endfor...">, <Text token: "                   ...">, <Block token: "endwith...">, <Text token: "</span>            ...">, <Var token: "parts.1...">, <Text token: "                   ...">, <Block token: "endif...">, <Text token: "required...">, <Block token: "if question.is_requi...">, <Text token: ""                  ...">, <Var token: "parts.0...">, <Text token: "" value="...">, <Var token: "question.id...">, <Text token: "         … <trimmed 4195 bytes string>


Request information

USER

AnonymousUser

GET

No GET data

POST

No POST data

FILES

No FILES data

No cookie data

META

Variable Value
ADMIN_URL
'admin/'
AI_MAX_TOKENS
'********************'
AI_MODEL
'openai/gpt-4o-mini'
AI_TEMPERATURE
'0.3'
ALLOWED_HOSTS
'localhost,127.0.0.1'
BUNDLED_DEBUGPY_PATH
'/home/ismail/.vscode/extensions/ms-python.debugpy-2025.18.0-linux-x64/bundled/libs/debugpy'
CELERY_BROKER_URL
'redis://localhost:6379/0'
CELERY_RESULT_BACKEND
'redis://localhost:6379/0'
CELERY_TASK_ALWAYS_EAGER
'False'
CHI_API_KEY
'********************'
CHI_API_URL
'********************'
CHROME_DESKTOP
'code.desktop'
CLINE_ACTIVE
'true'
CLUTTER_BACKEND
'x11'
COLORTERM
'truecolor'
COMPIZ_CONFIG_PROFILE
'mint'
CONTENT_LENGTH
''
CONTENT_TYPE
'text/plain'
DATABASE_URL
'sqlite:///db.sqlite3'
DBUS_SESSION_BUS_ADDRESS
'unix:path=/run/user/1000/bus,guid=ec01317cbe154a03aadece3369691cd5'
DBUS_STARTER_ADDRESS
'unix:path=/run/user/1000/bus,guid=ec01317cbe154a03aadece3369691cd5'
DBUS_STARTER_BUS_TYPE
'session'
DEBUG
'True'
DEFAULT_FROM_EMAIL
'noreply@px360.sa'
DESKTOP_SESSION
'mate'
DISPLAY
':0'
DJANGO_SETTINGS_MODULE
'config.settings.dev'
EMAIL_API_ENABLED
'********************'
EMAIL_API_KEY
'********************'
EMAIL_API_URL
'********************'
EMAIL_BACKEND
'django.core.mail.backends.smtp.EmailBackend'
EMAIL_ENABLED
'True'
EMAIL_HOST
'localhost'
EMAIL_HOST_PASSWORD
'********************'
EMAIL_HOST_USER
''
EMAIL_PORT
'2525'
EMAIL_PROVIDER
'console'
EMAIL_USE_TLS
'False'
FC_FONTATIONS
'1'
GATEWAY_INTERFACE
'CGI/1.1'
GDK_BACKEND
'x11'
GDMSESSION
'mate'
GDM_LANG
'en_US'
GIO_LAUNCHED_DESKTOP_FILE
'/usr/share/applications/code.desktop'
GIO_LAUNCHED_DESKTOP_FILE_PID
'2259'
GIT_ASKPASS
'********************'
GNOME_KEYRING_CONTROL
'********************'
GPG_AGENT_INFO
'/run/user/1000/gnupg/S.gpg-agent:0:1'
GSM_SKIP_SSH_AGENT_WORKAROUND
'true'
GTK3_MODULES
'xapp-gtk3-module'
GTK_MODULES
'gail:atk-bridge'
GTK_OVERLAY_SCROLLING
'0'
HIS_API_KEY
'********************'
HIS_API_URL
'********************'
HOME
'/home/ismail'
HTTP_ACCEPT
'*/*'
HTTP_HOST
'localhost:8000'
HTTP_USER_AGENT
'curl/8.5.0'
IM_CONFIG_PHASE
'1'
LANG
'en_US.UTF-8'
LANGUAGE
'en_US'
LC_ADDRESS
'ar_SA.UTF-8'
LC_IDENTIFICATION
'ar_SA.UTF-8'
LC_MEASUREMENT
'ar_SA.UTF-8'
LC_MONETARY
'ar_SA.UTF-8'
LC_NAME
'ar_SA.UTF-8'
LC_NUMERIC
'ar_SA.UTF-8'
LC_PAPER
'ar_SA.UTF-8'
LC_TELEPHONE
'ar_SA.UTF-8'
LC_TIME
'en_US.UTF-8'
LESSCLOSE
'/usr/bin/lesspipe %s %s'
LESSOPEN
'| /usr/bin/lesspipe %s'
LOGNAME
'ismail'
LS_COLORS
'rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=00:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.avif=01;35:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:*~=00;90:*#=00;90:*.bak=00;90:*.crdownload=00;90:*.dpkg-dist=00;90:*.dpkg-new=00;90:*.dpkg-old=00;90:*.dpkg-tmp=00;90:*.old=00;90:*.orig=00;90:*.part=00;90:*.rej=00;90:*.rpmnew=00;90:*.rpmorig=00;90:*.rpmsave=00;90:*.swp=00;90:*.tmp=00;90:*.ucf-dist=00;90:*.ucf-new=00;90:*.ucf-old=00;90:'
MANAGERPID
'1065'
MATE_DESKTOP_SESSION_ID
'this-is-deprecated'
MEMORY_PRESSURE_WATCH
'/sys/fs/cgroup/user.slice/user-1000.slice/user@1000.service/session.slice/dbus.service/memory.pressure'
MEMORY_PRESSURE_WRITE
'c29tZSAyMDAwMDAgMjAwMDAwMAA='
MOH_API_KEY
'********************'
MOH_API_URL
'********************'
NVM_BIN
'/home/ismail/.nvm/versions/node/v24.12.0/bin'
NVM_CD_FLAGS
''
NVM_DIR
'/home/ismail/.nvm'
NVM_INC
'/home/ismail/.nvm/versions/node/v24.12.0/include/node'
OPENROUTER_API_KEY
'********************'
PAPERSIZE
'a4'
PATH
'/home/ismail/projects/HH/.venv/bin:/home/ismail/projects/local_ai_builder/venv/bin:/home/ismail/.opencode/bin:/home/ismail/.local/bin:/home/ismail/.opencode/bin:/home/ismail/.nvm/versions/node/v24.12.0/bin:/home/ismail/.cargo/bin:/home/ismail/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/ismail/.vscode/extensions/ms-python.debugpy-2025.18.0-linux-x64/bundled/scripts/noConfigScripts'
PATH_INFO
'/surveys/s/H8d9tlVs0BgeAp1XA4NczXoiCcqAaN0r_lc0Eb63U1Y/'
PS1
('\\[\x1b]633;A\x07\\](venv) \\[\x1b]633;A\x07\\]\\[\\e]0;\\u@\\h: '
 '\\w\\a\\]${debian_chroot:+($debian_chroot)}\\[\\033[01;32m\\]\\u@\\h\\[\\033[00m\\]:\\[\\033[01;34m\\]\\w\\[\\033[00m\\]\\$ '
 '\\[\x1b]633;B\x07\\]\\[\x1b]633;B\x07\\]')
PWD
'/home/ismail/projects/HH'
PYDEVD_DISABLE_FILE_VALIDATION
'1'
PYTHONSTARTUP
'/home/ismail/.config/Code/User/workspaceStorage/be2a9b869fd4f54d8616f8f370827124/ms-python.python/pythonrc.py'
PYTHON_BASIC_REPL
'1'
QT_ACCESSIBILITY
'1'
QT_FONT_DPI
'96'
QT_SCALE_FACTOR
'1'
QUERY_STRING
''
REMOTE_ADDR
'127.0.0.1'
REMOTE_HOST
''
REQUEST_METHOD
'GET'
RUN_MAIN
'true'
SCRIPT_NAME
''
SECRET_KEY
'********************'
SERVER_NAME
'localhost'
SERVER_PORT
'8000'
SERVER_PROTOCOL
'HTTP/1.1'
SERVER_SOFTWARE
'WSGIServer/0.2'
SESSION_MANAGER
'local/ismail-Latitude-5500:@/tmp/.ICE-unix/1084,unix/ismail-Latitude-5500:/tmp/.ICE-unix/1084'
SHELL
'/bin/bash'
SHLVL
'0'
SMS_API_ENABLED
'********************'
SMS_API_KEY
'********************'
SMS_API_URL
'********************'
SMS_ENABLED
'False'
SMS_PROVIDER
'console'
SSH_AUTH_SOCK
'********************'
SYSTEMD_EXEC_PID
'1090'
TERM
'xterm-256color'
TERM_PROGRAM
'vscode'
TERM_PROGRAM_VERSION
'1.108.1'
TZ
'Asia/Riyadh'
USER
'ismail'
UV
'/home/ismail/.local/bin/uv'
UV_RUN_RECURSION_DEPTH
'1'
VIRTUAL_ENV
'/home/ismail/projects/HH/.venv'
VIRTUAL_ENV_PROMPT
'(venv) '
VSCODE_DEBUGPY_ADAPTER_ENDPOINTS
'/home/ismail/.vscode/extensions/ms-python.debugpy-2025.18.0-linux-x64/.noConfigDebugAdapterEndpoints/endpoint-982a1c8d3b85454b.txt'
VSCODE_GIT_ASKPASS_EXTRA_ARGS
'********************'
VSCODE_GIT_ASKPASS_MAIN
'********************'
VSCODE_GIT_ASKPASS_NODE
'********************'
VSCODE_GIT_IPC_HANDLE
'/run/user/1000/vscode-git-4aa301eaf0.sock'
VSCODE_PYTHON_AUTOACTIVATE_GUARD
'1'
WHATSAPP_ENABLED
'False'
WHATSAPP_PROVIDER
'console'
XAUTHORITY
'********************'
XDG_CONFIG_DIRS
'/etc/xdg/xdg-mate:/etc/xdg'
XDG_CURRENT_DESKTOP
'MATE'
XDG_DATA_DIRS
'/usr/share/mate:/usr/share/mate:/usr/share/gnome:/home/ismail/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share'
XDG_GREETER_DATA_DIR
'/var/lib/lightdm-data/ismail'
XDG_RUNTIME_DIR
'/run/user/1000'
XDG_SEAT_PATH
'/org/freedesktop/DisplayManager/Seat0'
XDG_SESSION_CLASS
'user'
XDG_SESSION_DESKTOP
'mate'
XDG_SESSION_PATH
'/org/freedesktop/DisplayManager/Session0'
XDG_SESSION_TYPE
'x11'
_
'/home/ismail/.local/bin/uv'
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 0x72a9aab30430>
wsgi.multiprocess
False
wsgi.multithread
True
wsgi.run_once
False
wsgi.url_scheme
'http'
wsgi.version
(1, 0)

Settings

Using settings module config.settings.dev

Setting Value
ABSOLUTE_URL_OVERRIDES
{}
ADMINS
[]
AI_MAX_TOKENS
'********************'
AI_MODEL
'openai/gpt-4o-mini'
AI_TEMPERATURE
0.3
ALLOWED_HOSTS
['localhost', '127.0.0.1', '0.0.0.0']
ANALYSIS_BATCH_SIZE
2
ANALYSIS_ENABLED
True
APPEND_SLASH
True
AUTHENTICATION_BACKENDS
'********************'
AUTH_PASSWORD_VALIDATORS
'********************'
AUTH_USER_MODEL
'********************'
BASE_DIR
PosixPath('/home/ismail/projects/HH')
CACHES
{'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'}}
CACHE_MIDDLEWARE_ALIAS
'default'
CACHE_MIDDLEWARE_KEY_PREFIX
'********************'
CACHE_MIDDLEWARE_SECONDS
600
CELERY_ACCEPT_CONTENT
['json']
CELERY_BEAT_SCHEDULER
'django_celery_beat.schedulers:DatabaseScheduler'
CELERY_BROKER_URL
'redis://localhost:6379/0'
CELERY_RESULT_BACKEND
'redis://localhost:6379/0'
CELERY_RESULT_SERIALIZER
'json'
CELERY_TASK_ALWAYS_EAGER
False
CELERY_TASK_EAGER_PROPAGATES
True
CELERY_TASK_SERIALIZER
'json'
CELERY_TASK_TIME_LIMIT
1800
CELERY_TASK_TRACK_STARTED
True
CELERY_TIMEZONE
'Asia/Riyadh'
CORS_ALLOW_ALL_ORIGINS
True
CSRF_COOKIE_AGE
31449600
CSRF_COOKIE_DOMAIN
None
CSRF_COOKIE_HTTPONLY
True
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_HEALTH_CHECKS': False,
             'CONN_MAX_AGE': 0,
             'ENGINE': 'django.db.backends.sqlite3',
             'HOST': '',
             'NAME': PosixPath('/home/ismail/projects/HH/db.sqlite3'),
             'OPTIONS': {},
             'PASSWORD': '********************',
             'PORT': '',
             'TEST': {'CHARSET': None,
                      'COLLATION': None,
                      'MIGRATE': True,
                      'MIRROR': None,
                      'NAME': None},
             'TIME_ZONE': None,
             'USER': ''}}
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_FROM_EMAIL
'noreply@px360.sa'
DEFAULT_INDEX_TABLESPACE
''
DEFAULT_TABLESPACE
''
DISALLOWED_USER_AGENTS
[]
DJANGO_APPS
['django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles']
EMAIL_BACKEND
'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST
'localhost'
EMAIL_HOST_PASSWORD
'********************'
EMAIL_HOST_USER
''
EMAIL_PORT
2525
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
EXTERNAL_NOTIFICATION_API
'********************'
FACEBOOK_ACCESS_TOKEN
'********************'
FACEBOOK_PAGE_ID
'938104059393026'
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'
GOOGLE_CREDENTIALS_FILE
'client_secret.json'
GOOGLE_LOCATIONS
[]
GOOGLE_TOKEN_FILE
'********************'
IGNORABLE_404_URLS
[]
INSTAGRAM_ACCESS_TOKEN
'********************'
INSTAGRAM_ACCOUNT_ID
'17841431861985364'
INSTALLED_APPS
['django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'rest_framework',
 'rest_framework_simplejwt',
 'django_filters',
 'drf_spectacular',
 'django_celery_beat',
 'apps.core',
 'apps.accounts',
 'apps.organizations',
 'apps.journeys',
 'apps.surveys',
 'apps.complaints',
 'apps.feedback',
 'apps.callcenter',
 'apps.social',
 'apps.px_action_center',
 'apps.analytics',
 'apps.physicians',
 'apps.projects',
 'apps.integrations',
 'apps.notifications',
 'apps.ai_engine',
 'apps.dashboard',
 'apps.appreciation',
 'apps.observations',
 'apps.px_sources',
 'apps.references',
 'apps.standards',
 'apps.simulator',
 'django_extensions']
INTERNAL_IPS
[]
LANGUAGES
[('en', 'English'), ('ar', 'Arabic')]
LANGUAGES_BIDI
['he', 'ar', 'ar-dz', 'ckb', 'fa', 'ug', 'ur']
LANGUAGE_CODE
'en-us'
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
LINKEDIN_ACCESS_TOKEN
'********************'
LINKEDIN_ORGANIZATION_ID
None
LOCALE_PATHS
[PosixPath('/home/ismail/projects/HH/locale')]
LOCAL_APPS
['apps.core',
 'apps.accounts',
 'apps.organizations',
 'apps.journeys',
 'apps.surveys',
 'apps.complaints',
 'apps.feedback',
 'apps.callcenter',
 'apps.social',
 'apps.px_action_center',
 'apps.analytics',
 'apps.physicians',
 'apps.projects',
 'apps.integrations',
 'apps.notifications',
 'apps.ai_engine',
 'apps.dashboard',
 'apps.appreciation',
 'apps.observations',
 'apps.px_sources',
 'apps.references',
 'apps.standards',
 'apps.simulator']
LOGGING
{'disable_existing_loggers': False,
 'filters': {'require_debug_true': {'()': 'django.utils.log.RequireDebugTrue'}},
 'formatters': {'simple': {'format': '{levelname} {message}', 'style': '{'},
                'verbose': {'format': '{levelname} {asctime} {module} '
                                      '{process:d} {thread:d} {message}',
                            'style': '{'}},
 'handlers': {'console': {'class': 'logging.StreamHandler',
                          'formatter': 'verbose',
                          'level': 'INFO'},
              'file': {'backupCount': 10,
                       'class': 'logging.handlers.RotatingFileHandler',
                       'filename': PosixPath('/home/ismail/projects/HH/logs/px360.log'),
                       'formatter': 'verbose',
                       'level': 'INFO',
                       'maxBytes': 15728640},
              'integration_file': {'backupCount': 10,
                                   'class': 'logging.handlers.RotatingFileHandler',
                                   'filename': PosixPath('/home/ismail/projects/HH/logs/integrations.log'),
                                   'formatter': 'verbose',
                                   'level': 'INFO',
                                   'maxBytes': 15728640}},
 'loggers': {'apps': {'handlers': ['console', 'file'],
                      'level': 'DEBUG',
                      'propagate': False},
             'apps.integrations': {'handlers': ['console', 'integration_file'],
                                   'level': 'INFO',
                                   'propagate': False},
             'django': {'handlers': ['console', 'file'],
                        'level': 'DEBUG',
                        'propagate': False}},
 'version': 1}
LOGGING_CONFIG
'logging.config.dictConfig'
LOGIN_ATTEMPT_TIMEOUT_MINUTES
30
LOGIN_REDIRECT_URL
'/'
LOGIN_URL
'/accounts/login/'
LOGOUT_REDIRECT_URL
'/accounts/login/'
LOGS_DIR
PosixPath('/home/ismail/projects/HH/logs')
MANAGERS
[]
MAX_LOGIN_ATTEMPTS
5
MEDIA_ROOT
PosixPath('/home/ismail/projects/HH/media')
MEDIA_URL
'/media/'
MESSAGE_STORAGE
'django.contrib.messages.storage.fallback.FallbackStorage'
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',
 'apps.core.middleware.TenantMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware']
MIGRATION_MODULES
{}
MONTH_DAY_FORMAT
'F j'
NOTIFICATION_CHANNELS
{'email': {'enabled': True, 'provider': 'console'},
 'sms': {'enabled': False, 'provider': 'console'},
 'whatsapp': {'enabled': False, 'provider': 'console'}}
NUMBER_GROUPING
0
OPENROUTER_API_KEY
'********************'
OPENROUTER_MODEL
'google/gemma-3-27b-it:free'
PASSWORD_COMPLEXITY
'********************'
PASSWORD_HASHERS
'********************'
PASSWORD_MIN_LENGTH
'********************'
PASSWORD_RESET_TIMEOUT
'********************'
PREPEND_WWW
False
REST_FRAMEWORK
{'DEFAULT_AUTHENTICATION_CLASSES': '********************',
 'DEFAULT_FILTER_BACKENDS': ['django_filters.rest_framework.DjangoFilterBackend',
                             'rest_framework.filters.SearchFilter',
                             'rest_framework.filters.OrderingFilter'],
 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
 'DEFAULT_PERMISSION_CLASSES': ['rest_framework.permissions.IsAuthenticated'],
 'DEFAULT_SCHEMA_CLASS': 'drf_spectacular.openapi.AutoSchema',
 'PAGE_SIZE': 50}
ROOT_URLCONF
'config.urls'
SECRET_KEY
'********************'
SECRET_KEY_FALLBACKS
'********************'
SECURE_BROWSER_XSS_FILTER
True
SECURE_CONTENT_TYPE_NOSNIFF
True
SECURE_CROSS_ORIGIN_OPENER_POLICY
'same-origin'
SECURE_CSP
{}
SECURE_CSP_REPORT_ONLY
{}
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
7200
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
True
SESSION_FILE_PATH
None
SESSION_SAVE_EVERY_REQUEST
True
SESSION_SERIALIZER
'django.contrib.sessions.serializers.JSONSerializer'
SETTINGS_MODULE
'config.settings.dev'
SHORT_DATETIME_FORMAT
'm/d/Y P'
SHORT_DATE_FORMAT
'm/d/Y'
SIGNING_BACKEND
'django.core.signing.TimestampSigner'
SILENCED_SYSTEM_CHECKS
[]
SIMPLE_JWT
{'ACCESS_TOKEN_LIFETIME': '********************',
 'BLACKLIST_AFTER_ROTATION': True,
 'REFRESH_TOKEN_LIFETIME': '********************',
 'ROTATE_REFRESH_TOKENS': '********************',
 'UPDATE_LAST_LOGIN': True}
SLA_DEFAULTS
{'action': {'critical': 24, 'high': 48, 'low': 120, 'medium': 72},
 'complaint': {'critical': 12, 'high': 24, 'low': 72, 'medium': 48}}
SPECTACULAR_SETTINGS
{'DESCRIPTION': 'Patient Experience 360 Management System API',
 'SERVE_INCLUDE_SCHEMA': False,
 'TITLE': 'PX360 API',
 'VERSION': '1.0.0'}
STATICFILES_DIRS
[PosixPath('/home/ismail/projects/HH/static')]
STATICFILES_FINDERS
['django.contrib.staticfiles.finders.FileSystemFinder',
 'django.contrib.staticfiles.finders.AppDirectoriesFinder']
STATIC_ROOT
PosixPath('/home/ismail/projects/HH/staticfiles')
STATIC_URL
'/static/'
STORAGES
{'default': {'BACKEND': 'django.core.files.storage.FileSystemStorage'},
 'staticfiles': {'BACKEND': 'whitenoise.storage.CompressedManifestStaticFilesStorage'}}
SURVEY_NEGATIVE_THRESHOLD
3
SURVEY_TOKEN_EXPIRY_DAYS
'********************'
TASKS
{'default': {'BACKEND': 'django.tasks.backends.immediate.ImmediateBackend'}}
TEMPLATES
[{'APP_DIRS': True,
  'BACKEND': 'django.template.backends.django.DjangoTemplates',
  'DIRS': [PosixPath('/home/ismail/projects/HH/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',
                                     'django.template.context_processors.i18n',
                                     'apps.core.context_processors.sidebar_counts',
                                     'apps.core.context_processors.hospital_context']}}]
TENANCY_ENABLED
True
TENANT_FIELD
'hospital'
TENANT_ISOLATION_LEVEL
'strict'
TENANT_MODEL
'organizations.Hospital'
TEST_NON_SERIALIZED_APPS
[]
TEST_RUNNER
'django.test.runner.DiscoverRunner'
THIRD_PARTY_APPS
['rest_framework',
 'rest_framework_simplejwt',
 'django_filters',
 'drf_spectacular',
 'django_celery_beat']
THOUSAND_SEPARATOR
','
TIME_FORMAT
'P'
TIME_INPUT_FORMATS
['%H:%M:%S', '%H:%M:%S.%f', '%H:%M']
TIME_ZONE
'Asia/Riyadh'
TWITTER_BEARER_TOKEN
'********************'
TWITTER_USERNAME
None
URLIZE_ASSUME_HTTPS
False
USE_I18N
True
USE_THOUSAND_SEPARATOR
False
USE_TZ
True
USE_X_FORWARDED_HOST
False
USE_X_FORWARDED_PORT
False
WSGI_APPLICATION
'config.wsgi.application'
X_FRAME_OPTIONS
'DENY'
YEAR_MONTH_FORMAT
'F Y'
YOUTUBE_API_KEY
'********************'
YOUTUBE_CHANNEL_ID
'UCKoEfCXsm4_cQMtqJTvZUVQ'