SealedDate renames, pt. 1

• SealedDateField      -> PartialDateModel
• SealedDateFormField  -> PartialDateFormField
• SealedDateDescriptor -> PartialDateDescriptor
This commit is contained in:
Adeodato Simó 2023-11-09 13:19:18 -03:00
parent c120fa8c87
commit 0e4c5ed439
No known key found for this signature in database
GPG key ID: CDF447845F1A986F
3 changed files with 13 additions and 12 deletions

View file

@ -22,7 +22,7 @@ from bookwyrm.connectors import get_image
from bookwyrm.utils.sanitizer import clean from bookwyrm.utils.sanitizer import clean
from bookwyrm.utils.sealed_date import ( from bookwyrm.utils.sealed_date import (
SealedDate, SealedDate,
SealedDateField, PartialDateModel,
from_partial_isoformat, from_partial_isoformat,
) )
from bookwyrm.settings import MEDIA_FULL_URL from bookwyrm.settings import MEDIA_FULL_URL
@ -553,7 +553,7 @@ class DateTimeField(ActivitypubFieldMixin, models.DateTimeField):
return None return None
class PartialDateField(ActivitypubFieldMixin, SealedDateField): class PartialDateField(ActivitypubFieldMixin, PartialDateModel):
"""activitypub-aware partial date field""" """activitypub-aware partial date field"""
def field_to_activity(self, value) -> str: def field_to_activity(self, value) -> str:

View file

@ -98,14 +98,14 @@ class SealedDateTest(unittest.TestCase):
) )
class SealedDateFormFieldTest(unittest.TestCase): class PartialDateFormFieldTest(unittest.TestCase):
"""test form support for SealedDate objects""" """test form support for SealedDate objects"""
# pylint: disable=missing-function-docstring # pylint: disable=missing-function-docstring
def setUp(self): def setUp(self):
self._dt = datetime.datetime(2022, 11, 21, 17, 1, 0, tzinfo=timezone.utc) self._dt = datetime.datetime(2022, 11, 21, 17, 1, 0, tzinfo=timezone.utc)
self.field = sealed_date.SealedDateFormField() self.field = sealed_date.PartialDateFormField()
def test_prepare_value(self): def test_prepare_value(self):
sealed = sealed_date.SealedDate.from_datetime(self._dt) sealed = sealed_date.SealedDate.from_datetime(self._dt)

View file

@ -16,6 +16,7 @@ from django.utils import timezone
__all__ = [ __all__ = [
"SealedDate", "SealedDate",
"PartialDateModel",
"from_partial_isoformat", "from_partial_isoformat",
] ]
@ -25,7 +26,7 @@ _westmost_tz = timezone.get_fixed_timezone(timedelta(hours=-12))
Sealed = TypeVar("Sealed", bound="SealedDate") # TODO: use Self in Python >= 3.11 Sealed = TypeVar("Sealed", bound="SealedDate") # TODO: use Self in Python >= 3.11
# TODO: migrate SealedDate: `datetime` => `date` # TODO: migrate SealedDate: `datetime` => `date`
# TODO: migrate SealedDateField: `DateTimeField` => `DateField` # TODO: migrate PartialDateModel: `DateTimeField` => `DateField`
class SealedDate(datetime): class SealedDate(datetime):
@ -111,7 +112,7 @@ def from_partial_isoformat(value: str) -> SealedDate:
return SealedDate.from_date_parts(year, month, day) return SealedDate.from_date_parts(year, month, day)
class SealedDateFormField(DateField): class PartialDateFormField(DateField):
"""date form field with support for SealedDate""" """date form field with support for SealedDate"""
def prepare_value(self, value: Any) -> str: def prepare_value(self, value: Any) -> str:
@ -152,10 +153,10 @@ _SetType = datetime
_GetType = Optional[SealedDate] _GetType = Optional[SealedDate]
class SealedDateDescriptor: class PartialDateDescriptor:
"""descriptor for SealedDateField. """descriptor for PartialDateModel.
Encapsulates the "two columns, one field" for SealedDateField. Encapsulates the "two columns, one field" for PartialDateModel.
""" """
_SEAL_TYPES: dict[Type[_SetType], str] = { _SEAL_TYPES: dict[Type[_SetType], str] = {
@ -214,13 +215,13 @@ class SealedDateDescriptor:
return [("DAY", "Day seal"), ("MONTH", "Month seal"), ("YEAR", "Year seal")] return [("DAY", "Day seal"), ("MONTH", "Month seal"), ("YEAR", "Year seal")]
class SealedDateField(models.DateTimeField): # type: ignore class PartialDateModel(models.DateTimeField): # type: ignore
"""a date field for Django models, using SealedDate as values""" """a date field for Django models, using SealedDate as values"""
descriptor_class = SealedDateDescriptor descriptor_class = PartialDateDescriptor
def formfield(self, **kwargs): # type: ignore def formfield(self, **kwargs): # type: ignore
kwargs.setdefault("form_class", SealedDateFormField) kwargs.setdefault("form_class", PartialDateFormField)
return super().formfield(**kwargs) return super().formfield(**kwargs)
# pylint: disable-next=arguments-renamed # pylint: disable-next=arguments-renamed