summaryrefslogtreecommitdiff
path: root/chimere/admin.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@peacefrogs.net>2012-10-14 16:55:22 +0200
committerÉtienne Loks <etienne.loks@peacefrogs.net>2012-10-14 16:55:22 +0200
commitea65e5512c236b81e7f4b8757521facadae4b3b8 (patch)
tree739cdf40fb6a89de90c4189936d695288a82849f /chimere/admin.py
parent4b0f0777c434f5fa1366ca408c34d257d4833fad (diff)
parenta55f77a246f99764ff6289686f80825526654e2b (diff)
downloadChimère-ea65e5512c236b81e7f4b8757521facadae4b3b8.tar.bz2
Chimère-ea65e5512c236b81e7f4b8757521facadae4b3b8.zip
Merge branch 'master' into saclay
Conflicts: chimere/admin.py chimere/fixtures/initial_data.json chimere/forms.py chimere/locale/fr/LC_MESSAGES/django.po chimere/models.py chimere/static/chimere/css/styles.css chimere/templates/chimere/detail.html chimere/templatetags/chimere_tags.py chimere/views.py chimere/widgets.py
Diffstat (limited to 'chimere/admin.py')
-rw-r--r--chimere/admin.py61
1 files changed, 23 insertions, 38 deletions
diff --git a/chimere/admin.py b/chimere/admin.py
index ae6fbc4..cc7925c 100644
--- a/chimere/admin.py
+++ b/chimere/admin.py
@@ -25,6 +25,7 @@ import datetime
from django import forms
from django.conf import settings
from django.contrib import admin
+from django.db.models import Q
from django.http import HttpResponse
from django.shortcuts import render_to_response
from django.utils.translation import ugettext_lazy as _
@@ -35,28 +36,16 @@ except ImportError:
pass
from chimere.forms import MarkerAdminForm, RouteAdminForm, AreaAdminForm,\
- SubCategoryAdminForm, NewsAdminForm, CategoryAdminForm, ImporterAdminForm,\
- PageAdminForm
+ NewsAdminForm, CategoryAdminForm, ImporterAdminForm,\
+ PageAdminForm, PictureFileAdminForm, MultimediaFileAdminForm
from chimere.models import Category, Icon, SubCategory, Marker, \
- PropertyModel, News, Route, Area, ColorTheme, Color, RouteFile,\
- MultimediaType, MultimediaFile, PictureFile, Importer, Layer, AreaLayers,\
- PropertyModelChoice, MultimediaExtension, Page
+ PropertyModel, News, Route, Area, ColorTheme, Color, \
+ MultimediaFile, PictureFile, Importer, Layer, AreaLayers,\
+ PropertyModelChoice, MultimediaExtension, Page,\
+ get_areas_for_user, get_users_by_area
from chimere.utils import unicode_normalize, ShapefileManager, KMLManager,\
CSVManager
-def get_areas_for_user(user):
- """
- Getting subcats for a specific user
- """
- perms = user.get_all_permissions()
- areas = set()
- prefix = 'chimere.change_area_'
- for perm in perms:
- if perm.startswith(prefix):
- area = Area.objects.get(urn=perm[len(prefix):])
- areas.add(area)
- return areas
-
def validate(modeladmin, request, queryset):
for item in queryset:
item.status = 'A'
@@ -101,10 +90,16 @@ export_to_csv.short_description = _(u"Export to CSV")
class PictureInline(admin.TabularInline):
model = PictureFile
extra = 1
+ ordering = ('order',)
+ form = PictureFileAdminForm
+ readonly_fields = ('height', 'width')
+ exclude = ('thumbnailfile', 'thumbnailfile_height', 'thumbnailfile_width')
class MultimediaInline(admin.TabularInline):
model = MultimediaFile
extra = 1
+ ordering = ('order',)
+ form = MultimediaFileAdminForm
class MarkerAdmin(admin.ModelAdmin):
"""
@@ -125,13 +120,14 @@ class MarkerAdmin(admin.ModelAdmin):
qs = self.model._default_manager.get_query_set()
if not request.user.is_superuser:
areas = get_areas_for_user(request.user)
- if areas:
- in_areas = " or ".join([area.getIncludeSql() for area in areas])
- qs = qs.extra(where=[in_areas])
+ contained = Q()
+ for area in areas:
+ contained = contained | area.getIncludeMarker()
+ qs = qs.filter(contained)
ordering = self.ordering or ()
if ordering:
qs = qs.order_by(*ordering)
- return qs
+ return qs.distinct()
class RouteAdmin(admin.ModelAdmin):
"""
@@ -143,16 +139,16 @@ class RouteAdmin(admin.ModelAdmin):
exclude = ['height', 'width']
form = RouteAdminForm
readonly_fields = ('associated_file',)
- actions = [validate]
+ actions = [validate, export_to_kml, export_to_shapefile, export_to_csv]
def queryset(self, request):
qs = self.model._default_manager.get_query_set()
if not request.user.is_superuser:
areas = get_areas_for_user(request.user)
- if areas:
- in_areas = " or ".join([area.getIncludeSql(
- geometry='"chimere_route".route') for area in areas])
- qs = qs.extra(where=[in_areas])
+ contained = Q()
+ for area in areas:
+ contained = contained | area.getIncludeRoute()
+ qs = qs.filter(contained)
ordering = self.ordering or ()
if ordering:
qs = qs.order_by(*ordering)
@@ -239,15 +235,6 @@ class ColorThemeAdmin(admin.ModelAdmin):
class IconAdmin(admin.ModelAdmin):
exclude = ['height', 'width']
-class MultimediaTypeAdmin(admin.ModelAdmin):
- search_fields = ("name",)
- list_display = ('name', 'media_type', 'mime_type', 'iframe', 'available')
- list_filter = ('media_type', 'available')
-
-class MultimediaExtensionAdmin(admin.ModelAdmin):
- list_display = ('name', 'multimedia_type')
- list_filter = ('multimedia_type',)
-
class PropertyModelChoiceInline(admin.TabularInline):
model = PropertyModelChoice
extra = 1
@@ -264,6 +251,4 @@ admin.site.register(Route, RouteAdmin)
admin.site.register(PropertyModel, PropertyModelAdmin)
admin.site.register(Area, AreaAdmin)
admin.site.register(ColorTheme, ColorThemeAdmin)
-admin.site.register(MultimediaExtension, MultimediaExtensionAdmin)
-admin.site.register(MultimediaType, MultimediaTypeAdmin)
admin.site.register(Layer)