xref: /OK3568_Linux_fs/yocto/poky/bitbake/lib/toaster/toastergui/urls.py (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun#
2*4882a593Smuzhiyun# BitBake Toaster Implementation
3*4882a593Smuzhiyun#
4*4882a593Smuzhiyun# Copyright (C) 2013-2017    Intel Corporation
5*4882a593Smuzhiyun#
6*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0-only
7*4882a593Smuzhiyun#
8*4882a593Smuzhiyun
9*4882a593Smuzhiyunfrom django.conf.urls import url
10*4882a593Smuzhiyunfrom django.views.generic import RedirectView
11*4882a593Smuzhiyun
12*4882a593Smuzhiyunfrom toastergui import tables
13*4882a593Smuzhiyunfrom toastergui import buildtables
14*4882a593Smuzhiyunfrom toastergui import typeaheads
15*4882a593Smuzhiyunfrom toastergui import api
16*4882a593Smuzhiyunfrom toastergui import widgets
17*4882a593Smuzhiyunfrom toastergui import views
18*4882a593Smuzhiyun
19*4882a593Smuzhiyunurlpatterns = [
20*4882a593Smuzhiyun        # landing page
21*4882a593Smuzhiyun        url(r'^landing/$', views.landing, name='landing'),
22*4882a593Smuzhiyun
23*4882a593Smuzhiyun        url(r'^builds/$',
24*4882a593Smuzhiyun            tables.AllBuildsTable.as_view(template_name="builds-toastertable.html"),
25*4882a593Smuzhiyun            name='all-builds'),
26*4882a593Smuzhiyun
27*4882a593Smuzhiyun        # build info navigation
28*4882a593Smuzhiyun        url(r'^build/(?P<build_id>\d+)$', views.builddashboard, name="builddashboard"),
29*4882a593Smuzhiyun        url(r'^build/(?P<build_id>\d+)/tasks/$',
30*4882a593Smuzhiyun            buildtables.BuildTasksTable.as_view(
31*4882a593Smuzhiyun                template_name="buildinfo-toastertable.html"),
32*4882a593Smuzhiyun            name='tasks'),
33*4882a593Smuzhiyun
34*4882a593Smuzhiyun        url(r'^build/(?P<build_id>\d+)/task/(?P<task_id>\d+)$', views.task, name='task'),
35*4882a593Smuzhiyun
36*4882a593Smuzhiyun        url(r'^build/(?P<build_id>\d+)/recipes/$',
37*4882a593Smuzhiyun            buildtables.BuiltRecipesTable.as_view(
38*4882a593Smuzhiyun                template_name="buildinfo-toastertable.html"),
39*4882a593Smuzhiyun            name='recipes'),
40*4882a593Smuzhiyun
41*4882a593Smuzhiyun        url(r'^build/(?P<build_id>\d+)/recipe/(?P<recipe_id>\d+)/active_tab/(?P<active_tab>\d{1})$', views.recipe, name='recipe'),
42*4882a593Smuzhiyun
43*4882a593Smuzhiyun        url(r'^build/(?P<build_id>\d+)/recipe/(?P<recipe_id>\d+)$', views.recipe, name='recipe'),
44*4882a593Smuzhiyun        url(r'^build/(?P<build_id>\d+)/recipe_packages/(?P<recipe_id>\d+)$', views.recipe_packages, name='recipe_packages'),
45*4882a593Smuzhiyun
46*4882a593Smuzhiyun        url(r'^build/(?P<build_id>\d+)/packages/$',
47*4882a593Smuzhiyun            buildtables.BuiltPackagesTable.as_view(
48*4882a593Smuzhiyun                template_name="buildinfo-toastertable.html"),
49*4882a593Smuzhiyun            name='packages'),
50*4882a593Smuzhiyun
51*4882a593Smuzhiyun        url(r'^build/(?P<build_id>\d+)/package/(?P<package_id>\d+)$', views.package_built_detail,
52*4882a593Smuzhiyun                name='package_built_detail'),
53*4882a593Smuzhiyun        url(r'^build/(?P<build_id>\d+)/package_built_dependencies/(?P<package_id>\d+)$',
54*4882a593Smuzhiyun            views.package_built_dependencies, name='package_built_dependencies'),
55*4882a593Smuzhiyun        url(r'^build/(?P<build_id>\d+)/package_included_detail/(?P<target_id>\d+)/(?P<package_id>\d+)$',
56*4882a593Smuzhiyun            views.package_included_detail, name='package_included_detail'),
57*4882a593Smuzhiyun        url(r'^build/(?P<build_id>\d+)/package_included_dependencies/(?P<target_id>\d+)/(?P<package_id>\d+)$',
58*4882a593Smuzhiyun            views.package_included_dependencies, name='package_included_dependencies'),
59*4882a593Smuzhiyun        url(r'^build/(?P<build_id>\d+)/package_included_reverse_dependencies/(?P<target_id>\d+)/(?P<package_id>\d+)$',
60*4882a593Smuzhiyun            views.package_included_reverse_dependencies, name='package_included_reverse_dependencies'),
61*4882a593Smuzhiyun
62*4882a593Smuzhiyun        url(r'^build/(?P<build_id>\d+)/target/(?P<target_id>\d+)$',
63*4882a593Smuzhiyun            buildtables.InstalledPackagesTable.as_view(
64*4882a593Smuzhiyun                template_name="target.html"),
65*4882a593Smuzhiyun            name='target'),
66*4882a593Smuzhiyun
67*4882a593Smuzhiyun
68*4882a593Smuzhiyun        url(r'^dentries/build/(?P<build_id>\d+)/target/(?P<target_id>\d+)$', views.xhr_dirinfo, name='dirinfo_ajax'),
69*4882a593Smuzhiyun        url(r'^build/(?P<build_id>\d+)/target/(?P<target_id>\d+)/dirinfo$', views.dirinfo, name='dirinfo'),
70*4882a593Smuzhiyun        url(r'^build/(?P<build_id>\d+)/target/(?P<target_id>\d+)/dirinfo_filepath/_(?P<file_path>(?:/[^/\n]+)*)$', views.dirinfo, name='dirinfo_filepath'),
71*4882a593Smuzhiyun        url(r'^build/(?P<build_id>\d+)/configuration$', views.configuration, name='configuration'),
72*4882a593Smuzhiyun        url(r'^build/(?P<build_id>\d+)/configvars$', views.configvars, name='configvars'),
73*4882a593Smuzhiyun        url(r'^build/(?P<build_id>\d+)/buildtime$',
74*4882a593Smuzhiyun            buildtables.BuildTimeTable.as_view(
75*4882a593Smuzhiyun                template_name="buildinfo-toastertable.html"),
76*4882a593Smuzhiyun            name='buildtime'),
77*4882a593Smuzhiyun
78*4882a593Smuzhiyun        url(r'^build/(?P<build_id>\d+)/cputime$',
79*4882a593Smuzhiyun            buildtables.BuildCPUTimeTable.as_view(
80*4882a593Smuzhiyun                template_name="buildinfo-toastertable.html"),
81*4882a593Smuzhiyun            name='cputime'),
82*4882a593Smuzhiyun
83*4882a593Smuzhiyun        url(r'^build/(?P<build_id>\d+)/diskio$',
84*4882a593Smuzhiyun            buildtables.BuildIOTable.as_view(
85*4882a593Smuzhiyun                template_name="buildinfo-toastertable.html"),
86*4882a593Smuzhiyun            name='diskio'),
87*4882a593Smuzhiyun
88*4882a593Smuzhiyun        # image information dir
89*4882a593Smuzhiyun        url(r'^build/(?P<build_id>\d+)/target/(?P<target_id>\d+)/packagefile/(?P<packagefile_id>\d+)$',
90*4882a593Smuzhiyun             views.image_information_dir, name='image_information_dir'),
91*4882a593Smuzhiyun
92*4882a593Smuzhiyun        # build download artifact
93*4882a593Smuzhiyun        url(r'^build/(?P<build_id>\d+)/artifact/(?P<artifact_type>\w+)/id/(?P<artifact_id>\w+)', views.build_artifact, name="build_artifact"),
94*4882a593Smuzhiyun
95*4882a593Smuzhiyun        # project URLs
96*4882a593Smuzhiyun        url(r'^newproject/$', views.newproject, name='newproject'),
97*4882a593Smuzhiyun
98*4882a593Smuzhiyun        url(r'^projects/$',
99*4882a593Smuzhiyun            tables.ProjectsTable.as_view(template_name="projects-toastertable.html"),
100*4882a593Smuzhiyun            name='all-projects'),
101*4882a593Smuzhiyun
102*4882a593Smuzhiyun        url(r'^project/(?P<pid>\d+)/$', views.project, name='project'),
103*4882a593Smuzhiyun        url(r'^project/(?P<pid>\d+)/configuration$', views.projectconf, name='projectconf'),
104*4882a593Smuzhiyun        url(r'^project/(?P<pid>\d+)/builds/$',
105*4882a593Smuzhiyun            tables.ProjectBuildsTable.as_view(template_name="projectbuilds-toastertable.html"),
106*4882a593Smuzhiyun            name='projectbuilds'),
107*4882a593Smuzhiyun
108*4882a593Smuzhiyun        url(r'^newproject_specific/(?P<pid>\d+)/$', views.newproject_specific, name='newproject_specific'),
109*4882a593Smuzhiyun        url(r'^project_specific/(?P<pid>\d+)/$', views.project_specific, name='project_specific'),
110*4882a593Smuzhiyun        url(r'^landing_specific/(?P<pid>\d+)/$', views.landing_specific, name='landing_specific'),
111*4882a593Smuzhiyun        url(r'^landing_specific_cancel/(?P<pid>\d+)/$', views.landing_specific_cancel, name='landing_specific_cancel'),
112*4882a593Smuzhiyun
113*4882a593Smuzhiyun        # the import layer is a project-specific functionality;
114*4882a593Smuzhiyun        url(r'^project/(?P<pid>\d+)/importlayer$', views.importlayer, name='importlayer'),
115*4882a593Smuzhiyun
116*4882a593Smuzhiyun        # the table pages that have been converted to ToasterTable widget
117*4882a593Smuzhiyun        url(r'^project/(?P<pid>\d+)/machines/$',
118*4882a593Smuzhiyun            tables.MachinesTable.as_view(template_name="generic-toastertable-page.html"),
119*4882a593Smuzhiyun            name="projectmachines"),
120*4882a593Smuzhiyun
121*4882a593Smuzhiyun        url(r'^project/(?P<pid>\d+)/softwarerecipes/$',
122*4882a593Smuzhiyun            tables.SoftwareRecipesTable.as_view(template_name="generic-toastertable-page.html"),
123*4882a593Smuzhiyun            name="projectsoftwarerecipes"),
124*4882a593Smuzhiyun
125*4882a593Smuzhiyun        url(r'^project/(?P<pid>\d+)/images/$',
126*4882a593Smuzhiyun            tables.ImageRecipesTable.as_view(template_name="generic-toastertable-page.html"), name="projectimagerecipes"),
127*4882a593Smuzhiyun
128*4882a593Smuzhiyun        url(r'^project/(?P<pid>\d+)/customimages/$',
129*4882a593Smuzhiyun            tables.CustomImagesTable.as_view(template_name="generic-toastertable-page.html"), name="projectcustomimages"),
130*4882a593Smuzhiyun
131*4882a593Smuzhiyun        url(r'^project/(?P<pid>\d+)/newcustomimage/$',
132*4882a593Smuzhiyun            tables.NewCustomImagesTable.as_view(template_name="newcustomimage.html"),
133*4882a593Smuzhiyun            name="newcustomimage"),
134*4882a593Smuzhiyun
135*4882a593Smuzhiyun        url(r'^project/(?P<pid>\d+)/layers/$',
136*4882a593Smuzhiyun            tables.LayersTable.as_view(template_name="generic-toastertable-page.html"),
137*4882a593Smuzhiyun            name="projectlayers"),
138*4882a593Smuzhiyun
139*4882a593Smuzhiyun        url(r'^project/(?P<pid>\d+)/layer/(?P<layerid>\d+)$',
140*4882a593Smuzhiyun            views.layerdetails, name='layerdetails'),
141*4882a593Smuzhiyun
142*4882a593Smuzhiyun        url(r'^project/(?P<pid>\d+)/layer/(?P<layerid>\d+)/recipes/$',
143*4882a593Smuzhiyun            tables.LayerRecipesTable.as_view(template_name="generic-toastertable-page.html"),
144*4882a593Smuzhiyun            { 'table_name': tables.LayerRecipesTable.__name__.lower(),
145*4882a593Smuzhiyun              'title' : 'All recipes in layer' },
146*4882a593Smuzhiyun             name=tables.LayerRecipesTable.__name__.lower()),
147*4882a593Smuzhiyun
148*4882a593Smuzhiyun        url(r'^project/(?P<pid>\d+)/layer/(?P<layerid>\d+)/machines/$',
149*4882a593Smuzhiyun            tables.LayerMachinesTable.as_view(template_name="generic-toastertable-page.html"),
150*4882a593Smuzhiyun            { 'table_name': tables.LayerMachinesTable.__name__.lower(),
151*4882a593Smuzhiyun              'title' : 'All machines in layer' },
152*4882a593Smuzhiyun            name=tables.LayerMachinesTable.__name__.lower()),
153*4882a593Smuzhiyun
154*4882a593Smuzhiyun
155*4882a593Smuzhiyun        url(r'^project/(?P<pid>\d+)/distros/$',
156*4882a593Smuzhiyun            tables.DistrosTable.as_view(template_name="generic-toastertable-page.html"),
157*4882a593Smuzhiyun            name="projectdistros"),
158*4882a593Smuzhiyun
159*4882a593Smuzhiyun
160*4882a593Smuzhiyun        url(r'^project/(?P<pid>\d+)/customrecipe/(?P<custrecipeid>\d+)/selectpackages/$',
161*4882a593Smuzhiyun            tables.SelectPackagesTable.as_view(), name="recipeselectpackages"),
162*4882a593Smuzhiyun
163*4882a593Smuzhiyun
164*4882a593Smuzhiyun        url(r'^project/(?P<pid>\d+)/customrecipe/(?P<custrecipeid>\d+)$',
165*4882a593Smuzhiyun            tables.SelectPackagesTable.as_view(template_name="customrecipe.html"),
166*4882a593Smuzhiyun            name="customrecipe"),
167*4882a593Smuzhiyun
168*4882a593Smuzhiyun        url(r'^project/(?P<pid>\d+)/customrecipe/(?P<recipe_id>\d+)/download$',
169*4882a593Smuzhiyun            views.customrecipe_download,
170*4882a593Smuzhiyun            name="customrecipedownload"),
171*4882a593Smuzhiyun
172*4882a593Smuzhiyun        url(r'^project/(?P<pid>\d+)/recipe/(?P<recipe_id>\d+)$',
173*4882a593Smuzhiyun            tables.PackagesTable.as_view(template_name="recipedetails.html"),
174*4882a593Smuzhiyun            name="recipedetails"),
175*4882a593Smuzhiyun
176*4882a593Smuzhiyun        # typeahead api end points
177*4882a593Smuzhiyun        url(r'^xhr_typeahead/(?P<pid>\d+)/layers$',
178*4882a593Smuzhiyun            typeaheads.LayersTypeAhead.as_view(), name='xhr_layerstypeahead'),
179*4882a593Smuzhiyun        url(r'^xhr_typeahead/(?P<pid>\d+)/machines$',
180*4882a593Smuzhiyun            typeaheads.MachinesTypeAhead.as_view(), name='xhr_machinestypeahead'),
181*4882a593Smuzhiyun        url(r'^xhr_typeahead/(?P<pid>\d+)/recipes$',
182*4882a593Smuzhiyun            typeaheads.RecipesTypeAhead.as_view(), name='xhr_recipestypeahead'),
183*4882a593Smuzhiyun        url(r'^xhr_typeahead/projects$',
184*4882a593Smuzhiyun            typeaheads.ProjectsTypeAhead.as_view(), name='xhr_projectstypeahead'),
185*4882a593Smuzhiyun        url(r'^xhr_typeahead/gitrev$',
186*4882a593Smuzhiyun            typeaheads.GitRevisionTypeAhead.as_view(),
187*4882a593Smuzhiyun            name='xhr_gitrevtypeahead'),
188*4882a593Smuzhiyun
189*4882a593Smuzhiyun        url(r'^xhr_typeahead/(?P<pid>\d+)/distros$',
190*4882a593Smuzhiyun            typeaheads.DistrosTypeAhead.as_view(), name='xhr_distrostypeahead'),
191*4882a593Smuzhiyun
192*4882a593Smuzhiyun        url(r'^xhr_testreleasechange/(?P<pid>\d+)$', views.xhr_testreleasechange,
193*4882a593Smuzhiyun            name='xhr_testreleasechange'),
194*4882a593Smuzhiyun        url(r'^xhr_configvaredit/(?P<pid>\d+)$', views.xhr_configvaredit,
195*4882a593Smuzhiyun            name='xhr_configvaredit'),
196*4882a593Smuzhiyun
197*4882a593Smuzhiyun        url(r'^xhr_layer/(?P<pid>\d+)/(?P<layerversion_id>\d+)$',
198*4882a593Smuzhiyun            api.XhrLayer.as_view(),
199*4882a593Smuzhiyun            name='xhr_layer'),
200*4882a593Smuzhiyun
201*4882a593Smuzhiyun        url(r'^xhr_layer/(?P<pid>\d+)$',
202*4882a593Smuzhiyun            api.XhrLayer.as_view(),
203*4882a593Smuzhiyun            name='xhr_layer'),
204*4882a593Smuzhiyun
205*4882a593Smuzhiyun        # JS Unit tests
206*4882a593Smuzhiyun        url(r'^js-unit-tests/$', views.jsunittests, name='js-unit-tests'),
207*4882a593Smuzhiyun
208*4882a593Smuzhiyun        # image customisation functionality
209*4882a593Smuzhiyun        url(r'^xhr_customrecipe/(?P<recipe_id>\d+)'
210*4882a593Smuzhiyun            '/packages/(?P<package_id>\d+|)$',
211*4882a593Smuzhiyun            api.XhrCustomRecipePackages.as_view(),
212*4882a593Smuzhiyun            name='xhr_customrecipe_packages'),
213*4882a593Smuzhiyun
214*4882a593Smuzhiyun        url(r'^xhr_customrecipe/(?P<recipe_id>\d+)/packages/$',
215*4882a593Smuzhiyun            api.XhrCustomRecipePackages.as_view(),
216*4882a593Smuzhiyun            name='xhr_customrecipe_packages'),
217*4882a593Smuzhiyun
218*4882a593Smuzhiyun        url(r'^xhr_customrecipe/(?P<recipe_id>\d+)$',
219*4882a593Smuzhiyun            api.XhrCustomRecipeId.as_view(),
220*4882a593Smuzhiyun            name='xhr_customrecipe_id'),
221*4882a593Smuzhiyun
222*4882a593Smuzhiyun        url(r'^xhr_customrecipe/',
223*4882a593Smuzhiyun            api.XhrCustomRecipe.as_view(),
224*4882a593Smuzhiyun            name='xhr_customrecipe'),
225*4882a593Smuzhiyun
226*4882a593Smuzhiyun        url(r'^xhr_buildrequest/project/(?P<pid>\d+)$',
227*4882a593Smuzhiyun            api.XhrBuildRequest.as_view(),
228*4882a593Smuzhiyun            name='xhr_buildrequest'),
229*4882a593Smuzhiyun
230*4882a593Smuzhiyun        url(r'^xhr_projectupdate/project/(?P<pid>\d+)$',
231*4882a593Smuzhiyun            api.XhrProjectUpdate.as_view(),
232*4882a593Smuzhiyun            name='xhr_projectupdate'),
233*4882a593Smuzhiyun
234*4882a593Smuzhiyun        url(r'^xhr_setdefaultimage/project/(?P<pid>\d+)$',
235*4882a593Smuzhiyun            api.XhrSetDefaultImageUrl.as_view(),
236*4882a593Smuzhiyun            name='xhr_setdefaultimage'),
237*4882a593Smuzhiyun
238*4882a593Smuzhiyun        url(r'xhr_project/(?P<project_id>\d+)$',
239*4882a593Smuzhiyun            api.XhrProject.as_view(),
240*4882a593Smuzhiyun            name='xhr_project'),
241*4882a593Smuzhiyun
242*4882a593Smuzhiyun        url(r'xhr_build/(?P<build_id>\d+)$',
243*4882a593Smuzhiyun            api.XhrBuild.as_view(),
244*4882a593Smuzhiyun            name='xhr_build'),
245*4882a593Smuzhiyun
246*4882a593Smuzhiyun        url(r'^mostrecentbuilds$', widgets.MostRecentBuildsView.as_view(),
247*4882a593Smuzhiyun            name='most_recent_builds'),
248*4882a593Smuzhiyun
249*4882a593Smuzhiyun        # JSON data for aggregators
250*4882a593Smuzhiyun        url(r'^api/builds$', views.json_builds, name='json_builds'),
251*4882a593Smuzhiyun        url(r'^api/building$', views.json_building, name='json_building'),
252*4882a593Smuzhiyun        url(r'^api/build/(?P<build_id>\d+)$', views.json_build, name='json_build'),
253*4882a593Smuzhiyun
254*4882a593Smuzhiyun        # default redirection
255*4882a593Smuzhiyun        url(r'^$', RedirectView.as_view(url='landing', permanent=True)),
256*4882a593Smuzhiyun]
257