osclib/core: provide package_source_{changed,age}() functions.

This commit is contained in:
Jimmy Berry 2019-11-06 11:21:35 -06:00
parent 13fa93cede
commit 818685166f

View File

@ -1,6 +1,7 @@
from collections import namedtuple from collections import namedtuple
from collections import OrderedDict from collections import OrderedDict
from datetime import datetime from datetime import datetime
from datetime import timezone
from dateutil.parser import parse as date_parse from dateutil.parser import parse as date_parse
import re import re
import socket import socket
@ -526,6 +527,14 @@ def project_meta_revision(apiurl, project):
apiurl, project, '_project', None, format='xml', meta=True)) apiurl, project, '_project', None, format='xml', meta=True))
return int(root.find('logentry').get('revision')) return int(root.find('logentry').get('revision'))
def package_source_changed(apiurl, project, package):
url = makeurl(apiurl, ['source', project, package, '_history'], {'limit': 1})
root = ETL.parse(http_GET(url)).getroot()
return datetime.fromtimestamp(int(root.find('revision/time').text), timezone.utc).replace(tzinfo=None)
def package_source_age(apiurl, project, package):
return datetime.utcnow() - package_source_changed(apiurl, project, package)
def entity_exists(apiurl, project, package=None): def entity_exists(apiurl, project, package=None):
try: try:
http_GET(makeurl(apiurl, list(filter(None, ['source', project, package])) + ['_meta'])) http_GET(makeurl(apiurl, list(filter(None, ['source', project, package])) + ['_meta']))