From f1d5523eb255b98446f4ce1d809ef884e7250577 Mon Sep 17 00:00:00 2001 From: Guillaume Pellerin Date: Thu, 11 Jul 2013 18:24:38 +0200 Subject: [PATCH] fix HOST context --- teleforma/context_processors.py | 52 +++++++++++++++++++ .../templates/teleforma/course_media.html | 2 +- 2 files changed, 53 insertions(+), 1 deletion(-) diff --git a/teleforma/context_processors.py b/teleforma/context_processors.py index 94fadbbb..8d044d34 100644 --- a/teleforma/context_processors.py +++ b/teleforma/context_processors.py @@ -35,6 +35,14 @@ from teleforma.views.core import * +from django.conf import settings +import socket +import fcntl +import struct + +interfaces = ['eth0', 'eth1', 'eth2', 'eth0-eth2', 'eth3', 'eth4', + 'wlan0', 'wlan1', 'wlan2', 'wlan3', 'wlan4'] + def periods(request): """return the periods assigned to the user """ @@ -45,3 +53,47 @@ def periods(request): return {'periods': None} else: return {'periods': get_periods(user)} + + + +def get_ip_address(ifname): + s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + ip = socket.inet_ntoa(fcntl.ioctl( + s.fileno(), + 0x8915, # SIOCGIFADDR + struct.pack('256s', ifname[:15]) + )[20:24]) + return ip + +def get_local_host(): + ip = '' + for interface in interfaces: + try: + ip = get_ip_address(interface) + if ip: + local_ip = ip + break + except: + local_ip = '127.0.0.1' + return local_ip + + +def get_http_host(request): + host = request.META['REMOTE_ADDR'] + if ':' in host: + host = host.split(':')[0] + return host + + +def host(request): + request_host = get_http_host(request) + local_host = get_local_host() + + if request_host.split('.')[0] == local_host.split('.')[0] or \ + request_host == '127.0.0.1' or request_host == 'localhost': + # LAN access + ip = local_host + else: + ip = settings.ROUTER_IP + + return {'HOST': ip } diff --git a/teleforma/templates/teleforma/course_media.html b/teleforma/templates/teleforma/course_media.html index b021665e..845a5fd3 100644 --- a/teleforma/templates/teleforma/course_media.html +++ b/teleforma/templates/teleforma/course_media.html @@ -109,7 +109,7 @@ $(document).ready(function(){ {% for related in media.item.related.all %} {% if related.title == "preview" %} {% thumbnail related.file "300" as im %} - preview + preview {% endthumbnail %} {% endif %} {% endfor %} -- 2.39.5