diff options
Diffstat (limited to 'chimere/admin.py')
-rw-r--r-- | chimere/admin.py | 56 |
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() |