diff options
author | Étienne Loks <etienne.loks@proxience.com> | 2015-04-20 09:14:35 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@proxience.com> | 2015-04-20 09:14:35 +0200 |
commit | 933c67e21f7ba3be26327fbdfb71191fd4fab89d (patch) | |
tree | d84a3b58e94a0c2ed326f685822b5e2bd7558c8c | |
parent | 0607368bae4b765807323a330a0ea5712f68fc2b (diff) | |
download | Chimère-933c67e21f7ba3be26327fbdfb71191fd4fab89d.tar.bz2 Chimère-933c67e21f7ba3be26327fbdfb71191fd4fab89d.zip |
Admin: add an area list filter for markers and routes
-rw-r--r-- | chimere/admin.py | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/chimere/admin.py b/chimere/admin.py index a93f96d..521c5a2 100644 --- a/chimere/admin.py +++ b/chimere/admin.py @@ -39,6 +39,7 @@ except ImportError: from chimere.forms import MarkerAdminForm, RouteAdminForm, AreaAdminForm,\ NewsAdminForm, CategoryAdminForm, ImporterAdminForm, OSMForm, \ PageAdminForm, PictureFileAdminForm, MultimediaFileAdminForm +from chimere import models from chimere.models import Category, Icon, SubCategory, Marker, \ PropertyModel, News, Route, Area, ColorTheme, Color, \ MultimediaFile, PictureFile, Importer, Layer, AreaLayers,\ @@ -176,13 +177,36 @@ class MultimediaInline(admin.TabularInline): ordering = ('order',) form = MultimediaFileAdminForm +class AreaMarkerListFilter(admin.SimpleListFilter): + title = _('area') + parameter_name = 'area' + + def lookups(self, request, model_admin): + return [(area.urn, area.name) for area in models.Area.objects.all()] + + def queryset(self, request, queryset): + try: + area = models.Area.objects.get(urn=self.value()) + except models.Area.DoesNotExist: + return queryset + return queryset.filter(area.getIncludeMarker()) + +class AreaRouteListFilter(AreaMarkerListFilter): + def queryset(self, request, queryset): + try: + area = models.Area.objects.get(urn=self.value()) + except models.Area.DoesNotExist: + return queryset + return queryset.filter(area.getIncludeRoute()) + class MarkerAdmin(admin.ModelAdmin): """ Specialized the Point field. """ search_fields = ("name",) list_display = ('name', 'status', 'start_date', 'end_date') - list_filter = ('status', 'categories', 'start_date', 'end_date') + list_filter = ('status', AreaMarkerListFilter, 'categories', 'start_date', + 'end_date') actions = [validate, disable, managed_modified, export_to_kml, export_to_shapefile, export_to_csv] exclude = ['submiter_session_key', 'import_key', 'import_version', @@ -255,14 +279,13 @@ class MarkerAdmin(admin.ModelAdmin): ) return my_urls + urls - class RouteAdmin(MarkerAdmin): """ Specialized the Route field. """ search_fields = ("name",) list_display = ('name', 'status') - list_filter = ('status', 'categories') + list_filter = ('status', AreaRouteListFilter, 'categories') exclude = ['height', 'width'] form = RouteAdminForm readonly_fields = ('associated_file', 'ref_item', 'has_associated_marker') |