diff --git a/.DS_Store b/.DS_Store index d2afdf18..c2658e59 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/inventory/__pycache__/forms.cpython-312.pyc b/inventory/__pycache__/forms.cpython-312.pyc index 2288ecd4..b2647a4b 100644 Binary files a/inventory/__pycache__/forms.cpython-312.pyc and b/inventory/__pycache__/forms.cpython-312.pyc differ diff --git a/inventory/__pycache__/models.cpython-312.pyc b/inventory/__pycache__/models.cpython-312.pyc index 5cf8b48a..0c449c0a 100644 Binary files a/inventory/__pycache__/models.cpython-312.pyc and b/inventory/__pycache__/models.cpython-312.pyc differ diff --git a/inventory/__pycache__/views.cpython-312.pyc b/inventory/__pycache__/views.cpython-312.pyc index 259cb5ae..e3e690fb 100644 Binary files a/inventory/__pycache__/views.cpython-312.pyc and b/inventory/__pycache__/views.cpython-312.pyc differ diff --git a/inventory/forms.py b/inventory/forms.py index 5902ee18..340cc522 100644 --- a/inventory/forms.py +++ b/inventory/forms.py @@ -366,7 +366,7 @@ class InventoryStockForm(forms.ModelForm): self.fields['location'].queryset = InventoryLocation.objects.filter( tenant=user.tenant, is_active=True - ).order_by('location_name') + ).order_by('name') def clean_quantity_on_hand(self): quantity_on_hand = self.cleaned_data.get('quantity_on_hand') @@ -463,12 +463,12 @@ class PurchaseOrderForm(forms.ModelForm): self.fields['supplier'].queryset = Supplier.objects.filter( tenant=user.tenant, is_active=True - ).order_by('supplier_name') + ).order_by('name') self.fields['delivery_location'].queryset = InventoryLocation.objects.filter( tenant=user.tenant, is_active=True - ).order_by('location_name') + ).order_by('name') def clean_order_date(self): order_date = self.cleaned_data.get('order_date') diff --git a/inventory/models.py b/inventory/models.py index dce88efd..d175c494 100644 --- a/inventory/models.py +++ b/inventory/models.py @@ -35,7 +35,48 @@ class InventoryItem(models.Model): ('FURNITURE', 'Furniture'), ('OTHER', 'Other'), ] - + ITEM_TYPE_CHOICES = [ + ('CONSUMABLE', 'Consumable'), + ('REUSABLE', 'Reusable'), + ('EQUIPMENT', 'Equipment'), + ('MEDICATION', 'Medication'), + ('IMPLANT', 'Implant'), + ('DEVICE', 'Medical Device'), + ('SUPPLY', 'Supply'), + ('ASSET', 'Asset'), + ] + UNIT_OF_MEASURE_CHOICES = [ + ('EACH', 'Each'), + ('BOX', 'Box'), + ('CASE', 'Case'), + ('BOTTLE', 'Bottle'), + ('VIAL', 'Vial'), + ('TUBE', 'Tube'), + ('PACK', 'Pack'), + ('KIT', 'Kit'), + ('ROLL', 'Roll'), + ('SHEET', 'Sheet'), + ('POUND', 'Pound'), + ('KILOGRAM', 'Kilogram'), + ('LITER', 'Liter'), + ('MILLILITER', 'Milliliter'), + ('METER', 'Meter'), + ('FOOT', 'Foot'), + ] + PACKAGE_TYPE_CHOICES = [ + ('INDIVIDUAL', 'Individual'), + ('BULK', 'Bulk'), + ('STERILE', 'Sterile Package'), + ('NON_STERILE', 'Non-Sterile Package'), + ] + DEA_SCHEDULE_CHOICES = [ + ('CI', 'Schedule I'), + ('CII', 'Schedule II'), + ('CIII', 'Schedule III'), + ('CIV', 'Schedule IV'), + ('CV', 'Schedule V'), + ] + # Tenant relationship tenant = models.ForeignKey( 'core.Tenant', @@ -82,16 +123,7 @@ class InventoryItem(models.Model): # Item Type item_type = models.CharField( max_length=20, - choices=[ - ('CONSUMABLE', 'Consumable'), - ('REUSABLE', 'Reusable'), - ('EQUIPMENT', 'Equipment'), - ('MEDICATION', 'Medication'), - ('IMPLANT', 'Implant'), - ('DEVICE', 'Medical Device'), - ('SUPPLY', 'Supply'), - ('ASSET', 'Asset'), - ], + choices=ITEM_TYPE_CHOICES, help_text='Item type' ) @@ -138,24 +170,7 @@ class InventoryItem(models.Model): # Unit Information unit_of_measure = models.CharField( max_length=20, - choices=[ - ('EACH', 'Each'), - ('BOX', 'Box'), - ('CASE', 'Case'), - ('BOTTLE', 'Bottle'), - ('VIAL', 'Vial'), - ('TUBE', 'Tube'), - ('PACK', 'Pack'), - ('KIT', 'Kit'), - ('ROLL', 'Roll'), - ('SHEET', 'Sheet'), - ('POUND', 'Pound'), - ('KILOGRAM', 'Kilogram'), - ('LITER', 'Liter'), - ('MILLILITER', 'Milliliter'), - ('METER', 'Meter'), - ('FOOT', 'Foot'), - ], + choices=UNIT_OF_MEASURE_CHOICES, default='EACH', help_text='Unit of measure' ) @@ -167,12 +182,7 @@ class InventoryItem(models.Model): ) package_type = models.CharField( max_length=20, - choices=[ - ('INDIVIDUAL', 'Individual'), - ('BULK', 'Bulk'), - ('STERILE', 'Sterile Package'), - ('NON_STERILE', 'Non-Sterile Package'), - ], + choices=PACKAGE_TYPE_CHOICES, default='INDIVIDUAL', help_text='Package type' ) @@ -246,13 +256,7 @@ class InventoryItem(models.Model): ) dea_schedule = models.CharField( max_length=5, - choices=[ - ('CI', 'Schedule I'), - ('CII', 'Schedule II'), - ('CIII', 'Schedule III'), - ('CIV', 'Schedule IV'), - ('CV', 'Schedule V'), - ], + choices=DEA_SCHEDULE_CHOICES, blank=True, null=True, help_text='DEA schedule (for controlled substances)' @@ -380,7 +384,15 @@ class InventoryStock(models.Model): """ Inventory stock model for tracking stock levels by location and lot. """ - + QUALITY_STATUS_CHOICES = [ + ('GOOD', 'Good'), + ('QUARANTINE', 'Quarantine'), + ('EXPIRED', 'Expired'), + ('DAMAGED', 'Damaged'), + ('RECALLED', 'Recalled'), + ('REJECTED', 'Rejected'), + ] + # Inventory Item relationship inventory_item = models.ForeignKey( InventoryItem, @@ -462,14 +474,7 @@ class InventoryStock(models.Model): # Quality Information quality_status = models.CharField( max_length=20, - choices=[ - ('GOOD', 'Good'), - ('QUARANTINE', 'Quarantine'), - ('EXPIRED', 'Expired'), - ('DAMAGED', 'Damaged'), - ('RECALLED', 'Recalled'), - ('REJECTED', 'Rejected'), - ], + choices=QUALITY_STATUS_CHOICES, default='GOOD', help_text='Quality status' ) @@ -574,7 +579,13 @@ class InventoryLocation(models.Model): ('SHIPPING', 'Shipping'), ('OTHER', 'Other'), ] - + ACCESS_CONTROL_CHOICES = [ + ('OPEN', 'Open Access'), + ('BADGE', 'Badge Access'), + ('KEY', 'Key Access'), + ('BIOMETRIC', 'Biometric Access'), + ('DUAL_CONTROL', 'Dual Control'), + ] # Tenant relationship tenant = models.ForeignKey( @@ -715,13 +726,7 @@ class InventoryLocation(models.Model): ) access_control = models.CharField( max_length=20, - choices=[ - ('OPEN', 'Open Access'), - ('BADGE', 'Badge Access'), - ('KEY', 'Key Access'), - ('BIOMETRIC', 'Biometric Access'), - ('DUAL_CONTROL', 'Dual Control'), - ], + choices=ACCESS_CONTROL_CHOICES, default='OPEN', help_text='Access control method' ) @@ -814,7 +819,42 @@ class PurchaseOrder(models.Model): """ Purchase order model for procurement workflows. """ - + ORDER_TYPE_CHOICES = [ + ('STANDARD', 'Standard Order'), + ('RUSH', 'Rush Order'), + ('EMERGENCY', 'Emergency Order'), + ('BLANKET', 'Blanket Order'), + ('CONTRACT', 'Contract Order'), + ('CONSIGNMENT', 'Consignment'), + ] + PRIORITY_CHOICES = [ + ('LOW', 'Low'), + ('NORMAL', 'Normal'), + ('HIGH', 'High'), + ('URGENT', 'Urgent'), + ] + STATUS_CHOICES = [ + ('DRAFT', 'Draft'), + ('PENDING_APPROVAL', 'Pending Approval'), + ('APPROVED', 'Approved'), + ('SENT', 'Sent to Supplier'), + ('ACKNOWLEDGED', 'Acknowledged'), + ('PARTIAL_RECEIVED', 'Partially Received'), + ('RECEIVED', 'Received'), + ('INVOICED', 'Invoiced'), + ('PAID', 'Paid'), + ('CANCELLED', 'Cancelled'), + ('CLOSED', 'Closed'), + ] + PAYMENT_TERMS_CHOICES = [ + ('NET_30', 'Net 30 Days'), + ('NET_60', 'Net 60 Days'), + ('NET_90', 'Net 90 Days'), + ('COD', 'Cash on Delivery'), + ('PREPAID', 'Prepaid'), + ('CREDIT_CARD', 'Credit Card'), + ] + # Tenant relationship tenant = models.ForeignKey( 'core.Tenant', @@ -868,14 +908,7 @@ class PurchaseOrder(models.Model): # Order Type order_type = models.CharField( max_length=20, - choices=[ - ('STANDARD', 'Standard Order'), - ('RUSH', 'Rush Order'), - ('EMERGENCY', 'Emergency Order'), - ('BLANKET', 'Blanket Order'), - ('CONTRACT', 'Contract Order'), - ('CONSIGNMENT', 'Consignment'), - ], + choices=ORDER_TYPE_CHOICES, default='STANDARD', help_text='Order type' ) @@ -883,12 +916,7 @@ class PurchaseOrder(models.Model): # Priority priority = models.CharField( max_length=10, - choices=[ - ('LOW', 'Low'), - ('NORMAL', 'Normal'), - ('HIGH', 'High'), - ('URGENT', 'Urgent'), - ], + choices=PRIORITY_CHOICES, default='NORMAL', help_text='Order priority' ) @@ -922,19 +950,7 @@ class PurchaseOrder(models.Model): # Order Status status = models.CharField( max_length=20, - choices=[ - ('DRAFT', 'Draft'), - ('PENDING_APPROVAL', 'Pending Approval'), - ('APPROVED', 'Approved'), - ('SENT', 'Sent to Supplier'), - ('ACKNOWLEDGED', 'Acknowledged'), - ('PARTIAL_RECEIVED', 'Partially Received'), - ('RECEIVED', 'Received'), - ('INVOICED', 'Invoiced'), - ('PAID', 'Paid'), - ('CANCELLED', 'Cancelled'), - ('CLOSED', 'Closed'), - ], + choices=STATUS_CHOICES, default='DRAFT', help_text='Order status' ) @@ -957,14 +973,7 @@ class PurchaseOrder(models.Model): # Payment Terms payment_terms = models.CharField( max_length=20, - choices=[ - ('NET_30', 'Net 30 Days'), - ('NET_60', 'Net 60 Days'), - ('NET_90', 'Net 90 Days'), - ('COD', 'Cash on Delivery'), - ('PREPAID', 'Prepaid'), - ('CREDIT_CARD', 'Credit Card'), - ], + choices=PAYMENT_TERMS_CHOICES, default='NET_30', help_text='Payment terms' ) @@ -1071,7 +1080,14 @@ class PurchaseOrderItem(models.Model): """ Purchase order item model for individual line items. """ - + STATUS_CHOICES = [ + ('PENDING', 'Pending'), + ('ORDERED', 'Ordered'), + ('PARTIAL_RECEIVED', 'Partially Received'), + ('RECEIVED', 'Received'), + ('CANCELLED', 'Cancelled'), + ] + # Purchase Order relationship purchase_order = models.ForeignKey( PurchaseOrder, @@ -1134,13 +1150,7 @@ class PurchaseOrderItem(models.Model): # Item Status status = models.CharField( max_length=20, - choices=[ - ('PENDING', 'Pending'), - ('ORDERED', 'Ordered'), - ('PARTIAL_RECEIVED', 'Partially Received'), - ('RECEIVED', 'Received'), - ('CANCELLED', 'Cancelled'), - ], + choices=STATUS_CHOICES, default='PENDING', help_text='Item status' ) diff --git a/inventory/views.py b/inventory/views.py index 02e685fa..d4d048be 100644 --- a/inventory/views.py +++ b/inventory/views.py @@ -685,7 +685,7 @@ class InventoryStockCreateView(LoginRequiredMixin, CreateView): """ model = InventoryStock form_class = InventoryStockForm - template_name = 'inventory/stock_form.html' + template_name = 'inventory/stock/stock_form.html' success_url = reverse_lazy('inventory:stock_list') def get_form_kwargs(self): @@ -745,7 +745,7 @@ class PurchaseOrderListView(LoginRequiredMixin, ListView): List all purchase orders with filtering. """ model = PurchaseOrder - template_name = 'inventory/purchase_order_list.html' + template_name = 'inventory/orders/purchase_order_list.html' context_object_name = 'orders' paginate_by = 20 @@ -780,7 +780,7 @@ class PurchaseOrderListView(LoginRequiredMixin, ListView): context['suppliers'] = Supplier.objects.filter( tenant=self.request.user.tenant, is_active=True - ).order_by('supplier_name') + ).order_by('name') return context @@ -789,7 +789,7 @@ class PurchaseOrderDetailView(LoginRequiredMixin, DetailView): Display detailed information about a purchase order. """ model = PurchaseOrder - template_name = 'inventory/purchase_order_detail.html' + template_name = 'inventory/orders/purchase_order_detail.html' context_object_name = 'order' def get_queryset(self): @@ -804,7 +804,7 @@ class PurchaseOrderDetailView(LoginRequiredMixin, DetailView): # Order items context['order_items'] = PurchaseOrderItem.objects.filter( purchase_order=order - ).select_related('item').order_by('item__item_name') + ).select_related('inventory_item').order_by('inventory_item__item_name') return context @@ -815,7 +815,7 @@ class PurchaseOrderCreateView(LoginRequiredMixin, CreateView): """ model = PurchaseOrder form_class = PurchaseOrderForm - template_name = 'inventory/purchase_order_form.html' + template_name = 'inventory/orders/purchase_order_form.html' success_url = reverse_lazy('inventory:purchase_order_list') def get_form_kwargs(self): @@ -848,7 +848,7 @@ class PurchaseOrderUpdateView(LoginRequiredMixin, UpdateView): """ model = PurchaseOrder form_class = PurchaseOrderForm - template_name = 'inventory/purchase_order_form.html' + template_name = 'inventory/orders/purchase_order_form.html' def get_queryset(self): return PurchaseOrder.objects.filter(tenant=self.request.user.tenant) diff --git a/logs/hospital_management.log b/logs/hospital_management.log index 5440e76e..dda7074f 100644 --- a/logs/hospital_management.log +++ b/logs/hospital_management.log @@ -105138,3 +105138,3669 @@ INFO 2025-08-30 19:31:59,305 basehttp 10819 6277165056 "GET /static/plugins/sele INFO 2025-08-30 19:31:59,337 basehttp 10819 6277165056 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 INFO 2025-08-30 19:32:29,194 basehttp 10819 6277165056 "GET /en/operating-theatre/cases/ HTTP/1.1" 200 23266 INFO 2025-08-30 19:32:29,228 basehttp 10819 6277165056 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 19:33:12,249 basehttp 10819 6193033216 "GET /en/operating-theatre/rooms/ HTTP/1.1" 200 30822 +INFO 2025-08-30 19:33:12,290 basehttp 10819 6193033216 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +ERROR 2025-08-30 19:33:12,305 log 10819 6209859584 Internal Server Error: /en/operating-theatre/htmx/stats/ +Traceback (most recent call last): + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner + response = get_response(request) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.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/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/contrib/auth/decorators.py", line 59, in _view_wrapper + return view_func(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/operating_theatre/views.py", line 1116, in operating_theatre_stats + 'cases_in_progress': SurgicalCase.objects.filter( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/manager.py", line 87, in manager_method + return getattr(self.get_queryset(), name)(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/query.py", line 1493, in filter + return self._filter_or_exclude(False, args, kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/query.py", line 1511, in _filter_or_exclude + clone._filter_or_exclude_inplace(negate, args, kwargs) + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/query.py", line 1518, in _filter_or_exclude_inplace + self._query.add_q(Q(*args, **kwargs)) + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1646, in add_q + clause, _ = self._add_q(q_object, can_reuse) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1678, in _add_q + child_clause, needed_inner = self.build_filter( + ^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1526, in build_filter + lookups, parts, reffed_expression = self.solve_lookup_type(arg, summarize) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1333, in solve_lookup_type + _, field, _, lookup_parts = self.names_to_path(lookup_splitted, self.get_meta()) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1805, in names_to_path + raise FieldError( +django.core.exceptions.FieldError: Cannot resolve keyword 'tenant' into field. Choices are: actual_end, actual_start, admission, admission_id, anesthesia_type, anesthesiologist, anesthesiologist_id, approach, assistant_surgeons, blood_products, case_id, case_number, case_type, circulating_nurse, circulating_nurse_id, clinical_notes, complications, created_at, created_by, created_by_id, diagnosis, diagnosis_codes, encounter, encounter_id, equipment_usage, estimated_blood_loss, estimated_duration, id, implants, or_block, or_block_id, patient, patient_id, patient_position, primary_procedure, primary_surgeon, primary_surgeon_id, procedure_codes, scheduled_start, scrub_nurse, scrub_nurse_id, secondary_procedures, special_equipment, status, surgical_note, updated_at +ERROR 2025-08-30 19:33:12,307 basehttp 10819 6209859584 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 500 121568 +ERROR 2025-08-30 19:33:42,311 log 10819 6209859584 Internal Server Error: /en/operating-theatre/htmx/stats/ +Traceback (most recent call last): + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner + response = get_response(request) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.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/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/contrib/auth/decorators.py", line 59, in _view_wrapper + return view_func(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/operating_theatre/views.py", line 1116, in operating_theatre_stats + 'cases_in_progress': SurgicalCase.objects.filter( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/manager.py", line 87, in manager_method + return getattr(self.get_queryset(), name)(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/query.py", line 1493, in filter + return self._filter_or_exclude(False, args, kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/query.py", line 1511, in _filter_or_exclude + clone._filter_or_exclude_inplace(negate, args, kwargs) + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/query.py", line 1518, in _filter_or_exclude_inplace + self._query.add_q(Q(*args, **kwargs)) + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1646, in add_q + clause, _ = self._add_q(q_object, can_reuse) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1678, in _add_q + child_clause, needed_inner = self.build_filter( + ^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1526, in build_filter + lookups, parts, reffed_expression = self.solve_lookup_type(arg, summarize) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1333, in solve_lookup_type + _, field, _, lookup_parts = self.names_to_path(lookup_splitted, self.get_meta()) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1805, in names_to_path + raise FieldError( +django.core.exceptions.FieldError: Cannot resolve keyword 'tenant' into field. Choices are: actual_end, actual_start, admission, admission_id, anesthesia_type, anesthesiologist, anesthesiologist_id, approach, assistant_surgeons, blood_products, case_id, case_number, case_type, circulating_nurse, circulating_nurse_id, clinical_notes, complications, created_at, created_by, created_by_id, diagnosis, diagnosis_codes, encounter, encounter_id, equipment_usage, estimated_blood_loss, estimated_duration, id, implants, or_block, or_block_id, patient, patient_id, patient_position, primary_procedure, primary_surgeon, primary_surgeon_id, procedure_codes, scheduled_start, scrub_nurse, scrub_nurse_id, secondary_procedures, special_equipment, status, surgical_note, updated_at +ERROR 2025-08-30 19:33:42,312 basehttp 10819 6209859584 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 500 121568 +INFO 2025-08-30 19:34:12,302 basehttp 10819 6209859584 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +ERROR 2025-08-30 19:34:12,318 log 10819 6193033216 Internal Server Error: /en/operating-theatre/htmx/stats/ +Traceback (most recent call last): + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner + response = get_response(request) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.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/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/contrib/auth/decorators.py", line 59, in _view_wrapper + return view_func(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/operating_theatre/views.py", line 1116, in operating_theatre_stats + 'cases_in_progress': SurgicalCase.objects.filter( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/manager.py", line 87, in manager_method + return getattr(self.get_queryset(), name)(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/query.py", line 1493, in filter + return self._filter_or_exclude(False, args, kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/query.py", line 1511, in _filter_or_exclude + clone._filter_or_exclude_inplace(negate, args, kwargs) + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/query.py", line 1518, in _filter_or_exclude_inplace + self._query.add_q(Q(*args, **kwargs)) + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1646, in add_q + clause, _ = self._add_q(q_object, can_reuse) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1678, in _add_q + child_clause, needed_inner = self.build_filter( + ^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1526, in build_filter + lookups, parts, reffed_expression = self.solve_lookup_type(arg, summarize) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1333, in solve_lookup_type + _, field, _, lookup_parts = self.names_to_path(lookup_splitted, self.get_meta()) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1805, in names_to_path + raise FieldError( +django.core.exceptions.FieldError: Cannot resolve keyword 'tenant' into field. Choices are: actual_end, actual_start, admission, admission_id, anesthesia_type, anesthesiologist, anesthesiologist_id, approach, assistant_surgeons, blood_products, case_id, case_number, case_type, circulating_nurse, circulating_nurse_id, clinical_notes, complications, created_at, created_by, created_by_id, diagnosis, diagnosis_codes, encounter, encounter_id, equipment_usage, estimated_blood_loss, estimated_duration, id, implants, or_block, or_block_id, patient, patient_id, patient_position, primary_procedure, primary_surgeon, primary_surgeon_id, procedure_codes, scheduled_start, scrub_nurse, scrub_nurse_id, secondary_procedures, special_equipment, status, surgical_note, updated_at +ERROR 2025-08-30 19:34:12,319 basehttp 10819 6193033216 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 500 121568 +ERROR 2025-08-30 19:34:42,305 log 10819 6193033216 Internal Server Error: /en/operating-theatre/htmx/stats/ +Traceback (most recent call last): + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner + response = get_response(request) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.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/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/contrib/auth/decorators.py", line 59, in _view_wrapper + return view_func(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/operating_theatre/views.py", line 1116, in operating_theatre_stats + 'cases_in_progress': SurgicalCase.objects.filter( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/manager.py", line 87, in manager_method + return getattr(self.get_queryset(), name)(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/query.py", line 1493, in filter + return self._filter_or_exclude(False, args, kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/query.py", line 1511, in _filter_or_exclude + clone._filter_or_exclude_inplace(negate, args, kwargs) + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/query.py", line 1518, in _filter_or_exclude_inplace + self._query.add_q(Q(*args, **kwargs)) + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1646, in add_q + clause, _ = self._add_q(q_object, can_reuse) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1678, in _add_q + child_clause, needed_inner = self.build_filter( + ^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1526, in build_filter + lookups, parts, reffed_expression = self.solve_lookup_type(arg, summarize) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1333, in solve_lookup_type + _, field, _, lookup_parts = self.names_to_path(lookup_splitted, self.get_meta()) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1805, in names_to_path + raise FieldError( +django.core.exceptions.FieldError: Cannot resolve keyword 'tenant' into field. Choices are: actual_end, actual_start, admission, admission_id, anesthesia_type, anesthesiologist, anesthesiologist_id, approach, assistant_surgeons, blood_products, case_id, case_number, case_type, circulating_nurse, circulating_nurse_id, clinical_notes, complications, created_at, created_by, created_by_id, diagnosis, diagnosis_codes, encounter, encounter_id, equipment_usage, estimated_blood_loss, estimated_duration, id, implants, or_block, or_block_id, patient, patient_id, patient_position, primary_procedure, primary_surgeon, primary_surgeon_id, procedure_codes, scheduled_start, scrub_nurse, scrub_nurse_id, secondary_procedures, special_equipment, status, surgical_note, updated_at +ERROR 2025-08-30 19:34:42,307 basehttp 10819 6193033216 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 500 121568 +INFO 2025-08-30 19:34:44,988 autoreload 10819 8466948288 /Users/marwanalwali/manus_project/hospital_management_system_v4/operating_theatre/views.py changed, reloading. +INFO 2025-08-30 19:34:45,415 autoreload 13277 8466948288 Watching for file changes with StatReloader +INFO 2025-08-30 19:34:47,686 basehttp 13277 6191820800 "GET /en/operating-theatre/rooms/ HTTP/1.1" 200 30822 +INFO 2025-08-30 19:34:47,734 basehttp 13277 6191820800 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +ERROR 2025-08-30 19:34:47,746 log 13277 6208647168 Internal Server Error: /en/operating-theatre/htmx/stats/ +Traceback (most recent call last): + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner + response = get_response(request) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.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/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/contrib/auth/decorators.py", line 59, in _view_wrapper + return view_func(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/operating_theatre/views.py", line 1120, in operating_theatre_stats + 'cases_completed_today': SurgicalCase.objects.filter( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/manager.py", line 87, in manager_method + return getattr(self.get_queryset(), name)(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/query.py", line 1493, in filter + return self._filter_or_exclude(False, args, kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/query.py", line 1511, in _filter_or_exclude + clone._filter_or_exclude_inplace(negate, args, kwargs) + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/query.py", line 1518, in _filter_or_exclude_inplace + self._query.add_q(Q(*args, **kwargs)) + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1646, in add_q + clause, _ = self._add_q(q_object, can_reuse) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1678, in _add_q + child_clause, needed_inner = self.build_filter( + ^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1526, in build_filter + lookups, parts, reffed_expression = self.solve_lookup_type(arg, summarize) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1333, in solve_lookup_type + _, field, _, lookup_parts = self.names_to_path(lookup_splitted, self.get_meta()) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1805, in names_to_path + raise FieldError( +django.core.exceptions.FieldError: Cannot resolve keyword 'actual_end_time' into field. Choices are: actual_end, actual_start, admission, admission_id, anesthesia_type, anesthesiologist, anesthesiologist_id, approach, assistant_surgeons, blood_products, case_id, case_number, case_type, circulating_nurse, circulating_nurse_id, clinical_notes, complications, created_at, created_by, created_by_id, diagnosis, diagnosis_codes, encounter, encounter_id, equipment_usage, estimated_blood_loss, estimated_duration, id, implants, or_block, or_block_id, patient, patient_id, patient_position, primary_procedure, primary_surgeon, primary_surgeon_id, procedure_codes, scheduled_start, scrub_nurse, scrub_nurse_id, secondary_procedures, special_equipment, status, surgical_note, updated_at +ERROR 2025-08-30 19:34:47,748 basehttp 13277 6208647168 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 500 121409 +ERROR 2025-08-30 19:35:17,747 log 13277 6208647168 Internal Server Error: /en/operating-theatre/htmx/stats/ +Traceback (most recent call last): + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner + response = get_response(request) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.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/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/contrib/auth/decorators.py", line 59, in _view_wrapper + return view_func(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/operating_theatre/views.py", line 1120, in operating_theatre_stats + 'cases_completed_today': SurgicalCase.objects.filter( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/manager.py", line 87, in manager_method + return getattr(self.get_queryset(), name)(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/query.py", line 1493, in filter + return self._filter_or_exclude(False, args, kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/query.py", line 1511, in _filter_or_exclude + clone._filter_or_exclude_inplace(negate, args, kwargs) + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/query.py", line 1518, in _filter_or_exclude_inplace + self._query.add_q(Q(*args, **kwargs)) + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1646, in add_q + clause, _ = self._add_q(q_object, can_reuse) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1678, in _add_q + child_clause, needed_inner = self.build_filter( + ^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1526, in build_filter + lookups, parts, reffed_expression = self.solve_lookup_type(arg, summarize) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1333, in solve_lookup_type + _, field, _, lookup_parts = self.names_to_path(lookup_splitted, self.get_meta()) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1805, in names_to_path + raise FieldError( +django.core.exceptions.FieldError: Cannot resolve keyword 'actual_end_time' into field. Choices are: actual_end, actual_start, admission, admission_id, anesthesia_type, anesthesiologist, anesthesiologist_id, approach, assistant_surgeons, blood_products, case_id, case_number, case_type, circulating_nurse, circulating_nurse_id, clinical_notes, complications, created_at, created_by, created_by_id, diagnosis, diagnosis_codes, encounter, encounter_id, equipment_usage, estimated_blood_loss, estimated_duration, id, implants, or_block, or_block_id, patient, patient_id, patient_position, primary_procedure, primary_surgeon, primary_surgeon_id, procedure_codes, scheduled_start, scrub_nurse, scrub_nurse_id, secondary_procedures, special_equipment, status, surgical_note, updated_at +ERROR 2025-08-30 19:35:17,748 basehttp 13277 6208647168 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 500 121409 +INFO 2025-08-30 19:35:21,812 autoreload 13277 8466948288 /Users/marwanalwali/manus_project/hospital_management_system_v4/operating_theatre/views.py changed, reloading. +INFO 2025-08-30 19:35:22,158 autoreload 13519 8466948288 Watching for file changes with StatReloader +INFO 2025-08-30 19:35:25,315 basehttp 13519 6137327616 "GET /en/operating-theatre/rooms/ HTTP/1.1" 200 30822 +INFO 2025-08-30 19:35:25,364 basehttp 13519 6137327616 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 19:35:25,368 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 19:35:29,318 basehttp 13519 6154153984 "GET /en/operating-theatre/rooms/ HTTP/1.1" 200 30822 +INFO 2025-08-30 19:35:29,365 basehttp 13519 6154153984 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 19:35:29,367 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 19:35:59,372 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 19:36:17,894 basehttp 13519 6154153984 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 19:36:17,895 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 19:36:19,912 basehttp 13519 6137327616 "GET /en/operating-theatre/ HTTP/1.1" 200 34120 +INFO 2025-08-30 19:36:19,960 basehttp 13519 6137327616 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 19:36:19,961 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +WARNING 2025-08-30 19:36:29,155 log 13519 6154153984 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 19:36:29,155 basehttp 13519 6154153984 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 19:36:49,963 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 19:37:08,768 basehttp 13519 6137327616 "GET /en/operating-theatre/ HTTP/1.1" 200 34120 +WARNING 2025-08-30 19:37:08,782 log 13519 6137327616 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 19:37:08,783 basehttp 13519 6137327616 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 19:37:08,889 basehttp 13519 6137327616 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 19:37:08,891 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 19:37:26,983 basehttp 13519 6154153984 "GET /en/admin/operating_theatre/equipmentusage/ HTTP/1.1" 200 69121 +INFO 2025-08-30 19:37:27,000 basehttp 13519 6154153984 "GET /en/admin/jsi18n/ HTTP/1.1" 200 3342 +INFO 2025-08-30 19:37:31,199 basehttp 13519 6154153984 "GET /en/admin/operating_theatre/operatingroom/ HTTP/1.1" 200 70249 +INFO 2025-08-30 19:37:31,213 basehttp 13519 6154153984 "GET /en/admin/jsi18n/ HTTP/1.1" 200 3342 +INFO 2025-08-30 19:37:39,134 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 19:38:09,091 basehttp 13519 6154153984 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 19:38:10,083 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 19:38:41,093 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 19:39:10,082 basehttp 13519 6154153984 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 19:39:12,075 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 19:39:43,087 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 19:40:11,092 basehttp 13519 6154153984 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 19:40:14,079 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 19:41:12,080 basehttp 13519 6154153984 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 19:41:16,073 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 19:42:13,082 basehttp 13519 6154153984 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 19:42:19,069 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 19:43:14,082 basehttp 13519 6154153984 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 19:43:19,068 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 19:44:19,187 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 19:44:19,188 basehttp 13519 6137327616 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 19:45:19,172 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 19:46:19,203 basehttp 13519 6137327616 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 19:46:19,205 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 19:47:19,180 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 19:48:19,195 basehttp 13519 6154153984 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 19:48:19,197 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 19:49:19,190 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 19:50:19,193 basehttp 13519 6137327616 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 19:50:19,193 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 19:51:19,171 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 19:52:19,184 basehttp 13519 6154153984 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 19:52:19,185 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 19:53:19,174 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 19:54:19,187 basehttp 13519 6137327616 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 19:54:19,188 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 19:55:19,186 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 19:56:19,185 basehttp 13519 6154153984 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 19:56:19,188 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 19:57:19,194 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 19:58:19,198 basehttp 13519 6137327616 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 19:58:19,198 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 19:59:19,218 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 20:00:19,239 basehttp 13519 6154153984 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 20:00:19,240 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 20:15:16,196 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 20:16:16,202 basehttp 13519 6137327616 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 20:16:16,203 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 20:17:16,186 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 20:18:16,205 basehttp 13519 6154153984 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 20:18:16,206 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 20:36:45,097 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 20:54:14,033 basehttp 13519 6137327616 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 20:54:14,035 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 20:56:37,611 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 21:11:09,690 basehttp 13519 6137327616 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 21:11:09,691 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 21:12:09,680 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 21:13:09,678 basehttp 13519 6154153984 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 21:13:09,679 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 21:14:09,678 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 21:15:09,681 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 21:15:09,682 basehttp 13519 6137327616 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 21:16:09,685 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 21:17:09,683 basehttp 13519 6137327616 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 21:17:09,685 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 21:18:09,676 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 21:19:09,687 basehttp 13519 6154153984 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 21:19:09,689 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 21:20:09,682 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 21:21:09,693 basehttp 13519 6137327616 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 21:21:09,694 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 21:22:09,689 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 21:23:09,687 basehttp 13519 6154153984 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 21:23:09,688 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 21:24:09,693 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 21:25:09,688 basehttp 13519 6137327616 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 21:25:09,688 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 21:26:09,693 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 21:27:09,693 basehttp 13519 6154153984 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 21:27:09,694 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 21:28:09,689 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 21:29:09,698 basehttp 13519 6137327616 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 21:29:09,699 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 21:30:09,686 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 21:31:09,696 basehttp 13519 6154153984 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 21:31:09,698 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 21:32:09,691 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 21:33:09,693 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 21:33:09,694 basehttp 13519 6137327616 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 21:34:09,701 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 21:35:09,697 basehttp 13519 6137327616 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 21:35:09,698 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 21:36:09,699 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 21:37:09,769 basehttp 13519 6154153984 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 21:37:09,773 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 21:38:09,686 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 21:39:09,699 basehttp 13519 6137327616 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 21:39:09,700 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 21:40:09,722 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 21:41:09,729 basehttp 13519 6137327616 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 21:41:09,731 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 21:42:09,721 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 21:43:09,736 basehttp 13519 6154153984 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 21:43:09,737 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 21:44:09,720 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 21:45:09,732 basehttp 13519 6137327616 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 21:45:09,733 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 21:46:09,740 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 21:47:09,734 basehttp 13519 6154153984 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 21:47:09,736 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 21:48:09,730 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 21:49:09,736 basehttp 13519 6137327616 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 21:49:09,737 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 21:50:09,729 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 21:51:09,738 basehttp 13519 6154153984 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 21:51:09,740 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 21:52:09,737 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 21:53:09,742 basehttp 13519 6137327616 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 21:53:09,742 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 21:54:09,735 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 21:55:09,753 basehttp 13519 6154153984 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 21:55:09,755 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 21:56:09,756 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 21:57:09,766 basehttp 13519 6137327616 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 21:57:09,767 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 21:58:09,752 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 21:59:09,751 basehttp 13519 6154153984 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 21:59:09,752 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 22:00:09,751 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 22:01:09,755 basehttp 13519 6137327616 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 22:01:09,756 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 22:02:09,756 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 22:03:09,756 basehttp 13519 6154153984 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 22:03:09,756 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 22:04:09,760 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 22:05:09,758 basehttp 13519 6137327616 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 22:05:09,760 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 22:06:09,769 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 22:07:09,764 basehttp 13519 6154153984 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 22:07:09,765 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 22:08:09,757 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 22:09:09,758 basehttp 13519 6137327616 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 22:09:09,761 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 22:10:09,760 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 22:27:36,489 basehttp 13519 6137327616 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 22:27:36,493 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 22:28:36,503 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 22:29:36,509 basehttp 13519 6137327616 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 22:29:36,514 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 22:30:36,501 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 22:31:36,515 basehttp 13519 6154153984 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 22:31:36,516 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 22:32:36,502 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 22:33:36,509 basehttp 13519 6137327616 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 22:33:36,513 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 22:34:36,508 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 22:35:36,516 basehttp 13519 6154153984 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 22:35:36,518 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 22:36:36,508 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 22:37:36,527 basehttp 13519 6137327616 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 22:37:36,528 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 22:38:36,508 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 22:39:36,520 basehttp 13519 6154153984 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 22:39:36,522 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 22:40:36,513 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 22:41:36,512 basehttp 13519 6137327616 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 22:41:36,514 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 22:42:36,414 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 22:43:36,420 basehttp 13519 6154153984 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 22:43:36,421 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 22:44:36,422 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 22:45:36,426 basehttp 13519 6137327616 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 22:45:36,428 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 22:46:36,419 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 22:47:36,426 basehttp 13519 6154153984 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 22:47:36,427 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 22:48:36,419 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 22:49:36,429 basehttp 13519 6137327616 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 22:49:36,431 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 22:50:36,422 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 22:51:36,425 basehttp 13519 6154153984 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 22:51:36,426 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 22:52:36,416 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 22:53:36,426 basehttp 13519 6137327616 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 22:53:36,427 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 22:54:36,418 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 22:55:36,426 basehttp 13519 6154153984 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 22:55:36,427 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 22:56:36,429 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 22:57:36,324 basehttp 13519 6137327616 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 22:57:36,328 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 22:58:36,320 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 22:59:36,323 basehttp 13519 6154153984 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 22:59:36,324 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 23:00:36,321 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 23:01:36,324 basehttp 13519 6137327616 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 23:01:36,326 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 23:02:36,317 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 23:03:36,307 basehttp 13519 6154153984 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 23:03:36,309 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 23:04:36,319 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 23:05:36,312 basehttp 13519 6137327616 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 23:05:36,313 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 23:06:36,316 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 23:07:36,304 basehttp 13519 6154153984 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 23:07:36,306 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 23:08:36,313 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 23:09:01,114 basehttp 13519 6137327616 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 23:09:06,264 basehttp 13519 6137327616 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +ERROR 2025-08-30 23:09:09,925 log 13519 6137327616 Internal Server Error: /en/operating-theatre/blocks/ +Traceback (most recent call last): + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner + response = get_response(request) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.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/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/views/generic/base.py", line 105, in view + return self.dispatch(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/contrib/auth/mixins.py", line 73, in dispatch + return super().dispatch(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/views/generic/base.py", line 144, in dispatch + return handler(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/views/generic/list.py", line 158, in get + self.object_list = self.get_queryset() + ^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/operating_theatre/views.py", line 529, in get_queryset + queryset = ORBlock.objects.filter(tenant=self.request.user.tenant) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/manager.py", line 87, in manager_method + return getattr(self.get_queryset(), name)(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/query.py", line 1493, in filter + return self._filter_or_exclude(False, args, kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/query.py", line 1511, in _filter_or_exclude + clone._filter_or_exclude_inplace(negate, args, kwargs) + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/query.py", line 1518, in _filter_or_exclude_inplace + self._query.add_q(Q(*args, **kwargs)) + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1646, in add_q + clause, _ = self._add_q(q_object, can_reuse) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1678, in _add_q + child_clause, needed_inner = self.build_filter( + ^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1526, in build_filter + lookups, parts, reffed_expression = self.solve_lookup_type(arg, summarize) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1333, in solve_lookup_type + _, field, _, lookup_parts = self.names_to_path(lookup_splitted, self.get_meta()) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1805, in names_to_path + raise FieldError( +django.core.exceptions.FieldError: Cannot resolve keyword 'tenant' into field. Choices are: allocated_minutes, assistant_surgeons, block_id, block_type, created_at, created_by, created_by_id, date, end_time, id, notes, operating_room, operating_room_id, primary_surgeon, primary_surgeon_id, service, special_equipment, special_setup, start_time, status, surgical_cases, updated_at, used_minutes +ERROR 2025-08-30 23:09:09,928 basehttp 13519 6137327616 "GET /en/operating-theatre/blocks/ HTTP/1.1" 500 131315 +WARNING 2025-08-30 23:09:09,943 log 13519 6137327616 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:09:09,944 basehttp 13519 6137327616 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +WARNING 2025-08-30 23:09:12,141 log 13519 6137327616 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:09:12,141 basehttp 13519 6137327616 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +WARNING 2025-08-30 23:09:12,146 log 13519 6137327616 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:09:12,147 basehttp 13519 6137327616 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +ERROR 2025-08-30 23:09:14,434 log 13519 6137327616 Internal Server Error: /en/operating-theatre/notes/ +Traceback (most recent call last): + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner + response = get_response(request) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.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/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/views/generic/base.py", line 105, in view + return self.dispatch(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/contrib/auth/mixins.py", line 73, in dispatch + return super().dispatch(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/views/generic/base.py", line 144, in dispatch + return handler(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/views/generic/list.py", line 158, in get + self.object_list = self.get_queryset() + ^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/operating_theatre/views.py", line 863, in get_queryset + queryset = SurgicalNote.objects.filter(tenant=self.request.user.tenant) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/manager.py", line 87, in manager_method + return getattr(self.get_queryset(), name)(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/query.py", line 1493, in filter + return self._filter_or_exclude(False, args, kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/query.py", line 1511, in _filter_or_exclude + clone._filter_or_exclude_inplace(negate, args, kwargs) + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/query.py", line 1518, in _filter_or_exclude_inplace + self._query.add_q(Q(*args, **kwargs)) + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1646, in add_q + clause, _ = self._add_q(q_object, can_reuse) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1678, in _add_q + child_clause, needed_inner = self.build_filter( + ^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1526, in build_filter + lookups, parts, reffed_expression = self.solve_lookup_type(arg, summarize) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1333, in solve_lookup_type + _, field, _, lookup_parts = self.names_to_path(lookup_splitted, self.get_meta()) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1805, in names_to_path + raise FieldError( +django.core.exceptions.FieldError: Cannot resolve keyword 'tenant' into field. Choices are: blood_transfusion, closure, complications, condition, created_at, disposition, drains, estimated_blood_loss, findings, follow_up, id, implants, indication, note_id, planned_procedure, postop_instructions, postoperative_diagnosis, preoperative_diagnosis, procedure_performed, signed_datetime, specimens, status, surgeon, surgeon_id, surgical_approach, surgical_case, surgical_case_id, technique, template_used, template_used_id, updated_at +ERROR 2025-08-30 23:09:14,435 basehttp 13519 6137327616 "GET /en/operating-theatre/notes/ HTTP/1.1" 500 132151 +WARNING 2025-08-30 23:09:14,452 log 13519 6137327616 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:09:14,453 basehttp 13519 6137327616 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +WARNING 2025-08-30 23:09:16,147 log 13519 6137327616 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:09:16,147 basehttp 13519 6137327616 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +WARNING 2025-08-30 23:09:16,157 log 13519 6137327616 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:09:16,158 basehttp 13519 6137327616 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:09:17,347 basehttp 13519 6137327616 "GET /en/operating-theatre/rooms/ HTTP/1.1" 200 30821 +WARNING 2025-08-30 23:09:17,366 log 13519 6137327616 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:09:17,366 basehttp 13519 6137327616 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:09:17,461 basehttp 13519 6137327616 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 23:09:17,461 basehttp 13519 6154153984 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +WARNING 2025-08-30 23:09:19,880 log 13519 6154153984 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:09:19,880 basehttp 13519 6154153984 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +WARNING 2025-08-30 23:09:19,897 log 13519 6154153984 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:09:19,897 basehttp 13519 6154153984 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:09:21,089 basehttp 13519 6154153984 "GET /en/operating-theatre/cases/ HTTP/1.1" 200 23266 +WARNING 2025-08-30 23:09:21,109 log 13519 6154153984 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:09:21,109 basehttp 13519 6154153984 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:09:21,190 basehttp 13519 6154153984 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +WARNING 2025-08-30 23:09:22,464 log 13519 6154153984 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:09:22,464 basehttp 13519 6154153984 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +WARNING 2025-08-30 23:09:22,474 log 13519 6154153984 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:09:22,474 basehttp 13519 6154153984 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +ERROR 2025-08-30 23:09:23,731 log 13519 6154153984 Internal Server Error: /en/operating-theatre/blocks/ +Traceback (most recent call last): + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner + response = get_response(request) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.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/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/views/generic/base.py", line 105, in view + return self.dispatch(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/contrib/auth/mixins.py", line 73, in dispatch + return super().dispatch(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/views/generic/base.py", line 144, in dispatch + return handler(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/views/generic/list.py", line 158, in get + self.object_list = self.get_queryset() + ^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/operating_theatre/views.py", line 529, in get_queryset + queryset = ORBlock.objects.filter(tenant=self.request.user.tenant) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/manager.py", line 87, in manager_method + return getattr(self.get_queryset(), name)(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/query.py", line 1493, in filter + return self._filter_or_exclude(False, args, kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/query.py", line 1511, in _filter_or_exclude + clone._filter_or_exclude_inplace(negate, args, kwargs) + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/query.py", line 1518, in _filter_or_exclude_inplace + self._query.add_q(Q(*args, **kwargs)) + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1646, in add_q + clause, _ = self._add_q(q_object, can_reuse) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1678, in _add_q + child_clause, needed_inner = self.build_filter( + ^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1526, in build_filter + lookups, parts, reffed_expression = self.solve_lookup_type(arg, summarize) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1333, in solve_lookup_type + _, field, _, lookup_parts = self.names_to_path(lookup_splitted, self.get_meta()) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1805, in names_to_path + raise FieldError( +django.core.exceptions.FieldError: Cannot resolve keyword 'tenant' into field. Choices are: allocated_minutes, assistant_surgeons, block_id, block_type, created_at, created_by, created_by_id, date, end_time, id, notes, operating_room, operating_room_id, primary_surgeon, primary_surgeon_id, service, special_equipment, special_setup, start_time, status, surgical_cases, updated_at, used_minutes +ERROR 2025-08-30 23:09:23,733 basehttp 13519 6154153984 "GET /en/operating-theatre/blocks/ HTTP/1.1" 500 131315 +WARNING 2025-08-30 23:09:23,747 log 13519 6154153984 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:09:23,748 basehttp 13519 6154153984 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:10:46,406 autoreload 13519 8466948288 /Users/marwanalwali/manus_project/hospital_management_system_v4/operating_theatre/views.py changed, reloading. +INFO 2025-08-30 23:10:46,841 autoreload 72973 8466948288 Watching for file changes with StatReloader +ERROR 2025-08-30 23:10:48,150 log 72973 6190460928 Internal Server Error: /en/operating-theatre/blocks/ +Traceback (most recent call last): + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner + response = get_response(request) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 220, in _get_response + response = response.render() + ^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/response.py", line 114, in render + self.content = self.rendered_content + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/response.py", line 92, in rendered_content + return template.render(context, self._request) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/backends/django.py", line 107, in render + return self.template.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 171, in render + return self._render(context) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 163, in _render + return self.nodelist.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 1016, in render + return SafeString("".join([node.render_annotated(context) for node in self])) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated + return self.render(context) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/loader_tags.py", line 159, in render + return compiled_parent._render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 163, in _render + return self.nodelist.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 1016, in render + return SafeString("".join([node.render_annotated(context) for node in self])) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated + return self.render(context) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/loader_tags.py", line 65, in render + result = block.nodelist.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 1016, in render + return SafeString("".join([node.render_annotated(context) for node in self])) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated + return self.render(context) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/defaulttags.py", line 480, in render + url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/urls/base.py", line 98, in reverse + resolved_url = resolver._reverse_with_prefix(view, prefix, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/urls/resolvers.py", line 831, in _reverse_with_prefix + raise NoReverseMatch(msg) +django.urls.exceptions.NoReverseMatch: Reverse for 'block_create' not found. 'block_create' is not a valid view function or pattern name. +ERROR 2025-08-30 23:10:48,152 basehttp 72973 6190460928 "GET /en/operating-theatre/blocks/ HTTP/1.1" 500 166694 +WARNING 2025-08-30 23:10:48,162 log 72973 6224113664 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:10:48,162 basehttp 72973 6224113664 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:11:59,639 autoreload 72973 8466948288 /Users/marwanalwali/manus_project/hospital_management_system_v4/operating_theatre/views.py changed, reloading. +INFO 2025-08-30 23:11:59,979 autoreload 73526 8466948288 Watching for file changes with StatReloader +ERROR 2025-08-30 23:12:00,455 log 73526 6160510976 Internal Server Error: /en/operating-theatre/blocks/ +Traceback (most recent call last): + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner + response = get_response(request) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 220, in _get_response + response = response.render() + ^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/response.py", line 114, in render + self.content = self.rendered_content + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/response.py", line 92, in rendered_content + return template.render(context, self._request) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/backends/django.py", line 107, in render + return self.template.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 171, in render + return self._render(context) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 163, in _render + return self.nodelist.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 1016, in render + return SafeString("".join([node.render_annotated(context) for node in self])) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated + return self.render(context) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/loader_tags.py", line 159, in render + return compiled_parent._render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 163, in _render + return self.nodelist.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 1016, in render + return SafeString("".join([node.render_annotated(context) for node in self])) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated + return self.render(context) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/loader_tags.py", line 65, in render + result = block.nodelist.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 1016, in render + return SafeString("".join([node.render_annotated(context) for node in self])) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated + return self.render(context) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/defaulttags.py", line 201, in render + return self.nodelist_empty.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 1016, in render + return SafeString("".join([node.render_annotated(context) for node in self])) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated + return self.render(context) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/defaulttags.py", line 480, in render + url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/urls/base.py", line 98, in reverse + resolved_url = resolver._reverse_with_prefix(view, prefix, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/urls/resolvers.py", line 831, in _reverse_with_prefix + raise NoReverseMatch(msg) +django.urls.exceptions.NoReverseMatch: Reverse for 'block_create' not found. 'block_create' is not a valid view function or pattern name. +ERROR 2025-08-30 23:12:00,457 basehttp 73526 6160510976 "GET /en/operating-theatre/blocks/ HTTP/1.1" 500 178383 +WARNING 2025-08-30 23:12:00,472 log 73526 6160510976 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:12:00,472 basehttp 73526 6160510976 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:12:17,555 basehttp 73526 6160510976 "GET /en/operating-theatre/blocks/ HTTP/1.1" 200 24780 +WARNING 2025-08-30 23:12:17,569 log 73526 6160510976 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:12:17,569 basehttp 73526 6160510976 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:12:17,630 basehttp 73526 6160510976 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +ERROR 2025-08-30 23:12:23,298 log 73526 6160510976 Internal Server Error: /en/operating-theatre/blocks/create/ +Traceback (most recent call last): + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner + response = get_response(request) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 220, in _get_response + response = response.render() + ^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/response.py", line 114, in render + self.content = self.rendered_content + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/response.py", line 92, in rendered_content + return template.render(context, self._request) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/backends/django.py", line 107, in render + return self.template.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 171, in render + return self._render(context) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 163, in _render + return self.nodelist.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 1016, in render + return SafeString("".join([node.render_annotated(context) for node in self])) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated + return self.render(context) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/loader_tags.py", line 159, in render + return compiled_parent._render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 163, in _render + return self.nodelist.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 1016, in render + return SafeString("".join([node.render_annotated(context) for node in self])) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated + return self.render(context) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/loader_tags.py", line 65, in render + result = block.nodelist.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 1016, in render + return SafeString("".join([node.render_annotated(context) for node in self])) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated + return self.render(context) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/defaulttags.py", line 480, in render + url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/urls/base.py", line 98, in reverse + resolved_url = resolver._reverse_with_prefix(view, prefix, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/urls/resolvers.py", line 831, in _reverse_with_prefix + raise NoReverseMatch(msg) +django.urls.exceptions.NoReverseMatch: Reverse for 'block_schedule_list' not found. 'block_schedule_list' is not a valid view function or pattern name. +ERROR 2025-08-30 23:12:23,300 basehttp 73526 6160510976 "GET /en/operating-theatre/blocks/create/ HTTP/1.1" 500 172435 +WARNING 2025-08-30 23:12:23,318 log 73526 6160510976 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:12:23,318 basehttp 73526 6160510976 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +ERROR 2025-08-30 23:13:07,873 log 73526 6160510976 Internal Server Error: /en/operating-theatre/blocks/create/ +Traceback (most recent call last): + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner + response = get_response(request) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 220, in _get_response + response = response.render() + ^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/response.py", line 114, in render + self.content = self.rendered_content + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/response.py", line 92, in rendered_content + return template.render(context, self._request) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/backends/django.py", line 107, in render + return self.template.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 171, in render + return self._render(context) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 163, in _render + return self.nodelist.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 1016, in render + return SafeString("".join([node.render_annotated(context) for node in self])) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated + return self.render(context) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/loader_tags.py", line 159, in render + return compiled_parent._render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 163, in _render + return self.nodelist.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 1016, in render + return SafeString("".join([node.render_annotated(context) for node in self])) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated + return self.render(context) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/loader_tags.py", line 65, in render + result = block.nodelist.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 1016, in render + return SafeString("".join([node.render_annotated(context) for node in self])) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated + return self.render(context) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/defaulttags.py", line 480, in render + url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/urls/base.py", line 98, in reverse + resolved_url = resolver._reverse_with_prefix(view, prefix, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/urls/resolvers.py", line 831, in _reverse_with_prefix + raise NoReverseMatch(msg) +django.urls.exceptions.NoReverseMatch: Reverse for 'block_schedule_list' not found. 'block_schedule_list' is not a valid view function or pattern name. +ERROR 2025-08-30 23:13:07,875 basehttp 73526 6160510976 "GET /en/operating-theatre/blocks/create/ HTTP/1.1" 500 172700 +WARNING 2025-08-30 23:13:07,887 log 73526 6160510976 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:13:07,888 basehttp 73526 6160510976 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +ERROR 2025-08-30 23:13:27,250 log 73526 6160510976 Internal Server Error: /en/operating-theatre/blocks/create/ +Traceback (most recent call last): + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner + response = get_response(request) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 220, in _get_response + response = response.render() + ^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/response.py", line 114, in render + self.content = self.rendered_content + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/response.py", line 92, in rendered_content + return template.render(context, self._request) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/backends/django.py", line 107, in render + return self.template.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 171, in render + return self._render(context) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 163, in _render + return self.nodelist.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 1016, in render + return SafeString("".join([node.render_annotated(context) for node in self])) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated + return self.render(context) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/loader_tags.py", line 159, in render + return compiled_parent._render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 163, in _render + return self.nodelist.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 1016, in render + return SafeString("".join([node.render_annotated(context) for node in self])) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated + return self.render(context) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/loader_tags.py", line 65, in render + result = block.nodelist.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 1016, in render + return SafeString("".join([node.render_annotated(context) for node in self])) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated + return self.render(context) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/defaulttags.py", line 480, in render + url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/urls/base.py", line 98, in reverse + resolved_url = resolver._reverse_with_prefix(view, prefix, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/urls/resolvers.py", line 831, in _reverse_with_prefix + raise NoReverseMatch(msg) +django.urls.exceptions.NoReverseMatch: Reverse for 'block_schedule_list' not found. 'block_schedule_list' is not a valid view function or pattern name. +ERROR 2025-08-30 23:13:27,251 basehttp 73526 6160510976 "GET /en/operating-theatre/blocks/create/ HTTP/1.1" 500 172148 +WARNING 2025-08-30 23:13:27,263 log 73526 6160510976 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:13:27,263 basehttp 73526 6160510976 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:13:45,972 basehttp 73526 6160510976 "GET /en/operating-theatre/blocks/create/ HTTP/1.1" 200 31092 +WARNING 2025-08-30 23:13:45,983 log 73526 6160510976 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:13:45,983 basehttp 73526 6160510976 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:13:46,041 basehttp 73526 6160510976 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +WARNING 2025-08-30 23:14:02,603 log 73526 6177337344 Not Found: /.well-known/appspecific/com.chrome.devtools.json +INFO 2025-08-30 23:14:02,603 basehttp 73526 6160510976 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +WARNING 2025-08-30 23:14:02,603 basehttp 73526 6177337344 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +WARNING 2025-08-30 23:14:02,618 log 73526 6177337344 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:14:02,618 basehttp 73526 6177337344 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:14:14,410 basehttp 73526 6177337344 "GET /en/operating-theatre/blocks/?date= HTTP/1.1" 200 24780 +WARNING 2025-08-30 23:14:14,425 log 73526 6177337344 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:14:14,425 basehttp 73526 6177337344 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:14:14,477 basehttp 73526 6177337344 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +WARNING 2025-08-30 23:14:19,528 log 73526 6177337344 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:14:19,528 basehttp 73526 6177337344 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +WARNING 2025-08-30 23:14:19,538 log 73526 6177337344 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:14:19,538 basehttp 73526 6177337344 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +WARNING 2025-08-30 23:14:20,083 log 73526 6194163712 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:14:20,084 basehttp 73526 6194163712 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:14:20,084 basehttp 73526 6160510976 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 23:14:20,088 basehttp 73526 6177337344 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +WARNING 2025-08-30 23:14:20,092 log 73526 6160510976 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:14:20,092 basehttp 73526 6160510976 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +ERROR 2025-08-30 23:14:22,105 log 73526 6160510976 Internal Server Error: /en/operating-theatre/notes/ +Traceback (most recent call last): + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner + response = get_response(request) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.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/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/views/generic/base.py", line 105, in view + return self.dispatch(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/contrib/auth/mixins.py", line 73, in dispatch + return super().dispatch(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/views/generic/base.py", line 144, in dispatch + return handler(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/views/generic/list.py", line 158, in get + self.object_list = self.get_queryset() + ^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/operating_theatre/views.py", line 863, in get_queryset + queryset = SurgicalNote.objects.filter(tenant=self.request.user.tenant) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/manager.py", line 87, in manager_method + return getattr(self.get_queryset(), name)(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/query.py", line 1493, in filter + return self._filter_or_exclude(False, args, kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/query.py", line 1511, in _filter_or_exclude + clone._filter_or_exclude_inplace(negate, args, kwargs) + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/query.py", line 1518, in _filter_or_exclude_inplace + self._query.add_q(Q(*args, **kwargs)) + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1646, in add_q + clause, _ = self._add_q(q_object, can_reuse) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1678, in _add_q + child_clause, needed_inner = self.build_filter( + ^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1526, in build_filter + lookups, parts, reffed_expression = self.solve_lookup_type(arg, summarize) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1333, in solve_lookup_type + _, field, _, lookup_parts = self.names_to_path(lookup_splitted, self.get_meta()) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1805, in names_to_path + raise FieldError( +django.core.exceptions.FieldError: Cannot resolve keyword 'tenant' into field. Choices are: blood_transfusion, closure, complications, condition, created_at, disposition, drains, estimated_blood_loss, findings, follow_up, id, implants, indication, note_id, planned_procedure, postop_instructions, postoperative_diagnosis, preoperative_diagnosis, procedure_performed, signed_datetime, specimens, status, surgeon, surgeon_id, surgical_approach, surgical_case, surgical_case_id, technique, template_used, template_used_id, updated_at +ERROR 2025-08-30 23:14:22,107 basehttp 73526 6160510976 "GET /en/operating-theatre/notes/ HTTP/1.1" 500 132151 +WARNING 2025-08-30 23:14:22,129 log 73526 6160510976 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:14:22,129 basehttp 73526 6160510976 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:14:52,410 autoreload 73526 8466948288 /Users/marwanalwali/manus_project/hospital_management_system_v4/operating_theatre/views.py changed, reloading. +INFO 2025-08-30 23:14:52,760 autoreload 74871 8466948288 Watching for file changes with StatReloader +ERROR 2025-08-30 23:14:53,680 log 74871 6341865472 Internal Server Error: /en/operating-theatre/notes/ +Traceback (most recent call last): + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner + response = get_response(request) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.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/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/views/generic/base.py", line 105, in view + return self.dispatch(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/contrib/auth/mixins.py", line 73, in dispatch + return super().dispatch(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/views/generic/base.py", line 144, in dispatch + return handler(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/views/generic/list.py", line 158, in get + self.object_list = self.get_queryset() + ^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/operating_theatre/views.py", line 863, in get_queryset + queryset = SurgicalNote.objects.filter(admission__tenant=self.request.user.tenant) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/manager.py", line 87, in manager_method + return getattr(self.get_queryset(), name)(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/query.py", line 1493, in filter + return self._filter_or_exclude(False, args, kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/query.py", line 1511, in _filter_or_exclude + clone._filter_or_exclude_inplace(negate, args, kwargs) + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/query.py", line 1518, in _filter_or_exclude_inplace + self._query.add_q(Q(*args, **kwargs)) + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1646, in add_q + clause, _ = self._add_q(q_object, can_reuse) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1678, in _add_q + child_clause, needed_inner = self.build_filter( + ^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1526, in build_filter + lookups, parts, reffed_expression = self.solve_lookup_type(arg, summarize) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1333, in solve_lookup_type + _, field, _, lookup_parts = self.names_to_path(lookup_splitted, self.get_meta()) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1805, in names_to_path + raise FieldError( +django.core.exceptions.FieldError: Cannot resolve keyword 'admission' into field. Choices are: blood_transfusion, closure, complications, condition, created_at, disposition, drains, estimated_blood_loss, findings, follow_up, id, implants, indication, note_id, planned_procedure, postop_instructions, postoperative_diagnosis, preoperative_diagnosis, procedure_performed, signed_datetime, specimens, status, surgeon, surgeon_id, surgical_approach, surgical_case, surgical_case_id, technique, template_used, template_used_id, updated_at +ERROR 2025-08-30 23:14:53,682 basehttp 74871 6341865472 "GET /en/operating-theatre/notes/ HTTP/1.1" 500 132512 +WARNING 2025-08-30 23:14:53,692 log 74871 6341865472 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:14:53,692 basehttp 74871 6341865472 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +ERROR 2025-08-30 23:14:55,678 log 74871 6341865472 Internal Server Error: /en/operating-theatre/notes/ +Traceback (most recent call last): + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner + response = get_response(request) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.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/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/views/generic/base.py", line 105, in view + return self.dispatch(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/contrib/auth/mixins.py", line 73, in dispatch + return super().dispatch(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/views/generic/base.py", line 144, in dispatch + return handler(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/views/generic/list.py", line 158, in get + self.object_list = self.get_queryset() + ^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/operating_theatre/views.py", line 863, in get_queryset + queryset = SurgicalNote.objects.filter(admission__tenant=self.request.user.tenant) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/manager.py", line 87, in manager_method + return getattr(self.get_queryset(), name)(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/query.py", line 1493, in filter + return self._filter_or_exclude(False, args, kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/query.py", line 1511, in _filter_or_exclude + clone._filter_or_exclude_inplace(negate, args, kwargs) + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/query.py", line 1518, in _filter_or_exclude_inplace + self._query.add_q(Q(*args, **kwargs)) + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1646, in add_q + clause, _ = self._add_q(q_object, can_reuse) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1678, in _add_q + child_clause, needed_inner = self.build_filter( + ^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1526, in build_filter + lookups, parts, reffed_expression = self.solve_lookup_type(arg, summarize) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1333, in solve_lookup_type + _, field, _, lookup_parts = self.names_to_path(lookup_splitted, self.get_meta()) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1805, in names_to_path + raise FieldError( +django.core.exceptions.FieldError: Cannot resolve keyword 'admission' into field. Choices are: blood_transfusion, closure, complications, condition, created_at, disposition, drains, estimated_blood_loss, findings, follow_up, id, implants, indication, note_id, planned_procedure, postop_instructions, postoperative_diagnosis, preoperative_diagnosis, procedure_performed, signed_datetime, specimens, status, surgeon, surgeon_id, surgical_approach, surgical_case, surgical_case_id, technique, template_used, template_used_id, updated_at +ERROR 2025-08-30 23:14:55,679 basehttp 74871 6341865472 "GET /en/operating-theatre/notes/ HTTP/1.1" 500 132512 +WARNING 2025-08-30 23:14:55,693 log 74871 6341865472 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:14:55,693 basehttp 74871 6341865472 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:15:29,047 autoreload 74871 8466948288 /Users/marwanalwali/manus_project/hospital_management_system_v4/operating_theatre/views.py changed, reloading. +INFO 2025-08-30 23:15:29,375 autoreload 75124 8466948288 Watching for file changes with StatReloader +ERROR 2025-08-30 23:15:30,175 log 75124 6134935552 Internal Server Error: /en/operating-theatre/notes/ +Traceback (most recent call last): + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/options.py", line 683, in get_field + return self.fields_map[field_name] + ~~~~~~~~~~~~~~~^^^^^^^^^^^^ +KeyError: 'note_type' + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner + response = get_response(request) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.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/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/views/generic/base.py", line 105, in view + return self.dispatch(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/contrib/auth/mixins.py", line 73, in dispatch + return super().dispatch(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/views/generic/base.py", line 144, in dispatch + return handler(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/views/generic/list.py", line 178, in get + context = self.get_context_data() + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/operating_theatre/views.py", line 898, in get_context_data + 'note_types': SurgicalNote._meta.get_field('note_type').choices, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/options.py", line 685, in get_field + raise FieldDoesNotExist( +django.core.exceptions.FieldDoesNotExist: SurgicalNote has no field named 'note_type' +ERROR 2025-08-30 23:15:30,177 basehttp 75124 6134935552 "GET /en/operating-theatre/notes/ HTTP/1.1" 500 94290 +WARNING 2025-08-30 23:15:30,191 log 75124 6134935552 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:15:30,191 basehttp 75124 6134935552 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:17:49,851 autoreload 75124 8466948288 /Users/marwanalwali/manus_project/hospital_management_system_v4/operating_theatre/views.py changed, reloading. +INFO 2025-08-30 23:17:50,192 autoreload 76128 8466948288 Watching for file changes with StatReloader +INFO 2025-08-30 23:17:51,246 basehttp 76128 6158446592 "GET /en/operating-theatre/notes/ HTTP/1.1" 200 25795 +WARNING 2025-08-30 23:17:51,259 log 76128 6158446592 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:17:51,259 basehttp 76128 6158446592 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:17:51,318 basehttp 76128 6158446592 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 23:18:28,785 autoreload 76128 8466948288 /Users/marwanalwali/manus_project/hospital_management_system_v4/operating_theatre/views.py changed, reloading. +INFO 2025-08-30 23:18:29,134 autoreload 76444 8466948288 Watching for file changes with StatReloader +ERROR 2025-08-30 23:18:29,722 log 76444 6138015744 Internal Server Error: /en/operating-theatre/notes/ +Traceback (most recent call last): + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner + response = get_response(request) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 220, in _get_response + response = response.render() + ^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/response.py", line 114, in render + self.content = self.rendered_content + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/response.py", line 92, in rendered_content + return template.render(context, self._request) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/backends/django.py", line 107, in render + return self.template.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 171, in render + return self._render(context) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 163, in _render + return self.nodelist.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 1016, in render + return SafeString("".join([node.render_annotated(context) for node in self])) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated + return self.render(context) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/loader_tags.py", line 159, in render + return compiled_parent._render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 163, in _render + return self.nodelist.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 1016, in render + return SafeString("".join([node.render_annotated(context) for node in self])) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated + return self.render(context) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/loader_tags.py", line 65, in render + result = block.nodelist.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 1016, in render + return SafeString("".join([node.render_annotated(context) for node in self])) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated + return self.render(context) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/defaulttags.py", line 480, in render + url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/urls/base.py", line 98, in reverse + resolved_url = resolver._reverse_with_prefix(view, prefix, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/urls/resolvers.py", line 831, in _reverse_with_prefix + raise NoReverseMatch(msg) +django.urls.exceptions.NoReverseMatch: Reverse for 'operative_note_create' not found. 'operative_note_create' is not a valid view function or pattern name. +ERROR 2025-08-30 23:18:29,724 basehttp 76444 6138015744 "GET /en/operating-theatre/notes/ HTTP/1.1" 500 163602 +WARNING 2025-08-30 23:18:29,740 log 76444 6138015744 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:18:29,740 basehttp 76444 6138015744 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +ERROR 2025-08-30 23:19:01,922 log 76444 6138015744 Internal Server Error: /en/operating-theatre/notes/ +Traceback (most recent call last): + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner + response = get_response(request) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 220, in _get_response + response = response.render() + ^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/response.py", line 114, in render + self.content = self.rendered_content + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/response.py", line 92, in rendered_content + return template.render(context, self._request) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/backends/django.py", line 107, in render + return self.template.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 171, in render + return self._render(context) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 163, in _render + return self.nodelist.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 1016, in render + return SafeString("".join([node.render_annotated(context) for node in self])) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated + return self.render(context) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/loader_tags.py", line 159, in render + return compiled_parent._render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 163, in _render + return self.nodelist.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 1016, in render + return SafeString("".join([node.render_annotated(context) for node in self])) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated + return self.render(context) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/loader_tags.py", line 65, in render + result = block.nodelist.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 1016, in render + return SafeString("".join([node.render_annotated(context) for node in self])) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated + return self.render(context) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/defaulttags.py", line 480, in render + url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/urls/base.py", line 98, in reverse + resolved_url = resolver._reverse_with_prefix(view, prefix, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/urls/resolvers.py", line 831, in _reverse_with_prefix + raise NoReverseMatch(msg) +django.urls.exceptions.NoReverseMatch: Reverse for 'operative_note_list' not found. 'operative_note_list' is not a valid view function or pattern name. +ERROR 2025-08-30 23:19:01,924 basehttp 76444 6138015744 "GET /en/operating-theatre/notes/ HTTP/1.1" 500 162923 +WARNING 2025-08-30 23:19:01,937 log 76444 6138015744 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:19:01,937 basehttp 76444 6138015744 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +ERROR 2025-08-30 23:19:41,646 log 76444 6138015744 Internal Server Error: /en/operating-theatre/notes/ +Traceback (most recent call last): + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner + response = get_response(request) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 220, in _get_response + response = response.render() + ^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/response.py", line 114, in render + self.content = self.rendered_content + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/response.py", line 92, in rendered_content + return template.render(context, self._request) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/backends/django.py", line 107, in render + return self.template.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 171, in render + return self._render(context) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 163, in _render + return self.nodelist.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 1016, in render + return SafeString("".join([node.render_annotated(context) for node in self])) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated + return self.render(context) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/loader_tags.py", line 159, in render + return compiled_parent._render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 163, in _render + return self.nodelist.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 1016, in render + return SafeString("".join([node.render_annotated(context) for node in self])) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated + return self.render(context) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/loader_tags.py", line 65, in render + result = block.nodelist.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 1016, in render + return SafeString("".join([node.render_annotated(context) for node in self])) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated + return self.render(context) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/defaulttags.py", line 201, in render + return self.nodelist_empty.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 1016, in render + return SafeString("".join([node.render_annotated(context) for node in self])) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated + return self.render(context) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/defaulttags.py", line 480, in render + url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/urls/base.py", line 98, in reverse + resolved_url = resolver._reverse_with_prefix(view, prefix, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/urls/resolvers.py", line 831, in _reverse_with_prefix + raise NoReverseMatch(msg) +django.urls.exceptions.NoReverseMatch: Reverse for 'operative_note_create' not found. 'operative_note_create' is not a valid view function or pattern name. +ERROR 2025-08-30 23:19:41,648 basehttp 76444 6138015744 "GET /en/operating-theatre/notes/ HTTP/1.1" 500 176088 +WARNING 2025-08-30 23:19:41,660 log 76444 6138015744 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:19:41,660 basehttp 76444 6138015744 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:20:54,383 autoreload 76444 8466948288 /Users/marwanalwali/manus_project/hospital_management_system_v4/operating_theatre/views.py changed, reloading. +INFO 2025-08-30 23:20:54,693 autoreload 77545 8466948288 Watching for file changes with StatReloader +INFO 2025-08-30 23:20:55,803 basehttp 77545 6194491392 "GET /en/operating-theatre/notes/ HTTP/1.1" 200 24420 +WARNING 2025-08-30 23:20:55,814 log 77545 6194491392 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:20:55,814 basehttp 77545 6194491392 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:20:55,874 basehttp 77545 6194491392 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 23:20:58,091 basehttp 77545 6194491392 "GET /en/operating-theatre/notes/ HTTP/1.1" 200 24420 +WARNING 2025-08-30 23:20:58,104 log 77545 6194491392 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:20:58,104 basehttp 77545 6194491392 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:20:58,156 basehttp 77545 6194491392 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 23:21:00,261 basehttp 77545 6194491392 "GET /en/operating-theatre/notes/create/ HTTP/1.1" 200 39318 +WARNING 2025-08-30 23:21:00,277 log 77545 6194491392 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:21:00,277 basehttp 77545 6194491392 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:21:00,329 basehttp 77545 6194491392 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 23:21:40,582 autoreload 77545 8466948288 /Users/marwanalwali/manus_project/hospital_management_system_v4/operating_theatre/views.py changed, reloading. +INFO 2025-08-30 23:21:40,928 autoreload 77865 8466948288 Watching for file changes with StatReloader +INFO 2025-08-30 23:21:42,623 basehttp 77865 6126071808 "POST /en/operating-theatre/notes/create/ HTTP/1.1" 200 39635 +WARNING 2025-08-30 23:21:42,642 log 77865 6126071808 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:21:42,642 basehttp 77865 6126071808 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:21:42,695 basehttp 77865 6126071808 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 23:21:50,748 basehttp 77865 6126071808 "GET /en/operating-theatre/notes/create/ HTTP/1.1" 200 39318 +WARNING 2025-08-30 23:21:50,762 log 77865 6126071808 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:21:50,763 basehttp 77865 6126071808 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +WARNING 2025-08-30 23:21:51,420 log 77865 6126071808 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:21:51,421 basehttp 77865 6126071808 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +WARNING 2025-08-30 23:21:51,430 log 77865 6126071808 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:21:51,430 basehttp 77865 6126071808 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +WARNING 2025-08-30 23:21:52,994 log 77865 6159724544 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:21:52,995 basehttp 77865 6159724544 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:21:52,998 basehttp 77865 6142898176 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 23:21:52,999 basehttp 77865 6126071808 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +WARNING 2025-08-30 23:21:53,003 log 77865 6159724544 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:21:53,003 basehttp 77865 6159724544 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +ERROR 2025-08-30 23:21:54,571 log 77865 6159724544 Internal Server Error: /en/operating-theatre/equipment/ +Traceback (most recent call last): + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner + response = get_response(request) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.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/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/views/generic/base.py", line 105, in view + return self.dispatch(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/contrib/auth/mixins.py", line 73, in dispatch + return super().dispatch(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/views/generic/base.py", line 144, in dispatch + return handler(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/views/generic/list.py", line 158, in get + self.object_list = self.get_queryset() + ^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/operating_theatre/views.py", line 964, in get_queryset + queryset = EquipmentUsage.objects.filter(tenant=self.request.user.tenant) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/manager.py", line 87, in manager_method + return getattr(self.get_queryset(), name)(*args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/query.py", line 1493, in filter + return self._filter_or_exclude(False, args, kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/query.py", line 1511, in _filter_or_exclude + clone._filter_or_exclude_inplace(negate, args, kwargs) + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/query.py", line 1518, in _filter_or_exclude_inplace + self._query.add_q(Q(*args, **kwargs)) + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1646, in add_q + clause, _ = self._add_q(q_object, can_reuse) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1678, in _add_q + child_clause, needed_inner = self.build_filter( + ^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1526, in build_filter + lookups, parts, reffed_expression = self.solve_lookup_type(arg, summarize) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1333, in solve_lookup_type + _, field, _, lookup_parts = self.names_to_path(lookup_splitted, self.get_meta()) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1805, in names_to_path + raise FieldError( +django.core.exceptions.FieldError: Cannot resolve keyword 'tenant' into field. Choices are: created_at, end_time, equipment_name, equipment_type, expiration_date, id, lot_number, manufacturer, model, notes, quantity_used, recorded_by, recorded_by_id, serial_number, start_time, sterilization_date, surgical_case, surgical_case_id, total_cost, unit_cost, unit_of_measure, updated_at, usage_id +ERROR 2025-08-30 23:21:54,573 basehttp 77865 6159724544 "GET /en/operating-theatre/equipment/ HTTP/1.1" 500 131436 +WARNING 2025-08-30 23:21:54,587 log 77865 6159724544 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:21:54,587 basehttp 77865 6159724544 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:25:34,358 autoreload 77865 8466948288 /Users/marwanalwali/manus_project/hospital_management_system_v4/operating_theatre/views.py changed, reloading. +INFO 2025-08-30 23:25:34,671 autoreload 79669 8466948288 Watching for file changes with StatReloader +ERROR 2025-08-30 23:25:35,879 log 79669 6127349760 Internal Server Error: /en/operating-theatre/equipment/ +Traceback (most recent call last): + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/options.py", line 683, in get_field + return self.fields_map[field_name] + ~~~~~~~~~~~~~~~^^^^^^^^^^^^ +KeyError: 'status' + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner + response = get_response(request) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.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/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/views/generic/base.py", line 105, in view + return self.dispatch(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/contrib/auth/mixins.py", line 73, in dispatch + return super().dispatch(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/views/generic/base.py", line 144, in dispatch + return handler(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/views/generic/list.py", line 178, in get + context = self.get_context_data() + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/operating_theatre/views.py", line 997, in get_context_data + 'statuses': EquipmentUsage._meta.get_field('status').choices, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/options.py", line 685, in get_field + raise FieldDoesNotExist( +django.core.exceptions.FieldDoesNotExist: EquipmentUsage has no field named 'status' +ERROR 2025-08-30 23:25:35,881 basehttp 79669 6127349760 "GET /en/operating-theatre/equipment/ HTTP/1.1" 500 94429 +WARNING 2025-08-30 23:25:35,891 log 79669 6127349760 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:25:35,891 basehttp 79669 6127349760 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:26:44,308 autoreload 79669 8466948288 /Users/marwanalwali/manus_project/hospital_management_system_v4/operating_theatre/views.py changed, reloading. +INFO 2025-08-30 23:26:44,637 autoreload 80166 8466948288 Watching for file changes with StatReloader +ERROR 2025-08-30 23:26:46,700 log 80166 6128857088 Internal Server Error: /en/operating-theatre/equipment/ +Traceback (most recent call last): + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner + response = get_response(request) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 220, in _get_response + response = response.render() + ^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/response.py", line 114, in render + self.content = self.rendered_content + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/response.py", line 92, in rendered_content + return template.render(context, self._request) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/backends/django.py", line 107, in render + return self.template.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 171, in render + return self._render(context) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 163, in _render + return self.nodelist.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 1016, in render + return SafeString("".join([node.render_annotated(context) for node in self])) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated + return self.render(context) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/loader_tags.py", line 159, in render + return compiled_parent._render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 163, in _render + return self.nodelist.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 1016, in render + return SafeString("".join([node.render_annotated(context) for node in self])) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated + return self.render(context) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/loader_tags.py", line 65, in render + result = block.nodelist.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 1016, in render + return SafeString("".join([node.render_annotated(context) for node in self])) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated + return self.render(context) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/defaulttags.py", line 480, in render + url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/urls/base.py", line 98, in reverse + resolved_url = resolver._reverse_with_prefix(view, prefix, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/urls/resolvers.py", line 831, in _reverse_with_prefix + raise NoReverseMatch(msg) +django.urls.exceptions.NoReverseMatch: Reverse for 'equipment_create' not found. 'equipment_create' is not a valid view function or pattern name. +ERROR 2025-08-30 23:26:46,702 basehttp 80166 6128857088 "GET /en/operating-theatre/equipment/ HTTP/1.1" 500 166267 +WARNING 2025-08-30 23:26:46,716 log 80166 6128857088 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:26:46,717 basehttp 80166 6128857088 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:27:35,669 autoreload 80166 8466948288 /Users/marwanalwali/manus_project/hospital_management_system_v4/operating_theatre/views.py changed, reloading. +INFO 2025-08-30 23:27:35,989 autoreload 80589 8466948288 Watching for file changes with StatReloader +INFO 2025-08-30 23:28:12,423 autoreload 80589 8466948288 /Users/marwanalwali/manus_project/hospital_management_system_v4/operating_theatre/urls.py changed, reloading. +INFO 2025-08-30 23:28:12,749 autoreload 80919 8466948288 Watching for file changes with StatReloader +INFO 2025-08-30 23:28:13,720 basehttp 80919 6341865472 "GET /en/operating-theatre/equipment/ HTTP/1.1" 200 25152 +WARNING 2025-08-30 23:28:13,733 log 80919 6341865472 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:28:13,733 basehttp 80919 6341865472 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:28:13,795 basehttp 80919 6341865472 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 23:28:54,655 basehttp 80919 6341865472 "GET /en/operating-theatre/equipment/ HTTP/1.1" 200 29350 +WARNING 2025-08-30 23:28:54,669 log 80919 6341865472 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:28:54,670 basehttp 80919 6341865472 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:28:54,734 basehttp 80919 6341865472 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 23:29:54,739 basehttp 80919 6341865472 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 23:30:29,157 basehttp 80919 6341865472 "GET /en/operating-theatre/equipment/ HTTP/1.1" 200 29350 +WARNING 2025-08-30 23:30:29,168 log 80919 6341865472 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:30:29,168 basehttp 80919 6341865472 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:30:29,215 basehttp 80919 6341865472 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +WARNING 2025-08-30 23:30:29,889 log 80919 6375518208 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:30:29,891 basehttp 80919 6375518208 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:30:29,893 basehttp 80919 6375518208 - Broken pipe from ('127.0.0.1', 55011) +INFO 2025-08-30 23:30:29,895 basehttp 80919 6358691840 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 23:30:29,896 basehttp 80919 6341865472 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +WARNING 2025-08-30 23:30:29,898 log 80919 6392344576 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:30:29,898 basehttp 80919 6392344576 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +ERROR 2025-08-30 23:30:30,931 log 80919 6392344576 Internal Server Error: /en/operating-theatre/ +Traceback (most recent call last): + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner + response = get_response(request) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 220, in _get_response + response = response.render() + ^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/response.py", line 114, in render + self.content = self.rendered_content + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/response.py", line 92, in rendered_content + return template.render(context, self._request) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/backends/django.py", line 107, in render + return self.template.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 171, in render + return self._render(context) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 163, in _render + return self.nodelist.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 1016, in render + return SafeString("".join([node.render_annotated(context) for node in self])) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated + return self.render(context) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/loader_tags.py", line 159, in render + return compiled_parent._render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 163, in _render + return self.nodelist.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 1016, in render + return SafeString("".join([node.render_annotated(context) for node in self])) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated + return self.render(context) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/loader_tags.py", line 65, in render + result = block.nodelist.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 1016, in render + return SafeString("".join([node.render_annotated(context) for node in self])) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated + return self.render(context) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/defaulttags.py", line 480, in render + url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/urls/base.py", line 98, in reverse + resolved_url = resolver._reverse_with_prefix(view, prefix, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/urls/resolvers.py", line 831, in _reverse_with_prefix + raise NoReverseMatch(msg) +django.urls.exceptions.NoReverseMatch: Reverse for 'equipment_usage_list' not found. 'equipment_usage_list' is not a valid view function or pattern name. +ERROR 2025-08-30 23:30:30,933 basehttp 80919 6392344576 "GET /en/operating-theatre/ HTTP/1.1" 500 176469 +WARNING 2025-08-30 23:30:30,945 log 80919 6392344576 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:30:30,946 basehttp 80919 6392344576 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +ERROR 2025-08-30 23:30:32,369 log 80919 6392344576 Internal Server Error: /en/operating-theatre/ +Traceback (most recent call last): + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner + response = get_response(request) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 220, in _get_response + response = response.render() + ^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/response.py", line 114, in render + self.content = self.rendered_content + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/response.py", line 92, in rendered_content + return template.render(context, self._request) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/backends/django.py", line 107, in render + return self.template.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 171, in render + return self._render(context) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 163, in _render + return self.nodelist.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 1016, in render + return SafeString("".join([node.render_annotated(context) for node in self])) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated + return self.render(context) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/loader_tags.py", line 159, in render + return compiled_parent._render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 163, in _render + return self.nodelist.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 1016, in render + return SafeString("".join([node.render_annotated(context) for node in self])) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated + return self.render(context) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/loader_tags.py", line 65, in render + result = block.nodelist.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 1016, in render + return SafeString("".join([node.render_annotated(context) for node in self])) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated + return self.render(context) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/defaulttags.py", line 480, in render + url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/urls/base.py", line 98, in reverse + resolved_url = resolver._reverse_with_prefix(view, prefix, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/urls/resolvers.py", line 831, in _reverse_with_prefix + raise NoReverseMatch(msg) +django.urls.exceptions.NoReverseMatch: Reverse for 'equipment_usage_list' not found. 'equipment_usage_list' is not a valid view function or pattern name. +ERROR 2025-08-30 23:30:32,370 basehttp 80919 6392344576 "GET /en/operating-theatre/ HTTP/1.1" 500 176469 +WARNING 2025-08-30 23:30:32,382 log 80919 6392344576 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:30:32,382 basehttp 80919 6392344576 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:30:56,124 basehttp 80919 6392344576 "GET /en/operating-theatre/ HTTP/1.1" 200 34120 +WARNING 2025-08-30 23:30:56,140 log 80919 6392344576 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:30:56,140 basehttp 80919 6392344576 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:30:56,230 basehttp 80919 6392344576 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 23:30:56,232 basehttp 80919 6341865472 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 23:30:59,793 basehttp 80919 6341865472 "GET /en/operating-theatre/notes/ HTTP/1.1" 200 26947 +WARNING 2025-08-30 23:30:59,813 log 80919 6341865472 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:30:59,813 basehttp 80919 6341865472 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:30:59,895 basehttp 80919 6341865472 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +WARNING 2025-08-30 23:31:06,901 log 80919 6341865472 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:31:06,902 basehttp 80919 6341865472 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +WARNING 2025-08-30 23:31:06,913 log 80919 6341865472 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:31:06,913 basehttp 80919 6341865472 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:31:07,960 basehttp 80919 6341865472 "GET /en/operating-theatre/cases/ HTTP/1.1" 200 23266 +WARNING 2025-08-30 23:31:07,974 log 80919 6341865472 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:31:07,974 basehttp 80919 6341865472 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:31:08,023 basehttp 80919 6341865472 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +WARNING 2025-08-30 23:31:10,374 log 80919 6341865472 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:31:10,375 basehttp 80919 6341865472 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +WARNING 2025-08-30 23:31:10,389 log 80919 6341865472 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:31:10,389 basehttp 80919 6341865472 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:31:11,384 basehttp 80919 6341865472 "GET /en/operating-theatre/rooms/ HTTP/1.1" 200 30821 +WARNING 2025-08-30 23:31:11,404 log 80919 6341865472 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:31:11,404 basehttp 80919 6341865472 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:31:11,454 basehttp 80919 6341865472 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 23:31:11,456 basehttp 80919 6392344576 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +INFO 2025-08-30 23:31:20,967 basehttp 80919 6392344576 "GET /en/operating-theatre/rooms/create/ HTTP/1.1" 200 48886 +WARNING 2025-08-30 23:31:20,985 log 80919 6392344576 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:31:20,985 basehttp 80919 6392344576 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:31:21,045 basehttp 80919 6392344576 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +WARNING 2025-08-30 23:31:37,683 log 80919 6392344576 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:31:37,683 basehttp 80919 6392344576 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +WARNING 2025-08-30 23:31:37,694 log 80919 6392344576 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:31:37,694 basehttp 80919 6392344576 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +WARNING 2025-08-30 23:31:38,427 log 80919 6341865472 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:31:38,428 basehttp 80919 6341865472 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:31:38,428 basehttp 80919 6392344576 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +WARNING 2025-08-30 23:31:38,436 log 80919 6392344576 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:31:38,436 basehttp 80919 6392344576 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +ERROR 2025-08-30 23:31:42,876 log 80919 6392344576 Internal Server Error: /en/operating-theatre/templates/ +Traceback (most recent call last): + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner + response = get_response(request) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.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/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/views/generic/base.py", line 105, in view + return self.dispatch(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/contrib/auth/mixins.py", line 73, in dispatch + return super().dispatch(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/views/generic/base.py", line 144, in dispatch + return handler(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/views/generic/list.py", line 158, in get + self.object_list = self.get_queryset() + ^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/operating_theatre/views.py", line 383, in get_queryset + return queryset.order_by('template_name') + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/query.py", line 1722, in order_by + obj.query.add_ordering(*field_names) + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 2291, in add_ordering + self.names_to_path(item.split(LOOKUP_SEP), self.model._meta) + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1805, in names_to_path + raise FieldError( +django.core.exceptions.FieldError: Cannot resolve keyword 'template_name' into field. Choices are: closure_template, complications_template, created_at, created_by, created_by_id, description, findings_template, id, implants_template, indication_template, is_active, is_default, name, planned_procedure_template, postop_instructions_template, postoperative_diagnosis_template, preoperative_diagnosis_template, procedure_performed_template, procedure_type, specialty, specimens_template, surgical_approach_template, surgical_notes, technique_template, template_id, tenant, tenant_id, updated_at, usage_count +ERROR 2025-08-30 23:31:42,878 basehttp 80919 6392344576 "GET /en/operating-theatre/templates/ HTTP/1.1" 500 103640 +WARNING 2025-08-30 23:31:42,897 log 80919 6392344576 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:31:42,897 basehttp 80919 6392344576 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:32:31,131 autoreload 80919 8466948288 /Users/marwanalwali/manus_project/hospital_management_system_v4/operating_theatre/views.py changed, reloading. +INFO 2025-08-30 23:32:31,464 autoreload 82857 8466948288 Watching for file changes with StatReloader +INFO 2025-08-30 23:32:31,727 basehttp 82857 6163116032 "GET /en/operating-theatre/templates/ HTTP/1.1" 200 41476 +WARNING 2025-08-30 23:32:31,743 basehttp 82857 6230421504 "GET /static/assets/plugins/datatables.net-bs5/js/dataTables.bootstrap5.min.js HTTP/1.1" 404 2122 +WARNING 2025-08-30 23:32:31,745 basehttp 82857 6196768768 "GET /static/assets/plugins/datatables.net-responsive-bs5/css/responsive.bootstrap5.min.css HTTP/1.1" 404 2161 +WARNING 2025-08-30 23:32:31,745 basehttp 82857 6179942400 "GET /static/assets/plugins/datatables.net-bs5/css/dataTables.bootstrap5.min.css HTTP/1.1" 404 2128 +WARNING 2025-08-30 23:32:31,745 basehttp 82857 6213595136 "GET /static/assets/plugins/datatables.net/js/jquery.dataTables.min.js HTTP/1.1" 404 2098 +WARNING 2025-08-30 23:32:31,748 basehttp 82857 6196768768 "GET /static/assets/plugins/datatables.net-responsive-bs5/js/responsive.bootstrap5.min.js HTTP/1.1" 404 2155 +WARNING 2025-08-30 23:32:31,748 basehttp 82857 6247247872 "GET /static/assets/plugins/datatables.net-responsive/js/dataTables.responsive.min.js HTTP/1.1" 404 2143 +WARNING 2025-08-30 23:32:31,750 log 82857 6163116032 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:32:31,750 basehttp 82857 6163116032 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:32:31,786 basehttp 82857 6163116032 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 23:33:31,808 basehttp 82857 6163116032 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +ERROR 2025-08-30 23:33:32,403 log 82857 6163116032 Internal Server Error: /en/operating-theatre/templates/create/ +Traceback (most recent call last): + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner + response = get_response(request) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 220, in _get_response + response = response.render() + ^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/response.py", line 114, in render + self.content = self.rendered_content + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.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/manus_project/hospital_management_system_v4/.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/manus_project/hospital_management_system_v4/.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: operating_theatre/surgical_note_template_form.html +ERROR 2025-08-30 23:33:32,404 basehttp 82857 6163116032 "GET /en/operating-theatre/templates/create/ HTTP/1.1" 500 83676 +WARNING 2025-08-30 23:33:32,422 log 82857 6163116032 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:33:32,423 basehttp 82857 6163116032 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:34:02,158 autoreload 82857 8466948288 /Users/marwanalwali/manus_project/hospital_management_system_v4/operating_theatre/views.py changed, reloading. +INFO 2025-08-30 23:34:02,486 autoreload 83561 8466948288 Watching for file changes with StatReloader +ERROR 2025-08-30 23:34:03,438 log 83561 6132264960 Internal Server Error: /en/operating-theatre/templates/create/ +Traceback (most recent call last): + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner + response = get_response(request) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 220, in _get_response + response = response.render() + ^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/response.py", line 114, in render + self.content = self.rendered_content + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.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/manus_project/hospital_management_system_v4/.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/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/loader.py", line 42, in select_template + return engine.get_template(template_name) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/backends/django.py", line 79, in get_template + return Template(self.engine.get_template(template_name), self) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/engine.py", line 177, in get_template + template, origin = self.find_template(template_name) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/engine.py", line 159, in find_template + template = loader.get_template(name, skip=skip) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/loaders/cached.py", line 57, in get_template + template = super().get_template(template_name, skip) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/loaders/base.py", line 28, in get_template + return Template( + ^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 154, in __init__ + self.nodelist = self.compile_nodelist() + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 196, in compile_nodelist + nodelist = parser.parse() + ^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 518, in parse + raise self.error(token, e) + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 516, in parse + compiled_result = compile_func(self, token) + ^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/loader_tags.py", line 299, in do_extends + nodelist = parser.parse() + ^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 518, in parse + raise self.error(token, e) + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 516, in parse + compiled_result = compile_func(self, token) + ^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/loader_tags.py", line 234, in do_block + nodelist = parser.parse(("endblock",)) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 489, in parse + raise self.error(token, e) + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 487, in parse + filter_expression = self.compile_filter(token.contents) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 609, in compile_filter + return FilterExpression(token, self) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 710, in __init__ + raise TemplateSyntaxError( +django.template.exceptions.TemplateSyntaxError: Could not parse the remainder: '${variable' from '${variable' +ERROR 2025-08-30 23:34:03,439 basehttp 83561 6132264960 "GET /en/operating-theatre/templates/create/ HTTP/1.1" 500 233244 +WARNING 2025-08-30 23:34:03,449 log 83561 6132264960 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:34:03,449 basehttp 83561 6132264960 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:34:29,733 autoreload 83561 8466948288 /Users/marwanalwali/manus_project/hospital_management_system_v4/operating_theatre/views.py changed, reloading. +INFO 2025-08-30 23:34:30,068 autoreload 83720 8466948288 Watching for file changes with StatReloader +ERROR 2025-08-30 23:36:28,012 log 83720 6133510144 Internal Server Error: /en/operating-theatre/templates/create/ +Traceback (most recent call last): + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner + response = get_response(request) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 220, in _get_response + response = response.render() + ^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/response.py", line 114, in render + self.content = self.rendered_content + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.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/manus_project/hospital_management_system_v4/.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/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/loader.py", line 42, in select_template + return engine.get_template(template_name) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/backends/django.py", line 79, in get_template + return Template(self.engine.get_template(template_name), self) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/engine.py", line 177, in get_template + template, origin = self.find_template(template_name) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/engine.py", line 159, in find_template + template = loader.get_template(name, skip=skip) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/loaders/cached.py", line 57, in get_template + template = super().get_template(template_name, skip) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/loaders/base.py", line 28, in get_template + return Template( + ^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 154, in __init__ + self.nodelist = self.compile_nodelist() + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 196, in compile_nodelist + nodelist = parser.parse() + ^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 518, in parse + raise self.error(token, e) + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 516, in parse + compiled_result = compile_func(self, token) + ^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/loader_tags.py", line 299, in do_extends + nodelist = parser.parse() + ^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 518, in parse + raise self.error(token, e) + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 516, in parse + compiled_result = compile_func(self, token) + ^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/loader_tags.py", line 234, in do_block + nodelist = parser.parse(("endblock",)) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 489, in parse + raise self.error(token, e) + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 487, in parse + filter_expression = self.compile_filter(token.contents) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 609, in compile_filter + return FilterExpression(token, self) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 710, in __init__ + raise TemplateSyntaxError( +django.template.exceptions.TemplateSyntaxError: Could not parse the remainder: '${key' from '${key' +ERROR 2025-08-30 23:36:28,017 basehttp 83720 6133510144 "GET /en/operating-theatre/templates/create/ HTTP/1.1" 500 218771 +WARNING 2025-08-30 23:36:28,028 log 83720 6133510144 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:36:28,029 basehttp 83720 6133510144 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +ERROR 2025-08-30 23:38:38,128 log 83720 6133510144 Internal Server Error: /en/operating-theatre/templates/create/ +Traceback (most recent call last): + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner + response = get_response(request) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 220, in _get_response + response = response.render() + ^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/response.py", line 114, in render + self.content = self.rendered_content + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/response.py", line 92, in rendered_content + return template.render(context, self._request) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/backends/django.py", line 107, in render + return self.template.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 171, in render + return self._render(context) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 163, in _render + return self.nodelist.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 1016, in render + return SafeString("".join([node.render_annotated(context) for node in self])) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated + return self.render(context) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/loader_tags.py", line 159, in render + return compiled_parent._render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 163, in _render + return self.nodelist.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 1016, in render + return SafeString("".join([node.render_annotated(context) for node in self])) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated + return self.render(context) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/loader_tags.py", line 65, in render + result = block.nodelist.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 1016, in render + return SafeString("".join([node.render_annotated(context) for node in self])) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated + return self.render(context) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/defaulttags.py", line 480, in render + url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/urls/base.py", line 98, in reverse + resolved_url = resolver._reverse_with_prefix(view, prefix, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/urls/resolvers.py", line 831, in _reverse_with_prefix + raise NoReverseMatch(msg) +django.urls.exceptions.NoReverseMatch: Reverse for 'surgical_note_template_test' not found. 'surgical_note_template_test' is not a valid view function or pattern name. +ERROR 2025-08-30 23:38:38,132 basehttp 83720 6133510144 "GET /en/operating-theatre/templates/create/ HTTP/1.1" 500 175657 +WARNING 2025-08-30 23:38:38,147 log 83720 6133510144 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:38:38,147 basehttp 83720 6133510144 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:40:11,331 basehttp 83720 6133510144 "GET /en/operating-theatre/templates/create/ HTTP/1.1" 200 57259 +WARNING 2025-08-30 23:40:11,348 basehttp 83720 6150336512 "GET /static/plugins/summernote/summernote-bs5.min.css HTTP/1.1" 404 2050 +WARNING 2025-08-30 23:40:11,350 basehttp 83720 6167162880 "GET /static/plugins/summernote/summernote-bs5.min.js HTTP/1.1" 404 2047 +WARNING 2025-08-30 23:40:11,353 log 83720 6133510144 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:40:11,353 basehttp 83720 6133510144 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:40:11,418 basehttp 83720 6133510144 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 23:40:47,700 basehttp 83720 6133510144 "GET /en/operating-theatre/templates/ HTTP/1.1" 200 41476 +WARNING 2025-08-30 23:40:47,715 basehttp 83720 6150336512 "GET /static/assets/plugins/datatables.net-bs5/css/dataTables.bootstrap5.min.css HTTP/1.1" 404 2128 +WARNING 2025-08-30 23:40:47,721 basehttp 83720 13438578688 "GET /static/assets/plugins/datatables.net/js/jquery.dataTables.min.js HTTP/1.1" 404 2098 +WARNING 2025-08-30 23:40:47,721 basehttp 83720 13455405056 "GET /static/assets/plugins/datatables.net-bs5/js/dataTables.bootstrap5.min.js HTTP/1.1" 404 2122 +WARNING 2025-08-30 23:40:47,722 basehttp 83720 6167162880 "GET /static/assets/plugins/datatables.net-responsive-bs5/css/responsive.bootstrap5.min.css HTTP/1.1" 404 2161 +WARNING 2025-08-30 23:40:47,725 basehttp 83720 13472231424 "GET /static/assets/plugins/datatables.net-responsive-bs5/js/responsive.bootstrap5.min.js HTTP/1.1" 404 2155 +WARNING 2025-08-30 23:40:47,725 basehttp 83720 6150336512 "GET /static/assets/plugins/datatables.net-responsive/js/dataTables.responsive.min.js HTTP/1.1" 404 2143 +WARNING 2025-08-30 23:40:47,727 log 83720 6133510144 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:40:47,728 basehttp 83720 6133510144 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:40:47,770 basehttp 83720 6133510144 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +WARNING 2025-08-30 23:40:50,856 basehttp 83720 6150336512 "GET /static/plugins/summernote/summernote-bs5.min.css HTTP/1.1" 404 2050 +WARNING 2025-08-30 23:40:50,858 log 83720 6133510144 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:40:50,858 basehttp 83720 6133510144 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +WARNING 2025-08-30 23:40:50,869 log 83720 6133510144 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:40:50,869 basehttp 83720 6133510144 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +WARNING 2025-08-30 23:40:51,164 basehttp 83720 13572796416 "GET /static/assets/plugins/datatables.net-responsive-bs5/css/responsive.bootstrap5.min.css HTTP/1.1" 404 2161 +WARNING 2025-08-30 23:40:51,165 basehttp 83720 6167162880 "GET /static/assets/plugins/datatables.net-bs5/css/dataTables.bootstrap5.min.css HTTP/1.1" 404 2128 +WARNING 2025-08-30 23:40:51,168 log 83720 6150336512 Not Found: /.well-known/appspecific/com.chrome.devtools.json +INFO 2025-08-30 23:40:51,169 basehttp 83720 6133510144 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +WARNING 2025-08-30 23:40:51,169 basehttp 83720 6150336512 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +WARNING 2025-08-30 23:40:51,176 log 83720 6133510144 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:40:51,176 basehttp 83720 6133510144 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +WARNING 2025-08-30 23:40:51,856 log 83720 6167162880 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:40:51,857 basehttp 83720 6167162880 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:40:51,858 basehttp 83720 6133510144 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 23:40:51,861 basehttp 83720 6150336512 "GET /en/operating-theatre/htmx/stats/ HTTP/1.1" 200 4212 +WARNING 2025-08-30 23:40:51,866 log 83720 6133510144 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:40:51,867 basehttp 83720 6133510144 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:40:55,502 basehttp 83720 6133510144 "GET /en/operating-theatre/cases/create/ HTTP/1.1" 200 43519 +WARNING 2025-08-30 23:40:55,519 log 83720 6133510144 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:40:55,520 basehttp 83720 6133510144 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:40:55,610 basehttp 83720 6133510144 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +WARNING 2025-08-30 23:41:00,843 log 83720 6133510144 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:41:00,844 basehttp 83720 6133510144 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +WARNING 2025-08-30 23:41:00,861 log 83720 6133510144 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:41:00,861 basehttp 83720 6133510144 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +WARNING 2025-08-30 23:41:06,628 log 83720 6133510144 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:41:06,629 basehttp 83720 6133510144 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +WARNING 2025-08-30 23:41:07,564 log 83720 6133510144 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:41:07,564 basehttp 83720 6133510144 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:41:23,610 basehttp 83720 6133510144 "GET /en/inventory/stock/92/ HTTP/1.1" 200 33987 +WARNING 2025-08-30 23:41:23,630 log 83720 6133510144 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:41:23,630 basehttp 83720 6133510144 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:41:23,670 basehttp 83720 6133510144 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 23:41:23,675 basehttp 83720 6133510144 "GET /static/css/saudiriyalsymbol.woff2 HTTP/1.1" 200 720 +WARNING 2025-08-30 23:41:42,812 log 83720 6133510144 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:41:42,812 basehttp 83720 6133510144 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +WARNING 2025-08-30 23:41:42,839 log 83720 6133510144 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:41:42,839 basehttp 83720 6133510144 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:42:07,795 basehttp 83720 6133510144 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 23:42:07,806 basehttp 83720 6150336512 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +ERROR 2025-08-30 23:42:13,509 log 83720 6150336512 Internal Server Error: /en/inventory/stock/create/ +Traceback (most recent call last): + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner + response = get_response(request) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.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/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/views/generic/base.py", line 105, in view + return self.dispatch(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/contrib/auth/mixins.py", line 73, in dispatch + return super().dispatch(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/views/generic/base.py", line 144, in dispatch + return handler(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/views/generic/edit.py", line 178, in get + return super().get(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.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/manus_project/hospital_management_system_v4/.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/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/views/generic/edit.py", line 37, in get_form + return form_class(**self.get_form_kwargs()) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/inventory/forms.py", line 369, in __init__ + ).order_by('location_name') + ^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/query.py", line 1722, in order_by + obj.query.add_ordering(*field_names) + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 2291, in add_ordering + self.names_to_path(item.split(LOOKUP_SEP), self.model._meta) + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1805, in names_to_path + raise FieldError( +django.core.exceptions.FieldError: Cannot resolve keyword 'location_name' into field. Choices are: access_control, aisle, bin, building, capacity_cubic_feet, child_locations, created_at, created_by, created_by_id, description, floor, humidity_controlled, humidity_max, humidity_min, id, inventory_stocks, is_active, location_code, location_id, location_manager, location_manager_id, location_type, max_weight_pounds, name, notes, parent_location, parent_location_id, purchase_orders, room, secure_location, shelf, temperature_controlled, temperature_max, temperature_min, tenant, tenant_id, updated_at, zone +ERROR 2025-08-30 23:42:13,511 basehttp 83720 6150336512 "GET /en/inventory/stock/create/ HTTP/1.1" 500 117539 +WARNING 2025-08-30 23:42:13,529 log 83720 6150336512 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:42:13,529 basehttp 83720 6150336512 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:42:36,457 autoreload 83720 8466948288 /Users/marwanalwali/manus_project/hospital_management_system_v4/inventory/forms.py changed, reloading. +INFO 2025-08-30 23:42:36,786 autoreload 87380 8466948288 Watching for file changes with StatReloader +ERROR 2025-08-30 23:42:37,819 log 87380 6165114880 Internal Server Error: /en/inventory/stock/create/ +Traceback (most recent call last): + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner + response = get_response(request) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 220, in _get_response + response = response.render() + ^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/response.py", line 114, in render + self.content = self.rendered_content + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.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/manus_project/hospital_management_system_v4/.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/manus_project/hospital_management_system_v4/.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: inventory/stock_form.html +ERROR 2025-08-30 23:42:37,820 basehttp 87380 6165114880 "GET /en/inventory/stock/create/ HTTP/1.1" 500 83196 +WARNING 2025-08-30 23:42:37,833 log 87380 6165114880 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:42:37,833 basehttp 87380 6165114880 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:43:34,168 autoreload 87380 8466948288 /Users/marwanalwali/manus_project/hospital_management_system_v4/inventory/views.py changed, reloading. +INFO 2025-08-30 23:43:34,509 autoreload 87778 8466948288 Watching for file changes with StatReloader +INFO 2025-08-30 23:43:35,259 basehttp 87778 6125694976 "GET /en/inventory/stock/create/ HTTP/1.1" 200 40877 +WARNING 2025-08-30 23:43:35,276 log 87778 6125694976 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:43:35,276 basehttp 87778 6125694976 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:43:35,350 basehttp 87778 6125694976 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 23:44:34,740 basehttp 87778 6125694976 "GET /en/inventory/stock/create/ HTTP/1.1" 200 40894 +WARNING 2025-08-30 23:44:34,752 log 87778 6125694976 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:44:34,753 basehttp 87778 6125694976 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:44:34,791 basehttp 87778 6125694976 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 23:44:47,875 basehttp 87778 6125694976 "GET /en/inventory/stock/create/ HTTP/1.1" 200 40895 +WARNING 2025-08-30 23:44:47,887 log 87778 6125694976 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:44:47,887 basehttp 87778 6125694976 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:44:47,927 basehttp 87778 6125694976 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 23:45:12,721 basehttp 87778 6125694976 "GET /en/inventory/stock/create/ HTTP/1.1" 200 40851 +WARNING 2025-08-30 23:45:12,735 log 87778 6125694976 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:45:12,735 basehttp 87778 6125694976 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:45:12,791 basehttp 87778 6125694976 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 23:46:12,815 basehttp 87778 6125694976 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +ERROR 2025-08-30 23:46:45,292 log 87778 6125694976 Internal Server Error: /en/inventory/stock/create/ +Traceback (most recent call last): + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/urls/base.py", line 81, in reverse + extra, resolver = resolver.namespace_dict[ns] + ~~~~~~~~~~~~~~~~~~~~~~~^^^^ +KeyError: 'ebt' + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner + response = get_response(request) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 220, in _get_response + response = response.render() + ^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/response.py", line 114, in render + self.content = self.rendered_content + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/response.py", line 92, in rendered_content + return template.render(context, self._request) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/backends/django.py", line 107, in render + return self.template.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 171, in render + return self._render(context) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 163, in _render + return self.nodelist.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 1016, in render + return SafeString("".join([node.render_annotated(context) for node in self])) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated + return self.render(context) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/loader_tags.py", line 159, in render + return compiled_parent._render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 163, in _render + return self.nodelist.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 1016, in render + return SafeString("".join([node.render_annotated(context) for node in self])) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated + return self.render(context) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/loader_tags.py", line 65, in render + result = block.nodelist.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 1016, in render + return SafeString("".join([node.render_annotated(context) for node in self])) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated + return self.render(context) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/defaulttags.py", line 480, in render + url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/urls/base.py", line 92, in reverse + raise NoReverseMatch("%s is not a registered namespace" % key) +django.urls.exceptions.NoReverseMatch: 'ebt' is not a registered namespace +ERROR 2025-08-30 23:46:45,294 basehttp 87778 6125694976 "GET /en/inventory/stock/create/ HTTP/1.1" 500 178198 +WARNING 2025-08-30 23:46:45,308 log 87778 6125694976 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:46:45,308 basehttp 87778 6125694976 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:46:57,908 basehttp 87778 6125694976 "GET /en/inventory/stock/create/ HTTP/1.1" 200 41401 +WARNING 2025-08-30 23:46:57,922 log 87778 6125694976 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:46:57,922 basehttp 87778 6125694976 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:46:57,996 basehttp 87778 6125694976 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 23:47:58,003 basehttp 87778 6125694976 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 23:48:05,784 basehttp 87778 6125694976 "GET /en/inventory/stock/create/ HTTP/1.1" 200 41928 +WARNING 2025-08-30 23:48:05,799 log 87778 6125694976 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:48:05,799 basehttp 87778 6125694976 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:48:05,862 basehttp 87778 6125694976 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 23:49:05,857 basehttp 87778 6125694976 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 23:49:34,559 basehttp 87778 6125694976 "GET /en/inventory/stock/create/ HTTP/1.1" 200 42460 +WARNING 2025-08-30 23:49:34,576 log 87778 6125694976 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:49:34,577 basehttp 87778 6125694976 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:49:34,630 basehttp 87778 6125694976 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 23:49:55,908 basehttp 87778 6125694976 "GET /en/inventory/stock/create/ HTTP/1.1" 200 41442 +WARNING 2025-08-30 23:49:55,926 log 87778 6125694976 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:49:55,926 basehttp 87778 6125694976 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:49:55,993 basehttp 87778 6125694976 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 23:50:26,319 basehttp 87778 6125694976 "GET /en/inventory/stock/create/ HTTP/1.1" 200 40933 +WARNING 2025-08-30 23:50:26,337 log 87778 6125694976 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:50:26,337 basehttp 87778 6125694976 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:50:26,388 basehttp 87778 6125694976 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 23:50:34,059 basehttp 87778 6125694976 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +WARNING 2025-08-30 23:50:34,062 log 87778 6142521344 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:50:34,062 basehttp 87778 6142521344 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:50:34,066 basehttp 87778 6125694976 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +WARNING 2025-08-30 23:50:34,077 log 87778 6125694976 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:50:34,077 basehttp 87778 6125694976 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +WARNING 2025-08-30 23:50:47,035 log 87778 6125694976 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:50:47,036 basehttp 87778 6125694976 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:51:06,937 basehttp 87778 6125694976 "GET /en/inventory/items/ HTTP/1.1" 200 42642 +WARNING 2025-08-30 23:51:06,960 log 87778 6125694976 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:51:06,960 basehttp 87778 6125694976 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:51:07,055 basehttp 87778 6125694976 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 23:51:07,087 basehttp 87778 6125694976 "GET /en/inventory/items/ HTTP/1.1" 200 42642 +INFO 2025-08-30 23:51:07,091 basehttp 87778 6142521344 "GET /en/inventory/htmx/stats/ HTTP/1.1" 200 6394 +WARNING 2025-08-30 23:51:12,454 log 87778 6142521344 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:51:12,454 basehttp 87778 6142521344 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +WARNING 2025-08-30 23:51:12,467 log 87778 6142521344 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:51:12,467 basehttp 87778 6142521344 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:51:14,933 basehttp 87778 6142521344 "GET /en/inventory/stock/ HTTP/1.1" 200 148603 +WARNING 2025-08-30 23:51:14,952 log 87778 6142521344 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:51:14,952 basehttp 87778 6142521344 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:51:15,064 basehttp 87778 6142521344 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 23:51:15,071 basehttp 87778 6125694976 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-30 23:51:18,984 basehttp 87778 6125694976 "GET /en/inventory/htmx/stats/ HTTP/1.1" 200 6394 +WARNING 2025-08-30 23:51:18,994 log 87778 6125694976 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:51:18,995 basehttp 87778 6125694976 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +WARNING 2025-08-30 23:51:19,008 log 87778 6125694976 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:51:19,009 basehttp 87778 6125694976 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +ERROR 2025-08-30 23:51:20,140 log 87778 6125694976 Internal Server Error: /en/inventory/orders/ +Traceback (most recent call last): + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner + response = get_response(request) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.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/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/views/generic/base.py", line 105, in view + return self.dispatch(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/contrib/auth/mixins.py", line 73, in dispatch + return super().dispatch(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/views/generic/base.py", line 144, in dispatch + return handler(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/views/generic/list.py", line 178, in get + context = self.get_context_data() + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/inventory/views.py", line 779, in get_context_data + context['statuses'] = PurchaseOrder.STATUS_CHOICES + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AttributeError: type object 'PurchaseOrder' has no attribute 'STATUS_CHOICES' +ERROR 2025-08-30 23:51:20,142 basehttp 87778 6125694976 "GET /en/inventory/orders/ HTTP/1.1" 500 87152 +WARNING 2025-08-30 23:51:20,166 log 87778 6125694976 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:51:20,166 basehttp 87778 6125694976 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:52:50,594 autoreload 87778 8466948288 /Users/marwanalwali/manus_project/hospital_management_system_v4/inventory/models.py changed, reloading. +INFO 2025-08-30 23:52:51,024 autoreload 91921 8466948288 Watching for file changes with StatReloader +INFO 2025-08-30 23:53:49,060 autoreload 91921 8466948288 /Users/marwanalwali/manus_project/hospital_management_system_v4/inventory/models.py changed, reloading. +INFO 2025-08-30 23:53:49,492 autoreload 92314 8466948288 Watching for file changes with StatReloader +INFO 2025-08-30 23:54:18,692 autoreload 92314 8466948288 /Users/marwanalwali/manus_project/hospital_management_system_v4/inventory/models.py changed, reloading. +INFO 2025-08-30 23:54:19,118 autoreload 92553 8466948288 Watching for file changes with StatReloader +ERROR 2025-08-30 23:54:20,388 log 92553 6203764736 Internal Server Error: /en/inventory/orders/ +Traceback (most recent call last): + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner + response = get_response(request) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.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/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/views/generic/base.py", line 105, in view + return self.dispatch(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/contrib/auth/mixins.py", line 73, in dispatch + return super().dispatch(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/views/generic/base.py", line 144, in dispatch + return handler(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/views/generic/list.py", line 178, in get + context = self.get_context_data() + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/inventory/views.py", line 783, in get_context_data + ).order_by('supplier_name') + ^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/query.py", line 1722, in order_by + obj.query.add_ordering(*field_names) + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 2291, in add_ordering + self.names_to_path(item.split(LOOKUP_SEP), self.model._meta) + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1805, in names_to_path + raise FieldError( +django.core.exceptions.FieldError: Cannot resolve keyword 'supplier_name' into field. Choices are: address_line_1, address_line_2, certifications, city, contact_person, contract_end_date, contract_start_date, country, created_at, created_by, created_by_id, duns_number, email, id, inventory_stocks, is_active, is_preferred, name, notes, on_time_delivery_rate, payment_terms, performance_rating, phone, postal_code, primary_items, purchase_orders, quality_rating, state, supplier_code, supplier_id, supplier_type, tax_id, tenant, tenant_id, updated_at, website +ERROR 2025-08-30 23:54:20,390 basehttp 92553 6203764736 "GET /en/inventory/orders/ HTTP/1.1" 500 106331 +WARNING 2025-08-30 23:54:20,401 log 92553 6203764736 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-30 23:54:20,402 basehttp 92553 6203764736 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-30 23:54:33,972 autoreload 92553 8466948288 /Users/marwanalwali/manus_project/hospital_management_system_v4/inventory/models.py changed, reloading. +INFO 2025-08-30 23:54:34,337 autoreload 92712 8466948288 Watching for file changes with StatReloader +ERROR 2025-08-31 00:04:50,867 log 92712 6169817088 Internal Server Error: /en/inventory/orders/ +Traceback (most recent call last): + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner + response = get_response(request) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.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/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/views/generic/base.py", line 105, in view + return self.dispatch(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/contrib/auth/mixins.py", line 73, in dispatch + return super().dispatch(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/views/generic/base.py", line 144, in dispatch + return handler(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/views/generic/list.py", line 178, in get + context = self.get_context_data() + ^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/inventory/views.py", line 783, in get_context_data + ).order_by('supplier_name') + ^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/query.py", line 1722, in order_by + obj.query.add_ordering(*field_names) + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 2291, in add_ordering + self.names_to_path(item.split(LOOKUP_SEP), self.model._meta) + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1805, in names_to_path + raise FieldError( +django.core.exceptions.FieldError: Cannot resolve keyword 'supplier_name' into field. Choices are: address_line_1, address_line_2, certifications, city, contact_person, contract_end_date, contract_start_date, country, created_at, created_by, created_by_id, duns_number, email, id, inventory_stocks, is_active, is_preferred, name, notes, on_time_delivery_rate, payment_terms, performance_rating, phone, postal_code, primary_items, purchase_orders, quality_rating, state, supplier_code, supplier_id, supplier_type, tax_id, tenant, tenant_id, updated_at, website +ERROR 2025-08-31 00:04:50,869 basehttp 92712 6169817088 "GET /en/inventory/orders/ HTTP/1.1" 500 106331 +WARNING 2025-08-31 00:04:50,881 log 92712 6169817088 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:04:50,881 basehttp 92712 6169817088 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:05:24,808 autoreload 92712 8466948288 /Users/marwanalwali/manus_project/hospital_management_system_v4/inventory/views.py changed, reloading. +INFO 2025-08-31 00:05:25,271 autoreload 97508 8466948288 Watching for file changes with StatReloader +INFO 2025-08-31 00:05:49,394 autoreload 97508 8466948288 /Users/marwanalwali/manus_project/hospital_management_system_v4/inventory/views.py changed, reloading. +INFO 2025-08-31 00:05:49,735 autoreload 97744 8466948288 Watching for file changes with StatReloader +INFO 2025-08-31 00:05:51,330 basehttp 97744 6199685120 "GET /en/inventory/orders/ HTTP/1.1" 200 71999 +INFO 2025-08-31 00:05:51,347 basehttp 97744 6233337856 "GET /static/plugins/datatables.net-buttons-bs5/js/buttons.bootstrap5.min.js HTTP/1.1" 200 1627 +INFO 2025-08-31 00:05:51,348 basehttp 97744 6216511488 "GET /static/plugins/datatables.net-buttons-bs5/css/buttons.bootstrap5.min.css HTTP/1.1" 200 8136 +WARNING 2025-08-31 00:05:51,349 log 97744 6199685120 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:05:51,349 basehttp 97744 6199685120 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:05:51,426 basehttp 97744 6199685120 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +ERROR 2025-08-31 00:06:22,826 log 97744 6199685120 Internal Server Error: /en/inventory/orders/2/ +Traceback (most recent call last): + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner + response = get_response(request) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.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/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/views/generic/base.py", line 105, in view + return self.dispatch(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/contrib/auth/mixins.py", line 73, in dispatch + return super().dispatch(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/views/generic/base.py", line 144, in dispatch + return handler(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/views/generic/detail.py", line 113, in get + context = self.get_context_data(object=self.object) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/inventory/views.py", line 807, in get_context_data + ).select_related('item').order_by('item__item_name') + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/query.py", line 1722, in order_by + obj.query.add_ordering(*field_names) + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 2291, in add_ordering + self.names_to_path(item.split(LOOKUP_SEP), self.model._meta) + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1805, in names_to_path + raise FieldError( +django.core.exceptions.FieldError: Cannot resolve keyword 'item' into field. Choices are: created_at, id, inventory_item, inventory_item_id, item_id, line_number, notes, purchase_order, purchase_order_id, quantity_ordered, quantity_received, quantity_remaining, requested_delivery_date, status, total_price, unit_price, updated_at +ERROR 2025-08-31 00:06:22,828 basehttp 97744 6199685120 "GET /en/inventory/orders/2/ HTTP/1.1" 500 102509 +WARNING 2025-08-31 00:06:22,843 log 97744 6199685120 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:06:22,843 basehttp 97744 6199685120 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:06:41,965 autoreload 97744 8466948288 /Users/marwanalwali/manus_project/hospital_management_system_v4/inventory/views.py changed, reloading. +INFO 2025-08-31 00:06:42,377 autoreload 98135 8466948288 Watching for file changes with StatReloader +INFO 2025-08-31 00:06:42,665 basehttp 98135 6157807616 "GET /en/inventory/orders/2/ HTTP/1.1" 200 49723 +WARNING 2025-08-31 00:06:42,682 log 98135 6157807616 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:06:42,682 basehttp 98135 6157807616 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:06:42,722 basehttp 98135 6157807616 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:07:43,533 basehttp 98135 6157807616 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +WARNING 2025-08-31 00:15:38,132 log 98135 6157807616 Not Found: /inventory/orders/2/track/ +WARNING 2025-08-31 00:15:38,132 basehttp 98135 6157807616 "GET /inventory/orders/2/track/ HTTP/1.1" 404 2599 +WARNING 2025-08-31 00:15:38,148 log 98135 6157807616 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:15:38,148 basehttp 98135 6157807616 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +WARNING 2025-08-31 00:15:43,578 log 98135 6157807616 Not Found: /inventory/orders/2/request-quote/ +WARNING 2025-08-31 00:15:43,578 basehttp 98135 6157807616 "GET /inventory/orders/2/request-quote/ HTTP/1.1" 404 2623 +WARNING 2025-08-31 00:15:43,600 log 98135 6157807616 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:15:43,601 basehttp 98135 6157807616 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +WARNING 2025-08-31 00:15:45,273 log 98135 6157807616 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:15:45,274 basehttp 98135 6157807616 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +WARNING 2025-08-31 00:15:45,288 log 98135 6157807616 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:15:45,288 basehttp 98135 6157807616 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +WARNING 2025-08-31 00:15:48,621 log 98135 6157807616 Not Found: /inventory/orders/2/report/ +WARNING 2025-08-31 00:15:48,622 basehttp 98135 6157807616 "GET /inventory/orders/2/report/ HTTP/1.1" 404 2602 +WARNING 2025-08-31 00:15:48,636 log 98135 6157807616 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:15:48,636 basehttp 98135 6157807616 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +ERROR 2025-08-31 00:15:53,403 log 98135 6157807616 Internal Server Error: /en/inventory/suppliers/4/ +Traceback (most recent call last): + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner + response = get_response(request) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 220, in _get_response + response = response.render() + ^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/response.py", line 114, in render + self.content = self.rendered_content + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/response.py", line 92, in rendered_content + return template.render(context, self._request) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/backends/django.py", line 107, in render + return self.template.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 171, in render + return self._render(context) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 163, in _render + return self.nodelist.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 1016, in render + return SafeString("".join([node.render_annotated(context) for node in self])) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated + return self.render(context) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/loader_tags.py", line 159, in render + return compiled_parent._render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 163, in _render + return self.nodelist.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 1016, in render + return SafeString("".join([node.render_annotated(context) for node in self])) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated + return self.render(context) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/loader_tags.py", line 65, in render + result = block.nodelist.render(context) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 1016, in render + return SafeString("".join([node.render_annotated(context) for node in self])) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated + return self.render(context) + ^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/template/defaulttags.py", line 480, in render + url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/urls/base.py", line 98, in reverse + resolved_url = resolver._reverse_with_prefix(view, prefix, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/urls/resolvers.py", line 831, in _reverse_with_prefix + raise NoReverseMatch(msg) +django.urls.exceptions.NoReverseMatch: Reverse for 'supplier_export' not found. 'supplier_export' is not a valid view function or pattern name. +ERROR 2025-08-31 00:15:53,405 basehttp 98135 6157807616 "GET /en/inventory/suppliers/4/ HTTP/1.1" 500 175672 +WARNING 2025-08-31 00:15:53,420 log 98135 6157807616 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:15:53,420 basehttp 98135 6157807616 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:16:56,876 basehttp 98135 6157807616 "GET /en/inventory/suppliers/4/ HTTP/1.1" 200 37934 +WARNING 2025-08-31 00:16:56,889 log 98135 6157807616 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:16:56,889 basehttp 98135 6157807616 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:16:56,951 basehttp 98135 6157807616 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +ERROR 2025-08-31 00:17:07,646 log 98135 6157807616 Internal Server Error: /en/inventory/orders/create/ +Traceback (most recent call last): + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner + response = get_response(request) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.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/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/views/generic/base.py", line 105, in view + return self.dispatch(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/contrib/auth/mixins.py", line 73, in dispatch + return super().dispatch(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/views/generic/base.py", line 144, in dispatch + return handler(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/views/generic/edit.py", line 178, in get + return super().get(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.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/manus_project/hospital_management_system_v4/.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/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/views/generic/edit.py", line 37, in get_form + return form_class(**self.get_form_kwargs()) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/inventory/forms.py", line 466, in __init__ + ).order_by('supplier_name') + ^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/query.py", line 1722, in order_by + obj.query.add_ordering(*field_names) + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 2291, in add_ordering + self.names_to_path(item.split(LOOKUP_SEP), self.model._meta) + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1805, in names_to_path + raise FieldError( +django.core.exceptions.FieldError: Cannot resolve keyword 'supplier_name' into field. Choices are: address_line_1, address_line_2, certifications, city, contact_person, contract_end_date, contract_start_date, country, created_at, created_by, created_by_id, duns_number, email, id, inventory_stocks, is_active, is_preferred, name, notes, on_time_delivery_rate, payment_terms, performance_rating, phone, postal_code, primary_items, purchase_orders, quality_rating, state, supplier_code, supplier_id, supplier_type, tax_id, tenant, tenant_id, updated_at, website +ERROR 2025-08-31 00:17:07,649 basehttp 98135 6157807616 "GET /en/inventory/orders/create/?supplier=4 HTTP/1.1" 500 117752 +WARNING 2025-08-31 00:17:07,666 log 98135 6157807616 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:17:07,667 basehttp 98135 6157807616 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:17:18,829 autoreload 98135 8466948288 /Users/marwanalwali/manus_project/hospital_management_system_v4/inventory/forms.py changed, reloading. +INFO 2025-08-31 00:17:19,288 autoreload 99647 8466948288 Watching for file changes with StatReloader +ERROR 2025-08-31 00:17:19,799 log 99647 6189133824 Internal Server Error: /en/inventory/orders/create/ +Traceback (most recent call last): + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner + response = get_response(request) + ^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.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/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/views/generic/base.py", line 105, in view + return self.dispatch(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/contrib/auth/mixins.py", line 73, in dispatch + return super().dispatch(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/views/generic/base.py", line 144, in dispatch + return handler(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/views/generic/edit.py", line 178, in get + return super().get(request, *args, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.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/manus_project/hospital_management_system_v4/.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/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/views/generic/edit.py", line 37, in get_form + return form_class(**self.get_form_kwargs()) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/inventory/forms.py", line 471, in __init__ + ).order_by('location_name') + ^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/query.py", line 1722, in order_by + obj.query.add_ordering(*field_names) + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 2291, in add_ordering + self.names_to_path(item.split(LOOKUP_SEP), self.model._meta) + File "/Users/marwanalwali/manus_project/hospital_management_system_v4/.venv/lib/python3.12/site-packages/django/db/models/sql/query.py", line 1805, in names_to_path + raise FieldError( +django.core.exceptions.FieldError: Cannot resolve keyword 'location_name' into field. Choices are: access_control, aisle, bin, building, capacity_cubic_feet, child_locations, created_at, created_by, created_by_id, description, floor, humidity_controlled, humidity_max, humidity_min, id, inventory_stocks, is_active, location_code, location_id, location_manager, location_manager_id, location_type, max_weight_pounds, name, notes, parent_location, parent_location_id, purchase_orders, room, secure_location, shelf, temperature_controlled, temperature_max, temperature_min, tenant, tenant_id, updated_at, zone +ERROR 2025-08-31 00:17:19,800 basehttp 99647 6189133824 "GET /en/inventory/orders/create/?supplier=4 HTTP/1.1" 500 118037 +WARNING 2025-08-31 00:17:19,812 log 99647 6189133824 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:17:19,812 basehttp 99647 6189133824 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:17:29,909 autoreload 99647 8466948288 /Users/marwanalwali/manus_project/hospital_management_system_v4/inventory/forms.py changed, reloading. +INFO 2025-08-31 00:17:30,233 autoreload 99734 8466948288 Watching for file changes with StatReloader +INFO 2025-08-31 00:17:30,518 basehttp 99734 6196850688 "GET /en/inventory/orders/create/?supplier=4 HTTP/1.1" 200 64878 +WARNING 2025-08-31 00:17:30,533 log 99734 6196850688 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:17:30,533 basehttp 99734 6196850688 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:17:30,590 basehttp 99734 6196850688 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +WARNING 2025-08-31 00:17:40,467 log 99734 6196850688 Not Found: /inventory/items/list/ +WARNING 2025-08-31 00:17:40,467 basehttp 99734 6196850688 "GET /inventory/items/list/ HTTP/1.1" 404 2587 +WARNING 2025-08-31 00:18:14,483 log 99734 6196850688 Not Found: /inventory/templates/medical_supplies/ +WARNING 2025-08-31 00:18:14,484 basehttp 99734 6196850688 "GET /inventory/templates/medical_supplies/ HTTP/1.1" 404 2635 +WARNING 2025-08-31 00:18:15,469 log 99734 6196850688 Not Found: /inventory/templates/office_supplies/ +WARNING 2025-08-31 00:18:15,470 basehttp 99734 6196850688 "GET /inventory/templates/office_supplies/ HTTP/1.1" 404 2632 +WARNING 2025-08-31 00:18:17,406 log 99734 6196850688 Not Found: /inventory/templates/office_supplies/ +WARNING 2025-08-31 00:18:17,407 basehttp 99734 6196850688 "GET /inventory/templates/office_supplies/ HTTP/1.1" 404 2632 +WARNING 2025-08-31 00:18:18,306 log 99734 6196850688 Not Found: /inventory/templates/medical_supplies/ +WARNING 2025-08-31 00:18:18,307 basehttp 99734 6196850688 "GET /inventory/templates/medical_supplies/ HTTP/1.1" 404 2635 +INFO 2025-08-31 00:18:27,447 basehttp 99734 6196850688 "POST /en/inventory/orders/create/?supplier=4 HTTP/1.1" 200 65180 +WARNING 2025-08-31 00:18:27,465 log 99734 6196850688 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:18:27,465 basehttp 99734 6196850688 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:18:27,536 basehttp 99734 6196850688 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +WARNING 2025-08-31 00:18:30,784 log 99734 6196850688 Not Found: /inventory/items/list/ +WARNING 2025-08-31 00:18:30,784 basehttp 99734 6196850688 "GET /inventory/items/list/ HTTP/1.1" 404 2587 +INFO 2025-08-31 00:19:27,526 basehttp 99734 6196850688 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:20:23,525 basehttp 99734 6196850688 "POST /en/inventory/orders/create/?supplier=4 HTTP/1.1" 200 65187 +WARNING 2025-08-31 00:20:23,540 log 99734 6196850688 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:20:23,540 basehttp 99734 6196850688 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:20:23,615 basehttp 99734 6196850688 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:20:25,228 basehttp 99734 6196850688 "GET /en/inventory/items/ HTTP/1.1" 200 42642 +INFO 2025-08-31 00:21:23,616 basehttp 99734 6196850688 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:21:40,962 basehttp 99734 6196850688 "GET /inventory/suppliers/create/ HTTP/1.1" 302 0 +INFO 2025-08-31 00:21:40,974 basehttp 99734 6213677056 "GET /en/inventory/suppliers/create/ HTTP/1.1" 200 43337 +WARNING 2025-08-31 00:21:41,006 log 99734 6213677056 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:21:41,006 basehttp 99734 6213677056 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:21:41,018 basehttp 99734 6213677056 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:22:11,049 basehttp 99734 6213677056 "GET /en/inventory/orders/create/?supplier=4 HTTP/1.1" 200 64885 +WARNING 2025-08-31 00:22:11,068 log 99734 6213677056 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:22:11,069 basehttp 99734 6213677056 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:23:11,137 basehttp 99734 6213677056 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:23:37,329 basehttp 99734 6213677056 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +WARNING 2025-08-31 00:23:37,330 log 99734 6196850688 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:23:37,330 basehttp 99734 6196850688 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +WARNING 2025-08-31 00:23:37,356 log 99734 6196850688 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:23:37,356 basehttp 99734 6196850688 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +WARNING 2025-08-31 00:23:38,973 log 99734 6213677056 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:23:38,973 basehttp 99734 6213677056 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:23:38,976 basehttp 99734 6196850688 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +WARNING 2025-08-31 00:23:38,982 log 99734 6213677056 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:23:38,982 basehttp 99734 6213677056 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:23:40,406 basehttp 99734 6213677056 "GET /en/inventory/orders/2/ HTTP/1.1" 200 49723 +WARNING 2025-08-31 00:23:40,418 log 99734 6213677056 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:23:40,419 basehttp 99734 6213677056 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:23:40,455 basehttp 99734 6213677056 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +WARNING 2025-08-31 00:23:45,218 log 99734 6213677056 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:23:45,218 basehttp 99734 6213677056 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:23:54,069 basehttp 99734 6213677056 "GET /en/inventory/orders/ HTTP/1.1" 200 72543 +WARNING 2025-08-31 00:23:54,085 log 99734 6213677056 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:23:54,085 basehttp 99734 6213677056 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:23:54,164 basehttp 99734 6213677056 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:24:54,161 basehttp 99734 6213677056 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:24:54,353 basehttp 99734 6213677056 "GET /en/inventory/orders/ HTTP/1.1" 200 72576 +WARNING 2025-08-31 00:24:54,368 log 99734 6213677056 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:24:54,368 basehttp 99734 6213677056 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:24:54,445 basehttp 99734 6213677056 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:25:00,519 basehttp 99734 6213677056 "GET /en/inventory/orders/?status=draft HTTP/1.1" 200 47263 +WARNING 2025-08-31 00:25:00,541 log 99734 6213677056 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:25:00,542 basehttp 99734 6213677056 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:25:00,595 basehttp 99734 6213677056 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:25:04,430 basehttp 99734 6213677056 "GET /en/inventory/orders/create/ HTTP/1.1" 200 64885 +WARNING 2025-08-31 00:25:04,454 log 99734 6213677056 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:25:04,454 basehttp 99734 6213677056 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:25:04,510 basehttp 99734 6213677056 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:26:04,513 basehttp 99734 6213677056 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:26:53,807 basehttp 99734 6213677056 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +WARNING 2025-08-31 00:26:53,810 log 99734 6196850688 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:26:53,810 basehttp 99734 6196850688 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +WARNING 2025-08-31 00:26:53,820 log 99734 6196850688 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:26:53,821 basehttp 99734 6196850688 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:26:54,409 basehttp 99734 6196850688 "GET /en/inventory/orders/?status=draft HTTP/1.1" 200 47263 +WARNING 2025-08-31 00:26:54,430 log 99734 6196850688 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:26:54,430 basehttp 99734 6196850688 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:26:54,480 basehttp 99734 6196850688 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:26:58,843 basehttp 99734 6196850688 "GET /en/inventory/orders/?status=all HTTP/1.1" 200 47255 +WARNING 2025-08-31 00:26:58,865 log 99734 6196850688 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:26:58,865 basehttp 99734 6196850688 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:26:58,920 basehttp 99734 6196850688 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +WARNING 2025-08-31 00:27:02,283 log 99734 6196850688 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:27:02,283 basehttp 99734 6196850688 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +WARNING 2025-08-31 00:27:02,293 log 99734 6196850688 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:27:02,294 basehttp 99734 6196850688 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:27:02,748 basehttp 99734 6196850688 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +WARNING 2025-08-31 00:27:02,750 log 99734 6213677056 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:27:02,750 basehttp 99734 6213677056 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +WARNING 2025-08-31 00:27:02,762 log 99734 6213677056 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:27:02,762 basehttp 99734 6213677056 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +WARNING 2025-08-31 00:27:03,601 log 99734 6213677056 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:27:03,601 basehttp 99734 6213677056 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:27:06,894 basehttp 99734 6213677056 "GET /en/inventory/ HTTP/1.1" 200 46616 +WARNING 2025-08-31 00:27:06,906 log 99734 6213677056 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:27:06,907 basehttp 99734 6213677056 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:27:06,969 basehttp 99734 6213677056 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:27:06,970 basehttp 99734 6196850688 "GET /en/inventory/htmx/stats/ HTTP/1.1" 200 6394 +WARNING 2025-08-31 00:27:08,889 log 99734 6196850688 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:27:08,889 basehttp 99734 6196850688 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +WARNING 2025-08-31 00:27:08,900 log 99734 6196850688 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:27:08,901 basehttp 99734 6196850688 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +WARNING 2025-08-31 00:27:09,637 log 99734 6196850688 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:27:09,638 basehttp 99734 6196850688 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +WARNING 2025-08-31 00:27:09,649 log 99734 6196850688 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:27:09,649 basehttp 99734 6196850688 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +WARNING 2025-08-31 00:27:10,142 log 99734 6196850688 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:27:10,142 basehttp 99734 6196850688 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +WARNING 2025-08-31 00:27:10,157 log 99734 6196850688 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:27:10,157 basehttp 99734 6196850688 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:27:17,349 basehttp 99734 6196850688 "GET /en/inventory/orders/create/ HTTP/1.1" 200 64885 +WARNING 2025-08-31 00:27:17,368 log 99734 6196850688 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:27:17,368 basehttp 99734 6196850688 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:27:17,407 basehttp 99734 6196850688 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:28:17,441 basehttp 99734 6196850688 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:29:17,426 basehttp 99734 6196850688 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:30:17,422 basehttp 99734 6196850688 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:30:37,836 basehttp 99734 6196850688 "GET /en/inventory/orders/create/ HTTP/1.1" 200 65413 +WARNING 2025-08-31 00:30:37,848 log 99734 6196850688 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:30:37,848 basehttp 99734 6196850688 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:30:37,892 basehttp 99734 6196850688 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:31:37,913 basehttp 99734 6196850688 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:31:56,545 basehttp 99734 6196850688 "GET /en/inventory/orders/create/ HTTP/1.1" 200 65379 +WARNING 2025-08-31 00:31:56,559 log 99734 6196850688 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:31:56,560 basehttp 99734 6196850688 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:31:56,617 basehttp 99734 6196850688 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:32:56,637 basehttp 99734 6196850688 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:33:51,876 basehttp 99734 6196850688 "GET /en/inventory/orders/create/ HTTP/1.1" 200 65141 +WARNING 2025-08-31 00:33:51,889 log 99734 6196850688 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:33:51,889 basehttp 99734 6196850688 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:33:51,947 basehttp 99734 6196850688 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:34:51,976 basehttp 99734 6196850688 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:35:51,987 basehttp 99734 6196850688 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:35:55,493 basehttp 99734 6196850688 "GET /en/inventory/orders/create/ HTTP/1.1" 200 65116 +WARNING 2025-08-31 00:35:55,510 log 99734 6196850688 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:35:55,511 basehttp 99734 6196850688 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:35:55,579 basehttp 99734 6196850688 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:36:09,432 basehttp 99734 6196850688 "GET /en/inventory/orders/create/ HTTP/1.1" 200 65096 +WARNING 2025-08-31 00:36:09,447 log 99734 6196850688 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:36:09,447 basehttp 99734 6196850688 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:36:09,503 basehttp 99734 6196850688 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:36:36,943 basehttp 99734 6196850688 "GET /en/inventory/orders/create/ HTTP/1.1" 200 65051 +WARNING 2025-08-31 00:36:36,960 log 99734 6196850688 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:36:36,960 basehttp 99734 6196850688 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:36:37,018 basehttp 99734 6196850688 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:37:37,033 basehttp 99734 6196850688 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:37:59,692 basehttp 99734 6196850688 "GET /en/inventory/orders/create/ HTTP/1.1" 200 65253 +WARNING 2025-08-31 00:37:59,711 log 99734 6196850688 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:37:59,711 basehttp 99734 6196850688 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:37:59,767 basehttp 99734 6196850688 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +WARNING 2025-08-31 00:38:10,881 log 99734 6196850688 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:38:10,881 basehttp 99734 6196850688 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:38:15,000 basehttp 99734 6196850688 "GET /en/inventory/orders/?status=all HTTP/1.1" 200 47255 +WARNING 2025-08-31 00:38:15,014 log 99734 6196850688 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:38:15,014 basehttp 99734 6196850688 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:38:15,071 basehttp 99734 6196850688 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:38:19,432 basehttp 99734 6196850688 "GET /en/inventory/orders/ HTTP/1.1" 200 72576 +WARNING 2025-08-31 00:38:19,447 log 99734 6196850688 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:38:19,447 basehttp 99734 6196850688 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:38:19,470 basehttp 99734 6196850688 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:38:24,824 basehttp 99734 6196850688 "GET /en/inventory/orders/2/ HTTP/1.1" 200 49893 +WARNING 2025-08-31 00:38:24,841 log 99734 6196850688 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:38:24,841 basehttp 99734 6196850688 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:38:24,900 basehttp 99734 6196850688 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:39:25,546 basehttp 99734 6196850688 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:41:45,350 basehttp 99734 6196850688 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:45:01,637 basehttp 99734 6196850688 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:46:02,635 basehttp 99734 6196850688 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:47:03,632 basehttp 99734 6196850688 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:49:16,880 basehttp 99734 6196850688 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +WARNING 2025-08-31 00:49:16,882 log 99734 6213677056 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:49:16,882 basehttp 99734 6213677056 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +WARNING 2025-08-31 00:49:16,901 log 99734 6213677056 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:49:16,902 basehttp 99734 6213677056 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:49:25,234 basehttp 99734 6213677056 "GET /en/inventory/orders/?page_size=100 HTTP/1.1" 200 72584 +WARNING 2025-08-31 00:49:25,252 log 99734 6213677056 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:49:25,253 basehttp 99734 6213677056 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:49:25,356 basehttp 99734 6213677056 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:50:16,590 basehttp 99734 6213677056 "GET /en/inventory/orders/?page_size=100 HTTP/1.1" 200 72584 +WARNING 2025-08-31 00:50:16,604 log 99734 6213677056 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:50:16,604 basehttp 99734 6213677056 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:50:16,721 basehttp 99734 6213677056 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:50:27,361 basehttp 99734 6213677056 "GET /en/inventory/orders/ HTTP/1.1" 200 72576 +WARNING 2025-08-31 00:50:27,381 log 99734 6213677056 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:50:27,382 basehttp 99734 6213677056 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:50:27,454 basehttp 99734 6213677056 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:50:57,614 basehttp 99734 6213677056 "GET /en/inventory/orders/ HTTP/1.1" 200 72203 +WARNING 2025-08-31 00:50:57,631 log 99734 6213677056 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:50:57,631 basehttp 99734 6213677056 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:50:57,689 basehttp 99734 6213677056 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:51:21,615 basehttp 99734 6213677056 "GET /en/inventory/orders/ HTTP/1.1" 200 71999 +WARNING 2025-08-31 00:51:21,633 log 99734 6213677056 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:51:21,633 basehttp 99734 6213677056 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:51:21,692 basehttp 99734 6213677056 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:51:55,439 basehttp 99734 6213677056 "GET /en/inventory/orders/ HTTP/1.1" 200 71949 +WARNING 2025-08-31 00:51:55,454 log 99734 6213677056 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:51:55,454 basehttp 99734 6213677056 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:51:55,514 basehttp 99734 6213677056 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:52:13,866 basehttp 99734 6213677056 "GET /en/inventory/orders/ HTTP/1.1" 200 71979 +WARNING 2025-08-31 00:52:13,878 log 99734 6213677056 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:52:13,879 basehttp 99734 6213677056 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:52:13,917 basehttp 99734 6213677056 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:52:29,537 basehttp 99734 6213677056 "GET /en/inventory/orders/ HTTP/1.1" 200 71954 +WARNING 2025-08-31 00:52:29,549 log 99734 6213677056 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:52:29,549 basehttp 99734 6213677056 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:52:29,591 basehttp 99734 6213677056 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:52:39,186 basehttp 99734 6213677056 "GET /en/inventory/orders/ HTTP/1.1" 200 71954 +WARNING 2025-08-31 00:52:39,199 log 99734 6213677056 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:52:39,199 basehttp 99734 6213677056 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:52:39,257 basehttp 99734 6213677056 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:52:52,693 basehttp 99734 6213677056 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +WARNING 2025-08-31 00:52:52,696 log 99734 6196850688 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:52:52,696 basehttp 99734 6196850688 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +WARNING 2025-08-31 00:52:52,711 log 99734 6196850688 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:52:52,712 basehttp 99734 6196850688 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:52:53,379 basehttp 99734 6196850688 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +WARNING 2025-08-31 00:52:53,385 log 99734 6213677056 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:52:53,385 basehttp 99734 6213677056 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +WARNING 2025-08-31 00:52:53,396 log 99734 6213677056 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:52:53,397 basehttp 99734 6213677056 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:52:53,877 basehttp 99734 6213677056 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +WARNING 2025-08-31 00:52:53,879 log 99734 6196850688 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:52:53,879 basehttp 99734 6196850688 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +WARNING 2025-08-31 00:52:53,891 log 99734 6196850688 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:52:53,892 basehttp 99734 6196850688 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +WARNING 2025-08-31 00:52:54,395 log 99734 6196850688 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:52:54,395 basehttp 99734 6196850688 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +WARNING 2025-08-31 00:52:57,403 log 99734 6196850688 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:52:57,403 basehttp 99734 6196850688 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +WARNING 2025-08-31 00:52:58,047 log 99734 6196850688 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:52:58,048 basehttp 99734 6196850688 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:53:03,373 basehttp 99734 6196850688 "GET /en/inventory/stock/?stock_status=low HTTP/1.1" 200 148603 +WARNING 2025-08-31 00:53:03,397 log 99734 6196850688 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:53:03,397 basehttp 99734 6196850688 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:53:03,490 basehttp 99734 6196850688 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:53:03,495 basehttp 99734 6213677056 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:53:59,821 basehttp 99734 6213677056 "GET /en/inventory/stock/?stock_status=low HTTP/1.1" 200 149286 +WARNING 2025-08-31 00:53:59,841 log 99734 6213677056 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:53:59,842 basehttp 99734 6213677056 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:53:59,980 basehttp 99734 6213677056 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:53:59,985 basehttp 99734 6196850688 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:54:59,956 basehttp 99734 6196850688 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:54:59,962 basehttp 99734 6213677056 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:55:00,031 basehttp 99734 6213677056 "GET /en/inventory/stock/?stock_status=low HTTP/1.1" 200 149286 +WARNING 2025-08-31 00:55:00,051 log 99734 6213677056 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:55:00,051 basehttp 99734 6213677056 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:55:00,164 basehttp 99734 6213677056 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:55:00,188 basehttp 99734 6196850688 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:55:32,761 basehttp 99734 6196850688 "GET /en/inventory/stock/?stock_status=low HTTP/1.1" 200 149940 +WARNING 2025-08-31 00:55:32,779 log 99734 6196850688 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:55:32,779 basehttp 99734 6196850688 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:55:32,881 basehttp 99734 6196850688 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:55:32,889 basehttp 99734 6213677056 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:56:32,893 basehttp 99734 6213677056 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:56:32,902 basehttp 99734 6196850688 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:56:32,976 basehttp 99734 6196850688 "GET /en/inventory/stock/?stock_status=low HTTP/1.1" 200 149940 +WARNING 2025-08-31 00:56:33,001 log 99734 6196850688 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:56:33,001 basehttp 99734 6196850688 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:56:33,136 basehttp 99734 6196850688 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:56:33,141 basehttp 99734 6213677056 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:56:37,134 basehttp 99734 6213677056 "GET /en/inventory/stock/?stock_status=low HTTP/1.1" 200 149834 +WARNING 2025-08-31 00:56:37,159 log 99734 6213677056 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:56:37,159 basehttp 99734 6213677056 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:56:37,263 basehttp 99734 6213677056 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:56:37,268 basehttp 99734 6196850688 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:57:33,387 basehttp 99734 6196850688 "GET /en/inventory/stock/?stock_status=low HTTP/1.1" 200 149887 +WARNING 2025-08-31 00:57:33,410 log 99734 6196850688 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:57:33,410 basehttp 99734 6196850688 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:57:33,558 basehttp 99734 6196850688 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:57:33,563 basehttp 99734 6213677056 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:58:33,526 basehttp 99734 6213677056 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:58:33,536 basehttp 99734 6196850688 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:58:33,612 basehttp 99734 6196850688 "GET /en/inventory/stock/?stock_status=low HTTP/1.1" 200 149887 +WARNING 2025-08-31 00:58:33,634 log 99734 6196850688 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:58:33,634 basehttp 99734 6196850688 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:58:33,727 basehttp 99734 6196850688 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:58:33,733 basehttp 99734 6213677056 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:59:33,739 basehttp 99734 6213677056 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:59:33,749 basehttp 99734 6196850688 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:59:33,818 basehttp 99734 6196850688 "GET /en/inventory/stock/?stock_status=low HTTP/1.1" 200 149887 +WARNING 2025-08-31 00:59:33,839 log 99734 6196850688 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 00:59:33,839 basehttp 99734 6196850688 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 00:59:33,991 basehttp 99734 6196850688 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 00:59:33,998 basehttp 99734 6213677056 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:00:33,965 basehttp 99734 6213677056 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:00:33,973 basehttp 99734 6196850688 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:00:34,041 basehttp 99734 6196850688 "GET /en/inventory/stock/?stock_status=low HTTP/1.1" 200 149887 +WARNING 2025-08-31 01:00:34,065 log 99734 6196850688 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:00:34,065 basehttp 99734 6196850688 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 01:00:34,180 basehttp 99734 6196850688 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:00:34,195 basehttp 99734 6213677056 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:00:52,904 autoreload 99734 8466948288 /Users/marwanalwali/manus_project/hospital_management_system_v4/inventory/models.py changed, reloading. +INFO 2025-08-31 01:00:53,407 autoreload 16944 8466948288 Watching for file changes with StatReloader +INFO 2025-08-31 01:01:22,554 autoreload 16944 8466948288 /Users/marwanalwali/manus_project/hospital_management_system_v4/inventory/models.py changed, reloading. +INFO 2025-08-31 01:01:23,007 autoreload 17196 8466948288 Watching for file changes with StatReloader +INFO 2025-08-31 01:01:34,229 basehttp 17196 6163165184 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:01:34,235 basehttp 17196 6163165184 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:01:34,258 basehttp 17196 6163165184 "GET /en/inventory/stock/?stock_status=low HTTP/1.1" 200 149887 +WARNING 2025-08-31 01:01:34,279 log 17196 6163165184 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:01:34,279 basehttp 17196 6163165184 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 01:01:34,369 basehttp 17196 6163165184 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:01:34,375 basehttp 17196 6179991552 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:01:58,453 autoreload 17196 8466948288 /Users/marwanalwali/manus_project/hospital_management_system_v4/inventory/models.py changed, reloading. +INFO 2025-08-31 01:01:58,875 autoreload 17435 8466948288 Watching for file changes with StatReloader +INFO 2025-08-31 01:02:32,195 autoreload 17435 8466948288 /Users/marwanalwali/manus_project/hospital_management_system_v4/inventory/models.py changed, reloading. +INFO 2025-08-31 01:02:32,637 autoreload 17745 8466948288 Watching for file changes with StatReloader +INFO 2025-08-31 01:02:34,420 basehttp 17745 6192640000 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:02:34,427 basehttp 17745 6192640000 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:02:34,468 basehttp 17745 6192640000 "GET /en/inventory/stock/?stock_status=low HTTP/1.1" 200 149887 +WARNING 2025-08-31 01:02:34,489 log 17745 6192640000 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:02:34,489 basehttp 17745 6192640000 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 01:02:34,578 basehttp 17745 6192640000 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:02:34,584 basehttp 17745 6209466368 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:03:22,668 autoreload 17745 8466948288 /Users/marwanalwali/manus_project/hospital_management_system_v4/inventory/models.py changed, reloading. +INFO 2025-08-31 01:03:23,055 autoreload 18059 8466948288 Watching for file changes with StatReloader +INFO 2025-08-31 01:03:34,636 basehttp 18059 6167359488 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:03:34,643 basehttp 18059 6167359488 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:03:34,670 basehttp 18059 6167359488 "GET /en/inventory/stock/?stock_status=low HTTP/1.1" 200 149887 +WARNING 2025-08-31 01:03:34,690 log 18059 6167359488 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:03:34,690 basehttp 18059 6167359488 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 01:03:34,774 basehttp 18059 6167359488 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:03:34,788 basehttp 18059 6184185856 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:04:34,785 basehttp 18059 6184185856 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:04:34,825 basehttp 18059 6167359488 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:04:34,896 basehttp 18059 6167359488 "GET /en/inventory/stock/?stock_status=low HTTP/1.1" 200 149887 +WARNING 2025-08-31 01:04:34,914 log 18059 6167359488 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:04:34,914 basehttp 18059 6167359488 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 01:04:35,005 basehttp 18059 6167359488 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:04:35,082 basehttp 18059 6184185856 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:04:50,368 autoreload 18059 8466948288 /Users/marwanalwali/manus_project/hospital_management_system_v4/inventory/models.py changed, reloading. +INFO 2025-08-31 01:04:50,709 autoreload 18772 8466948288 Watching for file changes with StatReloader +INFO 2025-08-31 01:04:51,013 basehttp 18772 6124810240 "GET /en/inventory/stock/?stock_status=low HTTP/1.1" 200 149887 +WARNING 2025-08-31 01:04:51,042 log 18772 6124810240 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:04:51,042 basehttp 18772 6124810240 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 01:04:51,128 basehttp 18772 6124810240 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:04:51,135 basehttp 18772 6141636608 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:05:51,153 basehttp 18772 6141636608 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:05:51,162 basehttp 18772 6124810240 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:05:51,217 basehttp 18772 6124810240 "GET /en/inventory/stock/?stock_status=low HTTP/1.1" 200 149887 +WARNING 2025-08-31 01:05:51,237 log 18772 6124810240 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:05:51,237 basehttp 18772 6124810240 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 01:05:51,329 basehttp 18772 6124810240 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:05:51,336 basehttp 18772 6141636608 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:06:51,344 basehttp 18772 6141636608 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:06:51,355 basehttp 18772 6124810240 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:06:51,420 basehttp 18772 6124810240 "GET /en/inventory/stock/?stock_status=low HTTP/1.1" 200 149887 +WARNING 2025-08-31 01:06:51,443 log 18772 6124810240 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:06:51,443 basehttp 18772 6124810240 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 01:06:51,529 basehttp 18772 6124810240 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:06:51,534 basehttp 18772 6141636608 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:07:51,546 basehttp 18772 6141636608 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:07:51,558 basehttp 18772 6124810240 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:07:51,627 basehttp 18772 6124810240 "GET /en/inventory/stock/?stock_status=low HTTP/1.1" 200 149887 +WARNING 2025-08-31 01:07:51,650 log 18772 6124810240 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:07:51,650 basehttp 18772 6124810240 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 01:07:51,736 basehttp 18772 6124810240 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:07:51,741 basehttp 18772 6124810240 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:08:51,765 basehttp 18772 6124810240 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:08:51,774 basehttp 18772 6124810240 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:08:51,825 basehttp 18772 6124810240 "GET /en/inventory/stock/?stock_status=low HTTP/1.1" 200 149887 +WARNING 2025-08-31 01:08:51,848 log 18772 6124810240 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:08:51,849 basehttp 18772 6124810240 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 01:08:51,933 basehttp 18772 6124810240 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:08:51,939 basehttp 18772 6141636608 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:09:52,017 basehttp 18772 6141636608 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:09:52,025 basehttp 18772 6141636608 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:09:52,088 basehttp 18772 6141636608 "GET /en/inventory/stock/?stock_status=low HTTP/1.1" 200 149887 +WARNING 2025-08-31 01:09:52,111 log 18772 6141636608 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:09:52,111 basehttp 18772 6141636608 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 01:09:52,196 basehttp 18772 6141636608 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:09:52,202 basehttp 18772 6124810240 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:10:45,636 autoreload 18772 8466948288 /Users/marwanalwali/manus_project/hospital_management_system_v4/inventory/models.py changed, reloading. +INFO 2025-08-31 01:10:46,127 autoreload 21348 8466948288 Watching for file changes with StatReloader +INFO 2025-08-31 01:10:46,955 basehttp 21348 6197276672 "GET /en/inventory/stock/?stock_status=low HTTP/1.1" 200 150263 +WARNING 2025-08-31 01:10:46,986 log 21348 6197276672 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:10:46,987 basehttp 21348 6197276672 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 01:10:47,131 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:10:47,136 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:11:47,112 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:11:47,120 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:11:47,176 basehttp 21348 6197276672 "GET /en/inventory/stock/?stock_status=low HTTP/1.1" 200 150263 +WARNING 2025-08-31 01:11:47,201 log 21348 6197276672 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:11:47,201 basehttp 21348 6197276672 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 01:11:47,291 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:11:47,349 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:12:47,318 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:12:47,326 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:12:47,385 basehttp 21348 6197276672 "GET /en/inventory/stock/?stock_status=low HTTP/1.1" 200 150263 +WARNING 2025-08-31 01:12:47,409 log 21348 6197276672 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:12:47,409 basehttp 21348 6197276672 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 01:12:47,496 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:12:47,501 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:13:33,239 basehttp 21348 6214103040 "GET /en/inventory/stock/?stock_status=low HTTP/1.1" 200 150263 +WARNING 2025-08-31 01:13:33,280 log 21348 6214103040 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:13:33,281 basehttp 21348 6214103040 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 01:13:33,393 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:13:33,398 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:14:33,420 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:14:33,428 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:14:33,485 basehttp 21348 6214103040 "GET /en/inventory/stock/?stock_status=low HTTP/1.1" 200 150263 +WARNING 2025-08-31 01:14:33,511 log 21348 6214103040 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:14:33,511 basehttp 21348 6214103040 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 01:14:33,595 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:14:33,601 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:14:44,476 basehttp 21348 6197276672 "GET /en/inventory/stock/?stock_status=low HTTP/1.1" 200 150263 +WARNING 2025-08-31 01:14:44,507 log 21348 6197276672 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:14:44,507 basehttp 21348 6197276672 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 01:14:44,641 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:14:44,647 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:15:44,611 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:15:44,617 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:15:44,691 basehttp 21348 6197276672 "GET /en/inventory/stock/?stock_status=low HTTP/1.1" 200 150263 +WARNING 2025-08-31 01:15:44,712 log 21348 6197276672 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:15:44,712 basehttp 21348 6197276672 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 01:15:44,802 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:15:44,807 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:16:44,829 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:16:44,836 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:16:44,907 basehttp 21348 6197276672 "GET /en/inventory/stock/?stock_status=low HTTP/1.1" 200 150263 +WARNING 2025-08-31 01:16:44,932 log 21348 6197276672 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:16:44,932 basehttp 21348 6197276672 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 01:16:45,089 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:16:45,100 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:17:45,037 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:17:45,043 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:17:45,121 basehttp 21348 6197276672 "GET /en/inventory/stock/?stock_status=low HTTP/1.1" 200 150263 +WARNING 2025-08-31 01:17:45,142 log 21348 6197276672 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:17:45,142 basehttp 21348 6197276672 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 01:17:45,231 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:17:45,237 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:18:45,246 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:18:45,252 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:18:45,330 basehttp 21348 6197276672 "GET /en/inventory/stock/?stock_status=low HTTP/1.1" 200 150263 +WARNING 2025-08-31 01:18:45,355 log 21348 6197276672 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:18:45,356 basehttp 21348 6197276672 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 01:18:45,436 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:18:45,441 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:19:21,094 basehttp 21348 6214103040 "GET /en/inventory/stock/?stock_status=low HTTP/1.1" 200 150603 +WARNING 2025-08-31 01:19:21,121 log 21348 6214103040 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:19:21,122 basehttp 21348 6214103040 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 01:19:21,210 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:19:21,215 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:20:21,215 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:20:21,222 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:20:21,300 basehttp 21348 6214103040 "GET /en/inventory/stock/?stock_status=low HTTP/1.1" 200 150603 +WARNING 2025-08-31 01:20:21,325 log 21348 6214103040 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:20:21,326 basehttp 21348 6214103040 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 01:20:21,455 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:20:21,486 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:21:21,418 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:21:21,423 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:21:21,510 basehttp 21348 6214103040 "GET /en/inventory/stock/?stock_status=low HTTP/1.1" 200 150603 +WARNING 2025-08-31 01:21:21,530 log 21348 6214103040 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:21:21,530 basehttp 21348 6214103040 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 01:21:21,617 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:21:21,623 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:21:36,264 basehttp 21348 6197276672 "GET /en/inventory/stock/?stock_status=low HTTP/1.1" 200 150043 +WARNING 2025-08-31 01:21:36,288 log 21348 6197276672 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:21:36,288 basehttp 21348 6197276672 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 01:21:36,380 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:21:36,385 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:22:10,818 basehttp 21348 6214103040 "GET /en/inventory/stock/?stock_status=low HTTP/1.1" 200 150543 +WARNING 2025-08-31 01:22:10,840 log 21348 6214103040 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:22:10,840 basehttp 21348 6214103040 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 01:22:10,988 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:22:11,014 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:22:23,826 basehttp 21348 6197276672 "GET /en/inventory/stock/?stock_status=low HTTP/1.1" 200 150677 +WARNING 2025-08-31 01:22:23,853 log 21348 6197276672 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:22:23,854 basehttp 21348 6197276672 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 01:22:23,946 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:22:23,951 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:22:40,214 basehttp 21348 6214103040 "GET /en/inventory/stock/?stock_status=low HTTP/1.1" 200 150003 +WARNING 2025-08-31 01:22:40,243 log 21348 6214103040 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:22:40,243 basehttp 21348 6214103040 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 01:22:40,331 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:22:40,336 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:23:40,338 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:23:40,343 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:23:40,418 basehttp 21348 6214103040 "GET /en/inventory/stock/?stock_status=low HTTP/1.1" 200 150003 +WARNING 2025-08-31 01:23:40,440 log 21348 6214103040 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:23:40,440 basehttp 21348 6214103040 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 01:23:40,529 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:23:40,535 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:24:07,346 basehttp 21348 6197276672 "GET /en/inventory/stock/?stock_status=low HTTP/1.1" 200 150103 +WARNING 2025-08-31 01:24:07,374 log 21348 6197276672 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:24:07,374 basehttp 21348 6197276672 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 01:24:07,466 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:24:07,472 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:25:07,416 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:25:07,426 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:25:07,494 basehttp 21348 6197276672 "GET /en/inventory/stock/?stock_status=low HTTP/1.1" 200 150103 +WARNING 2025-08-31 01:25:07,521 log 21348 6197276672 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:25:07,521 basehttp 21348 6197276672 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 01:25:07,611 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:25:07,617 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:25:22,735 basehttp 21348 6214103040 "GET /en/inventory/stock/?stock_status=low HTTP/1.1" 200 150822 +WARNING 2025-08-31 01:25:22,764 log 21348 6214103040 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:25:22,764 basehttp 21348 6214103040 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 01:25:22,849 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:25:22,854 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:26:01,656 basehttp 21348 6197276672 "GET /en/inventory/stock/?stock_status=low HTTP/1.1" 200 151319 +WARNING 2025-08-31 01:26:01,683 log 21348 6197276672 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:26:01,683 basehttp 21348 6197276672 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 01:26:01,773 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:26:01,779 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:26:25,877 basehttp 21348 6214103040 "GET /en/inventory/stock/?stock_status=low HTTP/1.1" 200 151623 +WARNING 2025-08-31 01:26:25,904 log 21348 6214103040 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:26:25,905 basehttp 21348 6214103040 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 01:26:25,992 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:26:25,998 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:27:03,938 basehttp 21348 6197276672 "GET /en/inventory/stock/?stock_status=low HTTP/1.1" 200 151703 +WARNING 2025-08-31 01:27:03,958 log 21348 6197276672 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:27:03,958 basehttp 21348 6197276672 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 01:27:04,044 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:27:04,049 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:28:04,060 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:28:04,071 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:28:04,133 basehttp 21348 6197276672 "GET /en/inventory/stock/?stock_status=low HTTP/1.1" 200 151703 +WARNING 2025-08-31 01:28:04,161 log 21348 6197276672 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:28:04,161 basehttp 21348 6197276672 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 01:28:04,239 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:28:04,244 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:29:04,256 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:29:04,267 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:29:04,331 basehttp 21348 6197276672 "GET /en/inventory/stock/?stock_status=low HTTP/1.1" 200 151703 +WARNING 2025-08-31 01:29:04,354 log 21348 6197276672 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:29:04,354 basehttp 21348 6197276672 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 01:29:04,512 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:29:04,563 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:30:04,449 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:30:04,455 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:30:04,541 basehttp 21348 6197276672 "GET /en/inventory/stock/?stock_status=low HTTP/1.1" 200 151703 +WARNING 2025-08-31 01:30:04,565 log 21348 6197276672 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:30:04,565 basehttp 21348 6197276672 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 01:30:04,652 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:30:04,657 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:31:04,668 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:31:04,678 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:31:04,739 basehttp 21348 6197276672 "GET /en/inventory/stock/?stock_status=low HTTP/1.1" 200 151703 +WARNING 2025-08-31 01:31:04,767 log 21348 6197276672 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:31:04,767 basehttp 21348 6197276672 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 01:31:04,853 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:31:04,858 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +WARNING 2025-08-31 01:31:14,288 log 21348 6214103040 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:31:14,289 basehttp 21348 6214103040 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 01:31:17,333 basehttp 21348 6214103040 "GET /en/inventory/suppliers/ HTTP/1.1" 200 84964 +WARNING 2025-08-31 01:31:17,350 log 21348 6214103040 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:31:17,350 basehttp 21348 6214103040 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 01:31:17,395 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:31:24,992 basehttp 21348 6214103040 "GET /en/inventory/suppliers/10/ HTTP/1.1" 200 36685 +WARNING 2025-08-31 01:31:25,013 log 21348 6214103040 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:31:25,013 basehttp 21348 6214103040 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 01:31:25,062 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:31:28,524 basehttp 21348 6214103040 "GET /en/inventory/orders/3/ HTTP/1.1" 200 49899 +WARNING 2025-08-31 01:31:28,542 log 21348 6214103040 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:31:28,542 basehttp 21348 6214103040 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 01:31:28,604 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +WARNING 2025-08-31 01:31:33,625 log 21348 6214103040 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:31:33,625 basehttp 21348 6214103040 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +WARNING 2025-08-31 01:31:33,692 log 21348 6214103040 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:31:33,692 basehttp 21348 6214103040 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +WARNING 2025-08-31 01:31:34,006 log 21348 6214103040 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:31:34,006 basehttp 21348 6214103040 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +WARNING 2025-08-31 01:31:34,017 log 21348 6214103040 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:31:34,017 basehttp 21348 6214103040 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +WARNING 2025-08-31 01:31:34,951 log 21348 6214103040 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:31:34,951 basehttp 21348 6214103040 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +WARNING 2025-08-31 01:31:34,963 log 21348 6214103040 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:31:34,963 basehttp 21348 6214103040 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +WARNING 2025-08-31 01:31:44,253 log 21348 6214103040 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:31:44,253 basehttp 21348 6214103040 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 01:32:14,324 basehttp 21348 6214103040 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 01:32:44,337 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:32:44,338 basehttp 21348 6197276672 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 01:32:44,341 basehttp 21348 6230929408 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 01:33:14,324 basehttp 21348 6230929408 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 01:33:44,329 basehttp 21348 6230929408 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:33:44,332 basehttp 21348 6197276672 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 01:33:44,333 basehttp 21348 6214103040 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 01:34:14,329 basehttp 21348 6214103040 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 01:34:44,338 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:34:44,339 basehttp 21348 6197276672 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 01:34:44,341 basehttp 21348 6230929408 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 01:35:14,331 basehttp 21348 6230929408 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 01:35:44,346 basehttp 21348 6230929408 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:35:44,348 basehttp 21348 6197276672 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 01:35:44,349 basehttp 21348 6214103040 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 01:36:14,336 basehttp 21348 6214103040 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 01:36:44,345 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:36:44,348 basehttp 21348 6197276672 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 01:36:44,350 basehttp 21348 6230929408 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 01:37:14,339 basehttp 21348 6230929408 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 01:37:20,544 basehttp 21348 6230929408 "GET /en/emr/ HTTP/1.1" 200 71709 +WARNING 2025-08-31 01:37:20,563 log 21348 6230929408 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:37:20,563 basehttp 21348 6230929408 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 01:37:20,633 basehttp 21348 6230929408 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:37:20,638 basehttp 21348 6197276672 "GET /en/emr/stats/ HTTP/1.1" 200 2966 +WARNING 2025-08-31 01:37:43,613 log 21348 6197276672 Not Found: /en/emr/admissions +WARNING 2025-08-31 01:37:43,614 basehttp 21348 6197276672 "GET /en/emr/admissions HTTP/1.1" 404 37590 +WARNING 2025-08-31 01:37:43,635 log 21348 6197276672 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:37:43,636 basehttp 21348 6197276672 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +WARNING 2025-08-31 01:37:55,757 log 21348 6197276672 Not Found: /en/admissions +WARNING 2025-08-31 01:37:55,757 basehttp 21348 6197276672 "GET /en/admissions HTTP/1.1" 404 29871 +WARNING 2025-08-31 01:37:55,776 log 21348 6197276672 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:37:55,776 basehttp 21348 6197276672 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 01:38:18,014 basehttp 21348 6197276672 "GET /en/appointments/ HTTP/1.1" 200 45041 +WARNING 2025-08-31 01:38:18,027 log 21348 6197276672 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:38:18,027 basehttp 21348 6197276672 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 01:38:18,078 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:38:18,094 basehttp 21348 6214103040 "GET /en/appointments/stats/ HTTP/1.1" 200 3132 +INFO 2025-08-31 01:38:20,545 basehttp 21348 6214103040 "GET /en/appointments/detail/1288/ HTTP/1.1" 200 22912 +WARNING 2025-08-31 01:38:20,568 log 21348 6214103040 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:38:20,568 basehttp 21348 6214103040 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 01:38:20,618 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +WARNING 2025-08-31 01:38:22,795 log 21348 6214103040 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:38:22,795 basehttp 21348 6214103040 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +WARNING 2025-08-31 01:38:22,809 log 21348 6214103040 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:38:22,809 basehttp 21348 6214103040 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +WARNING 2025-08-31 01:38:44,761 log 21348 6214103040 Forbidden (CSRF token missing.): /en/appointments/check-in/1288/ +WARNING 2025-08-31 01:38:44,761 basehttp 21348 6214103040 "POST /en/appointments/check-in/1288/ HTTP/1.1" 403 2491 +INFO 2025-08-31 01:38:47,363 basehttp 21348 6214103040 "GET /en/appointments/calendar/ HTTP/1.1" 200 21988 +WARNING 2025-08-31 01:38:47,384 log 21348 6214103040 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:38:47,384 basehttp 21348 6214103040 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 01:38:47,450 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:38:47,454 basehttp 21348 6230929408 "GET /en/appointments/slots/available/ HTTP/1.1" 200 450 +INFO 2025-08-31 01:38:47,487 basehttp 21348 6197276672 "GET /en/appointments/calendar/appointments/ HTTP/1.1" 200 61598 +WARNING 2025-08-31 01:39:22,189 log 21348 6214103040 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:39:22,190 basehttp 21348 6214103040 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 01:39:22,192 basehttp 21348 6230929408 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +WARNING 2025-08-31 01:39:22,198 log 21348 6214103040 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:39:22,198 basehttp 21348 6214103040 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 01:39:22,209 basehttp 21348 6197276672 "GET /en/appointments/stats/ HTTP/1.1" 200 3132 +INFO 2025-08-31 01:39:24,511 basehttp 21348 6197276672 "GET /en/appointments/list/ HTTP/1.1" 200 130486 +WARNING 2025-08-31 01:39:24,531 log 21348 6197276672 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:39:24,532 basehttp 21348 6197276672 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 01:39:24,595 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +WARNING 2025-08-31 01:40:12,963 log 21348 6214103040 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:40:12,963 basehttp 21348 6214103040 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +WARNING 2025-08-31 01:40:12,978 log 21348 6214103040 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:40:12,979 basehttp 21348 6214103040 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 01:40:12,982 basehttp 21348 6197276672 "GET /en/appointments/stats/ HTTP/1.1" 200 3132 +INFO 2025-08-31 01:40:22,279 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:40:27,351 basehttp 21348 6197276672 "GET /en/appointments/queue/ HTTP/1.1" 200 18951 +WARNING 2025-08-31 01:40:27,370 log 21348 6197276672 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:40:27,370 basehttp 21348 6197276672 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 01:40:27,420 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:40:36,423 basehttp 21348 6197276672 "GET / HTTP/1.1" 302 0 +INFO 2025-08-31 01:40:36,442 basehttp 21348 6214103040 "GET /en/ HTTP/1.1" 200 47450 +WARNING 2025-08-31 01:40:36,460 log 21348 6214103040 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 01:40:36,460 basehttp 21348 6214103040 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 01:40:36,528 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:40:36,533 basehttp 21348 6197276672 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 01:40:36,535 basehttp 21348 6247755776 "GET /en/htmx/tenant-info/ HTTP/1.1" 200 1043 +INFO 2025-08-31 01:40:36,535 basehttp 21348 6230929408 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 01:40:42,568 basehttp 21348 6230929408 "GET /en/admin/appointments/appointmentrequest/ HTTP/1.1" 200 151866 +INFO 2025-08-31 01:40:42,584 basehttp 21348 6247755776 "GET /static/admin/img/icon-no.svg HTTP/1.1" 200 560 +INFO 2025-08-31 01:40:42,585 basehttp 21348 6247755776 "GET /static/admin/img/icon-yes.svg HTTP/1.1" 200 436 +INFO 2025-08-31 01:40:42,586 basehttp 21348 6230929408 "GET /en/admin/jsi18n/ HTTP/1.1" 200 3342 +INFO 2025-08-31 01:40:45,621 basehttp 21348 6230929408 "GET /en/admin/appointments/queueentry/ HTTP/1.1" 200 86544 +INFO 2025-08-31 01:40:45,636 basehttp 21348 6230929408 "GET /en/admin/jsi18n/ HTTP/1.1" 200 3342 +INFO 2025-08-31 01:41:07,228 basehttp 21348 6230929408 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 01:41:37,234 basehttp 21348 6230929408 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:41:37,235 basehttp 21348 6247755776 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 01:41:38,215 basehttp 21348 6230929408 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 01:42:09,228 basehttp 21348 6230929408 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 01:42:38,235 basehttp 21348 6247755776 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 01:42:38,235 basehttp 21348 6230929408 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:42:40,221 basehttp 21348 6230929408 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 01:43:11,222 basehttp 21348 6230929408 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 01:43:39,225 basehttp 21348 6230929408 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:43:39,225 basehttp 21348 6247755776 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 01:43:42,221 basehttp 21348 6230929408 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 01:44:39,229 basehttp 21348 6230929408 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 01:44:40,231 basehttp 21348 6230929408 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:44:40,231 basehttp 21348 6247755776 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 01:45:39,242 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 01:45:41,235 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 01:45:41,237 basehttp 21348 6214103040 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 02:01:54,526 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 02:01:57,520 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 02:01:57,523 basehttp 21348 6214103040 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 02:18:22,936 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 02:30:52,687 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 02:30:52,688 basehttp 21348 6214103040 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 02:30:52,689 basehttp 21348 6230929408 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 02:47:28,733 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 03:03:34,527 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 03:03:34,527 basehttp 21348 6214103040 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 03:03:34,528 basehttp 21348 6230929408 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 03:20:54,046 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 03:37:54,622 basehttp 21348 6214103040 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 03:37:54,623 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 03:37:54,624 basehttp 21348 6230929408 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 03:45:54,732 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 04:03:42,166 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 04:03:42,166 basehttp 21348 6214103040 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 04:03:42,168 basehttp 21348 6230929408 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 04:14:35,361 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 04:31:50,955 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 04:31:50,956 basehttp 21348 6214103040 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 04:31:50,958 basehttp 21348 6230929408 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 04:32:50,938 basehttp 21348 6230929408 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 04:47:34,996 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 04:47:34,996 basehttp 21348 6214103040 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 04:47:34,997 basehttp 21348 6230929408 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 04:48:34,967 basehttp 21348 6230929408 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 04:49:34,994 basehttp 21348 6230929408 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 04:49:34,994 basehttp 21348 6197276672 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 04:49:34,996 basehttp 21348 6214103040 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 04:50:34,987 basehttp 21348 6230929408 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 04:51:34,976 basehttp 21348 6230929408 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 04:51:34,977 basehttp 21348 6214103040 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 04:51:34,978 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 05:08:39,285 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 05:09:39,297 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 05:09:39,301 basehttp 21348 6214103040 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 05:09:39,302 basehttp 21348 6230929408 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 05:10:39,295 basehttp 21348 6230929408 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 05:11:39,305 basehttp 21348 6230929408 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 05:11:39,307 basehttp 21348 6214103040 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 05:11:39,308 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 05:30:18,535 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 05:46:25,112 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 05:46:25,113 basehttp 21348 6214103040 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 05:46:25,115 basehttp 21348 6230929408 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 05:47:25,034 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 05:48:25,051 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 05:48:25,057 basehttp 21348 6214103040 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 05:48:25,059 basehttp 21348 6230929408 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 05:49:25,043 basehttp 21348 6230929408 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 05:50:25,063 basehttp 21348 6230929408 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 05:50:25,063 basehttp 21348 6214103040 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 05:50:25,066 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 05:51:25,035 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 05:52:25,066 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 05:52:25,067 basehttp 21348 6230929408 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 05:52:25,068 basehttp 21348 6214103040 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 05:53:25,040 basehttp 21348 6214103040 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 05:54:25,062 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 05:54:25,064 basehttp 21348 6230929408 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 05:54:25,065 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 05:55:25,047 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 06:04:53,249 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 06:04:53,250 basehttp 21348 6214103040 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 06:04:53,251 basehttp 21348 6230929408 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 06:05:53,249 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 06:06:53,265 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 06:06:53,274 basehttp 21348 6230929408 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 06:06:53,277 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 06:07:53,243 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 06:08:53,258 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 06:08:53,260 basehttp 21348 6230929408 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 06:08:53,261 basehttp 21348 6214103040 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 06:09:53,238 basehttp 21348 6214103040 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 06:10:53,261 basehttp 21348 6230929408 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 06:10:53,262 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 06:10:53,264 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 06:11:53,239 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 06:12:53,251 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 06:12:53,252 basehttp 21348 6230929408 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 06:12:53,254 basehttp 21348 6214103040 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 06:13:53,234 basehttp 21348 6214103040 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 06:14:53,260 basehttp 21348 6230929408 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 06:14:53,260 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 06:14:53,261 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 06:15:53,251 basehttp 21348 6214103040 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 06:16:53,263 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 06:16:53,264 basehttp 21348 6197276672 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 06:16:53,265 basehttp 21348 6230929408 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 06:17:53,237 basehttp 21348 6230929408 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 06:18:53,231 basehttp 21348 6230929408 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 06:18:53,238 basehttp 21348 6214103040 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 06:18:53,240 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 06:19:53,279 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 06:20:53,304 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 06:20:53,306 basehttp 21348 6214103040 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 06:20:53,307 basehttp 21348 6230929408 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 06:21:53,284 basehttp 21348 6230929408 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 06:22:53,312 basehttp 21348 6230929408 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 06:22:53,312 basehttp 21348 6214103040 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 06:22:53,314 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 06:23:53,287 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 06:24:53,300 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 06:24:53,304 basehttp 21348 6214103040 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 06:24:53,305 basehttp 21348 6230929408 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 06:25:53,287 basehttp 21348 6230929408 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 06:26:53,310 basehttp 21348 6230929408 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 06:26:53,311 basehttp 21348 6214103040 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 06:26:53,312 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 06:27:53,293 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 06:28:53,302 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 06:28:53,306 basehttp 21348 6214103040 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 06:28:53,307 basehttp 21348 6230929408 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 06:29:53,284 basehttp 21348 6230929408 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 06:30:53,313 basehttp 21348 6230929408 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 06:30:53,314 basehttp 21348 6214103040 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 06:30:53,316 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 06:31:53,286 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 06:32:53,314 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 06:32:53,315 basehttp 21348 6214103040 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 06:32:53,316 basehttp 21348 6230929408 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 06:33:53,299 basehttp 21348 6230929408 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 06:34:53,317 basehttp 21348 6214103040 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 06:34:53,317 basehttp 21348 6230929408 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 06:34:53,319 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 06:35:53,306 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 06:36:53,305 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 06:36:53,307 basehttp 21348 6214103040 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 06:36:53,309 basehttp 21348 6230929408 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 06:37:53,317 basehttp 21348 6230929408 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 06:38:53,330 basehttp 21348 6230929408 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 06:38:53,330 basehttp 21348 6214103040 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 06:38:53,332 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 06:39:53,312 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 06:40:53,308 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 06:40:53,313 basehttp 21348 6214103040 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 06:40:53,316 basehttp 21348 6230929408 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 06:41:53,323 basehttp 21348 6230929408 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 06:42:53,321 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 06:42:53,327 basehttp 21348 6214103040 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 06:42:53,328 basehttp 21348 6230929408 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 06:43:53,316 basehttp 21348 6230929408 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 06:44:53,340 basehttp 21348 6214103040 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 06:44:53,340 basehttp 21348 6230929408 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 06:44:53,342 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 06:45:53,323 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 06:46:53,329 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 06:46:53,329 basehttp 21348 6214103040 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 06:46:53,331 basehttp 21348 6230929408 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 06:47:53,312 basehttp 21348 6230929408 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 06:48:53,334 basehttp 21348 6230929408 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 06:48:53,334 basehttp 21348 6214103040 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 06:48:53,335 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 06:49:53,178 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 06:50:53,185 basehttp 21348 6214103040 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 06:50:53,186 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 06:50:53,187 basehttp 21348 6230929408 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 06:51:53,160 basehttp 21348 6230929408 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 06:52:53,185 basehttp 21348 6230929408 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 06:52:53,186 basehttp 21348 6197276672 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 06:52:53,188 basehttp 21348 6214103040 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 06:53:53,158 basehttp 21348 6214103040 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 06:54:53,189 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 06:54:53,190 basehttp 21348 6214103040 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 06:54:53,192 basehttp 21348 6230929408 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 06:55:53,166 basehttp 21348 6230929408 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 06:56:53,180 basehttp 21348 6230929408 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 06:56:53,183 basehttp 21348 6214103040 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 06:56:53,184 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 06:57:53,200 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 06:57:53,208 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 06:57:53,209 basehttp 21348 6230929408 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 06:58:53,163 basehttp 21348 6214103040 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 06:59:53,162 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 06:59:53,163 basehttp 21348 6230929408 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 06:59:53,165 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 07:00:53,167 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 07:01:53,176 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 07:01:53,177 basehttp 21348 6230929408 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 07:01:53,178 basehttp 21348 6214103040 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 07:02:53,147 basehttp 21348 6214103040 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 07:03:53,151 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 07:03:53,161 basehttp 21348 6197276672 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 07:03:53,163 basehttp 21348 6230929408 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 07:04:53,190 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 07:04:53,192 basehttp 21348 6230929408 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 07:22:10,812 basehttp 21348 6197276672 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 07:22:10,814 basehttp 21348 6214103040 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 07:29:40,875 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 07:29:40,878 basehttp 21348 6214103040 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 07:32:32,876 basehttp 21348 6197276672 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 07:32:32,877 basehttp 21348 6214103040 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 07:40:34,972 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 07:40:34,975 basehttp 21348 6214103040 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 07:41:34,958 basehttp 21348 6214103040 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 07:41:34,960 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 07:42:34,961 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 07:42:34,963 basehttp 21348 6214103040 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 07:43:34,955 basehttp 21348 6214103040 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 07:43:34,956 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 07:44:34,962 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 07:44:34,963 basehttp 21348 6214103040 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 07:45:34,961 basehttp 21348 6214103040 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 07:45:34,962 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 07:46:34,959 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 07:46:34,961 basehttp 21348 6214103040 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 07:47:34,962 basehttp 21348 6214103040 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 07:47:34,964 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 07:48:34,960 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 07:48:34,962 basehttp 21348 6214103040 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 07:49:34,959 basehttp 21348 6214103040 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 07:49:34,961 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 07:50:34,952 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 07:50:34,954 basehttp 21348 6214103040 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 07:51:34,965 basehttp 21348 6214103040 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 07:51:34,966 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 07:52:34,949 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 07:52:34,951 basehttp 21348 6214103040 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 07:53:34,955 basehttp 21348 6197276672 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 07:53:34,957 basehttp 21348 6214103040 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 07:54:34,952 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 07:54:34,953 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 07:55:34,958 basehttp 21348 6197276672 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 07:55:34,959 basehttp 21348 6214103040 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 07:56:34,947 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 07:56:34,949 basehttp 21348 6214103040 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 07:57:34,946 basehttp 21348 6214103040 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 07:57:34,947 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 07:58:34,936 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 07:58:34,939 basehttp 21348 6214103040 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 07:59:34,933 basehttp 21348 6214103040 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 07:59:34,935 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 08:00:34,934 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 08:00:34,937 basehttp 21348 6214103040 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 08:01:34,917 basehttp 21348 6214103040 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 08:01:34,919 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 08:02:34,940 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 08:02:34,943 basehttp 21348 6214103040 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 08:03:34,924 basehttp 21348 6214103040 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 08:03:34,926 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 08:04:34,934 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 08:04:34,935 basehttp 21348 6214103040 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 08:05:34,928 basehttp 21348 6197276672 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 08:05:34,930 basehttp 21348 6214103040 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 08:06:34,931 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 08:06:34,934 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 08:07:34,920 basehttp 21348 6197276672 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 08:07:34,922 basehttp 21348 6214103040 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 08:08:34,931 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 08:08:34,933 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 08:09:34,926 basehttp 21348 6197276672 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 08:09:34,928 basehttp 21348 6214103040 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 08:10:34,925 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 08:10:34,928 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 08:11:34,909 basehttp 21348 6197276672 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 08:11:34,911 basehttp 21348 6214103040 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 08:12:34,925 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 08:12:34,926 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 08:13:34,920 basehttp 21348 6197276672 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 08:13:34,922 basehttp 21348 6214103040 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 08:14:34,917 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 08:14:34,919 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 08:15:34,922 basehttp 21348 6197276672 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 08:15:34,923 basehttp 21348 6214103040 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 08:16:34,921 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 08:16:34,923 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 08:17:34,917 basehttp 21348 6197276672 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 08:17:34,918 basehttp 21348 6214103040 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 08:18:34,919 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 08:18:34,921 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 08:19:34,910 basehttp 21348 6197276672 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 08:19:34,912 basehttp 21348 6214103040 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 08:20:34,912 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 08:20:34,915 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 08:21:34,917 basehttp 21348 6197276672 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 08:21:34,919 basehttp 21348 6214103040 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 08:22:34,918 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 08:22:34,920 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 08:23:34,914 basehttp 21348 6197276672 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 08:23:34,916 basehttp 21348 6214103040 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 08:24:34,914 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 08:24:34,917 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 08:25:34,909 basehttp 21348 6197276672 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 08:25:34,911 basehttp 21348 6214103040 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 08:26:34,792 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 08:26:34,794 basehttp 21348 6214103040 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 08:27:34,794 basehttp 21348 6214103040 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 08:27:34,794 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 08:28:34,790 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 08:28:34,792 basehttp 21348 6214103040 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 08:29:34,788 basehttp 21348 6197276672 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 08:29:34,790 basehttp 21348 6214103040 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 08:30:34,785 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 08:30:34,786 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 08:31:34,782 basehttp 21348 6197276672 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 08:31:34,783 basehttp 21348 6214103040 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 08:32:34,779 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 08:32:34,781 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 08:33:34,789 basehttp 21348 6197276672 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 08:33:34,791 basehttp 21348 6214103040 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 08:34:34,774 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 08:34:34,778 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 08:35:34,773 basehttp 21348 6197276672 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 08:35:34,774 basehttp 21348 6214103040 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 08:36:34,775 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 08:36:34,777 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 08:37:34,766 basehttp 21348 6197276672 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 08:37:34,768 basehttp 21348 6214103040 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 08:38:34,764 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 08:38:34,766 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 08:39:34,770 basehttp 21348 6197276672 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 08:39:34,771 basehttp 21348 6214103040 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 08:40:34,767 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 08:40:34,769 basehttp 21348 6197276672 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 08:41:34,771 basehttp 21348 6197276672 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 08:41:34,774 basehttp 21348 6214103040 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 08:48:33,357 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 08:48:33,359 basehttp 21348 6214103040 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 08:56:06,744 basehttp 21348 6197276672 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 08:56:06,747 basehttp 21348 6214103040 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 09:19:17,824 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 09:19:17,827 basehttp 21348 6214103040 "GET /en/htmx/dashboard-stats/ HTTP/1.1" 200 2094 +INFO 2025-08-31 09:19:21,721 basehttp 21348 6214103040 "GET /en/htmx/system-health/ HTTP/1.1" 200 1359 +INFO 2025-08-31 09:19:31,093 basehttp 21348 6214103040 "GET /en/inventory/ HTTP/1.1" 200 46616 +INFO 2025-08-31 09:19:31,106 basehttp 21348 6197276672 "GET /static/css/custom.css HTTP/1.1" 304 0 +WARNING 2025-08-31 09:19:31,111 log 21348 6214103040 Not Found: /.well-known/appspecific/com.chrome.devtools.json +WARNING 2025-08-31 09:19:31,111 basehttp 21348 6214103040 "GET /.well-known/appspecific/com.chrome.devtools.json HTTP/1.1" 404 2668 +INFO 2025-08-31 09:19:31,209 basehttp 21348 6214103040 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 09:19:31,210 basehttp 21348 6197276672 "GET /en/inventory/htmx/stats/ HTTP/1.1" 200 6394 +INFO 2025-08-31 09:19:40,373 basehttp 21348 6197276672 "GET /en/inventory/items/ HTTP/1.1" 200 42642 +INFO 2025-08-31 09:19:40,446 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 09:19:40,476 basehttp 21348 6197276672 "GET /en/inventory/items/ HTTP/1.1" 200 42642 +INFO 2025-08-31 09:19:40,476 basehttp 21348 6214103040 "GET /en/inventory/htmx/stats/ HTTP/1.1" 200 6394 +INFO 2025-08-31 09:20:40,630 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 09:27:59,867 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 10:33:21,081 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 10:35:02,644 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 10:36:00,686 basehttp 21348 6197276672 "GET /en/inventory/htmx/stats/ HTTP/1.1" 200 6394 +INFO 2025-08-31 10:36:03,641 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 10:37:04,643 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 10:38:06,639 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 10:39:37,646 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 10:40:37,643 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 10:41:00,669 basehttp 21348 6197276672 "GET /en/inventory/htmx/stats/ HTTP/1.1" 200 6394 +INFO 2025-08-31 10:42:37,652 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 10:44:37,645 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 10:46:00,692 basehttp 21348 6197276672 "GET /en/inventory/htmx/stats/ HTTP/1.1" 200 6394 +INFO 2025-08-31 10:46:09,409 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 +INFO 2025-08-31 10:47:09,423 basehttp 21348 6197276672 "GET /en/htmx/system-notifications/ HTTP/1.1" 200 3836 diff --git a/operating_theatre/.DS_Store b/operating_theatre/.DS_Store new file mode 100644 index 00000000..7f7954de Binary files /dev/null and b/operating_theatre/.DS_Store differ diff --git a/operating_theatre/__pycache__/urls.cpython-312.pyc b/operating_theatre/__pycache__/urls.cpython-312.pyc index 3feda063..79599663 100644 Binary files a/operating_theatre/__pycache__/urls.cpython-312.pyc and b/operating_theatre/__pycache__/urls.cpython-312.pyc differ diff --git a/operating_theatre/__pycache__/views.cpython-312.pyc b/operating_theatre/__pycache__/views.cpython-312.pyc index ec00a43e..012c773d 100644 Binary files a/operating_theatre/__pycache__/views.cpython-312.pyc and b/operating_theatre/__pycache__/views.cpython-312.pyc differ diff --git a/operating_theatre/management/.DS_Store b/operating_theatre/management/.DS_Store new file mode 100644 index 00000000..3f7bf143 Binary files /dev/null and b/operating_theatre/management/.DS_Store differ diff --git a/operating_theatre/management/__init__.py b/operating_theatre/management/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/operating_theatre/management/__pycache__/__init__.cpython-312.pyc b/operating_theatre/management/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 00000000..84bcfb85 Binary files /dev/null and b/operating_theatre/management/__pycache__/__init__.cpython-312.pyc differ diff --git a/operating_theatre/management/commands/__init__.py b/operating_theatre/management/commands/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/operating_theatre/management/commands/__pycache__/__init__.cpython-312.pyc b/operating_theatre/management/commands/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 00000000..4b0fc01f Binary files /dev/null and b/operating_theatre/management/commands/__pycache__/__init__.cpython-312.pyc differ diff --git a/operating_theatre/management/commands/__pycache__/or_data.cpython-312.pyc b/operating_theatre/management/commands/__pycache__/or_data.cpython-312.pyc new file mode 100644 index 00000000..5373f3f2 Binary files /dev/null and b/operating_theatre/management/commands/__pycache__/or_data.cpython-312.pyc differ diff --git a/operating_theatre/management/commands/or_data.py b/operating_theatre/management/commands/or_data.py new file mode 100644 index 00000000..8912b70a --- /dev/null +++ b/operating_theatre/management/commands/or_data.py @@ -0,0 +1,585 @@ +""" +Django management command to generate Saudi-influenced Operating Theatre data +Place this file in: operating_theatre/management/commands/generate_saudi_or_data.py +""" + +import random +import uuid +from datetime import datetime, timedelta, date, time +from decimal import Decimal +from django.core.management.base import BaseCommand +from django.db import transaction +from django.utils import timezone +from faker import Faker + +# Import your models +from operating_theatre.models import ( + OperatingRoom, + ORBlock, + SurgicalCase, + SurgicalNote, + EquipmentUsage, + SurgicalNoteTemplate +) +from core.models import Tenant +from patients.models import PatientProfile +from django.contrib.auth import get_user_model + +User = get_user_model() +fake = Faker('en_US') + + +class Command(BaseCommand): + help = 'Generate Saudi-influenced Operating Theatre test data' + + # Saudi cultural data + SAUDI_MALE_FIRST_NAMES = [ + "Mohammed", "Abdullah", "Abdulrahman", "Khalid", "Fahad", + "Sultan", "Salman", "Saud", "Faisal", "Turki", "Ahmed", + "Omar", "Youssef", "Ibrahim", "Hamad", "Nasser", "Bandar", + "Mansour", "Majed", "Waleed", "Talal", "Rakan", "Yazeed" + ] + + SAUDI_FEMALE_FIRST_NAMES = [ + "Nora", "Fatima", "Aisha", "Mariam", "Sarah", "Reem", + "Lama", "Hind", "Mona", "Amal", "Dalal", "Jawaher", + "Latifa", "Hessa", "Nouf", "Asma", "Khadija", "Layla" + ] + + SAUDI_FAMILY_NAMES = [ + "Al-Saud", "Al-Rasheed", "Al-Qahtani", "Al-Otaibi", "Al-Dossari", + "Al-Harbi", "Al-Zahrani", "Al-Ghamdi", "Al-Shehri", "Al-Asmari", + "Al-Mutairi", "Al-Enezi", "Al-Shamari", "Al-Maliki", "Al-Johani" + ] + + SAUDI_HOSPITALS = [ + "King Faisal Specialist Hospital", + "King Fahad Medical City", + "King Abdulaziz University Hospital", + "Prince Sultan Military Medical City", + "King Saud Medical City" + ] + + SAUDI_CITIES = [ + "Riyadh", "Jeddah", "Mecca", "Medina", "Dammam", + "Khobar", "Dhahran", "Taif", "Tabuk", "Buraidah" + ] + + SURGICAL_PROCEDURES = { + "GENERAL": [ + "Laparoscopic Cholecystectomy", + "Appendectomy", + "Hernia Repair", + "Bowel Resection", + "Gastric Bypass" + ], + "CARDIAC": [ + "Coronary Artery Bypass Grafting", + "Valve Replacement", + "Pacemaker Insertion" + ], + "ORTHOPEDIC": [ + "Total Knee Replacement", + "Total Hip Replacement", + "Spinal Fusion", + "ACL Reconstruction" + ], + "NEURO": [ + "Craniotomy", + "Brain Tumor Resection", + "Spinal Decompression" + ] + } + + MEDICAL_EQUIPMENT = [ + "Da Vinci Surgical Robot", + "C-Arm Fluoroscopy", + "Zeiss Surgical Microscope", + "Harmonic Scalpel", + "LigaSure Device" + ] + + def add_arguments(self, parser): + parser.add_argument( + '--tenant', + type=str, + help='Tenant ID to use for data generation' + ) + parser.add_argument( + '--rooms', + type=int, + default=5, + help='Number of operating rooms to create' + ) + parser.add_argument( + '--blocks', + type=int, + default=3, + help='Number of OR blocks per room' + ) + parser.add_argument( + '--cases', + type=int, + default=2, + help='Number of cases per block' + ) + parser.add_argument( + '--clear', + action='store_true', + help='Clear existing OR data before generating' + ) + + def handle(self, *args, **options): + self.stdout.write(self.style.SUCCESS('Starting Saudi OR data generation...')) + + # Get or create tenant + tenant = self.get_or_create_tenant(options.get('tenant')) + + # Clear existing data if requested + if options['clear']: + self.clear_existing_data(tenant) + + # Generate data + with transaction.atomic(): + # Create users (surgeons, nurses, etc.) + users = self.create_medical_staff(tenant, 20) + + # Create patients + patients = self.create_patients(tenant, 30) + + # Create surgical note templates + self.create_surgical_note_templates(tenant) + + # Create operating rooms + rooms = self.create_operating_rooms(tenant, options['rooms']) + + # Create OR blocks and surgical cases + for room in rooms: + self.create_or_blocks_with_cases( + room, + users, + patients, + options['blocks'], + options['cases'] + ) + + self.stdout.write(self.style.SUCCESS('Data generation complete!')) + self.print_summary(tenant) + + def get_or_create_tenant(self, tenant_id=1): + """Get existing tenant or create a new one.""" + if tenant_id: + try: + return Tenant.objects.get(id=tenant_id) + except Tenant.DoesNotExist: + self.stdout.write(self.style.WARNING(f'Tenant {tenant_id} not found, creating new one')) + + # Create a new tenant + hospital_name = random.choice(self.SAUDI_HOSPITALS) + tenant, created = Tenant.objects.get_or_create( + name=hospital_name, + defaults={ + 'domain': hospital_name.lower().replace(' ', '-') + '.sa', + 'is_active': True, + 'settings': { + 'country': 'Saudi Arabia', + 'city': random.choice(self.SAUDI_CITIES), + 'timezone': 'Asia/Riyadh', + 'currency': 'SAR' + } + } + ) + + if created: + self.stdout.write(self.style.SUCCESS(f'Created tenant: {tenant.name}')) + + return tenant + + def clear_existing_data(self, tenant): + """Clear existing OR data for the tenant.""" + self.stdout.write('Clearing existing data...') + + OperatingRoom.objects.filter(tenant=tenant).delete() + SurgicalNoteTemplate.objects.filter(tenant=tenant).delete() + + self.stdout.write(self.style.SUCCESS('Existing data cleared')) + + def create_medical_staff(self, tenant, count=20): + """Create medical staff users.""" + self.stdout.write('Creating medical staff...') + users = [] + + for i in range(count): + is_female = i % 3 == 0 # 1/3 female staff + + if is_female: + first_name = random.choice(self.SAUDI_FEMALE_FIRST_NAMES) + title = random.choice(['Dr.', 'Nurse']) + else: + first_name = random.choice(self.SAUDI_MALE_FIRST_NAMES) + title = 'Dr.' + + last_name = random.choice(self.SAUDI_FAMILY_NAMES) + username = f"{first_name.lower()}.{last_name.lower().replace('-', '')}_{i}" + email = f"{username}@{tenant.domain}" + + user, created = User.objects.get_or_create( + username=username, + defaults={ + 'email': email, + 'first_name': first_name, + 'last_name': last_name, + 'is_active': True + } + ) + + if created: + user.set_password('password123') + user.save() + + users.append(user) + + self.stdout.write(self.style.SUCCESS(f'Created {len(users)} medical staff')) + return users + + def create_patients(self, tenant, count=30): + """Create patient profiles.""" + self.stdout.write('Creating patients...') + patients = [] + + for i in range(count): + is_female = random.random() > 0.6 + + if is_female: + first_name = random.choice(self.SAUDI_FEMALE_FIRST_NAMES) + gender = 'F' + else: + first_name = random.choice(self.SAUDI_MALE_FIRST_NAMES) + gender = 'M' + + last_name = random.choice(self.SAUDI_FAMILY_NAMES) + + # Create user for patient + username = f"patient_{first_name.lower()}_{i}" + user, _ = User.objects.get_or_create( + username=username, + defaults={ + 'email': f"{username}@example.com", + 'first_name': first_name, + 'last_name': last_name + } + ) + + # Create patient profile + patient, created = PatientProfile.objects.get_or_create( + user=user, + defaults={ + 'tenant': tenant, + 'patient_id': f"P{datetime.now().year}{i:06d}", + 'date_of_birth': fake.date_of_birth(minimum_age=18, maximum_age=80), + 'gender': gender, + 'blood_group': random.choice(['A+', 'A-', 'B+', 'B-', 'O+', 'O-', 'AB+', 'AB-']), + 'phone': f"+966{random.randint(500000000, 599999999)}", + 'email': user.email, + 'address': f"{random.randint(1, 999)} {random.choice(['King Fahd Road', 'Olaya Street', 'Tahlia Street'])}, {random.choice(self.SAUDI_CITIES)}", + 'emergency_contact_name': random.choice(self.SAUDI_MALE_FIRST_NAMES) + ' ' + last_name, + 'emergency_contact_phone': f"+966{random.randint(500000000, 599999999)}", + 'national_id': f"{random.randint(1000000000, 2999999999)}", + 'insurance_provider': random.choice(['Bupa', 'Tawuniya', 'MedGulf', 'Allianz', 'AXA']), + 'insurance_number': f"INS{random.randint(100000, 999999)}" + } + ) + + patients.append(patient) + + self.stdout.write(self.style.SUCCESS(f'Created {len(patients)} patients')) + return patients + + def create_surgical_note_templates(self, tenant): + """Create surgical note templates.""" + self.stdout.write('Creating surgical note templates...') + + specialties = ['GENERAL', 'CARDIAC', 'NEURO', 'ORTHOPEDIC', 'OBSTETRIC'] + + for specialty in specialties: + for template_type in ['Standard', 'Complex', 'Emergency']: + SurgicalNoteTemplate.objects.get_or_create( + tenant=tenant, + name=f"{specialty} - {template_type} Template", + defaults={ + 'description': f"Standard {template_type.lower()} template for {specialty.lower()} procedures", + 'specialty': specialty, + 'procedure_type': random.choice(self.SURGICAL_PROCEDURES.get(specialty, ['General'])), + 'preoperative_diagnosis_template': "Preoperative Diagnosis: [Enter diagnosis]", + 'planned_procedure_template': "Planned Procedure: [Enter procedure]", + 'indication_template': "Indication: Patient presents with [symptoms] requiring intervention", + 'procedure_performed_template': "Procedure: [Describe procedure performed]", + 'surgical_approach_template': "Approach: [Describe approach]", + 'findings_template': "Findings: [Describe findings]", + 'technique_template': "Technique: Standard surgical technique employed", + 'postoperative_diagnosis_template': "Postoperative Diagnosis: [Enter diagnosis]", + 'is_active': True, + 'is_default': template_type == 'Standard' + } + ) + + self.stdout.write(self.style.SUCCESS('Created surgical note templates')) + + def create_operating_rooms(self, tenant, count=5): + """Create operating rooms.""" + self.stdout.write('Creating operating rooms...') + rooms = [] + + room_types = ['GENERAL', 'CARDIAC', 'NEURO', 'ORTHOPEDIC', 'OBSTETRIC'] + + for i in range(1, count + 1): + room_type = room_types[(i-1) % len(room_types)] + + room = OperatingRoom.objects.create( + tenant=tenant, + room_number=f"OR-{i:03d}", + room_name=f"{room_type.title()} Operating Room {i}", + room_type=room_type, + status='AVAILABLE', + floor_number=random.randint(1, 4), + room_size=random.uniform(40, 80), + ceiling_height=random.uniform(3.0, 4.5), + temperature_min=18.0, + temperature_max=24.0, + humidity_min=30.0, + humidity_max=60.0, + air_changes_per_hour=random.randint(20, 25), + positive_pressure=True, + equipment_list=self._get_equipment_list(room_type), + special_features=self._get_special_features(room_type), + has_c_arm=room_type in ['ORTHOPEDIC', 'NEURO'], + has_ct=room_type in ['NEURO', 'CARDIAC'] and random.random() > 0.5, + has_mri=room_type == 'NEURO' and random.random() > 0.7, + has_ultrasound=True, + has_neuromonitoring=room_type in ['NEURO', 'ORTHOPEDIC'], + supports_robotic=room_type in ['GENERAL', 'CARDIAC'] and random.random() > 0.4, + supports_laparoscopic=room_type in ['GENERAL', 'OBSTETRIC'], + supports_microscopy=room_type in ['NEURO', 'OPHTHALMOLOGY'], + max_case_duration=random.randint(240, 720), + turnover_time=random.randint(20, 45), + cleaning_time=random.randint(30, 60), + required_nurses=random.randint(2, 4), + required_techs=random.randint(1, 3), + is_active=True, + accepts_emergency=True, + building=random.choice(['Main', 'East Wing', 'West Wing']), + wing=random.choice(['North', 'South', 'Central']) + ) + + rooms.append(room) + + self.stdout.write(self.style.SUCCESS(f'Created {len(rooms)} operating rooms')) + return rooms + + def _get_equipment_list(self, room_type): + """Get equipment list for room type.""" + basic = [ + "Anesthesia Machine", + "Patient Monitor", + "Surgical Lights", + "Operating Table", + "Electrocautery Unit" + ] + + specialized = { + 'CARDIAC': ["Heart-Lung Machine", "IABP"], + 'NEURO': ["Surgical Microscope", "Neuronavigation"], + 'ORTHOPEDIC': ["C-Arm", "Power Tools"], + 'GENERAL': ["Laparoscopic Tower", "Harmonic Scalpel"] + } + + equipment = basic.copy() + if room_type in specialized: + equipment.extend(specialized[room_type]) + + return equipment + + def _get_special_features(self, room_type): + """Get special features for room type.""" + features = ["Laminar Flow", "HEPA Filtration"] + + special = { + 'CARDIAC': ["Hybrid OR Capability"], + 'NEURO': ["Intraoperative MRI Compatible"], + 'ORTHOPEDIC': ["Class 100 Clean Room"], + 'OBSTETRIC': ["Neonatal Resuscitation Area"] + } + + if room_type in special: + features.extend(special[room_type]) + + return features + + def create_or_blocks_with_cases(self, room, users, patients, num_blocks, num_cases): + """Create OR blocks with surgical cases.""" + self.stdout.write(f'Creating blocks for {room.room_number}...') + + surgeons = [u for u in users if 'Dr.' in u.first_name or random.random() > 0.5] + nurses = [u for u in users if u not in surgeons] + + for block_num in range(num_blocks): + # Create OR block + block_date = timezone.now().date() + timedelta(days=random.randint(1, 30)) + start_hour = random.choice([7, 8, 9, 13]) + duration = random.randint(2, 6) + + block = ORBlock.objects.create( + operating_room=room, + date=block_date, + start_time=time(start_hour, 0), + end_time=time((start_hour + duration) % 24, 0), + block_type='SCHEDULED', + primary_surgeon=random.choice(surgeons), + service=room.room_type, + status=random.choice(['SCHEDULED', 'ACTIVE', 'COMPLETED']), + allocated_minutes=duration * 60, + used_minutes=random.randint(duration * 45, duration * 60), + special_equipment=random.sample(self.MEDICAL_EQUIPMENT, k=random.randint(0, 2)), + notes=f"Block for {room.room_type} procedures" + ) + + # Add assistant surgeons + if surgeons: + assistants = random.sample(surgeons, k=min(random.randint(0, 2), len(surgeons))) + block.assistant_surgeons.set(assistants) + + # Create surgical cases for this block + for case_num in range(random.randint(1, num_cases)): + self.create_surgical_case(block, patients, surgeons, nurses) + + def create_surgical_case(self, block, patients, surgeons, nurses): + """Create a surgical case.""" + procedure_type = block.service + procedures = self.SURGICAL_PROCEDURES.get(procedure_type, ['General Surgery']) + + case_time = datetime.combine(block.date, block.start_time) + timedelta(minutes=random.randint(0, 120)) + duration = random.randint(30, 240) + + case = SurgicalCase.objects.create( + or_block=block, + patient=random.choice(patients), + primary_surgeon=block.primary_surgeon, + anesthesiologist=random.choice(surgeons) if surgeons else block.primary_surgeon, + circulating_nurse=random.choice(nurses) if nurses else None, + scrub_nurse=random.choice(nurses) if nurses else None, + primary_procedure=random.choice(procedures), + secondary_procedures=[], + procedure_codes=[f"CPT{random.randint(10000, 99999)}" for _ in range(random.randint(1, 3))], + case_type=random.choice(['ELECTIVE', 'URGENT', 'EMERGENCY']), + approach=random.choice(['OPEN', 'LAPAROSCOPIC', 'ROBOTIC']), + anesthesia_type=random.choice(['GENERAL', 'REGIONAL', 'SPINAL']), + scheduled_start=timezone.make_aware(case_time), + estimated_duration=duration, + status=random.choice(['SCHEDULED', 'COMPLETED', 'IN_PROGRESS']), + diagnosis=self._get_diagnosis(), + diagnosis_codes=[f"ICD10-{random.choice(['K', 'I', 'M'])}{random.randint(10, 99)}.{random.randint(0, 9)}"], + clinical_notes="Patient prepared for surgery as per protocol", + special_equipment=random.sample(self.MEDICAL_EQUIPMENT, k=random.randint(0, 2)), + patient_position=random.choice(['SUPINE', 'PRONE', 'LATERAL']), + estimated_blood_loss=random.randint(10, 500) if random.random() > 0.5 else None + ) + + # Add assistant surgeons + if surgeons: + assistants = random.sample(surgeons, k=min(random.randint(0, 2), len(surgeons))) + case.assistant_surgeons.set(assistants) + + # Create surgical note for completed cases + if case.status == 'COMPLETED': + self.create_surgical_note(case) + + # Create equipment usage + self.create_equipment_usage(case) + + return case + + def _get_diagnosis(self): + """Get a random diagnosis.""" + diagnoses = [ + "Acute Appendicitis", + "Cholelithiasis", + "Inguinal Hernia", + "Coronary Artery Disease", + "Spinal Stenosis", + "Osteoarthritis", + "Brain Tumor", + "Breast Cancer" + ] + return random.choice(diagnoses) + + def create_surgical_note(self, case): + """Create surgical note for completed case.""" + SurgicalNote.objects.create( + surgical_case=case, + surgeon=case.primary_surgeon, + preoperative_diagnosis=case.diagnosis, + planned_procedure=case.primary_procedure, + indication="Symptomatic disease requiring surgical intervention", + procedure_performed=case.primary_procedure, + surgical_approach=f"{case.approach} approach utilized", + findings="As per preoperative diagnosis", + technique="Standard surgical technique employed", + postoperative_diagnosis=case.diagnosis, + condition=random.choice(['STABLE', 'GOOD', 'FAIR']), + disposition=random.choice(['RECOVERY', 'ICU', 'WARD']), + complications="None", + estimated_blood_loss=case.estimated_blood_loss or random.randint(10, 200), + specimens="Sent to pathology" if random.random() > 0.5 else None, + closure="Layered closure with absorbable sutures", + postop_instructions="Standard postoperative care protocol", + follow_up="2 weeks in surgical clinic", + status='SIGNED', + signed_datetime=timezone.now() + ) + + def create_equipment_usage(self, case): + """Create equipment usage records.""" + equipment_types = [ + ('Surgical Drape Set', 'DISPOSABLE', 1, 'SET', 150.00), + ('Harmonic Scalpel', 'SURGICAL_INSTRUMENT', 1, 'EACH', 2500.00), + ('Suture Pack', 'DISPOSABLE', 3, 'PACK', 75.00), + ('Surgical Gloves', 'DISPOSABLE', 10, 'PAIR', 5.00) + ] + + for name, eq_type, qty, unit, cost in random.sample(equipment_types, k=random.randint(2, 4)): + EquipmentUsage.objects.create( + surgical_case=case, + equipment_name=name, + equipment_type=eq_type, + manufacturer=random.choice(['Medtronic', 'Johnson & Johnson', 'Stryker']), + quantity_used=qty, + unit_of_measure=unit, + unit_cost=Decimal(str(cost)), + total_cost=Decimal(str(cost * qty)), + lot_number=f"LOT{random.randint(10000, 99999)}", + expiration_date=timezone.now().date() + timedelta(days=random.randint(180, 730)), + sterilization_date=timezone.now().date() - timedelta(days=random.randint(1, 7)), + recorded_by=case.primary_surgeon + ) + + def print_summary(self, tenant): + """Print summary of generated data.""" + self.stdout.write("\n" + "="*60) + self.stdout.write(self.style.SUCCESS("Data Generation Summary")) + self.stdout.write("="*60) + + rooms = OperatingRoom.objects.filter(tenant=tenant) + blocks = ORBlock.objects.filter(operating_room__tenant=tenant) + cases = SurgicalCase.objects.filter(or_block__operating_room__tenant=tenant) + notes = SurgicalNote.objects.filter(surgical_case__or_block__operating_room__tenant=tenant) + equipment = EquipmentUsage.objects.filter(surgical_case__or_block__operating_room__tenant=tenant) + templates = SurgicalNoteTemplate.objects.filter(tenant=tenant) + + self.stdout.write(f"Tenant: {tenant.name}") + self.stdout.write(f"Operating Rooms: {rooms.count()}") + self.stdout.write(f"OR Blocks: {blocks.count()}") + self.stdout.write(f"Surgical Cases: {cases.count()}") + self.stdout.write(f"Surgical Notes: {notes.count()}") + self.stdout.write(f"Equipment Usage Records: {equipment.count()}") + self.stdout.write(f"Surgical Templates: {templates.count()}") + self.stdout.write("="*60) \ No newline at end of file diff --git a/operating_theatre/urls.py b/operating_theatre/urls.py index f55225d6..84195064 100644 --- a/operating_theatre/urls.py +++ b/operating_theatre/urls.py @@ -60,10 +60,10 @@ urlpatterns = [ # ============================================================================ # EQUIPMENT USAGE URLS (LIMITED CRUD - Operational Data) # ============================================================================ - path('equipment/', views.EquipmentUsageListView.as_view(), name='equipment_usage_list'), - path('equipment/create/', views.EquipmentUsageCreateView.as_view(), name='equipment_usage_create'), - path('equipment//', views.EquipmentUsageDetailView.as_view(), name='equipment_usage_detail'), - path('equipment//update/', views.EquipmentUsageUpdateView.as_view(), name='equipment_usage_update'), + path('equipment/', views.EquipmentUsageListView.as_view(), name='equipment_list'), + path('equipment/create/', views.EquipmentUsageCreateView.as_view(), name='equipment_create'), + path('equipment//', views.EquipmentUsageDetailView.as_view(), name='equipment_detail'), + path('equipment//update/', views.EquipmentUsageUpdateView.as_view(), name='equipment_update'), # Note: No delete view for equipment usage - operational tracking data # ============================================================================ diff --git a/operating_theatre/views.py b/operating_theatre/views.py index ee689bef..180617b8 100644 --- a/operating_theatre/views.py +++ b/operating_theatre/views.py @@ -354,7 +354,7 @@ class SurgicalNoteTemplateListView(LoginRequiredMixin, ListView): List all surgical note templates with filtering and search. """ model = SurgicalNoteTemplate - template_name = 'operating_theatre/surgical_note_template_list.html' + template_name = 'operating_theatre/templates/surgical_note_template_list.html' context_object_name = 'surgical_note_templates' paginate_by = 25 @@ -380,7 +380,7 @@ class SurgicalNoteTemplateListView(LoginRequiredMixin, ListView): if active_only: queryset = queryset.filter(is_active=True) - return queryset.order_by('template_name') + return queryset.order_by('name') def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) @@ -396,7 +396,7 @@ class SurgicalNoteTemplateDetailView(LoginRequiredMixin, DetailView): Display detailed information about a surgical note template. """ model = SurgicalNoteTemplate - template_name = 'operating_theatre/surgical_note_template_detail.html' + template_name = 'operating_theatre/templates/surgical_note_template_detail.html' context_object_name = 'surgical_note_template' def get_queryset(self): @@ -421,7 +421,7 @@ class SurgicalNoteTemplateCreateView(LoginRequiredMixin, PermissionRequiredMixin """ model = SurgicalNoteTemplate form_class = SurgicalNoteTemplateForm - template_name = 'operating_theatre/surgical_note_template_form.html' + template_name = 'operating_theatre/templates/surgical_note_template_form.html' permission_required = 'operating_theatre.add_surgicalnotetemplate' success_url = reverse_lazy('operating_theatre:surgical_note_template_list') @@ -452,7 +452,7 @@ class SurgicalNoteTemplateUpdateView(LoginRequiredMixin, PermissionRequiredMixin """ model = SurgicalNoteTemplate form_class = SurgicalNoteTemplateForm - template_name = 'operating_theatre/surgical_note_template_form.html' + template_name = 'operating_theatre/templates/surgical_note_template_form.html' permission_required = 'operating_theatre.change_surgicalnotetemplate' def get_queryset(self): @@ -485,7 +485,7 @@ class SurgicalNoteTemplateDeleteView(LoginRequiredMixin, PermissionRequiredMixin Delete a surgical note template (soft delete by deactivating). """ model = SurgicalNoteTemplate - template_name = 'operating_theatre/surgical_note_template_confirm_delete.html' + template_name = 'operating_theatre/templates/surgical_note_template_confirm_delete.html' permission_required = 'operating_theatre.delete_surgicalnotetemplate' success_url = reverse_lazy('operating_theatre:surgical_note_template_list') @@ -500,7 +500,7 @@ class SurgicalNoteTemplateDeleteView(LoginRequiredMixin, PermissionRequiredMixin self.object.save() # Log the action - AuditLogger.log_action( + AuditLogger.log_event( user=request.user, action='SURGICAL_NOTE_TEMPLATE_DEACTIVATED', model='SurgicalNoteTemplate', @@ -521,12 +521,12 @@ class ORBlockListView(LoginRequiredMixin, ListView): List all OR blocks with filtering and search. """ model = ORBlock - template_name = 'operating_theatre/or_block_list.html' + template_name = 'operating_theatre/blocks/block_list.html' context_object_name = 'or_blocks' paginate_by = 25 def get_queryset(self): - queryset = ORBlock.objects.filter(tenant=self.request.user.tenant) + queryset = ORBlock.objects.filter(operating_room__tenant=self.request.user.tenant) # Filter by date range date_from = self.request.GET.get('date_from') @@ -566,7 +566,7 @@ class ORBlockDetailView(LoginRequiredMixin, DetailView): Display detailed information about an OR block. """ model = ORBlock - template_name = 'operating_theatre/or_block_detail.html' + template_name = 'operating_theatre/blocks/block_detail.html' context_object_name = 'or_block' def get_queryset(self): @@ -609,7 +609,7 @@ class ORBlockCreateView(LoginRequiredMixin, PermissionRequiredMixin, CreateView) """ model = ORBlock form_class = ORBlockForm - template_name = 'operating_theatre/or_block_form.html' + template_name = 'operating_theatre/blocks/block_form.html' permission_required = 'operating_theatre.add_orblock' success_url = reverse_lazy('operating_theatre:or_block_list') @@ -855,12 +855,12 @@ class SurgicalNoteListView(LoginRequiredMixin, ListView): List all surgical notes with filtering and search. """ model = SurgicalNote - template_name = 'operating_theatre/surgical_note_list.html' + template_name = 'operating_theatre/notes/operative_note_list.html' context_object_name = 'surgical_notes' paginate_by = 25 def get_queryset(self): - queryset = SurgicalNote.objects.filter(tenant=self.request.user.tenant) + queryset = SurgicalNote.objects.filter(surgeon__tenant=self.request.user.tenant) # Search functionality search = self.request.GET.get('search') @@ -895,8 +895,8 @@ class SurgicalNoteListView(LoginRequiredMixin, ListView): def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context.update({ - 'note_types': SurgicalNote._meta.get_field('note_type').choices, - 'statuses': SurgicalNote._meta.get_field('status').choices, + # 'note_types': SurgicalNote._meta.get_field('note_type').choices, + 'statuses': SurgicalNote.STATUS_CHOICES, }) return context @@ -906,7 +906,7 @@ class SurgicalNoteDetailView(LoginRequiredMixin, DetailView): Display detailed information about a surgical note. """ model = SurgicalNote - template_name = 'operating_theatre/surgical_note_detail.html' + template_name = 'operating_theatre/notes/operative_note_detail.html' context_object_name = 'surgical_note' def get_queryset(self): @@ -919,7 +919,7 @@ class SurgicalNoteCreateView(LoginRequiredMixin, PermissionRequiredMixin, Create """ model = SurgicalNote form_class = SurgicalNoteForm - template_name = 'operating_theatre/surgical_note_form.html' + template_name = 'operating_theatre/notes/surgical_note_form.html' permission_required = 'operating_theatre.add_surgicalnote' success_url = reverse_lazy('operating_theatre:surgical_note_list') @@ -956,12 +956,12 @@ class EquipmentUsageListView(LoginRequiredMixin, ListView): List all equipment usage records with filtering and search. """ model = EquipmentUsage - template_name = 'operating_theatre/equipment_usage_list.html' + template_name = 'operating_theatre/equipment/equipment_list.html' context_object_name = 'equipment_usage_records' paginate_by = 25 def get_queryset(self): - queryset = EquipmentUsage.objects.filter(tenant=self.request.user.tenant) + queryset = EquipmentUsage.objects.filter(surgical_case__admission__tenant=self.request.user.tenant) # Filter by equipment type equipment_type = self.request.GET.get('equipment_type') @@ -993,8 +993,8 @@ class EquipmentUsageListView(LoginRequiredMixin, ListView): def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context.update({ - 'equipment_types': EquipmentUsage._meta.get_field('equipment_type').choices, - 'statuses': EquipmentUsage._meta.get_field('status').choices, + 'equipment_types': EquipmentUsage.EQUIPMENT_TYPE_CHOICES, + # 'statuses': EquipmentUsage._meta.get_field('status').choices, 'operating_rooms': OperatingRoom.objects.filter( tenant=self.request.user.tenant, is_active=True @@ -1031,7 +1031,7 @@ class EquipmentUsageCreateView(LoginRequiredMixin, PermissionRequiredMixin, Crea """ model = EquipmentUsage form_class = EquipmentUsageForm - template_name = 'operating_theatre/equipment_usage_form.html' + template_name = 'operating_theatre/equipment/equipment_form.html' permission_required = 'operating_theatre.add_equipmentusage' success_url = reverse_lazy('operating_theatre:equipment_usage_list') @@ -1114,18 +1114,18 @@ def operating_theatre_stats(request): status='IN_USE' ).count(), 'cases_in_progress': SurgicalCase.objects.filter( - tenant=tenant, + admission__tenant=tenant, status='IN_PROGRESS' ).count(), 'cases_completed_today': SurgicalCase.objects.filter( - tenant=tenant, - actual_end_time__date=today, + admission__tenant=tenant, + actual_end__date=today, status='COMPLETED' ).count(), 'emergency_cases_today': SurgicalCase.objects.filter( - tenant=tenant, - scheduled_start_time__date=today, - priority='EMERGENCY' + admission__tenant=tenant, + scheduled_start__date=today, + case_type='EMERGENCY' ).count(), } diff --git a/or_data.py b/or_data.py new file mode 100644 index 00000000..7bda8dd9 --- /dev/null +++ b/or_data.py @@ -0,0 +1,866 @@ +""" +Saudi-influenced Operating Theatre Data Generator +Generates realistic test data for hospital operating room management system +with Saudi Arabian cultural context and medical practices. +""" + +import random +import uuid +from datetime import datetime, timedelta, date, time +from decimal import Decimal +from faker import Faker +from typing import List, Dict, Any, Optional + +# Initialize Faker +fake = Faker('en_US') + + +class SaudiOperatingTheatreDataGenerator: + """ + Generates Saudi-influenced data for Operating Theatre models. + """ + + # Saudi hospital names (in English) + SAUDI_HOSPITALS = [ + "King Faisal Specialist Hospital", + "King Fahad Medical City", + "King Abdulaziz University Hospital", + "King Khaled Eye Specialist Hospital", + "Prince Sultan Military Medical City", + "King Abdullah Medical Complex", + "King Saud Medical City", + "National Guard Hospital", + "Prince Mohammed Bin Abdulaziz Hospital", + "King Salman Hospital", + "Security Forces Hospital", + "Aramco Medical Center", + "Dr. Sulaiman Al Habib Medical Group", + "Saudi German Hospital", + "International Medical Center" + ] + + # Saudi cities + SAUDI_CITIES = [ + "Riyadh", "Jeddah", "Mecca", "Medina", "Dammam", + "Khobar", "Dhahran", "Taif", "Tabuk", "Buraidah", + "Khamis Mushait", "Hofuf", "Jubail", "Yanbu", "Abha", + "Najran", "Jizan", "Hail", "Al-Qassim", "Qatif" + ] + + # Saudi regions + SAUDI_REGIONS = [ + "Riyadh Region", "Makkah Region", "Eastern Province", + "Asir Region", "Madinah Region", "Qassim Region", + "Tabuk Region", "Hail Region", "Northern Borders", + "Jazan Region", "Najran Region", "Al-Baha Region" + ] + + # Common Saudi male first names + SAUDI_MALE_FIRST_NAMES = [ + "Mohammed", "Abdullah", "Abdulrahman", "Khalid", "Fahad", + "Sultan", "Salman", "Saud", "Faisal", "Turki", "Ahmed", + "Omar", "Youssef", "Ibrahim", "Hamad", "Nasser", "Bandar", + "Mansour", "Majed", "Waleed", "Talal", "Rakan", "Yazeed", + "Meshal", "Naif", "Abdulaziz", "Saad", "Ali", "Hassan" + ] + + # Common Saudi female first names + SAUDI_FEMALE_FIRST_NAMES = [ + "Nora", "Fatima", "Aisha", "Mariam", "Sarah", "Reem", + "Lama", "Hind", "Mona", "Amal", "Dalal", "Jawaher", + "Latifa", "Hessa", "Nouf", "Asma", "Khadija", "Layla", + "Rana", "Dina", "Hala", "Salma", "Yasmin", "Zainab", + "Lubna", "Hanaa", "Samira", "Najla", "Afaf", "Ghada" + ] + + # Common Saudi family names + SAUDI_FAMILY_NAMES = [ + "Al-Saud", "Al-Rasheed", "Al-Qahtani", "Al-Otaibi", "Al-Dossari", + "Al-Harbi", "Al-Zahrani", "Al-Ghamdi", "Al-Shehri", "Al-Asmari", + "Al-Mutairi", "Al-Enezi", "Al-Shamari", "Al-Maliki", "Al-Johani", + "Al-Subaie", "Al-Hajri", "Al-Khaldi", "Al-Turki", "Al-Obaid", + "Al-Hassan", "Al-Sheikh", "Al-Najjar", "Al-Omari", "Al-Bakri" + ] + + # Medical specialties common in Saudi Arabia + MEDICAL_SPECIALTIES = [ + "General Surgery", "Cardiac Surgery", "Neurosurgery", + "Orthopedic Surgery", "Pediatric Surgery", "Vascular Surgery", + "Thoracic Surgery", "Plastic Surgery", "Bariatric Surgery", + "Transplant Surgery", "Ophthalmology", "ENT Surgery", + "Urology", "Obstetrics", "Maxillofacial Surgery" + ] + + # Common surgical procedures in Saudi context + SURGICAL_PROCEDURES = { + "GENERAL": [ + "Laparoscopic Cholecystectomy", + "Appendectomy", + "Hernia Repair", + "Bowel Resection", + "Gastric Bypass", + "Sleeve Gastrectomy", + "Thyroidectomy", + "Hemorrhoidectomy" + ], + "CARDIAC": [ + "Coronary Artery Bypass Grafting", + "Valve Replacement", + "Atrial Septal Defect Repair", + "Pacemaker Insertion", + "Angioplasty", + "Heart Transplant" + ], + "ORTHOPEDIC": [ + "Total Knee Replacement", + "Total Hip Replacement", + "Spinal Fusion", + "ACL Reconstruction", + "Rotator Cuff Repair", + "Fracture Fixation", + "Arthroscopy" + ], + "NEURO": [ + "Craniotomy", + "Brain Tumor Resection", + "Spinal Decompression", + "VP Shunt Placement", + "Aneurysm Clipping", + "Deep Brain Stimulation" + ], + "OBSTETRIC": [ + "Cesarean Section", + "Hysterectomy", + "Myomectomy", + "Ovarian Cystectomy", + "Tubal Ligation", + "D&C Procedure" + ] + } + + # Equipment commonly used in Saudi hospitals + MEDICAL_EQUIPMENT = [ + "Da Vinci Surgical Robot", + "C-Arm Fluoroscopy", + "Zeiss Surgical Microscope", + "Harmonic Scalpel", + "LigaSure Device", + "Medtronic Neuromonitoring System", + "Stryker Navigation System", + "Karl Storz Laparoscopic Tower", + "GE Ultrasound Machine", + "Phillips CT Scanner" + ] + + def __init__(self, tenant_id: Optional[str] = None): + """Initialize the data generator.""" + self.tenant_id = tenant_id or str(uuid.uuid4()) + self.generated_surgeons = [] + self.generated_patients = [] + self.generated_rooms = [] + + def generate_saudi_name(self, gender: str = 'male') -> Dict[str, str]: + """Generate a Saudi-style name.""" + if gender.lower() == 'male': + first_name = random.choice(self.SAUDI_MALE_FIRST_NAMES) + else: + first_name = random.choice(self.SAUDI_FEMALE_FIRST_NAMES) + + family_name = random.choice(self.SAUDI_FAMILY_NAMES) + + # Sometimes add a middle name (father's name for males) + if gender.lower() == 'male' and random.random() > 0.5: + middle_name = random.choice(self.SAUDI_MALE_FIRST_NAMES) + full_name = f"Dr. {first_name} {middle_name} {family_name}" + else: + full_name = f"Dr. {first_name} {family_name}" + + return { + 'first_name': first_name, + 'last_name': family_name, + 'full_name': full_name + } + + def generate_operating_room(self, room_number: int) -> Dict[str, Any]: + """Generate operating room data with Saudi context.""" + room_types = ['GENERAL', 'CARDIAC', 'NEURO', 'ORTHOPEDIC', 'OBSTETRIC', + 'PEDIATRIC', 'OPHTHALMOLOGY', 'ENT', 'UROLOGY'] + + room_type = random.choice(room_types) + hospital = random.choice(self.SAUDI_HOSPITALS) + + # Advanced equipment more common in Saudi hospitals + has_advanced_equipment = random.random() > 0.3 + + room_data = { + 'tenant': self.tenant_id, + 'room_id': str(uuid.uuid4()), + 'room_number': f"OR-{room_number:03d}", + 'room_name': f"{hospital} - {room_type.title()} OR {room_number}", + 'room_type': room_type, + 'status': random.choice(['AVAILABLE', 'OCCUPIED', 'CLEANING', 'SETUP']), + 'floor_number': random.randint(1, 5), + 'room_size': round(random.uniform(40, 80), 2), + 'ceiling_height': round(random.uniform(3.0, 4.5), 2), + 'temperature_min': 18.0, + 'temperature_max': 24.0, + 'humidity_min': 30.0, + 'humidity_max': 60.0, + 'air_changes_per_hour': random.randint(20, 25), + 'positive_pressure': True, + 'equipment_list': self._generate_equipment_list(room_type, has_advanced_equipment), + 'special_features': self._generate_special_features(room_type), + 'has_c_arm': room_type in ['ORTHOPEDIC', 'NEURO', 'VASCULAR'] or random.random() > 0.5, + 'has_ct': room_type in ['NEURO', 'CARDIAC'] and has_advanced_equipment, + 'has_mri': room_type == 'NEURO' and has_advanced_equipment and random.random() > 0.7, + 'has_ultrasound': True, + 'has_neuromonitoring': room_type in ['NEURO', 'ORTHOPEDIC'], + 'supports_robotic': has_advanced_equipment and room_type in ['GENERAL', 'UROLOGY', 'CARDIAC'], + 'supports_laparoscopic': room_type in ['GENERAL', 'OBSTETRIC', 'UROLOGY'], + 'supports_microscopy': room_type in ['NEURO', 'OPHTHALMOLOGY', 'ENT'], + 'supports_laser': room_type in ['OPHTHALMOLOGY', 'ENT', 'UROLOGY'], + 'max_case_duration': random.randint(240, 720), + 'turnover_time': random.randint(20, 45), + 'cleaning_time': random.randint(30, 60), + 'required_nurses': random.randint(2, 4), + 'required_techs': random.randint(1, 3), + 'is_active': True, + 'accepts_emergency': room_type != 'OPHTHALMOLOGY', + 'building': f"Building {random.choice(['A', 'B', 'C', 'Main', 'East', 'West'])}", + 'wing': random.choice(['North', 'South', 'East', 'West', 'Central']), + 'created_at': fake.date_time_between(start_date='-2y', end_date='now'), + 'updated_at': fake.date_time_between(start_date='-30d', end_date='now') + } + + return room_data + + def _generate_equipment_list(self, room_type: str, has_advanced: bool) -> List[str]: + """Generate equipment list based on room type.""" + basic_equipment = [ + "Anesthesia Machine", + "Patient Monitor", + "Surgical Lights", + "Operating Table", + "Electrocautery Unit", + "Suction System", + "Instrument Tables" + ] + + specialized_equipment = { + 'CARDIAC': ["Heart-Lung Machine", "IABP", "TEE Machine"], + 'NEURO': ["Surgical Microscope", "Neuronavigation", "CUSA"], + 'ORTHOPEDIC': ["C-Arm", "Power Tools", "Traction Table"], + 'OPHTHALMOLOGY': ["Phaco Machine", "OCT", "YAG Laser"], + 'ENT': ["ENT Microscope", "Shaver System", "Navigation"], + 'UROLOGY': ["Cystoscopy Tower", "Laser System", "Lithotripter"] + } + + equipment = basic_equipment.copy() + + if room_type in specialized_equipment: + equipment.extend(specialized_equipment[room_type]) + + if has_advanced: + equipment.extend(random.sample(self.MEDICAL_EQUIPMENT, k=random.randint(2, 4))) + + return equipment + + def _generate_special_features(self, room_type: str) -> List[str]: + """Generate special features for OR.""" + features = ["Laminar Flow", "HEPA Filtration", "Integrated Video System"] + + special_features = { + 'CARDIAC': ["Hybrid OR Capability", "Cardiac Catheterization"], + 'NEURO': ["Intraoperative MRI Compatible", "Neuromonitoring"], + 'ORTHOPEDIC': ["Laminar Flow Class 100", "Biplane Imaging"], + 'OPHTHALMOLOGY': ["Laser Safety", "Microscope Integration"], + 'OBSTETRIC': ["Neonatal Resuscitation Area", "Fetal Monitoring"] + } + + if room_type in special_features: + features.extend(special_features[room_type]) + + return features + + def generate_or_block(self, operating_room_id: str, block_date: date) -> Dict[str, Any]: + """Generate OR block schedule.""" + surgeon = self.generate_saudi_name('male') + services = ['GENERAL', 'CARDIAC', 'NEURO', 'ORTHOPEDIC', 'OBSTETRIC', + 'OPHTHALMOLOGY', 'ENT', 'UROLOGY'] + + # Saudi working hours typically 7 AM to 3 PM or 8 AM to 4 PM + start_hours = [7, 8, 9, 13, 14] + start_hour = random.choice(start_hours) + duration_hours = random.randint(2, 8) + + block_data = { + 'operating_room': operating_room_id, + 'block_id': str(uuid.uuid4()), + 'date': block_date, + 'start_time': time(start_hour, 0), + 'end_time': time((start_hour + duration_hours) % 24, 0), + 'block_type': random.choice(['SCHEDULED', 'EMERGENCY', 'RESERVED']), + 'primary_surgeon': surgeon['full_name'], + 'service': random.choice(services), + 'status': random.choice(['SCHEDULED', 'ACTIVE', 'COMPLETED']), + 'allocated_minutes': duration_hours * 60, + 'used_minutes': random.randint(duration_hours * 45, duration_hours * 60), + 'special_equipment': random.sample(self.MEDICAL_EQUIPMENT, k=random.randint(0, 3)), + 'special_setup': self._generate_special_setup(), + 'notes': self._generate_block_notes(), + 'created_at': fake.date_time_between(start_date='-30d', end_date='now'), + 'updated_at': fake.date_time_between(start_date='-7d', end_date='now') + } + + return block_data + + def _generate_special_setup(self) -> str: + """Generate special setup requirements.""" + setups = [ + "Prone positioning required", + "Lateral positioning with bean bag", + "Beach chair position", + "Microscope setup required", + "Robot docking from patient left", + "Fluoroscopy setup", + "Neuromonitoring setup required", + "Cell saver required", + "Warming blanket needed" + ] + return random.choice(setups) if random.random() > 0.5 else "" + + def _generate_block_notes(self) -> str: + """Generate block notes.""" + notes = [ + "Complex case - allow extra time", + "Teaching case for residents", + "VIP patient - special protocols", + "Latex allergy - latex-free environment", + "Multi-specialty case", + "Consultant from King Faisal Hospital attending", + "Research protocol case", + "International patient - translator needed" + ] + return random.choice(notes) if random.random() > 0.3 else "" + + def generate_surgical_case(self, or_block_id: str, patient_id: str) -> Dict[str, Any]: + """Generate surgical case data.""" + case_type = random.choice(['ELECTIVE', 'URGENT', 'EMERGENCY']) + service_type = random.choice(list(self.SURGICAL_PROCEDURES.keys())) + procedure = random.choice(self.SURGICAL_PROCEDURES[service_type]) + + # Generate Saudi medical team + primary_surgeon = self.generate_saudi_name('male') + anesthesiologist = self.generate_saudi_name(random.choice(['male', 'female'])) + nurse = self.generate_saudi_name('female') # Nursing often female in Saudi + + scheduled_start = fake.date_time_between(start_date='now', end_date='+30d') + duration = random.randint(30, 360) + + case_data = { + 'or_block': or_block_id, + 'case_id': str(uuid.uuid4()), + 'case_number': f"SURG-{datetime.now().strftime('%Y%m%d')}-{random.randint(1, 9999):04d}", + 'patient': patient_id, + 'primary_surgeon': primary_surgeon['full_name'], + 'anesthesiologist': anesthesiologist['full_name'], + 'circulating_nurse': nurse['full_name'], + 'scrub_nurse': self.generate_saudi_name('female')['full_name'], + 'primary_procedure': procedure, + 'secondary_procedures': self._generate_secondary_procedures(service_type), + 'procedure_codes': self._generate_procedure_codes(), + 'case_type': case_type, + 'approach': random.choice(['OPEN', 'LAPAROSCOPIC', 'ROBOTIC', 'ENDOSCOPIC']), + 'anesthesia_type': random.choice(['GENERAL', 'REGIONAL', 'SPINAL', 'LOCAL']), + 'scheduled_start': scheduled_start, + 'estimated_duration': duration, + 'actual_start': scheduled_start + timedelta(minutes=random.randint(-15, 30)) if random.random() > 0.5 else None, + 'actual_end': scheduled_start + timedelta(minutes=duration + random.randint(-30, 60)) if random.random() > 0.5 else None, + 'status': random.choice(['SCHEDULED', 'IN_PROGRESS', 'COMPLETED', 'DELAYED']), + 'diagnosis': self._generate_diagnosis(), + 'diagnosis_codes': self._generate_diagnosis_codes(), + 'clinical_notes': self._generate_clinical_notes(), + 'special_equipment': random.sample(self.MEDICAL_EQUIPMENT, k=random.randint(1, 3)), + 'blood_products': self._generate_blood_products() if random.random() > 0.7 else [], + 'implants': self._generate_implants(service_type) if random.random() > 0.6 else [], + 'patient_position': random.choice(['SUPINE', 'PRONE', 'LATERAL', 'LITHOTOMY']), + 'complications': [] if random.random() > 0.1 else ["Minor bleeding controlled"], + 'estimated_blood_loss': random.randint(10, 500) if random.random() > 0.3 else None, + 'created_at': fake.date_time_between(start_date='-7d', end_date='now'), + 'updated_at': fake.date_time_between(start_date='-1d', end_date='now') + } + + return case_data + + def _generate_secondary_procedures(self, service_type: str) -> List[str]: + """Generate secondary procedures.""" + if random.random() > 0.6: + procedures = self.SURGICAL_PROCEDURES.get(service_type, []) + return random.sample(procedures, k=min(random.randint(1, 2), len(procedures))) + return [] + + def _generate_procedure_codes(self) -> List[str]: + """Generate CPT procedure codes.""" + # Sample CPT codes + codes = [] + for _ in range(random.randint(1, 3)): + codes.append(f"{random.randint(10000, 99999)}") + return codes + + def _generate_diagnosis(self) -> str: + """Generate diagnosis.""" + diagnoses = [ + "Acute Appendicitis", + "Cholelithiasis", + "Inguinal Hernia", + "Coronary Artery Disease", + "Brain Tumor", + "Degenerative Disc Disease", + "Osteoarthritis", + "Breast Cancer", + "Colorectal Cancer", + "Thyroid Nodule", + "Uterine Fibroids", + "Kidney Stones", + "Prostate Hyperplasia" + ] + return random.choice(diagnoses) + + def _generate_diagnosis_codes(self) -> List[str]: + """Generate ICD-10 diagnosis codes.""" + # Sample ICD-10 codes + codes = [] + for _ in range(random.randint(1, 3)): + letter = random.choice(['K', 'I', 'M', 'C', 'N', 'E']) + codes.append(f"{letter}{random.randint(10, 99)}.{random.randint(0, 9)}") + return codes + + def _generate_clinical_notes(self) -> str: + """Generate clinical notes.""" + notes = [ + "Patient with history of diabetes mellitus type 2, controlled on metformin", + "No known drug allergies. Previous surgery without complications", + "Hypertensive patient on ACE inhibitors, blood pressure stable", + "Patient fasting since midnight as per protocol", + "Preoperative antibiotics administered", + "Patient counseled about procedure risks and benefits", + "Informed consent obtained in Arabic and English" + ] + return random.choice(notes) + + def _generate_blood_products(self) -> List[str]: + """Generate blood product requirements.""" + products = [] + if random.random() > 0.5: + products.append(f"PRBC {random.randint(1, 4)} units") + if random.random() > 0.7: + products.append(f"FFP {random.randint(1, 2)} units") + if random.random() > 0.8: + products.append(f"Platelets {random.randint(1, 2)} units") + return products + + def _generate_implants(self, service_type: str) -> List[str]: + """Generate implant requirements based on service type.""" + implants = { + 'ORTHOPEDIC': [ + "Total Knee Prosthesis - Zimmer", + "Total Hip Prosthesis - Stryker", + "Spinal Fusion Cage - Medtronic", + "ACL Graft", + "Fracture Plate and Screws" + ], + 'CARDIAC': [ + "Mechanical Valve - St. Jude", + "Bioprosthetic Valve", + "Pacemaker - Medtronic", + "Coronary Stent", + "Vascular Graft" + ], + 'NEURO': [ + "VP Shunt", + "Deep Brain Stimulator", + "Cranial Plate", + "Aneurysm Clip" + ], + 'GENERAL': [ + "Mesh for Hernia Repair", + "Gastric Band", + "Biliary Stent" + ] + } + + if service_type in implants: + return random.sample(implants[service_type], k=1) + return [] + + def generate_surgical_note(self, surgical_case_id: str, surgeon_id: str) -> Dict[str, Any]: + """Generate surgical note.""" + note_data = { + 'surgical_case': surgical_case_id, + 'note_id': str(uuid.uuid4()), + 'surgeon': surgeon_id, + 'preoperative_diagnosis': self._generate_diagnosis(), + 'planned_procedure': random.choice([proc for procs in self.SURGICAL_PROCEDURES.values() for proc in procs]), + 'indication': self._generate_indication(), + 'procedure_performed': self._generate_procedure_details(), + 'surgical_approach': self._generate_surgical_approach(), + 'findings': self._generate_findings(), + 'technique': self._generate_technique(), + 'postoperative_diagnosis': self._generate_diagnosis(), + 'condition': random.choice(['STABLE', 'GOOD', 'FAIR']), + 'disposition': random.choice(['RECOVERY', 'ICU', 'WARD']), + 'complications': "None" if random.random() > 0.1 else "Minor bleeding, controlled", + 'estimated_blood_loss': random.randint(10, 500), + 'blood_transfusion': "None" if random.random() > 0.8 else "1 unit PRBC", + 'specimens': self._generate_specimens() if random.random() > 0.5 else None, + 'implants': self._generate_implant_details() if random.random() > 0.6 else None, + 'drains': "JP drain placed" if random.random() > 0.5 else None, + 'closure': self._generate_closure_details(), + 'postop_instructions': self._generate_postop_instructions(), + 'follow_up': "Follow up in 2 weeks in surgical clinic", + 'status': random.choice(['DRAFT', 'COMPLETED', 'SIGNED']), + 'signed_datetime': fake.date_time_between(start_date='-7d', end_date='now') if random.random() > 0.3 else None, + 'created_at': fake.date_time_between(start_date='-7d', end_date='now'), + 'updated_at': fake.date_time_between(start_date='-1d', end_date='now') + } + + return note_data + + def _generate_indication(self) -> str: + """Generate surgical indication.""" + indications = [ + "Symptomatic for 6 months, failed conservative management", + "Progressive symptoms despite medical therapy", + "Acute presentation with signs of peritonitis", + "Elective procedure for quality of life improvement", + "Urgent intervention to prevent complications", + "Diagnostic and therapeutic intervention", + "Staged procedure as per treatment protocol" + ] + return random.choice(indications) + + def _generate_procedure_details(self) -> str: + """Generate detailed procedure description.""" + return "Procedure performed as planned using standard technique with no intraoperative complications" + + def _generate_surgical_approach(self) -> str: + """Generate surgical approach description.""" + approaches = [ + "Midline laparotomy incision", + "Laparoscopic approach with 4 ports", + "Lateral thoracotomy through 5th intercostal space", + "Posterior approach to spine", + "Deltopectoral approach", + "Bikini incision for cesarean section" + ] + return random.choice(approaches) + + def _generate_findings(self) -> str: + """Generate intraoperative findings.""" + findings = [ + "Findings consistent with preoperative diagnosis", + "Adhesions from previous surgery noted and lysed", + "No evidence of metastatic disease", + "Inflammation noted in surrounding tissues", + "Anatomy normal, procedure proceeded as planned" + ] + return random.choice(findings) + + def _generate_technique(self) -> str: + """Generate surgical technique description.""" + return "Standard surgical technique employed with meticulous hemostasis throughout the procedure" + + def _generate_specimens(self) -> str: + """Generate specimen details.""" + specimens = [ + "Appendix sent to pathology", + "Gallbladder sent to pathology", + "Lymph nodes sent for frozen section", + "Tissue biopsy sent to pathology", + "Tumor specimen sent with margins marked" + ] + return random.choice(specimens) + + def _generate_implant_details(self) -> str: + """Generate implant details.""" + return "Implant placed per manufacturer protocol, position confirmed with imaging" + + def _generate_closure_details(self) -> str: + """Generate closure details.""" + closures = [ + "Layered closure with absorbable sutures", + "Skin closed with staples", + "Subcuticular closure with absorbable sutures", + "Wound closed in layers, dressing applied", + "Closure with 3-0 Vicryl and skin adhesive" + ] + return random.choice(closures) + + def _generate_postop_instructions(self) -> str: + """Generate postoperative instructions.""" + instructions = [ + "NPO until bowel sounds return, advance diet as tolerated", + "Ambulate within 6 hours, incentive spirometry every hour", + "Pain control with PCA, transition to oral when tolerating diet", + "DVT prophylaxis with heparin, sequential compression devices", + "Monitor vitals every 4 hours, daily labs", + "Antibiotics for 24 hours postoperatively", + "Foley catheter to be removed POD 1" + ] + return "; ".join(random.sample(instructions, k=random.randint(2, 4))) + + def generate_equipment_usage(self, surgical_case_id: str) -> List[Dict[str, Any]]: + """Generate equipment usage records.""" + equipment_records = [] + num_equipment = random.randint(3, 8) + + for _ in range(num_equipment): + equipment_type = random.choice([ + 'SURGICAL_INSTRUMENT', 'MONITORING_DEVICE', 'ELECTROCAUTERY', + 'LASER', 'MICROSCOPE', 'ULTRASOUND', 'DISPOSABLE' + ]) + + equipment_name = self._get_equipment_name(equipment_type) + + usage_data = { + 'surgical_case': surgical_case_id, + 'usage_id': str(uuid.uuid4()), + 'equipment_name': equipment_name, + 'equipment_type': equipment_type, + 'manufacturer': self._get_manufacturer(), + 'model': f"Model-{random.randint(100, 999)}", + 'serial_number': f"SN{random.randint(100000, 999999)}", + 'quantity_used': random.randint(1, 5), + 'unit_of_measure': random.choice(['EACH', 'SET', 'PACK', 'BOX']), + 'start_time': fake.date_time_between(start_date='-1d', end_date='now'), + 'end_time': fake.date_time_between(start_date='now', end_date='+4h'), + 'unit_cost': Decimal(str(round(random.uniform(10, 5000), 2))), + 'lot_number': f"LOT{random.randint(10000, 99999)}", + 'expiration_date': fake.date_between(start_date='+30d', end_date='+2y'), + 'sterilization_date': fake.date_between(start_date='-7d', end_date='today'), + 'notes': self._generate_equipment_notes(), + 'created_at': fake.date_time_between(start_date='-1d', end_date='now'), + 'updated_at': fake.date_time_between(start_date='-1h', end_date='now') + } + + equipment_records.append(usage_data) + + return equipment_records + + def _get_equipment_name(self, equipment_type: str) -> str: + """Get equipment name based on type.""" + equipment_names = { + 'SURGICAL_INSTRUMENT': [ + "Harmonic Scalpel", "LigaSure Device", "Surgical Stapler", + "Laparoscopic Grasper Set", "Retractor Set", "Scalpel Set" + ], + 'MONITORING_DEVICE': [ + "Cardiac Monitor", "Pulse Oximeter", "BIS Monitor", + "Arterial Line Monitor", "Central Line Kit" + ], + 'ELECTROCAUTERY': [ + "Bovie Electrocautery", "Bipolar Forceps", "Monopolar Cautery" + ], + 'LASER': [ + "CO2 Laser", "YAG Laser", "Holmium Laser", "Argon Laser" + ], + 'MICROSCOPE': [ + "Zeiss OPMI", "Leica Surgical Microscope", "Pentero Microscope" + ], + 'ULTRASOUND': [ + "GE Ultrasound", "Phillips EPIQ", "Sonosite Edge" + ], + 'DISPOSABLE': [ + "Surgical Drape Set", "Gown Pack", "Suture Set", + "Surgical Gloves", "Sponge Pack" + ] + } + + return random.choice(equipment_names.get(equipment_type, ["Generic Equipment"])) + + def _get_manufacturer(self) -> str: + """Get equipment manufacturer.""" + manufacturers = [ + "Medtronic", "Johnson & Johnson", "Stryker", "Boston Scientific", + "Abbott", "GE Healthcare", "Siemens", "Phillips", "Karl Storz", + "Olympus", "Zimmer Biomet", "Smith & Nephew", "B. Braun" + ] + return random.choice(manufacturers) + + def _generate_equipment_notes(self) -> str: + """Generate equipment usage notes.""" + notes = [ + "Equipment functioning properly", + "Calibrated before use", + "Backup equipment available", + "Special settings documented", + "Used per protocol", + "" + ] + return random.choice(notes) + + def generate_surgical_note_template(self) -> Dict[str, Any]: + """Generate surgical note template.""" + specialties = ['ALL', 'GENERAL', 'CARDIAC', 'NEURO', 'ORTHOPEDIC', + 'OBSTETRIC', 'OPHTHALMOLOGY', 'ENT', 'UROLOGY'] + + specialty = random.choice(specialties) + + template_data = { + 'tenant': self.tenant_id, + 'template_id': str(uuid.uuid4()), + 'name': f"{specialty} Surgery Template - {random.choice(['Standard', 'Complex', 'Emergency'])}", + 'description': f"Standard template for {specialty.lower()} surgical procedures", + 'procedure_type': random.choice(self.SURGICAL_PROCEDURES.get(specialty, ["General Procedure"])) if specialty != 'ALL' else None, + 'specialty': specialty, + 'preoperative_diagnosis_template': "Preoperative Diagnosis: [Diagnosis]", + 'planned_procedure_template': "Planned Procedure: [Procedure Name]", + 'indication_template': "Indication: Patient presents with [symptoms] requiring surgical intervention", + 'procedure_performed_template': "Procedure Performed: [Actual procedure]", + 'surgical_approach_template': "Approach: [Describe surgical approach]", + 'findings_template': "Findings: [Describe intraoperative findings]", + 'technique_template': "Technique: [Describe surgical technique in detail]", + 'postoperative_diagnosis_template': "Postoperative Diagnosis: [Final diagnosis]", + 'complications_template': "Complications: [None/Describe if any]", + 'specimens_template': "Specimens: [List specimens sent to pathology]", + 'implants_template': "Implants: [List any implants used]", + 'closure_template': "Closure: [Describe closure technique]", + 'postop_instructions_template': "Postoperative Instructions: [List instructions]", + 'is_active': True, + 'is_default': random.random() > 0.7, + 'usage_count': random.randint(0, 100), + 'created_at': fake.date_time_between(start_date='-1y', end_date='now'), + 'updated_at': fake.date_time_between(start_date='-30d', end_date='now') + } + + return template_data + + def generate_complete_dataset(self, + num_rooms: int = 10, + num_blocks_per_room: int = 5, + num_cases_per_block: int = 3) -> Dict[str, List]: + """Generate complete dataset for all models.""" + + dataset = { + 'operating_rooms': [], + 'or_blocks': [], + 'surgical_cases': [], + 'surgical_notes': [], + 'equipment_usage': [], + 'surgical_note_templates': [] + } + + # Generate operating rooms + for i in range(1, num_rooms + 1): + room = self.generate_operating_room(i) + dataset['operating_rooms'].append(room) + self.generated_rooms.append(room) + + # Generate OR blocks for each room + for j in range(num_blocks_per_room): + block_date = fake.date_between(start_date='today', end_date='+30d') + block = self.generate_or_block(room['room_id'], block_date) + dataset['or_blocks'].append(block) + + # Generate surgical cases for each block + for k in range(random.randint(1, num_cases_per_block)): + # Generate a patient ID (placeholder) + patient_id = str(uuid.uuid4()) + + case = self.generate_surgical_case(block['block_id'], patient_id) + dataset['surgical_cases'].append(case) + + # Generate surgical note for completed cases + if case['status'] == 'COMPLETED': + note = self.generate_surgical_note(case['case_id'], block['primary_surgeon']) + dataset['surgical_notes'].append(note) + + # Generate equipment usage + equipment_usage = self.generate_equipment_usage(case['case_id']) + dataset['equipment_usage'].extend(equipment_usage) + + # Generate surgical note templates + for _ in range(15): + template = self.generate_surgical_note_template() + dataset['surgical_note_templates'].append(template) + + return dataset + + def print_statistics(self, dataset: Dict[str, List]) -> None: + """Print statistics about generated data.""" + print("\n" + "="*60) + print("Saudi Operating Theatre Data Generation Complete") + print("="*60) + print(f"Operating Rooms Generated: {len(dataset['operating_rooms'])}") + print(f"OR Blocks Generated: {len(dataset['or_blocks'])}") + print(f"Surgical Cases Generated: {len(dataset['surgical_cases'])}") + print(f"Surgical Notes Generated: {len(dataset['surgical_notes'])}") + print(f"Equipment Usage Records: {len(dataset['equipment_usage'])}") + print(f"Surgical Note Templates: {len(dataset['surgical_note_templates'])}") + print("="*60) + + # Room type distribution + room_types = {} + for room in dataset['operating_rooms']: + room_type = room['room_type'] + room_types[room_type] = room_types.get(room_type, 0) + 1 + + print("\nOperating Room Types:") + for room_type, count in sorted(room_types.items()): + print(f" {room_type}: {count}") + + # Case type distribution + case_types = {} + for case in dataset['surgical_cases']: + case_type = case['case_type'] + case_types[case_type] = case_types.get(case_type, 0) + 1 + + print("\nSurgical Case Types:") + for case_type, count in sorted(case_types.items()): + print(f" {case_type}: {count}") + + # Status distribution + case_statuses = {} + for case in dataset['surgical_cases']: + status = case['status'] + case_statuses[status] = case_statuses.get(status, 0) + 1 + + print("\nCase Status Distribution:") + for status, count in sorted(case_statuses.items()): + print(f" {status}: {count}") + + +# Example usage +if __name__ == "__main__": + # Initialize generator + generator = SaudiOperatingTheatreDataGenerator() + + # Generate complete dataset + dataset = generator.generate_complete_dataset( + num_rooms=8, + num_blocks_per_room=4, + num_cases_per_block=3 + ) + + # Print statistics + generator.print_statistics(dataset) + + # Example: Print first operating room + if dataset['operating_rooms']: + print("\n" + "="*60) + print("Sample Operating Room:") + print("="*60) + room = dataset['operating_rooms'][0] + for key, value in room.items(): + if key not in ['equipment_list', 'special_features']: + print(f"{key}: {value}") + + # Example: Print first surgical case + if dataset['surgical_cases']: + print("\n" + "="*60) + print("Sample Surgical Case:") + print("="*60) + case = dataset['surgical_cases'][0] + for key, value in case.items(): + if key not in ['special_equipment', 'blood_products', 'implants']: + print(f"{key}: {value}") \ No newline at end of file diff --git a/templates/.DS_Store b/templates/.DS_Store index 97c6de1b..2a9416b4 100644 Binary files a/templates/.DS_Store and b/templates/.DS_Store differ diff --git a/templates/inventory/orders/purchase_order_detail.html b/templates/inventory/orders/purchase_order_detail.html new file mode 100644 index 00000000..2fe06dfc --- /dev/null +++ b/templates/inventory/orders/purchase_order_detail.html @@ -0,0 +1,1313 @@ +{% extends 'base.html' %} +{% load static %} + +{% block title %}Purchase Order - {{ order.order_number }}{% endblock %} + +{% block css %} + +{% endblock %} + +{% block content %} +
+ +
+
+ +

+ Purchase Order Details +

+
+
+
+ + + + {% if order.can_edit %} + + Edit + + {% endif %} + {% if order.can_approve %} + + {% endif %} + {% if order.can_cancel %} + + {% endif %} +
+
+
+ + +
+
+
+

{{ order.order_number }}

+

{{ order.title|default:"Purchase Order" }}

+
+ + {{ order.get_status_display }} + + + {{ order.get_priority_display }} Priority + +
+
+
+
Total Amount
+
ê{{ order.total_amount|floatformat:'2g' }}
+
{{ order.total_items }} items
+
+
+
+ + +
+
+
+ +
+
{{ order.created_at|date:"M d, Y" }}
+
Date Created
+
+ +
+
+ +
+
+ {% if order.expected_delivery_date %} + {{ order.expected_delivery_date|date:"M d, Y" }} + {% else %} + Not Set + {% endif %} +
+
Expected Delivery
+
+ +
+
+ +
+
{{ order.created_by.get_full_name }}
+
Created By
+
+ +
+
+ +
+
{{ order.department.name|default:"General" }}
+
Department
+
+ +
+
+ +
+
{{ order.reference_number|default:"N/A" }}
+
Reference Number
+
+
+ +
+
+ +
+
+
+ Supplier Information +
+ + View Supplier + +
+
+
+
+
+
+ {{ order.supplier.name.0|upper }} +
+
+
+
{{ order.supplier.name }}
+

+ {{ order.supplier.contact_person|default:"N/A" }} +

+

+ {{ order.supplier.email|default:"N/A" }} +

+

+ {{ order.supplier.phone|default:"N/A" }} +

+
+
+
Billing Address
+
+ {{ order.supplier.address|default:"Address not available" }}
+ {% if order.supplier.city %}{{ order.supplier.city }}, {% endif %} + {% if order.supplier.state %}{{ order.supplier.state }} {% endif %} + {% if order.supplier.zip_code %}{{ order.supplier.zip_code }}{% endif %} +
+
+
+
+
+
+ + +
+
+
+ Order Items ({{ order.items.count }}) +
+
+ + +
+
+
+
+ + + + + + + + + + + + + {% for item in order.items.all %} + + + + + + + + + {% endfor %} + +
ImageItem DetailsQuantityUnit PriceTotal PriceStatus
+ {% if item.product.image %} + {{ item.product.name }} + {% else %} +
+ +
+ {% endif %} +
+
+
{{ item.product.name }}
+
{{ item.product.description|truncatechars:100 }}
+
+ SKU: {{ item.product.sku|default:"N/A" }} | + Category: {{ item.product.category|default:"N/A" }} +
+
+
+
+
{{ item.quantity }}
+
{{ item.unit|default:"pcs" }}
+
+
+
+
ê{{ item.unit_price|floatformat:'2g' }}
+
+
+
+
ê{{ item.total_price|floatformat:'2g' }}
+
+
+ + {{ item.get_status_display|default:"Pending" }} + +
+
+
+
+ + +
+
+ Order Summary +
+
+
+
+
+
+ Subtotal: + ê{{ order.subtotal|floatformat:'2g' }} +
+ {% if order.discount_amount %} +
+ Discount ({{ order.discount_percentage }}%): + -ê{{ order.discount_amount|floatformat:'2g' }} +
+ {% endif %} + {% if order.tax_amount %} +
+ Tax ({{ order.tax_percentage }}%): + ê{{ order.tax_amount|floatformat:'2g' }} +
+ {% endif %} + {% if order.shipping_cost %} +
+ Shipping: + ê{{ order.shipping_cost|floatformat:'2g' }} +
+ {% endif %} +
+ Total Amount: + ê{{ order.total_amount|floatformat:'2g' }} +
+
+
+
+
Payment Terms
+

{{ order.payment_terms|default:"Net 30 days" }}

+ +
Delivery Terms
+

{{ order.delivery_terms|default:"FOB Destination" }}

+ + {% if order.special_instructions %} +
Special Instructions
+

{{ order.special_instructions }}

+ {% endif %} +
+
+
+
+ + + {% if order.documents.exists %} +
+
+
+ Attachments ({{ order.documents.count }}) +
+ +
+
+
+ {% for document in order.documents.all %} +
+
+ +
+
{{ document.name }}
+
{{ document.file.size|filesizeformat }}
+
+ {% endfor %} +
+
+
+ {% endif %} +
+ +
+ + {% if order.approval_workflow %} +
+
+ Approval Workflow +
+
+
+ {% for step in order.approval_steps %} +
+
+ {% if step.status == 'approved' %} + + {% elif step.status == 'rejected' %} + + {% elif step.status == 'current' %} + + {% else %} + + {% endif %} +
+
+
{{ step.title }}
+
{{ step.approver.get_full_name }}
+ {% if step.approved_at %} +
{{ step.approved_at|date:"M d, Y g:i A" }}
+ {% endif %} +
+
+ {% endfor %} +
+
+
+ {% endif %} + + +
+
+ Order Timeline +
+
+
+ {% for event in order.timeline %} +
+
+
{{ event.title }}
+
{{ event.description }}
+
+ {% if event.user %}{{ event.user.get_full_name }} • {% endif %} + {{ event.created_at|date:"M d, Y g:i A" }} +
+
+
+ {% endfor %} +
+
+
+ + + {% if order.notes.exists %} +
+
+
+ Notes ({{ order.notes.count }}) +
+ +
+
+
+ {% for note in order.notes.all %} +
+
+
{{ note.created_by.get_full_name }}
+
{{ note.created_at|date:"M d, Y g:i A" }}
+
+
{{ note.content }}
+
+ {% endfor %} +
+
+
+ {% endif %} + + +
+
+ Quick Actions +
+
+
+ {% if order.can_send_to_supplier %} + + {% endif %} + + {% if order.can_mark_received %} + + {% endif %} + + + + + + +
+
+
+
+
+
+ + + + + + +{% endblock %} + +{% block js %} + +{% endblock %} + diff --git a/templates/inventory/orders/purchase_order_form.html b/templates/inventory/orders/purchase_order_form.html new file mode 100644 index 00000000..4d2d3da1 --- /dev/null +++ b/templates/inventory/orders/purchase_order_form.html @@ -0,0 +1,1505 @@ +{% extends 'base.html' %} +{% load static %} + +{% block title %}{% if order.pk %}Edit{% else %}Create{% endif %} Purchase Order{% endblock %} + +{% block css %} + + + +{% endblock %} + +{% block content %} +
+ +
+ Auto-saved +
+ + +
+
+ +

+ + {% if order.pk %}Edit Purchase Order{% else %}Create Purchase Order{% endif %} +

+
+
+ + + + Back to List + +
+
+ + +
+
+ Basic Info +
+
+ Supplier +
+
+ Items +
+
+ Review +
+
+ +
+ {% csrf_token %} + + + {% if not order.pk %} +
+
+ Quick Start Templates +
+

Choose a template to pre-populate common order types

+ +
+
+
+ Medical Supplies +
+
+
+ Office Supplies +
+
+
+ Equipment +
+
+
+ Pharmaceuticals +
+
+
+ Maintenance +
+
+
+ Blank Order +
+
+
+ {% endif %} + + +
+
+
+ Basic Information +
+
Step 1 of 4
+
+
+
+
+
+ {{ form.title }} + + {% if form.title.errors %} +
{{ form.title.errors.0 }}
+ {% endif %} +
Enter a descriptive title for this purchase order
+
+
+ +
+
+ + {{ form.priority }} + {% if form.priority.errors %} +
{{ form.priority.errors.0 }}
+ {% endif %} +
Set the urgency level
+
+
+ +
+
+ + {{ form.department }} + {% if form.department.errors %} +
{{ form.department.errors.0 }}
+ {% endif %} +
Requesting department
+
+
+
+ +
+
+
+ + {{ form.expected_delivery_date }} + {% if form.expected_delivery_date.errors %} +
{{ form.expected_delivery_date.errors.0 }}
+ {% endif %} +
When do you need these items delivered?
+
+
+ +
+
+ + {{ form.reference_number }} + {% if form.reference_number.errors %} +
{{ form.reference_number.errors.0 }}
+ {% endif %} +
Internal reference or requisition number
+
+
+
+ +
+ + {{ form.description }} + {% if form.description.errors %} +
{{ form.description.errors.0 }}
+ {% endif %} +
Brief description of the purpose of this order
+
+
+
+ + +
+
+
+ Supplier Information +
+
Step 2 of 4
+
+
+
+
+
+ + {{ form.supplier }} + {% if form.supplier.errors %} +
{{ form.supplier.errors.0 }}
+ {% endif %} +
Select the supplier for this order
+
+
+ +
+
+ +
+ +
+
+
+
+ + +
+
+
S
+
+
Supplier Name
+

Contact Person

+

Email Address

+
+
+
Rating
+
+ + + + + +
+
+
+
+ +
+
+
+ + {{ form.payment_terms }} + {% if form.payment_terms.errors %} +
{{ form.payment_terms.errors.0 }}
+ {% endif %} +
Payment terms for this order
+
+
+ +
+
+ + {{ form.delivery_terms }} + {% if form.delivery_terms.errors %} +
{{ form.delivery_terms.errors.0 }}
+ {% endif %} +
Delivery terms and conditions
+
+
+ +
+
+ + {{ form.shipping_method }} + {% if form.shipping_method.errors %} +
{{ form.shipping_method.errors.0 }}
+ {% endif %} +
Preferred shipping method
+
+
+
+
+
+ + +
+
+
+ Order Items +
+
Step 3 of 4
+
+
+ +
+
+ Quick Add Item +
+ +
+ + +
+ +
+ +
+ +
+ +
+ +
+
+
+ + +
+
+
+ + + + + + + + + + + + + +
ItemQuantityUnit PriceTotalActions
+
+
+ +
+ Add Another Item +
+
+ + +
+
+ Subtotal: +
+ ê0.00 +
+
+ +
+ Discount: +
+ + % + ê0.00 +
+
+ +
+ Tax: +
+ + % + ê0.00 +
+
+ +
+ Shipping: +
+ + ê0.00 +
+
+ +
+ Total Amount: +
+ ê0.00 +
+
+
+
+
+ + +
+
+
+ Additional Information +
+
Step 4 of 4
+
+
+
+ + {{ form.special_instructions }} + {% if form.special_instructions.errors %} +
{{ form.special_instructions.errors.0 }}
+ {% endif %} +
Any special instructions or requirements for this order
+
+ +
+
+
+ {{ form.requires_approval }} + +
Check if this order needs approval before sending to supplier
+
+
+ +
+
+ {{ form.urgent_delivery }} + +
Check if this is an urgent delivery request
+
+
+
+ +
+ + {{ form.internal_notes }} + {% if form.internal_notes.errors %} +
{{ form.internal_notes.errors.0 }}
+ {% endif %} +
Internal notes (not visible to supplier)
+
+
+
+ + +
+
+ + +
+ +
+ + Cancel + + + +
+
+
+
+ + + + + + +{% endblock %} + +{% block js %} + + + + +{% endblock %} + diff --git a/templates/inventory/orders/purchase_order_list.html b/templates/inventory/orders/purchase_order_list.html new file mode 100644 index 00000000..166248fb --- /dev/null +++ b/templates/inventory/orders/purchase_order_list.html @@ -0,0 +1,981 @@ +{% extends 'base.html' %} +{% load static %} + +{% block title %}Purchase Orders{% endblock %} + +{% block css %} + + + + +{% endblock %} + +{% block content %} +
+ +
+
+ +

+ Purchase Orders +

+
+
+ + + + New Purchase Order + +
+
+ + +
+
+
+ +
+
{{ stats.total_orders|default:0 }}
+
Total Orders
+
+ +
+
+ +
+
{{ stats.pending_orders|default:0 }}
+
Pending Orders
+
+ +
+
+ +
+
{{ stats.approved_orders|default:0 }}
+
Approved Orders
+
+ +
+
+ +
+
{{ stats.received_orders|default:0 }}
+
Received Orders
+
+ +
+
+ +
+
ê{{ stats.total_value|default:0|floatformat:0 }}
+
Total Value
+
+
+ + + + + +
+
+ Advanced Filters +
+ +
+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + + Clear + +
+
+
+
+ + +
+
+
+ 0 orders selected +
+
+ + + +
+
+
+ + +
+
+
+ Purchase Orders List +
+
+
+ + +
+ +
+
+ +
+ + + + + + + + + + + + + + + + + + {% for order in orders %} + + + + + + + + + + + + + + {% empty %} + + + + {% endfor %} + +
+
+ +
+
Order NumberSupplierDate CreatedExpected DeliveryItemsTotal AmountPriorityStatusCreated ByActions
+
+ +
+
+
{{ order.order_number }}
+ {% if order.reference_number %} + Ref: {{ order.reference_number }} + {% endif %} +
+
+
+ {{ order.supplier.name.0|upper }} +
+
+
{{ order.supplier.name }}
+ {{ order.supplier.contact_person|default:"" }} +
+
+
+
{{ order.created_at|date:"M d, Y" }}
+ {{ order.created_at|time:"g:i A" }} +
+ {% if order.expected_delivery_date %} +
{{ order.expected_delivery_date|date:"M d, Y" }}
+ + {% if order.is_overdue %} + Overdue + {% else %} + {{ order.days_until_delivery }} days + {% endif %} + + {% else %} + Not set + {% endif %} +
+
+
+
{{ order.total_items }} items
+ {{ order.unique_items }} unique +
+
+
+
ê{{ order.total_amount|floatformat:'2g' }}
+ {% if order.tax_amount %} + +ê{{ order.tax_amount|floatformat:'2g' }} VAT + {% endif %} +
+ + {{ order.get_priority_display }} + + + + {{ order.get_status_display }} + + +
{{ order.created_by.get_full_name }}
+ {{ order.created_by.department|default:"" }} +
+
+ + + + {% if order.can_edit %} + + + + {% endif %} + {% if order.can_approve %} + + {% endif %} + {% if order.can_delete %} + + {% endif %} +
+
+
+ +
No Purchase Orders Found
+

No purchase orders match your current filters.

+ + Create First Order + +
+
+
+ + + +
+ + {% if is_paginated %} + {% include 'partial/pagination.html'%} + {% endif %} +
+
+
+ + + + + + +{% endblock %} + +{% block js %} + + + + + + +{% endblock %} + diff --git a/templates/inventory/stock/stock_form.html b/templates/inventory/stock/stock_form.html index 45ef2049..2ffaee96 100644 --- a/templates/inventory/stock/stock_form.html +++ b/templates/inventory/stock/stock_form.html @@ -24,14 +24,18 @@
-
-
-

- - Stock Information -

-
-
+
+
+

{{ _("Stock Information")}}

+
+{# #} +{# #} +{# #} +{# #} + +
+
+
{% if messages %} {% for message in messages %}