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 innerreturn inner
else:
@wraps(get_response)
def inner(request):
try:
response = get_response(request) ^^^^^^^^^^^^^^^^^^^^^…
except Exception as exc:
response = response_for_exception(request, exc)
return response
return inner
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_responseif response is None:
wrapped_callback = self.make_view_atomic(callback)
# If it is an asynchronous view, run it in a subthread.
if iscoroutinefunction(wrapped_callback):
wrapped_callback = async_to_sync(wrapped_callback)
try:
response = wrapped_callback(request, *callback_args, **callback_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^…
except Exception as e:
response = self.process_exception_by_middleware(e, request)
if response is None:
raise
# Complain if the view returned None (a common error).
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"Method Not Allowed (%s): %s",
request.method,
request.path,
response=response,
request=request,
)
return response
return func(request, *args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^…
return inner
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_formcontext = {'survey': survey,
'questions': questions,
'language': language,
'total_questions': questions.count(),
}
return render(request, 'surveys/public_form.html', context) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^…
def thank_you(request, token):
"""Thank you page after survey completion"""
try:
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 renderdef render(
request, template_name, context=None, content_type=None, status=None, using=None
):
"""
Return an HttpResponse whose content is filled with the result of calling
django.template.loader.render_to_string() with the passed arguments.
"""
content = loader.render_to_string(template_name, context, request, using=using) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^…
return HttpResponse(content, content_type, status)
def redirect(to, *args, permanent=False, preserve_request=False, **kwargs):
"""
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_stringLoad a template and render it with a context. Return a string.
template_name may be a string or a list of strings.
"""
if isinstance(template_name, (list, tuple)):
template = select_template(template_name, using=using)
else:
template = get_template(template_name, using=using) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^…
return template.render(context, request)
def _engine_list(using=None):
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_templateRaise TemplateDoesNotExist if no such template exists.
"""
chain = []
engines = _engine_list(using)
for engine in engines:
try:
return engine.get_template(template_name) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^…
except TemplateDoesNotExist as e:
chain.append(e)
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_templatereturn errors
def from_string(self, template_code):
return Template(self.engine.from_string(template_code), self)
def get_template(self, template_name):
try:
return Template(self.engine.get_template(template_name), self) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^…
except TemplateDoesNotExist as exc:
reraise(exc, self)
def get_templatetag_libraries(self, custom_libraries):
"""
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_templatetemplate_name, _, partial_name = template_name.partition("#")except AttributeError:
raise TemplateDoesNotExist(original_name)
if not template_name:
raise TemplateDoesNotExist(original_name)
template, origin = self.find_template(template_name) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^…
if not hasattr(template, "render"):
# template needs to be compiled
template = Template(template, origin, template_name, engine=self)
if not partial_name:
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"Invalid value in template loaders configuration: %r" % loader
)
def find_template(self, name, dirs=None, skip=None):
tried = []
for loader in self.template_loaders:
try:
template = loader.get_template(name, skip=skip) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^…
return template, template.origin
except TemplateDoesNotExist as e:
tried.extend(e.tried)
raise TemplateDoesNotExist(name, tried=tried)
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_templateif isinstance(cached, type) and issubclass(cached, TemplateDoesNotExist):
raise cached(template_name)
elif isinstance(cached, TemplateDoesNotExist):
raise copy_exception(cached)
return cached
try:
template = super().get_template(template_name, skip) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^…
except TemplateDoesNotExist as e:
self.get_template_cache[key] = (
copy_exception(e) if self.engine.debug else TemplateDoesNotExist
)
raise
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_templatetry:
contents = self.get_contents(origin)
except TemplateDoesNotExist:
tried.append((origin, "Source does not exist"))
continue
else:
return Template(…
contents,
origin,
origin.template_name,
self.engine,
)
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__engine = Engine.get_default()
if origin is None:
origin = Origin(UNKNOWN_SOURCE)
self.name = name
self.origin = origin
self.engine = engine
self.source = str(template_string) # May be lazy.
self.nodelist = self.compile_nodelist() ^^^^^^^^^^^^^^^^^^^^^^^…
def __repr__(self):
return '<%s template_string="%s...">' % (
self.__class__.__qualname__,
self.source[:20].replace("\n", ""),)
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_nodelisttokens,
self.engine.template_libraries,
self.engine.template_builtins,
self.origin,
)
try:
nodelist = parser.parse() ^^^^^^^^^^^^^^…
self.extra_data = parser.extra_data
return nodelist
except Exception as e:
if self.engine.debug:
e.template_debug = self.get_exception_info(e, e.token)
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 parseexcept KeyError:
self.invalid_block_tag(token, command, parse_until)
# Compile the callback into a node object and add it to
# the node list.
try:
compiled_result = compile_func(self, token)
except Exception as e:
raise self.error(token, e) ^^^^^^^^^^^^^^^^^^^^^^^^^^…
self.extend_nodelist(nodelist, compiled_result, token)
# Compile success. Remove the token from the command stack.
self.command_stack.pop()
if parse_until:
self.unclosed_block_tag(parse_until)
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 parsetry:
compile_func = self.tags[command]
except KeyError:
self.invalid_block_tag(token, command, parse_until)
# Compile the callback into a node object and add it to
# the node list.
try:
compiled_result = compile_func(self, token) ^^^^^^^^^^^^^^^^^^^^^^^^^…
except Exception as e:
raise self.error(token, e)
self.extend_nodelist(nodelist, compiled_result, token)
# Compile success. Remove the token from the command stack.
self.command_stack.pop()
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_forfor var in loopvars:
if not var or not invalid_chars.isdisjoint(var):
raise TemplateSyntaxError(
"'for' tag received an invalid argument: %s" % token.contents
)
sequence = parser.compile_filter(bits[in_index + 1])
nodelist_loop = parser.parse(…
(
"empty",
"endfor",
)
)
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 parseexcept KeyError:
self.invalid_block_tag(token, command, parse_until)
# Compile the callback into a node object and add it to
# the node list.
try:
compiled_result = compile_func(self, token)
except Exception as e:
raise self.error(token, e) ^^^^^^^^^^^^^^^^^^^^^^^^^^…
self.extend_nodelist(nodelist, compiled_result, token)
# Compile success. Remove the token from the command stack.
self.command_stack.pop()
if parse_until:
self.unclosed_block_tag(parse_until)
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 parsetry:
compile_func = self.tags[command]
except KeyError:
self.invalid_block_tag(token, command, parse_until)
# Compile the callback into a node object and add it to
# the node list.
try:
compiled_result = compile_func(self, token) ^^^^^^^^^^^^^^^^^^^^^^^^^…
except Exception as e:
raise self.error(token, e)
self.extend_nodelist(nodelist, compiled_result, token)
# Compile success. Remove the token from the command stack.
self.command_stack.pop()
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_ifconditions_nodelists = [(condition, nodelist)]
token = parser.next_token()
# {% elif ... %} (repeatable)while token.contents.startswith("elif"):bits = token.split_contents()[1:]
condition = TemplateIfParser(parser, bits).parse()
nodelist = parser.parse(("elif", "else", "endif")) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^…
conditions_nodelists.append((condition, nodelist))
token = parser.next_token()
# {% else %} (optional)if token.contents == "else":
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 parseexcept KeyError:
self.invalid_block_tag(token, command, parse_until)
# Compile the callback into a node object and add it to
# the node list.
try:
compiled_result = compile_func(self, token)
except Exception as e:
raise self.error(token, e) ^^^^^^^^^^^^^^^^^^^^^^^^^^…
self.extend_nodelist(nodelist, compiled_result, token)
# Compile success. Remove the token from the command stack.
self.command_stack.pop()
if parse_until:
self.unclosed_block_tag(parse_until)
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 parsetry:
compile_func = self.tags[command]
except KeyError:
self.invalid_block_tag(token, command, parse_until)
# Compile the callback into a node object and add it to
# the node list.
try:
compiled_result = compile_func(self, token) ^^^^^^^^^^^^^^^^^^^^^^^^^…
except Exception as e:
raise self.error(token, e)
self.extend_nodelist(nodelist, compiled_result, token)
# Compile success. Remove the token from the command stack.
self.command_stack.pop()
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_forloopvars = re.split(r" *, *", " ".join(bits[1:in_index]))
for var in loopvars:
if not var or not invalid_chars.isdisjoint(var):
raise TemplateSyntaxError(
"'for' tag received an invalid argument: %s" % token.contents
)
sequence = parser.compile_filter(bits[in_index + 1]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^…
nodelist_loop = parser.parse(
(
"empty",
"endfor",
)
)
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_filterself.tags.update(lib.tags)
self.filters.update(lib.filters)
def compile_filter(self, token):
"""
Convenient wrapper for FilterExpression
"""
return FilterExpression(token, self) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^…
def find_filter(self, filter_name):
if filter_name in self.filters:
return self.filters[filter_name]
else:
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__else:
filter_name = match["filter_name"]
args = []
if constant_arg := match["constant_arg"]:
args.append((False, Variable(constant_arg).resolve({})))elif var_arg := match["var_arg"]:
args.append((True, Variable(var_arg)))
filter_func = parser.find_filter(filter_name) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^…
self.args_check(filter_name, filter_func, args)
filters.append((filter_func, args))
upto = match.end()
if upto != len(token):
raise TemplateSyntaxError(
"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"""
return FilterExpression(token, self)
def find_filter(self, filter_name):
if filter_name in self.filters:
return self.filters[filter_name]
else:
raise TemplateSyntaxError("Invalid filter: '%s'" % filter_name) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^…
# This only matches constant *strings* (things in quotes or marked for
# translation). Numbers are treated as variables for implementation reasons
# (so that they retain their type when passed to filters).
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
COOKIES
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' |