feat(07-01): wire dashboard data and add /packages listing page

- Dashboard queries 5 most recent Printer records and 5 most recent driver-assigned ones
- New /packages route lists printers with drivers, with intunewin/ninja download links
- packages.html template extends base.html with Pico grid table
- Dashboard printer/package items now link to detail pages
- Quick action buttons wired to real routes (removed aria-disabled)
This commit is contained in:
2026-04-13 08:58:13 +02:00
parent 8cf47f5c89
commit 91910ad97d
3 changed files with 74 additions and 7 deletions
+5 -5
View File
@@ -4,9 +4,9 @@
<h1>Dashboard</h1>
<div class="quick-actions">
<a href="#" aria-disabled="true" class="btn-action">New Printer</a>
<a href="#" aria-disabled="true" class="btn-action">Upload Driver</a>
<a href="#" aria-disabled="true" class="btn-action">Export Package</a>
<a href="/printers" class="btn-action">New Printer</a>
<a href="/drivers" class="btn-action">Upload Driver</a>
<a href="/packages" class="btn-action">Export Package</a>
</div>
<section class="recent-activity">
@@ -17,7 +17,7 @@
{% if recent_printers %}
<ul>
{% for printer in recent_printers %}
<li>{{ printer.name }} — {{ printer.ip_address }}</li>
<li><a href="/printers/{{ printer.id }}">{{ printer.name }}</a> — {{ printer.ip_address }}</li>
{% endfor %}
</ul>
{% else %}
@@ -30,7 +30,7 @@
{% if recent_packages %}
<ul>
{% for package in recent_packages %}
<li>{{ package }}</li>
<li><a href="/printers/{{ package.id }}">{{ package.name }}</a>{% if package.client_id %} — {{ package.client.name }}{% endif %}</li>
{% endfor %}
</ul>
{% else %}
+37
View File
@@ -0,0 +1,37 @@
{% extends "base.html" %}
{% block content %}
<h1>Packages</h1>
<p>Printers with drivers assigned — ready for deployment package export.</p>
{% if printers %}
<figure>
<table role="grid">
<thead>
<tr>
<th scope="col">Printer</th>
<th scope="col">Client</th>
<th scope="col">Driver</th>
<th scope="col">Downloads</th>
</tr>
</thead>
<tbody>
{% for printer in printers %}
<tr>
<td><a href="/printers/{{ printer.id }}">{{ printer.name }}</a></td>
<td>{% if printer.client_id %}{{ printer.client.name }}{% else %}—{% endif %}</td>
<td>{{ printer.driver.original_filename }}</td>
<td>
<a href="/printers/{{ printer.id }}/packages/intunewin">.intunewin</a>
&nbsp;|&nbsp;
<a href="/printers/{{ printer.id }}/packages/ninja">NinjaRMM ZIP</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</figure>
{% else %}
<p class="empty-state">No package-ready printers yet. Assign a driver to a printer to enable package export.</p>
{% endif %}
{% endblock %}