summaryrefslogtreecommitdiff
path: root/ishtar_common/views_item.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common/views_item.py')
-rw-r--r--ishtar_common/views_item.py65
1 files changed, 64 insertions, 1 deletions
diff --git a/ishtar_common/views_item.py b/ishtar_common/views_item.py
index 8cd903a00..aa9a39965 100644
--- a/ishtar_common/views_item.py
+++ b/ishtar_common/views_item.py
@@ -22,6 +22,7 @@ from django.core.urlresolvers import reverse, NoReverseMatch
from django.db.models import Q, Count, Sum, ImageField, Func, \
ExpressionWrapper, FloatField, FileField
from django.db.models.fields import FieldDoesNotExist
+from django.forms.models import model_to_dict
from django.http import HttpResponse
from django.shortcuts import render
from django.template import loader
@@ -146,7 +147,7 @@ def new_qa_item(model, frm, many=False):
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.")
+ not_permitted_msg = ugettext("Operation not permitted.")
return HttpResponse(not_permitted_msg)
slug = model.SLUG
if model.SLUG == "site":
@@ -177,6 +178,68 @@ def new_qa_item(model, frm, many=False):
return func
+def get_short_html_detail(model):
+ def func(request, pk):
+ model_name = model._meta.object_name
+ not_permitted_msg = ugettext("Operation not permitted.")
+ if not check_permission(request, 'view_' + model_name.lower(),
+ pk):
+ return HttpResponse(not_permitted_msg)
+ try:
+ item = model.objects.get(pk=pk)
+ except model.DoesNotExist:
+ return HttpResponse(not_permitted_msg)
+ html = item.get_short_html_detail()
+ return HttpResponse(html)
+ return func
+
+
+def modify_qa_item(model, frm):
+ def func(request, parent_name="", pk=None):
+ template = "ishtar/forms/qa_new_item.html"
+ model_name = model._meta.object_name
+ not_permitted_msg = ugettext("Operation not permitted.")
+ if not check_permission(request, 'change_' + model_name.lower(),
+ pk):
+ return HttpResponse(not_permitted_msg)
+ slug = model.SLUG
+ if model.SLUG == "site":
+ slug = "archaeologicalsite"
+ try:
+ item = model.objects.get(pk=pk)
+ except model.DoesNotExist:
+ return HttpResponse(not_permitted_msg)
+ url_slug = "modify-" + slug
+ dct = {'page_name': str(_('Modify a %s' % model_name.lower())),
+ 'url': reverse(url_slug, args=[parent_name, pk]),
+ 'slug': slug,
+ "modify": True,
+ 'parent_name': parent_name}
+ if request.method == 'POST':
+ dct['form'] = frm(request.POST)
+ if dct['form'].is_valid():
+ new_item = dct['form'].save(request.user, item)
+ lbl = str(new_item)
+ if not lbl and hasattr(new_item, "_generate_cached_label"):
+ lbl = new_item._generate_cached_label()
+ dct['new_item_label'] = lbl
+ 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:
+ data = model_to_dict(item)
+ for k in list(data.keys()):
+ if data[k] and isinstance(data[k], list) and hasattr(
+ data[k][0], "pk"):
+ data[k] = [i.pk for i in data[k]]
+ dct['form'] = frm(initial=data)
+ 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: