From 7d2d047177f787df799177a2fe529ee5cbbb2e10 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Wed, 23 Oct 2013 15:48:40 +0200 Subject: [PATCH] Add storage subclass. --- greenmine/base/storage.py | 17 +++++++++++++++++ greenmine/settings/common.py | 12 ++++++++++-- greenmine/urls.py | 19 +++++++++++++++++++ requirements.txt | 1 + 4 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 greenmine/base/storage.py diff --git a/greenmine/base/storage.py b/greenmine/base/storage.py new file mode 100644 index 00000000..afc6be5f --- /dev/null +++ b/greenmine/base/storage.py @@ -0,0 +1,17 @@ +# -*- coding: utf-8 -*- + +from django.conf import settings +from django.core.files import storage + +import django_sites as sites + +class FileSystemStorage(storage.FileSystemStorage): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + + if settings.MEDIA_URL.startswith("/"): + site = sites.get_current() + url_tmpl = "{scheme}//{domain}{url}" + scheme = site.scheme and "{0}:".format(site.scheme) or "" + self.base_url = url_tmpl.format(scheme=scheme, domain=site.domain, + url=settings.MEDIA_URL) diff --git a/greenmine/settings/common.py b/greenmine/settings/common.py index 628c61a2..8489505c 100644 --- a/greenmine/settings/common.py +++ b/greenmine/settings/common.py @@ -60,13 +60,18 @@ USE_L10N = True LOGIN_URL='/auth/login/' USE_TZ = True +SITES = { + 1: {"domain": "localhost:8000", "scheme": "http"}, +} + +SITE_ID = 1 + #SESSION BACKEND SESSION_ENGINE='django.contrib.sessions.backends.db' #SESSION_ENGINE='django.contrib.sessions.backends.cache' #SESSION_EXPIRE_AT_BROWSER_CLOSE = False #SESSION_SAVE_EVERY_REQUEST = True SESSION_COOKIE_AGE = 1209600 # (2 weeks) -SESSION_HEADER_NAME = "HTTP_X_SESSION_TOKEN" API_LIMIT_PER_PAGE = 0 @@ -115,6 +120,8 @@ STATIC_URL = '/static/' # Examples: "http://foo.com/static/admin/", "/static/admin/". ADMIN_MEDIA_PREFIX = '/static/admin/' +DEFAULT_FILE_STORAGE = 'greenmine.base.storage.FileSystemStorage' + # Additional locations of static files STATICFILES_DIRS = ( @@ -198,7 +205,8 @@ INSTALLED_APPS = [ 'south', 'reversion', 'rest_framework', - 'djmail' + 'djmail', + 'django_sites', ] WSGI_APPLICATION = 'greenmine.wsgi.application' diff --git a/greenmine/urls.py b/greenmine/urls.py index 3a0a31c6..beef742c 100644 --- a/greenmine/urls.py +++ b/greenmine/urls.py @@ -1,5 +1,6 @@ # -*- coding: utf-8 -*- +from django.conf import settings from django.conf.urls import patterns, include, url from django.contrib.staticfiles.urls import staticfiles_urlpatterns from django.contrib import admin @@ -16,4 +17,22 @@ urlpatterns = patterns('', url(r'^grappelli/', include('grappelli.urls')), ) + +def mediafiles_urlpatterns(): + """ + Method for serve media files with runserver. + """ + + _media_url = settings.MEDIA_URL + if _media_url.startswith('/'): + _media_url = _media_url[1:] + + from django.views.static import serve + return patterns('', + (r'^%s(?P.*)$' % 'media', serve, + {'document_root': settings.MEDIA_ROOT}) + ) + + urlpatterns += staticfiles_urlpatterns() +urlpatterns += mediafiles_urlpatterns() diff --git a/requirements.txt b/requirements.txt index 46a78de3..d85170be 100644 --- a/requirements.txt +++ b/requirements.txt @@ -21,3 +21,4 @@ djmail>=0.3 django-jinja>=0.21 jinja2==2.7.1 pygments>=1.6 +django-sites>=0.4