]> Frank Brehm's Git Trees - pixelpark/puppetmaster-webhooks.git/commitdiff
Including last update date on Forge in module information
authorFrank Brehm <frank.brehm@pixelpark.com>
Fri, 4 Oct 2019 13:01:17 +0000 (15:01 +0200)
committerFrank Brehm <frank.brehm@pixelpark.com>
Fri, 4 Oct 2019 13:01:17 +0000 (15:01 +0200)
lib/webhooks/__init__.py
lib/webhooks/base_app.py
lib/webhooks/module_info.py

index 5431a13b51332d9daf0220f911bde4d88bb83532..e94ea92e7f7b5ce5e9781b57aca3ab7f691d7bfa 100644 (file)
@@ -1,6 +1,6 @@
 #!/bin/env python3
 # -*- coding: utf-8 -*-
 
-__version__ = '1.7.1'
+__version__ = '1.7.2'
 
 # vim: ts=4 et list
index 78d5be46876a2902844e279d3b514d0922c82c8c..dc08e51756cf4312fbe837b38b2aff363cdda637 100644 (file)
@@ -1439,6 +1439,7 @@ class BaseHookApp(BaseApplication):
                 module_infos[m_name].ts_checked = forge_mod.ts_checked
                 module_infos[m_name].forge_deprecated_at = forge_mod.deprecated_at
                 module_infos[m_name].forge_deprecated_for = forge_mod.deprecated_for
+                module_infos[m_name].forge_updated_at = forge_mod.updated_at
                 if forge_mod.superseded_by and forge_mod.superseded_by['slug']:
                     subst = forge_mod.superseded_by['slug']
                     module_infos[m_name].forge_superseded_by = subst
index f1414db400a75419eab83cbef9cd2da710d49972..40e235aef26b83d61cc5677e30fb007dc876a7c0 100644 (file)
@@ -27,7 +27,9 @@ from .xlate import XLATOR
 
 from .base_module_info import BaseModuleInfoError, BaseModuleInfo
 
-__version__ = '1.4.2'
+from .forge import parse_forge_date
+
+__version__ = '1.5.1'
 
 LOG = logging.getLogger(__name__)
 
@@ -75,6 +77,7 @@ class ModuleInfo(BaseModuleInfo):
         self._forge_deprecated_at = None
         self._forge_deprecated_for = None
         self._forge_superseded_by = None
+        self._forge_updated_at = None
 
         super(ModuleInfo, self).__init__(
             appname=appname, verbose=verbose, version=version, base_dir=base_dir,
@@ -172,7 +175,7 @@ class ModuleInfo(BaseModuleInfo):
     # -------------------------------------------------------------------------
     @property
     def forge_superseded_by(self):
-        """The reason of deprecation of this forge module."""
+        """The module, which should substituting this forge module."""
         return self._forge_superseded_by
 
     @forge_superseded_by.setter
@@ -186,6 +189,26 @@ class ModuleInfo(BaseModuleInfo):
             return
         self._forge_superseded_by = v
 
+    # -------------------------------------------------------------------------
+    @property
+    def forge_updated_at(self):
+        """Date of last update of the module on Puppet forge."""
+        return self._forge_updated_at
+
+    @forge_updated_at.setter
+    def forge_updated_at(self, value):
+        if value is None:
+            self._forge_updated_at = None
+            return
+        if isinstance(value, datetime.datetime):
+            self._forge_updated_at = value
+            return
+        v = str(value).strip()
+        if v == '':
+            self._forge_updated_at = None
+            return
+        self._forge_updated_at = parse_forge_date(v)
+
     # -------------------------------------------------------------------------
     @property
     def ts_checked(self):
@@ -251,6 +274,7 @@ class ModuleInfo(BaseModuleInfo):
         res['forge_homepage_url'] = self.forge_homepage_url
         res['forge_source'] = self.forge_source
         res['forge_superseded_by'] = self.forge_superseded_by
+        res['forge_updated_at'] = self.forge_updated_at
         res['forge_version'] = self.forge_version
         res['ts_checked'] = self.ts_checked
 
@@ -268,6 +292,7 @@ class ModuleInfo(BaseModuleInfo):
         res['forge_homepage_url'] = self.forge_homepage_url
         res['forge_source'] = self.forge_source
         res['forge_superseded_by'] = self.forge_superseded_by
+        res['forge_updated_at'] = self.forge_updated_at
         res['forge_version'] = self.forge_version
         res['repo'] = self.repo
         res['ts_checked'] = self.ts_checked
@@ -321,6 +346,9 @@ class ModuleInfo(BaseModuleInfo):
         if other.forge_releases is not None and self.forge_releases is None:
             self.forge_releases = copy.copy(other.forge_releases)
 
+        if other.forge_updated_at is not None and self.forge_updated_at is None:
+            self.forge_updated_at = other.forge_updated_at
+
         if other.repo and not self.repo:
             self.repo = other.repo
 
@@ -397,6 +425,9 @@ class ModuleInfo(BaseModuleInfo):
         if 'forge_source' in data:
             module_info.forge_source = data['forge_source']
 
+        if 'forge_updated_at' in data and data['forge_updated_at'] is not None:
+            module_info.forge_updated_at = data['forge_updated_at']
+
         if 'repo' in data:
             module_info.repo = data['repo']