]> Frank Brehm's Git Trees - pixelpark/puppetmaster-webhooks.git/commitdiff
Adding parameter add_direction to function format_timedelta_list()
authorFrank Brehm <frank.brehm@pixelpark.com>
Wed, 9 Oct 2019 09:28:09 +0000 (11:28 +0200)
committerFrank Brehm <frank.brehm@pixelpark.com>
Wed, 9 Oct 2019 09:28:09 +0000 (11:28 +0200)
lib/webhooks/xlate.py
locale/de_DE/LC_MESSAGES/puppetmaster_webhooks.po
locale/en_US/LC_MESSAGES/puppetmaster_webhooks.po
locale/puppetmaster_webhooks.pot
test/test_xlate.py

index 3353da2348d1462d166572486278297b34db4992..24951b6041e3afa436dd388e69f6f6255ec95222 100644 (file)
@@ -32,7 +32,7 @@ DOMAIN = 'puppetmaster_webhooks'
 
 LOG = logging.getLogger(__name__)
 
-__version__ = '1.2.1'
+__version__ = '1.2.2'
 
 __me__ = Path(__file__).resolve()
 __module_dir__ = __me__.parent
@@ -86,7 +86,7 @@ ngettext = XLATOR.ngettext
 
 
 # =============================================================================
-def format_timedelta_list(delta, granularity='second', locale=LC_TIME):
+def format_timedelta_list(delta, granularity='second', add_direction=False, locale=LC_TIME):
     """Return a time delta according to the rules of the given locale."""
 
     units = map(lambda x: x[0], TIMEDELTA_UNITS)
@@ -99,6 +99,10 @@ def format_timedelta_list(delta, granularity='second', locale=LC_TIME):
         seconds = int((delta.days * 86400) + delta.seconds)
     else:
         seconds = delta
+    in_past = False
+    if seconds < 0:
+        in_past = True
+        seconds = abs(seconds)
     loc_obj = Locale.parse(locale)
 
     part_list = []
@@ -147,8 +151,8 @@ def format_timedelta_list(delta, granularity='second', locale=LC_TIME):
             if granularity == unit:
                 include = True
             continue
-        value = int(abs(cur_value) / subunits)
-        rest = int(abs(cur_value) % subunits)
+        value = int(cur_value / subunits)
+        rest = int(cur_value % subunits)
 #        LOG.debug("Value: {v!r}, rest: {r!r}.".format(v=value, r=rest))
         last_unit = TIMEDELTA_UNITS[i-2][0]
 #        LOG.debug("Last unit: {!r}".format(last_unit))
@@ -172,8 +176,16 @@ def format_timedelta_list(delta, granularity='second', locale=LC_TIME):
     if not part_list:
         return ''
     part_list.reverse()
-    return format_list(part_list, locale=locale)
+    ret = format_list(part_list, locale=locale)
 
+    if not add_direction:
+        return ret
+
+    if in_past:
+        ret = xlator.gettext("{} ago").format(ret)
+    else:
+        ret = xlator.gettext("in {}").format(ret)
+    return ret
 
 # =============================================================================
 if __name__ == "__main__":
index 323c9900bfff037560e6302ccc4b8d7f1d8d88ca..b617980200b906bde6031367c7349591fc7652ca 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: puppetmaster_webhooks 1.5.4\n"
 "Report-Msgid-Bugs-To: frank.brehm@pixelpark.com\n"
-"POT-Creation-Date: 2019-10-09 11:06+0200\n"
+"POT-Creation-Date: 2019-10-09 11:26+0200\n"
 "PO-Revision-Date: 2019-10-07 18:40+0100\n"
 "Last-Translator: Frank Brehm <frank.brehm@pixelpark.com>\n"
 "Language: de_DE\n"
@@ -992,63 +992,71 @@ msgid_plural "Found total {sb}{nr} modules{eb}."
 msgstr[0] "Insgesamt {sb}ein Modul{eb} gefunden."
 msgstr[1] "Insgesamt {sb}{nr} Module{eb} gefunden."
 
-#: lib/webhooks/xlate.py:94 lib/webhooks/xlate.py:127
+#: lib/webhooks/xlate.py:94 lib/webhooks/xlate.py:131
 msgid "Wrong value {v!r} for parameter {p!r} of function {f}()."
 msgstr "Falscher Wert {v!r} für Parameter {p!r} der Funktion {f}()."
 
-#: lib/webhooks/xlate.py:115
+#: lib/webhooks/xlate.py:119
 msgid "second"
 msgid_plural "seconds"
 msgstr[0] "Sekunde"
 msgstr[1] "Sekunden"
 
-#: lib/webhooks/xlate.py:117
+#: lib/webhooks/xlate.py:121
 msgid "minute"
 msgid_plural "minutes"
 msgstr[0] "Minute"
 msgstr[1] "Minuten"
 
-#: lib/webhooks/xlate.py:119
+#: lib/webhooks/xlate.py:123
 msgid "hour"
 msgid_plural "hours"
 msgstr[0] "Stunde"
 msgstr[1] "Stunden"
 
-#: lib/webhooks/xlate.py:121
+#: lib/webhooks/xlate.py:125
 msgid "day"
 msgid_plural "days"
 msgstr[0] "Tag"
 msgstr[1] "Tage"
 
-#: lib/webhooks/xlate.py:123
+#: lib/webhooks/xlate.py:127
 msgid "month"
 msgid_plural "months"
 msgstr[0] "Monat"
 msgstr[1] "Monate"
 
-#: lib/webhooks/xlate.py:125
+#: lib/webhooks/xlate.py:129
 msgid "year"
 msgid_plural "years"
 msgstr[0] "Jahr"
 msgstr[1] "Jahre"
 
-#: lib/webhooks/xlate.py:181
+#: lib/webhooks/xlate.py:185
+msgid "{} ago"
+msgstr "vor {}"
+
+#: lib/webhooks/xlate.py:187
+msgid "in {}"
+msgstr "in {}"
+
+#: lib/webhooks/xlate.py:193
 msgid "Module directory: {!r}"
 msgstr "Modul-Verzeichnis: {!r}"
 
-#: lib/webhooks/xlate.py:182
+#: lib/webhooks/xlate.py:194
 msgid "Base directory: {!r}"
 msgstr "Basis-Verzeichnis: {!r}"
 
-#: lib/webhooks/xlate.py:183
+#: lib/webhooks/xlate.py:195
 msgid "Locale directory: {!r}"
 msgstr "Verzeichnis für Locales: {!r}"
 
-#: lib/webhooks/xlate.py:184
+#: lib/webhooks/xlate.py:196
 msgid "Locale domain: {!r}"
 msgstr "Locale-Domäne: {!r}"
 
-#: lib/webhooks/xlate.py:185
+#: lib/webhooks/xlate.py:197
 msgid "Found .mo-file: {!r}"
 msgstr "Gefundene .mo-Datei: {!r}"
 
index a309fc4596787c9ef9b2618fbeeadb4045e338b0..58b6e6106ae5a88d02b8867b5d0f22fe34ed39e8 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: puppetmaster_webhooks 1.3.1\n"
 "Report-Msgid-Bugs-To: frank.brehm@pixelpark.com\n"
-"POT-Creation-Date: 2019-10-09 11:06+0200\n"
+"POT-Creation-Date: 2019-10-09 11:26+0200\n"
 "PO-Revision-Date: 2019-10-09 11:20+0100\n"
 "Last-Translator: Frank Brehm <frank.brehm@pixelpark.com>\n"
 "Language: en_US\n"
@@ -959,63 +959,71 @@ msgid_plural "Found total {sb}{nr} modules{eb}."
 msgstr[0] ""
 msgstr[1] ""
 
-#: lib/webhooks/xlate.py:94 lib/webhooks/xlate.py:127
+#: lib/webhooks/xlate.py:94 lib/webhooks/xlate.py:131
 msgid "Wrong value {v!r} for parameter {p!r} of function {f}()."
 msgstr ""
 
-#: lib/webhooks/xlate.py:115
+#: lib/webhooks/xlate.py:119
 msgid "second"
 msgid_plural "seconds"
 msgstr[0] ""
 msgstr[1] ""
 
-#: lib/webhooks/xlate.py:117
+#: lib/webhooks/xlate.py:121
 msgid "minute"
 msgid_plural "minutes"
 msgstr[0] ""
 msgstr[1] ""
 
-#: lib/webhooks/xlate.py:119
+#: lib/webhooks/xlate.py:123
 msgid "hour"
 msgid_plural "hours"
 msgstr[0] ""
 msgstr[1] ""
 
-#: lib/webhooks/xlate.py:121
+#: lib/webhooks/xlate.py:125
 msgid "day"
 msgid_plural "days"
 msgstr[0] ""
 msgstr[1] ""
 
-#: lib/webhooks/xlate.py:123
+#: lib/webhooks/xlate.py:127
 msgid "month"
 msgid_plural "months"
 msgstr[0] ""
 msgstr[1] ""
 
-#: lib/webhooks/xlate.py:125
+#: lib/webhooks/xlate.py:129
 msgid "year"
 msgid_plural "years"
 msgstr[0] ""
 msgstr[1] ""
 
-#: lib/webhooks/xlate.py:181
+#: lib/webhooks/xlate.py:185
+msgid "{} ago"
+msgstr ""
+
+#: lib/webhooks/xlate.py:187
+msgid "in {}"
+msgstr ""
+
+#: lib/webhooks/xlate.py:193
 msgid "Module directory: {!r}"
 msgstr ""
 
-#: lib/webhooks/xlate.py:182
+#: lib/webhooks/xlate.py:194
 msgid "Base directory: {!r}"
 msgstr ""
 
-#: lib/webhooks/xlate.py:183
+#: lib/webhooks/xlate.py:195
 msgid "Locale directory: {!r}"
 msgstr ""
 
-#: lib/webhooks/xlate.py:184
+#: lib/webhooks/xlate.py:196
 msgid "Locale domain: {!r}"
 msgstr ""
 
-#: lib/webhooks/xlate.py:185
+#: lib/webhooks/xlate.py:197
 msgid "Found .mo-file: {!r}"
 msgstr ""
 
index 53e857b978fa2eeeb765a214302c32c50505ee23..bec6a360341a806980729504c2b81b69440d6a02 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: puppetmaster_webhooks 1.7.3\n"
 "Report-Msgid-Bugs-To: frank.brehm@pixelpark.com\n"
-"POT-Creation-Date: 2019-10-09 11:06+0200\n"
+"POT-Creation-Date: 2019-10-09 11:26+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <frank.brehm@pixelpark.com>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -958,63 +958,71 @@ msgid_plural "Found total {sb}{nr} modules{eb}."
 msgstr[0] ""
 msgstr[1] ""
 
-#: lib/webhooks/xlate.py:94 lib/webhooks/xlate.py:127
+#: lib/webhooks/xlate.py:94 lib/webhooks/xlate.py:131
 msgid "Wrong value {v!r} for parameter {p!r} of function {f}()."
 msgstr ""
 
-#: lib/webhooks/xlate.py:115
+#: lib/webhooks/xlate.py:119
 msgid "second"
 msgid_plural "seconds"
 msgstr[0] ""
 msgstr[1] ""
 
-#: lib/webhooks/xlate.py:117
+#: lib/webhooks/xlate.py:121
 msgid "minute"
 msgid_plural "minutes"
 msgstr[0] ""
 msgstr[1] ""
 
-#: lib/webhooks/xlate.py:119
+#: lib/webhooks/xlate.py:123
 msgid "hour"
 msgid_plural "hours"
 msgstr[0] ""
 msgstr[1] ""
 
-#: lib/webhooks/xlate.py:121
+#: lib/webhooks/xlate.py:125
 msgid "day"
 msgid_plural "days"
 msgstr[0] ""
 msgstr[1] ""
 
-#: lib/webhooks/xlate.py:123
+#: lib/webhooks/xlate.py:127
 msgid "month"
 msgid_plural "months"
 msgstr[0] ""
 msgstr[1] ""
 
-#: lib/webhooks/xlate.py:125
+#: lib/webhooks/xlate.py:129
 msgid "year"
 msgid_plural "years"
 msgstr[0] ""
 msgstr[1] ""
 
-#: lib/webhooks/xlate.py:181
+#: lib/webhooks/xlate.py:185
+msgid "{} ago"
+msgstr ""
+
+#: lib/webhooks/xlate.py:187
+msgid "in {}"
+msgstr ""
+
+#: lib/webhooks/xlate.py:193
 msgid "Module directory: {!r}"
 msgstr ""
 
-#: lib/webhooks/xlate.py:182
+#: lib/webhooks/xlate.py:194
 msgid "Base directory: {!r}"
 msgstr ""
 
-#: lib/webhooks/xlate.py:183
+#: lib/webhooks/xlate.py:195
 msgid "Locale directory: {!r}"
 msgstr ""
 
-#: lib/webhooks/xlate.py:184
+#: lib/webhooks/xlate.py:196
 msgid "Locale domain: {!r}"
 msgstr ""
 
-#: lib/webhooks/xlate.py:185
+#: lib/webhooks/xlate.py:197
 msgid "Found .mo-file: {!r}"
 msgstr ""
 
index b3c4fd2bd1cd857021c1647836aef3f60e54727b..becc65c52c285774dfc1fe6d2cc4b0fad04e0f86 100755 (executable)
@@ -91,6 +91,26 @@ class TestXlate(WebHooksTestcase):
             result = format_timedelta_list(secs, granularity=gran, locale=locale)
             self.assertEqual(expected, result)
 
+        test_data = (
+            (3600, 'second', 'in 1 hour', 'en_US.utf8'),
+            (3600, 'second', 'in 1 Stunde', 'de_DE.utf8'),
+            (-3600, 'second', '1 hour ago', 'en_US.utf8'),
+            (-3600, 'second', 'vor 1 Stunde', 'de_DE.utf8'),
+        )
+
+        for pair in test_data:
+            secs = pair[0]
+            gran = pair[1]
+            expected = pair[2]
+            locale = pair[3]
+
+            LOG.debug("Testing {s} secs, granularity {g!r} => {e!r}, locale {l!r}.".format(
+                s=secs, g=gran, e=expected, l=locale))
+
+            result = format_timedelta_list(
+                secs, granularity=gran, add_direction=True, locale=locale)
+            self.assertEqual(expected, result)
+
 
 # =============================================================================