summaryrefslogtreecommitdiff
path: root/chimere/admin.py
diff options
context:
space:
mode:
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
commitded35ffba989c28d8dd515fc9c0f4e241038d668 (patch)
treee756e63c9dca53bdf0f23e68a367a16b927ab61b /chimere/admin.py
parent5db6ae2fc14ebbec4b52151c7250ca0bba98bc02 (diff)
parent7d8c3719bb2dfaa70b1d6c5e2a19c53588091d3b (diff)
downloadChimè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.py60
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