From be61e9dc3bde9f38f0edcfb0b77eb7e2bbcbdcbc Mon Sep 17 00:00:00 2001 From: Jan Pieter Waagmeester Date: Wed, 6 Nov 2024 11:36:47 +0100 Subject: [PATCH] more --- django_tables2/columns/base.py | 3 +-- django_tables2/columns/booleancolumn.py | 4 +--- django_tables2/columns/datecolumn.py | 4 +--- django_tables2/columns/datetimecolumn.py | 4 +--- django_tables2/columns/emailcolumn.py | 4 +--- django_tables2/columns/filecolumn.py | 3 +-- django_tables2/columns/jsoncolumn.py | 3 +-- django_tables2/columns/manytomanycolumn.py | 6 +++--- django_tables2/columns/templatecolumn.py | 5 +++-- django_tables2/columns/timecolumn.py | 2 +- django_tables2/columns/urlcolumn.py | 4 ++-- 11 files changed, 16 insertions(+), 26 deletions(-) diff --git a/django_tables2/columns/base.py b/django_tables2/columns/base.py index 8d37e629..f6c263bd 100644 --- a/django_tables2/columns/base.py +++ b/django_tables2/columns/base.py @@ -1,6 +1,5 @@ from collections import OrderedDict from itertools import islice -from typing import Self from django.core.exceptions import ImproperlyConfigured from django.urls import reverse @@ -400,7 +399,7 @@ def order(self, queryset, is_descending): return (queryset, False) @classmethod - def from_field(cls, field, **kwargs) -> Self | None: + def from_field(cls, field, **kwargs) -> "Column | None": """ Return a specialized column for the model field or `None`. diff --git a/django_tables2/columns/booleancolumn.py b/django_tables2/columns/booleancolumn.py index 36ea0fc5..8239e2de 100644 --- a/django_tables2/columns/booleancolumn.py +++ b/django_tables2/columns/booleancolumn.py @@ -1,5 +1,3 @@ -from typing import Self - from django.db import models from django.utils.html import escape, format_html from django.utils.safestring import SafeString @@ -60,7 +58,7 @@ def value(self, record, value, bound_column) -> str: return str(self._get_bool_value(record, value, bound_column)) @classmethod - def from_field(cls, field, **kwargs) -> Self | None: + def from_field(cls, field, **kwargs) -> "BooleanColumn | None": if isinstance(field, models.NullBooleanField): return cls(null=True, **kwargs) diff --git a/django_tables2/columns/datecolumn.py b/django_tables2/columns/datecolumn.py index 6a4a498c..40fba269 100644 --- a/django_tables2/columns/datecolumn.py +++ b/django_tables2/columns/datecolumn.py @@ -1,5 +1,3 @@ -from typing import Self - from django.db import models from .base import library @@ -25,6 +23,6 @@ def __init__(self, format=None, short=True, *args, **kwargs): super().__init__(template_code=template, *args, **kwargs) @classmethod - def from_field(cls, field, **kwargs) -> Self | None: + def from_field(cls, field, **kwargs) -> "DateColumn | None": if isinstance(field, models.DateField): return cls(**kwargs) diff --git a/django_tables2/columns/datetimecolumn.py b/django_tables2/columns/datetimecolumn.py index b881b086..a3bbd647 100644 --- a/django_tables2/columns/datetimecolumn.py +++ b/django_tables2/columns/datetimecolumn.py @@ -1,5 +1,3 @@ -from typing import Self - from django.db import models from .base import library @@ -25,6 +23,6 @@ def __init__(self, format=None, short=True, *args, **kwargs): super().__init__(template_code=template, *args, **kwargs) @classmethod - def from_field(cls, field, **kwargs) -> Self | None: + def from_field(cls, field, **kwargs) -> "DateTimeColumn | None": if isinstance(field, models.DateTimeField): return cls(**kwargs) diff --git a/django_tables2/columns/emailcolumn.py b/django_tables2/columns/emailcolumn.py index 05820307..a2371bcb 100644 --- a/django_tables2/columns/emailcolumn.py +++ b/django_tables2/columns/emailcolumn.py @@ -1,5 +1,3 @@ -from typing import Self - from django.db import models from .base import library @@ -37,6 +35,6 @@ def get_url(self, value) -> str: return f"mailto:{value}" @classmethod - def from_field(cls, field, **kwargs) -> Self | None: + def from_field(cls, field, **kwargs) -> "EmailColumn | None": if isinstance(field, models.EmailField): return cls(**kwargs) diff --git a/django_tables2/columns/filecolumn.py b/django_tables2/columns/filecolumn.py index 5dc2f649..14088c14 100644 --- a/django_tables2/columns/filecolumn.py +++ b/django_tables2/columns/filecolumn.py @@ -1,5 +1,4 @@ import os -from typing import Self from django.db import models from django.utils.html import format_html @@ -82,6 +81,6 @@ def render(self, record, value) -> SafeString: ) @classmethod - def from_field(cls, field, **kwargs) -> Self | None: + def from_field(cls, field, **kwargs) -> "FileColumn | None": if isinstance(field, models.FileField): return cls(**kwargs) diff --git a/django_tables2/columns/jsoncolumn.py b/django_tables2/columns/jsoncolumn.py index 54e5a6af..ccfd847c 100644 --- a/django_tables2/columns/jsoncolumn.py +++ b/django_tables2/columns/jsoncolumn.py @@ -1,5 +1,4 @@ import json -from typing import Self from django.db.models import JSONField from django.utils.html import format_html @@ -48,6 +47,6 @@ def render(self, record, value) -> SafeString: ) @classmethod - def from_field(cls, field, **kwargs) -> Self | None: + def from_field(cls, field, **kwargs) -> "JSONColumn | None": if isinstance(field, (JSONField, HStoreField)): return cls(**kwargs) diff --git a/django_tables2/columns/manytomanycolumn.py b/django_tables2/columns/manytomanycolumn.py index ba9c0240..fb44543e 100644 --- a/django_tables2/columns/manytomanycolumn.py +++ b/django_tables2/columns/manytomanycolumn.py @@ -1,7 +1,7 @@ from django.db import models from django.utils.encoding import force_str from django.utils.html import conditional_escape -from django.utils.safestring import mark_safe +from django.utils.safestring import SafeString, mark_safe from .base import Column, LinkTransform, library @@ -84,7 +84,7 @@ def filter(self, qs): """ return qs.all() - def render(self, value): + def render(self, value) -> SafeString: items = [] for item in self.filter(value): content = conditional_escape(self.transform(item)) @@ -96,6 +96,6 @@ def render(self, value): return mark_safe(conditional_escape(self.separator).join(items)) @classmethod - def from_field(cls, field, **kwargs): + def from_field(cls, field, **kwargs) -> "ManyToManyColumn | None": if isinstance(field, models.ManyToManyField): return cls(**kwargs) diff --git a/django_tables2/columns/templatecolumn.py b/django_tables2/columns/templatecolumn.py index ddddc24a..3c7e3b29 100644 --- a/django_tables2/columns/templatecolumn.py +++ b/django_tables2/columns/templatecolumn.py @@ -1,6 +1,7 @@ from django.template import Context, Template from django.template.loader import get_template from django.utils.html import strip_tags +from django.utils.safestring import SafeString from .base import Column, library @@ -49,7 +50,7 @@ def __init__(self, template_code=None, template_name=None, extra_context=None, * if not self.template_code and not self.template_name: raise ValueError("A template must be provided") - def render(self, record, table, value, bound_column, **kwargs): + def render(self, record, table, value, bound_column, **kwargs) -> SafeString: # If the table is being rendered using `render_table`, it hackily # attaches the context to the table as a gift to `TemplateColumn`. context = getattr(table, "context", Context()) @@ -67,7 +68,7 @@ def render(self, record, table, value, bound_column, **kwargs): else: return get_template(self.template_name).render(context.flatten()) - def value(self, **kwargs): + def value(self, **kwargs) -> str: """ The value returned from a call to `value()` on a `TemplateColumn` is the rendered template with `django.utils.html.strip_tags` applied. diff --git a/django_tables2/columns/timecolumn.py b/django_tables2/columns/timecolumn.py index b4564fc2..0f2aed4a 100644 --- a/django_tables2/columns/timecolumn.py +++ b/django_tables2/columns/timecolumn.py @@ -21,6 +21,6 @@ def __init__(self, format=None, *args, **kwargs): super().__init__(template_code=template, *args, **kwargs) @classmethod - def from_field(cls, field, **kwargs): + def from_field(cls, field, **kwargs) -> "TimeColumn | None": if isinstance(field, models.TimeField): return cls(**kwargs) diff --git a/django_tables2/columns/urlcolumn.py b/django_tables2/columns/urlcolumn.py index 69a49777..c6c39464 100644 --- a/django_tables2/columns/urlcolumn.py +++ b/django_tables2/columns/urlcolumn.py @@ -24,10 +24,10 @@ class URLColumn(BaseLinkColumn): 'http://google.com' """ - def get_url(self, value): + def get_url(self, value: str) -> str: return value @classmethod - def from_field(cls, field, **kwargs): + def from_field(cls, field, **kwargs) -> "URLColumn | None": if isinstance(field, models.URLField): return cls(**kwargs)