urls.py 3.81 KB
Newer Older
Giorgos Verigakis's avatar
Giorgos Verigakis committed
1
# Copyright 2011 GRNET S.A. All rights reserved.
2
#
Giorgos Verigakis's avatar
Giorgos Verigakis committed
3
4
5
# Redistribution and use in source and binary forms, with or
# without modification, are permitted provided that the following
# conditions are met:
6
#
Giorgos Verigakis's avatar
Giorgos Verigakis committed
7
8
9
#   1. Redistributions of source code must retain the above
#      copyright notice, this list of conditions and the following
#      disclaimer.
10
#
Giorgos Verigakis's avatar
Giorgos Verigakis committed
11
12
13
14
#   2. Redistributions in binary form must reproduce the above
#      copyright notice, this list of conditions and the following
#      disclaimer in the documentation and/or other materials
#      provided with the distribution.
15
#
Giorgos Verigakis's avatar
Giorgos Verigakis committed
16
17
18
19
20
21
22
23
24
25
26
27
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
28
#
Giorgos Verigakis's avatar
Giorgos Verigakis committed
29
30
31
32
# The views and conclusions contained in the software and
# documentation are those of the authors and should not be
# interpreted as representing official policies, either expressed
# or implied, of GRNET S.A.
Faidon Liambotis's avatar
Faidon Liambotis committed
33

34
35
import os

Giorgos Verigakis's avatar
Giorgos Verigakis committed
36
from django.conf.urls.defaults import *
37
from synnefo.util.entry_points import extend_urls
38
39
from django.utils.importlib import import_module
from django.conf import settings
Faidon Liambotis's avatar
Faidon Liambotis committed
40
41

urlpatterns = patterns('',
42
    (r'^lang/$', 'synnefo.webproject.i18n.set_language')
43
)
44

45
if getattr(settings, 'WEBPROJECT_SERVE_STATIC', settings.DEBUG):
46
47
48
49
50
51
52
53
54
55
56
57
58

    for module_name, ns in settings.STATIC_FILES.iteritems():
        module = import_module(module_name)
        app_dir = 'static'

        # hook defined that application contains media files in other than
        # ``static`` directory
        # (e.g. django.contrib.admin which contains media files in media dir)
        if type(ns) == tuple:
            app_dir = ns[0]
            ns = ns[1]

        static_root = os.path.join(os.path.dirname(module.__file__), app_dir)
59
60
61
        if ns:
            # app contains static files in <appname>/static/
            urlns = ns
62
63
64
            url_r = r'^%s%s/(?P<path>.*)$' % (settings.MEDIA_URL.lstrip("/"),
                                              urlns)
            urlpatterns += patterns('', url(url_r,
65
66
67
68
                 'django.views.static.serve',
                 {'document_root': static_root,
                  'show_indexes': getattr(settings,
                      'WEBPROJECT_STATIC_SHOW_INDEXES', True)}))
69

70
71
72
73
        else:
            # app contains static files in <appname>/static/<appname>
            for fpath in os.listdir(static_root):
                urlns = ns + fpath
74
75
76
                url_r = r'^%s%s/(?P<path>.*)$' % (settings.MEDIA_URL.lstrip("/"), urlns)
                static_root = os.path.join(static_root, urlns)
                urlpatterns += patterns('',  url(url_r,
77
                     'django.views.static.serve',
78
                     {'document_root': static_root,
79
80
81
                      'show_indexes': getattr(settings,
                          'WEBPROJECT_STATIC_SHOW_INDEXES', True)}))

82
83
84
85
86
87
88
89
90
91
92
    # also serve the media root after all explicitly defined paths
    # to be able to serve uploaded files
    urlpatterns += patterns('', url(r'^%s(?P<path>.*)$' % \
         settings.MEDIA_URL.lstrip("/"),
         'django.views.static.serve',
         {'document_root': settings.MEDIA_ROOT,
          'show_indexes': getattr(settings,
              'WEBPROJECT_STATIC_SHOW_INDEXES', True)}))



93
urlpatterns = extend_urls(urlpatterns, 'synnefo')
94