from django.urls import reverse from django.utils.html import format_html from netbox.plugins import PluginTemplateExtension class CustomerExportButton(PluginTemplateExtension): models = ["dcim.site", "dcim.location", "tenancy.tenant", "tenancy.tenantgroup"] def buttons(self): obj = self.context["object"] url = reverse( "plugins:netbox_customer_export:export", kwargs={"kind": obj._meta.model_name, "pk": obj.pk}, ) return format_html( ' Kundendoku', url, ) class TopologySymbolButton(PluginTemplateExtension): """Auf Gerätetyp- und Geräterollen-Seiten: Topologie-Symbol festlegen.""" models = ["dcim.devicetype", "dcim.devicerole"] def buttons(self): from .models import TopologySymbol user = self.context["request"].user if not user.has_perm("netbox_customer_export.add_topologysymbol"): return "" obj = self.context["object"] field = "device_type" if obj._meta.model_name == "devicetype" else "role" existing = TopologySymbol.objects.filter(**{field: obj}).first() if existing: url = existing.get_absolute_url() else: url = f"{reverse('plugins:netbox_customer_export:symbol_add')}?{field}={obj.pk}" return format_html( ' Topologie-Symbol', url ) template_extensions = [CustomerExportButton, TopologySymbolButton]