# # BitBake Toaster Implementation # # Copyright (C) 2013-2017 Intel Corporation # # SPDX-License-Identifier: GPL-2.0-only # from django.conf.urls import include, url from django.views.generic import RedirectView, TemplateView from django.http import HttpResponseBadRequest from toastergui import tables from toastergui import buildtables from toastergui import typeaheads from toastergui import api from toastergui import widgets from toastergui import views urlpatterns = [ # landing page url(r'^landing/$', views.landing, name='landing'), url(r'^builds/$', tables.AllBuildsTable.as_view(template_name="builds-toastertable.html"), name='all-builds'), # build info navigation url(r'^build/(?P\d+)$', views.builddashboard, name="builddashboard"), url(r'^build/(?P\d+)/tasks/$', buildtables.BuildTasksTable.as_view( template_name="buildinfo-toastertable.html"), name='tasks'), url(r'^build/(?P\d+)/task/(?P\d+)$', views.task, name='task'), url(r'^build/(?P\d+)/recipes/$', buildtables.BuiltRecipesTable.as_view( template_name="buildinfo-toastertable.html"), name='recipes'), url(r'^build/(?P\d+)/recipe/(?P\d+)/active_tab/(?P\d{1})$', views.recipe, name='recipe'), url(r'^build/(?P\d+)/recipe/(?P\d+)$', views.recipe, name='recipe'), url(r'^build/(?P\d+)/recipe_packages/(?P\d+)$', views.recipe_packages, name='recipe_packages'), url(r'^build/(?P\d+)/packages/$', buildtables.BuiltPackagesTable.as_view( template_name="buildinfo-toastertable.html"), name='packages'), url(r'^build/(?P\d+)/package/(?P\d+)$', views.package_built_detail, name='package_built_detail'), url(r'^build/(?P\d+)/package_built_dependencies/(?P\d+)$', views.package_built_dependencies, name='package_built_dependencies'), url(r'^build/(?P\d+)/package_included_detail/(?P\d+)/(?P\d+)$', views.package_included_detail, name='package_included_detail'), url(r'^build/(?P\d+)/package_included_dependencies/(?P\d+)/(?P\d+)$', views.package_included_dependencies, name='package_included_dependencies'), url(r'^build/(?P\d+)/package_included_reverse_dependencies/(?P\d+)/(?P\d+)$', views.package_included_reverse_dependencies, name='package_included_reverse_dependencies'), url(r'^build/(?P\d+)/target/(?P\d+)$', buildtables.InstalledPackagesTable.as_view( template_name="target.html"), name='target'), url(r'^dentries/build/(?P\d+)/target/(?P\d+)$', views.xhr_dirinfo, name='dirinfo_ajax'), url(r'^build/(?P\d+)/target/(?P\d+)/dirinfo$', views.dirinfo, name='dirinfo'), url(r'^build/(?P\d+)/target/(?P\d+)/dirinfo_filepath/_(?P(?:/[^/\n]+)*)$', views.dirinfo, name='dirinfo_filepath'), url(r'^build/(?P\d+)/configuration$', views.configuration, name='configuration'), url(r'^build/(?P\d+)/configvars$', views.configvars, name='configvars'), url(r'^build/(?P\d+)/buildtime$', buildtables.BuildTimeTable.as_view( template_name="buildinfo-toastertable.html"), name='buildtime'), url(r'^build/(?P\d+)/cputime$', buildtables.BuildCPUTimeTable.as_view( template_name="buildinfo-toastertable.html"), name='cputime'), url(r'^build/(?P\d+)/diskio$', buildtables.BuildIOTable.as_view( template_name="buildinfo-toastertable.html"), name='diskio'), # image information dir url(r'^build/(?P\d+)/target/(?P\d+)/packagefile/(?P\d+)$', views.image_information_dir, name='image_information_dir'), # build download artifact url(r'^build/(?P\d+)/artifact/(?P\w+)/id/(?P\w+)', views.build_artifact, name="build_artifact"), # project URLs url(r'^newproject/$', views.newproject, name='newproject'), url(r'^projects/$', tables.ProjectsTable.as_view(template_name="projects-toastertable.html"), name='all-projects'), url(r'^project/(?P\d+)/$', views.project, name='project'), url(r'^project/(?P\d+)/configuration$', views.projectconf, name='projectconf'), url(r'^project/(?P\d+)/builds/$', tables.ProjectBuildsTable.as_view(template_name="projectbuilds-toastertable.html"), name='projectbuilds'), url(r'^newproject_specific/(?P\d+)/$', views.newproject_specific, name='newproject_specific'), url(r'^project_specific/(?P\d+)/$', views.project_specific, name='project_specific'), url(r'^landing_specific/(?P\d+)/$', views.landing_specific, name='landing_specific'), url(r'^landing_specific_cancel/(?P\d+)/$', views.landing_specific_cancel, name='landing_specific_cancel'), # the import layer is a project-specific functionality; url(r'^project/(?P\d+)/importlayer$', views.importlayer, name='importlayer'), # the table pages that have been converted to ToasterTable widget url(r'^project/(?P\d+)/machines/$', tables.MachinesTable.as_view(template_name="generic-toastertable-page.html"), name="projectmachines"), url(r'^project/(?P\d+)/softwarerecipes/$', tables.SoftwareRecipesTable.as_view(template_name="generic-toastertable-page.html"), name="projectsoftwarerecipes"), url(r'^project/(?P\d+)/images/$', tables.ImageRecipesTable.as_view(template_name="generic-toastertable-page.html"), name="projectimagerecipes"), url(r'^project/(?P\d+)/customimages/$', tables.CustomImagesTable.as_view(template_name="generic-toastertable-page.html"), name="projectcustomimages"), url(r'^project/(?P\d+)/newcustomimage/$', tables.NewCustomImagesTable.as_view(template_name="newcustomimage.html"), name="newcustomimage"), url(r'^project/(?P\d+)/layers/$', tables.LayersTable.as_view(template_name="generic-toastertable-page.html"), name="projectlayers"), url(r'^project/(?P\d+)/layer/(?P\d+)$', views.layerdetails, name='layerdetails'), url(r'^project/(?P\d+)/layer/(?P\d+)/recipes/$', tables.LayerRecipesTable.as_view(template_name="generic-toastertable-page.html"), { 'table_name': tables.LayerRecipesTable.__name__.lower(), 'title' : 'All recipes in layer' }, name=tables.LayerRecipesTable.__name__.lower()), url(r'^project/(?P\d+)/layer/(?P\d+)/machines/$', tables.LayerMachinesTable.as_view(template_name="generic-toastertable-page.html"), { 'table_name': tables.LayerMachinesTable.__name__.lower(), 'title' : 'All machines in layer' }, name=tables.LayerMachinesTable.__name__.lower()), url(r'^project/(?P\d+)/distros/$', tables.DistrosTable.as_view(template_name="generic-toastertable-page.html"), name="projectdistros"), url(r'^project/(?P\d+)/customrecipe/(?P\d+)/selectpackages/$', tables.SelectPackagesTable.as_view(), name="recipeselectpackages"), url(r'^project/(?P\d+)/customrecipe/(?P\d+)$', tables.SelectPackagesTable.as_view(template_name="customrecipe.html"), name="customrecipe"), url(r'^project/(?P\d+)/customrecipe/(?P\d+)/download$', views.customrecipe_download, name="customrecipedownload"), url(r'^project/(?P\d+)/recipe/(?P\d+)$', tables.PackagesTable.as_view(template_name="recipedetails.html"), name="recipedetails"), # typeahead api end points url(r'^xhr_typeahead/(?P\d+)/layers$', typeaheads.LayersTypeAhead.as_view(), name='xhr_layerstypeahead'), url(r'^xhr_typeahead/(?P\d+)/machines$', typeaheads.MachinesTypeAhead.as_view(), name='xhr_machinestypeahead'), url(r'^xhr_typeahead/(?P\d+)/recipes$', typeaheads.RecipesTypeAhead.as_view(), name='xhr_recipestypeahead'), url(r'^xhr_typeahead/projects$', typeaheads.ProjectsTypeAhead.as_view(), name='xhr_projectstypeahead'), url(r'^xhr_typeahead/gitrev$', typeaheads.GitRevisionTypeAhead.as_view(), name='xhr_gitrevtypeahead'), url(r'^xhr_typeahead/(?P\d+)/distros$', typeaheads.DistrosTypeAhead.as_view(), name='xhr_distrostypeahead'), url(r'^xhr_testreleasechange/(?P\d+)$', views.xhr_testreleasechange, name='xhr_testreleasechange'), url(r'^xhr_configvaredit/(?P\d+)$', views.xhr_configvaredit, name='xhr_configvaredit'), url(r'^xhr_layer/(?P\d+)/(?P\d+)$', api.XhrLayer.as_view(), name='xhr_layer'), url(r'^xhr_layer/(?P\d+)$', api.XhrLayer.as_view(), name='xhr_layer'), # JS Unit tests url(r'^js-unit-tests/$', views.jsunittests, name='js-unit-tests'), # image customisation functionality url(r'^xhr_customrecipe/(?P\d+)' '/packages/(?P\d+|)$', api.XhrCustomRecipePackages.as_view(), name='xhr_customrecipe_packages'), url(r'^xhr_customrecipe/(?P\d+)/packages/$', api.XhrCustomRecipePackages.as_view(), name='xhr_customrecipe_packages'), url(r'^xhr_customrecipe/(?P\d+)$', api.XhrCustomRecipeId.as_view(), name='xhr_customrecipe_id'), url(r'^xhr_customrecipe/', api.XhrCustomRecipe.as_view(), name='xhr_customrecipe'), url(r'^xhr_buildrequest/project/(?P\d+)$', api.XhrBuildRequest.as_view(), name='xhr_buildrequest'), url(r'^xhr_projectupdate/project/(?P\d+)$', api.XhrProjectUpdate.as_view(), name='xhr_projectupdate'), url(r'^xhr_setdefaultimage/project/(?P\d+)$', api.XhrSetDefaultImageUrl.as_view(), name='xhr_setdefaultimage'), url(r'xhr_project/(?P\d+)$', api.XhrProject.as_view(), name='xhr_project'), url(r'xhr_build/(?P\d+)$', api.XhrBuild.as_view(), name='xhr_build'), url(r'^mostrecentbuilds$', widgets.MostRecentBuildsView.as_view(), name='most_recent_builds'), # JSON data for aggregators url(r'^api/builds$', views.json_builds, name='json_builds'), url(r'^api/building$', views.json_building, name='json_building'), url(r'^api/build/(?P\d+)$', views.json_build, name='json_build'), # default redirection url(r'^$', RedirectView.as_view(url='landing', permanent=True)), ]