diff options
Diffstat (limited to 'ishtar_common/views_item.py')
-rw-r--r-- | ishtar_common/views_item.py | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/ishtar_common/views_item.py b/ishtar_common/views_item.py index c40b2c75f..b0ec0bdce 100644 --- a/ishtar_common/views_item.py +++ b/ishtar_common/views_item.py @@ -166,6 +166,35 @@ def new_item(model, frm, many=False): return func +def new_qa_item(model, frm, many=False): + def func(request, parent_name, limits=''): + template = "ishtar/forms/qa_new_item.html" + model_name = model._meta.object_name + if not check_permission(request, 'add_' + model_name.lower()): + not_permitted_msg = ugettext(u"Operation not permitted.") + return HttpResponse(not_permitted_msg) + dct = {'page_name': str(_(u'New %s' % model_name.lower())), + 'url': reverse("new-" + model.SLUG, args=[parent_name]), + 'slug': model.SLUG, + 'parent_name': parent_name, + 'many': many} + if request.method == 'POST': + dct['form'] = frm(request.POST, limits=limits) + if dct['form'].is_valid(): + new_item = dct['form'].save(request.user) + dct['new_item_label'] = str(new_item) + dct['new_item_pk'] = new_item.pk + dct['parent_pk'] = parent_name + if dct['parent_pk'] and '_select_' in dct['parent_pk']: + parents = dct['parent_pk'].split('_') + dct['parent_pk'] = "_".join([parents[0]] + parents[2:]) + return render(request, template, dct) + else: + dct['form'] = frm(limits=limits) + return render(request, template, dct) + return func + + def display_item(model, extra_dct=None, show_url=None): def func(request, pk, **dct): if show_url: |