Skip to content
Snippets Groups Projects
urls.py 10.5 KiB
Newer Older
"""tmss URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/2.0/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.urls import include, path
    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
from django.shortcuts import render
from django.contrib import admin
from django.contrib.auth.views import LoginView, LogoutView
from django.urls import path, re_path
from django.conf.urls import url, include
from django.views.generic.base import TemplateView, RedirectView
from rest_framework import routers, permissions
from .tmssapp import viewsets, models, serializers, views
from rest_framework.documentation import include_docs_urls
from drf_yasg.views import get_schema_view
from drf_yasg import openapi
from material.frontend import urls as frontend_urls
from viewflow.flow.viewset import FlowViewSet

# schema for Swagger API
swagger_schema_view = get_schema_view(
   openapi.Info(
      title="LOFAR Internal API",
      default_version='v1',
      description="ReST API for internal LOFAR services",
      terms_of_service="",
      contact=openapi.Contact(email="softwaresupport@astron.nl"),
      license=openapi.License(name="GPL License v3"),
   ),
   validators=['flex', 'ssv'],
Fabio Vitello's avatar
Fabio Vitello committed
   public=False,
  # public=True,
  # permission_classes=(permissions.AllowAny,),
urlpatterns = [
    path('admin/', admin.site.urls),
    path('logout/', LogoutView.as_view(), name='logout'),
    path('docs/', include_docs_urls(title='TMSS API')),
    re_path(r'^swagger(?P<format>\.json|\.yaml)$', swagger_schema_view.without_ui(cache_timeout=0), name='schema-json'),
    path('swagger/', swagger_schema_view.with_ui('swagger', cache_timeout=0), name='schema-swagger-ui'),
    path('redoc/', swagger_schema_view.with_ui('redoc', cache_timeout=0), name='schema-redoc'),
    path('schemas/<str:template>/<str:name>/<str:version>', views.get_template_json_schema, name='get_template_json_schema'), #TODO: how to make trailing slash optional?
    path('schemas/<str:template>/<str:name>/<str:version>/', views.get_template_json_schema, name='get_template_json_schema'),
    path('station_groups/<str:station_group>/<str:template_name>/<str:template_version>', views.get_stations_in_group, name='get_stations_in_group'), #TODO: how to make trailing slash optional?
    path('station_groups/<str:station_group>/<str:template_name>/<str:template_version>/', views.get_stations_in_group, name='get_stations_in_group'),
    path(r'util/lst', views.lst, name="conversion-lst"),
    path('__debug__/', include(debug_toolbar.urls)),
class TMSSAPIRootView(routers.APIRootView):
    def get(self, request, *args, **kwargs):
        '''return the normal list of urls, but then sorted by url so they are easier to find in a list for us humble humans'''
        response = super().get(request, *args, **kwargs)
        sorted_by_key_urls = OrderedDict()

        for key in sorted(response.data.keys()):
            sorted_by_key_urls[key] = response.data[key]

        response.data = sorted_by_key_urls

        return response

class OptionalSlashRouter(routers.DefaultRouter):

    def __init__(self):
        super(routers.DefaultRouter, self).__init__()
        self.trailing_slash = '/?'


router = OptionalSlashRouter()
router.register(r'tags', viewsets.TagsViewSet)
router.register(r'role', viewsets.RoleViewSet)
router.register(r'datatype', viewsets.DatatypeViewSet)
router.register(r'dataformat', viewsets.DataformatViewSet)
router.register(r'copy_reason', viewsets.CopyReasonViewSet)
router.register(r'flag', viewsets.FlagViewSet)
router.register(r'period_category', viewsets.PeriodCategoryViewSet)
router.register(r'project_category', viewsets.ProjectCategoryViewSet)
router.register(r'quantity', viewsets.QuantityViewSet)
router.register(r'task_type', viewsets.TaskTypeViewSet)
router.register(r'common_schema_template', viewsets.CommonSchemaTemplateViewSet)
router.register(r'generator_template', viewsets.GeneratorTemplateViewSet)
router.register(r'scheduling_unit_observing_strategy_template', viewsets.SchedulingUnitObservingStrategyTemplateViewSet)
router.register(r'scheduling_unit_template', viewsets.SchedulingUnitTemplateViewSet)
router.register(r'scheduling_constraints_template', viewsets.SchedulingConstraintsTemplateViewSet)
router.register(r'task_template', viewsets.TaskTemplateViewSet)
router.register(r'task_relation_selection_template', viewsets.TaskRelationSelectionTemplateViewSet)
router.register(r'task_connector_type', viewsets.TaskConnectorTypeViewSet)
router.register(r'default_generator_template', viewsets.DefaultGeneratorTemplateViewSet)
router.register(r'default_scheduling_unit_template', viewsets.DefaultSchedulingUnitTemplateViewSet)
router.register(r'default_scheduling_constraints_template', viewsets.DefaultSchedulingConstraintsTemplateViewSet)
router.register(r'default_task_template', viewsets.DefaultTaskTemplateViewSet)
router.register(r'default_task_relation_selection_template', viewsets.DefaultTaskRelationSelectionTemplateViewSet)
router.register(r'cycle', viewsets.CycleViewSet)
router.register(r'cycle_quota', viewsets.CycleQuotaViewSet)
router.register(r'project', viewsets.ProjectViewSet)
Fabio Vitello's avatar
Fabio Vitello committed
router.register(r'resource_type', viewsets.ResourceTypeViewSet)
router.register(r'project_quota', viewsets.ProjectQuotaViewSet)
router.register(r'setting', viewsets.SettingViewSet)
router.register(r'scheduling_set', viewsets.SchedulingSetViewSet)
router.register(r'scheduling_unit_draft', viewsets.SchedulingUnitDraftViewSet)
router.register(r'scheduling_unit_blueprint', viewsets.SchedulingUnitBlueprintViewSet)
router.register(r'task_draft', viewsets.TaskDraftViewSet)
router.register(r'task_blueprint', viewsets.TaskBlueprintViewSet)
router.register(r'task_relation_draft', viewsets.TaskRelationDraftViewSet)
router.register(r'task_relation_blueprint', viewsets.TaskRelationBlueprintViewSet)
router.register(r'task_scheduling_relation_draft', viewsets.TaskSchedulingRelationDraftViewSet)
router.register(r'task_scheduling_relation_blueprint', viewsets.TaskSchedulingRelationBlueprintViewSet)
router.register(r'cycle/(?P<cycle_id>[\w\- ]+)/project', viewsets.ProjectNestedViewSet)
router.register(r'scheduling_set/(?P<scheduling_set_id>\d+)/scheduling_unit_draft', viewsets.SchedulingUnitDraftNestedViewSet)
router.register(r'scheduling_unit_draft/(?P<scheduling_unit_draft_id>\d+)/scheduling_unit_blueprint', viewsets.SchedulingUnitBlueprintNestedViewSet)
router.register(r'scheduling_unit_draft/(?P<scheduling_unit_draft_id>\d+)/task_draft', viewsets.TaskDraftNestedViewSet)
router.register(r'task_draft/(?P<task_draft_id>\d+)/task_blueprint', viewsets.TaskBlueprintNestedViewSet)
router.register(r'task_draft/(?P<task_draft_id>\d+)/task_relation_draft', viewsets.TaskRelationDraftNestedViewSet)
router.register(r'task_relation_draft/(?P<task_relation_draft_id>\d+)/task_relation_blueprint', viewsets.TaskRelationBlueprintNestedViewSet)
router.register(r'task_blueprint/(?P<task_blueprint_id>\d+)/task_relation_blueprint', viewsets.TaskRelationBlueprintNestedViewSet)
router.register(r'task_blueprint/(?P<task_blueprint_id>\d+)/subtask', viewsets.SubtaskNestedViewSet)
router.register(r'task_draft/(?P<task_draft_id>\d+)/copy', viewsets.TaskDraftCopyViewSet)
router.register(r'task_blueprint/(?P<task_blueprint_id>\d+)/copy_to_task_draft', viewsets.TaskBlueprintCopyToTaskDraftViewSet)
router.register(r'scheduling_set/(?P<scheduling_set_id>\d+)/copy_scheduling_unit_drafts', viewsets.SchedulingUnitDraftCopyFromSchedulingSetViewSet)
router.register(r'scheduling_unit_draft/(?P<scheduling_unit_draft_id>\d+)/copy', viewsets.SchedulingUnitDraftCopyViewSet)
router.register(r'scheduling_unit_blueprint/(?P<scheduling_unit_blueprint_id>\d+)/copy_to_scheduling_unit_draft', viewsets.SchedulingUnitBlueprintCopyToSchedulingUnitDraftViewSet)
router.register(r'subtask_state', viewsets.SubtaskStateViewSet)
router.register(r'subtask_type', viewsets.SubtaskTypeViewSet)
router.register(r'station_type', viewsets.StationTypeViewSet)
router.register(r'algorithm', viewsets.AlgorithmViewSet)
router.register(r'schedule_method', viewsets.ScheduleMethodViewSet)
router.register(r'scheduling_relation_placement', viewsets.SchedulingRelationPlacement)
router.register(r'subtask_template', viewsets.SubtaskTemplateViewSet)
router.register(r'dataproduct_specifications_template', viewsets.DataproductSpecificationsTemplateViewSet)
router.register(r'default_subtask_template', viewsets.DefaultSubtaskTemplateViewSet)
router.register(r'default_dataproduct_specifications_template', viewsets.DefaultDataproductSpecificationsTemplateViewSet)
router.register(r'dataproduct_feedback_template', viewsets.DataproductFeedbackTemplateViewSet)
router.register(r'subtask', viewsets.SubtaskViewSet)
router.register(r'dataproduct', viewsets.DataproductViewSet)
router.register(r'subtask_input', viewsets.SubtaskInputViewSet)
router.register(r'subtask_output', viewsets.SubtaskOutputViewSet)
router.register(r'antenna_set', viewsets.AntennaSetViewSet)
router.register(r'dataproduct_transform', viewsets.DataproductTransformViewSet)
router.register(r'filesystem', viewsets.FilesystemViewSet)
router.register(r'cluster', viewsets.ClusterViewSet)
router.register(r'dataproduct_archive_info', viewsets.DataproductArchiveInfoViewSet)
router.register(r'dataproduct_hash', viewsets.DataproductHashViewSet)
router.register(r'subtask_state_log', viewsets.SubtaskStateLogViewSet)
router.register(r'user', viewsets.UserViewSet)
urlpatterns.extend(router.urls)
frontend_urlpatterns = [
    path("", views.index, name="index")
]

urlpatterns = [url(r'^api$', RedirectView.as_view(url='/api/')),
                url(r'^api/', include(urlpatterns)), url(r'^oidc$',
                RedirectView.as_view(url='/oidc/')),
                url(r'^oidc/', include('mozilla_django_oidc.urls')), 
                url(r'^workflow$', RedirectView.as_view(url='/workflow/', permanent=False)),
                url(r'', include(frontend_urls)),
                url(r'^.*', include(frontend_urlpatterns)),
]