From a74cf48eecc023a1213c61888a688e527a98dfe1 Mon Sep 17 00:00:00 2001 From: Federico Capoano Date: Sun, 28 Sep 2014 00:41:42 +0200 Subject: [PATCH] Removed olwidget dependency #152 --- nodeshot/conf/settings.py | 1 - nodeshot/core/base/admin.py | 73 ++++++++++++------------------------- requirements.txt | 3 -- 3 files changed, 24 insertions(+), 53 deletions(-) diff --git a/nodeshot/conf/settings.py b/nodeshot/conf/settings.py index 024e7b92..87315d1b 100755 --- a/nodeshot/conf/settings.py +++ b/nodeshot/conf/settings.py @@ -106,7 +106,6 @@ # 3d parthy django apps 'rest_framework', 'rest_framework_swagger', - 'olwidget', 'south', 'smuggler', 'reversion', diff --git a/nodeshot/core/base/admin.py b/nodeshot/core/base/admin.py index a159b1c1..196b3541 100755 --- a/nodeshot/core/base/admin.py +++ b/nodeshot/core/base/admin.py @@ -1,19 +1,13 @@ from django.contrib import admin -from django.contrib.gis.geos import Point +from django.contrib.gis import forms from django.core.exceptions import ImproperlyConfigured from django.conf import settings from django.utils.translation import ugettext_lazy as _ +from django.contrib.gis.admin import ModelAdmin as GeoModelAdmin +# TODO these settings at the moment are not being used from .settings import ADMIN_MAP_COORDINATES, ADMIN_MAP_ZOOM -GEODJANGO_IMPROVED_WIDGETS = 'olwidget' in settings.INSTALLED_APPS - - -if GEODJANGO_IMPROVED_WIDGETS: - from olwidget.admin import GeoModelAdmin -else: - from django.contrib.gis.admin import ModelAdmin as GeoModelAdmin - def _get_geodjango_map_coords(): """ point to be used by geodjango """ @@ -21,15 +15,9 @@ def _get_geodjango_map_coords(): lat, lng = ADMIN_MAP_COORDINATES except KeyError: raise ImproperlyConfigured("incorrect NODESHOT_ADMIN_MAP_COORDINATES setting") - - point = Point(lng, lat, srid=4326) - - if GEODJANGO_IMPROVED_WIDGETS: - return (lat, lng) - else: - point.transform(900913) - return point - + return lat, lng + + def _get_geodjango_map_zoom(): """ zoom level to be used by geodjango """ try: @@ -46,49 +34,36 @@ class BaseAdmin(admin.ModelAdmin): """ save_on_top = True readonly_fields = ['added', 'updated'] - html_editor_fields = [] - # preload tinymce editor static files - if 'grappelli' in settings.INSTALLED_APPS: + if 'grappelli' in settings.INSTALLED_APPS: class Media: js = [ '%sgrappelli/tinymce/jscripts/tiny_mce/tiny_mce.js' % settings.STATIC_URL, '%sgrappelli/tinymce_setup/tinymce_setup_ns.js' % settings.STATIC_URL, ] - # enable editor for "node description" only def formfield_for_dbfield(self, db_field, **kwargs): field = super(BaseAdmin, self).formfield_for_dbfield(db_field, **kwargs) - if db_field.name in self.html_editor_fields: field.widget.attrs['class'] = 'html-editor %s' % field.widget.attrs.get('class', '') - return field +class GeoForm(forms.ModelForm): + # TODO entirely configurable + geometry = forms.GeometryField(widget=forms.OSMWidget(attrs={ + 'map_width': 758, + 'map_height': 500, + 'display_raw': settings.DEBUG + })) + + class BaseGeoAdmin(BaseAdmin, GeoModelAdmin): """ BaseAdmin + Geodjango support """ - if GEODJANGO_IMPROVED_WIDGETS: - lat, lng = _get_geodjango_map_coords() - options = { - 'layers': [ - 'osm.mapnik', - 'google.streets', - 'google.physical', - 'google.satellite', - 'google.hybrid', - ], - 'default_lat': lat, - 'default_lon': lng, - 'default_zoom': _get_geodjango_map_zoom(), - 'hide_textarea': not settings.DEBUG, # TODO: this might be configured in the future - } - else: - default_lon, default_lat = _get_geodjango_map_coords() - default_zoom = _get_geodjango_map_zoom() + form = GeoForm class PublishActionsAdminMixin(object): @@ -101,26 +76,26 @@ class PublishActionsAdminMixin(object): def publish_action(self, request, queryset): rows_updated = queryset.update(is_published=True) - + if rows_updated == 1: message_bit = _("1 item was") else: message_bit = _("%s items were") % rows_updated - + self.message_user(request, _("%s successfully published.") % message_bit) - + publish_action.short_description = _("Publish selected items") - + def unpublish_action(self, request, queryset): rows_updated = queryset.update(is_published=False) - + if rows_updated == 1: message_bit = _("1 item was") else: message_bit = _("%s items were") % rows_updated - + self.message_user(request, _("%s successfully unpublished.") % message_bit) - + unpublish_action.short_description = _("Unpublish selected items") diff --git a/requirements.txt b/requirements.txt index 00f63589..90642d55 100755 --- a/requirements.txt +++ b/requirements.txt @@ -20,9 +20,6 @@ requests django-grappelli==2.5.3 django-filebrowser==3.5.6 -# geodjango improved widgets -django-olwidget - # RESTful API and API documentation djangorestframework==2.4.3 drf-extensions==0.2.5