summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/toaster/toastergui/views.py
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/toaster/toastergui/views.py')
-rwxr-xr-xbitbake/lib/toaster/toastergui/views.py84
1 files changed, 48 insertions, 36 deletions
diff --git a/bitbake/lib/toaster/toastergui/views.py b/bitbake/lib/toaster/toastergui/views.py
index 5e92c24a8d..1b4bb9ff69 100755
--- a/bitbake/lib/toaster/toastergui/views.py
+++ b/bitbake/lib/toaster/toastergui/views.py
@@ -1881,7 +1881,10 @@ if toastermain.settings.MANAGED:
1881 "MANAGED" : toastermain.settings.MANAGED 1881 "MANAGED" : toastermain.settings.MANAGED
1882 } 1882 }
1883 if 'project_id' in request.session: 1883 if 'project_id' in request.session:
1884 ret['project'] = Project.objects.get(pk = request.session['project_id']) 1884 try:
1885 ret['project'] = Project.objects.get(pk = request.session['project_id'])
1886 except Project.DoesNotExist:
1887 del request.session['project_id']
1885 return ret 1888 return ret
1886 1889
1887 # new project 1890 # new project
@@ -1989,6 +1992,7 @@ if toastermain.settings.MANAGED:
1989 "id": x.layercommit.pk, 1992 "id": x.layercommit.pk,
1990 "orderid": x.pk, 1993 "orderid": x.pk,
1991 "name" : x.layercommit.layer.name, 1994 "name" : x.layercommit.layer.name,
1995 "giturl": x.layercommit.layer.vcs_url,
1992 "url": x.layercommit.layer.layer_index_url, 1996 "url": x.layercommit.layer.layer_index_url,
1993 "layerdetailurl": reverse("layerdetails", args=(x.layercommit.layer.pk,)), 1997 "layerdetailurl": reverse("layerdetails", args=(x.layercommit.layer.pk,)),
1994 "branch" : { "name" : x.layercommit.up_branch.name, "layersource" : x.layercommit.up_branch.layer_source.name}}, 1998 "branch" : { "name" : x.layercommit.up_branch.name, "layersource" : x.layercommit.up_branch.layer_source.name}},
@@ -2053,6 +2057,9 @@ if toastermain.settings.MANAGED:
2053 except Exception as e: 2057 except Exception as e:
2054 return HttpResponse(jsonfilter({"error":str(e) + "\n" + traceback.format_exc()}), content_type = "application/json") 2058 return HttpResponse(jsonfilter({"error":str(e) + "\n" + traceback.format_exc()}), content_type = "application/json")
2055 2059
2060
2061
2062
2056 def xhr_projectedit(request, pid): 2063 def xhr_projectedit(request, pid):
2057 try: 2064 try:
2058 prj = Project.objects.get(id = pid) 2065 prj = Project.objects.get(id = pid)
@@ -2078,11 +2085,14 @@ if toastermain.settings.MANAGED:
2078 # we need to change the layers 2085 # we need to change the layers
2079 for i in prj.projectlayer_set.all(): 2086 for i in prj.projectlayer_set.all():
2080 # find and add a similarly-named layer on the new branch 2087 # find and add a similarly-named layer on the new branch
2081 lv = Layer_Version.objects.filter(layer__name = i.layercommit.layer.name, up_branch__release = prj.release) 2088 try:
2082 if lv.count() == 1: 2089 lv = Layer_Version.objects.filter(layer__name = i.layercommit.layer.name, up_branch__name = prj.release.branch_name)[0].get_equivalents_wpriority(prj)[0]
2083 ProjectLayer.objects.get_or_create(project = prj, layercommit = lv[0]) 2090 ProjectLayer.objects.get_or_create(project = prj, layercommit = lv)
2084 # get rid of the old entry 2091 except IndexError:
2085 i.delete() 2092 pass
2093 finally:
2094 # get rid of the old entry
2095 i.delete()
2086 2096
2087 if 'machineName' in request.POST: 2097 if 'machineName' in request.POST:
2088 machinevar = prj.projectvariable_set.get(name="MACHINE") 2098 machinevar = prj.projectvariable_set.get(name="MACHINE")
@@ -2092,7 +2102,7 @@ if toastermain.settings.MANAGED:
2092 # return all project settings 2102 # return all project settings
2093 return HttpResponse(jsonfilter( { 2103 return HttpResponse(jsonfilter( {
2094 "error": "ok", 2104 "error": "ok",
2095 "layers" : map(lambda x: {"id": x.layercommit.pk, "orderid" : x.pk, "name" : x.layercommit.layer.name, "url": x.layercommit.layer.layer_index_url, "layerdetailurl": reverse("layerdetails", args=(x.layercommit.layer.pk,)), "branch" : { "name" : x.layercommit.up_branch.name, "layersource" : x.layercommit.up_branch.layer_source.name}}, prj.projectlayer_set.all().order_by("id")), 2105 "layers" : map(lambda x: {"id": x.layercommit.pk, "orderid" : x.pk, "name" : x.layercommit.layer.name, "giturl" : x.layercommit.layer.vcs_url, "url": x.layercommit.layer.layer_index_url, "layerdetailurl": reverse("layerdetails", args=(x.layercommit.layer.pk,)), "branch" : { "name" : x.layercommit.up_branch.name, "layersource" : x.layercommit.up_branch.layer_source.name}}, prj.projectlayer_set.all().order_by("id")),
2096 "builds" : _project_recent_build_list(prj), 2106 "builds" : _project_recent_build_list(prj),
2097 "variables": map(lambda x: (x.name, x.value), prj.projectvariable_set.all()), 2107 "variables": map(lambda x: (x.name, x.value), prj.projectvariable_set.all()),
2098 "machine": {"name": prj.projectvariable_set.get(name="MACHINE").value}, 2108 "machine": {"name": prj.projectvariable_set.get(name="MACHINE").value},
@@ -2107,45 +2117,46 @@ if toastermain.settings.MANAGED:
2107 @csrf_exempt 2117 @csrf_exempt
2108 def xhr_datatypeahead(request): 2118 def xhr_datatypeahead(request):
2109 try: 2119 try:
2120 prj = None
2121 if 'project_id' in request.session:
2122 prj = Project.objects.get(pk = request.session['project_id'])
2123
2110 # returns layers for current project release that are not in the project set 2124 # returns layers for current project release that are not in the project set
2111 if request.GET['type'] == "layers": 2125 if request.GET['type'] == "layers":
2112 queryset_all = Layer_Version.objects.all() 2126 queryset_all = Layer_Version.objects.filter(layer__name__icontains=request.GET.get('value',''))
2113 if 'project_id' in request.session: 2127 queryset_all = queryset_all.filter(up_branch__name= prj.release.branch_name).exclude(pk__in = [x.id for x in reduce(lambda x, y: list(x) + list(y), map(lambda x: x.layercommit.get_equivalents_wpriority(prj), prj.projectlayer_set.all()))])
2114 prj = Project.objects.get(pk = request.session['project_id']) 2128
2115 queryset_all = queryset_all.filter(up_branch__release = prj.release).exclude(pk__in = map(lambda x: x.layercommit_id, prj.projectlayer_set.all())) 2129 queryset_all = set([x.get_equivalents_wpriority(prj)[0] for x in queryset_all[:8]])
2116 queryset_all = queryset_all.filter(layer__name__icontains=request.GET.get('value','')) 2130
2117 return HttpResponse(jsonfilter( { "error":"ok", 2131 return HttpResponse(jsonfilter( { "error":"ok",
2118 "list" : map( lambda x: {"id": x.pk, "name": x.layer.name, "detail": "(" + x.layer.layer_source.name + (")" if x.up_branch == None else " | "+x.up_branch.name+")")}, 2132 "list" : map( lambda x: {"id": x.pk, "name": "%s" % (x.layer.name, ), "detail": "(" + x.layer.vcs_url + (")" if x.up_branch == None else " | "+x.up_branch.name+")")},
2119 queryset_all[:8]) 2133 queryset_all)
2120 }), content_type = "application/json") 2134 }), content_type = "application/json")
2121 2135
2136
2122 # returns layer dependencies for a layer, excluding current project layers 2137 # returns layer dependencies for a layer, excluding current project layers
2123 if request.GET['type'] == "layerdeps": 2138 if request.GET['type'] == "layerdeps":
2124 queryset_all = LayerVersionDependency.objects.filter(layer_version_id = request.GET['value']) 2139 queryset_all = LayerVersionDependency.objects.filter(layer_version_id = request.GET['value'])
2125 2140 queryset_all = queryset_all.exclude(depends_on__in = reduce(lambda x, y: list(x) + list(y), map(lambda x: x.layercommit.get_equivalents_wpriority(prj), prj.projectlayer_set.all())))
2126 if 'project_id' in request.session:
2127 prj = Project.objects.get(pk = request.session['project_id'])
2128 queryset_all = queryset_all.exclude(depends_on__in = map(lambda x: x.layercommit, prj.projectlayer_set.all()))
2129
2130 queryset_all.order_by("-up_id"); 2141 queryset_all.order_by("-up_id");
2131 2142
2132 return HttpResponse(jsonfilter( { "error":"ok", 2143 return HttpResponse(jsonfilter( { "error":"ok",
2133 "list" : map( 2144 "list" : map(
2134 lambda x: {"id": x.pk, "name": x.layer.name, "detail": "(" + x.layer.layer_source.name + (")" if x.up_branch == None else " | "+x.up_branch.name+")"), 2145 lambda x: {"id": x.pk, "name": x.layer.name, "detail": "(" + x.layer.layer_source.name + (")" if x.up_branch == None else " | "+x.up_branch.name+")"),
2135 "layerdetailurl" : reverse('layerdetails', args=(x.pk,))}, 2146 "giturl": x.layer.vcs_url, "layerdetailurl" : reverse('layerdetails', args=(x.pk,))},
2136 map(lambda x: x.depends_on, queryset_all)) 2147 map(lambda x: x.depends_on.get_equivalents_wpriority(prj)[0], queryset_all))
2137 }), content_type = "application/json") 2148 }), content_type = "application/json")
2138 2149
2150
2139 # returns layer versions that would be deleted on the new release__pk 2151 # returns layer versions that would be deleted on the new release__pk
2140 if request.GET['type'] == "versionlayers": 2152 if request.GET['type'] == "versionlayers":
2141 if not 'project_id' in request.session: 2153 if not 'project_id' in request.session:
2142 raise Exception("This call cannot makes no sense outside a project context") 2154 raise Exception("This call cannot makes no sense outside a project context")
2143 2155
2144 retval = [] 2156 retval = []
2145 prj = Project.objects.get(pk = request.session['project_id'])
2146 for i in prj.projectlayer_set.all(): 2157 for i in prj.projectlayer_set.all():
2147 lv = Layer_Version.objects.filter(layer__name = i.layercommit.layer.name, up_branch__release__pk=request.GET['value']) 2158 lv = Layer_Version.objects.filter(layer__name = i.layercommit.layer.name, up_branch__name = Release.objects.get(pk=request.GET['value']).branch_name)
2148 if lv.count() != 1: # there is no layer_version with the new release id, and the same name 2159 if lv.count() < 1: # there is no layer_version with the new release id, and the same name
2149 retval.append(i) 2160 retval.append(i)
2150 2161
2151 return HttpResponse(jsonfilter( {"error":"ok", 2162 return HttpResponse(jsonfilter( {"error":"ok",
@@ -2153,11 +2164,11 @@ if toastermain.settings.MANAGED:
2153 lambda x: {"id": x.layercommit.pk, "name": x.layercommit.layer.name, "detail": "(" + x.layercommit.layer.layer_source.name + (")" if x.layercommit.up_branch == None else " | "+x.layercommit.up_branch.name+")")}, 2164 lambda x: {"id": x.layercommit.pk, "name": x.layercommit.layer.name, "detail": "(" + x.layercommit.layer.layer_source.name + (")" if x.layercommit.up_branch == None else " | "+x.layercommit.up_branch.name+")")},
2154 retval) }), content_type = "application/json") 2165 retval) }), content_type = "application/json")
2155 2166
2167
2156 # returns targets provided by current project layers 2168 # returns targets provided by current project layers
2157 if request.GET['type'] == "targets": 2169 if request.GET['type'] == "targets":
2158 queryset_all = Recipe.objects.all() 2170 queryset_all = Recipe.objects.all()
2159 if 'project_id' in request.session: 2171 queryset_all = queryset_all.filter(layer_version__in = reduce(lambda x, y: list(x) + list(y), map(lambda x: x.layercommit.get_equivalents_wpriority(prj), ProjectLayer.objects.filter(project = prj))))
2160 queryset_all = queryset_all.filter(layer_version__layer__in = map(lambda x: x.layercommit.layer, ProjectLayer.objects.filter(project_id=request.session['project_id'])))
2161 return HttpResponse(jsonfilter({ "error":"ok", 2172 return HttpResponse(jsonfilter({ "error":"ok",
2162 "list" : map ( lambda x: {"id": x.pk, "name": x.name, "detail":"[" + x.layer_version.layer.name+ (" | " + x.layer_version.up_branch.name + "]" if x.layer_version.up_branch is not None else "]")}, 2173 "list" : map ( lambda x: {"id": x.pk, "name": x.name, "detail":"[" + x.layer_version.layer.name+ (" | " + x.layer_version.up_branch.name + "]" if x.layer_version.up_branch is not None else "]")},
2163 queryset_all.filter(name__icontains=request.GET.get('value',''))[:8]), 2174 queryset_all.filter(name__icontains=request.GET.get('value',''))[:8]),
@@ -2208,13 +2219,14 @@ if toastermain.settings.MANAGED:
2208 queryset_all = Layer_Version.objects.all() 2219 queryset_all = Layer_Version.objects.all()
2209 2220
2210 prj = Project.objects.get(pk = request.session['project_id']) 2221 prj = Project.objects.get(pk = request.session['project_id'])
2211 queryset_all = queryset_all.filter(up_branch__release = prj.release) 2222 queryset_all = queryset_all.filter(up_branch__name = prj.release.branch_name)
2212 2223
2213 queryset_with_search = _get_queryset(Layer_Version, queryset_all, None, search_term, ordering_string, '-layer__name') 2224 queryset_all = _get_queryset(Layer_Version, queryset_all, filter_string, search_term, ordering_string, '-layer__name')
2214 queryset = _get_queryset(Layer_Version, queryset_all, filter_string, search_term, ordering_string, '-layer__name') 2225
2226 objects_all= list(set([x.get_equivalents_wpriority(prj)[0] for x in queryset_all[:pagesize]]))
2215 2227
2216 # retrieve the objects that will be displayed in the table; layers a paginator and gets a page range to display 2228 # retrieve the objects that will be displayed in the table; layers a paginator and gets a page range to display
2217 layer_info = _build_page_range(Paginator(queryset, request.GET.get('count', 10)),request.GET.get('page', 1)) 2229 layer_info = _build_page_range(Paginator(objects_all, request.GET.get('count', 10)),request.GET.get('page', 1))
2218 2230
2219 2231
2220 context = { 2232 context = {
@@ -2222,7 +2234,7 @@ if toastermain.settings.MANAGED:
2222 'objects' : layer_info, 2234 'objects' : layer_info,
2223 'objectname' : "layers", 2235 'objectname' : "layers",
2224 'default_orderby' : 'layer__name:+', 2236 'default_orderby' : 'layer__name:+',
2225 'total_count': queryset_with_search.count(), 2237 'total_count': queryset_all.count(),
2226 2238
2227 'tablecols' : [ 2239 'tablecols' : [
2228 { 'name': 'Layer', 2240 { 'name': 'Layer',
@@ -2241,7 +2253,7 @@ if toastermain.settings.MANAGED:
2241 'filter': { 2253 'filter': {
2242 'class': 'layer', 2254 'class': 'layer',
2243 'label': 'Show:', 2255 'label': 'Show:',
2244 'options': map(lambda x: (x.name + " layers", 'layer_source__pk:' + str(x.id), queryset_with_search.filter(layer_source__pk = x.id).count() ), LayerSource.objects.all()), 2256 'options': map(lambda x: (x.name + " layers", 'layer_source__pk:' + str(x.id), queryset_all.filter(layer_source__pk = x.id).count() ), LayerSource.objects.all()),
2245 } 2257 }
2246 }, 2258 },
2247 { 'name': 'Git repository URL', 2259 { 'name': 'Git repository URL',
@@ -2269,8 +2281,8 @@ if toastermain.settings.MANAGED:
2269 'class': 'add-del-layers', 2281 'class': 'add-del-layers',
2270 'label': 'Show:', 2282 'label': 'Show:',
2271 'options': [ 2283 'options': [
2272 ('Layers added to this project', "projectlayer__project:" + str(prj.id), queryset_with_search.filter(projectlayer__project = prj.id).count()), 2284 ('Layers added to this project', "projectlayer__project:" + str(prj.id), queryset_all.filter(projectlayer__project = prj.id).count()),
2273 ('Layers not added to this project', "projectlayer__project:NOT" + str(prj.id), queryset_with_search.exclude(projectlayer__project = prj.id).count()), 2285 ('Layers not added to this project', "projectlayer__project:NOT" + str(prj.id), queryset_all.exclude(projectlayer__project = prj.id).count()),
2274 ] 2286 ]
2275 2287
2276 } 2288 }
@@ -2300,7 +2312,7 @@ if toastermain.settings.MANAGED:
2300 (filter_string, search_term, ordering_string) = _search_tuple(request, Recipe) 2312 (filter_string, search_term, ordering_string) = _search_tuple(request, Recipe)
2301 2313
2302 prj = Project.objects.get(pk = request.session['project_id']) 2314 prj = Project.objects.get(pk = request.session['project_id'])
2303 queryset_all = Recipe.objects.filter(Q(layer_version__up_branch__release = prj.release) | Q(layer_version__build__in = prj.build_set.all())) 2315 queryset_all = Recipe.objects.filter(Q(layer_version__up_branch__name= prj.release.name) | Q(layer_version__build__in = prj.build_set.all()))
2304 2316
2305 queryset_with_search = _get_queryset(Recipe, queryset_all, None, search_term, ordering_string, '-name') 2317 queryset_with_search = _get_queryset(Recipe, queryset_all, None, search_term, ordering_string, '-name')
2306 2318
@@ -2404,7 +2416,7 @@ if toastermain.settings.MANAGED:
2404 2416
2405 queryset_all = Machine.objects.all() 2417 queryset_all = Machine.objects.all()
2406# if 'project_id' in request.session: 2418# if 'project_id' in request.session:
2407# queryset_all = queryset_all.filter(Q(layer_version__up_branch__release = Project.objects.get(request.session['project_id']).release) | Q(layer_version__build__in = Project.objects.get(request.session['project_id']).build_set.all())) 2419# queryset_all = queryset_all.filter(Q(layer_version__up_branch__name = Project.objects.get(request.session['project_id']).release.branch_name) | Q(layer_version__build__in = Project.objects.get(request.session['project_id']).build_set.all()))
2408 2420
2409 queryset_with_search = _get_queryset(Machine, queryset_all, None, search_term, ordering_string, '-name') 2421 queryset_with_search = _get_queryset(Machine, queryset_all, None, search_term, ordering_string, '-name')
2410 queryset = _get_queryset(Machine, queryset_all, filter_string, search_term, ordering_string, '-name') 2422 queryset = _get_queryset(Machine, queryset_all, filter_string, search_term, ordering_string, '-name')