diff options
| author | Étienne Loks <etienne.loks@iggdrasil.net> | 2020-03-20 19:40:24 +0100 | 
|---|---|---|
| committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2020-03-20 19:40:24 +0100 | 
| commit | e60666c795e1531fda90013a001ac6dbc58b5667 (patch) | |
| tree | d5fc7bd1cb9d8dab4c967fcad6dccba5e6b3517a /ishtar_common/views_item.py | |
| parent | 3674706764068d37ad0aca120a49e37c1ed291ec (diff) | |
| download | Ishtar-e60666c795e1531fda90013a001ac6dbc58b5667.tar.bz2 Ishtar-e60666c795e1531fda90013a001ac6dbc58b5667.zip  | |
Refactoring and many fixes on file module
Diffstat (limited to 'ishtar_common/views_item.py')
| -rw-r--r-- | ishtar_common/views_item.py | 65 | 
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:  | 
