mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-15 12:08:17 -06:00
Use ISO 8601 format when displaying dates & times in a table
This commit is contained in:
parent
e104fab50b
commit
cdbb700c8f
@ -30,10 +30,10 @@ class UserTokenTable(NetBoxTable):
|
|||||||
write_enabled = columns.BooleanColumn(
|
write_enabled = columns.BooleanColumn(
|
||||||
verbose_name=_('Write Enabled')
|
verbose_name=_('Write Enabled')
|
||||||
)
|
)
|
||||||
created = columns.DateColumn(
|
created = columns.DateTimeColumn(
|
||||||
verbose_name=_('Created'),
|
verbose_name=_('Created'),
|
||||||
)
|
)
|
||||||
expires = columns.DateColumn(
|
expires = columns.DateTimeColumn(
|
||||||
verbose_name=_('Expires'),
|
verbose_name=_('Expires'),
|
||||||
)
|
)
|
||||||
last_used = columns.DateTimeColumn(
|
last_used = columns.DateTimeColumn(
|
||||||
|
@ -10,7 +10,6 @@ from django.db.models import DateField, DateTimeField
|
|||||||
from django.template import Context, Template
|
from django.template import Context, Template
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
from django.utils.dateparse import parse_date
|
from django.utils.dateparse import parse_date
|
||||||
from django.utils.formats import date_format
|
|
||||||
from django.utils.html import escape
|
from django.utils.html import escape
|
||||||
from django.utils.safestring import mark_safe
|
from django.utils.safestring import mark_safe
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
@ -52,18 +51,17 @@ __all__ = (
|
|||||||
#
|
#
|
||||||
|
|
||||||
@library.register
|
@library.register
|
||||||
class DateColumn(tables.DateColumn):
|
class DateColumn(tables.Column):
|
||||||
"""
|
"""
|
||||||
Overrides the default implementation of DateColumn to better handle null values, returning a default value for
|
Render a datetime.date in ISO 8601 format.
|
||||||
tables and null when exporting data. It is registered in the tables library to use this class instead of the
|
|
||||||
default, making this behavior consistent in all fields of type DateField.
|
|
||||||
"""
|
"""
|
||||||
def render(self, value):
|
def render(self, value):
|
||||||
if value:
|
if value:
|
||||||
return date_format(value, format="SHORT_DATE_FORMAT")
|
return value.isoformat()
|
||||||
|
|
||||||
def value(self, value):
|
def value(self, value):
|
||||||
return value
|
if value:
|
||||||
|
return value.isoformat()
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def from_field(cls, field, **kwargs):
|
def from_field(cls, field, **kwargs):
|
||||||
@ -72,16 +70,17 @@ class DateColumn(tables.DateColumn):
|
|||||||
|
|
||||||
|
|
||||||
@library.register
|
@library.register
|
||||||
class DateTimeColumn(tables.DateTimeColumn):
|
class DateTimeColumn(tables.Column):
|
||||||
"""
|
"""
|
||||||
Overrides the default implementation of DateTimeColumn to better handle null values, returning a default value for
|
Render a datetime.datetime in ISO 8601 format.
|
||||||
tables and null when exporting data. It is registered in the tables library to use this class instead of the
|
|
||||||
default, making this behavior consistent in all fields of type DateTimeField.
|
|
||||||
"""
|
"""
|
||||||
|
def render(self, value):
|
||||||
|
if value:
|
||||||
|
return f"{value.date().isoformat()} {value.time().isoformat(timespec='seconds')}"
|
||||||
|
|
||||||
def value(self, value):
|
def value(self, value):
|
||||||
if value:
|
if value:
|
||||||
return date_format(value, format="SHORT_DATETIME_FORMAT")
|
return value.isoformat(timespec='seconds')
|
||||||
return None
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def from_field(cls, field, **kwargs):
|
def from_field(cls, field, **kwargs):
|
||||||
@ -498,7 +497,7 @@ class CustomFieldColumn(tables.Column):
|
|||||||
if self.customfield.type == CustomFieldTypeChoices.TYPE_LONGTEXT and value:
|
if self.customfield.type == CustomFieldTypeChoices.TYPE_LONGTEXT and value:
|
||||||
return render_markdown(value)
|
return render_markdown(value)
|
||||||
if self.customfield.type == CustomFieldTypeChoices.TYPE_DATE and value:
|
if self.customfield.type == CustomFieldTypeChoices.TYPE_DATE and value:
|
||||||
return date_format(parse_date(value), format="SHORT_DATE_FORMAT")
|
return parse_date(value).isoformat()
|
||||||
if value is not None:
|
if value is not None:
|
||||||
obj = self.customfield.deserialize(value)
|
obj = self.customfield.deserialize(value)
|
||||||
return mark_safe(self._linkify_item(obj))
|
return mark_safe(self._linkify_item(obj))
|
||||||
|
Loading…
Reference in New Issue
Block a user