diff --git a/equipment/templates/equipment/equipment_list.html b/equipment/templates/equipment/equipment_list.html index 66b2485..c167e0a 100644 --- a/equipment/templates/equipment/equipment_list.html +++ b/equipment/templates/equipment/equipment_list.html @@ -25,9 +25,9 @@
  • 🖨️ Periferic
  • - + diff --git a/equipment/templates/equipment/maintenance_report.html b/equipment/templates/equipment/maintenance_report.html new file mode 100644 index 0000000..303a746 --- /dev/null +++ b/equipment/templates/equipment/maintenance_report.html @@ -0,0 +1,68 @@ +{% extends 'base.html' %} + +{% block content %} +
    +
    +

    Raport Mentenanță Echipamente

    +
    + + +
    + +
    + + + {% if records is not None %} +
    +
    + + + + + + + + + + + + {% for record in records %} + + + + + + + + + {% empty %} + + + + {% endfor %} + +
    Dată IntervențieEchipamentTip OperațiuneEfectuat deObservații
    {{ record.date|date:"d.m.Y" }}{{ record.equipment }}{{ record.operation_type }}{{ record.performed_by }}{{ record.notes|default:"-" }}
    Nu au fost găsite intervenții de mentenanță în perioada selectată.
    +
    +
    + {% endif %} +
    +{% endblock %} diff --git a/equipment/urls.py b/equipment/urls.py index 644ddb1..139c14f 100644 --- a/equipment/urls.py +++ b/equipment/urls.py @@ -78,6 +78,7 @@ urlpatterns = [ views.generate_decommission_pdf, name="decommission_pdf", ), + path("raport-mentenanta/", views.maintenance_report, name="maintenance_report"), path("certificates/", views.certificate_list, name="certificate_list"), path("certificates/new/", views.certificate_form, name="certificate_create"), path( diff --git a/equipment/views.py b/equipment/views.py index d003492..866b567 100644 --- a/equipment/views.py +++ b/equipment/views.py @@ -26,6 +26,8 @@ from datetime import date, timedelta from .models import DigitalCertificate from .forms import DigitalCertificateForm import csv +from django.contrib.auth.decorators import login_required +from django.shortcuts import render @login_required @@ -914,3 +916,49 @@ def export_inventory_csv(request): ) return response + + +from datetime import datetime + + +@login_required +def maintenance_report(request): + # Preluăm datele exact așa cum le introduce utilizatorul (ex: 20.05.2026 sau 20-05-2026) + start_date_raw = request.GET.get("start_date") + end_date_raw = request.GET.get("end_date") + + records = None + + # Funcție ajutătoare pentru a traduce formatul românesc în formatul bazei de date + def parse_romanian_date(date_str): + if not date_str: + return None + + clean_str = str(date_str).strip() + + # Unificăm separatorii (transformăm cratima în punct pentru a verifica mai ușor) + clean_str = clean_str.replace("-", ".") + + try: + # Traducem din ZZ.LL.AAAA în AAAA-LL-ZZ + parsed = datetime.strptime(clean_str, "%d.%m.%Y") + return parsed.strftime("%Y-%m-%d") + except ValueError: + # Dacă deja este în formatul corect (ex. a fost introdus manual AAAA-LL-ZZ), îl lăsăm așa + return clean_str + + # Convertim datele pentru baza de date + start_date_db = parse_romanian_date(start_date_raw) + end_date_db = parse_romanian_date(end_date_raw) + + if start_date_db and end_date_db: + records = MaintenanceRecord.objects.filter( + date__range=[start_date_db, end_date_db] + ).order_by("-date") + + context = { + "records": records, + "start_date": start_date_raw, # Trimitem înapoi formatul original pentru a rămâne afișat în formular + "end_date": end_date_raw, + } + return render(request, "equipment/maintenance_report.html", context) diff --git a/templates/base.html b/templates/base.html index 9f0dee1..dfc228f 100644 --- a/templates/base.html +++ b/templates/base.html @@ -28,12 +28,15 @@ - + +