diff options
author | Étienne Loks <etienne.loks@peacefrogs.net> | 2012-07-05 19:50:18 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@peacefrogs.net> | 2012-07-05 19:50:18 +0200 |
commit | fd5a65ede91637d41162ebcf3eda378bbbbc8690 (patch) | |
tree | f5894d7129f73afbf989daff6eb6e8e7f6627cb0 | |
parent | f8c7d5a6aa8460db14ddfe39944d19a872b1be8d (diff) | |
download | Chimère-fd5a65ede91637d41162ebcf3eda378bbbbc8690.tar.bz2 Chimère-fd5a65ede91637d41162ebcf3eda378bbbbc8690.zip |
Fix bad share networks links
-rw-r--r-- | chimere/views.py | 25 | ||||
-rw-r--r-- | example_project/settings.py | 5 |
2 files changed, 20 insertions, 10 deletions
diff --git a/chimere/views.py b/chimere/views.py index 08a0add..2c50e2a 100644 --- a/chimere/views.py +++ b/chimere/views.py @@ -49,6 +49,17 @@ from chimere.forms import MarkerForm, RouteForm, ContactForm, FileForm, \ FullFileForm, MultimediaFileFormSet, PictureFileFormSet, notifySubmission,\ notifyStaff, AreaForm +def get_base_uri(request): + base_uri = 'http://' + if 'HTTP_REFERER' in request.META: + if request.META['HTTP_REFERER'].startswith('https:'): + base_uri = 'https://' + if 'SERVER_NAME' in request.META: + base_uri += request.META['SERVER_NAME'] + if 'SERVER_PORT' in request.META: + base_uri += ":" + request.META['SERVER_PORT'] + return base_uri + #TODO: convert to requestcontext def get_base_response(area_name=""): """ @@ -193,11 +204,7 @@ def get_edit_page(redirect_url, item_cls, item_form): for f in formset_picture: f.save(item) - base_uri = 'http://' - if 'SERVER_NAME' in request.META: - base_uri += request.META['SERVER_NAME'] - if 'SERVER_PORT' in request.META: - base_uri += ":" + request.META['SERVER_PORT'] + base_uri = get_base_uri(request) notifySubmission(base_uri, item) response_dct = get_base_response(area_name) return redirect(redirect_url + '-item', @@ -440,9 +447,9 @@ def getDetail(request, area_name, marker_id): parameters = u'current_feature=%s' % marker_id parameters += u"&checked_categories=%s" % "_".join([str(m.id) \ for m in marker.categories.all()]) - net_dct = getTinyfiedUrl(parameters, response_dct['area_name']) + net_dct = getTinyfiedUrl(request, parameters, response_dct['area_name']) share_networks = [] - for network in settings.SHARE_NETWORKS: + for network in settings.CHIMERE_SHARE_NETWORKS: share_networks.append((network[0], network[1] % net_dct, network[2])) response_dct['share_networks'] = share_networks response_dct['dated'] = settings.CHIMERE_DAYS_BEFORE_EVENT \ @@ -565,7 +572,7 @@ def get_available_categories(request, area_name=None, area=None, status='A', return render_to_response('chimere/blocks/categories.html', context_data, context_instance=RequestContext(request)) -def getTinyfiedUrl(parameters, area_name=''): +def getTinyfiedUrl(request, parameters, area_name=''): ''' Get the tinyfied version of parameters ''' @@ -578,6 +585,8 @@ def getTinyfiedUrl(parameters, area_name=''): if redir: return redir url = reverse('chimere:tiny', args=[response_dct['area_name'] + '/', urn]) + if not url.startswith('http'): + url = get_base_uri(request) + url text = settings.PROJECT_NAME if 'current_feature' in parameters: for item in parameters.split('&'): diff --git a/example_project/settings.py b/example_project/settings.py index e821682..69a3fbf 100644 --- a/example_project/settings.py +++ b/example_project/settings.py @@ -227,11 +227,12 @@ try: except ImportError, e: print 'Unable to load local_settings.py:', e -if 'SHARE_NETWORKS' not in globals(): +if 'CHIMERE_SHARE_NETWORKS' not in globals(): # after the locals to get the right STATIC_URL # share with - SHARE_NETWORKS = ( + global CHIMERE_SHARE_NETWORKS + CHIMERE_SHARE_NETWORKS = ( ("Email", 'mailto:?subject=%(text)s&body=%(url)s', STATIC_URL + 'chimere/img/email.png'), ("Facebook", 'http://www.facebook.com/sharer.php?t=%(text)s&u=%(url)s', |