This commit is contained in:
Marwan Alwali 2025-11-06 15:28:37 +03:00
parent 98e13df2f6
commit f2e823c5c3
5 changed files with 278 additions and 72 deletions

Binary file not shown.

View File

@ -84991,3 +84991,234 @@ WARNING 2025-11-06 14:52:05,540 basehttp 82325 6214938624 "GET /.well-known/apps
WARNING 2025-11-06 14:52:05,553 log 82325 6214938624 Not Found: /.well-known/appspecific/com.chrome.devtools.json
WARNING 2025-11-06 14:52:05,553 basehttp 82325 6214938624 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 3165
INFO 2025-11-06 14:52:11,299 basehttp 82325 6214938624 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-06 14:52:41,295 basehttp 82325 6214938624 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
ERROR 2025-11-06 14:52:43,512 tasks 76869 8426217792 Appointment c60c62dc-20a8-4e2a-85e9-96e82744d880 not found
ERROR 2025-11-06 14:52:53,550 tasks 76869 8426217792 Appointment c60c62dc-20a8-4e2a-85e9-96e82744d880 not found
INFO 2025-11-06 14:53:11,300 basehttp 82325 6214938624 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-06 14:53:41,299 basehttp 82325 6214938624 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-06 14:54:11,292 basehttp 82325 6214938624 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
ERROR 2025-11-06 14:54:31,096 tasks 76869 8426217792 Appointment c60c62dc-20a8-4e2a-85e9-96e82744d880 not found
INFO 2025-11-06 14:54:41,299 basehttp 82325 6214938624 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-06 14:55:11,300 basehttp 82325 6214938624 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-06 14:55:41,300 basehttp 82325 6214938624 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
ERROR 2025-11-06 14:55:43,882 tasks 76869 8426217792 Appointment 69dcd286-66b4-4619-9870-fda6fe206ff3 not found
INFO 2025-11-06 14:56:11,299 basehttp 82325 6214938624 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-06 14:56:41,293 basehttp 82325 6214938624 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-06 14:57:11,301 basehttp 82325 6214938624 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
ERROR 2025-11-06 14:57:25,814 tasks 76869 8426217792 Appointment 36b67a10-fe1e-41a7-8f62-0b0ca127c128 not found
INFO 2025-11-06 14:57:41,299 basehttp 82325 6214938624 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-06 14:58:11,294 basehttp 82325 6214938624 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-06 14:58:41,300 basehttp 82325 6214938624 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-06 14:59:11,299 basehttp 82325 6214938624 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-06 14:59:41,301 basehttp 82325 6214938624 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-06 15:00:00,008 tasks 76869 8426217792 Radiology results sync started
INFO 2025-11-06 15:00:00,008 tasks 76869 8426217792 Radiology results sync completed: {'status': 'success', 'new_studies': 0, 'new_reports': 0, 'errors': 0, 'timestamp': '2025-11-06 12:00:00.008395+00:00'}
INFO 2025-11-06 15:00:00,013 tasks 76869 8426217792 Lab results sync started
INFO 2025-11-06 15:00:00,013 tasks 76869 8426217792 Lab results sync completed: {'status': 'success', 'new_results': 0, 'updated_results': 0, 'errors': 0, 'timestamp': '2025-11-06 12:00:00.013443+00:00'}
INFO 2025-11-06 15:00:11,295 basehttp 82325 6214938624 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-06 15:00:41,301 basehttp 82325 6214938624 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-06 15:01:11,301 basehttp 82325 6214938624 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-06 15:01:41,302 basehttp 82325 6214938624 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-06 15:02:11,299 basehttp 82325 6214938624 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-06 15:02:41,298 basehttp 82325 6214938624 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-06 15:03:11,299 basehttp 82325 6214938624 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
ERROR 2025-11-06 15:03:32,068 tasks 76869 8426217792 Appointment f10d4cf7-f909-486f-bc21-6b5ff87374c7 not found
INFO 2025-11-06 15:03:41,300 basehttp 82325 6214938624 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
ERROR 2025-11-06 15:04:11,154 tasks 76869 8426217792 Appointment f10d4cf7-f909-486f-bc21-6b5ff87374c7 not found
INFO 2025-11-06 15:04:11,289 basehttp 82325 6214938624 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-06 15:04:41,301 basehttp 82325 6214938624 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-06 15:05:11,299 basehttp 82325 6214938624 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-06 15:05:41,298 basehttp 82325 6214938624 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
ERROR 2025-11-06 15:05:51,656 tasks 76869 8426217792 Appointment c60c62dc-20a8-4e2a-85e9-96e82744d880 not found
INFO 2025-11-06 15:05:52,338 basehttp 82325 6214938624 "GET /en/notifications/api/dropdown/ HTTP/1.1" 200 1005
INFO 2025-11-06 15:06:08,956 basehttp 82325 6214938624 "GET /en/referrals/a4dcd79c-7eb8-4d89-a723-63b24d5a0fb8/ HTTP/1.1" 200 31609
INFO 2025-11-06 15:06:08,992 basehttp 82325 6214938624 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
ERROR 2025-11-06 15:06:15,806 log 82325 6214938624 Internal Server Error: /en/referrals/a4dcd79c-7eb8-4d89-a723-63b24d5a0fb8/complete/
Traceback (most recent call last):
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
response = get_response(request)
^^^^^^^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 197, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/views/generic/base.py", line 105, in view
return self.dispatch(request, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/contrib/auth/mixins.py", line 73, in dispatch
return super().dispatch(request, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/contrib/auth/mixins.py", line 135, in dispatch
return super().dispatch(request, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/views/generic/base.py", line 144, in dispatch
return handler(request, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/views/generic/edit.py", line 202, in get
return super().get(request, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/views/generic/edit.py", line 142, in get
return self.render_to_response(self.get_context_data())
^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/views/generic/edit.py", line 72, in get_context_data
kwargs["form"] = self.get_form()
^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/views/generic/edit.py", line 36, in get_form
form_class = self.get_form_class()
^^^^^^^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/views/generic/edit.py", line 108, in get_form_class
return model_forms.modelform_factory(model, fields=self.fields)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/forms/models.py", line 654, in modelform_factory
return type(form)(class_name, (form,), form_class_attrs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/forms/models.py", line 334, in __new__
raise FieldError(message)
django.core.exceptions.FieldError: Unknown field(s) (completion_notes) specified for Referral
ERROR 2025-11-06 15:06:15,807 basehttp 82325 6214938624 "GET /en/referrals/a4dcd79c-7eb8-4d89-a723-63b24d5a0fb8/complete/ HTTP/1.1" 500 119631
WARNING 2025-11-06 15:06:15,840 log 82325 6214938624 Not Found: /favicon.ico
WARNING 2025-11-06 15:06:15,840 basehttp 82325 6214938624 "GET /favicon.ico HTTP/1.1" 404 3054
INFO 2025-11-06 15:06:54,510 autoreload 82325 8426217792 /Users/marwanalwali/AgdarCentre/referrals/views.py changed, reloading.
INFO 2025-11-06 15:06:54,935 autoreload 90704 8426217792 Watching for file changes with StatReloader
ERROR 2025-11-06 15:07:07,858 log 90704 6202109952 Internal Server Error: /en/referrals/a4dcd79c-7eb8-4d89-a723-63b24d5a0fb8/complete/
Traceback (most recent call last):
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
response = get_response(request)
^^^^^^^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 220, in _get_response
response = response.render()
^^^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/template/response.py", line 114, in render
self.content = self.rendered_content
^^^^^^^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/template/response.py", line 90, in rendered_content
template = self.resolve_template(self.template_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/template/response.py", line 72, in resolve_template
return select_template(template, using=self.using)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/template/loader.py", line 47, in select_template
raise TemplateDoesNotExist(", ".join(template_name_list), chain=chain)
django.template.exceptions.TemplateDoesNotExist: referrals/referral_complete.html
ERROR 2025-11-06 15:07:07,858 basehttp 90704 6202109952 "GET /en/referrals/a4dcd79c-7eb8-4d89-a723-63b24d5a0fb8/complete/ HTTP/1.1" 500 94029
ERROR 2025-11-06 15:07:25,201 tasks 76869 8426217792 Appointment f10d4cf7-f909-486f-bc21-6b5ff87374c7 not found
INFO 2025-11-06 15:07:50,027 autoreload 90704 8426217792 /Users/marwanalwali/AgdarCentre/referrals/views.py changed, reloading.
INFO 2025-11-06 15:07:50,303 autoreload 91192 8426217792 Watching for file changes with StatReloader
INFO 2025-11-06 15:08:03,872 basehttp 91192 6171914240 "GET /en/referrals/a4dcd79c-7eb8-4d89-a723-63b24d5a0fb8/complete/ HTTP/1.1" 200 36263
INFO 2025-11-06 15:08:03,884 basehttp 91192 6171914240 "GET /static/plugins/select2/css/select2.min.css HTTP/1.1" 200 16263
INFO 2025-11-06 15:08:03,885 basehttp 91192 6188740608 "GET /static/plugins/select2/dist/js/select2.min.js HTTP/1.1" 200 70851
INFO 2025-11-06 15:08:03,905 basehttp 91192 6188740608 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-06 15:08:19,489 basehttp 91192 6188740608 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-06 15:08:20,634 basehttp 91192 6188740608 "GET /en/referrals/a4dcd79c-7eb8-4d89-a723-63b24d5a0fb8/ HTTP/1.1" 200 31609
INFO 2025-11-06 15:08:20,667 basehttp 91192 6188740608 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-06 15:08:22,399 basehttp 91192 6188740608 "GET /en/referrals/a4dcd79c-7eb8-4d89-a723-63b24d5a0fb8/complete/ HTTP/1.1" 200 36263
INFO 2025-11-06 15:08:22,435 basehttp 91192 6188740608 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
ERROR 2025-11-06 15:08:22,765 tasks 76869 8426217792 Appointment f10d4cf7-f909-486f-bc21-6b5ff87374c7 not found
ERROR 2025-11-06 15:08:41,238 tasks 76869 8426217792 Appointment b0c611dd-314f-4f02-8011-ac5519bdd525 not found
INFO 2025-11-06 15:08:50,677 basehttp 91192 6188740608 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-06 15:09:20,680 basehttp 91192 6188740608 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
ERROR 2025-11-06 15:09:45,707 tasks 76869 8426217792 Appointment c60c62dc-20a8-4e2a-85e9-96e82744d880 not found
INFO 2025-11-06 15:09:50,681 basehttp 91192 6188740608 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-06 15:10:20,668 basehttp 91192 6188740608 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-06 15:10:41,026 autoreload 91192 8426217792 /Users/marwanalwali/AgdarCentre/referrals/views.py changed, reloading.
INFO 2025-11-06 15:10:41,369 autoreload 92576 8426217792 Watching for file changes with StatReloader
ERROR 2025-11-06 15:10:47,597 tasks 70301 8426217792 Appointment b7386e99-0cbb-420c-9fa8-13a2200e5715 not found
ERROR 2025-11-06 15:10:47,597 tasks 76869 8426217792 Appointment b5a77fcd-5a4b-4e96-9a68-fd3018073de1 not found
INFO 2025-11-06 15:10:50,675 basehttp 92576 6127595520 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-06 15:11:05,674 basehttp 92576 6127595520 "GET /en/referrals/a4dcd79c-7eb8-4d89-a723-63b24d5a0fb8/ HTTP/1.1" 200 31609
INFO 2025-11-06 15:11:05,711 basehttp 92576 6127595520 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-06 15:11:06,651 basehttp 92576 6127595520 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-06 15:11:07,329 basehttp 92576 6127595520 "GET /en/referrals/ HTTP/1.1" 200 60832
INFO 2025-11-06 15:11:07,368 basehttp 92576 6127595520 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-06 15:11:10,699 basehttp 92576 6127595520 "GET /en/referrals/a4dcd79c-7eb8-4d89-a723-63b24d5a0fb8/ HTTP/1.1" 200 31609
INFO 2025-11-06 15:11:10,726 basehttp 92576 6127595520 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-06 15:11:11,875 basehttp 92576 6127595520 "GET /en/referrals/a4dcd79c-7eb8-4d89-a723-63b24d5a0fb8/complete/ HTTP/1.1" 302 0
INFO 2025-11-06 15:11:11,884 basehttp 92576 6127595520 "GET /en/referrals/a4dcd79c-7eb8-4d89-a723-63b24d5a0fb8/ HTTP/1.1" 200 31768
INFO 2025-11-06 15:11:11,914 basehttp 92576 6127595520 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-06 15:11:18,569 basehttp 92576 6127595520 "GET /en/dashboard/ HTTP/1.1" 200 54259
INFO 2025-11-06 15:11:18,578 basehttp 92576 6127595520 "GET /static/plugins/apexcharts/dist/apexcharts.min.js HTTP/1.1" 200 574941
INFO 2025-11-06 15:11:18,592 basehttp 92576 6127595520 "GET /static/css/saudiriyalsymbol.woff2 HTTP/1.1" 200 720
INFO 2025-11-06 15:11:18,607 basehttp 92576 6127595520 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
ERROR 2025-11-06 15:11:34,554 tasks 76869 8426217792 Appointment c60c62dc-20a8-4e2a-85e9-96e82744d880 not found
INFO 2025-11-06 15:11:48,616 basehttp 92576 6127595520 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-06 15:12:17,369 basehttp 92576 6127595520 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-06 15:12:29,519 basehttp 92576 6127595520 "GET /en/referrals/a4dcd79c-7eb8-4d89-a723-63b24d5a0fb8/ HTTP/1.1" 200 31448
INFO 2025-11-06 15:12:30,365 basehttp 92576 6127595520 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-06 15:12:31,541 basehttp 92576 6127595520 "GET /en/referrals/ HTTP/1.1" 200 60834
INFO 2025-11-06 15:12:31,579 basehttp 92576 6127595520 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-06 15:12:35,674 basehttp 92576 6127595520 "GET /en/referrals/038d9aa4-dbce-4fe3-92f5-e9cc4ac9cb11/ HTTP/1.1" 200 32014
INFO 2025-11-06 15:12:35,700 basehttp 92576 6127595520 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
ERROR 2025-11-06 15:12:36,949 log 92576 6127595520 Internal Server Error: /en/referrals/038d9aa4-dbce-4fe3-92f5-e9cc4ac9cb11/accept/
Traceback (most recent call last):
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
response = get_response(request)
^^^^^^^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 220, in _get_response
response = response.render()
^^^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/template/response.py", line 114, in render
self.content = self.rendered_content
^^^^^^^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/template/response.py", line 90, in rendered_content
template = self.resolve_template(self.template_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/template/response.py", line 72, in resolve_template
return select_template(template, using=self.using)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/template/loader.py", line 47, in select_template
raise TemplateDoesNotExist(", ".join(template_name_list), chain=chain)
django.template.exceptions.TemplateDoesNotExist: referrals/referral_accept.html
ERROR 2025-11-06 15:12:36,950 basehttp 92576 6127595520 "GET /en/referrals/038d9aa4-dbce-4fe3-92f5-e9cc4ac9cb11/accept/ HTTP/1.1" 500 93768
INFO 2025-11-06 15:14:05,343 autoreload 92576 8426217792 /Users/marwanalwali/AgdarCentre/referrals/views.py changed, reloading.
INFO 2025-11-06 15:14:05,938 autoreload 94289 8426217792 Watching for file changes with StatReloader
INFO 2025-11-06 15:14:15,636 basehttp 94289 6190821376 "GET /en/referrals/038d9aa4-dbce-4fe3-92f5-e9cc4ac9cb11/accept/ HTTP/1.1" 302 0
INFO 2025-11-06 15:14:15,658 basehttp 94289 6190821376 "GET /en/referrals/038d9aa4-dbce-4fe3-92f5-e9cc4ac9cb11/ HTTP/1.1" 200 32365
INFO 2025-11-06 15:14:15,692 basehttp 94289 6190821376 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-06 15:14:21,372 basehttp 94289 6190821376 "GET /en/referrals/038d9aa4-dbce-4fe3-92f5-e9cc4ac9cb11/complete/ HTTP/1.1" 302 0
INFO 2025-11-06 15:14:21,383 basehttp 94289 6190821376 "GET /en/referrals/038d9aa4-dbce-4fe3-92f5-e9cc4ac9cb11/ HTTP/1.1" 200 32202
INFO 2025-11-06 15:14:21,415 basehttp 94289 6190821376 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-06 15:14:36,134 basehttp 94289 6190821376 "GET /en/referrals/ HTTP/1.1" 200 60610
INFO 2025-11-06 15:14:36,167 basehttp 94289 6190821376 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-06 15:14:42,339 basehttp 94289 6190821376 "GET /en/referrals/65e40b91-cfa3-4eb8-97db-1e82392a6169/ HTTP/1.1" 200 31017
INFO 2025-11-06 15:14:42,368 basehttp 94289 6190821376 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-06 15:15:01,526 basehttp 94289 6190821376 "GET /en/referrals/0df8ecaa-4174-47cd-9fcf-27969dbfc513/ HTTP/1.1" 200 32042
INFO 2025-11-06 15:15:01,561 basehttp 94289 6190821376 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-06 15:15:04,911 basehttp 94289 6190821376 "GET /en/referrals/0df8ecaa-4174-47cd-9fcf-27969dbfc513/accept/ HTTP/1.1" 302 0
INFO 2025-11-06 15:15:04,921 basehttp 94289 6190821376 "GET /en/referrals/0df8ecaa-4174-47cd-9fcf-27969dbfc513/ HTTP/1.1" 200 32393
INFO 2025-11-06 15:15:04,944 basehttp 94289 6190821376 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-06 15:15:11,391 basehttp 94289 6190821376 "GET /en/referrals/0df8ecaa-4174-47cd-9fcf-27969dbfc513/complete/ HTTP/1.1" 302 0
INFO 2025-11-06 15:15:11,406 basehttp 94289 6190821376 "GET /en/referrals/0df8ecaa-4174-47cd-9fcf-27969dbfc513/ HTTP/1.1" 200 32230
INFO 2025-11-06 15:15:11,439 basehttp 94289 6190821376 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-06 15:15:13,700 basehttp 94289 6190821376 "GET /en/referrals/0df8ecaa-4174-47cd-9fcf-27969dbfc513/ HTTP/1.1" 200 31910
INFO 2025-11-06 15:15:14,220 basehttp 94289 6190821376 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-06 15:15:16,841 basehttp 94289 6190821376 "GET /en/referrals/ HTTP/1.1" 200 60384
INFO 2025-11-06 15:15:16,873 basehttp 94289 6190821376 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-06 15:15:22,166 basehttp 94289 6190821376 "GET /en/referrals/e70c1ace-5ecb-4148-bf42-9c6d8cd6561a/ HTTP/1.1" 200 31614
INFO 2025-11-06 15:15:22,194 basehttp 94289 6190821376 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-06 15:15:23,032 basehttp 94289 6190821376 "GET /en/referrals/e70c1ace-5ecb-4148-bf42-9c6d8cd6561a/complete/ HTTP/1.1" 302 0
INFO 2025-11-06 15:15:23,048 basehttp 94289 6190821376 "GET /en/referrals/e70c1ace-5ecb-4148-bf42-9c6d8cd6561a/ HTTP/1.1" 200 31773
INFO 2025-11-06 15:15:23,081 basehttp 94289 6190821376 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-06 15:15:25,358 basehttp 94289 6190821376 "GET /en/referrals/e70c1ace-5ecb-4148-bf42-9c6d8cd6561a/ HTTP/1.1" 200 31453
INFO 2025-11-06 15:15:26,740 basehttp 94289 6190821376 "GET /en/referrals/ HTTP/1.1" 200 60386
INFO 2025-11-06 15:15:26,776 basehttp 94289 6190821376 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-06 15:15:37,808 basehttp 94289 6190821376 "GET /en/referrals/148c8163-7038-4b5b-b737-50138f9171d3/ HTTP/1.1" 200 31036
INFO 2025-11-06 15:15:37,835 basehttp 94289 6190821376 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-06 15:15:50,024 basehttp 94289 6190821376 "GET /en/dashboard/ HTTP/1.1" 200 54259
INFO 2025-11-06 15:15:50,074 basehttp 94289 6190821376 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-06 15:15:53,403 basehttp 94289 6190821376 "GET /en/finance/packages/ HTTP/1.1" 200 36253
INFO 2025-11-06 15:15:53,429 basehttp 94289 6190821376 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-06 15:15:57,163 basehttp 94289 6190821376 "GET /en/finance/packages/create/ HTTP/1.1" 200 46283
INFO 2025-11-06 15:15:57,198 basehttp 94289 6190821376 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-06 15:16:06,882 basehttp 94289 6190821376 "GET /en/dashboard/ HTTP/1.1" 200 54259
INFO 2025-11-06 15:16:06,919 basehttp 94289 6190821376 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-06 15:16:36,933 basehttp 94289 6190821376 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-06 15:16:38,795 basehttp 94289 6190821376 "GET /en/referrals/external/ HTTP/1.1" 200 12947
ERROR 2025-11-06 15:16:45,938 tasks 76869 8426217792 Appointment c60c62dc-20a8-4e2a-85e9-96e82744d880 not found
ERROR 2025-11-06 15:17:58,903 tasks 76869 8426217792 Appointment c60c62dc-20a8-4e2a-85e9-96e82744d880 not found
INFO 2025-11-06 15:18:24,128 basehttp 94289 6190821376 "GET /en/referrals/external/ HTTP/1.1" 200 13099
ERROR 2025-11-06 15:18:50,288 tasks 76869 8426217792 Appointment c60c62dc-20a8-4e2a-85e9-96e82744d880 not found
ERROR 2025-11-06 15:18:50,341 tasks 76869 8426217792 Appointment c60c62dc-20a8-4e2a-85e9-96e82744d880 not found
ERROR 2025-11-06 15:23:14,282 tasks 76869 8426217792 Appointment 236f3e70-6d16-466f-a04f-eaf12cee9ba2 not found
ERROR 2025-11-06 15:23:14,285 tasks 70301 8426217792 Appointment c61467c7-19c0-454f-9b46-9b011f167dbf not found
ERROR 2025-11-06 15:25:43,908 tasks 76869 8426217792 Appointment b0c611dd-314f-4f02-8011-ac5519bdd525 not found
ERROR 2025-11-06 15:27:25,850 tasks 76869 8426217792 Appointment b7386e99-0cbb-420c-9fa8-13a2200e5715 not found
ERROR 2025-11-06 15:27:25,850 tasks 70301 8426217792 Appointment b5a77fcd-5a4b-4e96-9a68-fd3018073de1 not found

View File

@ -34,6 +34,11 @@
margin-bottom: 20px;
text-align: center;
}
.page-header .tenant-logo {
max-width: 150px;
max-height: 80px;
margin-bottom: 15px;
}
.page-header h1 {
margin: 0;
font-size: 2rem;
@ -78,6 +83,9 @@
<div class="referral-container">
<!-- Page Header -->
<div class="page-header">
{% if tenant and tenant.logo %}
<img src="{{ tenant.logo.url }}" alt="{{ tenant.name }}" class="tenant-logo">
{% endif %}
<h1><i class="fas fa-hospital-user me-2"></i>{% trans "External Referral Form" %}</h1>
<p>{% if tenant %}{{ tenant.name }}{% else %}{% trans "Agdar Centre" %}{% endif %}</p>
</div>

View File

@ -317,51 +317,40 @@ class ReferralUpdateView(LoginRequiredMixin, RolePermissionMixin, TenantFilterMi
return context
class ReferralAcceptView(LoginRequiredMixin, RolePermissionMixin, AuditLogMixin,
SuccessMessageMixin, UpdateView):
class ReferralAcceptView(LoginRequiredMixin, RolePermissionMixin, TenantFilterMixin, View):
"""
Accept referral view.
Features:
- Accept pending referral
- Add response notes
- Update status to ACCEPTED
- Redirect to detail page with success message
"""
model = Referral
fields = ['response_notes']
template_name = 'referrals/referral_accept.html'
success_message = "Referral accepted successfully!"
allowed_roles = [User.Role.ADMIN, User.Role.DOCTOR, User.Role.NURSE,
User.Role.OT, User.Role.SLP, User.Role.ABA]
def get_success_url(self):
"""Redirect to referral detail."""
return reverse_lazy('referrals:referral_detail', kwargs={'pk': self.object.pk})
def form_valid(self, form):
"""Update status to ACCEPTED."""
referral = form.instance
def get(self, request, *args, **kwargs):
"""Mark referral as accepted."""
referral = get_object_or_404(Referral, pk=kwargs['pk'], tenant=request.user.tenant)
# Check if user can accept
if referral.status != Referral.Status.PENDING:
messages.error(self.request, 'Only pending referrals can be accepted.')
messages.error(request, 'Only pending referrals can be accepted.')
return redirect('referrals:referral_detail', pk=referral.pk)
if self.request.user != referral.to_provider and self.request.user.role != User.Role.ADMIN:
messages.error(self.request, 'You do not have permission to accept this referral.')
if request.user != referral.to_provider and request.user.role != User.Role.ADMIN:
messages.error(request, 'You do not have permission to accept this referral.')
return redirect('referrals:referral_detail', pk=referral.pk)
# Update status
referral.status = Referral.Status.ACCEPTED
referral.response_date = timezone.now().date()
referral.responded_at = timezone.now()
referral.save()
# Save
response = super().form_valid(form)
# Send notification to referrer
# Send notification to referrer (TODO)
self._send_acceptance_notification(referral)
return response
messages.success(request, 'Referral accepted successfully!')
return redirect('referrals:referral_detail', pk=referral.pk)
def _send_acceptance_notification(self, referral):
"""Send notification to referrer."""
@ -369,51 +358,40 @@ class ReferralAcceptView(LoginRequiredMixin, RolePermissionMixin, AuditLogMixin,
pass
class ReferralRejectView(LoginRequiredMixin, RolePermissionMixin, AuditLogMixin,
SuccessMessageMixin, UpdateView):
class ReferralRejectView(LoginRequiredMixin, RolePermissionMixin, TenantFilterMixin, View):
"""
Reject referral view.
Features:
- Reject pending referral
- Add rejection reason
- Update status to REJECTED
- Redirect to detail page with message
"""
model = Referral
fields = ['response_notes']
template_name = 'referrals/referral_reject.html'
success_message = "Referral rejected."
allowed_roles = [User.Role.ADMIN, User.Role.DOCTOR, User.Role.NURSE,
User.Role.OT, User.Role.SLP, User.Role.ABA]
def get_success_url(self):
"""Redirect to referral detail."""
return reverse_lazy('referrals:referral_detail', kwargs={'pk': self.object.pk})
def form_valid(self, form):
"""Update status to REJECTED."""
referral = form.instance
def get(self, request, *args, **kwargs):
"""Mark referral as rejected."""
referral = get_object_or_404(Referral, pk=kwargs['pk'], tenant=request.user.tenant)
# Check if user can reject
if referral.status != Referral.Status.PENDING:
messages.error(self.request, 'Only pending referrals can be rejected.')
messages.error(request, 'Only pending referrals can be rejected.')
return redirect('referrals:referral_detail', pk=referral.pk)
if self.request.user != referral.to_provider and self.request.user.role != User.Role.ADMIN:
messages.error(self.request, 'You do not have permission to reject this referral.')
if request.user != referral.to_provider and request.user.role != User.Role.ADMIN:
messages.error(request, 'You do not have permission to reject this referral.')
return redirect('referrals:referral_detail', pk=referral.pk)
# Update status
referral.status = Referral.Status.REJECTED
referral.response_date = timezone.now().date()
referral.responded_at = timezone.now()
referral.save()
# Save
response = super().form_valid(form)
# Send notification to referrer
# Send notification to referrer (TODO)
self._send_rejection_notification(referral)
return response
messages.warning(request, 'Referral rejected.')
return redirect('referrals:referral_detail', pk=referral.pk)
def _send_rejection_notification(self, referral):
"""Send notification to referrer."""
@ -421,51 +399,40 @@ class ReferralRejectView(LoginRequiredMixin, RolePermissionMixin, AuditLogMixin,
pass
class ReferralCompleteView(LoginRequiredMixin, RolePermissionMixin, AuditLogMixin,
SuccessMessageMixin, UpdateView):
class ReferralCompleteView(LoginRequiredMixin, RolePermissionMixin, TenantFilterMixin, View):
"""
Complete referral view.
Features:
- Mark accepted referral as completed
- Add completion notes
- Update status to COMPLETED
- Redirect to detail page with success message
"""
model = Referral
fields = ['completion_notes']
template_name = 'referrals/referral_complete.html'
success_message = "Referral marked as completed!"
allowed_roles = [User.Role.ADMIN, User.Role.DOCTOR, User.Role.NURSE,
User.Role.OT, User.Role.SLP, User.Role.ABA]
def get_success_url(self):
"""Redirect to referral detail."""
return reverse_lazy('referrals:referral_detail', kwargs={'pk': self.object.pk})
def form_valid(self, form):
"""Update status to COMPLETED."""
referral = form.instance
def get(self, request, *args, **kwargs):
"""Mark referral as completed."""
referral = get_object_or_404(Referral, pk=kwargs['pk'], tenant=request.user.tenant)
# Check if user can complete
if referral.status != Referral.Status.ACCEPTED:
messages.error(self.request, 'Only accepted referrals can be completed.')
messages.error(request, 'Only accepted referrals can be completed.')
return redirect('referrals:referral_detail', pk=referral.pk)
if self.request.user != referral.to_provider and self.request.user.role != User.Role.ADMIN:
messages.error(self.request, 'You do not have permission to complete this referral.')
if request.user != referral.to_provider and request.user.role != User.Role.ADMIN:
messages.error(request, 'You do not have permission to complete this referral.')
return redirect('referrals:referral_detail', pk=referral.pk)
# Update status
referral.status = Referral.Status.COMPLETED
referral.completion_date = timezone.now().date()
referral.completed_at = timezone.now()
referral.save()
# Save
response = super().form_valid(form)
# Send notification to referrer
# Send notification to referrer (TODO)
self._send_completion_notification(referral)
return response
messages.success(request, 'Referral marked as completed!')
return redirect('referrals:referral_detail', pk=referral.pk)
def _send_completion_notification(self, referral):
"""Send notification to referrer."""