code quality

This commit is contained in:
bkfox
2023-03-13 17:47:00 +01:00
parent 934817da8a
commit 112770eddf
162 changed files with 4798 additions and 4069 deletions

View File

@ -1,50 +1,61 @@
import datetime
from django.utils.safestring import mark_safe
from django.urls.converters import StringConverter
from django.utils.safestring import mark_safe
from .utils import str_to_date
__all__ = ("PagePathConverter", "WeekConverter", "DateConverter")
class PagePathConverter(StringConverter):
""" Match path for pages, including surrounding slashes. """
regex = r'/?|([-_a-zA-Z0-9]+/)*?'
"""Match path for pages, including surrounding slashes."""
regex = r"/?|([-_a-zA-Z0-9]+/)*?"
def to_python(self, value):
if not value or value[0] != '/':
value = '/' + value
if len(value) > 1 and value[-1] != '/':
value = value + '/'
if not value or value[0] != "/":
value = "/" + value
if len(value) > 1 and value[-1] != "/":
value = value + "/"
return value
def to_url(self, value):
if value[0] == '/':
if value[0] == "/":
value = value[1:]
if value[-1] != '/':
value = value + '/'
if value[-1] != "/":
value = value + "/"
return mark_safe(value)
class WeekConverter:
""" Converter for date as YYYYY/WW """
regex = r'[0-9]{4}/[0-9]{2}'
"""Converter for date as YYYYY/WW."""
regex = r"[0-9]{4}/[0-9]{2}"
def to_python(self, value):
return datetime.datetime.strptime(value + '/1', '%G/%V/%u').date()
return datetime.datetime.strptime(value + "/1", "%G/%V/%u").date()
def to_url(self, value):
return value if isinstance(value, str) else \
'{:04d}/{:02d}'.format(*value.isocalendar())
return (
value
if isinstance(value, str)
else "{:04d}/{:02d}".format(*value.isocalendar())
)
class DateConverter:
""" Converter for date as YYYY/MM/DD """
regex = r'[0-9]{4}/[0-9]{2}/[0-9]{2}'
"""Converter for date as YYYY/MM/DD."""
regex = r"[0-9]{4}/[0-9]{2}/[0-9]{2}"
def to_python(self, value):
value = value.split('/')[:3]
value = value.split("/")[:3]
return datetime.date(int(value[0]), int(value[1]), int(value[2]))
def to_url(self, value):
return value if isinstance(value, str) else \
'{:04d}/{:02d}/{:02d}'.format(value.year, value.month, value.day)
return (
value
if isinstance(value, str)
else "{:04d}/{:02d}/{:02d}".format(
value.year, value.month, value.day
)
)