diff options
| 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 | 
| commit | 14798fd25b0e8445d66e9d83f562caee044e1907 (patch) | |
| tree | 1655efc4da0f3ac2a09213b9aad51d6a1f0b1c15 /chimere/admin.py | |
| parent | 89fd5864f6f61e1d41d2146c46bbf1625f698060 (diff) | |
| download | Chimè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.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()  | 
