summaryrefslogtreecommitdiff
path: root/chimere/admin.py
diff options
context:
space:
mode:
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
commit76704764573c45b42279087c90c69662c6951165 (patch)
tree68ee755b29fddfe0d5de04b081d2f9b20653d4cd /chimere/admin.py
parent27d48170fbf6989c9c933ece82c378afc4ed3094 (diff)
downloadChimè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.py46
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',