diff options
author | Étienne Loks <etienne.loks@peacefrogs.net> | 2012-11-16 00:40:31 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@peacefrogs.net> | 2012-11-16 00:40:31 +0100 |
commit | 76704764573c45b42279087c90c69662c6951165 (patch) | |
tree | 68ee755b29fddfe0d5de04b081d2f9b20653d4cd /chimere/admin.py | |
parent | 27d48170fbf6989c9c933ece82c378afc4ed3094 (diff) | |
download | Chimère-76704764573c45b42279087c90c69662c6951165.tar.bz2 Chimère-76704764573c45b42279087c90c69662c6951165.zip |
Manage marker amendment in admin (refs #381)
Diffstat (limited to 'chimere/admin.py')
-rw-r--r-- | chimere/admin.py | 46 |
1 files changed, 42 insertions, 4 deletions
diff --git a/chimere/admin.py b/chimere/admin.py index 7663bd5..4f7a49d 100644 --- a/chimere/admin.py +++ b/chimere/admin.py @@ -24,12 +24,13 @@ import datetime from django import forms from django.conf import settings -from django.contrib import admin +from django.contrib import admin, messages +from django.core.exceptions import ObjectDoesNotExist from django.db.models import Q -from django.http import HttpResponse +from django.http import HttpResponse, HttpResponseRedirect from django.shortcuts import render_to_response +from django.template import RequestContext from django.utils.translation import ugettext_lazy as _ - try: from chimere import tasks except ImportError: @@ -87,6 +88,42 @@ def export_to_csv(modeladmin, request, queryset): return response export_to_csv.short_description = _(u"Export to CSV") +def managed_modified(modeladmin, request, queryset): + if queryset.count() != 1: + messages.error(request, _(u"Only one item can be managed at a " + u"time.")) + return HttpResponseRedirect(request.get_full_path()) + + marker = queryset.all()[0] + if not marker.status == 'M': + try: + marker = Marker.objects.get(ref_item=marker, status='M') + except ObjectDoesNotExist: + messages.error(request, _(u"No modified item associated " + u"to the selected marker.")) + return HttpResponseRedirect(request.get_full_path()) + marker_ref = marker.ref_item + if request.POST.get('rapprochement'): + for k in request.POST: + if not request.POST[k]: + continue + if hasattr(marker_ref, k): + setattr(marker_ref, k, getattr(marker, k)) + marker_ref.save() + elif k.startswith('property_'): + try: + pm = PropertyModel.get(pk=int(k[len('property_'):])) + marker_ref.setProperty(pm, marker.getProperty(pm)) + except (ValueError, ObjectDoesNotExist): + pass + marker.delete() + messages.success(request, _(u"Modified item traited.")) + return HttpResponseRedirect(request.get_full_path()) + return render_to_response('admin/managed_modified_marker.html', + {'marker':marker, 'marker_ref':marker_ref}, + context_instance=RequestContext(request)) + + class PictureInline(admin.TabularInline): model = PictureFile extra = 1 @@ -108,7 +145,8 @@ class MarkerAdmin(admin.ModelAdmin): search_fields = ("name",) list_display = ('name', 'status') list_filter = ('status', 'categories') - actions = [validate, export_to_kml, export_to_shapefile, export_to_csv] + actions = [validate, export_to_kml, export_to_shapefile, export_to_csv, + managed_modified] exclude = ['submiter_session_key', 'import_key', 'import_version', 'available_date'] readonly_fields = ['submiter_email', 'submiter_comment', 'import_source', |