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)