urls.py 5.47 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

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

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

admin.autodiscover()

43 44 45 46

schema_view = get_schema_view(
    openapi.Info(
        title="BEAT API",
Samuel GAIST's avatar
Samuel GAIST committed
47
        default_version="v1",
48 49 50 51 52 53
        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,
54
    permission_classes=(permissions.IsAuthenticated,),
55
)
56

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

unprefixed_patterns += [
Samuel GAIST's avatar
Samuel GAIST committed
62 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
    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
88
]
André Anjos's avatar
André Anjos committed
89 90 91 92


# API
unprefixed_patterns += [
Samuel GAIST's avatar
Samuel GAIST committed
93 94 95 96 97 98 99 100 101 102 103 104 105
    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
106
]
André Anjos's avatar
André Anjos committed
107 108 109


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

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


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