From 677a6a7ccada3cc20c0c9d104595bdf836dff4a4 Mon Sep 17 00:00:00 2001 From: Synkied Date: Fri, 18 May 2018 17:27:04 +0200 Subject: [PATCH 1/5] Added a GOOGLE_MAPS_DEFAULT_LANGUAGE constant This constant can be used to set the default language of the google map widget displayed. I think it can be useful. In my case, I'm working with an english client, but work in France, so the google maps API sets the Google Maps iframe to french language (based on my location). I would like to be able to add items to the database that are in English, so I need to set the Google Maps widget language to English. Hope this helps ! To use it, you simply have to set the GOOGLE_MAPS_DEFAULT_LANGUAGE in your settings.py file (list of languages: https://developers.google.com/maps/faq#languagesupport) --- django_google_maps/widgets.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/django_google_maps/widgets.py b/django_google_maps/widgets.py index e2183d29..3a48886a 100644 --- a/django_google_maps/widgets.py +++ b/django_google_maps/widgets.py @@ -13,7 +13,7 @@ class Media: } js = ( 'https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js', - 'https://maps.google.com/maps/api/js?key={}&libraries=places'.format( - settings.GOOGLE_MAPS_API_KEY), + 'https://maps.google.com/maps/api/js?key={}&libraries=places&language={}'.format( + settings.GOOGLE_MAPS_API_KEY, settings.GOOGLE_MAPS_DEFAULT_LANGUAGE), settings.STATIC_URL + 'django_google_maps/js/google-maps-admin.js', ) From ea49ceb9e0685d5f1dacbff2fb5dbdf7b3af3d1c Mon Sep 17 00:00:00 2001 From: Synkied Date: Mon, 21 May 2018 10:08:35 +0200 Subject: [PATCH 2/5] Added a GOOGLE_MAPS_DEFAULT_LANGUAGE constant --- settings.py | 1 + 1 file changed, 1 insertion(+) diff --git a/settings.py b/settings.py index e7bf170d..86e3fa8f 100644 --- a/settings.py +++ b/settings.py @@ -150,3 +150,4 @@ GOOGLE_MAPS_API_KEY = 'SAMPLE_KEY' +GOOGLE_MAPS_DEFAULT_LANGUAGE = 'DEFAULT_LANGUAGE' From d2f95eed6393f374b405161710ef377e87546fce Mon Sep 17 00:00:00 2001 From: Synkied Date: Mon, 21 May 2018 10:37:36 +0200 Subject: [PATCH 3/5] modified a test --- django_google_maps/tests/test_widget.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/django_google_maps/tests/test_widget.py b/django_google_maps/tests/test_widget.py index 8e8c9c3f..3bc426f1 100644 --- a/django_google_maps/tests/test_widget.py +++ b/django_google_maps/tests/test_widget.py @@ -20,8 +20,9 @@ def test_render_returns_blank_for_value_when_none(self): expected += '
' self.assertHTMLEqual(expected, results) - def test_maps_js_uses_api_key(self): + def test_maps_js_uses_api_key_and_default_language(self): widget = GoogleMapsAddressWidget() - google_maps_js = "https://maps.google.com/maps/api/js?key={}&libraries=places".format( - settings.GOOGLE_MAPS_API_KEY) + google_maps_js = "https://maps.google.com/maps/api/js?key={}&libraries=places&language={}".format( + settings.GOOGLE_MAPS_API_KEY, + settings.GOOGLE_MAPS_DEFAULT_LANGUAGE) self.assertEqual(google_maps_js, widget.Media().js[1]) From e4abfe288b8936df71129d89abc8b3c4e2fe5635 Mon Sep 17 00:00:00 2001 From: Synkied Date: Thu, 31 May 2018 15:10:28 +0200 Subject: [PATCH 4/5] added default language depending on os language --- django_google_maps/widgets.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/django_google_maps/widgets.py b/django_google_maps/widgets.py index 3a48886a..6c3b75a8 100644 --- a/django_google_maps/widgets.py +++ b/django_google_maps/widgets.py @@ -1,6 +1,18 @@ +import locale + from django.conf import settings from django.forms import widgets +if hasattr(settings, 'GOOGLE_MAPS_DEFAULT_LANGUAGE'): + GOOGLE_MAPS_DEFAULT_LANGUAGE = settings.GOOGLE_MAPS_DEFAULT_LANGUAGE + +else: + if locale.getdefaultlocale(): + GOOGLE_MAPS_DEFAULT_LANGUAGE = locale.getdefaultlocale()[0] + + else: + GOOGLE_MAPS_DEFAULT_LANGUAGE = 'en' + class GoogleMapsAddressWidget(widgets.TextInput): """a widget that will place a google map right after the #id_address field""" @@ -14,6 +26,6 @@ class Media: js = ( 'https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js', 'https://maps.google.com/maps/api/js?key={}&libraries=places&language={}'.format( - settings.GOOGLE_MAPS_API_KEY, settings.GOOGLE_MAPS_DEFAULT_LANGUAGE), + settings.GOOGLE_MAPS_API_KEY, GOOGLE_MAPS_DEFAULT_LANGUAGE), settings.STATIC_URL + 'django_google_maps/js/google-maps-admin.js', ) From 528cdaf456fd9a481603399593561af6a539677a Mon Sep 17 00:00:00 2001 From: Synkied Date: Thu, 31 May 2018 15:20:27 +0200 Subject: [PATCH 5/5] better testcase --- .pytest_cache/v/cache/lastfailed | 4 ++++ .pytest_cache/v/cache/nodeids | 19 +++++++++++++++++++ django_google_maps/tests/test_widget.py | 14 +++++++++++++- 3 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 .pytest_cache/v/cache/lastfailed create mode 100644 .pytest_cache/v/cache/nodeids diff --git a/.pytest_cache/v/cache/lastfailed b/.pytest_cache/v/cache/lastfailed new file mode 100644 index 00000000..512c7494 --- /dev/null +++ b/.pytest_cache/v/cache/lastfailed @@ -0,0 +1,4 @@ +{ + "django_google_maps/tests/test_geolocation_field.py": true, + "django_google_maps/tests/test_widget.py": true +} \ No newline at end of file diff --git a/.pytest_cache/v/cache/nodeids b/.pytest_cache/v/cache/nodeids new file mode 100644 index 00000000..ac107d8d --- /dev/null +++ b/.pytest_cache/v/cache/nodeids @@ -0,0 +1,19 @@ +[ + "django_google_maps/tests/test_geopt_field.py::GeoPtFieldTests::test_allows_GeoPt_instantiated_with_empty_string", + "django_google_maps/tests/test_geopt_field.py::GeoPtFieldTests::test_is_not_equal_when_comparison_is_not_GeoPt_object", + "django_google_maps/tests/test_geopt_field.py::GeoPtFieldTests::test_len_returns_len_of_unicode_value", + "django_google_maps/tests/test_geopt_field.py::GeoPtFieldTests::test_raises_error_when_attribute_error_on_split", + "django_google_maps/tests/test_geopt_field.py::GeoPtFieldTests::test_raises_error_when_type_error_on_split", + "django_google_maps/tests/test_geopt_field.py::GeoPtFieldTests::test_raises_exception_when_value_is_out_of_lower_range", + "django_google_maps/tests/test_geopt_field.py::GeoPtFieldTests::test_raises_exception_when_value_is_out_of_upper_range", + "django_google_maps/tests/test_geopt_field.py::GeoPtFieldTests::test_returns_float_value_when_valid_value", + "django_google_maps/tests/test_geopt_field.py::GeoPtFieldTests::test_sets_lat_lon_on_initialization", + "django_google_maps/tests/test_geopt_field.py::GeoPtFieldTests::test_splits_geo_point_on_comma", + "django_google_maps/tests/test_geopt_field.py::GeoPtFieldTests::test_two_GeoPts_with_different_lat_should_not_be_equal", + "django_google_maps/tests/test_geopt_field.py::GeoPtFieldTests::test_two_GeoPts_with_different_lon_should_not_be_equal", + "django_google_maps/tests/test_geopt_field.py::GeoPtFieldTests::test_two_GeoPts_with_same_lat_lon_should_be_equal", + "django_google_maps/tests/test_geopt_field.py::GeoPtFieldTests::test_uses_empty_string_as_unicode_representation_for_empty_GeoPt", + "django_google_maps/tests/test_geopt_field.py::GeoPtFieldTests::test_uses_lat_comma_lon_as_unicode_representation", + "django_google_maps/tests/test_typename.py::TypeNameTests::test_class_object", + "django_google_maps/tests/test_typename.py::TypeNameTests::test_simple_type_returns_type_name_as_string" +] \ No newline at end of file diff --git a/django_google_maps/tests/test_widget.py b/django_google_maps/tests/test_widget.py index 3bc426f1..34b61323 100644 --- a/django_google_maps/tests/test_widget.py +++ b/django_google_maps/tests/test_widget.py @@ -1,9 +1,21 @@ +import locale + from django import test from django.conf import settings from django_google_maps.widgets import GoogleMapsAddressWidget class WidgetTests(test.TestCase): + def setUp(self): + if hasattr(settings, 'GOOGLE_MAPS_DEFAULT_LANGUAGE'): + self.GOOGLE_MAPS_DEFAULT_LANGUAGE = settings.GOOGLE_MAPS_DEFAULT_LANGUAGE + + else: + if locale.getdefaultlocale(): + self.GOOGLE_MAPS_DEFAULT_LANGUAGE = locale.getdefaultlocale()[0] + else: + self.GOOGLE_MAPS_DEFAULT_LANGUAGE = 'en' + def test_render_returns_xxxxxxx(self): widget = GoogleMapsAddressWidget() results = widget.render('name', 'value', attrs={'a1': 1, 'a2': 2}) @@ -24,5 +36,5 @@ def test_maps_js_uses_api_key_and_default_language(self): widget = GoogleMapsAddressWidget() google_maps_js = "https://maps.google.com/maps/api/js?key={}&libraries=places&language={}".format( settings.GOOGLE_MAPS_API_KEY, - settings.GOOGLE_MAPS_DEFAULT_LANGUAGE) + self.GOOGLE_MAPS_DEFAULT_LANGUAGE) self.assertEqual(google_maps_js, widget.Media().js[1])