diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-02-21 17:13:43 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-02-21 17:13:43 +0100 |
commit | fee4daab6598a3d6e51a31e2e70e059fc5419908 (patch) | |
tree | abd3460120b64a054600cfbd04cf4ae18ee6ce30 /chimere/admin.py | |
parent | c3f043e4937bd9ed7c68a38488e588866943f4c5 (diff) | |
download | Chimère-fee4daab6598a3d6e51a31e2e70e059fc5419908.tar.bz2 Chimère-fee4daab6598a3d6e51a31e2e70e059fc5419908.zip |
Basic integration of polygons
Diffstat (limited to 'chimere/admin.py')
-rw-r--r-- | chimere/admin.py | 99 |
1 files changed, 68 insertions, 31 deletions
diff --git a/chimere/admin.py b/chimere/admin.py index 3ea5b7b..e51bc3d 100644 --- a/chimere/admin.py +++ b/chimere/admin.py @@ -1,6 +1,6 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# Copyright (C) 2008-2015 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet> +# Copyright (C) 2008-2016 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet> # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as @@ -20,6 +20,9 @@ """ Settings for administration pages """ + +from copy import deepcopy + from django.conf import settings from django.contrib import admin, messages from django.contrib.admin import SimpleListFilter @@ -38,7 +41,8 @@ except ImportError: from chimere.forms import MarkerAdminForm, RouteAdminForm, AreaAdminForm,\ NewsAdminForm, CategoryAdminForm, ImporterAdminForm, OSMForm, \ - PageAdminForm, PictureFileAdminForm, MultimediaFileAdminForm + PageAdminForm, PictureFileAdminForm, MultimediaFileAdminForm, \ + PolygonAdminForm from chimere import models from chimere.models import Category, Icon, SubCategory, Marker, \ PropertyModel, News, Route, Area, ColorTheme, Color, \ @@ -222,6 +226,15 @@ class AreaRouteListFilter(AreaMarkerListFilter): return queryset.filter(area.getIncludeRoute()) +class AreaPolygonListFilter(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.getIncludePolygon()) + + class HasCategoriesListFilter(SimpleListFilter): title = _('Has categories') parameter_name = 'has_category' @@ -275,6 +288,38 @@ def moderator_right(user, qs, geo_type='marker'): limited_for_user__user=user).all()) return qs +MARKER_FIELDSETS = [ + [None, { + 'fields': ['point', 'name', 'status', 'categories', 'description', + 'keywords', 'start_date', 'end_date'] + }], + [_(u"Submitter"), { + 'classes': ('collapse',), + 'fields': ('submiter_name', 'submiter_email', 'submiter_comment') + }], + [_(u"Import"), { + 'classes': ('collapse',), + 'fields': ('not_for_osm', 'modified_since_import', 'import_source', + 'origin', 'license') + }], + [_(u"Associated items"), { + 'classes': ('collapse',), + 'fields': ['ref_item', 'route'] + }] +] + +ROUTE_FIELDSETS = deepcopy(MARKER_FIELDSETS) +ROUTE_FIELDSETS[0][1]['fields'][0] = 'route' +ROUTE_FIELDSETS[0][1]['fields'].pop(ROUTE_FIELDSETS[0][1]['fields'].index( + 'description')) +ROUTE_FIELDSETS[3][1]['fields'] = ('ref_item', 'associated_file', + 'has_associated_marker') +POLYGON_FIELDSETS = deepcopy(MARKER_FIELDSETS) +POLYGON_FIELDSETS[0][1]['fields'][0] = 'polygon' +POLYGON_FIELDSETS[0][1]['fields'].pop(POLYGON_FIELDSETS[0][1]['fields'].index( + 'description')) +POLYGON_FIELDSETS.pop(3) + class MarkerAdmin(admin.ModelAdmin): """ @@ -292,20 +337,7 @@ class MarkerAdmin(admin.ModelAdmin): 'submiter_email', 'submiter_comment', 'import_source', 'submiter_name', 'ref_item', 'modified_since_import', 'route'] form = MarkerAdminForm - fieldsets = ((None, { - 'fields': ['point', 'name', 'status', 'categories', 'description', - 'keywords', 'start_date', 'end_date'] - }), (_(u"Submitter"), { - 'classes': ('collapse',), - 'fields': ('submiter_name', 'submiter_email', 'submiter_comment') - }), (_(u"Import"), { - 'classes': ('collapse',), - 'fields': ('not_for_osm', 'modified_since_import', 'import_source', - 'origin', 'license') - }), (_(u"Associated items"), { - 'classes': ('collapse',), - 'fields': ('ref_item', 'route',) - }),) + fieldsets = MARKER_FIELDSETS inlines = [MultimediaInline, PictureInline] has_properties = True @@ -372,20 +404,7 @@ class RouteAdmin(MarkerAdmin): readonly_fields = ('associated_file', 'ref_item', 'has_associated_marker') actions = [validate, disable, managed_modified, export_to_kml, export_to_shapefile, export_to_csv] - fieldsets = ((None, { - 'fields': ['route', 'name', 'status', 'categories', 'start_date', - 'end_date'] - }), (_(u"Submitter"), { - 'classes': ('collapse',), - 'fields': ('submiter_name', 'submiter_email', 'submiter_comment') - }), (_(u"Import"), { - 'classes': ('collapse',), - 'fields': ('modified_since_import', 'import_source', 'origin', - 'license') - }), (_(u"Associated items"), { - 'classes': ('collapse',), - 'fields': ('ref_item', 'associated_file', 'has_associated_marker') - }),) + fieldsets = ROUTE_FIELDSETS inlines = [] has_properties = False @@ -405,6 +424,23 @@ class RouteAdmin(MarkerAdmin): Route.objects.filter(pk=item_id)) +class PolygonAdmin(MarkerAdmin): + """ + Specialized the Polygon field. + """ + list_filter = ('status', AreaPolygonListFilter, 'categories') + form = PolygonAdminForm + actions = [validate, disable, managed_modified, export_to_kml, + export_to_shapefile, export_to_csv] + readonly_fields = [ + 'submiter_email', 'submiter_comment', 'import_source', + 'submiter_name', 'ref_item', 'modified_since_import',] + exclude = ['submiter_session_key', 'import_key', 'import_version', + 'ref_item'] + inlines = [] + fieldsets = POLYGON_FIELDSETS + + class LayerInline(admin.TabularInline): model = AreaLayers extra = 1 @@ -560,7 +596,8 @@ admin.site.register(News, NewsAdmin) admin.site.register(Category, CategoryAdmin) admin.site.register(Icon, IconAdmin) admin.site.register(Marker, MarkerAdmin) -admin.site.register(Route, RouteAdmin) +admin.site.register(models.Route, RouteAdmin) +admin.site.register(models.Polygon, PolygonAdmin) if not settings.CHIMERE_HIDE_PROPERTYMODEL: admin.site.register(PropertyModel, PropertyModelAdmin) admin.site.register(Area, AreaAdmin) |