Commit 1a7d9ab1 authored by Rafael Monnerat's avatar Rafael Monnerat

slapos_pdm: Allow get Software Release lists from validated Products

   This allow the internal API, generate upgrade decisions for non public softwares
parent 83510d52
...@@ -14,11 +14,11 @@ if software_product_reference is None: ...@@ -14,11 +14,11 @@ if software_product_reference is None:
) )
if not software_release: if not software_release:
return [] return []
software_product_reference = software_release.getAggregateReference() software_product_reference = software_release.getAggregateReference()
if not software_product_reference: if not software_product_reference:
return [] return []
else: else:
# Don't accept both parameters # Don't accept both parameters
assert(software_release_url is None) assert(software_release_url is None)
...@@ -26,12 +26,12 @@ else: ...@@ -26,12 +26,12 @@ else:
product_list = portal.portal_catalog( product_list = portal.portal_catalog(
portal_type='Software Product', portal_type='Software Product',
reference=software_product_reference, reference=software_product_reference,
validation_state='published', validation_state=['published', 'validated'],
limit=2) limit=2)
if not product_list: if not product_list:
return [] return []
if len(product_list) > 1: if len(product_list) > 1:
raise ValueError('Several Software Product with the same reference.') raise ValueError('Several Software Product with the same reference.')
...@@ -39,18 +39,22 @@ software_release_list = product_list[0].getAggregateRelatedValueList() ...@@ -39,18 +39,22 @@ software_release_list = product_list[0].getAggregateRelatedValueList()
def sortkey(software_release): def sortkey(software_release):
publication_date = software_release.getEffectiveDate() publication_date = software_release.getEffectiveDate()
delta = 0
if software_release.getValidationState() == "archived":
# Decrease 80 years, to be sure it goes last but still on the list
delta = 365*80
if publication_date: if publication_date:
if (publication_date - DateTime()) > 0: if (publication_date - DateTime()) > 0:
return DateTime('1900/05/02') # Decrease 100 years, to be sure it goes at the end of the queue
return publication_date delta = 365*100
return software_release.getCreationDate() return publication_date - delta
return software_release.getCreationDate() - delta
software_release_list = sorted( software_release_list = sorted(
software_release_list, software_release_list,
key=sortkey, reverse=True, key=sortkey, reverse=True,
) )
return [software_release for software_release in software_release_list return [software_release for software_release in software_release_list
if software_release.getValidationState() in if software_release.getValidationState() in
["published", "published_alive"] ["published", "published_alive", "archived"]]
]
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment