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
+
+
+
+
+
+
+ {{ 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"