Compare commits

..

No commits in common. "ea5fda4de12fec003e7a2375d0ffbde11b845ca0" and "de04fe734dcfd804f904c4046139731128d2062a" have entirely different histories.

2 changed files with 65 additions and 39 deletions

View File

@ -24,6 +24,7 @@ along with SAAS. If not, see <https://www.gnu.org/licenses/>.
import glob
import json
import os
import shutil
import sys
from urllib.parse import quote as strToHtmlFmt
import zipfile
@ -83,7 +84,7 @@ class extractData:
infoDict = self.extractActivityInfo(infoFiles[0], bundle)
self.bundlesInfoList.append(infoDict)
# FIXME: create separate function for it
# FIXME: create seprate function for it
# extract and copy icon
activityName = infoDict.get("name")
if type(activityName) == str:
@ -105,6 +106,8 @@ class extractData:
self.iconErrorBundles.append(bundlePath)
bundle.close()
# FIXME: uncomment below function.
# Disabled sometime during development as time consuming
self.copyBundle(bundlePath, activityName)
bundle.close()
@ -149,41 +152,65 @@ class extractData:
be created for it.
appends keys rather than replacing where multiple map to same
"""
def generateIndex(self):
for activity in json.loads(self.infoJson):
indexDict = {
"name": "",
"summary": "",
"description": "",
"tags": ()
# FIXME: Simplify logic: replace str, tuple, list etc. with 'string' & 'array'
def generateIndex(
self,
infoToIndexMap={
"name": ("name", "string"),
"summary": ("summary", "string"),
"description": ("description", "string"),
"tag": ("tags", "array"),
"tags": ("tags", "array"),
"categories": ("tags", "array"),
"category": ("tags", "array")
}
):
unexpectedInputError = (
"main.py generateIndex() : expect only str, list or tuple as "
"kwargs -> value[1] but found "
)
name = activity.get("name")
if name is not None:
indexDict["name"] = name
i2IMap = infoToIndexMap
summary = activity.get("summary")
if summary is not None:
indexDict["summary"] = summary
for obj in json.loads(self.infoJson):
indexDict = {}
for k, v in obj.items():
if k in i2IMap:
description = activity.get("description")
if description is not None:
indexDict["description"] = description
tags = []
tagsKeys = ["tag", "tags", "category", "categories"]
for key in tagsKeys:
tagsString = activity.get(key)
if tagsString is not None:
if tagsString.find(';') != -1:
tagsList = tagsString.split(';')
# add new entry/key to app index
if k not in indexDict:
if i2IMap[k][1] == "string":
indexDict[i2IMap[k][0]] = v
elif i2IMap[k][1] == "array":
if v.find(';') >= 0:
indexDict[i2IMap[k][0]] = v.split(';')
else:
tagsList = tagsString.split()
for tag in tagsList:
tag = tag.casefold().capitalize()
if tag not in tags:
tags.append(tag)
indexDict["tags"] = tuple(tags)
indexDict[i2IMap[k][0]] = v.split()
# Append to existing entry/key to app index
else:
if i2IMap[k][1] == "string":
indexDict[i2IMap[k][0]] += ' '+v
elif i2IMap[k][1] == "array":
if v.find(';') >= 0:
indexDict[i2IMap[k][0]] += v.split(';')
else:
indexDict[i2IMap[k][0]] += v.split()
else:
print(unexpectedInputError, i2IMap[k][1])
sys.exit(1)
# Create entry/key with empty value for keys not present
# in activity.info
for k, v in i2IMap.items():
if v[0] not in indexDict:
if v[1] == "string":
indexDict[v[0]] = ""
elif v[1] == "array":
indexDict[v[0]] = ()
else:
print(unexpectedInputError, v[1])
sys.exit(1)
self.indexDictList.append(indexDict)
self.indexJs = (

View File

@ -1,5 +1,4 @@
import os
import shutil
def CallFuncInDir(Directory, Function, *args, **kwArgs):