urls.py 5.56 KB
Newer Older
André Anjos's avatar
André Anjos committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
#!/usr/bin/env python
# vim: set fileencoding=utf-8 :

###############################################################################
#                                                                             #
# Copyright (c) 2016 Idiap Research Institute, http://www.idiap.ch/           #
# Contact: beat.support@idiap.ch                                              #
#                                                                             #
# This file is part of the beat.web module of the BEAT platform.              #
#                                                                             #
# Commercial License Usage                                                    #
# Licensees holding valid commercial BEAT licenses may use this file in       #
# accordance with the terms contained in a written agreement between you      #
# and Idiap. For further information contact tto@idiap.ch                     #
#                                                                             #
# Alternatively, this file may be used under the terms of the GNU Affero      #
# Public License version 3 as published by the Free Software and appearing    #
# in the file LICENSE.AGPL included in the packaging of this file.            #
# The BEAT platform is distributed in the hope that it will be useful, but    #
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY  #
# or FITNESS FOR A PARTICULAR PURPOSE.                                        #
#                                                                             #
# You should have received a copy of the GNU Affero Public License along      #
# with the BEAT platform. If not, see http://www.gnu.org/licenses/.           #
#                                                                             #
###############################################################################

28 29
from urllib.parse import urlparse

André Anjos's avatar
André Anjos committed
30
from django.conf import settings
Samuel GAIST's avatar
Samuel GAIST committed
31 32
from django.conf.urls import include
from django.conf.urls import url
33
from django.contrib import admin
André Anjos's avatar
André Anjos committed
34
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
35
from drf_yasg import openapi
Samuel GAIST's avatar
Samuel GAIST committed
36 37
from drf_yasg.views import get_schema_view
from rest_framework import permissions
38

André Anjos's avatar
André Anjos committed
39
from .navigation import urls as navigation_urls
Samuel GAIST's avatar
Samuel GAIST committed
40
from .ui import urls as ui_urls
André Anjos's avatar
André Anjos committed
41 42 43

admin.autodiscover()

44 45 46 47

schema_view = get_schema_view(
    openapi.Info(
        title="BEAT API",
Samuel GAIST's avatar
Samuel GAIST committed
48
        default_version="v1",
49 50 51 52 53 54
        description="REST API for BEAT platform",
        terms_of_service="https://gitlab.idiap.ch/beat/beat.web/blob/master/LICENSE.AGPL",
        contact=openapi.Contact(email="beat.support@idiap.ch"),
        license=openapi.License(name="AGPLv3 License"),
    ),
    public=True,
55
    permission_classes=(permissions.IsAuthenticated,),
56
)
57

André Anjos's avatar
André Anjos committed
58 59 60 61 62
# Views
unprefixed_patterns = ui_urls.urlpatterns
unprefixed_patterns += navigation_urls.urlpatterns

unprefixed_patterns += [
Samuel GAIST's avatar
Samuel GAIST committed
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
    url(r"^algorithms/", include("beat.web.algorithms.urls"),),
    url(r"^libraries/", include("beat.web.libraries.urls"),),
    url(r"^attestations/", include("beat.web.attestations.urls"),),
    url(r"^backend/", include("beat.web.backend.urls"),),
    url(r"^dataformats/", include("beat.web.dataformats.urls"),),
    url(r"^databases/", include("beat.web.databases.urls"),),
    url(r"^experiments/", include("beat.web.experiments.urls"),),
    url(r"^search/", include("beat.web.search.urls"),),
    url(r"^statistics/", include("beat.web.statistics.urls"),),
    url(r"^toolchains/", include("beat.web.toolchains.urls"),),
    url(r"^teams/", include("beat.web.team.urls"),),
    url(r"^plotters/", include("beat.web.plotters.urls"),),
    url(r"^reports/", include("beat.web.reports.urls"),),
    url(r"^accounts/", include("beat.web.accounts.urls"),),
    url(r"^admin/", admin.site.urls),
    url(
        r"^swagger(?P<format>\.json|\.yaml)$",
        schema_view.without_ui(cache_timeout=0),
        name="schema-json",
    ),
    url(
        r"^swagger/$",
        schema_view.with_ui("swagger", cache_timeout=0),
        name="schema-swagger-ui",
    ),
    url(r"^activity/", include("actstream.urls"),),
Philip ABBET's avatar
Philip ABBET committed
89
]
André Anjos's avatar
André Anjos committed
90 91 92 93


# API
unprefixed_patterns += [
Samuel GAIST's avatar
Samuel GAIST committed
94 95 96 97 98 99 100 101 102 103 104 105 106
    url(r"^api/v1/teams/", include("beat.web.team.api_urls"),),
    url(r"^api/v1/algorithms/", include("beat.web.algorithms.api_urls"),),
    url(r"^api/v1/attestations/", include("beat.web.attestations.api_urls"),),
    url(r"^api/v1/backend/", include("beat.web.backend.api_urls"),),
    url(r"^api/v1/databases/", include("beat.web.databases.api_urls"),),
    url(r"^api/v1/dataformats/", include("beat.web.dataformats.api_urls"),),
    url(r"^api/v1/experiments/", include("beat.web.experiments.api_urls"),),
    url(r"^api/v1/libraries/", include("beat.web.libraries.api_urls"),),
    url(r"^api/v1/search/", include("beat.web.search.api_urls"),),
    url(r"^api/v1/toolchains/", include("beat.web.toolchains.api_urls"),),
    url(r"^api/v1/plotters/", include("beat.web.plotters.api_urls"),),
    url(r"^api/v1/reports/", include("beat.web.reports.api_urls"),),
    url(r"^api/v1/accounts/", include("beat.web.accounts.api_urls"),),
Philip ABBET's avatar
Philip ABBET committed
107
]
André Anjos's avatar
André Anjos committed
108 109 110 111


# Process an eventual prefix in the URLs
parsed_url = urlparse(settings.URL_PREFIX)
Samuel GAIST's avatar
Samuel GAIST committed
112 113 114 115
if (parsed_url.path != "") and (parsed_url.path != "/"):
    urlpatterns = [
        url(r"^%s/" % parsed_url.path[1:], include(unprefixed_patterns)),
    ]
André Anjos's avatar
André Anjos committed
116
else:
Samuel GAIST's avatar
Samuel GAIST committed
117
    urlpatterns = unprefixed_patterns
André Anjos's avatar
André Anjos committed
118 119 120

# Static files (only working during development, when settings.DEBUG is True)
urlpatterns += staticfiles_urlpatterns()
121 122 123


# ONLY DURING THE TESTS: Custom error 500 view
Samuel GAIST's avatar
Samuel GAIST committed
124 125
if getattr(settings, "TEST_CONFIGURATION", False):
    handler500 = "beat.web.ui.views.empty_error500_for_tests"