From d874144b475bfe756134ea417c62999c2d05144c Mon Sep 17 00:00:00 2001 From: Kevin Chollet Date: Tue, 5 Mar 2024 10:32:07 +0100 Subject: [PATCH 1/3] Adding url_template that can replace object url --- netbox_qrcode/template_content.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/netbox_qrcode/template_content.py b/netbox_qrcode/template_content.py index 933b52d..0b4563c 100644 --- a/netbox_qrcode/template_content.py +++ b/netbox_qrcode/template_content.py @@ -15,7 +15,12 @@ def x_page(self): config = self.context['config'] obj = self.context['object'] request = self.context['request'] - url = request.build_absolute_uri(obj.get_absolute_url()) + if config.get('url_template'): + django_engine = engines["django"] + template = django_engine.from_string(config.get('url_template')) + url = template.render({'obj': obj}) + else: + url = request.build_absolute_uri(obj.get_absolute_url()) # get object settings obj_cfg = config.get(self.model.replace('dcim.', '')) if obj_cfg is None: From 68d8a4dda9c7057c29877da6e27ecec71783e889 Mon Sep 17 00:00:00 2001 From: Kevin Chollet Date: Tue, 5 Mar 2024 10:49:04 +0100 Subject: [PATCH 2/3] Load objectif specific config before defining obj url Load objectif specific config before defining obj url allowing to use url_template specific to each object --- netbox_qrcode/template_content.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/netbox_qrcode/template_content.py b/netbox_qrcode/template_content.py index 0b4563c..f4e1d50 100644 --- a/netbox_qrcode/template_content.py +++ b/netbox_qrcode/template_content.py @@ -15,19 +15,20 @@ def x_page(self): config = self.context['config'] obj = self.context['object'] request = self.context['request'] - if config.get('url_template'): - django_engine = engines["django"] - template = django_engine.from_string(config.get('url_template')) - url = template.render({'obj': obj}) - else: - url = request.build_absolute_uri(obj.get_absolute_url()) # get object settings obj_cfg = config.get(self.model.replace('dcim.', '')) if obj_cfg is None: return '' # and ovverride default config.update(obj_cfg) - + + if config.get('url_template'): + django_engine = engines["django"] + template = django_engine.from_string(config.get('url_template')) + url = template.render({'obj': obj}) + else: + url = request.build_absolute_uri(obj.get_absolute_url()) + qr_args = {} for k, v in config.items(): if k.startswith('qr_'): From baf209994b15c9de94a199ee23be676bbc9a1b79 Mon Sep 17 00:00:00 2001 From: Kevin Chollet Date: Tue, 5 Mar 2024 10:51:17 +0100 Subject: [PATCH 3/3] Adding url_template to readme --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 1b0b1cf..d4a7bbd 100644 --- a/README.md +++ b/README.md @@ -51,6 +51,7 @@ QR Code. The following values are available: is. * `qr_border`: Integer (default 4), controls how many boxes thick the border should be (the default is 4, which is the minimum according to the specs). +* `url_template`: Jinja2 template applied to url with {{ obj }} as context ### Per object options