03 sept 2026 - apropape gata, de schimbat setarile pt productie

This commit is contained in:
2026-09-04 13:46:38 +03:00
parent 2f4c19b653
commit 3649b0126d
5 changed files with 125 additions and 5 deletions
@@ -25,9 +25,9 @@
<li><a class="dropdown-item" href="#" hx-get="{% url 'equipment:peripheral_create' %}" hx-target="#modal-content-area" data-bs-toggle="modal" data-bs-target="#form-modal">🖨️ Periferic</a></li>
</ul>
</div>
<a href="{% url 'equipment:export_inventory' %}" class="btn btn-success fw-bold shadow-sm me-2">
<!-- <a href="{% url 'equipment:export_inventory' %}" class="btn btn-success fw-bold shadow-sm me-2">
📊 Exportă Inventar (Excel)
</a>
</a> -->
</div>
</div>
@@ -0,0 +1,68 @@
{% extends 'base.html' %}
{% block content %}
<div class="container-fluid mt-4">
<div class="d-flex justify-content-between align-items-center mb-4">
<h2>Raport Mentenanță Echipamente</h2>
</div>
<!-- Formularul de filtrare -->
<div class="card mb-4">
<div class="card-body">
<form method="GET" action="{% url 'equipment:maintenance_report' %}" class="row g-3 align-items-end">
<div class="col-auto">
<label for="start_date" class="form-label">De la data:</label>
<!-- Am schimbat type="date" cu type="text" și am adăugat clasa flatpickr-date -->
<input type="text" class="form-control flatpickr-date" id="start_date" name="start_date" value="{{ start_date|default_if_none:'' }}" placeholder="ZZ.LL.AAAA" required>
</div>
<div class="col-auto">
<label for="end_date" class="form-label">Până la data:</label>
<!-- Am schimbat type="date" cu type="text" și am adăugat clasa flatpickr-date -->
<input type="text" class="form-control flatpickr-date" id="end_date" name="end_date" value="{{ end_date|default_if_none:'' }}" placeholder="ZZ.LL.AAAA" required>
</div>
<div class="col-auto">
<button type="submit" class="btn btn-primary">Generează Raport</button>
{% if records %}
<a href="{% url 'equipment:maintenance_report' %}" class="btn btn-secondary ms-2">Resetează</a>
{% endif %}
</div>
</form>
</div>
</div>
<!-- Tabelul cu rezultate -->
{% if records is not None %}
<div class="card">
<div class="card-body p-0">
<table class="table table-striped table-hover mb-0">
<thead class="table-dark">
<tr>
<th>Dată Intervenție</th>
<th>Echipament</th>
<th>Tip Operațiune</th>
<th>Efectuat de</th>
<th>Observații</th>
</tr>
</thead>
<tbody>
{% for record in records %}
<tr>
<td>{{ record.date|date:"d.m.Y" }}</td>
<!-- Ajustează record.equipment / record.operation_type etc. conform modelului tău -->
<td>{{ record.equipment }}</td>
<td>{{ record.operation_type }}</td>
<td>{{ record.performed_by }}</td>
<td>{{ record.notes|default:"-" }}</td>
</tr>
{% empty %}
<tr>
<td colspan="5" class="text-center py-4">Nu au fost găsite intervenții de mentenanță în perioada selectată.</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
{% endif %}
</div>
{% endblock %}
+1
View File
@@ -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(
+48
View File
@@ -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)