diff --git a/netbox/templates/account/profile.html b/netbox/templates/account/profile.html index 53122168f..e5a2c3d78 100644 --- a/netbox/templates/account/profile.html +++ b/netbox/templates/account/profile.html @@ -31,11 +31,19 @@
{% trans "Created" %} | -{{ object.created|annotated_date }} | +{{ object.created|isodatetime }} |
---|---|---|
{% trans "Scheduled" %} | - {{ object.scheduled|annotated_date|placeholder }} + {{ object.scheduled|isodatetime|placeholder }} {% if object.interval %} ({% blocktrans with interval=object.interval %}every {{ interval }} minutes{% endblocktrans %}) {% endif %} @@ -62,11 +62,11 @@ | |
{% trans "Started" %} | -{{ object.started|annotated_date|placeholder }} | +{{ object.started|isodatetime|placeholder }} |
{% trans "Completed" %} | -{{ object.completed|annotated_date|placeholder }} | +{{ object.completed|isodatetime|placeholder }} |
{% if job.started %} - {% trans "Started" %}: {{ job.started|annotated_date }} + {% trans "Started" %}: {{ job.started|isodatetime }} {% elif job.scheduled %} - {% trans "Scheduled for" %}: {{ job.scheduled|annotated_date }} ({{ job.scheduled|naturaltime }}) + {% trans "Scheduled for" %}: {{ job.scheduled|isodatetime }} ({{ job.scheduled|naturaltime }}) {% else %} - {% trans "Created" %}: {{ job.created|annotated_date }} + {% trans "Created" %}: {{ job.created|isodatetime }} {% endif %} {% if job.completed %} {% trans "Duration" %}: {{ job.duration }} diff --git a/netbox/templates/extras/journalentry.html b/netbox/templates/extras/journalentry.html index 7a4c06b25..29c0a263c 100644 --- a/netbox/templates/extras/journalentry.html +++ b/netbox/templates/extras/journalentry.html @@ -20,7 +20,7 @@
{% trans "Time" %} | -- {{ object.time|annotated_date }} - | +{{ object.time|isodatetime }} | |
---|---|---|---|
{% trans "User" %} | diff --git a/netbox/templates/extras/script_list.html b/netbox/templates/extras/script_list.html index dc7a168f8..7ce5ca6eb 100644 --- a/netbox/templates/extras/script_list.html +++ b/netbox/templates/extras/script_list.html @@ -67,7 +67,7 @@{{ script.description|markdown|placeholder }} | {% if last_job %}- {{ last_job.created|annotated_date }} + {{ last_job.created|isodatetime }} |
{% badge last_job.get_status_display last_job.get_status_color %}
diff --git a/netbox/templates/extras/script_result.html b/netbox/templates/extras/script_result.html
index 276e2562a..ee1127c8a 100644
--- a/netbox/templates/extras/script_result.html
+++ b/netbox/templates/extras/script_result.html
@@ -17,7 +17,7 @@
- {% trans "Created" %} {{ object.created|annotated_date }}
+ {% trans "Created" %} {{ object.created|isodatetime:"minutes" }}
{% if object.last_updated %}
·
- {% trans "Updated" %} {{ object.last_updated|timesince }} {% trans "ago" %}
+ {% trans "Updated" %}
+
+ {{ object.last_updated|timesince }}
+
+ {% trans "ago" %}
{% endif %}
{% endblock subtitle %}
diff --git a/netbox/templates/ipam/aggregate.html b/netbox/templates/ipam/aggregate.html
index 6819e5448..a6415463e 100644
--- a/netbox/templates/ipam/aggregate.html
+++ b/netbox/templates/ipam/aggregate.html
@@ -37,7 +37,7 @@
|
{% trans "Date Added" %} | -{{ object.date_added|annotated_date|placeholder }} | +{{ object.date_added|isodate|placeholder }} | |
{% trans "Description" %} | diff --git a/netbox/templates/users/token.html b/netbox/templates/users/token.html index 2d1858323..d576c1811 100644 --- a/netbox/templates/users/token.html +++ b/netbox/templates/users/token.html @@ -33,15 +33,24 @@|||
{% trans "Created" %} | -{{ object.created|annotated_date }} | +{{ object.created|isodatetime }} | |
{% trans "Expires" %} | -{{ object.expires|placeholder }} | +{{ object.expires|isodatetime }} | |
{% trans "Last used" %} | -{{ object.last_used|placeholder }} | ++ {% if object.last_used %} + + {{ object.last_used|timesince }} + + {% trans "ago" %} + {% else %} + {{ ''|placeholder }} + {% endif %} + | |
{% trans "Allowed IPs" %} | diff --git a/netbox/templates/users/user.html b/netbox/templates/users/user.html index 0dd12fb52..a408025c3 100644 --- a/netbox/templates/users/user.html +++ b/netbox/templates/users/user.html @@ -27,11 +27,19 @@|||
{% trans "Account Created" %} | -{{ object.date_joined|annotated_date }} | +{{ object.date_joined|isodate }} | |
{% trans "Last Login" %} | -{{ object.last_login|annotated_date }} | ++ {% if object.last_login %} + + {{ object.last_login|timesince }} {% trans "ago" %} + + {% else %} + {{ ''|placeholder }} + {% endif %} + | |
{% trans "Active" %} | diff --git a/netbox/utilities/templates/builtins/customfield_value.html b/netbox/utilities/templates/builtins/customfield_value.html index 6091fd411..462e62b86 100644 --- a/netbox/utilities/templates/builtins/customfield_value.html +++ b/netbox/utilities/templates/builtins/customfield_value.html @@ -9,9 +9,9 @@ {% elif customfield.type == 'boolean' and value == False %} {% checkmark value false="False" %} {% elif customfield.type == 'date' and value %} - {{ value|annotated_date }} + {{ value|isodate }} {% elif customfield.type == 'datetime' and value %} - {{ value|annotated_date }} + {{ value|isodate }} {{ value|isodatetime }} {% elif customfield.type == 'url' and value %} {{ value|truncatechars:70 }} {% elif customfield.type == 'json' and value %} diff --git a/netbox/utilities/templatetags/builtins/filters.py b/netbox/utilities/templatetags/builtins/filters.py index 3d7cfec2f..50c525543 100644 --- a/netbox/utilities/templatetags/builtins/filters.py +++ b/netbox/utilities/templatetags/builtins/filters.py @@ -20,6 +20,9 @@ __all__ = ( 'content_type', 'content_type_id', 'fgcolor', + 'isodate', + 'isodatetime', + 'isotime', 'linkify', 'meta', 'placeholder', @@ -202,3 +205,32 @@ def render_yaml(value): {{ data_dict|yaml }} """ return yaml.dump(json.loads(json.dumps(value))) + + +# +# Time & date +# + +@register.filter() +def isodate(value): + if type(value) is datetime.date: + return value.isoformat() + if type(value) is datetime.datetime: + return value.date().isoformat() + return '' + + +@register.filter() +def isotime(value, spec='seconds'): + if type(value) is datetime.time: + return value.isoformat(timespec=spec) + if type(value) is datetime.datetime: + return value.time().isoformat(timespec=spec) + return '' + + +@register.filter() +def isodatetime(value, spec='seconds'): + if type(value) is datetime.datetime: + return f'{isodate(value)} {isotime(value, spec=spec)}' + return ''