diff --git a/geoposition/fields.py b/geoposition/fields.py index 9fe86bc..e54813d 100644 --- a/geoposition/fields.py +++ b/geoposition/fields.py @@ -1,7 +1,7 @@ from __future__ import unicode_literals from django.db import models -from django.utils.six import with_metaclass +from six import with_metaclass from django.utils.translation import ugettext_lazy as _ from django.utils.encoding import smart_text @@ -47,7 +47,7 @@ def get_prep_value(self, value): return str(value) def value_to_string(self, obj): - value = self._get_val_from_obj(obj) + value = self.value_from_object(obj) return smart_text(value) def formfield(self, **kwargs): diff --git a/geoposition/static/geoposition/geoposition.css b/geoposition/static/geoposition/geoposition.css index 5c7291c..52116eb 100644 --- a/geoposition/static/geoposition/geoposition.css +++ b/geoposition/static/geoposition/geoposition.css @@ -1,5 +1,6 @@ .geoposition-widget { - overflow: hidden; +/* overflow: hidden;*/ + font-weight: bold; } .geoposition-map { @@ -8,21 +9,10 @@ clear: both; } -.geoposition-widget table { - float: left; - border: 0; - margin-bottom: 8px; -} - -.geoposition-widget td { - border: 0; - padding: 0; - padding-right: 5px; - vertical-align: middle; -} - .geoposition-search { width: 30%; + float: right; + padding-right: 15px; } .geoposition-search input { @@ -31,12 +21,7 @@ .geoposition-address { float: left; - text-align: left; -} - -.geoposition-search { - float: right; - text-align: left; + line-height: 200%; } .geoposition-results { diff --git a/geoposition/static/geoposition/geoposition.js b/geoposition/static/geoposition/geoposition.js index ec5df01..f78544b 100644 --- a/geoposition/static/geoposition/geoposition.js +++ b/geoposition/static/geoposition/geoposition.js @@ -33,7 +33,7 @@ if (jQuery != undefined) { $mapContainer = $('
'), $addressRow = $(''), $searchRow = $(''), - $searchInput = $('', {'type': 'search', 'placeholder': 'Start typing an address …'}), + $searchInput = $('', {'type': 'text', 'placeholder': 'Start typing an address …'}), $latitudeField = $container.find('input.geoposition:eq(0)'), $longitudeField = $container.find('input.geoposition:eq(1)'), latitude = parseFloat($latitudeField.val()) || null, @@ -120,7 +120,7 @@ if (jQuery != undefined) { $(this).parent().find('ul.geoposition-results').remove(); }); $searchInput.appendTo($searchRow); - $container.append($searchRow, $mapContainer, $addressRow); + $container.append($searchRow, $addressRow, $mapContainer); mapLatLng = new google.maps.LatLng(latitude, longitude); diff --git a/geoposition/templates/geoposition/widgets/geoposition.html b/geoposition/templates/geoposition/widgets/geoposition.html index e621ad4..d2e26cf 100644 --- a/geoposition/templates/geoposition/widgets/geoposition.html +++ b/geoposition/templates/geoposition/widgets/geoposition.html @@ -1,12 +1,7 @@ - + diff --git a/geoposition/widgets.py b/geoposition/widgets.py index e2b82a1..e4be8a9 100644 --- a/geoposition/widgets.py +++ b/geoposition/widgets.py @@ -3,34 +3,33 @@ import json from django import forms from django.template.loader import render_to_string -from django.utils import six +import six from django.utils.translation import ugettext_lazy as _ from .conf import settings class GeopositionWidget(forms.MultiWidget): + template_name = 'geoposition/widgets/geoposition.html' + def __init__(self, attrs=None): widgets = ( forms.TextInput(), forms.TextInput(), ) super(GeopositionWidget, self).__init__(widgets, attrs) + + def get_context(self, name, value, attrs): + context = super().get_context(name, value, attrs) + if not isinstance(value, list): + value = self.decompress(value) - def decompress(self, value): - if isinstance(value, six.text_type): - return value.rsplit(',') - if value: - return [value.latitude, value.longitude] - return [None, None] - - def format_output(self, rendered_widgets): - return render_to_string('geoposition/widgets/geoposition.html', { + context['widget'] = { 'latitude': { - 'html': rendered_widgets[0], + 'html': value[0], 'label': _("latitude"), }, 'longitude': { - 'html': rendered_widgets[1], + 'html': value[1], 'label': _("longitude"), }, 'config': { @@ -38,7 +37,16 @@ def format_output(self, rendered_widgets): 'map_options': json.dumps(settings.MAP_OPTIONS), 'marker_options': json.dumps(settings.MARKER_OPTIONS), } - }) + } + return context + + def decompress(self, value): + if isinstance(value, six.text_type): + return value.rsplit(',') + if value: + return [value.latitude, value.longitude] + return [None, None] + class Media: js = (