Commit 2e4152f4 authored by Roque's avatar Roque

erp5_officejs_appstore_base: refactor app submit publication

parent 2ee339ac
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())
......
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