diff options
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 |
commit | ea65e5512c236b81e7f4b8757521facadae4b3b8 (patch) | |
tree | 739cdf40fb6a89de90c4189936d695288a82849f /chimere/admin.py | |
parent | 4b0f0777c434f5fa1366ca408c34d257d4833fad (diff) | |
parent | a55f77a246f99764ff6289686f80825526654e2b (diff) | |
download | Chimè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.py | 61 |
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) |