This commit is contained in:
Marwan Alwali 2025-11-02 18:05:50 +03:00
parent dfb918412b
commit a788c086ae
97 changed files with 1095 additions and 702 deletions

View File

@ -260,34 +260,8 @@
<!-- Pagination -->
{% if is_paginated %}
<nav aria-label="Page navigation">
<ul class="pagination justify-content-center">
{% if page_obj.has_previous %}
<li class="page-item">
<a class="page-link" href="?page=1">{% trans "First" %}</a>
</li>
<li class="page-item">
<a class="page-link" href="?page={{ page_obj.previous_page_number }}">{% trans "Previous" %}</a>
</li>
{% endif %}
<li class="page-item active">
<span class="page-link">
{% trans "Page" %} {{ page_obj.number }} {% trans "of" %} {{ page_obj.paginator.num_pages }}
</span>
</li>
{% if page_obj.has_next %}
<li class="page-item">
<a class="page-link" href="?page={{ page_obj.next_page_number }}">{% trans "Next" %}</a>
</li>
<li class="page-item">
<a class="page-link" href="?page={{ page_obj.paginator.num_pages }}">{% trans "Last" %}</a>
</li>
{% endif %}
</ul>
</nav>
{% endif %}
{% include 'includes/pagination_unified.html' %}
{% endif %}
{% else %}
<div class="text-center py-5">
<i class="fas fa-exclamation-triangle fa-3x text-muted mb-3"></i>

View File

@ -65,43 +65,13 @@
{% endfor %}
</tbody>
</table>
</div>
<!-- Pagination -->
{% if is_paginated %}
<nav aria-label="{% trans 'Page navigation' %}">
<ul class="pagination justify-content-center">
{% if page_obj.has_previous %}
<li class="page-item">
<a class="page-link" href="?page={{ page_obj.previous_page_number }}{% for key, value in request.GET.items %}{% if key != 'page' %}&{{ key }}={{ value }}{% endif %}{% endfor %}">
<i class="fas fa-angle-left"></i>
</a>
</li>
{% endif %}
{% for num in page_obj.paginator.page_range %}
{% if page_obj.number == num %}
<li class="page-item active"><span class="page-link">{{ num }}</span></li>
{% elif num > page_obj.number|add:'-3' and num < page_obj.number|add:'3' %}
<li class="page-item">
<a class="page-link" href="?page={{ num }}{% for key, value in request.GET.items %}{% if key != 'page' %}&{{ key }}={{ value }}{% endif %}{% endfor %}">{{ num }}</a>
</li>
{% endif %}
{% endfor %}
{% if page_obj.has_next %}
<li class="page-item">
<a class="page-link" href="?page={{ page_obj.next_page_number }}{% for key, value in request.GET.items %}{% if key != 'page' %}&{{ key }}={{ value }}{% endif %}{% endfor %}">
<i class="fas fa-angle-right"></i>
</a>
</li>
{% endif %}
</ul>
<div class="text-center text-muted">
{% trans "Showing" %} {{ page_obj.start_index }} - {{ page_obj.end_index }} {% trans "of" %} {{ page_obj.paginator.count }}
</div>
</nav>
{% include 'includes/pagination_unified.html' %}
{% endif %}
</div>
{% else %}
<div class="text-center py-5">

View File

@ -56,28 +56,10 @@
{% endfor %}
</tbody>
</table>
<!-- Pagination -->
{% if is_paginated %}
{% include 'includes/pagination_unified.html' %}
{% endif %}
</div>
{% if is_paginated %}
<div class="d-flex justify-content-center mt-3">
<nav>
<ul class="pagination">
{% if page_obj.has_previous %}
<li class="page-item">
<a class="page-link" href="?page={{ page_obj.previous_page_number }}">{% trans "Previous" %}</a>
</li>
{% endif %}
<li class="page-item active">
<span class="page-link">{{ page_obj.number }} / {{ page_obj.paginator.num_pages }}</span>
</li>
{% if page_obj.has_next %}
<li class="page-item">
<a class="page-link" href="?page={{ page_obj.next_page_number }}">{% trans "Next" %}</a>
</li>
{% endif %}
</ul>
</nav>
</div>
{% endif %}

View File

@ -352,41 +352,7 @@
<!-- Pagination -->
{% if is_paginated %}
<nav aria-label="Page navigation" class="mt-4">
<ul class="pagination justify-content-center">
{% if page_obj.has_previous %}
<li class="page-item">
<a class="page-link" href="?page=1{% if request.GET.patient %}&patient={{ request.GET.patient }}{% endif %}{% if request.GET.date_from %}&date_from={{ request.GET.date_from }}{% endif %}{% if request.GET.date_to %}&date_to={{ request.GET.date_to }}{% endif %}">
{% trans "First" %}
</a>
</li>
<li class="page-item">
<a class="page-link" href="?page={{ page_obj.previous_page_number }}{% if request.GET.patient %}&patient={{ request.GET.patient }}{% endif %}{% if request.GET.date_from %}&date_from={{ request.GET.date_from }}{% endif %}{% if request.GET.date_to %}&date_to={{ request.GET.date_to }}{% endif %}">
{% trans "Previous" %}
</a>
</li>
{% endif %}
<li class="page-item active">
<span class="page-link">
{% trans "Page" %} {{ page_obj.number }} {% trans "of" %} {{ page_obj.paginator.num_pages }}
</span>
</li>
{% if page_obj.has_next %}
<li class="page-item">
<a class="page-link" href="?page={{ page_obj.next_page_number }}{% if request.GET.patient %}&patient={{ request.GET.patient }}{% endif %}{% if request.GET.date_from %}&date_from={{ request.GET.date_from }}{% endif %}{% if request.GET.date_to %}&date_to={{ request.GET.date_to }}{% endif %}">
{% trans "Next" %}
</a>
</li>
<li class="page-item">
<a class="page-link" href="?page={{ page_obj.paginator.num_pages }}{% if request.GET.patient %}&patient={{ request.GET.patient }}{% endif %}{% if request.GET.date_from %}&date_from={{ request.GET.date_from }}{% endif %}{% if request.GET.date_to %}&date_to={{ request.GET.date_to }}{% endif %}">
{% trans "Last" %}
</a>
</li>
{% endif %}
</ul>
</nav>
{% include 'includes/pagination_unified.html' %}
{% endif %}
</div>
{% endblock %}

View File

@ -14,7 +14,7 @@
</a>
</div>
{% include "includes/messages.html" %}
<div class="row">
<div class="col-md-8 offset-md-2">

View File

@ -14,7 +14,7 @@
</a>
</div>
{% include "includes/messages.html" %}
<div class="row">
<div class="col-md-8 offset-md-2">

View File

@ -14,7 +14,7 @@
</a>
</div>
{% include "includes/messages.html" %}
<div class="row">
<div class="col-md-8 offset-md-2">

View File

@ -14,7 +14,7 @@
</a>
</div>
{% include "includes/messages.html" %}
<div class="card mb-4">
<div class="card-header">

View File

@ -19,7 +19,7 @@
</div>
</div>
{% include "includes/messages.html" %}
<div class="row">
<div class="col-md-8">

View File

@ -15,7 +15,7 @@
</a>
</div>
{% include "includes/messages.html" %}
<div class="row">
<div class="col-md-10 offset-md-1">

View File

@ -14,7 +14,7 @@
</a>
</div>
{% include "includes/messages.html" %}
<div class="card">
<div class="card-body">

View File

@ -19,7 +19,7 @@
</div>
</div>
{% include "includes/messages.html" %}
<div class="row">
<div class="col-md-8">

View File

@ -15,7 +15,7 @@
</a>
</div>
{% include "includes/messages.html" %}
<div class="row">
<div class="col-md-10 offset-md-1">

View File

@ -14,7 +14,7 @@
</a>
</div>
{% include "includes/messages.html" %}
<div class="card">
<div class="card-body">

View File

@ -34,7 +34,7 @@
</div>
</div>
{% include "includes/messages.html" %}
<!-- Calendar Filters -->
<div class="card mb-4">

View File

@ -128,72 +128,7 @@
<!-- Pagination -->
{% if is_paginated %}
<nav aria-label="{% trans 'Page navigation' %}">
<ul class="pagination justify-content-center">
{% if page_obj.has_previous %}
<li class="page-item">
<a class="page-link"
href="?page=1{% for key, value in request.GET.items %}{% if key != 'page' %}&{{ key }}={{ value }}{% endif %}{% endfor %}"
hx-get="?page=1{% for key, value in request.GET.items %}{% if key != 'page' %}&{{ key }}={{ value }}{% endif %}{% endfor %}"
hx-target="#appointmentListContainer"
hx-swap="innerHTML">
<i class="fas fa-angle-double-left"></i>
</a>
</li>
<li class="page-item">
<a class="page-link"
href="?page={{ page_obj.previous_page_number }}{% for key, value in request.GET.items %}{% if key != 'page' %}&{{ key }}={{ value }}{% endif %}{% endfor %}"
hx-get="?page={{ page_obj.previous_page_number }}{% for key, value in request.GET.items %}{% if key != 'page' %}&{{ key }}={{ value }}{% endif %}{% endfor %}"
hx-target="#appointmentListContainer"
hx-swap="innerHTML">
<i class="fas fa-angle-left"></i>
</a>
</li>
{% endif %}
{% for num in page_obj.paginator.page_range %}
{% if page_obj.number == num %}
<li class="page-item active">
<span class="page-link">{{ num }}</span>
</li>
{% elif num > page_obj.number|add:'-3' and num < page_obj.number|add:'3' %}
<li class="page-item">
<a class="page-link"
href="?page={{ num }}{% for key, value in request.GET.items %}{% if key != 'page' %}&{{ key }}={{ value }}{% endif %}{% endfor %}"
hx-get="?page={{ num }}{% for key, value in request.GET.items %}{% if key != 'page' %}&{{ key }}={{ value }}{% endif %}{% endfor %}"
hx-target="#appointmentListContainer"
hx-swap="innerHTML">
{{ num }}
</a>
</li>
{% endif %}
{% endfor %}
{% if page_obj.has_next %}
<li class="page-item">
<a class="page-link"
href="?page={{ page_obj.next_page_number }}{% for key, value in request.GET.items %}{% if key != 'page' %}&{{ key }}={{ value }}{% endif %}{% endfor %}"
hx-get="?page={{ page_obj.next_page_number }}{% for key, value in request.GET.items %}{% if key != 'page' %}&{{ key }}={{ value }}{% endif %}{% endfor %}"
hx-target="#appointmentListContainer"
hx-swap="innerHTML">
<i class="fas fa-angle-right"></i>
</a>
</li>
<li class="page-item">
<a class="page-link"
href="?page={{ page_obj.paginator.num_pages }}{% for key, value in request.GET.items %}{% if key != 'page' %}&{{ key }}={{ value }}{% endif %}{% endfor %}"
hx-get="?page={{ page_obj.paginator.num_pages }}{% for key, value in request.GET.items %}{% if key != 'page' %}&{{ key }}={{ value }}{% endif %}{% endfor %}"
hx-target="#appointmentListContainer"
hx-swap="innerHTML">
<i class="fas fa-angle-double-right"></i>
</a>
</li>
{% endif %}
</ul>
<div class="text-center text-muted">
{% trans "Showing" %} {{ page_obj.start_index }} - {{ page_obj.end_index }} {% trans "of" %} {{ page_obj.paginator.count }} {% trans "appointments" %}
</div>
</nav>
{% include "includes/pagination_unified.html" %}
{% endif %}
{% else %}

View File

@ -17,7 +17,7 @@
</div>
</div>
{% include "includes/messages.html" %}
<!-- Queue Filter -->
<div class="card mb-4">

View File

@ -19,7 +19,7 @@
</div>
</div>
{% include "includes/messages.html" %}
<div class="row">
<div class="col-md-8">

View File

@ -15,7 +15,7 @@
</a>
</div>
{% include "includes/messages.html" %}
<div class="row">
<div class="col-md-10 offset-md-1">

View File

@ -14,7 +14,7 @@
</a>
</div>
{% include "includes/messages.html" %}
<div class="card">
<div class="card-body">
@ -66,6 +66,9 @@
</div>
</div>
{% include "includes/pagination.html" %}
<!-- Pagination -->
{% if is_paginated %}
{% include 'includes/pagination_unified.html' %}
{% endif %}
</div>
{% endblock %}

View File

@ -105,7 +105,7 @@
</div>
<!-- Messages -->
{% include "includes/messages.html" %}
<div class="row">
<div class="col-12 col-lg-10 offset-lg-1">

View File

@ -60,7 +60,7 @@
</div>
<!-- Messages -->
{% include "includes/messages.html" %}
<!-- Filters -->
{% if search_form %}
@ -181,46 +181,13 @@
{% endfor %}
</tbody>
</table>
{% if is_paginated %}
{% include 'includes/pagination_unified.html' %}
{% endif %}
</div>
<!-- Pagination -->
{% if is_paginated %}
<nav aria-label="{% trans 'Page navigation' %}" class="mt-3">
<ul class="pagination justify-content-center">
{% if page_obj.has_previous %}
<li class="page-item">
<a class="page-link" href="?page=1{% if current_filters.search %}&search={{ current_filters.search }}{% endif %}">
<i class="fa fa-angle-double-left"></i>
</a>
</li>
<li class="page-item">
<a class="page-link" href="?page={{ page_obj.previous_page_number }}{% if current_filters.search %}&search={{ current_filters.search }}{% endif %}">
<i class="fa fa-angle-left"></i>
</a>
</li>
{% endif %}
<li class="page-item active">
<span class="page-link">
{% trans "Page" %} {{ page_obj.number }} {% trans "of" %} {{ page_obj.paginator.num_pages }}
</span>
</li>
{% if page_obj.has_next %}
<li class="page-item">
<a class="page-link" href="?page={{ page_obj.next_page_number }}{% if current_filters.search %}&search={{ current_filters.search }}{% endif %}">
<i class="fa fa-angle-right"></i>
</a>
</li>
<li class="page-item">
<a class="page-link" href="?page={{ page_obj.paginator.num_pages }}{% if current_filters.search %}&search={{ current_filters.search }}{% endif %}">
<i class="fa fa-angle-double-right"></i>
</a>
</li>
{% endif %}
</ul>
</nav>
{% endif %}
{% else %}
<!-- Empty State -->

View File

@ -171,46 +171,11 @@
{% endfor %}
</tbody>
</table>
{% if is_paginated %}
{% include 'includes/pagination_unified.html' %}
{% endif %}
</div>
<!-- Pagination -->
{% if is_paginated %}
<nav aria-label="Page navigation">
<ul class="pagination justify-content-center">
{% if page_obj.has_previous %}
<li class="page-item">
<a class="page-link" href="?page=1{% for key, value in request.GET.items %}{% if key != 'page' %}&{{ key }}={{ value }}{% endif %}{% endfor %}">
{% trans "First" %}
</a>
</li>
<li class="page-item">
<a class="page-link" href="?page={{ page_obj.previous_page_number }}{% for key, value in request.GET.items %}{% if key != 'page' %}&{{ key }}={{ value }}{% endif %}{% endfor %}">
{% trans "Previous" %}
</a>
</li>
{% endif %}
<li class="page-item active">
<span class="page-link">
{% trans "Page" %} {{ page_obj.number }} {% trans "of" %} {{ page_obj.paginator.num_pages }}
</span>
</li>
{% if page_obj.has_next %}
<li class="page-item">
<a class="page-link" href="?page={{ page_obj.next_page_number }}{% for key, value in request.GET.items %}{% if key != 'page' %}&{{ key }}={{ value }}{% endif %}{% endfor %}">
{% trans "Next" %}
</a>
</li>
<li class="page-item">
<a class="page-link" href="?page={{ page_obj.paginator.num_pages }}{% for key, value in request.GET.items %}{% if key != 'page' %}&{{ key }}={{ value }}{% endif %}{% endfor %}">
{% trans "Last" %}
</a>
</li>
{% endif %}
</ul>
</nav>
{% endif %}
{% else %}
<div class="text-center py-5">
<i class="fa fa-file-contract fa-4x text-muted mb-3"></i>

View File

@ -20,7 +20,7 @@
</div>
</div>
{% include "includes/messages.html" %}
<div class="row">
<!-- Main Content -->

View File

@ -15,7 +15,7 @@
</a>
</div>
{% include "includes/messages.html" %}
<div class="row">
<div class="col-md-10 offset-md-1">

View File

@ -15,7 +15,7 @@
</a>
</div>
{% include "includes/messages.html" %}
<!-- Filters -->
<div class="card mb-4">
@ -105,9 +105,12 @@
{% endfor %}
</tbody>
</table>
{% if is_paginated %}
{% include 'includes/pagination_unified.html' %}
{% endif %}
</div>
{% include "includes/pagination.html" %}
{% else %}
<div class="text-center py-5">
<i class="fa fa-stethoscope fa-3x text-muted mb-3"></i>

View File

@ -19,7 +19,7 @@
</div>
</div>
{% include "includes/messages.html" %}
<div class="row">
<div class="col-md-8">

View File

@ -15,7 +15,7 @@
</a>
</div>
{% include "includes/messages.html" %}
<div class="row">
<div class="col-md-10 offset-md-1">

View File

@ -14,7 +14,7 @@
</a>
</div>
{% include "includes/messages.html" %}
<div class="card">
<div class="card-body">
@ -74,6 +74,8 @@
</div>
</div>
{% include "includes/pagination.html" %}
{% if is_paginated %}
{% include 'includes/pagination_unified.html' %}
{% endif %}
</div>
{% endblock %}

View File

@ -19,7 +19,7 @@
</div>
</div>
{% include "includes/messages.html" %}
<div class="row">
<div class="col-md-8">

View File

@ -15,7 +15,7 @@
</a>
</div>
{% include "includes/messages.html" %}
<div class="row">
<div class="col-md-10 offset-md-1">

View File

@ -14,7 +14,7 @@
</a>
</div>
{% include "includes/messages.html" %}
<div class="card">
<div class="card-body">
@ -84,6 +84,8 @@
</div>
</div>
{% include "includes/pagination.html" %}
{% if is_paginated %}
{% include 'includes/pagination_unified.html' %}
{% endif %}
</div>
{% endblock %}

View File

@ -19,7 +19,7 @@
</div>
</div>
{% include "includes/messages.html" %}
<div class="row">
<div class="col-md-8">

View File

@ -15,7 +15,7 @@
</a>
</div>
{% include "includes/messages.html" %}
<div class="row">
<div class="col-md-10 offset-md-1">

View File

@ -14,7 +14,7 @@
</a>
</div>
{% include "includes/messages.html" %}
<div class="card">
<div class="card-body">
@ -67,7 +67,8 @@
{% endif %}
</div>
</div>
{% include "includes/pagination.html" %}
{% if is_paginated %}
{% include 'includes/pagination_unified.html' %}
{% endif %}
</div>
{% endblock %}

View File

@ -15,7 +15,7 @@
</a>
</div>
{% include "includes/messages.html" %}
<div class="row">
<div class="col-md-8 offset-md-2">

View File

@ -14,7 +14,7 @@
</a>
</div>
{% include "includes/messages.html" %}
<!-- Departments List -->
<div class="row">

View File

@ -20,7 +20,7 @@
</div>
</div>
{% include "includes/messages.html" %}
<div class="row">
<!-- Left Column -->

View File

@ -15,7 +15,7 @@
</a>
</div>
{% include "includes/messages.html" %}
<div class="row">
<div class="col-md-8 offset-md-2">

View File

@ -15,7 +15,7 @@
</a>
</div>
{% include "includes/messages.html" %}
<!-- Search and Filter -->
<div class="card mb-4">
@ -145,8 +145,9 @@
</div>
{% endif %}
</div>
{% include "includes/pagination.html" %}
{% if is_paginated %}
{% include "includes/pagination_unified.html" %}
{% endif %}
</div>
{% endblock %}

View File

@ -14,7 +14,7 @@
<p class="lead text-muted">{% trans "Behavioral Clinic Management System" %}</p>
</div>
{% include "includes/messages.html" %}
<!-- Quick Stats -->
<div class="row mb-2">

View File

@ -83,54 +83,10 @@
{% endfor %}
</tbody>
</table>
</div>
<!-- Pagination -->
{% if patients %}
<div class="card-footer bg-white border-top">
<div class="d-flex justify-content-between align-items-center">
<div class="text-muted">
{% trans "Showing" %} {{ patients.start_index }} - {{ patients.end_index }} {% trans "of" %} {{ patients.paginator.count }}
</div>
<nav>
<ul class="pagination pagination-sm mb-0">
{% if patients.has_previous %}
<li class="page-item">
<a class="page-link" href="?page=1{{ request.GET.urlencode }}" hx-get="?page=1{{ request.GET.urlencode }}" hx-target="#patient-list-container">
<i class="fas fa-angle-double-left"></i>
</a>
</li>
<li class="page-item">
<a class="page-link" href="?page={{ patients.previous_page_number }}{{ request.GET.urlencode }}" hx-get="?page={{ patients.previous_page_number }}{{ request.GET.urlencode }}" hx-target="#patient-list-container">
<i class="fas fa-angle-left"></i>
</a>
</li>
{% endif %}
{% for num in patients.paginator.page_range %}
{% if patients.number == num %}
<li class="page-item active"><span class="page-link">{{ num }}</span></li>
{% elif num > patients.number|add:'-3' and num < patients.number|add:'3' %}
<li class="page-item">
<a class="page-link" href="?page={{ num }}{{ request.GET.urlencode }}" hx-get="?page={{ num }}{{ request.GET.urlencode }}" hx-target="#patient-list-container">{{ num }}</a>
</li>
{% endif %}
{% endfor %}
{% if patients.has_next %}
<li class="page-item">
<a class="page-link" href="?page={{ patients.next_page_number }}{{ request.GET.urlencode }}" hx-get="?page={{ patients.next_page_number }}{{ request.GET.urlencode }}" hx-target="#patient-list-container">
<i class="fas fa-angle-right"></i>
</a>
</li>
<li class="page-item">
<a class="page-link" href="?page={{ patients.paginator.num_pages }}{{ request.GET.urlencode }}" hx-get="?page={{ patients.paginator.num_pages }}{{ request.GET.urlencode }}" hx-target="#patient-list-container">
<i class="fas fa-angle-double-right"></i>
</a>
</li>
{% endif %}
</ul>
</nav>
</div>
</div>
{% include "includes/pagination_unified.html" %}
{% endif %}
</div>

View File

@ -95,7 +95,9 @@
</div>
<div class="card-body p-0">
<div id="patient-list-container">
{% if is_paginated %}
{% include 'core/partials/patient_list_partial.html' %}
{% endif %}
</div>
</div>
</div>

View File

@ -19,7 +19,7 @@
</div>
</div>
{% include "includes/messages.html" %}
<div class="row">
<div class="col-md-8">

View File

@ -15,7 +15,7 @@
</a>
</div>
{% include "includes/messages.html" %}
<div class="row">
<div class="col-md-8 offset-md-2">

View File

@ -14,7 +14,7 @@
</a>
</div>
{% include "includes/messages.html" %}
<!-- Filters -->
<div class="card mb-4">
@ -85,7 +85,8 @@
</div>
{% endif %}
</div>
{% include "includes/pagination.html" %}
{% if is_paginated %}
{% include 'includes/pagination_unified.html' %}
{% endif %}
</div>
{% endblock %}

View File

@ -19,7 +19,7 @@
</div>
</div>
{% include "includes/messages.html" %}
<div class="row">
<div class="col-md-8">

View File

@ -15,7 +15,7 @@
</a>
</div>
{% include "includes/messages.html" %}
<div class="row">
<div class="col-md-8 offset-md-2">

View File

@ -14,7 +14,7 @@
</a>
</div>
{% include "includes/messages.html" %}
<!-- Filters -->
<div class="card mb-4">
@ -104,6 +104,8 @@
{% endif %}
</div>
{% include "includes/pagination.html" %}
{% if is_paginated %}
{% include 'includes/pagination_unified.html' %}
{% endif %}
</div>
{% endblock %}

View File

@ -274,48 +274,12 @@
{% endfor %}
</tbody>
</table>
{% if is_paginated %}
{% include 'includes/pagination_unified.html' %}
{% endif %}
</div>
<!-- Pagination -->
{% if is_paginated %}
<div class="card-footer">
<nav aria-label="Page navigation">
<ul class="pagination justify-content-center mb-0">
{% if page_obj.has_previous %}
<li class="page-item">
<a class="page-link" href="?page=1{% if current_filters.search %}&search={{ current_filters.search }}{% endif %}{% if current_filters.role %}&role={{ current_filters.role }}{% endif %}{% if current_filters.status %}&status={{ current_filters.status }}{% endif %}{% if current_filters.sort %}&sort={{ current_filters.sort }}{% endif %}">
{% trans "First" %}
</a>
</li>
<li class="page-item">
<a class="page-link" href="?page={{ page_obj.previous_page_number }}{% if current_filters.search %}&search={{ current_filters.search }}{% endif %}{% if current_filters.role %}&role={{ current_filters.role }}{% endif %}{% if current_filters.status %}&status={{ current_filters.status }}{% endif %}{% if current_filters.sort %}&sort={{ current_filters.sort }}{% endif %}">
{% trans "Previous" %}
</a>
</li>
{% endif %}
<li class="page-item active">
<span class="page-link">
{% trans "Page" %} {{ page_obj.number }} {% trans "of" %} {{ page_obj.paginator.num_pages }}
</span>
</li>
{% if page_obj.has_next %}
<li class="page-item">
<a class="page-link" href="?page={{ page_obj.next_page_number }}{% if current_filters.search %}&search={{ current_filters.search }}{% endif %}{% if current_filters.role %}&role={{ current_filters.role }}{% endif %}{% if current_filters.status %}&status={{ current_filters.status }}{% endif %}{% if current_filters.sort %}&sort={{ current_filters.sort }}{% endif %}">
{% trans "Next" %}
</a>
</li>
<li class="page-item">
<a class="page-link" href="?page={{ page_obj.paginator.num_pages }}{% if current_filters.search %}&search={{ current_filters.search }}{% endif %}{% if current_filters.role %}&role={{ current_filters.role }}{% endif %}{% if current_filters.status %}&status={{ current_filters.status }}{% endif %}{% if current_filters.sort %}&sort={{ current_filters.sort }}{% endif %}">
{% trans "Last" %}
</a>
</li>
{% endif %}
</ul>
</nav>
</div>
{% endif %}
{% else %}
<div class="text-center py-5">
<i class="fas fa-users fa-3x text-muted mb-3"></i>

Binary file not shown.

View File

@ -50,23 +50,7 @@
</div>
{% if is_paginated %}
<nav aria-label="Page navigation">
<ul class="pagination justify-content-center">
{% if page_obj.has_previous %}
<li class="page-item">
<a class="page-link" href="?page={{ page_obj.previous_page_number }}">{% trans "Previous" %}</a>
</li>
{% endif %}
<li class="page-item active">
<span class="page-link">{{ page_obj.number }} / {{ page_obj.paginator.num_pages }}</span>
</li>
{% if page_obj.has_next %}
<li class="page-item">
<a class="page-link" href="?page={{ page_obj.next_page_number }}">{% trans "Next" %}</a>
</li>
{% endif %}
</ul>
</nav>
{% include 'includes/pagination_unified.html' %}
{% endif %}
{% else %}
<div class="text-center py-5">

View File

@ -43,23 +43,7 @@
</div>
{% if is_paginated %}
<nav aria-label="Page navigation">
<ul class="pagination justify-content-center">
{% if page_obj.has_previous %}
<li class="page-item">
<a class="page-link" href="?page={{ page_obj.previous_page_number }}">{% trans "Previous" %}</a>
</li>
{% endif %}
<li class="page-item active">
<span class="page-link">{{ page_obj.number }} / {{ page_obj.paginator.num_pages }}</span>
</li>
{% if page_obj.has_next %}
<li class="page-item">
<a class="page-link" href="?page={{ page_obj.next_page_number }}">{% trans "Next" %}</a>
</li>
{% endif %}
</ul>
</nav>
{% include 'includes/pagination_unified.html'%}
{% endif %}
{% else %}
<div class="text-center py-5">

View File

@ -156,41 +156,7 @@
<!-- Pagination -->
{% if is_paginated %}
<nav aria-label="Page navigation" class="mt-3">
<ul class="pagination justify-content-center">
{% if page_obj.has_previous %}
<li class="page-item">
<a class="page-link" href="?page=1{% if request.GET.search %}&search={{ request.GET.search }}{% endif %}{% if request.GET.payer_type %}&payer_type={{ request.GET.payer_type }}{% endif %}{% if request.GET.is_active %}&is_active={{ request.GET.is_active }}{% endif %}">
<i class="fas fa-angle-double-left"></i>
</a>
</li>
<li class="page-item">
<a class="page-link" href="?page={{ page_obj.previous_page_number }}{% if request.GET.search %}&search={{ request.GET.search }}{% endif %}{% if request.GET.payer_type %}&payer_type={{ request.GET.payer_type }}{% endif %}{% if request.GET.is_active %}&is_active={{ request.GET.is_active }}{% endif %}">
<i class="fas fa-angle-left"></i>
</a>
</li>
{% endif %}
<li class="page-item active">
<span class="page-link">
{% trans "Page" %} {{ page_obj.number }} {% trans "of" %} {{ page_obj.paginator.num_pages }}
</span>
</li>
{% if page_obj.has_next %}
<li class="page-item">
<a class="page-link" href="?page={{ page_obj.next_page_number }}{% if request.GET.search %}&search={{ request.GET.search }}{% endif %}{% if request.GET.payer_type %}&payer_type={{ request.GET.payer_type }}{% endif %}{% if request.GET.is_active %}&is_active={{ request.GET.is_active }}{% endif %}">
<i class="fas fa-angle-right"></i>
</a>
</li>
<li class="page-item">
<a class="page-link" href="?page={{ page_obj.paginator.num_pages }}{% if request.GET.search %}&search={{ request.GET.search }}{% endif %}{% if request.GET.payer_type %}&payer_type={{ request.GET.payer_type }}{% endif %}{% if request.GET.is_active %}&is_active={{ request.GET.is_active }}{% endif %}">
<i class="fas fa-angle-double-right"></i>
</a>
</li>
{% endif %}
</ul>
</nav>
{% include 'includes/pagination_unified.html' %}
{% endif %}
</div>
</div>

View File

@ -19,7 +19,7 @@
</div>
</div>
{% include "includes/messages.html" %}
<div class="row">
<div class="col-md-8">

View File

@ -17,7 +17,7 @@
</a>
</div>
{% include "includes/messages.html" %}
<div class="card">
<div class="card-body">

View File

@ -14,7 +14,7 @@
<p class="lead text-muted">{% trans "Clock in and out for your shift" %}</p>
</div>
{% include "includes/messages.html" %}
<div class="card shadow-lg">
<div class="card-body p-5">

View File

@ -19,7 +19,7 @@
</div>
</div>
{% include "includes/messages.html" %}
<div class="card">
<div class="card-body">
@ -74,6 +74,9 @@
{% endfor %}
</tbody>
</table>
{% if is_paginated %}
{% include "includes/pagination_unified.html" %}
{% endif %}
</div>
{% else %}
<div class="text-center py-5">
@ -87,6 +90,6 @@
</div>
</div>
{% include "includes/pagination.html" %}
</div>
{% endblock %}

View File

@ -19,7 +19,7 @@
</div>
</div>
{% include "includes/messages.html" %}
<div class="row">
<div class="col-md-8">

View File

@ -17,7 +17,7 @@
</a>
</div>
{% include "includes/messages.html" %}
<div class="card">
<div class="card-body">

View File

@ -14,7 +14,7 @@
</a>
</div>
{% include "includes/messages.html" %}
<div class="card">
<div class="card-body">
@ -59,6 +59,9 @@
{% endfor %}
</tbody>
</table>
{% if is_paginated %}
{% include "includes/pagination_unified.html" %}
{% endif %}
</div>
{% else %}
<div class="text-center py-5">
@ -72,6 +75,5 @@
</div>
</div>
{% include "includes/pagination.html" %}
</div>
{% endblock %}

View File

@ -19,7 +19,7 @@
</div>
</div>
{% include "includes/messages.html" %}
<div class="row">
<div class="col-md-8">

View File

@ -17,7 +17,7 @@
</a>
</div>
{% include "includes/messages.html" %}
<div class="card">
<div class="card-body">

View File

@ -19,7 +19,7 @@
</div>
</div>
{% include "includes/messages.html" %}
<div class="card">
<div class="card-body">

View File

@ -19,7 +19,7 @@
</div>
</div>
{% include "includes/messages.html" %}
<div class="card">
<div class="card-body">
@ -68,6 +68,9 @@
{% endfor %}
</tbody>
</table>
{% if is_paginated %}
{% include "includes/pagination_unified.html" %}
{% endif %}
</div>
{% else %}
<div class="text-center py-5">
@ -81,6 +84,6 @@
</div>
</div>
{% include "includes/pagination.html" %}
</div>
{% endblock %}

View File

@ -14,7 +14,7 @@
</a>
</div>
{% include "includes/messages.html" %}
<div class="row">
<div class="col-md-6">

View File

@ -11,7 +11,7 @@
</h1>
</div>
{% include "includes/messages.html" %}
<!-- Filters -->
<div class="card mb-3">
@ -107,6 +107,9 @@
{% endfor %}
</tbody>
</table>
{% if is_paginated %}
{% include "includes/pagination_unified.html" %}
{% endif %}
</div>
{% else %}
<div class="text-center py-5">
@ -117,6 +120,6 @@
</div>
</div>
{% include "includes/pagination.html" %}
</div>
{% endblock %}

View File

@ -19,7 +19,7 @@
</div>
</div>
{% include "includes/messages.html" %}
<div class="row">
<div class="col-md-8">

View File

@ -17,7 +17,7 @@
</a>
</div>
{% include "includes/messages.html" %}
<div class="card">
<div class="card-body">

View File

@ -14,7 +14,7 @@
</a>
</div>
{% include "includes/messages.html" %}
<!-- Filters -->
<div class="card mb-3">
@ -105,6 +105,9 @@
{% endfor %}
</tbody>
</table>
{% if is_paginated %}
{% include "includes/pagination_unified.html" %}
{% endif %}
</div>
{% else %}
<div class="text-center py-5">
@ -118,6 +121,6 @@
</div>
</div>
{% include "includes/pagination.html" %}
</div>
{% endblock %}

View File

@ -11,7 +11,7 @@
</h1>
</div>
{% include "includes/messages.html" %}
<!-- Quick Stats -->
<div class="row mb-4">

View File

@ -14,7 +14,7 @@
</a>
</div>
{% include "includes/messages.html" %}
<div class="row">
<div class="col-md-6">

View File

@ -11,7 +11,7 @@
</h1>
</div>
{% include "includes/messages.html" %}
<!-- Filters -->
<div class="card mb-3">
@ -112,6 +112,9 @@
{% endfor %}
</tbody>
</table>
{% if is_paginated %}
{% include "includes/pagination_unified.html" %}
{% endif %}
</div>
{% else %}
<div class="text-center py-5">
@ -122,6 +125,6 @@
</div>
</div>
{% include "includes/pagination.html" %}
</div>
{% endblock %}

View File

@ -25,7 +25,7 @@
</a>
</div>
{% include "includes/messages.html" %}
<div class="card">
<div class="card-body">

View File

@ -14,7 +14,7 @@
</a>
</div>
{% include "includes/messages.html" %}
<!-- Filters -->
<div class="card mb-3">
@ -98,6 +98,9 @@
{% endfor %}
</tbody>
</table>
{% if is_paginated %}
{% include "includes/pagination_unified.html" %}
{% endif %}
</div>
{% else %}
<div class="text-center py-5">
@ -111,6 +114,6 @@
</div>
</div>
{% include "includes/pagination.html" %}
</div>
{% endblock %}

View File

@ -14,7 +14,7 @@
</a>
</div>
{% include "includes/messages.html" %}
<div class="card">
<div class="card-body">

View File

@ -14,7 +14,7 @@
</a>
</div>
{% include "includes/messages.html" %}
<!-- Filters -->
<div class="card mb-3">
@ -110,6 +110,9 @@
{% endfor %}
</tbody>
</table>
{% if is_paginated %}
{% include "includes/pagination_unified.html" %}
{% endif %}
</div>
{% else %}
<div class="text-center py-5">
@ -122,7 +125,5 @@
{% endif %}
</div>
</div>
{% include "includes/pagination.html" %}
</div>
{% endblock %}

View File

@ -73357,3 +73357,744 @@ INFO 2025-11-02 16:53:51,434 basehttp 15978 6163853312 "GET /ar/notifications/ap
INFO 2025-11-02 16:53:51,660 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=9acae530f8214e4e90e307ebc9932e48 HTTP/1.1" 200 10064
INFO 2025-11-02 16:54:21,445 basehttp 15978 6163853312 "GET /ar/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 16:54:21,663 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=27287a4a83554e6284b00d3d5074ea4a HTTP/1.1" 200 10066
INFO 2025-11-02 16:54:51,421 basehttp 15978 6163853312 "GET /ar/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 16:54:51,647 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=1ef8fde699c74e18b828ef139184508c HTTP/1.1" 200 10064
ERROR 2025-11-02 16:54:51,680 tasks 16180 8648941888 Appointment 57b3dd51-9baa-433e-b2be-9640c444df0d not found
INFO 2025-11-02 16:54:55,220 basehttp 15978 6163853312 "GET /ar/notifications/inbox/ HTTP/1.1" 200 37712
INFO 2025-11-02 16:54:55,320 basehttp 15978 6163853312 "GET /ar/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 16:54:59,958 basehttp 15978 6163853312 "GET /ar/notifications/api/dropdown/ HTTP/1.1" 200 773
INFO 2025-11-02 16:55:00,187 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=d4dfff6058034df39437032d496cc85e HTTP/1.1" 200 10057
INFO 2025-11-02 16:55:07,673 basehttp 15978 6163853312 "GET /ar/notifications/inbox/ HTTP/1.1" 200 37712
INFO 2025-11-02 16:55:07,768 basehttp 15978 6163853312 "GET /ar/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 16:55:17,218 basehttp 15978 6163853312 "GET /ar/notifications/inbox/?filter=unread HTTP/1.1" 200 33318
INFO 2025-11-02 16:55:17,318 basehttp 15978 6163853312 "GET /ar/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 16:55:19,422 basehttp 15978 6163853312 "GET /ar/notifications/inbox/?filter=read HTTP/1.1" 200 37724
INFO 2025-11-02 16:55:19,523 basehttp 15978 6163853312 "GET /ar/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 16:55:20,877 basehttp 15978 6163853312 "GET /ar/notifications/inbox/?filter=all HTTP/1.1" 200 37723
INFO 2025-11-02 16:55:20,979 basehttp 15978 6163853312 "GET /ar/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 16:55:51,351 basehttp 15978 6163853312 "GET /ar/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 16:55:52,256 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=993e325e88834fbe8a4a84ff1c0fae52 HTTP/1.1" 200 10066
INFO 2025-11-02 16:56:21,366 basehttp 15978 6163853312 "GET /ar/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 16:56:22,283 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=ec75d5e2a599414694672e931b7e1c81 HTTP/1.1" 200 10066
INFO 2025-11-02 16:56:51,354 basehttp 15978 6163853312 "GET /ar/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 16:56:52,278 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=d043288df2154517a4edcf27a52287ff HTTP/1.1" 200 10064
ERROR 2025-11-02 16:56:54,249 tasks 16180 8648941888 Appointment 642dc474-cd97-4dc0-8924-b2b832eeaea1 not found
ERROR 2025-11-02 16:56:54,249 tasks 16172 8648941888 Appointment 0ff795b3-68a3-44e3-ad35-9b50b6e098a8 not found
ERROR 2025-11-02 16:56:54,249 tasks 16181 8648941888 Appointment 251d4c8d-ad19-44b7-a10b-3b3ff3951257 not found
INFO 2025-11-02 16:57:21,376 basehttp 15978 6163853312 "GET /ar/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 16:57:22,289 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=627bf5fe696f4b439c2ad06ef18e17c1 HTTP/1.1" 200 10066
INFO 2025-11-02 16:57:51,352 basehttp 15978 6163853312 "GET /ar/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 16:57:52,288 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=778009abaa3a4c7b9f5cfd953e3c5b78 HTTP/1.1" 200 10064
INFO 2025-11-02 16:58:04,987 basehttp 15978 6163853312 "GET /ar/switch_language/?language=en HTTP/1.1" 302 0
INFO 2025-11-02 16:58:05,047 basehttp 15978 6163853312 "GET /notifications/inbox/?filter=all HTTP/1.1" 302 0
INFO 2025-11-02 16:58:05,110 basehttp 15978 13170143232 "GET /en/notifications/inbox/?filter=all HTTP/1.1" 200 37257
INFO 2025-11-02 16:58:05,203 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 16:58:13,061 basehttp 15978 13170143232 "GET / HTTP/1.1" 302 0
INFO 2025-11-02 16:58:13,139 basehttp 15978 6163853312 "GET /en/ HTTP/1.1" 200 56119
INFO 2025-11-02 16:58:13,239 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 16:58:28,735 basehttp 15978 6163853312 "GET /en/finance/payers/ HTTP/1.1" 200 75699
INFO 2025-11-02 16:58:28,850 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 16:58:35,920 basehttp 15978 6163853312 "GET /en/patients/3ed8901f-686b-468a-b7a1-acc1e64a23ec/ HTTP/1.1" 200 61456
INFO 2025-11-02 16:58:36,024 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
ERROR 2025-11-02 16:58:53,882 tasks 16180 8648941888 Appointment 84999784-a5ac-4385-82c0-6beee6a870fe not found
ERROR 2025-11-02 16:58:53,882 tasks 16172 8648941888 Appointment 1ba52899-1a8e-4bce-93bd-d1d643bb7b69 not found
INFO 2025-11-02 16:59:08,978 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 16:59:09,200 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=a52c835703894ce3b3011d490eab1c89 HTTP/1.1" 200 9547
INFO 2025-11-02 16:59:39,000 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 16:59:39,214 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=b547095a1cd74f3689546190a7ce4c87 HTTP/1.1" 200 9547
INFO 2025-11-02 17:00:00,006 tasks 16180 8648941888 Radiology results sync started
INFO 2025-11-02 17:00:00,006 tasks 16180 8648941888 Radiology results sync completed: {'status': 'success', 'new_studies': 0, 'new_reports': 0, 'errors': 0, 'timestamp': '2025-11-02 14:00:00.006650+00:00'}
INFO 2025-11-02 17:00:00,012 tasks 16180 8648941888 Lab results sync started
INFO 2025-11-02 17:00:00,013 tasks 16180 8648941888 Lab results sync completed: {'status': 'success', 'new_results': 0, 'updated_results': 0, 'errors': 0, 'timestamp': '2025-11-02 14:00:00.013142+00:00'}
INFO 2025-11-02 17:00:08,999 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:00:09,221 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=113eec794251431eadad301c67b880e9 HTTP/1.1" 200 9547
INFO 2025-11-02 17:00:39,007 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:00:39,225 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=c2061dc8801345939cd58564483beb6d HTTP/1.1" 200 9547
ERROR 2025-11-02 17:01:02,936 tasks 16180 8648941888 Appointment 7d8e8281-f28e-47b2-bae6-04647dd5204d not found
INFO 2025-11-02 17:01:08,980 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:01:09,196 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=62493adc9d6541b39b66b4d876f91836 HTTP/1.1" 200 9547
INFO 2025-11-02 17:01:39,010 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:01:39,220 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=a94c2da3cd3a4f08ad7fce8cc7760521 HTTP/1.1" 200 9547
INFO 2025-11-02 17:02:08,977 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:02:09,195 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=28bcb54e8a834f48880d584d5bd41fdd HTTP/1.1" 200 9547
INFO 2025-11-02 17:02:38,972 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:02:39,187 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=1eadc4608d014b8a8431a632d47b1aea HTTP/1.1" 200 9547
INFO 2025-11-02 17:03:08,973 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:03:09,192 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=9955146d718a4b05b72ff44d00fe4a70 HTTP/1.1" 200 9547
ERROR 2025-11-02 17:03:23,984 log 15978 6163853312 Internal Server Error: /en/finance/payers/
Traceback (most recent call last):
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/template/base.py", line 510, in parse
compile_func = self.tags[command]
~~~~~~~~~^^^^^^^^^
KeyError: 'endif'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
response = get_response(request)
^^^^^^^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 220, in _get_response
response = response.render()
^^^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/template/response.py", line 114, in render
self.content = self.rendered_content
^^^^^^^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/template/response.py", line 90, in rendered_content
template = self.resolve_template(self.template_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/template/response.py", line 72, in resolve_template
return select_template(template, using=self.using)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/template/loader.py", line 42, in select_template
return engine.get_template(template_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.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/AgdarCentre/.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/AgdarCentre/.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/AgdarCentre/.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/AgdarCentre/.venv/lib/python3.12/site-packages/django/template/loaders/base.py", line 28, in get_template
return Template(
^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/template/base.py", line 154, in __init__
self.nodelist = self.compile_nodelist()
^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/template/base.py", line 196, in compile_nodelist
nodelist = parser.parse()
^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/template/base.py", line 518, in parse
raise self.error(token, e)
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/template/base.py", line 516, in parse
compiled_result = compile_func(self, token)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/template/loader_tags.py", line 299, in do_extends
nodelist = parser.parse()
^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/template/base.py", line 518, in parse
raise self.error(token, e)
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/template/base.py", line 516, in parse
compiled_result = compile_func(self, token)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/template/loader_tags.py", line 234, in do_block
nodelist = parser.parse(("endblock",))
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/template/base.py", line 512, in parse
self.invalid_block_tag(token, command, parse_until)
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/template/base.py", line 567, in invalid_block_tag
raise self.error(
django.template.exceptions.TemplateSyntaxError: Invalid block tag on line 14: 'endif', expected 'endblock'. Did you forget to register or load this tag?
ERROR 2025-11-02 17:03:24,055 basehttp 15978 6163853312 "GET /en/finance/payers/ HTTP/1.1" 500 191777
ERROR 2025-11-02 17:03:34,826 tasks 16172 8648941888 Appointment 01e64bc4-bb55-4589-ade8-2d684af8679f not found
ERROR 2025-11-02 17:03:34,826 tasks 16180 8648941888 Appointment 7046f839-aede-4d5e-86f6-716893505439 not found
INFO 2025-11-02 17:04:27,550 basehttp 15978 6163853312 "GET /media/profile_pictures/Father_-d_HcbHEbL.png HTTP/1.1" 200 1997779
INFO 2025-11-02 17:04:28,273 basehttp 15978 6163853312 "GET /en/ HTTP/1.1" 200 56119
INFO 2025-11-02 17:04:28,362 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:04:31,261 basehttp 15978 6163853312 "GET /en/notifications/api/dropdown/ HTTP/1.1" 200 773
INFO 2025-11-02 17:04:31,474 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=acb36dbb563843eea9f7c254cb553e27 HTTP/1.1" 200 9540
INFO 2025-11-02 17:04:32,174 basehttp 15978 6163853312 "GET /en/notifications/inbox/ HTTP/1.1" 200 37248
INFO 2025-11-02 17:04:32,263 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:04:38,078 basehttp 15978 6163853312 "GET /ar/notifications/inbox/?filter=all HTTP/1.1" 200 37725
INFO 2025-11-02 17:04:38,177 basehttp 15978 6163853312 "GET /ar/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:04:38,943 basehttp 15978 6163853312 "GET /ar/notifications/inbox/?filter=read HTTP/1.1" 200 37726
INFO 2025-11-02 17:04:39,605 basehttp 15978 6163853312 "GET /ar/notifications/inbox/?filter=unread HTTP/1.1" 200 33318
INFO 2025-11-02 17:04:40,231 basehttp 15978 6163853312 "GET /ar/notifications/inbox/ HTTP/1.1" 200 37714
INFO 2025-11-02 17:04:41,384 basehttp 15978 6163853312 "GET /ar/notifications/inbox/ HTTP/1.1" 200 37714
INFO 2025-11-02 17:04:41,487 basehttp 15978 6163853312 "GET /ar/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:04:45,545 basehttp 15978 6163853312 "GET / HTTP/1.1" 302 0
INFO 2025-11-02 17:04:45,623 basehttp 15978 13170143232 "GET /en/ HTTP/1.1" 200 56119
INFO 2025-11-02 17:04:45,721 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
ERROR 2025-11-02 17:04:49,425 log 15978 13170143232 Internal Server Error: /en/finance/payers/
Traceback (most recent call last):
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/template/base.py", line 510, in parse
compile_func = self.tags[command]
~~~~~~~~~^^^^^^^^^
KeyError: 'endif'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
response = get_response(request)
^^^^^^^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 220, in _get_response
response = response.render()
^^^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/template/response.py", line 114, in render
self.content = self.rendered_content
^^^^^^^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/template/response.py", line 90, in rendered_content
template = self.resolve_template(self.template_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/template/response.py", line 72, in resolve_template
return select_template(template, using=self.using)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/template/loader.py", line 42, in select_template
return engine.get_template(template_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.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/AgdarCentre/.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/AgdarCentre/.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/AgdarCentre/.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/AgdarCentre/.venv/lib/python3.12/site-packages/django/template/loaders/base.py", line 28, in get_template
return Template(
^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/template/base.py", line 154, in __init__
self.nodelist = self.compile_nodelist()
^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/template/base.py", line 196, in compile_nodelist
nodelist = parser.parse()
^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/template/base.py", line 518, in parse
raise self.error(token, e)
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/template/base.py", line 516, in parse
compiled_result = compile_func(self, token)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/template/loader_tags.py", line 299, in do_extends
nodelist = parser.parse()
^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/template/base.py", line 518, in parse
raise self.error(token, e)
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/template/base.py", line 516, in parse
compiled_result = compile_func(self, token)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/template/loader_tags.py", line 234, in do_block
nodelist = parser.parse(("endblock",))
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/template/base.py", line 512, in parse
self.invalid_block_tag(token, command, parse_until)
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/template/base.py", line 567, in invalid_block_tag
raise self.error(
django.template.exceptions.TemplateSyntaxError: Invalid block tag on line 14: 'endif', expected 'endblock'. Did you forget to register or load this tag?
ERROR 2025-11-02 17:04:49,503 basehttp 15978 13170143232 "GET /en/finance/payers/ HTTP/1.1" 500 191642
ERROR 2025-11-02 17:04:51,886 tasks 16180 8648941888 Appointment 7d8e8281-f28e-47b2-bae6-04647dd5204d not found
INFO 2025-11-02 17:05:25,010 basehttp 15978 13170143232 "GET /en/finance/payers/ HTTP/1.1" 200 34354
INFO 2025-11-02 17:05:25,099 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:05:55,115 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:05:55,329 basehttp 15978 13170143232 "GET /__debug__/history_sidebar/?request_id=7868b8c75315455ab6c89f433c9161db HTTP/1.1" 200 9547
ERROR 2025-11-02 17:06:13,632 tasks 16180 8648941888 Appointment a0aed854-c98c-4d7a-b0d3-981bd7efb97f not found
ERROR 2025-11-02 17:06:13,632 tasks 16181 8648941888 Appointment 7221c9b8-2318-4410-8548-141cae6b9132 not found
ERROR 2025-11-02 17:06:13,632 tasks 16172 8648941888 Appointment b00eedde-1f8d-4556-bef4-07369f144d4e not found
ERROR 2025-11-02 17:06:13,633 tasks 16182 8648941888 Appointment d51ff4c0-8550-419f-bc72-c743e6c7098d not found
ERROR 2025-11-02 17:06:13,635 tasks 16173 8648941888 Appointment d1318b1d-29af-448b-a49d-4747e962b336 not found
ERROR 2025-11-02 17:06:13,636 tasks 16183 8648941888 Appointment d51ff4c0-8550-419f-bc72-c743e6c7098d not found
ERROR 2025-11-02 17:06:13,637 tasks 16175 8648941888 Appointment 7221c9b8-2318-4410-8548-141cae6b9132 not found
ERROR 2025-11-02 17:06:13,637 tasks 16174 8648941888 Appointment b00eedde-1f8d-4556-bef4-07369f144d4e not found
ERROR 2025-11-02 17:06:13,643 tasks 16180 8648941888 Appointment a0aed854-c98c-4d7a-b0d3-981bd7efb97f not found
ERROR 2025-11-02 17:06:13,643 tasks 16177 8648941888 Appointment d1318b1d-29af-448b-a49d-4747e962b336 not found
ERROR 2025-11-02 17:06:13,644 tasks 16185 8648941888 Appointment a0aed854-c98c-4d7a-b0d3-981bd7efb97f not found
ERROR 2025-11-02 17:06:13,644 tasks 16178 8648941888 Appointment b00eedde-1f8d-4556-bef4-07369f144d4e not found
ERROR 2025-11-02 17:06:13,644 tasks 16192 8648941888 Appointment d1318b1d-29af-448b-a49d-4747e962b336 not found
ERROR 2025-11-02 17:06:13,645 tasks 16187 8648941888 Appointment 7221c9b8-2318-4410-8548-141cae6b9132 not found
ERROR 2025-11-02 17:06:13,645 tasks 16179 8648941888 Appointment d51ff4c0-8550-419f-bc72-c743e6c7098d not found
ERROR 2025-11-02 17:06:13,747 tasks 16172 8648941888 Appointment a0aed854-c98c-4d7a-b0d3-981bd7efb97f not found
ERROR 2025-11-02 17:06:13,747 tasks 16181 8648941888 Appointment b00eedde-1f8d-4556-bef4-07369f144d4e not found
ERROR 2025-11-02 17:06:13,747 tasks 16180 8648941888 Appointment d51ff4c0-8550-419f-bc72-c743e6c7098d not found
ERROR 2025-11-02 17:06:13,747 tasks 16182 8648941888 Appointment 7221c9b8-2318-4410-8548-141cae6b9132 not found
ERROR 2025-11-02 17:06:13,747 tasks 16173 8648941888 Appointment d1318b1d-29af-448b-a49d-4747e962b336 not found
ERROR 2025-11-02 17:06:13,755 tasks 16174 8648941888 Appointment b00eedde-1f8d-4556-bef4-07369f144d4e not found
ERROR 2025-11-02 17:06:13,755 tasks 16177 8648941888 Appointment d51ff4c0-8550-419f-bc72-c743e6c7098d not found
ERROR 2025-11-02 17:06:13,755 tasks 16175 8648941888 Appointment 7221c9b8-2318-4410-8548-141cae6b9132 not found
ERROR 2025-11-02 17:06:13,755 tasks 16185 8648941888 Appointment d1318b1d-29af-448b-a49d-4747e962b336 not found
ERROR 2025-11-02 17:06:13,755 tasks 16183 8648941888 Appointment a0aed854-c98c-4d7a-b0d3-981bd7efb97f not found
INFO 2025-11-02 17:06:25,118 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:06:25,341 basehttp 15978 13170143232 "GET /__debug__/history_sidebar/?request_id=f02d6dd7dbb040c7b3303ec9ec1b56d6 HTTP/1.1" 200 9547
INFO 2025-11-02 17:06:55,135 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:06:55,352 basehttp 15978 13170143232 "GET /__debug__/history_sidebar/?request_id=5254a7cb54a24e7597cb4d06e8e9cf79 HTTP/1.1" 200 9547
ERROR 2025-11-02 17:07:00,495 tasks 16172 8648941888 Appointment b00eedde-1f8d-4556-bef4-07369f144d4e not found
ERROR 2025-11-02 17:07:00,495 tasks 16180 8648941888 Appointment 7221c9b8-2318-4410-8548-141cae6b9132 not found
ERROR 2025-11-02 17:07:00,495 tasks 16181 8648941888 Appointment d51ff4c0-8550-419f-bc72-c743e6c7098d not found
ERROR 2025-11-02 17:07:00,495 tasks 16182 8648941888 Appointment a0aed854-c98c-4d7a-b0d3-981bd7efb97f not found
ERROR 2025-11-02 17:07:00,495 tasks 16173 8648941888 Appointment d1318b1d-29af-448b-a49d-4747e962b336 not found
INFO 2025-11-02 17:07:25,110 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:07:25,323 basehttp 15978 13170143232 "GET /__debug__/history_sidebar/?request_id=542d6cc9d56c4898a331ca95968b8c22 HTTP/1.1" 200 9547
INFO 2025-11-02 17:07:27,788 basehttp 15978 13170143232 "GET /en/finance/payers/ HTTP/1.1" 200 77277
INFO 2025-11-02 17:07:27,875 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:07:57,899 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:07:58,113 basehttp 15978 13170143232 "GET /__debug__/history_sidebar/?request_id=11839c83b7534176a68e482127fe6fea HTTP/1.1" 200 9547
ERROR 2025-11-02 17:08:01,152 tasks 16173 8648941888 Appointment d51ff4c0-8550-419f-bc72-c743e6c7098d not found
ERROR 2025-11-02 17:08:01,152 tasks 16182 8648941888 Appointment 7221c9b8-2318-4410-8548-141cae6b9132 not found
ERROR 2025-11-02 17:08:01,152 tasks 16180 8648941888 Appointment a0aed854-c98c-4d7a-b0d3-981bd7efb97f not found
ERROR 2025-11-02 17:08:01,152 tasks 16172 8648941888 Appointment b00eedde-1f8d-4556-bef4-07369f144d4e not found
ERROR 2025-11-02 17:08:01,152 tasks 16181 8648941888 Appointment d1318b1d-29af-448b-a49d-4747e962b336 not found
INFO 2025-11-02 17:08:27,885 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:08:28,098 basehttp 15978 13170143232 "GET /__debug__/history_sidebar/?request_id=04c8b01139994dc38da8214862947684 HTTP/1.1" 200 9547
INFO 2025-11-02 17:08:57,885 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:08:58,098 basehttp 15978 13170143232 "GET /__debug__/history_sidebar/?request_id=1ef9778601eb4d7896b7c32fe2fae070 HTTP/1.1" 200 9547
ERROR 2025-11-02 17:08:58,363 tasks 16180 8648941888 Appointment 251d4c8d-ad19-44b7-a10b-3b3ff3951257 not found
ERROR 2025-11-02 17:08:58,363 tasks 16172 8648941888 Appointment 642dc474-cd97-4dc0-8924-b2b832eeaea1 not found
ERROR 2025-11-02 17:08:58,363 tasks 16181 8648941888 Appointment 0ff795b3-68a3-44e3-ad35-9b50b6e098a8 not found
INFO 2025-11-02 17:09:02,867 basehttp 15978 13170143232 "GET /en/finance/payers/ HTTP/1.1" 200 77277
INFO 2025-11-02 17:09:02,960 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:09:06,362 basehttp 15978 13170143232 "GET /en/hr/holidays/ HTTP/1.1" 200 37612
INFO 2025-11-02 17:09:06,451 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:09:10,681 basehttp 15978 13170143232 "GET /en/patients/create/ HTTP/1.1" 200 42636
INFO 2025-11-02 17:09:10,694 basehttp 15978 13170143232 "GET /static/plugins/select2/dist/css/select2.min.css HTTP/1.1" 200 14966
INFO 2025-11-02 17:09:10,694 basehttp 15978 6163853312 "GET /static/plugins/bootstrap-datepicker/dist/css/bootstrap-datepicker.min.css HTTP/1.1" 200 15733
INFO 2025-11-02 17:09:10,695 basehttp 15978 13186969600 "GET /static/plugins/bootstrap-datepicker/dist/js/bootstrap-datepicker.min.js HTTP/1.1" 200 33871
INFO 2025-11-02 17:09:10,774 basehttp 15978 13186969600 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:09:12,290 basehttp 15978 13186969600 "GET /en/patients/ HTTP/1.1" 200 89885
WARNING 2025-11-02 17:09:12,304 basehttp 15978 13186969600 "GET /static/plugins/datatables/datatables.min.css HTTP/1.1" 404 2038
WARNING 2025-11-02 17:09:12,306 basehttp 15978 13170143232 "GET /static/plugins/datatables/datatables.min.js HTTP/1.1" 404 2035
INFO 2025-11-02 17:09:12,387 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:09:42,393 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:09:42,605 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=68ac273107584f1ea1da12f3f7b8a071 HTTP/1.1" 200 9547
INFO 2025-11-02 17:10:12,395 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:10:12,609 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=4f6d5b4f53194a6f8f1e894302844dc5 HTTP/1.1" 200 9547
INFO 2025-11-02 17:10:42,420 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:10:42,639 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=5bd0e14f8b544a6cae0ce9730ec4bfa9 HTTP/1.1" 200 9547
INFO 2025-11-02 17:11:12,417 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:11:12,643 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=97126dc448d54056944e27e0c46e9a0d HTTP/1.1" 200 9547
INFO 2025-11-02 17:11:42,439 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:11:42,655 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=91c0a87b5ec6425aa20b96b628d5c663 HTTP/1.1" 200 9547
INFO 2025-11-02 17:12:12,446 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:12:12,675 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=976f0f8d3ae64916917f7cd08dc387f9 HTTP/1.1" 200 9547
INFO 2025-11-02 17:12:42,442 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:12:42,668 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=f21dc55311d64ffdb36d0bc30e024ac0 HTTP/1.1" 200 9547
INFO 2025-11-02 17:13:09,251 basehttp 15978 6163853312 "GET /en/patients/ HTTP/1.1" 200 89885
WARNING 2025-11-02 17:13:09,266 basehttp 15978 6163853312 "GET /static/plugins/datatables/datatables.min.css HTTP/1.1" 404 2038
WARNING 2025-11-02 17:13:09,266 basehttp 15978 13170143232 "GET /static/plugins/datatables/datatables.min.js HTTP/1.1" 404 2035
INFO 2025-11-02 17:13:09,351 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:13:39,358 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:13:39,578 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=5a0c69c658254f45a7e3e5d27e3ab45b HTTP/1.1" 200 9547
INFO 2025-11-02 17:14:09,384 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:14:09,597 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=c45edcd9f9e84924a94a26af15c9d3cd HTTP/1.1" 200 9547
INFO 2025-11-02 17:14:39,370 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:14:39,598 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=99c9f354431f413bac610aaf9cd8ed15 HTTP/1.1" 200 9547
INFO 2025-11-02 17:15:09,386 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:15:09,612 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=46fb444c05fa4c7791a1592796c890d9 HTTP/1.1" 200 9547
INFO 2025-11-02 17:15:39,353 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:15:39,580 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=9ccb064d0b4f4de6a62024faafb8ca71 HTTP/1.1" 200 9547
INFO 2025-11-02 17:16:09,382 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:16:09,598 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=eb499c38dfc145d2961e6bc606f696e5 HTTP/1.1" 200 9547
INFO 2025-11-02 17:16:39,376 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:16:39,601 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=5b1a39d5f1f44034a147b27ee7cb5459 HTTP/1.1" 200 9547
INFO 2025-11-02 17:17:09,403 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:17:09,624 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=2c8de4baa200487a8aadbca38c10aaf3 HTTP/1.1" 200 9549
INFO 2025-11-02 17:17:39,352 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:17:39,572 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=8862ab68e2d646a8992b41099b9b8df2 HTTP/1.1" 200 9547
ERROR 2025-11-02 17:17:58,693 tasks 16172 8648941888 Appointment 07419aca-aaed-4f2f-9af3-680578504323 not found
ERROR 2025-11-02 17:17:58,693 tasks 16180 8648941888 Appointment b0c1c980-442f-4adc-ac76-2cd181929efd not found
INFO 2025-11-02 17:18:09,348 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:18:09,566 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=4c15576c9a4d4e47b97279ee5057d440 HTTP/1.1" 200 9547
INFO 2025-11-02 17:18:11,577 basehttp 15978 6163853312 "GET /en/patients/ HTTP/1.1" 200 87652
WARNING 2025-11-02 17:18:11,589 basehttp 15978 13170143232 "GET /static/plugins/datatables/datatables.min.js HTTP/1.1" 404 2035
WARNING 2025-11-02 17:18:11,589 basehttp 15978 6163853312 "GET /static/plugins/datatables/datatables.min.css HTTP/1.1" 404 2038
INFO 2025-11-02 17:18:11,707 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:18:13,319 basehttp 15978 6163853312 "GET /en/patients/create/ HTTP/1.1" 200 42636
INFO 2025-11-02 17:18:13,415 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:18:21,160 basehttp 15978 6163853312 "GET /en/staff/ HTTP/1.1" 200 119247
INFO 2025-11-02 17:18:21,257 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
ERROR 2025-11-02 17:18:44,455 tasks 16172 8648941888 Appointment d51ff4c0-8550-419f-bc72-c743e6c7098d not found
ERROR 2025-11-02 17:18:44,455 tasks 16180 8648941888 Appointment d1318b1d-29af-448b-a49d-4747e962b336 not found
ERROR 2025-11-02 17:18:44,455 tasks 16182 8648941888 Appointment 7221c9b8-2318-4410-8548-141cae6b9132 not found
ERROR 2025-11-02 17:18:44,455 tasks 16181 8648941888 Appointment a0aed854-c98c-4d7a-b0d3-981bd7efb97f not found
ERROR 2025-11-02 17:18:44,457 tasks 16173 8648941888 Appointment b00eedde-1f8d-4556-bef4-07369f144d4e not found
INFO 2025-11-02 17:18:47,471 basehttp 15978 6163853312 "GET / HTTP/1.1" 302 0
INFO 2025-11-02 17:18:47,583 basehttp 15978 13170143232 "GET /en/ HTTP/1.1" 200 56121
INFO 2025-11-02 17:18:47,682 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:18:50,558 basehttp 15978 13170143232 "GET /en/hr/schedules/ HTTP/1.1" 200 101222
INFO 2025-11-02 17:18:50,659 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:19:20,683 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:19:20,895 basehttp 15978 13170143232 "GET /__debug__/history_sidebar/?request_id=2dc2c94c799747bb955f834cb5946f13 HTTP/1.1" 200 9547
INFO 2025-11-02 17:19:42,910 basehttp 15978 13170143232 "GET /en/hr/schedules/ HTTP/1.1" 200 101222
INFO 2025-11-02 17:19:43,012 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:19:48,106 basehttp 15978 13170143232 "GET /en/ HTTP/1.1" 200 56122
INFO 2025-11-02 17:19:48,199 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:20:11,463 basehttp 15978 13170143232 "GET /en/consent-templates/ HTTP/1.1" 200 45639
INFO 2025-11-02 17:20:11,558 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:20:44,662 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:20:44,887 basehttp 15978 13170143232 "GET /__debug__/history_sidebar/?request_id=496929ae826e468294689da440ec1e0a HTTP/1.1" 200 9547
ERROR 2025-11-02 17:21:11,849 tasks 16172 8648941888 Appointment b00eedde-1f8d-4556-bef4-07369f144d4e not found
ERROR 2025-11-02 17:21:11,849 tasks 16180 8648941888 Appointment d1318b1d-29af-448b-a49d-4747e962b336 not found
ERROR 2025-11-02 17:21:11,849 tasks 16181 8648941888 Appointment a0aed854-c98c-4d7a-b0d3-981bd7efb97f not found
ERROR 2025-11-02 17:21:11,849 tasks 16182 8648941888 Appointment d51ff4c0-8550-419f-bc72-c743e6c7098d not found
ERROR 2025-11-02 17:21:11,853 tasks 16173 8648941888 Appointment 7221c9b8-2318-4410-8548-141cae6b9132 not found
ERROR 2025-11-02 17:21:12,097 tasks 16172 8648941888 Appointment a0aed854-c98c-4d7a-b0d3-981bd7efb97f not found
ERROR 2025-11-02 17:21:12,097 tasks 16181 8648941888 Appointment d51ff4c0-8550-419f-bc72-c743e6c7098d not found
ERROR 2025-11-02 17:21:12,097 tasks 16180 8648941888 Appointment d1318b1d-29af-448b-a49d-4747e962b336 not found
ERROR 2025-11-02 17:21:12,097 tasks 16182 8648941888 Appointment b00eedde-1f8d-4556-bef4-07369f144d4e not found
ERROR 2025-11-02 17:21:12,100 tasks 16173 8648941888 Appointment 7221c9b8-2318-4410-8548-141cae6b9132 not found
INFO 2025-11-02 17:21:14,674 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:21:14,895 basehttp 15978 13170143232 "GET /__debug__/history_sidebar/?request_id=1846e6d4ae474c8699a515f603355f9d HTTP/1.1" 200 9547
ERROR 2025-11-02 17:21:40,547 tasks 16181 8648941888 Appointment 0a8e9bd3-9c80-4e96-a583-3159f209047d not found
ERROR 2025-11-02 17:21:40,548 tasks 16172 8648941888 Appointment 8b124918-494c-44bb-967a-7a96e1cc2642 not found
ERROR 2025-11-02 17:21:40,548 tasks 16180 8648941888 Appointment ec4c2b50-b176-4fb2-b6cb-77b1271cae77 not found
ERROR 2025-11-02 17:21:40,548 tasks 16182 8648941888 Appointment 70b4da76-44f5-42a8-92c2-a8915a849a3a not found
ERROR 2025-11-02 17:21:40,551 tasks 16173 8648941888 Appointment 800db3b9-d5ac-452d-8bb4-c046e1b066d7 not found
INFO 2025-11-02 17:21:44,675 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:21:44,903 basehttp 15978 13170143232 "GET /__debug__/history_sidebar/?request_id=e4b974289210400c990d1dd15bca187e HTTP/1.1" 200 9547
ERROR 2025-11-02 17:22:08,284 tasks 16180 8648941888 Appointment 8f028c27-4142-489c-91a8-417fa19038bf not found
INFO 2025-11-02 17:22:14,697 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:22:14,923 basehttp 15978 13170143232 "GET /__debug__/history_sidebar/?request_id=566ed3df784a4d23bd1c8ff7d32a5855 HTTP/1.1" 200 9549
INFO 2025-11-02 17:22:44,670 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:22:44,895 basehttp 15978 13170143232 "GET /__debug__/history_sidebar/?request_id=d1f1c21012a24dcea80b09a2bc1d75d9 HTTP/1.1" 200 9548
INFO 2025-11-02 17:23:14,667 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:23:14,886 basehttp 15978 13170143232 "GET /__debug__/history_sidebar/?request_id=2b4f117603d445199aab23048f1ea04a HTTP/1.1" 200 9547
INFO 2025-11-02 17:23:35,131 basehttp 15978 13170143232 "GET /en/ HTTP/1.1" 200 56122
INFO 2025-11-02 17:23:35,229 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:23:38,055 basehttp 15978 13170143232 "GET /en/settings/ HTTP/1.1" 200 47989
INFO 2025-11-02 17:23:38,143 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:23:42,467 basehttp 15978 13170143232 "GET /en/staff/ HTTP/1.1" 200 119247
INFO 2025-11-02 17:23:42,563 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:24:19,060 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:24:19,282 basehttp 15978 13170143232 "GET /__debug__/history_sidebar/?request_id=167778bcd3b94a0e8b6df874061331fd HTTP/1.1" 200 9547
INFO 2025-11-02 17:24:49,049 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:24:49,269 basehttp 15978 13170143232 "GET /__debug__/history_sidebar/?request_id=09b3a4fd6de94afeaf5910fce4b4d1da HTTP/1.1" 200 9547
INFO 2025-11-02 17:25:02,536 basehttp 15978 13170143232 "GET /en/ HTTP/1.1" 200 56122
INFO 2025-11-02 17:25:02,633 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:25:05,957 basehttp 15978 13170143232 "GET /en/finance/payers/ HTTP/1.1" 200 77279
INFO 2025-11-02 17:25:06,051 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:25:36,089 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:25:36,316 basehttp 15978 13170143232 "GET /__debug__/history_sidebar/?request_id=3f4af1be9f4f4b6b8c6d66ef89a80e89 HTTP/1.1" 200 9547
INFO 2025-11-02 17:26:06,099 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:26:06,315 basehttp 15978 13170143232 "GET /__debug__/history_sidebar/?request_id=4a5e5d54957b45aabdf33fc41d4022e5 HTTP/1.1" 200 9549
INFO 2025-11-02 17:26:36,085 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:26:36,307 basehttp 15978 13170143232 "GET /__debug__/history_sidebar/?request_id=e5e7d98c543848c6afad11b389705804 HTTP/1.1" 200 9547
INFO 2025-11-02 17:26:52,520 basehttp 15978 13170143232 "GET /en/finance/payers/ HTTP/1.1" 200 77279
INFO 2025-11-02 17:26:52,645 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:27:14,889 basehttp 15978 13170143232 "GET / HTTP/1.1" 302 0
INFO 2025-11-02 17:27:14,966 basehttp 15978 6163853312 "GET /en/ HTTP/1.1" 200 56209
INFO 2025-11-02 17:27:15,064 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:27:17,995 basehttp 15978 6163853312 "GET /en/hr/schedules/ HTTP/1.1" 200 101222
INFO 2025-11-02 17:27:18,092 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:27:48,126 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:27:48,352 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=9bef5495fab948018cd2adff596cb7db HTTP/1.1" 200 9547
INFO 2025-11-02 17:28:18,123 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:28:18,338 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=c4882bff876741fc96c5108b83fd4fd3 HTTP/1.1" 200 9547
INFO 2025-11-02 17:28:48,123 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:28:48,346 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=a3ea137a177543bc89ebe196cd20437b HTTP/1.1" 200 9547
INFO 2025-11-02 17:29:18,125 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:29:18,353 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=7454677e1efa4c33ae71536f8d32c87b HTTP/1.1" 200 9548
INFO 2025-11-02 17:29:40,214 basehttp 15978 6163853312 "GET /en/hr/schedules/ HTTP/1.1" 200 101224
INFO 2025-11-02 17:29:40,327 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:30:00,004 tasks 16180 8648941888 Radiology results sync started
INFO 2025-11-02 17:30:00,004 tasks 16180 8648941888 Radiology results sync completed: {'status': 'success', 'new_studies': 0, 'new_reports': 0, 'errors': 0, 'timestamp': '2025-11-02 14:30:00.004403+00:00'}
INFO 2025-11-02 17:30:00,010 tasks 16180 8648941888 Lab results sync started
INFO 2025-11-02 17:30:00,010 tasks 16180 8648941888 Lab results sync completed: {'status': 'success', 'new_results': 0, 'updated_results': 0, 'errors': 0, 'timestamp': '2025-11-02 14:30:00.010954+00:00'}
INFO 2025-11-02 17:30:10,347 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:30:10,575 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=3f59b5992ce44b27bcc17a6ba948d3ab HTTP/1.1" 200 9547
INFO 2025-11-02 17:30:40,355 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:30:40,582 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=39e231b1bb844f4aaad329c8cdc018d7 HTTP/1.1" 200 9547
ERROR 2025-11-02 17:31:02,948 tasks 16172 8648941888 Appointment 7046f839-aede-4d5e-86f6-716893505439 not found
ERROR 2025-11-02 17:31:02,948 tasks 16180 8648941888 Appointment 01e64bc4-bb55-4589-ade8-2d684af8679f not found
INFO 2025-11-02 17:31:10,373 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:31:10,595 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=b28235d93ed24b24826342d2f6705107 HTTP/1.1" 200 9549
INFO 2025-11-02 17:31:40,345 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:31:40,569 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=5c247d547673403cabc6a712cb6c7acc HTTP/1.1" 200 9547
INFO 2025-11-02 17:32:01,480 basehttp 15978 6163853312 "GET /en/hr/schedules/ HTTP/1.1" 200 101265
INFO 2025-11-02 17:32:01,571 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
ERROR 2025-11-02 17:32:03,680 tasks 16180 8648941888 Appointment 6f4fe326-9e43-4b30-bae0-619526511ee5 not found
ERROR 2025-11-02 17:32:03,680 tasks 16172 8648941888 Appointment f3cf1889-ed7b-4416-8f02-ea8113a8b650 not found
ERROR 2025-11-02 17:32:03,958 tasks 16180 8648941888 Appointment f3cf1889-ed7b-4416-8f02-ea8113a8b650 not found
ERROR 2025-11-02 17:32:03,959 tasks 16172 8648941888 Appointment 6f4fe326-9e43-4b30-bae0-619526511ee5 not found
ERROR 2025-11-02 17:32:12,242 log 15978 6163853312 Internal Server Error: /en/hr/schedules/
Traceback (most recent call last):
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/template/backends/django.py", line 107, in render
return self.template.render(context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/template/base.py", line 171, in render
return self._render(context)
^^^^^^^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/test/utils.py", line 114, in instrumented_test_render
return self.nodelist.render(context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.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/AgdarCentre/.venv/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated
return self.render(context)
^^^^^^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/template/loader_tags.py", line 159, in render
return compiled_parent._render(context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/test/utils.py", line 114, in instrumented_test_render
return self.nodelist.render(context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.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/AgdarCentre/.venv/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated
return self.render(context)
^^^^^^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/template/loader_tags.py", line 65, in render
result = block.nodelist.render(context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.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/AgdarCentre/.venv/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated
return self.render(context)
^^^^^^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/template/defaulttags.py", line 327, in render
return nodelist.render(context)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.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/AgdarCentre/.venv/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated
return self.render(context)
^^^^^^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/template/defaulttags.py", line 327, in render
return nodelist.render(context)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.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/AgdarCentre/.venv/lib/python3.12/site-packages/django/template/base.py", line 977, in render_annotated
return self.render(context)
^^^^^^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/template/loader_tags.py", line 199, in render
template = context.template.engine.select_template(template_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/template/engine.py", line 214, in select_template
raise TemplateDoesNotExist(", ".join(not_found))
django.template.exceptions.TemplateDoesNotExist: includes/pagination_unified.html.html
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
response = get_response(request)
^^^^^^^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 220, in _get_response
response = response.render()
^^^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/template/response.py", line 114, in render
self.content = self.rendered_content
^^^^^^^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/template/response.py", line 92, in rendered_content
return template.render(context, self._request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/template/backends/django.py", line 109, in render
reraise(exc, self.backend)
File "/Users/marwanalwali/AgdarCentre/.venv/lib/python3.12/site-packages/django/template/backends/django.py", line 130, in reraise
raise new from exc
django.template.exceptions.TemplateDoesNotExist: includes/pagination_unified.html.html
ERROR 2025-11-02 17:32:12,320 basehttp 15978 6163853312 "GET /en/hr/schedules/ HTTP/1.1" 500 266324
INFO 2025-11-02 17:32:26,028 basehttp 15978 6163853312 "GET /en/hr/schedules/ HTTP/1.1" 200 102593
INFO 2025-11-02 17:32:26,123 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:32:56,537 basehttp 15978 6163853312 "GET /en/hr/holidays/ HTTP/1.1" 200 37612
INFO 2025-11-02 17:32:56,626 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:33:18,241 basehttp 15978 6163853312 "GET / HTTP/1.1" 302 0
INFO 2025-11-02 17:33:18,318 basehttp 15978 13170143232 "GET /en/ HTTP/1.1" 200 56209
INFO 2025-11-02 17:33:18,416 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:33:20,704 basehttp 15978 13170143232 "GET /en/profile/ HTTP/1.1" 200 43719
INFO 2025-11-02 17:33:20,797 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:33:22,965 basehttp 15978 13170143232 "GET /en/my-hr/ HTTP/1.1" 200 47770
INFO 2025-11-02 17:33:23,058 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:33:27,126 basehttp 15978 13170143232 "GET /en/my-hr/leave-requests/ HTTP/1.1" 200 39575
INFO 2025-11-02 17:33:27,217 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:33:38,693 basehttp 15978 13170143232 "GET /en/appointments/ HTTP/1.1" 200 125990
INFO 2025-11-02 17:33:38,702 basehttp 15978 6163853312 "GET /static/plugins/datatables.net-responsive-bs5/css/responsive.bootstrap5.min.css HTTP/1.1" 200 6044
INFO 2025-11-02 17:33:38,702 basehttp 15978 13170143232 "GET /static/plugins/datatables.net-bs5/css/dataTables.bootstrap5.min.css HTTP/1.1" 200 15096
INFO 2025-11-02 17:33:38,711 basehttp 15978 6163853312 "GET /static/plugins/datatables.net-bs5/js/dataTables.bootstrap5.min.js HTTP/1.1" 200 1470
INFO 2025-11-02 17:33:38,712 basehttp 15978 6163853312 "GET /static/plugins/datatables.net-responsive/js/dataTables.responsive.min.js HTTP/1.1" 200 16086
INFO 2025-11-02 17:33:38,712 basehttp 15978 13170143232 "GET /static/plugins/datatables.net/js/dataTables.min.js HTTP/1.1" 200 95735
INFO 2025-11-02 17:33:38,717 basehttp 15978 13170143232 "GET /static/plugins/datatables.net-responsive-bs5/js/responsive.bootstrap5.min.js HTTP/1.1" 200 1796
INFO 2025-11-02 17:33:38,803 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:34:08,827 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:34:09,043 basehttp 15978 13170143232 "GET /__debug__/history_sidebar/?request_id=81cb8d352bd14dad9e16f2d9a7650e10 HTTP/1.1" 200 9547
INFO 2025-11-02 17:34:18,151 basehttp 15978 13170143232 "GET /en/appointments/ HTTP/1.1" 200 127765
INFO 2025-11-02 17:34:18,256 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:34:48,293 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:34:48,518 basehttp 15978 13170143232 "GET /__debug__/history_sidebar/?request_id=20bcc93d974b48a8b951aed21ef4639e HTTP/1.1" 200 9547
ERROR 2025-11-02 17:34:51,903 tasks 16180 8648941888 Appointment 01e64bc4-bb55-4589-ade8-2d684af8679f not found
ERROR 2025-11-02 17:34:51,903 tasks 16172 8648941888 Appointment 7046f839-aede-4d5e-86f6-716893505439 not found
INFO 2025-11-02 17:35:18,312 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:35:18,532 basehttp 15978 13170143232 "GET /__debug__/history_sidebar/?request_id=9305fc55fc514a458df2a39ebf3e7697 HTTP/1.1" 200 9549
INFO 2025-11-02 17:35:48,287 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:35:48,514 basehttp 15978 13170143232 "GET /__debug__/history_sidebar/?request_id=535564efe51f4814a064fa1c17660a02 HTTP/1.1" 200 9547
ERROR 2025-11-02 17:36:13,637 tasks 16180 8648941888 Appointment 77bb0820-19c1-473f-a574-3cb8845eb3f9 not found
ERROR 2025-11-02 17:36:13,642 tasks 16172 8648941888 Appointment 77bb0820-19c1-473f-a574-3cb8845eb3f9 not found
ERROR 2025-11-02 17:36:13,648 tasks 16180 8648941888 Appointment 77bb0820-19c1-473f-a574-3cb8845eb3f9 not found
ERROR 2025-11-02 17:36:13,760 tasks 16180 8648941888 Appointment 77bb0820-19c1-473f-a574-3cb8845eb3f9 not found
ERROR 2025-11-02 17:36:13,768 tasks 16180 8648941888 Appointment 77bb0820-19c1-473f-a574-3cb8845eb3f9 not found
INFO 2025-11-02 17:36:18,308 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:36:18,531 basehttp 15978 13170143232 "GET /__debug__/history_sidebar/?request_id=f89157c1dd644624a7cf9596bee8653c HTTP/1.1" 200 9549
INFO 2025-11-02 17:36:48,296 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:36:48,519 basehttp 15978 13170143232 "GET /__debug__/history_sidebar/?request_id=5305ed0eba3d4550b1f5ea7779aef6c0 HTTP/1.1" 200 9548
ERROR 2025-11-02 17:37:00,511 tasks 16180 8648941888 Appointment 77bb0820-19c1-473f-a574-3cb8845eb3f9 not found
INFO 2025-11-02 17:37:18,291 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:37:18,518 basehttp 15978 13170143232 "GET /__debug__/history_sidebar/?request_id=7da60254c4914ce5b1de9c2fb0cef1b5 HTTP/1.1" 200 9547
INFO 2025-11-02 17:37:48,288 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:37:48,516 basehttp 15978 13170143232 "GET /__debug__/history_sidebar/?request_id=70c0cd84fcdc46289995fb2684ef768d HTTP/1.1" 200 9547
ERROR 2025-11-02 17:38:01,175 tasks 16180 8648941888 Appointment 77bb0820-19c1-473f-a574-3cb8845eb3f9 not found
INFO 2025-11-02 17:38:18,296 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:38:18,520 basehttp 15978 13170143232 "GET /__debug__/history_sidebar/?request_id=37480d538e504944901351b925e68e98 HTTP/1.1" 200 9548
INFO 2025-11-02 17:38:48,287 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:38:48,513 basehttp 15978 13170143232 "GET /__debug__/history_sidebar/?request_id=704dc15859ef44fcab0443fd9fc47fd1 HTTP/1.1" 200 9547
INFO 2025-11-02 17:39:18,286 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:39:18,513 basehttp 15978 13170143232 "GET /__debug__/history_sidebar/?request_id=9d68ba755e184f41b87c1067321bea35 HTTP/1.1" 200 9547
INFO 2025-11-02 17:39:48,317 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:39:48,540 basehttp 15978 13170143232 "GET /__debug__/history_sidebar/?request_id=8cbbbd3a0f4b405ebde45621e5df822b HTTP/1.1" 200 9549
INFO 2025-11-02 17:40:18,291 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:40:18,517 basehttp 15978 13170143232 "GET /__debug__/history_sidebar/?request_id=22462e728542457bb7e2ed181ba54e7a HTTP/1.1" 200 9547
ERROR 2025-11-02 17:40:24,529 tasks 16180 8648941888 Appointment 7d8e8281-f28e-47b2-bae6-04647dd5204d not found
INFO 2025-11-02 17:40:48,281 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:40:48,509 basehttp 15978 13170143232 "GET /__debug__/history_sidebar/?request_id=e889b325aae14a71af95d2c46796c816 HTTP/1.1" 200 9547
INFO 2025-11-02 17:41:18,393 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:41:18,608 basehttp 15978 13170143232 "GET /__debug__/history_sidebar/?request_id=e98287a1700d4dbd8f88e11c9a1ebb7a HTTP/1.1" 200 9547
INFO 2025-11-02 17:41:48,410 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:41:48,636 basehttp 15978 13170143232 "GET /__debug__/history_sidebar/?request_id=9c8831ac29f2457f8bf82ad716f3bc95 HTTP/1.1" 200 9549
INFO 2025-11-02 17:42:18,395 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:42:18,614 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=7dc7c355841646ae98bb79092d470773 HTTP/1.1" 200 9547
INFO 2025-11-02 17:42:48,388 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:42:48,617 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=d2476f2b3c1f490a98ab7f9e32471f83 HTTP/1.1" 200 9547
INFO 2025-11-02 17:43:18,393 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:43:18,609 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=5f2a00599dee4df890a1deea5feeb9b9 HTTP/1.1" 200 9547
INFO 2025-11-02 17:43:48,397 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:43:48,624 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=e8b94440d1d54535a36cfd274fa27a65 HTTP/1.1" 200 9547
INFO 2025-11-02 17:44:18,395 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:44:18,614 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=08b3c4713f3b41448bfe4009120e0029 HTTP/1.1" 200 9547
INFO 2025-11-02 17:44:48,472 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:44:49,394 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=7c424037520547b7aa38f76b51b04f79 HTTP/1.1" 200 9547
INFO 2025-11-02 17:45:18,450 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:45:19,403 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=df8a331e27b34729aa3d33ce92859526 HTTP/1.1" 200 9547
INFO 2025-11-02 17:46:18,471 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:46:19,402 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=eb4f7719632f4cc9a8d424c75721053a HTTP/1.1" 200 9547
INFO 2025-11-02 17:47:18,497 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:47:19,405 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=6cb1dff7bdef4bf79a7631c62af0e7a1 HTTP/1.1" 200 9549
INFO 2025-11-02 17:47:48,381 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:47:48,609 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=485fa68db7364e87beee37f6bf7e2523 HTTP/1.1" 200 9547
ERROR 2025-11-02 17:47:58,803 tasks 16180 8648941888 Appointment e494458f-a5fd-481b-97a3-c14466b6f1a1 not found
INFO 2025-11-02 17:48:18,391 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:48:18,608 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=aae02a90bc714c42bde493e121ed930b HTTP/1.1" 200 9547
ERROR 2025-11-02 17:48:44,553 tasks 16180 8648941888 Appointment 77bb0820-19c1-473f-a574-3cb8845eb3f9 not found
INFO 2025-11-02 17:48:48,400 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:48:48,616 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=d1985517c3864665b79e4ac591c3dac6 HTTP/1.1" 200 9547
INFO 2025-11-02 17:49:18,471 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:49:18,692 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=05356ee7bfe342e5a59f5f7b5f3647dd HTTP/1.1" 200 9548
INFO 2025-11-02 17:49:19,384 basehttp 15978 6163853312 "GET /en/appointments/ HTTP/1.1" 200 127764
INFO 2025-11-02 17:49:19,473 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:49:23,789 basehttp 15978 6163853312 "GET /en/patients/ HTTP/1.1" 200 89704
WARNING 2025-11-02 17:49:23,807 basehttp 15978 13170143232 "GET /static/plugins/datatables/datatables.min.js HTTP/1.1" 404 2035
WARNING 2025-11-02 17:49:23,807 basehttp 15978 6163853312 "GET /static/plugins/datatables/datatables.min.css HTTP/1.1" 404 2038
INFO 2025-11-02 17:49:23,887 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:49:53,916 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:49:54,131 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=9d30090c2a7742e19dee5cccf3d852d0 HTTP/1.1" 200 9547
INFO 2025-11-02 17:50:09,938 basehttp 15978 6163853312 "GET /en/patients/ HTTP/1.1" 200 89705
WARNING 2025-11-02 17:50:09,953 basehttp 15978 13170143232 "GET /static/plugins/datatables/datatables.min.js HTTP/1.1" 404 2035
WARNING 2025-11-02 17:50:09,953 basehttp 15978 6163853312 "GET /static/plugins/datatables/datatables.min.css HTTP/1.1" 404 2038
INFO 2025-11-02 17:50:10,036 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:50:40,076 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:50:40,300 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=6ff1828778d945e49c48ca0033d6c4f0 HTTP/1.1" 200 9547
INFO 2025-11-02 17:51:10,051 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:51:10,268 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=e7731a3bf33047e0bcc9395bf4e59e9c HTTP/1.1" 200 9547
ERROR 2025-11-02 17:51:11,942 tasks 16180 8648941888 Appointment 77bb0820-19c1-473f-a574-3cb8845eb3f9 not found
ERROR 2025-11-02 17:51:12,190 tasks 16180 8648941888 Appointment 77bb0820-19c1-473f-a574-3cb8845eb3f9 not found
INFO 2025-11-02 17:51:40,062 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:51:40,276 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=3dd0be8a5fa04268b422e26b3dc3278a HTTP/1.1" 200 9547
ERROR 2025-11-02 17:51:40,652 tasks 16181 8648941888 Appointment 310d15a7-8bf3-4742-9d66-ea672cb4ff53 not found
ERROR 2025-11-02 17:51:40,652 tasks 16172 8648941888 Appointment bf8645b9-dc70-43b2-a756-a1cbc04a2bae not found
ERROR 2025-11-02 17:51:40,653 tasks 16180 8648941888 Appointment 35bc0ce1-174a-41ad-bc93-fb7d92e34947 not found
ERROR 2025-11-02 17:52:08,389 tasks 16180 8648941888 Appointment 1ba52899-1a8e-4bce-93bd-d1d643bb7b69 not found
ERROR 2025-11-02 17:52:08,389 tasks 16172 8648941888 Appointment 84999784-a5ac-4385-82c0-6beee6a870fe not found
INFO 2025-11-02 17:52:10,091 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:52:10,318 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=ec2abe5264a34597829fe1d374ce29f4 HTTP/1.1" 200 9549
INFO 2025-11-02 17:52:40,044 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:52:40,260 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=ee29b46d65644fb0840d6fd8045a6a2e HTTP/1.1" 200 9547
INFO 2025-11-02 17:53:10,054 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:53:10,283 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=e1adb618aff0419eaa5a34373fda34a7 HTTP/1.1" 200 9547
INFO 2025-11-02 17:53:40,055 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:53:40,292 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=19b02ff43ee745beb23122c4e0fb483d HTTP/1.1" 200 9547
INFO 2025-11-02 17:54:10,077 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:54:10,289 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=6e5a7c028e7948b19fd2b6d8215796df HTTP/1.1" 200 9547
INFO 2025-11-02 17:54:29,463 basehttp 15978 6163853312 "GET /en/consents/create/ HTTP/1.1" 200 53897
INFO 2025-11-02 17:54:29,644 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
WARNING 2025-11-02 17:54:32,542 log 15978 6163853312 Not Found: /en/core/rooms
WARNING 2025-11-02 17:54:32,542 basehttp 15978 6163853312 "GET /en/core/rooms HTTP/1.1" 404 34962
WARNING 2025-11-02 17:54:44,255 log 15978 6163853312 Not Found: /en/rooms
WARNING 2025-11-02 17:54:44,255 basehttp 15978 6163853312 "GET /en/rooms HTTP/1.1" 404 34943
WARNING 2025-11-02 17:54:47,613 log 15978 6163853312 Not Found: /en/room
WARNING 2025-11-02 17:54:47,613 basehttp 15978 6163853312 "GET /en/room HTTP/1.1" 404 34940
INFO 2025-11-02 17:55:21,037 basehttp 15978 6163853312 "GET /en/consents/create/ HTTP/1.1" 200 53897
INFO 2025-11-02 17:55:21,133 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:55:23,548 basehttp 15978 6163853312 "GET /en/consents/ HTTP/1.1" 200 92283
INFO 2025-11-02 17:55:23,644 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
WARNING 2025-11-02 17:55:39,103 log 15978 6163853312 Not Found: /en/core/service
WARNING 2025-11-02 17:55:39,103 basehttp 15978 6163853312 "GET /en/core/service HTTP/1.1" 404 34972
INFO 2025-11-02 17:55:44,055 basehttp 15978 6163853312 "GET /en/ HTTP/1.1" 200 56209
INFO 2025-11-02 17:55:44,148 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:55:56,926 basehttp 15978 6163853312 "GET /en/finance/packages/ HTTP/1.1" 200 42230
INFO 2025-11-02 17:55:57,033 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
WARNING 2025-11-02 17:56:03,613 log 15978 6163853312 Not Found: /en/finance/services/
WARNING 2025-11-02 17:56:03,613 basehttp 15978 6163853312 "GET /en/finance/services/ HTTP/1.1" 404 39626
INFO 2025-11-02 17:56:13,959 basehttp 15978 6163853312 "GET /en/finance/invoices/ HTTP/1.1" 200 67209
INFO 2025-11-02 17:56:14,058 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:56:44,104 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:56:44,315 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=3089cc566bc64fe59b1b4d6cefc5ef94 HTTP/1.1" 200 9547
INFO 2025-11-02 17:57:09,110 basehttp 15978 6163853312 "GET /en/finance/invoices/ HTTP/1.1" 200 69322
INFO 2025-11-02 17:57:09,204 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:57:39,258 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:57:39,473 basehttp 15978 6163853312 "GET /__debug__/history_sidebar/?request_id=63638c6fea034d059e9cbcbeddb177c4 HTTP/1.1" 200 9549
INFO 2025-11-02 17:57:43,980 basehttp 15978 6163853312 "GET /en/finance/invoices/684c8424-1edf-4228-817f-0f8ad9a7efcc/ HTTP/1.1" 200 45657
INFO 2025-11-02 17:57:44,079 basehttp 15978 6163853312 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:57:59,735 basehttp 15978 6163853312 "GET /en/finance/payments HTTP/1.1" 301 0
INFO 2025-11-02 17:57:59,805 basehttp 15978 13170143232 "GET /en/finance/payments/ HTTP/1.1" 200 57707
INFO 2025-11-02 17:57:59,885 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:58:29,895 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:58:30,125 basehttp 15978 13170143232 "GET /__debug__/history_sidebar/?request_id=de6076e0b0ea4640b5c389a4f173a653 HTTP/1.1" 200 9547
INFO 2025-11-02 17:58:59,907 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:59:00,127 basehttp 15978 13170143232 "GET /__debug__/history_sidebar/?request_id=a1e3845eaba04b8993ef3645e2a5a46a HTTP/1.1" 200 9547
INFO 2025-11-02 17:59:22,127 basehttp 15978 13170143232 "GET /en/finance/payments/ HTTP/1.1" 200 57707
INFO 2025-11-02 17:59:22,225 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:59:52,260 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 17:59:52,476 basehttp 15978 13170143232 "GET /__debug__/history_sidebar/?request_id=ee3a07b84395488ab6a24e3a7379836f HTTP/1.1" 200 9547
INFO 2025-11-02 18:00:00,013 tasks 16180 8648941888 Lab results sync started
INFO 2025-11-02 18:00:00,014 tasks 16180 8648941888 Lab results sync completed: {'status': 'success', 'new_results': 0, 'updated_results': 0, 'errors': 0, 'timestamp': '2025-11-02 15:00:00.014215+00:00'}
INFO 2025-11-02 18:00:00,020 tasks 16180 8648941888 Radiology results sync started
INFO 2025-11-02 18:00:00,021 tasks 16180 8648941888 Radiology results sync completed: {'status': 'success', 'new_studies': 0, 'new_reports': 0, 'errors': 0, 'timestamp': '2025-11-02 15:00:00.021036+00:00'}
INFO 2025-11-02 18:00:00,034 tasks 16180 8648941888 Generated daily schedule for 2025-11-03: {'date': '2025-11-03', 'total_appointments': 0, 'providers_with_appointments': 0}
INFO 2025-11-02 18:00:22,233 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 18:00:22,455 basehttp 15978 13170143232 "GET /__debug__/history_sidebar/?request_id=61f6dbcdc9bb4c2d89cded1a3ea17950 HTTP/1.1" 200 9547
INFO 2025-11-02 18:00:52,255 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 18:00:52,471 basehttp 15978 13170143232 "GET /__debug__/history_sidebar/?request_id=c669c4e21613421a8a6f6659ddf7de45 HTTP/1.1" 200 9547
INFO 2025-11-02 18:01:22,260 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 18:01:22,485 basehttp 15978 13170143232 "GET /__debug__/history_sidebar/?request_id=012590954e86448da46dcdb84be68d2b HTTP/1.1" 200 9547
INFO 2025-11-02 18:01:52,237 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 18:01:52,457 basehttp 15978 13170143232 "GET /__debug__/history_sidebar/?request_id=16db1c9135414c0fb78e7bcbae468e00 HTTP/1.1" 200 9547
ERROR 2025-11-02 18:02:03,794 tasks 16180 8648941888 Appointment 642dc474-cd97-4dc0-8924-b2b832eeaea1 not found
ERROR 2025-11-02 18:02:03,794 tasks 16181 8648941888 Appointment 0ff795b3-68a3-44e3-ad35-9b50b6e098a8 not found
ERROR 2025-11-02 18:02:03,794 tasks 16172 8648941888 Appointment 251d4c8d-ad19-44b7-a10b-3b3ff3951257 not found
ERROR 2025-11-02 18:02:04,078 tasks 16172 8648941888 Appointment 0ff795b3-68a3-44e3-ad35-9b50b6e098a8 not found
ERROR 2025-11-02 18:02:04,078 tasks 16180 8648941888 Appointment 642dc474-cd97-4dc0-8924-b2b832eeaea1 not found
ERROR 2025-11-02 18:02:04,078 tasks 16181 8648941888 Appointment 251d4c8d-ad19-44b7-a10b-3b3ff3951257 not found
INFO 2025-11-02 18:02:22,278 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 18:02:22,498 basehttp 15978 13170143232 "GET /__debug__/history_sidebar/?request_id=81e314cb36c641a3af1a32e1c19c68c2 HTTP/1.1" 200 9549
INFO 2025-11-02 18:02:52,257 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 18:02:52,471 basehttp 15978 13170143232 "GET /__debug__/history_sidebar/?request_id=8f9303dbcbf8409296d185285f55f637 HTTP/1.1" 200 9547
INFO 2025-11-02 18:03:22,248 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 18:03:22,470 basehttp 15978 13170143232 "GET /__debug__/history_sidebar/?request_id=ab536ff68c074c73bbbca2ec2de3aab1 HTTP/1.1" 200 9547
INFO 2025-11-02 18:03:33,879 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 18:03:34,100 basehttp 15978 13170143232 "GET /__debug__/history_sidebar/?request_id=cd482d601d414923983474688c454394 HTTP/1.1" 200 9547
INFO 2025-11-02 18:03:34,667 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 18:03:34,886 basehttp 15978 13170143232 "GET /__debug__/history_sidebar/?request_id=e6d50bec410741f0860f678c382e0c1f HTTP/1.1" 200 9549
ERROR 2025-11-02 18:03:34,965 tasks 16180 8648941888 Appointment 57b3dd51-9baa-433e-b2be-9640c444df0d not found
INFO 2025-11-02 18:03:35,852 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 18:03:36,066 basehttp 15978 13170143232 "GET /__debug__/history_sidebar/?request_id=6f5299097fe0448885cf94f45d288750 HTTP/1.1" 200 9547
WARNING 2025-11-02 18:03:41,178 log 15978 13170143232 Not Found: /en/finance/
WARNING 2025-11-02 18:03:41,178 basehttp 15978 13170143232 "GET /en/finance/ HTTP/1.1" 404 39589
INFO 2025-11-02 18:03:52,519 basehttp 15978 13170143232 "GET /en/finance/packages/ HTTP/1.1" 200 42228
INFO 2025-11-02 18:03:52,608 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 18:04:22,639 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 18:04:22,870 basehttp 15978 13170143232 "GET /__debug__/history_sidebar/?request_id=3916c22b3f4e45f88aff7ebeda18c593 HTTP/1.1" 200 9547
INFO 2025-11-02 18:04:52,664 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 18:04:52,880 basehttp 15978 13170143232 "GET /__debug__/history_sidebar/?request_id=fc2d1515a6314b80bc546222e007df18 HTTP/1.1" 200 9549
INFO 2025-11-02 18:05:22,667 basehttp 15978 13170143232 "GET /en/notifications/api/unread-count/ HTTP/1.1" 200 19
INFO 2025-11-02 18:05:22,890 basehttp 15978 13170143232 "GET /__debug__/history_sidebar/?request_id=5da79d76a4d74e7298051e7be42c5dae HTTP/1.1" 200 9550

View File

@ -122,47 +122,7 @@
<!-- Pagination -->
{% if is_paginated %}
<nav aria-label="Page navigation" class="mt-4">
<ul class="pagination justify-content-center">
{% if page_obj.has_previous %}
<li class="page-item">
<a class="page-link" href="?filter={{ current_filter }}&page=1">
<i class="fa fa-angle-double-left"></i>
</a>
</li>
<li class="page-item">
<a class="page-link" href="?filter={{ current_filter }}&page={{ page_obj.previous_page_number }}">
<i class="fa fa-angle-left"></i>
</a>
</li>
{% endif %}
{% for num in page_obj.paginator.page_range %}
{% if page_obj.number == num %}
<li class="page-item active">
<span class="page-link">{{ num }}</span>
</li>
{% elif num > page_obj.number|add:'-3' and num < page_obj.number|add:'3' %}
<li class="page-item">
<a class="page-link" href="?filter={{ current_filter }}&page={{ num }}">{{ num }}</a>
</li>
{% endif %}
{% endfor %}
{% if page_obj.has_next %}
<li class="page-item">
<a class="page-link" href="?filter={{ current_filter }}&page={{ page_obj.next_page_number }}">
<i class="fa fa-angle-right"></i>
</a>
</li>
<li class="page-item">
<a class="page-link" href="?filter={{ current_filter }}&page={{ page_obj.paginator.num_pages }}">
<i class="fa fa-angle-double-right"></i>
</a>
</li>
{% endif %}
</ul>
</nav>
{% include 'includes/pagination_unified.html' %}
{% endif %}
</div>
{% endblock %}

View File

@ -86,43 +86,11 @@
{% endfor %}
</tbody>
</table>
{% if is_paginated %}
{% include "includes/pagination_unified.html" %}
{% endif %}
</div>
<!-- Pagination -->
{% if is_paginated %}
<nav aria-label="{% trans 'Page navigation' %}">
<ul class="pagination justify-content-center">
{% if page_obj.has_previous %}
<li class="page-item">
<a class="page-link" href="?page={{ page_obj.previous_page_number }}{% for key, value in request.GET.items %}{% if key != 'page' %}&{{ key }}={{ value }}{% endif %}{% endfor %}">
<i class="fas fa-angle-left"></i>
</a>
</li>
{% endif %}
{% for num in page_obj.paginator.page_range %}
{% if page_obj.number == num %}
<li class="page-item active"><span class="page-link">{{ num }}</span></li>
{% elif num > page_obj.number|add:'-3' and num < page_obj.number|add:'3' %}
<li class="page-item">
<a class="page-link" href="?page={{ num }}{% for key, value in request.GET.items %}{% if key != 'page' %}&{{ key }}={{ value }}{% endif %}{% endfor %}">{{ num }}</a>
</li>
{% endif %}
{% endfor %}
{% if page_obj.has_next %}
<li class="page-item">
<a class="page-link" href="?page={{ page_obj.next_page_number }}{% for key, value in request.GET.items %}{% if key != 'page' %}&{{ key }}={{ value }}{% endif %}{% endfor %}">
<i class="fas fa-angle-right"></i>
</a>
</li>
{% endif %}
</ul>
<div class="text-center text-muted">
{% trans "Showing" %} {{ page_obj.start_index }} - {{ page_obj.end_index }} {% trans "of" %} {{ page_obj.paginator.count }}
</div>
</nav>
{% endif %}
{% else %}
<div class="text-center py-5">

View File

@ -42,28 +42,12 @@
{% endfor %}
</tbody>
</table>
{% if is_paginated %}
{% include "includes/pagination_unified.html" %}
{% endif %}
</div>
<!-- Pagination -->
{% if is_paginated %}
<nav aria-label="Page navigation">
<ul class="pagination justify-content-center">
{% if page_obj.has_previous %}
<li class="page-item">
<a class="page-link" href="?page={{ page_obj.previous_page_number }}">{% trans "Previous" %}</a>
</li>
{% endif %}
<li class="page-item active">
<span class="page-link">{{ page_obj.number }} / {{ page_obj.paginator.num_pages }}</span>
</li>
{% if page_obj.has_next %}
<li class="page-item">
<a class="page-link" href="?page={{ page_obj.next_page_number }}">{% trans "Next" %}</a>
</li>
{% endif %}
</ul>
</nav>
{% endif %}
{% else %}
<div class="text-center py-5">
<i class="fas fa-hands-helping fa-3x text-muted mb-3"></i>

View File

@ -56,27 +56,11 @@
{% endfor %}
</tbody>
</table>
{% if is_paginated %}
{% include "includes/pagination_unified.html" %}
{% endif %}
</div>
{% if is_paginated %}
<nav aria-label="Page navigation">
<ul class="pagination justify-content-center">
{% if page_obj.has_previous %}
<li class="page-item">
<a class="page-link" href="?page={{ page_obj.previous_page_number }}">{% trans "Previous" %}</a>
</li>
{% endif %}
<li class="page-item active">
<span class="page-link">{{ page_obj.number }} / {{ page_obj.paginator.num_pages }}</span>
</li>
{% if page_obj.has_next %}
<li class="page-item">
<a class="page-link" href="?page={{ page_obj.next_page_number }}">{% trans "Next" %}</a>
</li>
{% endif %}
</ul>
</nav>
{% endif %}
{% else %}
<div class="text-center py-5">
<i class="fas fa-clipboard-check fa-3x text-muted mb-3"></i>

View File

@ -67,6 +67,9 @@
{% endfor %}
</tbody>
</table>
{% if is_paginated %}
{% include "includes/pagination_unified.html" %}
{% endif %}
</div>
{% else %}
<div class="text-center py-5">

View File

@ -47,27 +47,10 @@
{% endfor %}
</tbody>
</table>
</div>
{% if is_paginated %}
<nav aria-label="Page navigation">
<ul class="pagination justify-content-center">
{% if page_obj.has_previous %}
<li class="page-item">
<a class="page-link" href="?page={{ page_obj.previous_page_number }}">{% trans "Previous" %}</a>
</li>
{% endif %}
<li class="page-item active">
<span class="page-link">{{ page_obj.number }} / {{ page_obj.paginator.num_pages }}</span>
</li>
{% if page_obj.has_next %}
<li class="page-item">
<a class="page-link" href="?page={{ page_obj.next_page_number }}">{% trans "Next" %}</a>
</li>
{% endif %}
</ul>
</nav>
{% include "includes/pagination_unified.html" %}
{% endif %}
</div>
{% else %}
<div class="text-center py-5">
<i class="fas fa-clipboard-check fa-3x text-muted mb-3"></i>

View File

@ -42,27 +42,12 @@
{% endfor %}
</tbody>
</table>
{% if is_paginated %}
{% include "includes/pagination_unified.html" %}
{% endif %}
</div>
{% if is_paginated %}
<nav aria-label="Page navigation">
<ul class="pagination justify-content-center">
{% if page_obj.has_previous %}
<li class="page-item">
<a class="page-link" href="?page={{ page_obj.previous_page_number }}">{% trans "Previous" %}</a>
</li>
{% endif %}
<li class="page-item active">
<span class="page-link">{{ page_obj.number }} / {{ page_obj.paginator.num_pages }}</span>
</li>
{% if page_obj.has_next %}
<li class="page-item">
<a class="page-link" href="?page={{ page_obj.next_page_number }}">{% trans "Next" %}</a>
</li>
{% endif %}
</ul>
</nav>
{% endif %}
{% else %}
<div class="text-center py-5">
<i class="fas fa-comments fa-3x text-muted mb-3"></i>

View File

@ -40,27 +40,12 @@
{% endfor %}
</tbody>
</table>
{% if is_paginated %}
{% include "includes/pagination_unified.html" %}
{% endif %}
</div>
{% if is_paginated %}
<nav aria-label="Page navigation">
<ul class="pagination justify-content-center">
{% if page_obj.has_previous %}
<li class="page-item">
<a class="page-link" href="?page={{ page_obj.previous_page_number }}">{% trans "Previous" %}</a>
</li>
{% endif %}
<li class="page-item active">
<span class="page-link">{{ page_obj.number }} / {{ page_obj.paginator.num_pages }}</span>
</li>
{% if page_obj.has_next %}
<li class="page-item">
<a class="page-link" href="?page={{ page_obj.next_page_number }}">{% trans "Next" %}</a>
</li>
{% endif %}
</ul>
</nav>
{% endif %}
{% else %}
<div class="text-center py-5">
<i class="fas fa-hands-helping fa-3x text-muted mb-3"></i>

View File

@ -50,27 +50,10 @@
{% endfor %}
</tbody>
</table>
</div>
{% if is_paginated %}
<nav aria-label="Page navigation">
<ul class="pagination justify-content-center">
{% if page_obj.has_previous %}
<li class="page-item">
<a class="page-link" href="?page={{ page_obj.previous_page_number }}">{% trans "Previous" %}</a>
</li>
{% endif %}
<li class="page-item active">
<span class="page-link">{{ page_obj.number }} / {{ page_obj.paginator.num_pages }}</span>
</li>
{% if page_obj.has_next %}
<li class="page-item">
<a class="page-link" href="?page={{ page_obj.next_page_number }}">{% trans "Next" %}</a>
</li>
{% endif %}
</ul>
</nav>
{% include "includes/pagination_unified.html" %}
{% endif %}
</div>
{% else %}
<div class="text-center py-5">
<i class="fas fa-chart-line fa-3x text-muted mb-3"></i>

View File

@ -20,7 +20,7 @@
</div>
</div>
{% include "includes/messages.html" %}
<!-- Statistics Cards -->
<div class="row mb-4">

View File

@ -14,7 +14,7 @@
</a>
</div>
{% include "includes/messages.html" %}
<div class="row">
<div class="col-md-8 offset-md-2">

View File

@ -14,7 +14,7 @@
</a>
</div>
{% include "includes/messages.html" %}
<div class="row">
<div class="col-md-10 offset-md-1">

View File

@ -25,7 +25,7 @@
</div>
</div>
{% include "includes/messages.html" %}
<div class="row">
<!-- Note Content -->

View File

@ -15,7 +15,7 @@
</a>
</div>
{% include "includes/messages.html" %}
<div class="row">
<div class="col-md-10 offset-md-1">

View File

@ -15,7 +15,7 @@
</a>
</div>
{% include "includes/messages.html" %}
<!-- Filters -->
<div class="card mb-4">
@ -158,7 +158,9 @@
</div>
{% endif %}
{% include "includes/pagination.html" %}
{% if is_paginated %}
{% include "includes/pagination_unified.html" %}
{% endif %}
</div>
{% endblock %}

View File

@ -19,7 +19,7 @@
</div>
</div>
{% include "includes/messages.html" %}
<div class="row">
<div class="col-md-8">

View File

@ -15,7 +15,7 @@
</a>
</div>
{% include "includes/messages.html" %}
<div class="row">
<div class="col-md-10 offset-md-1">

View File

@ -14,7 +14,7 @@
</a>
</div>
{% include "includes/messages.html" %}
<div class="card">
<div class="card-body">
@ -59,6 +59,9 @@
{% endfor %}
</tbody>
</table>
{% if is_paginated %}
{% include "includes/pagination_unified.html" %}
{% endif %}
</div>
{% else %}
<div class="text-center py-5">
@ -72,6 +75,6 @@
</div>
</div>
{% include "includes/pagination.html" %}
</div>
{% endblock %}

View File

@ -0,0 +1,161 @@
{% load i18n %}
{% comment %}
Unified Pagination Template
Usage: {% include "includes/pagination_unified.html" %}
Optional context variables:
- page_obj: Required - Django paginator page object
- is_paginated: Optional - Boolean to show/hide pagination
- htmx_target: Optional - HTMX target selector (e.g., "#content-container")
- show_info: Optional - Show "Showing X to Y of Z" text (default: True)
- size: Optional - Pagination size: 'sm', 'md', 'lg' (default: 'sm')
{% endcomment %}
{% if page_obj and page_obj.paginator.num_pages > 1 %}
<div class="d-flex justify-content-between align-items-center flex-wrap gap-2">
{% if show_info|default:True %}
<div class="text-muted small">
{% trans "Showing" %} {{ page_obj.start_index }} {% trans "to" %} {{ page_obj.end_index }}
{% trans "of" %} {{ page_obj.paginator.count }} {% trans "results" %}
</div>
{% endif %}
<nav aria-label="{% trans 'Page navigation' %}">
<ul class="pagination pagination-{{ size|default:'sm' }} mb-0">
{# First Page Button #}
{% if page_obj.has_previous %}
<li class="page-item">
<a class="page-link"
href="?page=1{% for key, value in request.GET.items %}{% if key != 'page' %}&{{ key }}={{ value|urlencode }}{% endif %}{% endfor %}"
{% if htmx_target %}hx-get="?page=1{% for key, value in request.GET.items %}{% if key != 'page' %}&{{ key }}={{ value|urlencode }}{% endif %}{% endfor %}" hx-target="{{ htmx_target }}" hx-swap="outerHTML"{% endif %}
aria-label="{% trans 'First' %}">
{% if LANGUAGE_CODE == 'ar' %}
<i class="fas fa-angle-double-right"></i>
{% else %}
<i class="fas fa-angle-double-left"></i>
{% endif %}
</a>
</li>
{% else %}
<li class="page-item disabled">
<span class="page-link">
{% if LANGUAGE_CODE == 'ar' %}
<i class="fas fa-angle-double-right"></i>
{% else %}
<i class="fas fa-angle-double-left"></i>
{% endif %}
</span>
</li>
{% endif %}
{# Previous Page Button #}
{% if page_obj.has_previous %}
<li class="page-item">
<a class="page-link"
href="?page={{ page_obj.previous_page_number }}{% for key, value in request.GET.items %}{% if key != 'page' %}&{{ key }}={{ value|urlencode }}{% endif %}{% endfor %}"
{% if htmx_target %}hx-get="?page={{ page_obj.previous_page_number }}{% for key, value in request.GET.items %}{% if key != 'page' %}&{{ key }}={{ value|urlencode }}{% endif %}{% endfor %}" hx-target="{{ htmx_target }}" hx-swap="outerHTML"{% endif %}
aria-label="{% trans 'Previous' %}" rel="prev">
{% if LANGUAGE_CODE == 'ar' %}
<i class="fas fa-angle-right"></i>
{% else %}
<i class="fas fa-angle-left"></i>
{% endif %}
</a>
</li>
{% else %}
<li class="page-item disabled">
<span class="page-link">
{% if LANGUAGE_CODE == 'ar' %}
<i class="fas fa-angle-right"></i>
{% else %}
<i class="fas fa-angle-left"></i>
{% endif %}
</span>
</li>
{% endif %}
{# Page Numbers - Show window of ±2 around current page, plus first and last #}
{% with start=page_obj.number|add:"-2" end=page_obj.number|add:"2" %}
{% for num in page_obj.paginator.page_range %}
{% if num == 1 or num == page_obj.paginator.num_pages or num >= start and num <= end %}
{% if num == page_obj.number %}
<li class="page-item active" aria-current="page">
<span class="page-link">{{ num }}</span>
</li>
{% else %}
<li class="page-item">
<a class="page-link"
href="?page={{ num }}{% for key, value in request.GET.items %}{% if key != 'page' %}&{{ key }}={{ value|urlencode }}{% endif %}{% endfor %}"
{% if htmx_target %}hx-get="?page={{ num }}{% for key, value in request.GET.items %}{% if key != 'page' %}&{{ key }}={{ value|urlencode }}{% endif %}{% endfor %}" hx-target="{{ htmx_target }}" hx-swap="outerHTML"{% endif %}>
{{ num }}
</a>
</li>
{% endif %}
{% elif num == 2 and start > 2 %}
<li class="page-item disabled">
<span class="page-link">...</span>
</li>
{% elif num == page_obj.paginator.num_pages|add:"-1" and end < page_obj.paginator.num_pages|add:"-1" %}
<li class="page-item disabled">
<span class="page-link">...</span>
</li>
{% endif %}
{% endfor %}
{% endwith %}
{# Next Page Button #}
{% if page_obj.has_next %}
<li class="page-item">
<a class="page-link"
href="?page={{ page_obj.next_page_number }}{% for key, value in request.GET.items %}{% if key != 'page' %}&{{ key }}={{ value|urlencode }}{% endif %}{% endfor %}"
{% if htmx_target %}hx-get="?page={{ page_obj.next_page_number }}{% for key, value in request.GET.items %}{% if key != 'page' %}&{{ key }}={{ value|urlencode }}{% endif %}{% endfor %}" hx-target="{{ htmx_target }}" hx-swap="outerHTML"{% endif %}
aria-label="{% trans 'Next' %}" rel="next">
{% if LANGUAGE_CODE == 'ar' %}
<i class="fas fa-angle-left"></i>
{% else %}
<i class="fas fa-angle-right"></i>
{% endif %}
</a>
</li>
{% else %}
<li class="page-item disabled">
<span class="page-link">
{% if LANGUAGE_CODE == 'ar' %}
<i class="fas fa-angle-left"></i>
{% else %}
<i class="fas fa-angle-right"></i>
{% endif %}
</span>
</li>
{% endif %}
{# Last Page Button #}
{% if page_obj.has_next %}
<li class="page-item">
<a class="page-link"
href="?page={{ page_obj.paginator.num_pages }}{% for key, value in request.GET.items %}{% if key != 'page' %}&{{ key }}={{ value|urlencode }}{% endif %}{% endfor %}"
{% if htmx_target %}hx-get="?page={{ page_obj.paginator.num_pages }}{% for key, value in request.GET.items %}{% if key != 'page' %}&{{ key }}={{ value|urlencode }}{% endif %}{% endfor %}" hx-target="{{ htmx_target }}" hx-swap="outerHTML"{% endif %}
aria-label="{% trans 'Last' %}">
{% if LANGUAGE_CODE == 'ar' %}
<i class="fas fa-angle-double-left"></i>
{% else %}
<i class="fas fa-angle-double-right"></i>
{% endif %}
</a>
</li>
{% else %}
<li class="page-item disabled">
<span class="page-link">
{% if LANGUAGE_CODE == 'ar' %}
<i class="fas fa-angle-double-left"></i>
{% else %}
<i class="fas fa-angle-double-right"></i>
{% endif %}
</span>
</li>
{% endif %}
</ul>
</nav>
</div>
{% endif %}