Commit ed338a9c authored by Roque's avatar Roque

Appstore improvements

See merge request nexedi/erp5!1454
parents b9abe7c2 2e4152f4
Pipeline #16530 failed with stage
in 0 seconds
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
</div> </div>
</div> </div>
<div class="panel_img"> <div class="panel_img">
<img class="ui-title" alt="OfficeJS" src="gadget_erp5_panel.png"/> <img class="ui-title" alt="OfficeJS" src="officejs_logo.png"/>
</div> </div>
</div> </div>
</script> </script>
......
...@@ -267,7 +267,7 @@ ...@@ -267,7 +267,7 @@
</item> </item>
<item> <item>
<key> <string>serial</string> </key> <key> <string>serial</string> </key>
<value> <string>983.54930.13960.61730</string> </value> <value> <string>992.13065.39275.59033</string> </value>
</item> </item>
<item> <item>
<key> <string>state</string> </key> <key> <string>state</string> </key>
...@@ -285,7 +285,7 @@ ...@@ -285,7 +285,7 @@
</tuple> </tuple>
<state> <state>
<tuple> <tuple>
<float>1589291757.75</float> <float>1625152849.26</float>
<string>UTC</string> <string>UTC</string>
</tuple> </tuple>
</state> </state>
......
def rejectSoftwarePublication(software_publication):
software_publication.submit()
software_publication.reject()
return
def extractWebManifest(html_file):
html = context.Base_parseHtml(html_file)
for tag in html:
if tag[0] == 'starttag' and tag[1] == 'link' and ('rel', 'manifest') in tag[2]:
for attribute in tag[2]:
if attribute[0] == 'href':
return attribute[1]
def getBaseDirectory(namelist):
base = ""
for name in namelist:
if "/" in name:
temp_base = name.split("/")[0]
if base and base != temp_base:
base = ""
break
else:
base = temp_base
else:
base = ""
break
if base:
base += "/"
return base
portal = context.getPortalObject()
software_publication = context software_publication = context
if software_publication.getSimulationState() != "draft": if software_publication.getSimulationState() != "draft":
...@@ -6,13 +37,17 @@ if software_publication.getSimulationState() != "draft": ...@@ -6,13 +37,17 @@ if software_publication.getSimulationState() != "draft":
software_publication_line = software_publication.objectValues( software_publication_line = software_publication.objectValues(
portal_type="Software Publication Line", portal_type="Software Publication Line",
)[0] )[0]
software_product = software_publication_line.getResourceValue(portal_type="Software Product") software_product = software_publication_line.getResourceValue(portal_type="Software Product")
if not software_product: if not software_product:
rejectSoftwarePublication(software_publication)
return return
portal = context.getPortalObject() software_release = software_publication_line.getAggregateValue(portal_type="Software Release")
version = software_release.getReference()
software_release_url = software_release.getRelativeUrl()
user_login = software_publication.getSourceReference()
application_publication_section = portal.portal_categories.publication_section.application application_publication_section = portal.portal_categories.publication_section.application
zip_file = portal.portal_catalog.getResultValue( zip_file = portal.portal_catalog.getResultValue(
...@@ -22,50 +57,25 @@ zip_file = portal.portal_catalog.getResultValue( ...@@ -22,50 +57,25 @@ zip_file = portal.portal_catalog.getResultValue(
) )
if not zip_file: if not zip_file:
# XXX Do something? rejectSoftwarePublication(software_publication)
return return
software_release = software_publication_line.getAggregateValue(portal_type="Software Release")
from cStringIO import StringIO from cStringIO import StringIO
import zipfile import zipfile
from zipfile import BadZipfile
zipbuffer = StringIO() zipbuffer = StringIO()
zipbuffer.write(str(zip_file.getData())) zipbuffer.write(str(zip_file.getData()))
zip_reader = zipfile.ZipFile(zipbuffer) try:
user_login = software_publication.getSourceReference() zip_reader = zipfile.ZipFile(zipbuffer)
except BadZipfile:
version = software_release.getReference() rejectSoftwarePublication(software_publication)
return
# look for Base Directory base_length = len(getBaseDirectory(zip_reader.namelist()))
base = ""
for name in zip_reader.namelist():
if "/" in name:
temp_base = name.split("/")[0]
if base and base != temp_base:
base = ""
break
else:
base = temp_base
else:
base = ""
break
if base:
base += "/"
base_length = len(base)
def extractWebManifest(html_file):
html = context.Base_parseHtml(html_file)
for tag in html:
if tag[0] == 'starttag' and tag[1] == 'link' and ('rel', 'manifest') in tag[2]:
for attribute in tag[2]:
if attribute[0] == 'href':
return attribute[1]
software_release_url = software_release.getRelativeUrl()
tag = "preparing_sr_%s" % software_release_url tag = "preparing_sr_%s" % software_release_url
default_page = "" default_page = ""
web_manifest_url = None
for name in zip_reader.namelist(): for name in zip_reader.namelist():
if zip_reader.getinfo(name).file_size == 0: if zip_reader.getinfo(name).file_size == 0:
continue continue
...@@ -89,9 +99,14 @@ for name in zip_reader.namelist(): ...@@ -89,9 +99,14 @@ for name in zip_reader.namelist():
follow_up=software_release_url, follow_up=software_release_url,
portal_type="File", portal_type="File",
) )
try:
publication_source_category = "contributor/" + software_publication.getSource()
except TypeError:
rejectSoftwarePublication(software_publication)
return
# XX Hackish # XX Hackish
document.setCategoryList( document.setCategoryList(
document.getCategoryList() + ["contributor/" + software_publication.getSource()]) document.getCategoryList() + [publication_source_category])
if url in ("index.html", "index.htm"): if url in ("index.html", "index.htm"):
default_page = document.getRelativeUrl() default_page = document.getRelativeUrl()
web_manifest_url = extractWebManifest(document.getData()) web_manifest_url = extractWebManifest(document.getData())
......
...@@ -8,16 +8,23 @@ web_document_list = portal.portal_catalog( ...@@ -8,16 +8,23 @@ web_document_list = portal.portal_catalog(
validation_state="submitted", validation_state="submitted",
) )
for web_document in web_document_list: for web_document in web_document_list:
web_document.cancel() web_document.cancel()
software_product = context.getFollowUpValue(portal_type="Software Product") software_product = context.getFollowUpValue(portal_type="Software Product")
web_site = software_product.SoftwareProduct_getRelatedWebSite() web_site = software_product.SoftwareProduct_getRelatedWebSite()
version_web_section = None
if software_release.getReference() in web_site:
version_web_section = web_site[software_release.getReference()]
#backward compatibily
if not version_web_section and software_release.getVersion() in web_site:
version_web_section = web_site[software_release.getVersion()]
if not version_web_section:
return
version_web_section = web_site[software_release.getVersion()]
version_web_section.setCriterion('validation_state', 'cancel') version_web_section.setCriterion('validation_state', 'cancel')
version_web_section.setTitle("Rejected " + version_web_section.getTitle()) version_web_section.setTitle("Rejected " + version_web_section.getTitle())
def webSectionUpdatePredicate(current_section): def webSectionUpdatePredicate(current_section):
...@@ -26,5 +33,3 @@ def webSectionUpdatePredicate(current_section): ...@@ -26,5 +33,3 @@ def webSectionUpdatePredicate(current_section):
webSectionUpdatePredicate(child_section) webSectionUpdatePredicate(child_section)
webSectionUpdatePredicate(version_web_section) webSectionUpdatePredicate(version_web_section)
#version_web_section.cancel()
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