From e86418bf325427ed58c8daaf86ab0d8920024d95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Agust=C3=ADn=20M=C3=A9ndez?= Date: Mon, 5 Feb 2024 20:10:34 -0600 Subject: [PATCH 1/2] Refactored template tag to be a simple_tag (ie use modern Django features) --- .../templatetags/generic_links_tags.py | 31 +++++++------------ generic_links/utils.py | 2 +- tests/settings.py | 1 + 3 files changed, 13 insertions(+), 21 deletions(-) diff --git a/generic_links/templatetags/generic_links_tags.py b/generic_links/templatetags/generic_links_tags.py index 9c623a0..7e71ccf 100644 --- a/generic_links/templatetags/generic_links_tags.py +++ b/generic_links/templatetags/generic_links_tags.py @@ -1,9 +1,12 @@ """ Several useful template tags! """ + from __future__ import annotations from django import template +from django.db.models import Model +from django.db.models import QuerySet from generic_links import utils @@ -11,28 +14,16 @@ register = template.Library() -class RelatedLinksNode(template.Node): - def __init__(self, context_var, obj, is_external): - self.context_var = context_var - self.obj_var = template.Variable(obj) - self.is_external = is_external +@register.simple_tag +def get_links_for(obj: Model, is_external: bool | None = None) -> QuerySet: + """ + Usage: - def render(self, context): - obj = self.obj_var.resolve(context) - context[self.context_var] = utils.get_links_for(obj).select_related("user").filter(is_external=self.is_external) - return "" + {% get_links_for as %} + or -@register.tag -def get_links_for(parser, token): - """ - Usage: {% get_links_for as %} + {% get_links_for as %} """ - bits = token.split_contents() - - if len(bits) != 4: - message = "'%s' tag requires three arguments" % bits[0] - raise template.TemplateSyntaxError(message) - - return RelatedLinksNode(bits[3], bits[1], True) + return utils.get_links_for(obj, is_external=is_external) diff --git a/generic_links/utils.py b/generic_links/utils.py index 2e7e6b9..9365192 100644 --- a/generic_links/utils.py +++ b/generic_links/utils.py @@ -17,4 +17,4 @@ def get_links_for(obj, is_external=None): if is_external is not None: params["is_external"] = is_external - return GenericLink.objects.filter(**params) + return GenericLink.objects.filter(**params).select_related("user") diff --git a/tests/settings.py b/tests/settings.py index 05b2493..1708901 100644 --- a/tests/settings.py +++ b/tests/settings.py @@ -3,6 +3,7 @@ Generated by Cookiecutter Django Package """ + from __future__ import annotations import os From 04edc74f7f560f4680b9acae4b095788d26e5c00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Agust=C3=ADn=20M=C3=A9ndez?= Date: Mon, 5 Feb 2024 20:12:18 -0600 Subject: [PATCH 2/2] Removed reorder-python-imports from pre-commit due to conflicts with black --- .pre-commit-config.yaml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 7c2d431..adde937 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -58,8 +58,3 @@ repos: hooks: - id: pyupgrade args: [--py312] - - - repo: https://github.com/asottile/reorder_python_imports - rev: v3.12.0 - hooks: - - id: reorder-python-imports