summaryrefslogtreecommitdiff
path: root/chimere/admin.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@peacefrogs.net>2012-11-16 02:36:12 +0100
committerÉtienne Loks <etienne.loks@peacefrogs.net>2012-11-16 02:36:12 +0100
commit14798fd25b0e8445d66e9d83f562caee044e1907 (patch)
tree1655efc4da0f3ac2a09213b9aad51d6a1f0b1c15 /chimere/admin.py
parent89fd5864f6f61e1d41d2146c46bbf1625f698060 (diff)
downloadChimère-14798fd25b0e8445d66e9d83f562caee044e1907.tar.bz2
Chimère-14798fd25b0e8445d66e9d83f562caee044e1907.zip
Manage route amendment in admin (refs #381)
Diffstat (limited to 'chimere/admin.py')
-rw-r--r--chimere/admin.py56
1 files changed, 32 insertions, 24 deletions
diff --git a/chimere/admin.py b/chimere/admin.py
index 4f7a49d..399e6e1 100644
--- a/chimere/admin.py
+++ b/chimere/admin.py
@@ -94,35 +94,42 @@ def managed_modified(modeladmin, request, queryset):
u"time."))
return HttpResponseRedirect(request.get_full_path())
- marker = queryset.all()[0]
- if not marker.status == 'M':
+ item = queryset.all()[0]
+ if not item.status == 'M':
try:
- marker = Marker.objects.get(ref_item=marker, status='M')
+ item = modeladmin.model.objects.get(ref_item=item, status='M')
except ObjectDoesNotExist:
messages.error(request, _(u"No modified item associated "
- u"to the selected marker."))
+ u"to the selected item."))
return HttpResponseRedirect(request.get_full_path())
- marker_ref = marker.ref_item
+ item_ref = item.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()
+ couple = [(item, item_ref)]
+ if hasattr(item, 'associated_marker'):
+ couple.append((item.associated_marker, item_ref.associated_marker))
+ for it, it_ref in couple:
+ for k in request.POST:
+ if not request.POST[k]:
+ continue
+ if hasattr(it_ref, k):
+ setattr(it_ref, k, getattr(it, k))
+ it_ref.save()
+ elif k.startswith('property_'):
+ try:
+ pm = PropertyModel.get(pk=int(k[len('property_'):]))
+ it_ref.setProperty(pm, it.getProperty(pm))
+ except (ValueError, ObjectDoesNotExist):
+ pass
+ if hasattr(item, 'associated_marker'):
+ for it in item.associated_marker.all():
+ it.delete()
+ item.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},
+ return render_to_response('admin/managed_modified.html',
+ {'item':item, 'item_ref':item_ref},
context_instance=RequestContext(request))
-
+managed_modified.short_description = _(u"Managed modified items")
class PictureInline(admin.TabularInline):
model = PictureFile
@@ -145,8 +152,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,
- managed_modified]
+ actions = [validate, managed_modified, export_to_kml, export_to_shapefile,
+ export_to_csv]
exclude = ['submiter_session_key', 'import_key', 'import_version',
'available_date']
readonly_fields = ['submiter_email', 'submiter_comment', 'import_source',
@@ -177,7 +184,8 @@ class RouteAdmin(admin.ModelAdmin):
exclude = ['height', 'width']
form = RouteAdminForm
readonly_fields = ('associated_file',)
- actions = [validate, export_to_kml, export_to_shapefile, export_to_csv]
+ actions = [validate, managed_modified, export_to_kml, export_to_shapefile,
+ export_to_csv]
def queryset(self, request):
qs = self.model._default_manager.get_query_set()