diff --git a/pandora/archive/external.py b/pandora/archive/external.py index 834b6b779..b9bce934a 100644 --- a/pandora/archive/external.py +++ b/pandora/archive/external.py @@ -55,6 +55,8 @@ def get_info(url): for k in info_keys if k in i and i[k] }) + if not 'tags' in info[-1]: + info[-1]['tags'] = [] if 'upload_date' in i: info[-1]['date'] = '-'.join([i['upload_date'][:4], i['upload_date'][4:6], i['upload_date'][6:]]) return info diff --git a/pandora/config.padma.jsonc b/pandora/config.padma.jsonc index 80727170a..0b55196fd 100644 --- a/pandora/config.padma.jsonc +++ b/pandora/config.padma.jsonc @@ -135,6 +135,12 @@ {"id": "texts", "title": "Texts"}, {"id": "embeds", "title": "Embeds"} ], + "importMetadata": { + "date": "{date}", + "topic": "{tags}", + "summary": "{description}", + "title": "{title}" + }, /* "itemKeys" defines the metadata associated with each item. Required keys are "*", "id" and "title". Annotation layers can be referenced too, which diff --git a/pandora/item/views.py b/pandora/item/views.py index a0b83f209..970c0452b 100644 --- a/pandora/item/views.py +++ b/pandora/item/views.py @@ -225,15 +225,18 @@ def find(request, data): clips = qs return [c.json(query['clip_keys'], query['clip_filter']) for c in clips] + sort_keys = { + 'accessed', 'modified', 'timesaccessed', + 'numberofannotations', 'numberoffiles', 'numberofdocuments' + } + def only_p_sums(m): r = {} for p in _p: if p == 'accessed': r[p] = m.sort.accessed or '' - elif p == 'modified': - r[p] = m.sort.modified - elif p == 'timesaccessed': - r[p] = m.sort.timesaccessed + elif p in sort_keys: + r[p] = getattr(m.sort, p) else: r[p] = m.json.get(p) if 'clip_qs' in query: @@ -252,9 +255,7 @@ def find(request, data): return r qs = qs[query['range'][0]:query['range'][1]] # response['data']['items'] = [m.get_json(_p) for m in qs] - if filter(lambda p: p in ( - 'accessed', 'modified', 'timesaccessed', 'viewed' - ), _p): + if any(p for p in _p if p in sort_keys): qs = qs.select_related() response['data']['items'] = [only_p_sums(m) for m in qs] else: