Skip to content

Commit

Permalink
Merge branch 'release/2.2.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
Saeed Marzban authored and Saeed Marzban committed Sep 19, 2017
2 parents 5690a06 + 666abf1 commit 173ed66
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 22 deletions.
2 changes: 1 addition & 1 deletion VERSION
@@ -1 +1 @@
2.1.4
2.2.0
Expand Up @@ -36,7 +36,9 @@ <h1 class="heading heading--service-dir-organisation">{{ organisation.name }}</h
{% endif %}
</a>
<span class="service-dir-location__address">{{ organisation.address }}</span>
{% if organisation.distance %}
<span class="service-dir-location__distance">{{ organisation.distance }}</span>
{% endif %}
</li>
{% empty %}
<li class="service-list__item">
Expand Down
73 changes: 52 additions & 21 deletions molo/servicedirectory/views.py
Expand Up @@ -6,16 +6,41 @@
from django.http import QueryDict, HttpResponseRedirect
from django.views.generic import TemplateView, View
from molo.servicedirectory import settings
from molo.core.models import SiteSettings


def make_request_to_servicedirectory_api(url, data=None):
def get_service_directory_api_username(request):
site_settings = SiteSettings.for_site(request.site)
return (site_settings.service_directory_api_username or
settings.SERVICE_DIRECTORY_API_USERNAME)


def get_service_directory_api_password(request):
site_settings = SiteSettings.for_site(request.site)
return (site_settings.service_directory_api_password or
settings.SERVICE_DIRECTORY_API_PASSWORD)


def get_service_directory_api_base_url(request):
site_settings = SiteSettings.for_site(request.site)
return (site_settings.service_directory_api_base_url or
settings.SERVICE_DIRECTORY_API_BASE_URL)


def get_google_places_api_server_key(request):
site_settings = SiteSettings.for_site(request.site)
return (site_settings.google_places_api_server_key or
settings.GOOGLE_PLACES_API_SERVER_KEY)


def make_request_to_servicedirectory_api(url, request, data=None):
if data is not None:
data = json.dumps(data)

api_request = urllib2.Request(url, data=data)

basic_auth_username = settings.SERVICE_DIRECTORY_API_USERNAME
basic_auth_password = settings.SERVICE_DIRECTORY_API_PASSWORD
basic_auth_username = get_service_directory_api_username(request)
basic_auth_password = get_service_directory_api_password(request)
base64string = base64.encodestring(
'{0}:{1}'.format(basic_auth_username, basic_auth_password)
).replace('\n', '')
Expand Down Expand Up @@ -51,23 +76,25 @@ def get_context_data(self, **kwargs):

if not category:
categories_keywords_url = '{0}homepage_categories_keywords/'\
.format(settings.SERVICE_DIRECTORY_API_BASE_URL)
.format(get_service_directory_api_base_url(self.request))

categories_keywords = make_request_to_servicedirectory_api(
categories_keywords_url
categories_keywords_url,
self.request
)

else:
service_directory_query_parms = QueryDict('', mutable=True)
service_directory_query_parms['category'] = category

keywords_url = '{0}keywords/?{1}'.format(
settings.SERVICE_DIRECTORY_API_BASE_URL,
get_service_directory_api_base_url(self.request),
service_directory_query_parms.urlencode()
)

keywords = make_request_to_servicedirectory_api(
keywords_url
keywords_url,
self.request
)

categories_keywords = [
Expand Down Expand Up @@ -107,7 +134,8 @@ def get_context_data(self, **kwargs):
google_query_parms = QueryDict('', mutable=True)
google_query_parms['input'] = location_term
google_query_parms['types'] = 'geocode'
google_query_parms['key'] = settings.GOOGLE_PLACES_API_SERVER_KEY
google_query_parms['key'] = get_google_places_api_server_key(
self.request)

url = 'https://maps.googleapis.com/maps/api/place/autocomplete/json'

Expand Down Expand Up @@ -141,7 +169,8 @@ def get_context_data(self, **kwargs):
if place_latlng is None:
google_query_parms = QueryDict('', mutable=True)
google_query_parms['placeid'] = place_id
google_query_parms['key'] = settings.GOOGLE_PLACES_API_SERVER_KEY
google_query_parms['key'] = get_google_places_api_server_key(
self.request)

url = 'https://maps.googleapis.com/maps/api/place/details/json'
place_details = make_request_to_google_api(url, google_query_parms)
Expand Down Expand Up @@ -171,20 +200,22 @@ def get_context_data(self, **kwargs):
place_formatted_address

url = '{0}search/?{1}'.format(
settings.SERVICE_DIRECTORY_API_BASE_URL,
get_service_directory_api_base_url(self.request),
service_directory_query_parms.urlencode()
)
search_results = make_request_to_servicedirectory_api(url)
search_results = make_request_to_servicedirectory_api(
url, self.request)

categories_keywords = []
if not search_results:
# TODO: consider caching the categories and keywords when we fetch
# them for the home page, then retrieving them from the cache here
categories_keywords_url = '{0}homepage_categories_keywords/'\
.format(settings.SERVICE_DIRECTORY_API_BASE_URL)
.format(get_service_directory_api_base_url(self.request))

categories_keywords = make_request_to_servicedirectory_api(
categories_keywords_url
categories_keywords_url,
self.request
)

location_query_parms = QueryDict('', mutable=True)
Expand Down Expand Up @@ -215,13 +246,13 @@ def get_context_data(self, **kwargs):
)

service_directory_api_base_url =\
settings.SERVICE_DIRECTORY_API_BASE_URL
get_service_directory_api_base_url(self.request)
organisation_id = self.kwargs['organisation_id']

url = '{0}organisation/{1}/'.format(service_directory_api_base_url,
organisation_id)

json_result = make_request_to_servicedirectory_api(url)
json_result = make_request_to_servicedirectory_api(url, self.request)

context['organisation'] = json_result
context['message'] = self.request.GET.get('msg', None)
Expand All @@ -244,7 +275,7 @@ def get_context_data(self, **kwargs):

def post(self, request, *args, **kwargs):
service_directory_api_base_url =\
settings.SERVICE_DIRECTORY_API_BASE_URL
get_service_directory_api_base_url(self.request)
organisation_id = kwargs['organisation_id']

url = '{0}organisation/{1}/report/'.format(
Expand All @@ -256,7 +287,7 @@ def post(self, request, *args, **kwargs):
if 'csrfmiddlewaretoken' in data:
data.pop('csrfmiddlewaretoken') # no point passing this to the API

make_request_to_servicedirectory_api(url, data=data)
make_request_to_servicedirectory_api(url, self.request, data=data)

query_params = QueryDict('', mutable=True)
query_params['msg'] = 'Thanks! We\'ve received your report and will' \
Expand All @@ -274,7 +305,7 @@ def post(self, request, *args, **kwargs):
class OrganisationRateView(View):
def post(self, request, *args, **kwargs):
service_directory_api_base_url =\
settings.SERVICE_DIRECTORY_API_BASE_URL
get_service_directory_api_base_url(request)
organisation_id = kwargs['organisation_id']

url = '{0}organisation/{1}/rate/'.format(
Expand All @@ -286,7 +317,7 @@ def post(self, request, *args, **kwargs):
if 'csrfmiddlewaretoken' in data:
data.pop('csrfmiddlewaretoken') # no point passing this to the API

make_request_to_servicedirectory_api(url, data=data)
make_request_to_servicedirectory_api(url, request, data=data)

query_params = QueryDict('', mutable=True)
query_params['msg'] = 'Thanks for telling us how helpful this service'\
Expand All @@ -307,7 +338,7 @@ class OrganisationSendSmsView(TemplateView):

def post(self, request, *args, **kwargs):
service_directory_api_base_url =\
settings.SERVICE_DIRECTORY_API_BASE_URL
get_service_directory_api_base_url(self.request)
organisation_id = kwargs['organisation_id']

url = '{0}organisation/sms/'.format(service_directory_api_base_url)
Expand All @@ -321,7 +352,7 @@ def post(self, request, *args, **kwargs):
if 'csrfmiddlewaretoken' in data:
data.pop('csrfmiddlewaretoken') # no point passing this to the API

make_request_to_servicedirectory_api(url, data=data)
make_request_to_servicedirectory_api(url, request, data=data)

query_params = QueryDict('', mutable=True)
query_params['msg'] = 'Thanks! We''ve sent an SMS with a link for' \
Expand Down

0 comments on commit 173ed66

Please sign in to comment.