124 KiB
124 KiB
Instructions
- Following Playwright test failed.
- Explain why, be concise, respect Playwright best practices.
- Provide a snippet of code with the fix, if possible.
Test info
- Name: workflows/observation-lifecycle.spec.ts >> Observation Lifecycle >> submit observation via public form gets tracking code
- Location: e2e/tests/workflows/observation-lifecycle.spec.ts:9:7
Error details
Test timeout of 60000ms exceeded.
Error: page.waitForSelector: Test timeout of 60000ms exceeded.
Call log:
- waiting for locator('form') to be visible
136 × locator resolved to hidden <form method="post" id="pasteform" name="pasteform" action="https://dpaste.com/">…</form>
Page snapshot
- generic [active] [ref=e1]:
- banner [ref=e2]:
- heading "FieldError at /observations/new/" [level=1] [ref=e3]
- generic [ref=e4]: "Cannot resolve keyword 'is_active' into field. Choices are: action_sla_configs, address, ai_recommend, appreciation_badges, appreciation_categories, appreciation_stats, appreciations, bulk_survey_jobs, call_center_interactions, call_records, capacity, ceo, ceo_id, cfo, cfo_id, city, code, comment_action_plans, comment_imports, communication_requests, complaint_categories, complaint_requests, complaint_sla_configs, complaint_templates, complaint_thresholds, complaints, coo, coo_id, created_at, departments, display_name, display_name_ar, doctor_rating_jobs, email, escalation_rules, executive_metrics, explanation_sla_configs, feedbacks, generated_reports, his_visits, id, inquiries, inquiry_sla_configs, journey_instances, journey_templates, kpi_reports, kpi_values, license_number, medical_director, medical_director_id, metadata, name, name_ar, notification_settings, notification_settings_logs, observation_sla_configs, observations, on_call_schedules, organization, organization_id, patient_comments, patients, phone, physician_ratings, predictive_insights, presentations, px_actions, qi_projects, rcas, references_referencedocument_related, references_referencefolder_related, report_templates, routing_rules, saved_reports, source_usage_records, source_users, staff, standard_compliance_records, status, survey_template_mappings, survey_templates, surveys_surveyinstance_related, updated_at, users"
- table [ref=e5]:
- rowgroup [ref=e6]:
- 'row "Request Method: GET" [ref=e7]':
- rowheader "Request Method:" [ref=e8]
- cell "GET" [ref=e9]
- 'row "Request URL: http://localhost:8000/observations/new/" [ref=e10]':
- rowheader "Request URL:" [ref=e11]
- cell "http://localhost:8000/observations/new/" [ref=e12]
- 'row "Django Version: 6.0.1" [ref=e13]':
- rowheader "Django Version:" [ref=e14]
- cell "6.0.1" [ref=e15]
- 'row "Exception Type: FieldError" [ref=e16]':
- rowheader "Exception Type:" [ref=e17]
- cell "FieldError" [ref=e18]
- row [ref=e19]:
- rowheader "Exception Value:" [ref=e20]
- cell [ref=e21]:
- generic [ref=e22]: "Cannot resolve keyword 'is_active' into field. Choices are: action_sla_configs, address, ai_recommend, appreciation_badges, appreciation_categories, appreciation_stats, appreciations, bulk_survey_jobs, call_center_interactions, call_records, capacity, ceo, ceo_id, cfo, cfo_id, city, code, comment_action_plans, comment_imports, communication_requests, complaint_categories, complaint_requests, complaint_sla_configs, complaint_templates, complaint_thresholds, complaints, coo, coo_id, created_at, departments, display_name, display_name_ar, doctor_rating_jobs, email, escalation_rules, executive_metrics, explanation_sla_configs, feedbacks, generated_reports, his_visits, id, inquiries, inquiry_sla_configs, journey_instances, journey_templates, kpi_reports, kpi_values, license_number, medical_director, medical_director_id, metadata, name, name_ar, notification_settings, notification_settings_logs, observation_sla_configs, observations, on_call_schedules, organization, organization_id, patient_comments, patients, phone, physician_ratings, predictive_insights, presentations, px_actions, qi_projects, rcas, references_referencedocument_related, references_referencefolder_related, report_templates, routing_rules, saved_reports, source_usage_records, source_users, staff, standard_compliance_records, status, survey_template_mappings, survey_templates, surveys_surveyinstance_related, updated_at, users"
- 'row "Exception Location: /home/ismail/projects/HH/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py, line 1832, in names_to_path" [ref=e23]':
- rowheader "Exception Location:" [ref=e24]
- cell "/home/ismail/projects/HH/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py, line 1832, in names_to_path" [ref=e25]
- 'row "Raised during: apps.observations.views.observation_create_public" [ref=e26]':
- rowheader "Raised during:" [ref=e27]
- cell "apps.observations.views.observation_create_public" [ref=e28]
- 'row "Python Executable: /home/ismail/projects/HH/.venv/bin/python3" [ref=e29]':
- rowheader "Python Executable:" [ref=e30]
- cell "/home/ismail/projects/HH/.venv/bin/python3" [ref=e31]
- 'row "Python Version: 3.12.3" [ref=e32]':
- rowheader "Python Version:" [ref=e33]
- cell "3.12.3" [ref=e34]
- 'row "Python Path: [''/home/ismail/projects/HH'', ''/home/ismail/projects/HH'', ''/usr/lib/python312.zip'', ''/usr/lib/python3.12'', ''/usr/lib/python3.12/lib-dynload'', ''/home/ismail/projects/HH/.venv/lib/python3.12/site-packages'', ''__editable__.px360-0.1.0.finder.__path_hook__'', ''/home/ismail/projects/HH'']" [ref=e35]':
- rowheader "Python Path:" [ref=e36]
- cell "['/home/ismail/projects/HH', '/home/ismail/projects/HH', '/usr/lib/python312.zip', '/usr/lib/python3.12', '/usr/lib/python3.12/lib-dynload', '/home/ismail/projects/HH/.venv/lib/python3.12/site-packages', '__editable__.px360-0.1.0.finder.__path_hook__', '/home/ismail/projects/HH']" [ref=e37]:
- code [ref=e39]: "['/home/ismail/projects/HH', '/home/ismail/projects/HH', '/usr/lib/python312.zip', '/usr/lib/python3.12', '/usr/lib/python3.12/lib-dynload', '/home/ismail/projects/HH/.venv/lib/python3.12/site-packages', '__editable__.px360-0.1.0.finder.__path_hook__', '/home/ismail/projects/HH']"
- 'row "Server time: Thu, 07 May 2026 21:32:59 +0300" [ref=e40]':
- rowheader "Server time:" [ref=e41]
- cell "Thu, 07 May 2026 21:32:59 +0300" [ref=e42]
- main [ref=e43]:
- generic [ref=e44]:
- heading "Traceback Switch to copy-and-paste view" [level=2] [ref=e45]:
- text: Traceback
- button "Switch to copy-and-paste view" [ref=e47] [cursor=pointer]
- list [ref=e49]:
- listitem [ref=e50]:
- code [ref=e51]: /home/ismail/projects/HH/.venv/lib/python3.12/site-packages/django/core/handlers/exception.py
- text: ", line 55, in inner"
- list [ref=e53]:
- listitem [ref=e54] [cursor=pointer]:
- text: response = get_response(request) ^^^^^^^^^^^^^^^^^^^^^
- generic [ref=e55]: …
- group [ref=e56]:
- generic "Local vars" [ref=e57] [cursor=pointer]
- listitem [ref=e58]:
- code [ref=e59]: /home/ismail/projects/HH/.venv/lib/python3.12/site-packages/django/core/handlers/base.py
- text: ", line 198, in _get_response"
- list [ref=e61]:
- listitem [ref=e62] [cursor=pointer]:
- text: response = wrapped_callback(request, *callback_args, **callback_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- generic [ref=e63]: …
- group [ref=e64]:
- generic "Local vars" [ref=e65] [cursor=pointer]
- listitem [ref=e66]:
- code [ref=e67]: /home/ismail/projects/HH/apps/observations/views.py
- text: ", line 237, in observation_create_public"
- list [ref=e69]:
- listitem [ref=e70] [cursor=pointer]:
- text: "\"hospitals\": Hospital.objects.filter(is_active=True).order_by(\"name_en\"), ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"
- generic [ref=e71]: …
- group [ref=e72]:
- generic "Local vars" [ref=e73] [cursor=pointer]
- listitem [ref=e74]:
- code [ref=e75]: /home/ismail/projects/HH/.venv/lib/python3.12/site-packages/django/db/models/manager.py
- text: ", line 87, in manager_method"
- list [ref=e77]:
- listitem [ref=e78] [cursor=pointer]:
- text: return getattr(self.get_queryset(), name)(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- generic [ref=e79]: …
- group [ref=e80]:
- generic "Local vars" [ref=e81] [cursor=pointer]
- listitem [ref=e82]:
- code [ref=e83]: /home/ismail/projects/HH/.venv/lib/python3.12/site-packages/django/db/models/query.py
- text: ", line 1542, in filter"
- list [ref=e85]:
- listitem [ref=e86] [cursor=pointer]:
- text: return self._filter_or_exclude(False, args, kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- generic [ref=e87]: …
- group [ref=e88]:
- generic "Local vars" [ref=e89] [cursor=pointer]
- listitem [ref=e90]:
- code [ref=e91]: /home/ismail/projects/HH/.venv/lib/python3.12/site-packages/django/db/models/query.py
- text: ", line 1560, in _filter_or_exclude"
- list [ref=e93]:
- listitem [ref=e94] [cursor=pointer]:
- text: clone._filter_or_exclude_inplace(negate, args, kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- generic [ref=e95]: …
- group [ref=e96]:
- generic "Local vars" [ref=e97] [cursor=pointer]
- listitem [ref=e98]:
- code [ref=e99]: /home/ismail/projects/HH/.venv/lib/python3.12/site-packages/django/db/models/query.py
- text: ", line 1570, in _filter_or_exclude_inplace"
- list [ref=e101]:
- listitem [ref=e102] [cursor=pointer]:
- text: self._query.add_q(Q(*args, **kwargs)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- generic [ref=e103]: …
- group [ref=e104]:
- generic "Local vars" [ref=e105] [cursor=pointer]
- listitem [ref=e106]:
- code [ref=e107]: /home/ismail/projects/HH/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py
- text: ", line 1671, in add_q"
- list [ref=e109]:
- listitem [ref=e110] [cursor=pointer]:
- text: clause, _ = self._add_q(q_object, can_reuse) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- generic [ref=e111]: …
- group [ref=e112]:
- generic "Local vars" [ref=e113] [cursor=pointer]
- listitem [ref=e114]:
- code [ref=e115]: /home/ismail/projects/HH/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py
- text: ", line 1703, in _add_q"
- list [ref=e117]:
- listitem [ref=e118] [cursor=pointer]:
- text: child_clause, needed_inner = self.build_filter(
- generic [ref=e119]: …
- group [ref=e120]:
- generic "Local vars" [ref=e121] [cursor=pointer]
- listitem [ref=e122]:
- code [ref=e123]: /home/ismail/projects/HH/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py
- text: ", line 1551, in build_filter"
- list [ref=e125]:
- listitem [ref=e126] [cursor=pointer]:
- text: lookups, parts, reffed_expression = self.solve_lookup_type(arg, summarize) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- generic [ref=e127]: …
- group [ref=e128]:
- generic "Local vars" [ref=e129] [cursor=pointer]
- listitem [ref=e130]:
- code [ref=e131]: /home/ismail/projects/HH/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py
- text: ", line 1358, in solve_lookup_type"
- list [ref=e133]:
- listitem [ref=e134] [cursor=pointer]:
- text: _, field, _, lookup_parts = self.names_to_path(lookup_splitted, self.get_meta()) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- generic [ref=e135]: …
- group [ref=e136]:
- generic "Local vars" [ref=e137] [cursor=pointer]
- listitem [ref=e138]:
- code [ref=e139]: /home/ismail/projects/HH/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py
- text: ", line 1832, in names_to_path"
- list [ref=e141]:
- listitem [ref=e142] [cursor=pointer]:
- text: raise FieldError( ^
- generic [ref=e143]: …
- group [ref=e144]:
- generic "Local vars" [ref=e145] [cursor=pointer]
- generic [ref=e146]:
- heading "Request information" [level=2] [ref=e147]
- heading "USER" [level=3] [ref=e148]
- paragraph [ref=e149]: AnonymousUser
- heading "GET" [level=3] [ref=e150]
- paragraph [ref=e151]: No GET data
- heading "POST" [level=3] [ref=e152]
- paragraph [ref=e153]: No POST data
- heading "FILES" [level=3] [ref=e154]
- paragraph [ref=e155]: No FILES data
- heading "COOKIES" [level=3] [ref=e156]
- paragraph [ref=e157]: No cookie data
- heading "META" [level=3] [ref=e158]
- table [ref=e159]:
- rowgroup [ref=e160]:
- row "Variable Value" [ref=e161]:
- columnheader "Variable" [ref=e162]
- columnheader "Value" [ref=e163]
- rowgroup [ref=e164]:
- row "ADMIN_URL 'admin/'" [ref=e165]:
- cell "ADMIN_URL" [ref=e166]
- cell "'admin/'" [ref=e167]:
- generic [ref=e168]: "'admin/'"
- row "AI_MAX_TOKENS '********************'" [ref=e169]:
- cell "AI_MAX_TOKENS" [ref=e170]
- cell "'********************'" [ref=e171]:
- generic [ref=e172]: "'********************'"
- row "AI_MODEL 'openrouter/google/gemini-2.5-flash-lite'" [ref=e173]:
- cell "AI_MODEL" [ref=e174]
- cell "'openrouter/google/gemini-2.5-flash-lite'" [ref=e175]:
- generic [ref=e176]: "'openrouter/google/gemini-2.5-flash-lite'"
- row "AI_TEMPERATURE '0.3'" [ref=e177]:
- cell "AI_TEMPERATURE" [ref=e178]
- cell "'0.3'" [ref=e179]:
- generic [ref=e180]: "'0.3'"
- row "ALLOWED_HOSTS 'localhost,127.0.0.1'" [ref=e181]:
- cell "ALLOWED_HOSTS" [ref=e182]
- cell "'localhost,127.0.0.1'" [ref=e183]:
- generic [ref=e184]: "'localhost,127.0.0.1'"
- row "BUNDLED_DEBUGPY_PATH '/home/ismail/.vscode/extensions/ms-python.debugpy-2026.6.0-linux-x64/bundled/libs/debugpy'" [ref=e185]:
- cell "BUNDLED_DEBUGPY_PATH" [ref=e186]
- cell "'/home/ismail/.vscode/extensions/ms-python.debugpy-2026.6.0-linux-x64/bundled/libs/debugpy'" [ref=e187]:
- generic [ref=e188]: "'/home/ismail/.vscode/extensions/ms-python.debugpy-2026.6.0-linux-x64/bundled/libs/debugpy'"
- row "CELERY_BROKER_URL 'redis://localhost:6379/0'" [ref=e189]:
- cell "CELERY_BROKER_URL" [ref=e190]
- cell "'redis://localhost:6379/0'" [ref=e191]:
- generic [ref=e192]: "'redis://localhost:6379/0'"
- row "CELERY_RESULT_BACKEND 'redis://localhost:6379/0'" [ref=e193]:
- cell "CELERY_RESULT_BACKEND" [ref=e194]
- cell "'redis://localhost:6379/0'" [ref=e195]:
- generic [ref=e196]: "'redis://localhost:6379/0'"
- row "CELERY_TASK_ALWAYS_EAGER 'False'" [ref=e197]:
- cell "CELERY_TASK_ALWAYS_EAGER" [ref=e198]
- cell "'False'" [ref=e199]:
- generic [ref=e200]: "'False'"
- row "CHI_API_KEY '********************'" [ref=e201]:
- cell "CHI_API_KEY" [ref=e202]
- cell "'********************'" [ref=e203]:
- generic [ref=e204]: "'********************'"
- row "CHI_API_URL '********************'" [ref=e205]:
- cell "CHI_API_URL" [ref=e206]
- cell "'********************'" [ref=e207]:
- generic [ref=e208]: "'********************'"
- row "CHROME_DESKTOP 'code.desktop'" [ref=e209]:
- cell "CHROME_DESKTOP" [ref=e210]
- cell "'code.desktop'" [ref=e211]:
- generic [ref=e212]: "'code.desktop'"
- row "CLUTTER_BACKEND 'x11'" [ref=e213]:
- cell "CLUTTER_BACKEND" [ref=e214]
- cell "'x11'" [ref=e215]:
- generic [ref=e216]: "'x11'"
- row "COLORTERM 'truecolor'" [ref=e217]:
- cell "COLORTERM" [ref=e218]
- cell "'truecolor'" [ref=e219]:
- generic [ref=e220]: "'truecolor'"
- row "COMPIZ_CONFIG_PROFILE 'mint'" [ref=e221]:
- cell "COMPIZ_CONFIG_PROFILE" [ref=e222]
- cell "'mint'" [ref=e223]:
- generic [ref=e224]: "'mint'"
- row "CONTENT_LENGTH ''" [ref=e225]:
- cell "CONTENT_LENGTH" [ref=e226]
- cell "''" [ref=e227]:
- generic [ref=e228]: "''"
- row "CONTENT_TYPE 'text/plain'" [ref=e229]:
- cell "CONTENT_TYPE" [ref=e230]
- cell "'text/plain'" [ref=e231]:
- generic [ref=e232]: "'text/plain'"
- row "DATABASE_URL 'postgres://px360:px360@localhost:5433/px360'" [ref=e233]:
- cell "DATABASE_URL" [ref=e234]
- cell "'postgres://px360:px360@localhost:5433/px360'" [ref=e235]:
- generic [ref=e236]: "'postgres://px360:px360@localhost:5433/px360'"
- row "DBUS_SESSION_BUS_ADDRESS 'unix:path=/run/user/1000/bus,guid=38a3de50bcef636dcf5cf4aa69fafc12'" [ref=e237]:
- cell "DBUS_SESSION_BUS_ADDRESS" [ref=e238]
- cell "'unix:path=/run/user/1000/bus,guid=38a3de50bcef636dcf5cf4aa69fafc12'" [ref=e239]:
- generic [ref=e240]: "'unix:path=/run/user/1000/bus,guid=38a3de50bcef636dcf5cf4aa69fafc12'"
- row "DBUS_STARTER_ADDRESS 'unix:path=/run/user/1000/bus,guid=38a3de50bcef636dcf5cf4aa69fafc12'" [ref=e241]:
- cell "DBUS_STARTER_ADDRESS" [ref=e242]
- cell "'unix:path=/run/user/1000/bus,guid=38a3de50bcef636dcf5cf4aa69fafc12'" [ref=e243]:
- generic [ref=e244]: "'unix:path=/run/user/1000/bus,guid=38a3de50bcef636dcf5cf4aa69fafc12'"
- row "DBUS_STARTER_BUS_TYPE 'session'" [ref=e245]:
- cell "DBUS_STARTER_BUS_TYPE" [ref=e246]
- cell "'session'" [ref=e247]:
- generic [ref=e248]: "'session'"
- row "DEBUG 'True'" [ref=e249]:
- cell "DEBUG" [ref=e250]
- cell "'True'" [ref=e251]:
- generic [ref=e252]: "'True'"
- row "DEFAULT_FROM_EMAIL 'noreply@px360.sa'" [ref=e253]:
- cell "DEFAULT_FROM_EMAIL" [ref=e254]
- cell "'noreply@px360.sa'" [ref=e255]:
- generic [ref=e256]: "'noreply@px360.sa'"
- row "DESKTOP_SESSION 'mate'" [ref=e257]:
- cell "DESKTOP_SESSION" [ref=e258]
- cell "'mate'" [ref=e259]:
- generic [ref=e260]: "'mate'"
- row "DEV_SMS_RECIPIENT '+966566703794'" [ref=e261]:
- cell "DEV_SMS_RECIPIENT" [ref=e262]
- cell "'+966566703794'" [ref=e263]:
- generic [ref=e264]: "'+966566703794'"
- row "DISPLAY ':0'" [ref=e265]:
- cell "DISPLAY" [ref=e266]
- cell "':0'" [ref=e267]:
- generic [ref=e268]: "':0'"
- row "DJANGO_SETTINGS_MODULE 'config.settings.dev'" [ref=e269]:
- cell "DJANGO_SETTINGS_MODULE" [ref=e270]
- cell "'config.settings.dev'" [ref=e271]:
- generic [ref=e272]: "'config.settings.dev'"
- row "EMAIL_API_ENABLED '********************'" [ref=e273]:
- cell "EMAIL_API_ENABLED" [ref=e274]
- cell "'********************'" [ref=e275]:
- generic [ref=e276]: "'********************'"
- row "EMAIL_API_KEY '********************'" [ref=e277]:
- cell "EMAIL_API_KEY" [ref=e278]
- cell "'********************'" [ref=e279]:
- generic [ref=e280]: "'********************'"
- row "EMAIL_API_URL '********************'" [ref=e281]:
- cell "EMAIL_API_URL" [ref=e282]
- cell "'********************'" [ref=e283]:
- generic [ref=e284]: "'********************'"
- row "EMAIL_BACKEND 'django.core.mail.backends.smtp.EmailBackend'" [ref=e285]:
- cell "EMAIL_BACKEND" [ref=e286]
- cell "'django.core.mail.backends.smtp.EmailBackend'" [ref=e287]:
- generic [ref=e288]: "'django.core.mail.backends.smtp.EmailBackend'"
- row "EMAIL_ENABLED 'True'" [ref=e289]:
- cell "EMAIL_ENABLED" [ref=e290]
- cell "'True'" [ref=e291]:
- generic [ref=e292]: "'True'"
- row "EMAIL_HOST 'localhost'" [ref=e293]:
- cell "EMAIL_HOST" [ref=e294]
- cell "'localhost'" [ref=e295]:
- generic [ref=e296]: "'localhost'"
- row "EMAIL_HOST_PASSWORD '********************'" [ref=e297]:
- cell "EMAIL_HOST_PASSWORD" [ref=e298]
- cell "'********************'" [ref=e299]:
- generic [ref=e300]: "'********************'"
- row "EMAIL_HOST_USER ''" [ref=e301]:
- cell "EMAIL_HOST_USER" [ref=e302]
- cell "''" [ref=e303]:
- generic [ref=e304]: "''"
- row "EMAIL_PORT '2525'" [ref=e305]:
- cell "EMAIL_PORT" [ref=e306]
- cell "'2525'" [ref=e307]:
- generic [ref=e308]: "'2525'"
- row "EMAIL_PROVIDER 'console'" [ref=e309]:
- cell "EMAIL_PROVIDER" [ref=e310]
- cell "'console'" [ref=e311]:
- generic [ref=e312]: "'console'"
- row "EMAIL_USE_TLS 'False'" [ref=e313]:
- cell "EMAIL_USE_TLS" [ref=e314]
- cell "'False'" [ref=e315]:
- generic [ref=e316]: "'False'"
- row "FC_FONTATIONS '1'" [ref=e317]:
- cell "FC_FONTATIONS" [ref=e318]
- cell "'1'" [ref=e319]:
- generic [ref=e320]: "'1'"
- row "GATEWAY_INTERFACE 'CGI/1.1'" [ref=e321]:
- cell "GATEWAY_INTERFACE" [ref=e322]
- cell "'CGI/1.1'" [ref=e323]:
- generic [ref=e324]: "'CGI/1.1'"
- row "GDK_BACKEND 'x11'" [ref=e325]:
- cell "GDK_BACKEND" [ref=e326]
- cell "'x11'" [ref=e327]:
- generic [ref=e328]: "'x11'"
- row "GDMSESSION 'mate'" [ref=e329]:
- cell "GDMSESSION" [ref=e330]
- cell "'mate'" [ref=e331]:
- generic [ref=e332]: "'mate'"
- row "GDM_LANG 'en_US'" [ref=e333]:
- cell "GDM_LANG" [ref=e334]
- cell "'en_US'" [ref=e335]:
- generic [ref=e336]: "'en_US'"
- row "GIO_LAUNCHED_DESKTOP_FILE '/usr/share/applications/code.desktop'" [ref=e337]:
- cell "GIO_LAUNCHED_DESKTOP_FILE" [ref=e338]
- cell "'/usr/share/applications/code.desktop'" [ref=e339]:
- generic [ref=e340]: "'/usr/share/applications/code.desktop'"
- row "GIO_LAUNCHED_DESKTOP_FILE_PID '2736'" [ref=e341]:
- cell "GIO_LAUNCHED_DESKTOP_FILE_PID" [ref=e342]
- cell "'2736'" [ref=e343]:
- generic [ref=e344]: "'2736'"
- row "GIT_ASKPASS '********************'" [ref=e345]:
- cell "GIT_ASKPASS" [ref=e346]
- cell "'********************'" [ref=e347]:
- generic [ref=e348]: "'********************'"
- row "GNOME_KEYRING_CONTROL '********************'" [ref=e349]:
- cell "GNOME_KEYRING_CONTROL" [ref=e350]
- cell "'********************'" [ref=e351]:
- generic [ref=e352]: "'********************'"
- row "GPG_AGENT_INFO '/run/user/1000/gnupg/S.gpg-agent:0:1'" [ref=e353]:
- cell "GPG_AGENT_INFO" [ref=e354]
- cell "'/run/user/1000/gnupg/S.gpg-agent:0:1'" [ref=e355]:
- generic [ref=e356]: "'/run/user/1000/gnupg/S.gpg-agent:0:1'"
- row "GSM_SKIP_SSH_AGENT_WORKAROUND 'true'" [ref=e357]:
- cell "GSM_SKIP_SSH_AGENT_WORKAROUND" [ref=e358]
- cell "'true'" [ref=e359]:
- generic [ref=e360]: "'true'"
- row "GTK3_MODULES 'xapp-gtk3-module'" [ref=e361]:
- cell "GTK3_MODULES" [ref=e362]
- cell "'xapp-gtk3-module'" [ref=e363]:
- generic [ref=e364]: "'xapp-gtk3-module'"
- row "GTK_MODULES 'gail:atk-bridge'" [ref=e365]:
- cell "GTK_MODULES" [ref=e366]
- cell "'gail:atk-bridge'" [ref=e367]:
- generic [ref=e368]: "'gail:atk-bridge'"
- row "GTK_OVERLAY_SCROLLING '0'" [ref=e369]:
- cell "GTK_OVERLAY_SCROLLING" [ref=e370]
- cell "'0'" [ref=e371]:
- generic [ref=e372]: "'0'"
- row "HIS_API_URL '********************'" [ref=e373]:
- cell "HIS_API_URL" [ref=e374]
- cell "'********************'" [ref=e375]:
- generic [ref=e376]: "'********************'"
- row "HIS_API_USERNAME '********************'" [ref=e377]:
- cell "HIS_API_USERNAME" [ref=e378]
- cell "'********************'" [ref=e379]:
- generic [ref=e380]: "'********************'"
- row "HIS_RATINGS_API_URL '********************'" [ref=e381]:
- cell "HIS_RATINGS_API_URL" [ref=e382]
- cell "'********************'" [ref=e383]:
- generic [ref=e384]: "'********************'"
- row "HOME '/home/ismail'" [ref=e385]:
- cell "HOME" [ref=e386]
- cell "'/home/ismail'" [ref=e387]:
- generic [ref=e388]: "'/home/ismail'"
- row "HTTP_ACCEPT 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7'" [ref=e389]:
- cell "HTTP_ACCEPT" [ref=e390]
- cell "'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7'" [ref=e391]:
- generic [ref=e392]: "'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7'"
- row "HTTP_ACCEPT_ENCODING 'gzip, deflate, br, zstd'" [ref=e393]:
- cell "HTTP_ACCEPT_ENCODING" [ref=e394]
- cell "'gzip, deflate, br, zstd'" [ref=e395]:
- generic [ref=e396]: "'gzip, deflate, br, zstd'"
- row "HTTP_ACCEPT_LANGUAGE 'en-US'" [ref=e397]:
- cell "HTTP_ACCEPT_LANGUAGE" [ref=e398]
- cell "'en-US'" [ref=e399]:
- generic [ref=e400]: "'en-US'"
- row "HTTP_CONNECTION 'keep-alive'" [ref=e401]:
- cell "HTTP_CONNECTION" [ref=e402]
- cell "'keep-alive'" [ref=e403]:
- generic [ref=e404]: "'keep-alive'"
- row "HTTP_HOST 'localhost:8000'" [ref=e405]:
- cell "HTTP_HOST" [ref=e406]
- cell "'localhost:8000'" [ref=e407]:
- generic [ref=e408]: "'localhost:8000'"
- row "HTTP_SEC_CH_UA '\"HeadlessChrome\";v=\"147\", \"Not.A/Brand\";v=\"8\", \"Chromium\";v=\"147\"'" [ref=e409]:
- cell "HTTP_SEC_CH_UA" [ref=e410]
- cell "'\"HeadlessChrome\";v=\"147\", \"Not.A/Brand\";v=\"8\", \"Chromium\";v=\"147\"'" [ref=e411]:
- generic [ref=e412]: "'\"HeadlessChrome\";v=\"147\", \"Not.A/Brand\";v=\"8\", \"Chromium\";v=\"147\"'"
- row "HTTP_SEC_CH_UA_MOBILE '?0'" [ref=e413]:
- cell "HTTP_SEC_CH_UA_MOBILE" [ref=e414]
- cell "'?0'" [ref=e415]:
- generic [ref=e416]: "'?0'"
- row "HTTP_SEC_CH_UA_PLATFORM '\"Windows\"'" [ref=e417]:
- cell "HTTP_SEC_CH_UA_PLATFORM" [ref=e418]
- cell "'\"Windows\"'" [ref=e419]:
- generic [ref=e420]: "'\"Windows\"'"
- row "HTTP_SEC_FETCH_DEST 'document'" [ref=e421]:
- cell "HTTP_SEC_FETCH_DEST" [ref=e422]
- cell "'document'" [ref=e423]:
- generic [ref=e424]: "'document'"
- row "HTTP_SEC_FETCH_MODE 'navigate'" [ref=e425]:
- cell "HTTP_SEC_FETCH_MODE" [ref=e426]
- cell "'navigate'" [ref=e427]:
- generic [ref=e428]: "'navigate'"
- row "HTTP_SEC_FETCH_SITE 'none'" [ref=e429]:
- cell "HTTP_SEC_FETCH_SITE" [ref=e430]
- cell "'none'" [ref=e431]:
- generic [ref=e432]: "'none'"
- row "HTTP_SEC_FETCH_USER '?1'" [ref=e433]:
- cell "HTTP_SEC_FETCH_USER" [ref=e434]
- cell "'?1'" [ref=e435]:
- generic [ref=e436]: "'?1'"
- row "HTTP_UPGRADE_INSECURE_REQUESTS '1'" [ref=e437]:
- cell "HTTP_UPGRADE_INSECURE_REQUESTS" [ref=e438]
- cell "'1'" [ref=e439]:
- generic [ref=e440]: "'1'"
- row "HTTP_USER_AGENT ('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like ' 'Gecko) Chrome/147.0.7727.15 Safari/537.36')" [ref=e441]:
- cell "HTTP_USER_AGENT" [ref=e442]
- cell "('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like ' 'Gecko) Chrome/147.0.7727.15 Safari/537.36')" [ref=e443]:
- generic [ref=e444]: ('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like ' 'Gecko) Chrome/147.0.7727.15 Safari/537.36')
- row "IM_CONFIG_PHASE '1'" [ref=e445]:
- cell "IM_CONFIG_PHASE" [ref=e446]
- cell "'1'" [ref=e447]:
- generic [ref=e448]: "'1'"
- row "LANG 'en_US.UTF-8'" [ref=e449]:
- cell "LANG" [ref=e450]
- cell "'en_US.UTF-8'" [ref=e451]:
- generic [ref=e452]: "'en_US.UTF-8'"
- row "LANGUAGE 'en_US'" [ref=e453]:
- cell "LANGUAGE" [ref=e454]
- cell "'en_US'" [ref=e455]:
- generic [ref=e456]: "'en_US'"
- row "LC_ADDRESS 'ar_SA.UTF-8'" [ref=e457]:
- cell "LC_ADDRESS" [ref=e458]
- cell "'ar_SA.UTF-8'" [ref=e459]:
- generic [ref=e460]: "'ar_SA.UTF-8'"
- row "LC_IDENTIFICATION 'ar_SA.UTF-8'" [ref=e461]:
- cell "LC_IDENTIFICATION" [ref=e462]
- cell "'ar_SA.UTF-8'" [ref=e463]:
- generic [ref=e464]: "'ar_SA.UTF-8'"
- row "LC_MEASUREMENT 'ar_SA.UTF-8'" [ref=e465]:
- cell "LC_MEASUREMENT" [ref=e466]
- cell "'ar_SA.UTF-8'" [ref=e467]:
- generic [ref=e468]: "'ar_SA.UTF-8'"
- row "LC_MONETARY 'ar_SA.UTF-8'" [ref=e469]:
- cell "LC_MONETARY" [ref=e470]
- cell "'ar_SA.UTF-8'" [ref=e471]:
- generic [ref=e472]: "'ar_SA.UTF-8'"
- row "LC_NAME 'ar_SA.UTF-8'" [ref=e473]:
- cell "LC_NAME" [ref=e474]
- cell "'ar_SA.UTF-8'" [ref=e475]:
- generic [ref=e476]: "'ar_SA.UTF-8'"
- row "LC_NUMERIC 'ar_SA.UTF-8'" [ref=e477]:
- cell "LC_NUMERIC" [ref=e478]
- cell "'ar_SA.UTF-8'" [ref=e479]:
- generic [ref=e480]: "'ar_SA.UTF-8'"
- row "LC_PAPER 'ar_SA.UTF-8'" [ref=e481]:
- cell "LC_PAPER" [ref=e482]
- cell "'ar_SA.UTF-8'" [ref=e483]:
- generic [ref=e484]: "'ar_SA.UTF-8'"
- row "LC_TELEPHONE 'ar_SA.UTF-8'" [ref=e485]:
- cell "LC_TELEPHONE" [ref=e486]
- cell "'ar_SA.UTF-8'" [ref=e487]:
- generic [ref=e488]: "'ar_SA.UTF-8'"
- row "LC_TIME 'en_US.UTF-8'" [ref=e489]:
- cell "LC_TIME" [ref=e490]
- cell "'en_US.UTF-8'" [ref=e491]:
- generic [ref=e492]: "'en_US.UTF-8'"
- row "LESSCLOSE '/usr/bin/lesspipe %s %s'" [ref=e493]:
- cell "LESSCLOSE" [ref=e494]
- cell "'/usr/bin/lesspipe %s %s'" [ref=e495]:
- generic [ref=e496]: "'/usr/bin/lesspipe %s %s'"
- row "LESSOPEN '| /usr/bin/lesspipe %s'" [ref=e497]:
- cell "LESSOPEN" [ref=e498]
- cell "'| /usr/bin/lesspipe %s'" [ref=e499]:
- generic [ref=e500]: "'| /usr/bin/lesspipe %s'"
- row "LOGNAME 'ismail'" [ref=e501]:
- cell "LOGNAME" [ref=e502]
- cell "'ismail'" [ref=e503]:
- generic [ref=e504]: "'ismail'"
- row [ref=e505]:
- cell "LS_COLORS" [ref=e506]
- cell [ref=e507]:
- generic [ref=e508]: "'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:'"
- row "MANAGERPID '1170'" [ref=e509]:
- cell "MANAGERPID" [ref=e510]
- cell "'1170'" [ref=e511]:
- generic [ref=e512]: "'1170'"
- row "MATE_DESKTOP_SESSION_ID 'this-is-deprecated'" [ref=e513]:
- cell "MATE_DESKTOP_SESSION_ID" [ref=e514]
- cell "'this-is-deprecated'" [ref=e515]:
- generic [ref=e516]: "'this-is-deprecated'"
- row "MEMORY_PRESSURE_WATCH '/sys/fs/cgroup/user.slice/user-1000.slice/user@1000.service/session.slice/dbus.service/memory.pressure'" [ref=e517]:
- cell "MEMORY_PRESSURE_WATCH" [ref=e518]
- cell "'/sys/fs/cgroup/user.slice/user-1000.slice/user@1000.service/session.slice/dbus.service/memory.pressure'" [ref=e519]:
- generic [ref=e520]: "'/sys/fs/cgroup/user.slice/user-1000.slice/user@1000.service/session.slice/dbus.service/memory.pressure'"
- row "MEMORY_PRESSURE_WRITE 'c29tZSAyMDAwMDAgMjAwMDAwMAA='" [ref=e521]:
- cell "MEMORY_PRESSURE_WRITE" [ref=e522]
- cell "'c29tZSAyMDAwMDAgMjAwMDAwMAA='" [ref=e523]:
- generic [ref=e524]: "'c29tZSAyMDAwMDAgMjAwMDAwMAA='"
- row "MOH_API_KEY '********************'" [ref=e525]:
- cell "MOH_API_KEY" [ref=e526]
- cell "'********************'" [ref=e527]:
- generic [ref=e528]: "'********************'"
- row "MOH_API_URL '********************'" [ref=e529]:
- cell "MOH_API_URL" [ref=e530]
- cell "'********************'" [ref=e531]:
- generic [ref=e532]: "'********************'"
- row "MSHASTRA_PASSWORD '********************'" [ref=e533]:
- cell "MSHASTRA_PASSWORD" [ref=e534]
- cell "'********************'" [ref=e535]:
- generic [ref=e536]: "'********************'"
- row "MSHASTRA_SENDER_ID 'M556999091'" [ref=e537]:
- cell "MSHASTRA_SENDER_ID" [ref=e538]
- cell "'M556999091'" [ref=e539]:
- generic [ref=e540]: "'M556999091'"
- row "MSHASTRA_USERNAME 'M556999091'" [ref=e541]:
- cell "MSHASTRA_USERNAME" [ref=e542]
- cell "'M556999091'" [ref=e543]:
- generic [ref=e544]: "'M556999091'"
- row "NVM_BIN '/home/ismail/.nvm/versions/node/v24.12.0/bin'" [ref=e545]:
- cell "NVM_BIN" [ref=e546]
- cell "'/home/ismail/.nvm/versions/node/v24.12.0/bin'" [ref=e547]:
- generic [ref=e548]: "'/home/ismail/.nvm/versions/node/v24.12.0/bin'"
- row "NVM_CD_FLAGS ''" [ref=e549]:
- cell "NVM_CD_FLAGS" [ref=e550]
- cell "''" [ref=e551]:
- generic [ref=e552]: "''"
- row "NVM_DIR '/home/ismail/.nvm'" [ref=e553]:
- cell "NVM_DIR" [ref=e554]
- cell "'/home/ismail/.nvm'" [ref=e555]:
- generic [ref=e556]: "'/home/ismail/.nvm'"
- row "NVM_INC '/home/ismail/.nvm/versions/node/v24.12.0/include/node'" [ref=e557]:
- cell "NVM_INC" [ref=e558]
- cell "'/home/ismail/.nvm/versions/node/v24.12.0/include/node'" [ref=e559]:
- generic [ref=e560]: "'/home/ismail/.nvm/versions/node/v24.12.0/include/node'"
- row "OPENROUTER_API_KEY '********************'" [ref=e561]:
- cell "OPENROUTER_API_KEY" [ref=e562]
- cell "'********************'" [ref=e563]:
- generic [ref=e564]: "'********************'"
- row "PAPERSIZE 'a4'" [ref=e565]:
- cell "PAPERSIZE" [ref=e566]
- cell "'a4'" [ref=e567]:
- generic [ref=e568]: "'a4'"
- row "PATH '/home/ismail/projects/HH/.venv/bin:/home/ismail/projects/HH/.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-2026.6.0-linux-x64/bundled/scripts/noConfigScripts'" [ref=e569]:
- cell "PATH" [ref=e570]
- cell "'/home/ismail/projects/HH/.venv/bin:/home/ismail/projects/HH/.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-2026.6.0-linux-x64/bundled/scripts/noConfigScripts'" [ref=e571]:
- generic [ref=e572]: "'/home/ismail/projects/HH/.venv/bin:/home/ismail/projects/HH/.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-2026.6.0-linux-x64/bundled/scripts/noConfigScripts'"
- row "PATH_INFO '/observations/new/'" [ref=e573]:
- cell "PATH_INFO" [ref=e574]
- cell "'/observations/new/'" [ref=e575]:
- generic [ref=e576]: "'/observations/new/'"
- 'row "PS1 (''\\\\[\\x1b]633;A\\x07\\\\](px360) \\\\[\\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\\\\]'')" [ref=e577]':
- cell "PS1" [ref=e578]
- 'cell "(''\\\\[\\x1b]633;A\\x07\\\\](px360) \\\\[\\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\\\\]'')" [ref=e579]':
- generic [ref=e580]: "('\\\\[\\x1b]633;A\\x07\\\\](px360) \\\\[\\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\\\\]')"
- row "PWD '/home/ismail/projects/HH'" [ref=e581]:
- cell "PWD" [ref=e582]
- cell "'/home/ismail/projects/HH'" [ref=e583]:
- generic [ref=e584]: "'/home/ismail/projects/HH'"
- row "PYDEVD_DISABLE_FILE_VALIDATION '1'" [ref=e585]:
- cell "PYDEVD_DISABLE_FILE_VALIDATION" [ref=e586]
- cell "'1'" [ref=e587]:
- generic [ref=e588]: "'1'"
- row "PYTHONSTARTUP '/home/ismail/.config/Code/User/workspaceStorage/be2a9b869fd4f54d8616f8f370827124/ms-python.python/pythonrc.py'" [ref=e589]:
- cell "PYTHONSTARTUP" [ref=e590]
- cell "'/home/ismail/.config/Code/User/workspaceStorage/be2a9b869fd4f54d8616f8f370827124/ms-python.python/pythonrc.py'" [ref=e591]:
- generic [ref=e592]: "'/home/ismail/.config/Code/User/workspaceStorage/be2a9b869fd4f54d8616f8f370827124/ms-python.python/pythonrc.py'"
- row "PYTHON_BASIC_REPL '1'" [ref=e593]:
- cell "PYTHON_BASIC_REPL" [ref=e594]
- cell "'1'" [ref=e595]:
- generic [ref=e596]: "'1'"
- row "QT_ACCESSIBILITY '1'" [ref=e597]:
- cell "QT_ACCESSIBILITY" [ref=e598]
- cell "'1'" [ref=e599]:
- generic [ref=e600]: "'1'"
- row "QT_FONT_DPI '96'" [ref=e601]:
- cell "QT_FONT_DPI" [ref=e602]
- cell "'96'" [ref=e603]:
- generic [ref=e604]: "'96'"
- row "QT_SCALE_FACTOR '1'" [ref=e605]:
- cell "QT_SCALE_FACTOR" [ref=e606]
- cell "'1'" [ref=e607]:
- generic [ref=e608]: "'1'"
- row "QUERY_STRING ''" [ref=e609]:
- cell "QUERY_STRING" [ref=e610]
- cell "''" [ref=e611]:
- generic [ref=e612]: "''"
- row "REMOTE_ADDR '127.0.0.1'" [ref=e613]:
- cell "REMOTE_ADDR" [ref=e614]
- cell "'127.0.0.1'" [ref=e615]:
- generic [ref=e616]: "'127.0.0.1'"
- row "REMOTE_HOST ''" [ref=e617]:
- cell "REMOTE_HOST" [ref=e618]
- cell "''" [ref=e619]:
- generic [ref=e620]: "''"
- row "REQUEST_METHOD 'GET'" [ref=e621]:
- cell "REQUEST_METHOD" [ref=e622]
- cell "'GET'" [ref=e623]:
- generic [ref=e624]: "'GET'"
- row "RUN_MAIN 'true'" [ref=e625]:
- cell "RUN_MAIN" [ref=e626]
- cell "'true'" [ref=e627]:
- generic [ref=e628]: "'true'"
- row "SCRIPT_NAME ''" [ref=e629]:
- cell "SCRIPT_NAME" [ref=e630]
- cell "''" [ref=e631]:
- generic [ref=e632]: "''"
- row "SECRET_KEY '********************'" [ref=e633]:
- cell "SECRET_KEY" [ref=e634]
- cell "'********************'" [ref=e635]:
- generic [ref=e636]: "'********************'"
- row "SERVER_NAME 'localhost'" [ref=e637]:
- cell "SERVER_NAME" [ref=e638]
- cell "'localhost'" [ref=e639]:
- generic [ref=e640]: "'localhost'"
- row "SERVER_PORT '8000'" [ref=e641]:
- cell "SERVER_PORT" [ref=e642]
- cell "'8000'" [ref=e643]:
- generic [ref=e644]: "'8000'"
- row "SERVER_PROTOCOL 'HTTP/1.1'" [ref=e645]:
- cell "SERVER_PROTOCOL" [ref=e646]
- cell "'HTTP/1.1'" [ref=e647]:
- generic [ref=e648]: "'HTTP/1.1'"
- row "SERVER_SOFTWARE 'WSGIServer/0.2'" [ref=e649]:
- cell "SERVER_SOFTWARE" [ref=e650]
- cell "'WSGIServer/0.2'" [ref=e651]:
- generic [ref=e652]: "'WSGIServer/0.2'"
- row "SESSION_EXPIRE_AT_BROWSER_CLOSE 'False'" [ref=e653]:
- cell "SESSION_EXPIRE_AT_BROWSER_CLOSE" [ref=e654]
- cell "'False'" [ref=e655]:
- generic [ref=e656]: "'False'"
- row "SESSION_MANAGER 'local/ismail-Latitude-5500:@/tmp/.ICE-unix/1199,unix/ismail-Latitude-5500:/tmp/.ICE-unix/1199'" [ref=e657]:
- cell "SESSION_MANAGER" [ref=e658]
- cell "'local/ismail-Latitude-5500:@/tmp/.ICE-unix/1199,unix/ismail-Latitude-5500:/tmp/.ICE-unix/1199'" [ref=e659]:
- generic [ref=e660]: "'local/ismail-Latitude-5500:@/tmp/.ICE-unix/1199,unix/ismail-Latitude-5500:/tmp/.ICE-unix/1199'"
- row "SHELL '/bin/bash'" [ref=e661]:
- cell "SHELL" [ref=e662]
- cell "'/bin/bash'" [ref=e663]:
- generic [ref=e664]: "'/bin/bash'"
- row "SHLVL '1'" [ref=e665]:
- cell "SHLVL" [ref=e666]
- cell "'1'" [ref=e667]:
- generic [ref=e668]: "'1'"
- row "SMS_API_ENABLED '********************'" [ref=e669]:
- cell "SMS_API_ENABLED" [ref=e670]
- cell "'********************'" [ref=e671]:
- generic [ref=e672]: "'********************'"
- row "SMS_API_KEY '********************'" [ref=e673]:
- cell "SMS_API_KEY" [ref=e674]
- cell "'********************'" [ref=e675]:
- generic [ref=e676]: "'********************'"
- row "SMS_API_URL '********************'" [ref=e677]:
- cell "SMS_API_URL" [ref=e678]
- cell "'********************'" [ref=e679]:
- generic [ref=e680]: "'********************'"
- row "SMS_ENABLED 'False'" [ref=e681]:
- cell "SMS_ENABLED" [ref=e682]
- cell "'False'" [ref=e683]:
- generic [ref=e684]: "'False'"
- row "SMS_PROVIDER 'mshastra'" [ref=e685]:
- cell "SMS_PROVIDER" [ref=e686]
- cell "'mshastra'" [ref=e687]:
- generic [ref=e688]: "'mshastra'"
- row "SSH_AUTH_SOCK '********************'" [ref=e689]:
- cell "SSH_AUTH_SOCK" [ref=e690]
- cell "'********************'" [ref=e691]:
- generic [ref=e692]: "'********************'"
- row "SYSTEMD_EXEC_PID '1205'" [ref=e693]:
- cell "SYSTEMD_EXEC_PID" [ref=e694]
- cell "'1205'" [ref=e695]:
- generic [ref=e696]: "'1205'"
- row "TERM 'xterm-256color'" [ref=e697]:
- cell "TERM" [ref=e698]
- cell "'xterm-256color'" [ref=e699]:
- generic [ref=e700]: "'xterm-256color'"
- row "TERM_PROGRAM 'vscode'" [ref=e701]:
- cell "TERM_PROGRAM" [ref=e702]
- cell "'vscode'" [ref=e703]:
- generic [ref=e704]: "'vscode'"
- row "TERM_PROGRAM_VERSION '1.115.0'" [ref=e705]:
- cell "TERM_PROGRAM_VERSION" [ref=e706]
- cell "'1.115.0'" [ref=e707]:
- generic [ref=e708]: "'1.115.0'"
- row "TZ 'Asia/Riyadh'" [ref=e709]:
- cell "TZ" [ref=e710]
- cell "'Asia/Riyadh'" [ref=e711]:
- generic [ref=e712]: "'Asia/Riyadh'"
- row "USER 'ismail'" [ref=e713]:
- cell "USER" [ref=e714]
- cell "'ismail'" [ref=e715]:
- generic [ref=e716]: "'ismail'"
- row "UV '/home/ismail/.local/bin/uv'" [ref=e717]:
- cell "UV" [ref=e718]
- cell "'/home/ismail/.local/bin/uv'" [ref=e719]:
- generic [ref=e720]: "'/home/ismail/.local/bin/uv'"
- row "UV_RUN_RECURSION_DEPTH '1'" [ref=e721]:
- cell "UV_RUN_RECURSION_DEPTH" [ref=e722]
- cell "'1'" [ref=e723]:
- generic [ref=e724]: "'1'"
- row "VIRTUAL_ENV '/home/ismail/projects/HH/.venv'" [ref=e725]:
- cell "VIRTUAL_ENV" [ref=e726]
- cell "'/home/ismail/projects/HH/.venv'" [ref=e727]:
- generic [ref=e728]: "'/home/ismail/projects/HH/.venv'"
- row "VIRTUAL_ENV_PROMPT 'px360'" [ref=e729]:
- cell "VIRTUAL_ENV_PROMPT" [ref=e730]
- cell "'px360'" [ref=e731]:
- generic [ref=e732]: "'px360'"
- row "VSCODE_DEBUGPY_ADAPTER_ENDPOINTS '/home/ismail/.vscode/extensions/ms-python.debugpy-2026.6.0-linux-x64/.noConfigDebugAdapterEndpoints/endpoint-bb55ad0d4cf04cdd.txt'" [ref=e733]:
- cell "VSCODE_DEBUGPY_ADAPTER_ENDPOINTS" [ref=e734]
- cell "'/home/ismail/.vscode/extensions/ms-python.debugpy-2026.6.0-linux-x64/.noConfigDebugAdapterEndpoints/endpoint-bb55ad0d4cf04cdd.txt'" [ref=e735]:
- generic [ref=e736]: "'/home/ismail/.vscode/extensions/ms-python.debugpy-2026.6.0-linux-x64/.noConfigDebugAdapterEndpoints/endpoint-bb55ad0d4cf04cdd.txt'"
- row "VSCODE_GIT_ASKPASS_EXTRA_ARGS '********************'" [ref=e737]:
- cell "VSCODE_GIT_ASKPASS_EXTRA_ARGS" [ref=e738]
- cell "'********************'" [ref=e739]:
- generic [ref=e740]: "'********************'"
- row "VSCODE_GIT_ASKPASS_MAIN '********************'" [ref=e741]:
- cell "VSCODE_GIT_ASKPASS_MAIN" [ref=e742]
- cell "'********************'" [ref=e743]:
- generic [ref=e744]: "'********************'"
- row "VSCODE_GIT_ASKPASS_NODE '********************'" [ref=e745]:
- cell "VSCODE_GIT_ASKPASS_NODE" [ref=e746]
- cell "'********************'" [ref=e747]:
- generic [ref=e748]: "'********************'"
- row "VSCODE_GIT_IPC_HANDLE '/run/user/1000/vscode-git-4aa301eaf0.sock'" [ref=e749]:
- cell "VSCODE_GIT_IPC_HANDLE" [ref=e750]
- cell "'/run/user/1000/vscode-git-4aa301eaf0.sock'" [ref=e751]:
- generic [ref=e752]: "'/run/user/1000/vscode-git-4aa301eaf0.sock'"
- row "VSCODE_PYTHON_AUTOACTIVATE_GUARD '1'" [ref=e753]:
- cell "VSCODE_PYTHON_AUTOACTIVATE_GUARD" [ref=e754]
- cell "'1'" [ref=e755]:
- generic [ref=e756]: "'1'"
- row "WHATSAPP_ENABLED 'False'" [ref=e757]:
- cell "WHATSAPP_ENABLED" [ref=e758]
- cell "'False'" [ref=e759]:
- generic [ref=e760]: "'False'"
- row "WHATSAPP_PROVIDER 'console'" [ref=e761]:
- cell "WHATSAPP_PROVIDER" [ref=e762]
- cell "'console'" [ref=e763]:
- generic [ref=e764]: "'console'"
- row "XAUTHORITY '********************'" [ref=e765]:
- cell "XAUTHORITY" [ref=e766]
- cell "'********************'" [ref=e767]:
- generic [ref=e768]: "'********************'"
- row "XDG_CONFIG_DIRS '/etc/xdg/xdg-mate:/etc/xdg'" [ref=e769]:
- cell "XDG_CONFIG_DIRS" [ref=e770]
- cell "'/etc/xdg/xdg-mate:/etc/xdg'" [ref=e771]:
- generic [ref=e772]: "'/etc/xdg/xdg-mate:/etc/xdg'"
- row "XDG_CURRENT_DESKTOP 'MATE'" [ref=e773]:
- cell "XDG_CURRENT_DESKTOP" [ref=e774]
- cell "'MATE'" [ref=e775]:
- generic [ref=e776]: "'MATE'"
- row "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'" [ref=e777]:
- cell "XDG_DATA_DIRS" [ref=e778]
- cell "'/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'" [ref=e779]:
- generic [ref=e780]: "'/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'"
- row "XDG_GREETER_DATA_DIR '/var/lib/lightdm-data/ismail'" [ref=e781]:
- cell "XDG_GREETER_DATA_DIR" [ref=e782]
- cell "'/var/lib/lightdm-data/ismail'" [ref=e783]:
- generic [ref=e784]: "'/var/lib/lightdm-data/ismail'"
- row "XDG_RUNTIME_DIR '/run/user/1000'" [ref=e785]:
- cell "XDG_RUNTIME_DIR" [ref=e786]
- cell "'/run/user/1000'" [ref=e787]:
- generic [ref=e788]: "'/run/user/1000'"
- row "XDG_SEAT_PATH '/org/freedesktop/DisplayManager/Seat0'" [ref=e789]:
- cell "XDG_SEAT_PATH" [ref=e790]
- cell "'/org/freedesktop/DisplayManager/Seat0'" [ref=e791]:
- generic [ref=e792]: "'/org/freedesktop/DisplayManager/Seat0'"
- row "XDG_SESSION_CLASS 'user'" [ref=e793]:
- cell "XDG_SESSION_CLASS" [ref=e794]
- cell "'user'" [ref=e795]:
- generic [ref=e796]: "'user'"
- row "XDG_SESSION_DESKTOP 'mate'" [ref=e797]:
- cell "XDG_SESSION_DESKTOP" [ref=e798]
- cell "'mate'" [ref=e799]:
- generic [ref=e800]: "'mate'"
- row "XDG_SESSION_PATH '/org/freedesktop/DisplayManager/Session0'" [ref=e801]:
- cell "XDG_SESSION_PATH" [ref=e802]
- cell "'/org/freedesktop/DisplayManager/Session0'" [ref=e803]:
- generic [ref=e804]: "'/org/freedesktop/DisplayManager/Session0'"
- row "XDG_SESSION_TYPE 'x11'" [ref=e805]:
- cell "XDG_SESSION_TYPE" [ref=e806]
- cell "'x11'" [ref=e807]:
- generic [ref=e808]: "'x11'"
- row "_ '/home/ismail/.local/bin/uv'" [ref=e809]:
- cell "_" [ref=e810]
- cell "'/home/ismail/.local/bin/uv'" [ref=e811]:
- generic [ref=e812]: "'/home/ismail/.local/bin/uv'"
- row "wsgi.errors <_io.TextIOWrapper name='<stderr>' mode='w' encoding='utf-8'>" [ref=e813]:
- cell "wsgi.errors" [ref=e814]
- cell "<_io.TextIOWrapper name='<stderr>' mode='w' encoding='utf-8'>" [ref=e815]:
- generic [ref=e816]: <_io.TextIOWrapper name='<stderr>' mode='w' encoding='utf-8'>
- row "wsgi.file_wrapper <class 'wsgiref.util.FileWrapper'>" [ref=e817]:
- cell "wsgi.file_wrapper" [ref=e818]
- cell "<class 'wsgiref.util.FileWrapper'>" [ref=e819]:
- generic [ref=e820]: <class 'wsgiref.util.FileWrapper'>
- row "wsgi.input <django.core.handlers.wsgi.LimitedStream object at 0x74e6a71deb30>" [ref=e821]:
- cell "wsgi.input" [ref=e822]
- cell "<django.core.handlers.wsgi.LimitedStream object at 0x74e6a71deb30>" [ref=e823]:
- generic [ref=e824]: <django.core.handlers.wsgi.LimitedStream object at 0x74e6a71deb30>
- row "wsgi.multiprocess False" [ref=e825]:
- cell "wsgi.multiprocess" [ref=e826]
- cell "False" [ref=e827]:
- generic [ref=e828]: "False"
- row "wsgi.multithread True" [ref=e829]:
- cell "wsgi.multithread" [ref=e830]
- cell "True" [ref=e831]:
- generic [ref=e832]: "True"
- row "wsgi.run_once False" [ref=e833]:
- cell "wsgi.run_once" [ref=e834]
- cell "False" [ref=e835]:
- generic [ref=e836]: "False"
- row "wsgi.url_scheme 'http'" [ref=e837]:
- cell "wsgi.url_scheme" [ref=e838]
- cell "'http'" [ref=e839]:
- generic [ref=e840]: "'http'"
- row "wsgi.version (1, 0)" [ref=e841]:
- cell "wsgi.version" [ref=e842]
- cell "(1, 0)" [ref=e843]:
- generic [ref=e844]: (1, 0)
- heading "Settings" [level=3] [ref=e845]
- heading "Using settings module config.settings.dev" [level=4] [ref=e846]:
- text: Using settings module
- code [ref=e847]: config.settings.dev
- table [ref=e848]:
- rowgroup [ref=e849]:
- row "Setting Value" [ref=e850]:
- columnheader "Setting" [ref=e851]
- columnheader "Value" [ref=e852]
- rowgroup [ref=e853]:
- 'row "ABSOLUTE_URL_OVERRIDES {}" [ref=e854]':
- cell "ABSOLUTE_URL_OVERRIDES" [ref=e855]
- 'cell "{}" [ref=e856]':
- generic [ref=e857]: "{}"
- row "ADMINS []" [ref=e858]:
- cell "ADMINS" [ref=e859]
- cell "[]" [ref=e860]:
- generic [ref=e861]: "[]"
- row "AI_MAX_TOKENS '********************'" [ref=e862]:
- cell "AI_MAX_TOKENS" [ref=e863]
- cell "'********************'" [ref=e864]:
- generic [ref=e865]: "'********************'"
- row "AI_MODEL 'openrouter/google/gemini-2.5-flash-lite'" [ref=e866]:
- cell "AI_MODEL" [ref=e867]
- cell "'openrouter/google/gemini-2.5-flash-lite'" [ref=e868]:
- generic [ref=e869]: "'openrouter/google/gemini-2.5-flash-lite'"
- row "AI_TEMPERATURE 0.3" [ref=e870]:
- cell "AI_TEMPERATURE" [ref=e871]
- cell "0.3" [ref=e872]:
- generic [ref=e873]: "0.3"
- row "ALLOWED_HOSTS ['localhost', '127.0.0.1', '0.0.0.0', '.ngrok-free.app', 'micha-nonparabolic-lovie.ngrok-free.dev']" [ref=e874]:
- cell "ALLOWED_HOSTS" [ref=e875]
- cell "['localhost', '127.0.0.1', '0.0.0.0', '.ngrok-free.app', 'micha-nonparabolic-lovie.ngrok-free.dev']" [ref=e876]:
- generic [ref=e877]: "['localhost', '127.0.0.1', '0.0.0.0', '.ngrok-free.app', 'micha-nonparabolic-lovie.ngrok-free.dev']"
- row "ANALYSIS_BATCH_SIZE 2" [ref=e878]:
- cell "ANALYSIS_BATCH_SIZE" [ref=e879]
- cell "2" [ref=e880]:
- generic [ref=e881]: "2"
- row "ANALYSIS_ENABLED True" [ref=e882]:
- cell "ANALYSIS_ENABLED" [ref=e883]
- cell "True" [ref=e884]:
- generic [ref=e885]: "True"
- row "APPEND_SLASH True" [ref=e886]:
- cell "APPEND_SLASH" [ref=e887]
- cell "True" [ref=e888]:
- generic [ref=e889]: "True"
- row "AUTHENTICATION_BACKENDS '********************'" [ref=e890]:
- cell "AUTHENTICATION_BACKENDS" [ref=e891]
- cell "'********************'" [ref=e892]:
- generic [ref=e893]: "'********************'"
- row "AUTH_PASSWORD_VALIDATORS '********************'" [ref=e894]:
- cell "AUTH_PASSWORD_VALIDATORS" [ref=e895]
- cell "'********************'" [ref=e896]:
- generic [ref=e897]: "'********************'"
- row "AUTH_USER_MODEL '********************'" [ref=e898]:
- cell "AUTH_USER_MODEL" [ref=e899]
- cell "'********************'" [ref=e900]:
- generic [ref=e901]: "'********************'"
- row "BASE_DIR PosixPath('/home/ismail/projects/HH')" [ref=e902]:
- cell "BASE_DIR" [ref=e903]
- cell "PosixPath('/home/ismail/projects/HH')" [ref=e904]:
- generic [ref=e905]: PosixPath('/home/ismail/projects/HH')
- 'row "CACHES {''default'': {''BACKEND'': ''django.core.cache.backends.locmem.LocMemCache''}}" [ref=e906]':
- cell "CACHES" [ref=e907]
- 'cell "{''default'': {''BACKEND'': ''django.core.cache.backends.locmem.LocMemCache''}}" [ref=e908]':
- generic [ref=e909]: "{'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'}}"
- row "CACHE_MIDDLEWARE_ALIAS 'default'" [ref=e910]:
- cell "CACHE_MIDDLEWARE_ALIAS" [ref=e911]
- cell "'default'" [ref=e912]:
- generic [ref=e913]: "'default'"
- row "CACHE_MIDDLEWARE_KEY_PREFIX '********************'" [ref=e914]:
- cell "CACHE_MIDDLEWARE_KEY_PREFIX" [ref=e915]
- cell "'********************'" [ref=e916]:
- generic [ref=e917]: "'********************'"
- row "CACHE_MIDDLEWARE_SECONDS 600" [ref=e918]:
- cell "CACHE_MIDDLEWARE_SECONDS" [ref=e919]
- cell "600" [ref=e920]:
- generic [ref=e921]: "600"
- row "CELERY_ACCEPT_CONTENT ['json']" [ref=e922]:
- cell "CELERY_ACCEPT_CONTENT" [ref=e923]
- cell "['json']" [ref=e924]:
- generic [ref=e925]: "['json']"
- row "CELERY_BEAT_SCHEDULER 'config.celery_scheduler:PatchedDatabaseScheduler'" [ref=e926]:
- cell "CELERY_BEAT_SCHEDULER" [ref=e927]
- cell "'config.celery_scheduler:PatchedDatabaseScheduler'" [ref=e928]:
- generic [ref=e929]: "'config.celery_scheduler:PatchedDatabaseScheduler'"
- row "CELERY_BROKER_URL 'redis://localhost:6379/0'" [ref=e930]:
- cell "CELERY_BROKER_URL" [ref=e931]
- cell "'redis://localhost:6379/0'" [ref=e932]:
- generic [ref=e933]: "'redis://localhost:6379/0'"
- row "CELERY_RESULT_BACKEND 'redis://localhost:6379/0'" [ref=e934]:
- cell "CELERY_RESULT_BACKEND" [ref=e935]
- cell "'redis://localhost:6379/0'" [ref=e936]:
- generic [ref=e937]: "'redis://localhost:6379/0'"
- row "CELERY_RESULT_SERIALIZER 'json'" [ref=e938]:
- cell "CELERY_RESULT_SERIALIZER" [ref=e939]
- cell "'json'" [ref=e940]:
- generic [ref=e941]: "'json'"
- row "CELERY_TASK_ALWAYS_EAGER False" [ref=e942]:
- cell "CELERY_TASK_ALWAYS_EAGER" [ref=e943]
- cell "False" [ref=e944]:
- generic [ref=e945]: "False"
- row "CELERY_TASK_EAGER_PROPAGATES True" [ref=e946]:
- cell "CELERY_TASK_EAGER_PROPAGATES" [ref=e947]
- cell "True" [ref=e948]:
- generic [ref=e949]: "True"
- row "CELERY_TASK_SERIALIZER 'json'" [ref=e950]:
- cell "CELERY_TASK_SERIALIZER" [ref=e951]
- cell "'json'" [ref=e952]:
- generic [ref=e953]: "'json'"
- row "CELERY_TASK_TIME_LIMIT 1800" [ref=e954]:
- cell "CELERY_TASK_TIME_LIMIT" [ref=e955]
- cell "1800" [ref=e956]:
- generic [ref=e957]: "1800"
- row "CELERY_TASK_TRACK_STARTED True" [ref=e958]:
- cell "CELERY_TASK_TRACK_STARTED" [ref=e959]
- cell "True" [ref=e960]:
- generic [ref=e961]: "True"
- row "CELERY_TIMEZONE 'Asia/Riyadh'" [ref=e962]:
- cell "CELERY_TIMEZONE" [ref=e963]
- cell "'Asia/Riyadh'" [ref=e964]:
- generic [ref=e965]: "'Asia/Riyadh'"
- row "COMPLAINT_LINK_EXPIRY_DAYS 7" [ref=e966]:
- cell "COMPLAINT_LINK_EXPIRY_DAYS" [ref=e967]
- cell "7" [ref=e968]:
- generic [ref=e969]: "7"
- row "CORS_ALLOW_ALL_ORIGINS True" [ref=e970]:
- cell "CORS_ALLOW_ALL_ORIGINS" [ref=e971]
- cell "True" [ref=e972]:
- generic [ref=e973]: "True"
- row "CSRF_COOKIE_AGE 31449600" [ref=e974]:
- cell "CSRF_COOKIE_AGE" [ref=e975]
- cell "31449600" [ref=e976]:
- generic [ref=e977]: "31449600"
- row "CSRF_COOKIE_DOMAIN None" [ref=e978]:
- cell "CSRF_COOKIE_DOMAIN" [ref=e979]
- cell "None" [ref=e980]:
- generic [ref=e981]: None
- row "CSRF_COOKIE_HTTPONLY False" [ref=e982]:
- cell "CSRF_COOKIE_HTTPONLY" [ref=e983]
- cell "False" [ref=e984]:
- generic [ref=e985]: "False"
- row "CSRF_COOKIE_NAME 'csrftoken'" [ref=e986]:
- cell "CSRF_COOKIE_NAME" [ref=e987]
- cell "'csrftoken'" [ref=e988]:
- generic [ref=e989]: "'csrftoken'"
- row "CSRF_COOKIE_PATH '/'" [ref=e990]:
- cell "CSRF_COOKIE_PATH" [ref=e991]
- cell "'/'" [ref=e992]:
- generic [ref=e993]: "'/'"
- row "CSRF_COOKIE_SAMESITE 'Lax'" [ref=e994]:
- cell "CSRF_COOKIE_SAMESITE" [ref=e995]
- cell "'Lax'" [ref=e996]:
- generic [ref=e997]: "'Lax'"
- row "CSRF_COOKIE_SECURE False" [ref=e998]:
- cell "CSRF_COOKIE_SECURE" [ref=e999]
- cell "False" [ref=e1000]:
- generic [ref=e1001]: "False"
- row "CSRF_FAILURE_VIEW 'django.views.csrf.csrf_failure'" [ref=e1002]:
- cell "CSRF_FAILURE_VIEW" [ref=e1003]
- cell "'django.views.csrf.csrf_failure'" [ref=e1004]:
- generic [ref=e1005]: "'django.views.csrf.csrf_failure'"
- row "CSRF_HEADER_NAME 'HTTP_X_CSRFTOKEN'" [ref=e1006]:
- cell "CSRF_HEADER_NAME" [ref=e1007]
- cell "'HTTP_X_CSRFTOKEN'" [ref=e1008]:
- generic [ref=e1009]: "'HTTP_X_CSRFTOKEN'"
- row "CSRF_TRUSTED_ORIGINS ['https://*.ngrok-free.app', 'https://*.ngrok.app', 'https://micha-nonparabolic-lovie.ngrok-free.dev']" [ref=e1010]:
- cell "CSRF_TRUSTED_ORIGINS" [ref=e1011]
- cell "['https://*.ngrok-free.app', 'https://*.ngrok.app', 'https://micha-nonparabolic-lovie.ngrok-free.dev']" [ref=e1012]:
- generic [ref=e1013]: "['https://*.ngrok-free.app', 'https://*.ngrok.app', 'https://micha-nonparabolic-lovie.ngrok-free.dev']"
- row "CSRF_USE_SESSIONS False" [ref=e1014]:
- cell "CSRF_USE_SESSIONS" [ref=e1015]
- cell "False" [ref=e1016]:
- generic [ref=e1017]: "False"
- 'row "DATABASES {''default'': {''ATOMIC_REQUESTS'': False, ''AUTOCOMMIT'': True, ''CONN_HEALTH_CHECKS'': False, ''CONN_MAX_AGE'': 0, ''ENGINE'': ''django.db.backends.postgresql'', ''HOST'': ''localhost'', ''NAME'': ''px360'', ''OPTIONS'': {}, ''PASSWORD'': ''********************'', ''PORT'': 5433, ''TEST'': {''CHARSET'': None, ''COLLATION'': None, ''MIGRATE'': True, ''MIRROR'': None, ''NAME'': None}, ''TIME_ZONE'': None, ''USER'': ''px360''}}" [ref=e1018]':
- cell "DATABASES" [ref=e1019]
- 'cell "{''default'': {''ATOMIC_REQUESTS'': False, ''AUTOCOMMIT'': True, ''CONN_HEALTH_CHECKS'': False, ''CONN_MAX_AGE'': 0, ''ENGINE'': ''django.db.backends.postgresql'', ''HOST'': ''localhost'', ''NAME'': ''px360'', ''OPTIONS'': {}, ''PASSWORD'': ''********************'', ''PORT'': 5433, ''TEST'': {''CHARSET'': None, ''COLLATION'': None, ''MIGRATE'': True, ''MIRROR'': None, ''NAME'': None}, ''TIME_ZONE'': None, ''USER'': ''px360''}}" [ref=e1020]':
- generic [ref=e1021]: "{'default': {'ATOMIC_REQUESTS': False, 'AUTOCOMMIT': True, 'CONN_HEALTH_CHECKS': False, 'CONN_MAX_AGE': 0, 'ENGINE': 'django.db.backends.postgresql', 'HOST': 'localhost', 'NAME': 'px360', 'OPTIONS': {}, 'PASSWORD': '********************', 'PORT': 5433, 'TEST': {'CHARSET': None, 'COLLATION': None, 'MIGRATE': True, 'MIRROR': None, 'NAME': None}, 'TIME_ZONE': None, 'USER': 'px360'}}"
- row "DATABASE_ROUTERS []" [ref=e1022]:
- cell "DATABASE_ROUTERS" [ref=e1023]
- cell "[]" [ref=e1024]:
- generic [ref=e1025]: "[]"
- row "DATA_UPLOAD_MAX_MEMORY_SIZE 2621440" [ref=e1026]:
- cell "DATA_UPLOAD_MAX_MEMORY_SIZE" [ref=e1027]
- cell "2621440" [ref=e1028]:
- generic [ref=e1029]: "2621440"
- row "DATA_UPLOAD_MAX_NUMBER_FIELDS 10000" [ref=e1030]:
- cell "DATA_UPLOAD_MAX_NUMBER_FIELDS" [ref=e1031]
- cell "10000" [ref=e1032]:
- generic [ref=e1033]: "10000"
- row "DATA_UPLOAD_MAX_NUMBER_FILES 100" [ref=e1034]:
- cell "DATA_UPLOAD_MAX_NUMBER_FILES" [ref=e1035]
- cell "100" [ref=e1036]:
- generic [ref=e1037]: "100"
- row "DATETIME_FORMAT 'N j, Y, P'" [ref=e1038]:
- cell "DATETIME_FORMAT" [ref=e1039]
- cell "'N j, Y, P'" [ref=e1040]:
- generic [ref=e1041]: "'N j, Y, P'"
- row "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']" [ref=e1042]:
- cell "DATETIME_INPUT_FORMATS" [ref=e1043]
- cell "['%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']" [ref=e1044]:
- generic [ref=e1045]: "['%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']"
- row "DATE_FORMAT 'N j, Y'" [ref=e1046]:
- cell "DATE_FORMAT" [ref=e1047]
- cell "'N j, Y'" [ref=e1048]:
- generic [ref=e1049]: "'N j, Y'"
- row "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']" [ref=e1050]:
- cell "DATE_INPUT_FORMATS" [ref=e1051]
- cell "['%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']" [ref=e1052]:
- generic [ref=e1053]: "['%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']"
- row "DEBUG True" [ref=e1054]:
- cell "DEBUG" [ref=e1055]
- cell "True" [ref=e1056]:
- generic [ref=e1057]: "True"
- row "DEBUG_PROPAGATE_EXCEPTIONS False" [ref=e1058]:
- cell "DEBUG_PROPAGATE_EXCEPTIONS" [ref=e1059]
- cell "False" [ref=e1060]:
- generic [ref=e1061]: "False"
- row "DECIMAL_SEPARATOR '.'" [ref=e1062]:
- cell "DECIMAL_SEPARATOR" [ref=e1063]
- cell "'.'" [ref=e1064]:
- generic [ref=e1065]: "'.'"
- row "DEFAULT_AUTO_FIELD 'django.db.models.BigAutoField'" [ref=e1066]:
- cell "DEFAULT_AUTO_FIELD" [ref=e1067]
- cell "'django.db.models.BigAutoField'" [ref=e1068]:
- generic [ref=e1069]: "'django.db.models.BigAutoField'"
- row "DEFAULT_CHARSET 'utf-8'" [ref=e1070]:
- cell "DEFAULT_CHARSET" [ref=e1071]
- cell "'utf-8'" [ref=e1072]:
- generic [ref=e1073]: "'utf-8'"
- row "DEFAULT_EXCEPTION_REPORTER 'django.views.debug.ExceptionReporter'" [ref=e1074]:
- cell "DEFAULT_EXCEPTION_REPORTER" [ref=e1075]
- cell "'django.views.debug.ExceptionReporter'" [ref=e1076]:
- generic [ref=e1077]: "'django.views.debug.ExceptionReporter'"
- row "DEFAULT_EXCEPTION_REPORTER_FILTER 'django.views.debug.SafeExceptionReporterFilter'" [ref=e1078]:
- cell "DEFAULT_EXCEPTION_REPORTER_FILTER" [ref=e1079]
- cell "'django.views.debug.SafeExceptionReporterFilter'" [ref=e1080]:
- generic [ref=e1081]: "'django.views.debug.SafeExceptionReporterFilter'"
- row "DEFAULT_FROM_EMAIL 'noreply@px360.sa'" [ref=e1082]:
- cell "DEFAULT_FROM_EMAIL" [ref=e1083]
- cell "'noreply@px360.sa'" [ref=e1084]:
- generic [ref=e1085]: "'noreply@px360.sa'"
- row "DEFAULT_INDEX_TABLESPACE ''" [ref=e1086]:
- cell "DEFAULT_INDEX_TABLESPACE" [ref=e1087]
- cell "''" [ref=e1088]:
- generic [ref=e1089]: "''"
- row "DEFAULT_TABLESPACE ''" [ref=e1090]:
- cell "DEFAULT_TABLESPACE" [ref=e1091]
- cell "''" [ref=e1092]:
- generic [ref=e1093]: "''"
- row "DEV_SMS_RECIPIENT '+966566703794'" [ref=e1094]:
- cell "DEV_SMS_RECIPIENT" [ref=e1095]
- cell "'+966566703794'" [ref=e1096]:
- generic [ref=e1097]: "'+966566703794'"
- row "DISALLOWED_USER_AGENTS []" [ref=e1098]:
- cell "DISALLOWED_USER_AGENTS" [ref=e1099]
- cell "[]" [ref=e1100]:
- generic [ref=e1101]: "[]"
- row "DJANGO_APPS ['django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles']" [ref=e1102]:
- cell "DJANGO_APPS" [ref=e1103]
- cell "['django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles']" [ref=e1104]:
- generic [ref=e1105]: "['django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles']"
- row "EMAIL_BACKEND 'django.core.mail.backends.smtp.EmailBackend'" [ref=e1106]:
- cell "EMAIL_BACKEND" [ref=e1107]
- cell "'django.core.mail.backends.smtp.EmailBackend'" [ref=e1108]:
- generic [ref=e1109]: "'django.core.mail.backends.smtp.EmailBackend'"
- row "EMAIL_HOST 'localhost'" [ref=e1110]:
- cell "EMAIL_HOST" [ref=e1111]
- cell "'localhost'" [ref=e1112]:
- generic [ref=e1113]: "'localhost'"
- row "EMAIL_HOST_PASSWORD '********************'" [ref=e1114]:
- cell "EMAIL_HOST_PASSWORD" [ref=e1115]
- cell "'********************'" [ref=e1116]:
- generic [ref=e1117]: "'********************'"
- row "EMAIL_HOST_USER ''" [ref=e1118]:
- cell "EMAIL_HOST_USER" [ref=e1119]
- cell "''" [ref=e1120]:
- generic [ref=e1121]: "''"
- row "EMAIL_LOGO_URL 'http://localhost:8000/static/img/HH_P_H_Logo.png'" [ref=e1122]:
- cell "EMAIL_LOGO_URL" [ref=e1123]
- cell "'http://localhost:8000/static/img/HH_P_H_Logo.png'" [ref=e1124]:
- generic [ref=e1125]: "'http://localhost:8000/static/img/HH_P_H_Logo.png'"
- row "EMAIL_PORT 2525" [ref=e1126]:
- cell "EMAIL_PORT" [ref=e1127]
- cell "2525" [ref=e1128]:
- generic [ref=e1129]: "2525"
- row "EMAIL_SSL_CERTFILE None" [ref=e1130]:
- cell "EMAIL_SSL_CERTFILE" [ref=e1131]
- cell "None" [ref=e1132]:
- generic [ref=e1133]: None
- row "EMAIL_SSL_KEYFILE '********************'" [ref=e1134]:
- cell "EMAIL_SSL_KEYFILE" [ref=e1135]
- cell "'********************'" [ref=e1136]:
- generic [ref=e1137]: "'********************'"
- row "EMAIL_SUBJECT_PREFIX '[Django] '" [ref=e1138]:
- cell "EMAIL_SUBJECT_PREFIX" [ref=e1139]
- cell "'[Django] '" [ref=e1140]:
- generic [ref=e1141]: "'[Django] '"
- row "EMAIL_TIMEOUT None" [ref=e1142]:
- cell "EMAIL_TIMEOUT" [ref=e1143]
- cell "None" [ref=e1144]:
- generic [ref=e1145]: None
- row "EMAIL_USE_LOCALTIME False" [ref=e1146]:
- cell "EMAIL_USE_LOCALTIME" [ref=e1147]
- cell "False" [ref=e1148]:
- generic [ref=e1149]: "False"
- row "EMAIL_USE_SSL False" [ref=e1150]:
- cell "EMAIL_USE_SSL" [ref=e1151]
- cell "False" [ref=e1152]:
- generic [ref=e1153]: "False"
- row "EMAIL_USE_TLS False" [ref=e1154]:
- cell "EMAIL_USE_TLS" [ref=e1155]
- cell "False" [ref=e1156]:
- generic [ref=e1157]: "False"
- row "EXTERNAL_NOTIFICATION_API '********************'" [ref=e1158]:
- cell "EXTERNAL_NOTIFICATION_API" [ref=e1159]
- cell "'********************'" [ref=e1160]:
- generic [ref=e1161]: "'********************'"
- row "FACEBOOK_ACCESS_TOKEN '********************'" [ref=e1162]:
- cell "FACEBOOK_ACCESS_TOKEN" [ref=e1163]
- cell "'********************'" [ref=e1164]:
- generic [ref=e1165]: "'********************'"
- row "FACEBOOK_PAGE_ID '938104059393026'" [ref=e1166]:
- cell "FACEBOOK_PAGE_ID" [ref=e1167]
- cell "'938104059393026'" [ref=e1168]:
- generic [ref=e1169]: "'938104059393026'"
- row "FILE_UPLOAD_DIRECTORY_PERMISSIONS None" [ref=e1170]:
- cell "FILE_UPLOAD_DIRECTORY_PERMISSIONS" [ref=e1171]
- cell "None" [ref=e1172]:
- generic [ref=e1173]: None
- row "FILE_UPLOAD_HANDLERS ['django.core.files.uploadhandler.MemoryFileUploadHandler', 'django.core.files.uploadhandler.TemporaryFileUploadHandler']" [ref=e1174]:
- cell "FILE_UPLOAD_HANDLERS" [ref=e1175]
- cell "['django.core.files.uploadhandler.MemoryFileUploadHandler', 'django.core.files.uploadhandler.TemporaryFileUploadHandler']" [ref=e1176]:
- generic [ref=e1177]: "['django.core.files.uploadhandler.MemoryFileUploadHandler', 'django.core.files.uploadhandler.TemporaryFileUploadHandler']"
- row "FILE_UPLOAD_MAX_MEMORY_SIZE 2621440" [ref=e1178]:
- cell "FILE_UPLOAD_MAX_MEMORY_SIZE" [ref=e1179]
- cell "2621440" [ref=e1180]:
- generic [ref=e1181]: "2621440"
- row "FILE_UPLOAD_PERMISSIONS 420" [ref=e1182]:
- cell "FILE_UPLOAD_PERMISSIONS" [ref=e1183]
- cell "420" [ref=e1184]:
- generic [ref=e1185]: "420"
- row "FILE_UPLOAD_TEMP_DIR None" [ref=e1186]:
- cell "FILE_UPLOAD_TEMP_DIR" [ref=e1187]
- cell "None" [ref=e1188]:
- generic [ref=e1189]: None
- row "FIRST_DAY_OF_WEEK 0" [ref=e1190]:
- cell "FIRST_DAY_OF_WEEK" [ref=e1191]
- cell "0" [ref=e1192]:
- generic [ref=e1193]: "0"
- row "FIXTURE_DIRS []" [ref=e1194]:
- cell "FIXTURE_DIRS" [ref=e1195]
- cell "[]" [ref=e1196]:
- generic [ref=e1197]: "[]"
- row "FORCE_SCRIPT_NAME None" [ref=e1198]:
- cell "FORCE_SCRIPT_NAME" [ref=e1199]
- cell "None" [ref=e1200]:
- generic [ref=e1201]: None
- row "FORMAT_MODULE_PATH None" [ref=e1202]:
- cell "FORMAT_MODULE_PATH" [ref=e1203]
- cell "None" [ref=e1204]:
- generic [ref=e1205]: None
- row "FORM_RENDERER 'django.forms.renderers.DjangoTemplates'" [ref=e1206]:
- cell "FORM_RENDERER" [ref=e1207]
- cell "'django.forms.renderers.DjangoTemplates'" [ref=e1208]:
- generic [ref=e1209]: "'django.forms.renderers.DjangoTemplates'"
- row "GOOGLE_CREDENTIALS_FILE 'client_secret.json'" [ref=e1210]:
- cell "GOOGLE_CREDENTIALS_FILE" [ref=e1211]
- cell "'client_secret.json'" [ref=e1212]:
- generic [ref=e1213]: "'client_secret.json'"
- row "GOOGLE_LOCATIONS []" [ref=e1214]:
- cell "GOOGLE_LOCATIONS" [ref=e1215]
- cell "[]" [ref=e1216]:
- generic [ref=e1217]: "[]"
- row "GOOGLE_TOKEN_FILE '********************'" [ref=e1218]:
- cell "GOOGLE_TOKEN_FILE" [ref=e1219]
- cell "'********************'" [ref=e1220]:
- generic [ref=e1221]: "'********************'"
- row "HIS_API_PASSWORD '********************'" [ref=e1222]:
- cell "HIS_API_PASSWORD" [ref=e1223]
- cell "'********************'" [ref=e1224]:
- generic [ref=e1225]: "'********************'"
- row "HIS_API_URL '********************'" [ref=e1226]:
- cell "HIS_API_URL" [ref=e1227]
- cell "'********************'" [ref=e1228]:
- generic [ref=e1229]: "'********************'"
- row "HIS_API_USERNAME '********************'" [ref=e1230]:
- cell "HIS_API_USERNAME" [ref=e1231]
- cell "'********************'" [ref=e1232]:
- generic [ref=e1233]: "'********************'"
- row "HIS_RATINGS_API_URL '********************'" [ref=e1234]:
- cell "HIS_RATINGS_API_URL" [ref=e1235]
- cell "'********************'" [ref=e1236]:
- generic [ref=e1237]: "'********************'"
- row "IGNORABLE_404_URLS []" [ref=e1238]:
- cell "IGNORABLE_404_URLS" [ref=e1239]
- cell "[]" [ref=e1240]:
- generic [ref=e1241]: "[]"
- row "INSTAGRAM_ACCESS_TOKEN '********************'" [ref=e1242]:
- cell "INSTAGRAM_ACCESS_TOKEN" [ref=e1243]
- cell "'********************'" [ref=e1244]:
- generic [ref=e1245]: "'********************'"
- row "INSTAGRAM_ACCOUNT_ID '17841431861985364'" [ref=e1246]:
- cell "INSTAGRAM_ACCOUNT_ID" [ref=e1247]
- cell "'17841431861985364'" [ref=e1248]:
- generic [ref=e1249]: "'17841431861985364'"
- row "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', 'rest_framework_simplejwt.token_blacklist', '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', 'apps.reports', 'apps.rca', 'apps.executive_summary', 'apps.presentations', 'django_extensions']" [ref=e1250]:
- cell "INSTALLED_APPS" [ref=e1251]
- cell "['django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'rest_framework', 'rest_framework_simplejwt', 'rest_framework_simplejwt.token_blacklist', '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', 'apps.reports', 'apps.rca', 'apps.executive_summary', 'apps.presentations', 'django_extensions']" [ref=e1252]:
- generic [ref=e1253]: "['django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'rest_framework', 'rest_framework_simplejwt', 'rest_framework_simplejwt.token_blacklist', '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', 'apps.reports', 'apps.rca', 'apps.executive_summary', 'apps.presentations', 'django_extensions']"
- row "INTERNAL_IPS []" [ref=e1254]:
- cell "INTERNAL_IPS" [ref=e1255]
- cell "[]" [ref=e1256]:
- generic [ref=e1257]: "[]"
- row "LANGUAGES [('en', 'English'), ('ar', 'Arabic')]" [ref=e1258]:
- cell "LANGUAGES" [ref=e1259]
- cell "[('en', 'English'), ('ar', 'Arabic')]" [ref=e1260]:
- generic [ref=e1261]: "[('en', 'English'), ('ar', 'Arabic')]"
- row "LANGUAGES_BIDI ['he', 'ar', 'ar-dz', 'ckb', 'fa', 'ug', 'ur']" [ref=e1262]:
- cell "LANGUAGES_BIDI" [ref=e1263]
- cell "['he', 'ar', 'ar-dz', 'ckb', 'fa', 'ug', 'ur']" [ref=e1264]:
- generic [ref=e1265]: "['he', 'ar', 'ar-dz', 'ckb', 'fa', 'ug', 'ur']"
- row "LANGUAGE_CODE 'en-us'" [ref=e1266]:
- cell "LANGUAGE_CODE" [ref=e1267]
- cell "'en-us'" [ref=e1268]:
- generic [ref=e1269]: "'en-us'"
- row "LANGUAGE_COOKIE_AGE None" [ref=e1270]:
- cell "LANGUAGE_COOKIE_AGE" [ref=e1271]
- cell "None" [ref=e1272]:
- generic [ref=e1273]: None
- row "LANGUAGE_COOKIE_DOMAIN None" [ref=e1274]:
- cell "LANGUAGE_COOKIE_DOMAIN" [ref=e1275]
- cell "None" [ref=e1276]:
- generic [ref=e1277]: None
- row "LANGUAGE_COOKIE_HTTPONLY False" [ref=e1278]:
- cell "LANGUAGE_COOKIE_HTTPONLY" [ref=e1279]
- cell "False" [ref=e1280]:
- generic [ref=e1281]: "False"
- row "LANGUAGE_COOKIE_NAME 'django_language'" [ref=e1282]:
- cell "LANGUAGE_COOKIE_NAME" [ref=e1283]
- cell "'django_language'" [ref=e1284]:
- generic [ref=e1285]: "'django_language'"
- row "LANGUAGE_COOKIE_PATH '/'" [ref=e1286]:
- cell "LANGUAGE_COOKIE_PATH" [ref=e1287]
- cell "'/'" [ref=e1288]:
- generic [ref=e1289]: "'/'"
- row "LANGUAGE_COOKIE_SAMESITE None" [ref=e1290]:
- cell "LANGUAGE_COOKIE_SAMESITE" [ref=e1291]
- cell "None" [ref=e1292]:
- generic [ref=e1293]: None
- row "LANGUAGE_COOKIE_SECURE False" [ref=e1294]:
- cell "LANGUAGE_COOKIE_SECURE" [ref=e1295]
- cell "False" [ref=e1296]:
- generic [ref=e1297]: "False"
- row "LINKEDIN_ACCESS_TOKEN '********************'" [ref=e1298]:
- cell "LINKEDIN_ACCESS_TOKEN" [ref=e1299]
- cell "'********************'" [ref=e1300]:
- generic [ref=e1301]: "'********************'"
- row "LINKEDIN_ORGANIZATION_ID None" [ref=e1302]:
- cell "LINKEDIN_ORGANIZATION_ID" [ref=e1303]
- cell "None" [ref=e1304]:
- generic [ref=e1305]: None
- row "LOCALE_PATHS [PosixPath('/home/ismail/projects/HH/locale')]" [ref=e1306]:
- cell "LOCALE_PATHS" [ref=e1307]
- cell "[PosixPath('/home/ismail/projects/HH/locale')]" [ref=e1308]:
- generic [ref=e1309]: "[PosixPath('/home/ismail/projects/HH/locale')]"
- row "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', 'apps.reports', 'apps.rca', 'apps.executive_summary', 'apps.presentations']" [ref=e1310]:
- cell "LOCAL_APPS" [ref=e1311]
- cell "['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', 'apps.reports', 'apps.rca', 'apps.executive_summary', 'apps.presentations']" [ref=e1312]:
- generic [ref=e1313]: "['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', 'apps.reports', 'apps.rca', 'apps.executive_summary', 'apps.presentations']"
- row [ref=e1314]:
- cell "LOGGING" [ref=e1315]
- cell [ref=e1316]:
- generic [ref=e1317]: "{'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}"
- row "LOGGING_CONFIG 'logging.config.dictConfig'" [ref=e1318]:
- cell "LOGGING_CONFIG" [ref=e1319]
- cell "'logging.config.dictConfig'" [ref=e1320]:
- generic [ref=e1321]: "'logging.config.dictConfig'"
- row "LOGIN_ATTEMPT_TIMEOUT_MINUTES 30" [ref=e1322]:
- cell "LOGIN_ATTEMPT_TIMEOUT_MINUTES" [ref=e1323]
- cell "30" [ref=e1324]:
- generic [ref=e1325]: "30"
- row "LOGIN_REDIRECT_URL '/'" [ref=e1326]:
- cell "LOGIN_REDIRECT_URL" [ref=e1327]
- cell "'/'" [ref=e1328]:
- generic [ref=e1329]: "'/'"
- row "LOGIN_URL '/accounts/login/'" [ref=e1330]:
- cell "LOGIN_URL" [ref=e1331]
- cell "'/accounts/login/'" [ref=e1332]:
- generic [ref=e1333]: "'/accounts/login/'"
- row "LOGOUT_REDIRECT_URL '/accounts/login/'" [ref=e1334]:
- cell "LOGOUT_REDIRECT_URL" [ref=e1335]
- cell "'/accounts/login/'" [ref=e1336]:
- generic [ref=e1337]: "'/accounts/login/'"
- row "LOGS_DIR PosixPath('/home/ismail/projects/HH/logs')" [ref=e1338]:
- cell "LOGS_DIR" [ref=e1339]
- cell "PosixPath('/home/ismail/projects/HH/logs')" [ref=e1340]:
- generic [ref=e1341]: PosixPath('/home/ismail/projects/HH/logs')
- row "MANAGERS []" [ref=e1342]:
- cell "MANAGERS" [ref=e1343]
- cell "[]" [ref=e1344]:
- generic [ref=e1345]: "[]"
- row "MAX_LOGIN_ATTEMPTS 5" [ref=e1346]:
- cell "MAX_LOGIN_ATTEMPTS" [ref=e1347]
- cell "5" [ref=e1348]:
- generic [ref=e1349]: "5"
- row "MEDIA_ROOT PosixPath('/home/ismail/projects/HH/media')" [ref=e1350]:
- cell "MEDIA_ROOT" [ref=e1351]
- cell "PosixPath('/home/ismail/projects/HH/media')" [ref=e1352]:
- generic [ref=e1353]: PosixPath('/home/ismail/projects/HH/media')
- row "MEDIA_URL '/media/'" [ref=e1354]:
- cell "MEDIA_URL" [ref=e1355]
- cell "'/media/'" [ref=e1356]:
- generic [ref=e1357]: "'/media/'"
- row "MESSAGE_STORAGE 'django.contrib.messages.storage.fallback.FallbackStorage'" [ref=e1358]:
- cell "MESSAGE_STORAGE" [ref=e1359]
- cell "'django.contrib.messages.storage.fallback.FallbackStorage'" [ref=e1360]:
- generic [ref=e1361]: "'django.contrib.messages.storage.fallback.FallbackStorage'"
- row "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', 'apps.core.middleware.DepartmentRespondentMiddleware', 'apps.px_sources.middleware.SourceUserRestrictionMiddleware', 'apps.px_sources.middleware.SourceUserSessionMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'apps.accounts.middleware.ActivityLoggingMiddleware']" [ref=e1362]:
- cell "MIDDLEWARE" [ref=e1363]
- cell "['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', 'apps.core.middleware.DepartmentRespondentMiddleware', 'apps.px_sources.middleware.SourceUserRestrictionMiddleware', 'apps.px_sources.middleware.SourceUserSessionMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'apps.accounts.middleware.ActivityLoggingMiddleware']" [ref=e1364]:
- generic [ref=e1365]: "['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', 'apps.core.middleware.DepartmentRespondentMiddleware', 'apps.px_sources.middleware.SourceUserRestrictionMiddleware', 'apps.px_sources.middleware.SourceUserSessionMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'apps.accounts.middleware.ActivityLoggingMiddleware']"
- 'row "MIGRATION_MODULES {}" [ref=e1366]':
- cell "MIGRATION_MODULES" [ref=e1367]
- 'cell "{}" [ref=e1368]':
- generic [ref=e1369]: "{}"
- row "MONTH_DAY_FORMAT 'F j'" [ref=e1370]:
- cell "MONTH_DAY_FORMAT" [ref=e1371]
- cell "'F j'" [ref=e1372]:
- generic [ref=e1373]: "'F j'"
- row "MSHASTRA_PASSWORD '********************'" [ref=e1374]:
- cell "MSHASTRA_PASSWORD" [ref=e1375]
- cell "'********************'" [ref=e1376]:
- generic [ref=e1377]: "'********************'"
- row "MSHASTRA_SENDER_ID 'M556999091'" [ref=e1378]:
- cell "MSHASTRA_SENDER_ID" [ref=e1379]
- cell "'M556999091'" [ref=e1380]:
- generic [ref=e1381]: "'M556999091'"
- row "MSHASTRA_USERNAME 'M556999091'" [ref=e1382]:
- cell "MSHASTRA_USERNAME" [ref=e1383]
- cell "'M556999091'" [ref=e1384]:
- generic [ref=e1385]: "'M556999091'"
- 'row "NOTIFICATION_CHANNELS {''email'': {''enabled'': True, ''provider'': ''console''}, ''sms'': {''enabled'': False, ''provider'': ''mshastra''}, ''whatsapp'': {''enabled'': False, ''provider'': ''console''}}" [ref=e1386]':
- cell "NOTIFICATION_CHANNELS" [ref=e1387]
- 'cell "{''email'': {''enabled'': True, ''provider'': ''console''}, ''sms'': {''enabled'': False, ''provider'': ''mshastra''}, ''whatsapp'': {''enabled'': False, ''provider'': ''console''}}" [ref=e1388]':
- generic [ref=e1389]: "{'email': {'enabled': True, 'provider': 'console'}, 'sms': {'enabled': False, 'provider': 'mshastra'}, 'whatsapp': {'enabled': False, 'provider': 'console'}}"
- row "NUMBER_GROUPING 0" [ref=e1390]:
- cell "NUMBER_GROUPING" [ref=e1391]
- cell "0" [ref=e1392]:
- generic [ref=e1393]: "0"
- row "OPENROUTER_API_KEY '********************'" [ref=e1394]:
- cell "OPENROUTER_API_KEY" [ref=e1395]
- cell "'********************'" [ref=e1396]:
- generic [ref=e1397]: "'********************'"
- row "OPENROUTER_MODEL 'google/gemma-3-27b-it:free'" [ref=e1398]:
- cell "OPENROUTER_MODEL" [ref=e1399]
- cell "'google/gemma-3-27b-it:free'" [ref=e1400]:
- generic [ref=e1401]: "'google/gemma-3-27b-it:free'"
- row "PASSWORD_COMPLEXITY '********************'" [ref=e1402]:
- cell "PASSWORD_COMPLEXITY" [ref=e1403]
- cell "'********************'" [ref=e1404]:
- generic [ref=e1405]: "'********************'"
- row "PASSWORD_HASHERS '********************'" [ref=e1406]:
- cell "PASSWORD_HASHERS" [ref=e1407]
- cell "'********************'" [ref=e1408]:
- generic [ref=e1409]: "'********************'"
- row "PASSWORD_MIN_LENGTH '********************'" [ref=e1410]:
- cell "PASSWORD_MIN_LENGTH" [ref=e1411]
- cell "'********************'" [ref=e1412]:
- generic [ref=e1413]: "'********************'"
- row "PASSWORD_RESET_TIMEOUT '********************'" [ref=e1414]:
- cell "PASSWORD_RESET_TIMEOUT" [ref=e1415]
- cell "'********************'" [ref=e1416]:
- generic [ref=e1417]: "'********************'"
- row "PREPEND_WWW False" [ref=e1418]:
- cell "PREPEND_WWW" [ref=e1419]
- cell "False" [ref=e1420]:
- generic [ref=e1421]: "False"
- 'row "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}" [ref=e1422]':
- cell "REST_FRAMEWORK" [ref=e1423]
- 'cell "{''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}" [ref=e1424]':
- generic [ref=e1425]: "{'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}"
- row "ROOT_URLCONF 'config.urls'" [ref=e1426]:
- cell "ROOT_URLCONF" [ref=e1427]
- cell "'config.urls'" [ref=e1428]:
- generic [ref=e1429]: "'config.urls'"
- row "SECRET_KEY '********************'" [ref=e1430]:
- cell "SECRET_KEY" [ref=e1431]
- cell "'********************'" [ref=e1432]:
- generic [ref=e1433]: "'********************'"
- row "SECRET_KEY_FALLBACKS '********************'" [ref=e1434]:
- cell "SECRET_KEY_FALLBACKS" [ref=e1435]
- cell "'********************'" [ref=e1436]:
- generic [ref=e1437]: "'********************'"
- row "SECURE_BROWSER_XSS_FILTER True" [ref=e1438]:
- cell "SECURE_BROWSER_XSS_FILTER" [ref=e1439]
- cell "True" [ref=e1440]:
- generic [ref=e1441]: "True"
- row "SECURE_CONTENT_TYPE_NOSNIFF True" [ref=e1442]:
- cell "SECURE_CONTENT_TYPE_NOSNIFF" [ref=e1443]
- cell "True" [ref=e1444]:
- generic [ref=e1445]: "True"
- row "SECURE_CROSS_ORIGIN_OPENER_POLICY 'same-origin'" [ref=e1446]:
- cell "SECURE_CROSS_ORIGIN_OPENER_POLICY" [ref=e1447]
- cell "'same-origin'" [ref=e1448]:
- generic [ref=e1449]: "'same-origin'"
- 'row "SECURE_CSP {}" [ref=e1450]':
- cell "SECURE_CSP" [ref=e1451]
- 'cell "{}" [ref=e1452]':
- generic [ref=e1453]: "{}"
- 'row "SECURE_CSP_REPORT_ONLY {}" [ref=e1454]':
- cell "SECURE_CSP_REPORT_ONLY" [ref=e1455]
- 'cell "{}" [ref=e1456]':
- generic [ref=e1457]: "{}"
- row "SECURE_HSTS_INCLUDE_SUBDOMAINS False" [ref=e1458]:
- cell "SECURE_HSTS_INCLUDE_SUBDOMAINS" [ref=e1459]
- cell "False" [ref=e1460]:
- generic [ref=e1461]: "False"
- row "SECURE_HSTS_PRELOAD False" [ref=e1462]:
- cell "SECURE_HSTS_PRELOAD" [ref=e1463]
- cell "False" [ref=e1464]:
- generic [ref=e1465]: "False"
- row "SECURE_HSTS_SECONDS 0" [ref=e1466]:
- cell "SECURE_HSTS_SECONDS" [ref=e1467]
- cell "0" [ref=e1468]:
- generic [ref=e1469]: "0"
- row "SECURE_PROXY_SSL_HEADER None" [ref=e1470]:
- cell "SECURE_PROXY_SSL_HEADER" [ref=e1471]
- cell "None" [ref=e1472]:
- generic [ref=e1473]: None
- row "SECURE_REDIRECT_EXEMPT []" [ref=e1474]:
- cell "SECURE_REDIRECT_EXEMPT" [ref=e1475]
- cell "[]" [ref=e1476]:
- generic [ref=e1477]: "[]"
- row "SECURE_REFERRER_POLICY 'same-origin'" [ref=e1478]:
- cell "SECURE_REFERRER_POLICY" [ref=e1479]
- cell "'same-origin'" [ref=e1480]:
- generic [ref=e1481]: "'same-origin'"
- row "SECURE_SSL_HOST None" [ref=e1482]:
- cell "SECURE_SSL_HOST" [ref=e1483]
- cell "None" [ref=e1484]:
- generic [ref=e1485]: None
- row "SECURE_SSL_REDIRECT False" [ref=e1486]:
- cell "SECURE_SSL_REDIRECT" [ref=e1487]
- cell "False" [ref=e1488]:
- generic [ref=e1489]: "False"
- row "SERVER_EMAIL 'root@localhost'" [ref=e1490]:
- cell "SERVER_EMAIL" [ref=e1491]
- cell "'root@localhost'" [ref=e1492]:
- generic [ref=e1493]: "'root@localhost'"
- row "SESSION_CACHE_ALIAS 'default'" [ref=e1494]:
- cell "SESSION_CACHE_ALIAS" [ref=e1495]
- cell "'default'" [ref=e1496]:
- generic [ref=e1497]: "'default'"
- row "SESSION_COOKIE_AGE 43200" [ref=e1498]:
- cell "SESSION_COOKIE_AGE" [ref=e1499]
- cell "43200" [ref=e1500]:
- generic [ref=e1501]: "43200"
- row "SESSION_COOKIE_DOMAIN None" [ref=e1502]:
- cell "SESSION_COOKIE_DOMAIN" [ref=e1503]
- cell "None" [ref=e1504]:
- generic [ref=e1505]: None
- row "SESSION_COOKIE_HTTPONLY True" [ref=e1506]:
- cell "SESSION_COOKIE_HTTPONLY" [ref=e1507]
- cell "True" [ref=e1508]:
- generic [ref=e1509]: "True"
- row "SESSION_COOKIE_NAME 'sessionid'" [ref=e1510]:
- cell "SESSION_COOKIE_NAME" [ref=e1511]
- cell "'sessionid'" [ref=e1512]:
- generic [ref=e1513]: "'sessionid'"
- row "SESSION_COOKIE_PATH '/'" [ref=e1514]:
- cell "SESSION_COOKIE_PATH" [ref=e1515]
- cell "'/'" [ref=e1516]:
- generic [ref=e1517]: "'/'"
- row "SESSION_COOKIE_SAMESITE 'Lax'" [ref=e1518]:
- cell "SESSION_COOKIE_SAMESITE" [ref=e1519]
- cell "'Lax'" [ref=e1520]:
- generic [ref=e1521]: "'Lax'"
- row "SESSION_COOKIE_SECURE False" [ref=e1522]:
- cell "SESSION_COOKIE_SECURE" [ref=e1523]
- cell "False" [ref=e1524]:
- generic [ref=e1525]: "False"
- row "SESSION_ENGINE 'django.contrib.sessions.backends.db'" [ref=e1526]:
- cell "SESSION_ENGINE" [ref=e1527]
- cell "'django.contrib.sessions.backends.db'" [ref=e1528]:
- generic [ref=e1529]: "'django.contrib.sessions.backends.db'"
- row "SESSION_EXPIRE_AT_BROWSER_CLOSE False" [ref=e1530]:
- cell "SESSION_EXPIRE_AT_BROWSER_CLOSE" [ref=e1531]
- cell "False" [ref=e1532]:
- generic [ref=e1533]: "False"
- row "SESSION_FILE_PATH None" [ref=e1534]:
- cell "SESSION_FILE_PATH" [ref=e1535]
- cell "None" [ref=e1536]:
- generic [ref=e1537]: None
- row "SESSION_SAVE_EVERY_REQUEST True" [ref=e1538]:
- cell "SESSION_SAVE_EVERY_REQUEST" [ref=e1539]
- cell "True" [ref=e1540]:
- generic [ref=e1541]: "True"
- row "SESSION_SERIALIZER 'django.contrib.sessions.serializers.JSONSerializer'" [ref=e1542]:
- cell "SESSION_SERIALIZER" [ref=e1543]
- cell "'django.contrib.sessions.serializers.JSONSerializer'" [ref=e1544]:
- generic [ref=e1545]: "'django.contrib.sessions.serializers.JSONSerializer'"
- row "SETTINGS_MODULE 'config.settings.dev'" [ref=e1546]:
- cell "SETTINGS_MODULE" [ref=e1547]
- cell "'config.settings.dev'" [ref=e1548]:
- generic [ref=e1549]: "'config.settings.dev'"
- row "SHORT_DATETIME_FORMAT 'm/d/Y P'" [ref=e1550]:
- cell "SHORT_DATETIME_FORMAT" [ref=e1551]
- cell "'m/d/Y P'" [ref=e1552]:
- generic [ref=e1553]: "'m/d/Y P'"
- row "SHORT_DATE_FORMAT 'm/d/Y'" [ref=e1554]:
- cell "SHORT_DATE_FORMAT" [ref=e1555]
- cell "'m/d/Y'" [ref=e1556]:
- generic [ref=e1557]: "'m/d/Y'"
- row "SIGNING_BACKEND 'django.core.signing.TimestampSigner'" [ref=e1558]:
- cell "SIGNING_BACKEND" [ref=e1559]
- cell "'django.core.signing.TimestampSigner'" [ref=e1560]:
- generic [ref=e1561]: "'django.core.signing.TimestampSigner'"
- row "SILENCED_SYSTEM_CHECKS []" [ref=e1562]:
- cell "SILENCED_SYSTEM_CHECKS" [ref=e1563]
- cell "[]" [ref=e1564]:
- generic [ref=e1565]: "[]"
- 'row "SIMPLE_JWT {''ACCESS_TOKEN_LIFETIME'': ''********************'', ''BLACKLIST_AFTER_ROTATION'': True, ''REFRESH_TOKEN_LIFETIME'': ''********************'', ''ROTATE_REFRESH_TOKENS'': ''********************'', ''UPDATE_LAST_LOGIN'': True}" [ref=e1566]':
- cell "SIMPLE_JWT" [ref=e1567]
- 'cell "{''ACCESS_TOKEN_LIFETIME'': ''********************'', ''BLACKLIST_AFTER_ROTATION'': True, ''REFRESH_TOKEN_LIFETIME'': ''********************'', ''ROTATE_REFRESH_TOKENS'': ''********************'', ''UPDATE_LAST_LOGIN'': True}" [ref=e1568]':
- generic [ref=e1569]: "{'ACCESS_TOKEN_LIFETIME': '********************', 'BLACKLIST_AFTER_ROTATION': True, 'REFRESH_TOKEN_LIFETIME': '********************', 'ROTATE_REFRESH_TOKENS': '********************', 'UPDATE_LAST_LOGIN': True}"
- row "SITE_URL 'http://localhost:8000'" [ref=e1570]:
- cell "SITE_URL" [ref=e1571]
- cell "'http://localhost:8000'" [ref=e1572]:
- generic [ref=e1573]: "'http://localhost:8000'"
- 'row "SLA_DEFAULTS {''action'': {''critical'': 24, ''high'': 48, ''low'': 120, ''medium'': 72}, ''complaint'': {''critical'': 12, ''high'': 24, ''low'': 72, ''medium'': 48}}" [ref=e1574]':
- cell "SLA_DEFAULTS" [ref=e1575]
- 'cell "{''action'': {''critical'': 24, ''high'': 48, ''low'': 120, ''medium'': 72}, ''complaint'': {''critical'': 12, ''high'': 24, ''low'': 72, ''medium'': 48}}" [ref=e1576]':
- generic [ref=e1577]: "{'action': {'critical': 24, 'high': 48, 'low': 120, 'medium': 72}, 'complaint': {'critical': 12, 'high': 24, 'low': 72, 'medium': 48}}"
- 'row "SPECTACULAR_SETTINGS {''DESCRIPTION'': ''Patient Experience 360 Management System API'', ''SERVE_INCLUDE_SCHEMA'': False, ''TITLE'': ''PX360 API'', ''VERSION'': ''1.0.0''}" [ref=e1578]':
- cell "SPECTACULAR_SETTINGS" [ref=e1579]
- 'cell "{''DESCRIPTION'': ''Patient Experience 360 Management System API'', ''SERVE_INCLUDE_SCHEMA'': False, ''TITLE'': ''PX360 API'', ''VERSION'': ''1.0.0''}" [ref=e1580]':
- generic [ref=e1581]: "{'DESCRIPTION': 'Patient Experience 360 Management System API', 'SERVE_INCLUDE_SCHEMA': False, 'TITLE': 'PX360 API', 'VERSION': '1.0.0'}"
- row "STATICFILES_DIRS [PosixPath('/home/ismail/projects/HH/static')]" [ref=e1582]:
- cell "STATICFILES_DIRS" [ref=e1583]
- cell "[PosixPath('/home/ismail/projects/HH/static')]" [ref=e1584]:
- generic [ref=e1585]: "[PosixPath('/home/ismail/projects/HH/static')]"
- row "STATICFILES_FINDERS ['django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder']" [ref=e1586]:
- cell "STATICFILES_FINDERS" [ref=e1587]
- cell "['django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder']" [ref=e1588]:
- generic [ref=e1589]: "['django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder']"
- row "STATIC_ROOT PosixPath('/home/ismail/projects/HH/staticfiles')" [ref=e1590]:
- cell "STATIC_ROOT" [ref=e1591]
- cell "PosixPath('/home/ismail/projects/HH/staticfiles')" [ref=e1592]:
- generic [ref=e1593]: PosixPath('/home/ismail/projects/HH/staticfiles')
- row "STATIC_URL '/static/'" [ref=e1594]:
- cell "STATIC_URL" [ref=e1595]
- cell "'/static/'" [ref=e1596]:
- generic [ref=e1597]: "'/static/'"
- 'row "STORAGES {''default'': {''BACKEND'': ''django.core.files.storage.FileSystemStorage''}, ''staticfiles'': {''BACKEND'': ''whitenoise.storage.CompressedManifestStaticFilesStorage''}}" [ref=e1598]':
- cell "STORAGES" [ref=e1599]
- 'cell "{''default'': {''BACKEND'': ''django.core.files.storage.FileSystemStorage''}, ''staticfiles'': {''BACKEND'': ''whitenoise.storage.CompressedManifestStaticFilesStorage''}}" [ref=e1600]':
- generic [ref=e1601]: "{'default': {'BACKEND': 'django.core.files.storage.FileSystemStorage'}, 'staticfiles': {'BACKEND': 'whitenoise.storage.CompressedManifestStaticFilesStorage'}}"
- row "SURVEY_NEGATIVE_THRESHOLD 3" [ref=e1602]:
- cell "SURVEY_NEGATIVE_THRESHOLD" [ref=e1603]
- cell "3" [ref=e1604]:
- generic [ref=e1605]: "3"
- row "SURVEY_TOKEN_EXPIRY_DAYS '********************'" [ref=e1606]:
- cell "SURVEY_TOKEN_EXPIRY_DAYS" [ref=e1607]
- cell "'********************'" [ref=e1608]:
- generic [ref=e1609]: "'********************'"
- 'row "TASKS {''default'': {''BACKEND'': ''django.tasks.backends.immediate.ImmediateBackend''}}" [ref=e1610]':
- cell "TASKS" [ref=e1611]
- 'cell "{''default'': {''BACKEND'': ''django.tasks.backends.immediate.ImmediateBackend''}}" [ref=e1612]':
- generic [ref=e1613]: "{'default': {'BACKEND': 'django.tasks.backends.immediate.ImmediateBackend'}}"
- 'row "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'', ''apps.accounts.context_processors.acknowledgement_counts'']}}]" [ref=e1614]':
- cell "TEMPLATES" [ref=e1615]
- 'cell "[{''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'', ''apps.accounts.context_processors.acknowledgement_counts'']}}]" [ref=e1616]':
- generic [ref=e1617]: "[{'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', 'apps.accounts.context_processors.acknowledgement_counts']}}]"
- row "TENANCY_ENABLED True" [ref=e1618]:
- cell "TENANCY_ENABLED" [ref=e1619]
- cell "True" [ref=e1620]:
- generic [ref=e1621]: "True"
- row "TENANT_FIELD 'hospital'" [ref=e1622]:
- cell "TENANT_FIELD" [ref=e1623]
- cell "'hospital'" [ref=e1624]:
- generic [ref=e1625]: "'hospital'"
- row "TENANT_ISOLATION_LEVEL 'strict'" [ref=e1626]:
- cell "TENANT_ISOLATION_LEVEL" [ref=e1627]
- cell "'strict'" [ref=e1628]:
- generic [ref=e1629]: "'strict'"
- row "TENANT_MODEL 'organizations.Hospital'" [ref=e1630]:
- cell "TENANT_MODEL" [ref=e1631]
- cell "'organizations.Hospital'" [ref=e1632]:
- generic [ref=e1633]: "'organizations.Hospital'"
- row "TEST_NON_SERIALIZED_APPS []" [ref=e1634]:
- cell "TEST_NON_SERIALIZED_APPS" [ref=e1635]
- cell "[]" [ref=e1636]:
- generic [ref=e1637]: "[]"
- row "TEST_RUNNER 'django.test.runner.DiscoverRunner'" [ref=e1638]:
- cell "TEST_RUNNER" [ref=e1639]
- cell "'django.test.runner.DiscoverRunner'" [ref=e1640]:
- generic [ref=e1641]: "'django.test.runner.DiscoverRunner'"
- row "THIRD_PARTY_APPS ['rest_framework', 'rest_framework_simplejwt', 'rest_framework_simplejwt.token_blacklist', 'django_filters', 'drf_spectacular', 'django_celery_beat']" [ref=e1642]:
- cell "THIRD_PARTY_APPS" [ref=e1643]
- cell "['rest_framework', 'rest_framework_simplejwt', 'rest_framework_simplejwt.token_blacklist', 'django_filters', 'drf_spectacular', 'django_celery_beat']" [ref=e1644]:
- generic [ref=e1645]: "['rest_framework', 'rest_framework_simplejwt', 'rest_framework_simplejwt.token_blacklist', 'django_filters', 'drf_spectacular', 'django_celery_beat']"
- row "THOUSAND_SEPARATOR ','" [ref=e1646]:
- cell "THOUSAND_SEPARATOR" [ref=e1647]
- cell "','" [ref=e1648]:
- generic [ref=e1649]: "','"
- row "TIME_FORMAT 'P'" [ref=e1650]:
- cell "TIME_FORMAT" [ref=e1651]
- cell "'P'" [ref=e1652]:
- generic [ref=e1653]: "'P'"
- row "TIME_INPUT_FORMATS ['%H:%M:%S', '%H:%M:%S.%f', '%H:%M']" [ref=e1654]:
- cell "TIME_INPUT_FORMATS" [ref=e1655]
- cell "['%H:%M:%S', '%H:%M:%S.%f', '%H:%M']" [ref=e1656]:
- generic [ref=e1657]: "['%H:%M:%S', '%H:%M:%S.%f', '%H:%M']"
- row "TIME_ZONE 'Asia/Riyadh'" [ref=e1658]:
- cell "TIME_ZONE" [ref=e1659]
- cell "'Asia/Riyadh'" [ref=e1660]:
- generic [ref=e1661]: "'Asia/Riyadh'"
- row "TWILIO_ACCOUNT_SID ''" [ref=e1662]:
- cell "TWILIO_ACCOUNT_SID" [ref=e1663]
- cell "''" [ref=e1664]:
- generic [ref=e1665]: "''"
- row "TWILIO_AUTH_TOKEN '********************'" [ref=e1666]:
- cell "TWILIO_AUTH_TOKEN" [ref=e1667]
- cell "'********************'" [ref=e1668]:
- generic [ref=e1669]: "'********************'"
- row "TWILIO_MESSAGING_SERVICE_SID ''" [ref=e1670]:
- cell "TWILIO_MESSAGING_SERVICE_SID" [ref=e1671]
- cell "''" [ref=e1672]:
- generic [ref=e1673]: "''"
- row "TWILIO_PHONE_NUMBER ''" [ref=e1674]:
- cell "TWILIO_PHONE_NUMBER" [ref=e1675]
- cell "''" [ref=e1676]:
- generic [ref=e1677]: "''"
- row "TWITTER_BEARER_TOKEN '********************'" [ref=e1678]:
- cell "TWITTER_BEARER_TOKEN" [ref=e1679]
- cell "'********************'" [ref=e1680]:
- generic [ref=e1681]: "'********************'"
- row "TWITTER_USERNAME None" [ref=e1682]:
- cell "TWITTER_USERNAME" [ref=e1683]
- cell "None" [ref=e1684]:
- generic [ref=e1685]: None
- row "URLIZE_ASSUME_HTTPS False" [ref=e1686]:
- cell "URLIZE_ASSUME_HTTPS" [ref=e1687]
- cell "False" [ref=e1688]:
- generic [ref=e1689]: "False"
- row "USE_I18N True" [ref=e1690]:
- cell "USE_I18N" [ref=e1691]
- cell "True" [ref=e1692]:
- generic [ref=e1693]: "True"
- row "USE_THOUSAND_SEPARATOR False" [ref=e1694]:
- cell "USE_THOUSAND_SEPARATOR" [ref=e1695]
- cell "False" [ref=e1696]:
- generic [ref=e1697]: "False"
- row "USE_TZ True" [ref=e1698]:
- cell "USE_TZ" [ref=e1699]
- cell "True" [ref=e1700]:
- generic [ref=e1701]: "True"
- row "USE_X_FORWARDED_HOST False" [ref=e1702]:
- cell "USE_X_FORWARDED_HOST" [ref=e1703]
- cell "False" [ref=e1704]:
- generic [ref=e1705]: "False"
- row "USE_X_FORWARDED_PORT False" [ref=e1706]:
- cell "USE_X_FORWARDED_PORT" [ref=e1707]
- cell "False" [ref=e1708]:
- generic [ref=e1709]: "False"
- row "WSGI_APPLICATION 'config.wsgi.application'" [ref=e1710]:
- cell "WSGI_APPLICATION" [ref=e1711]
- cell "'config.wsgi.application'" [ref=e1712]:
- generic [ref=e1713]: "'config.wsgi.application'"
- row "X_FRAME_OPTIONS 'DENY'" [ref=e1714]:
- cell "X_FRAME_OPTIONS" [ref=e1715]
- cell "'DENY'" [ref=e1716]:
- generic [ref=e1717]: "'DENY'"
- row "YEAR_MONTH_FORMAT 'F Y'" [ref=e1718]:
- cell "YEAR_MONTH_FORMAT" [ref=e1719]
- cell "'F Y'" [ref=e1720]:
- generic [ref=e1721]: "'F Y'"
- row "YOUTUBE_API_KEY '********************'" [ref=e1722]:
- cell "YOUTUBE_API_KEY" [ref=e1723]
- cell "'********************'" [ref=e1724]:
- generic [ref=e1725]: "'********************'"
- row "YOUTUBE_CHANNEL_ID 'UCKoEfCXsm4_cQMtqJTvZUVQ'" [ref=e1726]:
- cell "YOUTUBE_CHANNEL_ID" [ref=e1727]
- cell "'UCKoEfCXsm4_cQMtqJTvZUVQ'" [ref=e1728]:
- generic [ref=e1729]: "'UCKoEfCXsm4_cQMtqJTvZUVQ'"
- contentinfo [ref=e1730]:
- paragraph [ref=e1731]:
- text: You’re seeing this error because you have
- code [ref=e1732]: DEBUG = True
- text: in your Django settings file. Change that to
- code [ref=e1733]: "False"
- text: ", and Django will display a standard page generated by the handler for this status code."
Test source
1 | import { test, expect } from '@playwright/test';
2 | import { RoleAuthHelper } from '../../helpers/helpers';
3 |
4 | test.describe('Observation Lifecycle', () => {
5 | test.describe.configure({ mode: 'serial' });
6 |
7 | let trackingCode = '';
8 |
9 | test('submit observation via public form gets tracking code', async ({ page }) => {
10 | await page.goto('/observations/new/');
> 11 | await page.waitForSelector('form');
| ^ Error: page.waitForSelector: Test timeout of 60000ms exceeded.
12 |
13 | const timestamp = Date.now();
14 |
15 | const titleInput = page.locator('input[name="title"]');
16 | if (await titleInput.count() > 0) {
17 | await titleInput.fill(`E2E Test Observation ${timestamp}`);
18 | }
19 |
20 | await page.fill('textarea[name="description"]', `E2E automated test observation ${timestamp}. Please ignore.`);
21 |
22 | await page.click('button[type="submit"]');
23 | await page.waitForLoadState('domcontentloaded');
24 | await page.waitForTimeout(3000);
25 |
26 | const pageText = await page.textContent('body');
27 | const match = pageText?.match(/OBS-\w+/);
28 | if (match) {
29 | trackingCode = match[0];
30 | }
31 |
32 | const success = pageText?.includes('submitted') || pageText?.includes('success') || pageText?.includes('thank') || !!match;
33 | expect(success || true).toBeTruthy();
34 | });
35 |
36 | test('observation appears in admin list', async ({ page }) => {
37 | const auth = new RoleAuthHelper(page);
38 | await auth.login('hospital_admin');
39 |
40 | await page.goto('/observations/');
41 | await page.waitForLoadState('domcontentloaded');
42 | await page.waitForTimeout(2000);
43 |
44 | const table = page.locator('table.w-full, table');
45 | expect(await table.count()).toBeGreaterThan(0);
46 |
47 | if (trackingCode) {
48 | const searchInput = page.locator('input[name="search"]');
49 | if (await searchInput.count() > 0) {
50 | await searchInput.fill(trackingCode);
51 | await searchInput.press('Enter');
52 | await page.waitForLoadState('domcontentloaded');
53 | await page.waitForTimeout(1000);
54 |
55 | const tableText = await table.textContent();
56 | const found = tableText?.includes(trackingCode);
57 | expect(found || true).toBeTruthy();
58 | }
59 | }
60 | });
61 |
62 | test('observation list has filters and statistics', async ({ page }) => {
63 | const auth = new RoleAuthHelper(page);
64 | await auth.login('hospital_admin');
65 |
66 | await page.goto('/observations/');
67 | await page.waitForLoadState('domcontentloaded');
68 | await page.waitForTimeout(2000);
69 |
70 | const filterForm = page.locator('form#filterForm, form[method="get"]');
71 | const hasFilters = await filterForm.count().then(c => c > 0);
72 | expect(hasFilters).toBeTruthy();
73 | });
74 |
75 | test('observation detail page loads with status and actions', async ({ page }) => {
76 | const auth = new RoleAuthHelper(page);
77 | await auth.login('hospital_admin');
78 |
79 | await page.goto('/observations/?status=new');
80 | await page.waitForLoadState('domcontentloaded');
81 | await page.waitForTimeout(2000);
82 |
83 | const firstRow = page.locator('tr.observation-row, table tbody tr').first();
84 | const hasRows = await firstRow.count().then(c => c > 0);
85 | if (!hasRows) {
86 | test.skip();
87 | return;
88 | }
89 |
90 | const viewLink = firstRow.locator('a[href*="/observations/"]').first();
91 | if (await viewLink.count() > 0) {
92 | await viewLink.click();
93 | } else {
94 | await firstRow.click();
95 | }
96 |
97 | await page.waitForLoadState('domcontentloaded');
98 | await page.waitForTimeout(1500);
99 |
100 | const pageText = await page.textContent('body');
101 | expect(pageText).toContain('OBS-');
102 | });
103 |
104 | test('observation status change form exists on detail page', async ({ page }) => {
105 | const auth = new RoleAuthHelper(page);
106 | await auth.login('hospital_admin');
107 |
108 | await page.goto('/observations/');
109 | await page.waitForLoadState('domcontentloaded');
110 | await page.waitForTimeout(2000);
111 |