Newer
Older
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'))
"""
Jörn Künsemöller
committed
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
Jörn Künsemöller
committed

Jorrit Schaap
committed
from collections import OrderedDict
from rest_framework import routers, permissions
from .tmssapp import viewsets, models, serializers, views
Jörn Künsemöller
committed
from rest_framework.documentation import include_docs_urls
from drf_yasg.views import get_schema_view
from drf_yasg import openapi
Jörn Künsemöller
committed
Jörn Künsemöller
committed
from datetime import datetime
from material.frontend import urls as frontend_urls
from viewflow.flow.viewset import FlowViewSet
Jörn Künsemöller
committed
import debug_toolbar
Jörn Künsemöller
committed
#
# Django style patterns
#
# 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'],
public=False,
# public=True,
# permission_classes=(permissions.AllowAny,),
Jörn Künsemöller
committed
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'),

Jorrit Schaap
committed
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'),
Jörn Künsemöller
committed
path(r'util/utc', views.utc, name="system-utc"),
Jörn Künsemöller
committed
path(r'util/lst', views.lst, name="conversion-lst"),
path('__debug__/', include(debug_toolbar.urls)),
Jörn Künsemöller
committed
#
# REST Router
#

Jorrit Schaap
committed
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()

Jorrit Schaap
committed
router.APIRootView = TMSSAPIRootView
router.register(r'tags', viewsets.TagsViewSet)
Jörn Künsemöller
committed
# SPECIFICATION
# choices
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)
Jörn Künsemöller
committed
router.register(r'flag', viewsets.FlagViewSet)
router.register(r'period_category', viewsets.PeriodCategoryViewSet)
router.register(r'project_category', viewsets.ProjectCategoryViewSet)

Jorrit Schaap
committed
router.register(r'quantity', viewsets.QuantityViewSet)
router.register(r'task_type', viewsets.TaskTypeViewSet)
Jörn Künsemöller
committed
# templates
router.register(r'common_schema_template', viewsets.CommonSchemaTemplateViewSet)
router.register(r'generator_template', viewsets.GeneratorTemplateViewSet)

Jorrit Schaap
committed
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)

Jorrit Schaap
committed
router.register(r'task_connector_type', viewsets.TaskConnectorTypeViewSet)
Jörn Künsemöller
committed
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)
Jörn Künsemöller
committed
# instances
router.register(r'cycle', viewsets.CycleViewSet)
router.register(r'cycle_quota', viewsets.CycleQuotaViewSet)
router.register(r'project', viewsets.ProjectViewSet)
router.register(r'resource_type', viewsets.ResourceTypeViewSet)
router.register(r'project_quota', viewsets.ProjectQuotaViewSet)
Jörn Künsemöller
committed
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)
Jörn Künsemöller
committed
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)
Jörn Künsemöller
committed
# copy
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)
Fabio Vitello
committed
router.register(r'scheduling_unit_blueprint/(?P<scheduling_unit_blueprint_id>\d+)/copy_to_scheduling_unit_draft', viewsets.SchedulingUnitBlueprintCopyToSchedulingUnitDraftViewSet)
# SCHEDULING
# choices
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)
# templates
Jörn Künsemöller
committed
router.register(r'subtask_template', viewsets.SubtaskTemplateViewSet)
router.register(r'dataproduct_specifications_template', viewsets.DataproductSpecificationsTemplateViewSet)
Jörn Künsemöller
committed
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)
# instances
router.register(r'subtask', viewsets.SubtaskViewSet)
router.register(r'dataproduct', viewsets.DataproductViewSet)
Jörn Künsemöller
committed
router.register(r'subtask_input', viewsets.SubtaskInputViewSet)
router.register(r'subtask_output', viewsets.SubtaskOutputViewSet)
router.register(r'antenna_set', viewsets.AntennaSetViewSet)
Jörn Künsemöller
committed
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)
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)),
]