diff options
| author | Étienne Loks <etienne.loks@peacefrogs.net> | 2012-11-19 01:08:51 +0100 | 
|---|---|---|
| committer | Étienne Loks <etienne.loks@peacefrogs.net> | 2012-11-19 01:08:51 +0100 | 
| commit | ded35ffba989c28d8dd515fc9c0f4e241038d668 (patch) | |
| tree | e756e63c9dca53bdf0f23e68a367a16b927ab61b /chimere/admin.py | |
| parent | 5db6ae2fc14ebbec4b52151c7250ca0bba98bc02 (diff) | |
| parent | 7d8c3719bb2dfaa70b1d6c5e2a19c53588091d3b (diff) | |
| download | Chimère-ded35ffba989c28d8dd515fc9c0f4e241038d668.tar.bz2 Chimère-ded35ffba989c28d8dd515fc9c0f4e241038d668.zip | |
Merge branch 'master' into saclay
Conflicts:
	chimere/admin.py
	chimere/models.py
	chimere/templates/chimere/detail.html
	chimere/templatetags/chimere_tags.py
	chimere/tests.py
Diffstat (limited to 'chimere/admin.py')
| -rw-r--r-- | chimere/admin.py | 60 | 
1 files changed, 55 insertions, 5 deletions
| diff --git a/chimere/admin.py b/chimere/admin.py index 8229183..b34deaa 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,49 @@ 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()) + +    item = queryset.all()[0] +    if not item.status == 'M': +        try: +            item = modeladmin.model.objects.get(ref_item=item, status='M') +        except ObjectDoesNotExist: +            messages.error(request, _(u"No modified item associated " +                                      u"to the selected item.")) +            return HttpResponseRedirect(request.get_full_path()) +    item_ref = item.ref_item +    if request.POST.get('rapprochement'): +        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.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      extra = 1 @@ -108,7 +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] +    actions = [validate, managed_modified, export_to_kml, export_to_shapefile, +               export_to_csv]      exclude = ['submiter_session_key', 'import_key', 'import_version',                 'available_date', 'ref_item']      readonly_fields = ['submiter_email', 'submiter_comment', 'import_source', @@ -139,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() @@ -165,6 +211,7 @@ class AreaAdmin(admin.ModelAdmin):      form = AreaAdminForm      exclude = ['upper_left_corner', 'lower_right_corner']      inlines = [LayerInline] +    list_display = ['name', 'order', 'available', 'default']  def importing(modeladmin, request, queryset):      for importer in queryset: @@ -208,6 +255,9 @@ class PageAdmin(admin.ModelAdmin):      """      form = PageAdminForm +class PropertyModelAdmin(admin.ModelAdmin): +    list_display = ('name', 'order', 'available') +  class NewsAdmin(admin.ModelAdmin):      """      Use the TinyMCE widget for the news content | 
