def get_basics(request, dtype, template = None): """ Abstract basic form context calls away, like changing request.dict to mutable Multidict, getting docdef and baseform and checking for document id """ data = multidict.MultiDict() #print(request.POST) #print('') for key, values in request.POST.iterlists(): for val in values: data.add(key, val) if not template: template = env.get_or_select_template(('%s_add.html' % dtype, 'add.html')) doc, baseform = get_base(dtype) if not baseform: raise Http404 return data, doc, baseform, template
def edit_view(request, doctype): docs = get_docs(doctype) doc, baseform = get_base(doctype) sort_key = doc['meta']['sort'] t = env.get_template('edit.html') for document in sorted_docs: document.summary = doc_presentation(document) s = template_render(t, {'docs' : docs, 'doctype' : doctype, 'description' : doc.get('description')}) return HttpResponse(s)
def autocomplete_doc(request, doctype, field): """ Autocomplete for basedocs that has query formulation parameters in basedoc JSON """ term = request.GET.get("term") if not term: raise Http404 term = pyes.clean_string(term) doc, baseform = get_base(doctype) field_def = get_field_definition(doc['fields'], field) if not field_def: raise Http404 return autocomplete(request, field_def["linkdocument"], field_def["query"], term)
def preview(request): doc, form_class = form_tools.get_base('organisation') submitted_data = request.POST if len(request.POST) else request.GET form = form_class(submitted_data) form.validate() form_data = form.data form_data['doc_id'] = submitted_data['doc_id'] json_data = json.dumps(form_data, cls=serializers.json.DjangoJSONEncoder) url_data = urlencode({'library': json_data}) base_url = 'http://hakemisto.kirjastot.fi' preview_url = 'http://hakemisto.kirjastot.fi/preview' base_url = django_conf.CLIENT_BASE_URL preview_url = django_conf.PREVIEW_URL preview_data = urlopen(preview_url, url_data).read() preview_data = preview_data.replace('href="/', 'href="{0}/'.format(base_url)) preview_data = preview_data.replace('src="/', 'src="{0}/'.format(base_url)) return HttpResponse(preview_data)
def list_examples_view(request, doctype, docs=None, context={}): criteria = {} consortium = request.GET.get('consortium') if consortium: criteria['consortium'] = consortium if docs is None: docs = searcher.example_list( request.user, doctype=doctype, criteria=criteria) doc, baseform = get_base(doctype) t = env.get_template('example_list.html') grouped_docs = None if doctype == 'service': # todo: more generic grouping/sorting # using elastic grouped_docs = {} sorted_docs = docs[0] for docz in docs[0]: service_type = docz.get('type', 'notype') grouped_docs[service_type] = grouped_docs.get(service_type, []) grouped_docs[service_type].append(docz) for stype, doc_list in grouped_docs.iteritems(): grouped_docs[stype] = sorted(doc_list, key = lambda x: x.get( 'name_fi', '0')) context.update({ 'docs' : docs[0], 'grouped_docs': grouped_docs, 'doctype' : doctype, 'description' : doc['description'], 'presentation_fields' : presentation_fields(doc), 'teaser': teaser }) s = template_render(t, context) return HttpResponse(s)