HOME_PODCASTS_COUNT = 3
USE_AGENDA_ONLY_FIELD = False
+# allow to serve from an alternative path if file is not found locally,
+# to be used with nginx, sth like
+# location /remote_media {
+# internal;
+# proxy_pass https://panikdb.radiopanik.org/media/;
+# proxy_limit_rate 500k;
+# }
+# location /local_media {
+# internal;
+# alias /srv/www.radiopanik.org/media;
+# }
+# with OFFSITE_MEDIA_SOUNDS = ('/local_media/', '/remote_media/')
+OFFSITE_MEDIA_SOUNDS = None
+
PROGRAM_PREFIX = 'programme/'
EMISSIONS_PREFIX = 'emissions/'
NEWSITEMS_PREFIX = 'actus/'
urlpatterns = combo_plugins.register_plugins_urls(urlpatterns)
urlpatterns += staticfiles_urlpatterns()
+
+if settings.OFFSITE_MEDIA_SOUNDS:
+ urlpatterns += [url(r'^media/(?P<location>sounds/.*)', views.media_hosting)]
+
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
if settings.DEBUG_TOOLBAR:
from django.conf import settings
from django.contrib.sites.models import Site
from django.contrib.syndication.views import Feed, add_domain
+from django.core.files.storage import default_storage
from django.core.paginator import Paginator
-from django.http import Http404, JsonResponse
+from django.http import Http404, HttpResponse, JsonResponse
from django.urls import reverse
from django.utils.encoding import force_text, python_2_unicode_compatible
from django.utils.feedgenerator import Atom1Feed, Rss201rev2Feed
chat = cache_control(max_age=15)(Chat.as_view())
+
+
+def media_hosting(request, location, *args, **kwargs):
+ local_path = default_storage.path(location)
+ response = HttpResponse()
+ if os.path.exists(local_path):
+ response['X-Accel-Redirect'] = settings.OFFSITE_MEDIA_SOUNDS[0] + location
+ else:
+ response['X-Accel-Redirect'] = settings.OFFSITE_MEDIA_SOUNDS[1] + location
+ return response