More general list of shared item categories

merge-requests/30/head
Bob Mottram 2021-08-08 19:39:03 +01:00
parent 5d54f41533
commit d0dc6a07a0
4 changed files with 28 additions and 12 deletions

View File

@ -35,18 +35,13 @@ from utils import removeDomainPort
from utils import isAccountDir from utils import isAccountDir
from utils import acctDir from utils import acctDir
from utils import isfloat from utils import isfloat
from utils import getCategoryTypes
from media import processMetaData from media import processMetaData
from filters import isFilteredGlobally from filters import isFilteredGlobally
from siteactive import siteIsActive from siteactive import siteIsActive
from content import getPriceFromString from content import getPriceFromString
def _dfcProductTypes() -> []:
# this list should match the ontology json files
# eg. ontology/foodTypes.json
return ['food', 'tool', 'clothes', 'medical']
def _loadDfcIds(baseDir: str, systemLanguage: str, def _loadDfcIds(baseDir: str, systemLanguage: str,
productType: str) -> {}: productType: str) -> {}:
"""Loads the product types ontology """Loads the product types ontology
@ -168,13 +163,14 @@ def _addShareDurationSec(duration: str, published: int) -> int:
return 0 return 0
def _dfcProductTypeFromCategory(itemCategory: str, translate: {}) -> str: def _dfcProductTypeFromCategory(baseDir: str,
itemCategory: str, translate: {}) -> str:
"""Does the shared item category match a DFC product type? """Does the shared item category match a DFC product type?
If so then return the product type. If so then return the product type.
This will be used to select an appropriate ontology file This will be used to select an appropriate ontology file
such as ontology/foodTypes.json such as ontology/foodTypes.json
""" """
productTypesList = _dfcProductTypes() productTypesList = getCategoryTypes(baseDir)
categoryLower = itemCategory.lower() categoryLower = itemCategory.lower()
for productType in productTypesList: for productType in productTypesList:
if translate.get(productType): if translate.get(productType):
@ -195,7 +191,8 @@ def _getshareDfcId(baseDir: str, systemLanguage: str,
""" """
# does the category field match any prodyct type ontology # does the category field match any prodyct type ontology
# files in the ontology subdirectory? # files in the ontology subdirectory?
matchedProductType = _dfcProductTypeFromCategory(itemCategory, translate) matchedProductType = \
_dfcProductTypeFromCategory(baseDir, itemCategory, translate)
if not matchedProductType: if not matchedProductType:
itemType = itemType.replace(' ', '_') itemType = itemType.replace(' ', '_')
itemType = itemType.replace('.', '') itemType = itemType.replace('.', '')
@ -1452,7 +1449,7 @@ def _dfcToSharesFormat(catalogJson: {},
sharesJson = {} sharesJson = {}
dfcIds = {} dfcIds = {}
productTypesList = _dfcProductTypes() productTypesList = getCategoryTypes(baseDir)
for productType in productTypesList: for productType in productTypesList:
dfcIds[productType] = _loadDfcIds(baseDir, systemLanguage, productType) dfcIds[productType] = _loadDfcIds(baseDir, systemLanguage, productType)

View File

@ -42,6 +42,7 @@ from follow import clearFollowers
from follow import sendFollowRequestViaServer from follow import sendFollowRequestViaServer
from follow import sendUnfollowRequestViaServer from follow import sendUnfollowRequestViaServer
from siteactive import siteIsActive from siteactive import siteIsActive
from utils import getCategoryTypes
from utils import getSupportedLanguages from utils import getSupportedLanguages
from utils import setConfigParam from utils import setConfigParam
from utils import isGroupActor from utils import isGroupActor
@ -5190,7 +5191,8 @@ def _testGetPriceFromString() -> None:
def _translateOntology() -> None: def _translateOntology() -> None:
ontologyTypes = ('food', 'clothes', 'tool', 'medical') baseDir = os.getcwd()
ontologyTypes = getCategoryTypes(baseDir)
url = 'https://translate.astian.org' url = 'https://translate.astian.org'
apiKey = None apiKey = None
ltLangList = libretranslateLanguages(url, apiKey) ltLangList = libretranslateLanguages(url, apiKey)

View File

@ -2810,3 +2810,19 @@ def getSupportedLanguages(baseDir: str) -> []:
languagesStr.append(lang) languagesStr.append(lang)
break break
return languagesStr return languagesStr
def getCategoryTypes(baseDir: str) -> []:
"""Returns the list of ontologies
"""
ontologyDir = baseDir + '/ontology'
categories = []
for subdir, dirs, files in os.walk(ontologyDir):
for f in files:
if not f.endswith('.json'):
continue
ontologyFilename = f.split('.')[0]
if 'Types' in ontologyFilename:
categories.append(ontologyFilename.replace('Types', ''))
break
return categories

View File

@ -15,6 +15,7 @@ from utils import getMediaFormats
from utils import getConfigParam from utils import getConfigParam
from utils import acctDir from utils import acctDir
from utils import getCurrencies from utils import getCurrencies
from utils import getCategoryTypes
from webapp_utils import getBannerFile from webapp_utils import getBannerFile
from webapp_utils import htmlHeaderWithExternalStyle from webapp_utils import htmlHeaderWithExternalStyle
from webapp_utils import htmlFooter from webapp_utils import htmlFooter
@ -363,7 +364,7 @@ def htmlNewPost(cssCache: {}, mediaInstance: bool, translate: {},
extraFields += '<br>' + \ extraFields += '<br>' + \
editTextField(translate['Type of shared item. eg. hat'] + ':', editTextField(translate['Type of shared item. eg. hat'] + ':',
'itemType', '', '', True) 'itemType', '', '', True)
categoryTypes = ("food", "clothes", "tool", "medical") categoryTypes = getCategoryTypes()
catStr = translate['Category of shared item. eg. clothing'] catStr = translate['Category of shared item. eg. clothing']
extraFields += '<label class="labels">' + catStr + '</label><br>\n' extraFields += '<label class="labels">' + catStr + '</label><br>\n'