summaryrefslogtreecommitdiffstats
path: root/glances/plugins/now/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'glances/plugins/now/__init__.py')
-rw-r--r--glances/plugins/now/__init__.py50
1 files changed, 37 insertions, 13 deletions
diff --git a/glances/plugins/now/__init__.py b/glances/plugins/now/__init__.py
index 49f90228..3f997b71 100644
--- a/glances/plugins/now/__init__.py
+++ b/glances/plugins/now/__init__.py
@@ -2,7 +2,7 @@
#
# This file is part of Glances.
#
-# SPDX-FileCopyrightText: 2022 Nicolas Hennion <nicolas@nicolargo.com>
+# SPDX-FileCopyrightText: 2024 Nicolas Hennion <nicolas@nicolargo.com>
#
# SPDX-License-Identifier: LGPL-3.0-only
#
@@ -10,18 +10,42 @@
"""Now (current date) plugin."""
from time import tzname, strftime
+import datetime
from glances.plugins.plugin.model import GlancesPluginModel
+# Fields description
+# description: human readable description
+# short_name: shortname to use un UI
+# unit: unit type
+# rate: if True then compute and add *_gauge and *_rate_per_is fields
+# min_symbol: Auto unit should be used if value > than 1 'X' (K, M, G)...
+fields_description = {
+ 'custom': {
+ 'description': 'Current date in custom format.'
+ },
+ 'iso': {
+ 'description': 'Current date in ISO 8601 format.'
+ }
+}
+
class PluginModel(GlancesPluginModel):
"""Plugin to get the current date/time.
- stats is (string)
+ stats is a dict:
+ {
+ "custom": "2024-04-27 16:43:52 CEST",
+ "iso": "2024-04-27T16:28:23.382748"
+ }
"""
def __init__(self, args=None, config=None):
"""Init the plugin."""
- super(PluginModel, self).__init__(args=args, config=config)
+ super(PluginModel, self).__init__(
+ args=args,
+ config=config,
+ fields_description=fields_description,
+ stats_init_value={})
# We want to display the stat in the curse interface
self.display_curse = True
@@ -35,23 +59,23 @@ class PluginModel(GlancesPluginModel):
if 'global' in config.as_dict():
self.strftime = config.as_dict()['global']['strftime_format']
- def reset(self):
- """Reset/init the stats."""
- self.stats = ''
-
def update(self):
"""Update current date/time."""
- # Had to convert it to string because datetime is not JSON serializable
- # Add the time zone (issue #1249 / #1337 / #1598)
+ stats = self.get_init_value()
+
+ # Start with the ISO format
+ stats['iso'] = datetime.datetime.now().astimezone().replace(microsecond=0).isoformat()
+ # Then the custom
if self.strftime:
- self.stats = strftime(self.strftime)
+ stats['custom'] = strftime(self.strftime)
else:
if len(tzname[1]) > 6:
- self.stats = strftime('%Y-%m-%d %H:%M:%S %z')
+ stats['custom'] = strftime('%Y-%m-%d %H:%M:%S %z')
else:
- self.stats = strftime('%Y-%m-%d %H:%M:%S %Z')
+ stats['custom'] = strftime('%Y-%m-%d %H:%M:%S %Z')
+ self.stats = stats
return self.stats
def msg_curse(self, args=None, max_width=None):
@@ -64,7 +88,7 @@ class PluginModel(GlancesPluginModel):
# Build the string message
# 23 is the padding for the process list
- msg = '{:23}'.format(self.stats)
+ msg = '{:23}'.format(self.stats['custom'])
ret.append(self.curse_add_line(msg))
return ret