def doc_presentation(doc, lang = 'fi', basedoc = None): keys = ['name_' + lang] if '_source' in doc: doc = doc['_source'] for key in keys: if key in doc: return doc[key] if 'last_name' in doc: first_name = doc['first_name'].encode('utf-8') if doc['first_name'] else '' last_name = doc['last_name'].encode('utf-8') if doc['first_name'] else '' return '{0} {1}'.format(first_name, last_name) return 'FOOBAR' """ Return the short human readable presentation for a document. TODO: To be deprecated. """ if not basedoc: basedoc = get_basedoc(doc['_type']) fields = presentation_fields(basedoc, lang) if '_source' in doc: doc = doc['_source'] if fields: for field in fields: if not field in doc or doc[field] == None: return '' return u' '.join([ unicode(doc[key]) for key in fields]) else: return ' - '
def get_docs(doctype, index=settings.INDEX_NAME, sort=False): dtype = get_basedoc(doctype) if not dtype: raise Http404 if sort and dtype and 'meta' in dtype and 'sort' in dtype['meta']: sort_field = dtype['meta']['sort'] else: sort_field = None docs = es_tools.get_docs(doctype, index, sort_field) return docs
def get_parent_chain(doc, data, max_depth = 4): """ Get all the organisation's parents and parents' parents etc. performance ? todo: remove and use es enchanced version """ meta = doc.get('meta', {}) parent_field_key = meta.get('parent_reference', None) if not parent_field_key: return None if max_depth == 0 or doc == None: return None from views import doc_presentation query_term = doc.get('fields').get(parent_field_key).get('field').get( 'query') if query_term[0] == '_type': doctype = query_term[1] parent_id = data.get(parent_field_key, None) if parent_id: try: parent = conn.get(primary_index, doctype, parent_id) parent = es_tools.convert_to_legacy_format(parent) except: return None name = doc_presentation(parent) # todo: language result = [(parent_id, name)] deeper = get_parent_chain(get_basedoc(doctype), parent['_source'], max_depth - 1) if deeper: result.extend(deeper) return result else: return None
def restore_view(request, doctype, eid): """ Restore document from versioning index """ basedoc = get_basedoc(doctype) reid = request.GET.get("reid") or request.POST.get("reid") if not reid: versions = es_tools.get_versions(doctype, eid) if not versions: raise Http404 resdoc = None else: versions = None res = get_doc_from_index(settings.VERSION_INDEX_NAME, doctype, reid) if res: resdoc = htmltree_conversion(es_tools.get_source(res), basedoc) else: raise Http404 cur = get_doc_from_index(settings.INDEX_NAME, doctype, eid) if cur: curdoc = es_tools.get_source(cur) else: raise Http404 if request.POST.get("restore"): es_tools.restore(doctype, curdoc, resdoc, request.user) restore = True else: restore = False t = env.get_template('restore.html') context = {"restore" : restore, "data" : htmltree_conversion(curdoc, basedoc), "curdoc" : curdoc, "resdoc" : resdoc, "versions" : versions, "doctype" : doctype} context.update(csrf(request)) s = template_render(t, context) return HttpResponse(s)
def get_base(doctype): doc = get_basedoc(doctype) baseform = build_form(doc['fields'], doc['meta']) return doc, baseform