diff --git a/README.md b/README.md index 3fa26c5..1407d84 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,7 @@ Ein in NetBox integriertes Markdown-Wiki für Betriebsdokumentationen und Anleit - Bilder direkt vom eigenen Gerät in die Dokumentation hochladen - Formatierte Word-Inhalte inklusive Tabellen und unterstützten Zwischenablage-Bildern einfügen - Mehrere Dokumentationen mit Ordnern, Zuordnungen und Anhängen als ZIP exportieren und wieder importieren +- Druckoptimierte A4-Ansicht zum Drucken oder Speichern als PDF - Eine Dokumentation mehreren Objekten zuordnen und umgekehrt - Unbegrenzt viele Objektzuordnungen pro Dokumentation; nur identische Doppelzuordnungen werden verhindert - Unterstützte Standardobjekte: Region, Standort, Location, Rack, Gerät, VM, VM-Cluster und Mandant/Kunde @@ -21,7 +22,7 @@ Ein in NetBox integriertes Markdown-Wiki für Betriebsdokumentationen und Anleit ## Kompatibilität -Die Version `0.4.1` zielt auf NetBox 4.x (mindestens 4.0). Vor einem produktiven Rollout sollte das Plugin gegen die konkret eingesetzte NetBox-Minor-Version in einer Testinstanz geprüft werden. +Die Version `0.4.2` zielt auf NetBox 4.x (mindestens 4.0). Vor einem produktiven Rollout sollte das Plugin gegen die konkret eingesetzte NetBox-Minor-Version in einer Testinstanz geprüft werden. ## Installation diff --git a/netbox_documentation/__init__.py b/netbox_documentation/__init__.py index c0de995..6949f3c 100644 --- a/netbox_documentation/__init__.py +++ b/netbox_documentation/__init__.py @@ -5,7 +5,7 @@ class DocumentationConfig(PluginConfig): name = "netbox_documentation" verbose_name = "NetBox Dokumentation" description = "Wiki und Office-Dokumentation direkt in NetBox" - version = "0.4.1" + version = "0.4.2" author = "LKE" base_url = "documentation" min_version = "4.0.0" diff --git a/netbox_documentation/templates/netbox_documentation/document.html b/netbox_documentation/templates/netbox_documentation/document.html index a673ae2..7886bc4 100644 --- a/netbox_documentation/templates/netbox_documentation/document.html +++ b/netbox_documentation/templates/netbox_documentation/document.html @@ -1,5 +1,10 @@ {% extends 'generic/object.html' %} {% load helpers %} +{% block extra_controls %} + + Drucken / PDF + +{% endblock extra_controls %} {% block content %}
diff --git a/netbox_documentation/templates/netbox_documentation/document_print.html b/netbox_documentation/templates/netbox_documentation/document_print.html new file mode 100644 index 0000000..c9103e1 --- /dev/null +++ b/netbox_documentation/templates/netbox_documentation/document_print.html @@ -0,0 +1,52 @@ + + + + + + {{ object.title }} – Druckansicht + + + +
+ + Zurück zur Dokumentation +
+
+
+

{{ object.title }}

+ {% if object.summary %}

{{ object.summary }}

{% endif %} +
+ {% if object.category %}Ordner: {{ object.category }}{% endif %} + Stand: {{ object.last_updated|date:"d.m.Y H:i" }} + {% if object.assignments.all %}Zugeordnet: {% for assignment in object.assignments.all %}{{ assignment.assigned_object }}{% if not forloop.last %}, {% endif %}{% endfor %}{% endif %} +
+
+
{{ object.rendered_body|safe }}
+
+ + diff --git a/netbox_documentation/urls.py b/netbox_documentation/urls.py index 79e07c2..e2b8dc6 100644 --- a/netbox_documentation/urls.py +++ b/netbox_documentation/urls.py @@ -9,6 +9,7 @@ urlpatterns = ( path("documents/import/", views.DocumentImportView.as_view(), name="document_import"), path("archive/", views.DocumentArchiveView.as_view(), name="document_archive"), path("documents//", views.DocumentView.as_view(), name="document"), + path("documents//print/", views.DocumentPrintView.as_view(), name="document_print"), path("documents//edit/", views.DocumentEditView.as_view(), name="document_edit"), path("documents//media-upload/", views.DocumentMediaUploadView.as_view(), name="document_media_upload"), path("documents//delete/", views.DocumentDeleteView.as_view(), name="document_delete"), diff --git a/netbox_documentation/views.py b/netbox_documentation/views.py index 5a4e9b3..398e49d 100644 --- a/netbox_documentation/views.py +++ b/netbox_documentation/views.py @@ -47,6 +47,18 @@ class DocumentView(generic.ObjectView): queryset = Document.objects.prefetch_related("assignments", "attachments") +class DocumentPrintView(PermissionRequiredMixin, View): + permission_required = "netbox_documentation.view_document" + template_name = "netbox_documentation/document_print.html" + + def get(self, request, pk): + document = get_object_or_404( + Document.objects.restrict(request.user, "view").select_related("category").prefetch_related("assignments"), + pk=pk, + ) + return render(request, self.template_name, {"object": document}) + + class DocumentEditView(generic.ObjectEditView): queryset = Document.objects.all() form = DocumentForm diff --git a/pyproject.toml b/pyproject.toml index b866259..57fcc4a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "netbox-documentation" -version = "0.4.1" +version = "0.4.2" description = "Integrated Markdown wiki and office document importer for NetBox" readme = "README.md" requires-python = ">=3.10"