diff options
Diffstat (limited to 'bitbake')
-rw-r--r-- | bitbake/lib/toaster/toastergui/templates/newproject.html | 5 | ||||
-rw-r--r-- | bitbake/lib/toaster/toastergui/templates/project.html | 47 | ||||
-rw-r--r-- | bitbake/lib/toaster/toastergui/urls.py | 11 | ||||
-rwxr-xr-x | bitbake/lib/toaster/toastergui/views.py | 48 |
4 files changed, 85 insertions, 26 deletions
diff --git a/bitbake/lib/toaster/toastergui/templates/newproject.html b/bitbake/lib/toaster/toastergui/templates/newproject.html index 8f1867a94f..6ee27d12d2 100644 --- a/bitbake/lib/toaster/toastergui/templates/newproject.html +++ b/bitbake/lib/toaster/toastergui/templates/newproject.html | |||
@@ -28,8 +28,9 @@ | |||
28 | <i class="icon-question-sign get-help" title="This sets the branch for the Yocto Project core layers (meta, meta-yocto and meta-yocto-bsp), and for the layers you use from the OpenEmbedded Metadata Index"></i> | 28 | <i class="icon-question-sign get-help" title="This sets the branch for the Yocto Project core layers (meta, meta-yocto and meta-yocto-bsp), and for the layers you use from the OpenEmbedded Metadata Index"></i> |
29 | </label> | 29 | </label> |
30 | <select name="projectversion" id="projectversion"> | 30 | <select name="projectversion" id="projectversion"> |
31 | <!-- TODO: XHR data from http://layers.openembedded.org/layerindex/branch/master/layers/ --> | 31 | {% for br in branches %} |
32 | <option value="master" {%if projectversion == "master" %}selected{%endif%}>master</option> | 32 | <option value="{{br.id}}"{%if projectversion == br.id %} selected{%endif%}>{{br.name}} ({{br.short_description}})</option> |
33 | {% endfor %} | ||
33 | </select> | 34 | </select> |
34 | </fieldset> | 35 | </fieldset> |
35 | 36 | ||
diff --git a/bitbake/lib/toaster/toastergui/templates/project.html b/bitbake/lib/toaster/toastergui/templates/project.html index c859f6bcd1..0ddfeb31ae 100644 --- a/bitbake/lib/toaster/toastergui/templates/project.html +++ b/bitbake/lib/toaster/toastergui/templates/project.html | |||
@@ -71,10 +71,29 @@ function postEditAjaxRequest(reqdata) { | |||
71 | }) | 71 | }) |
72 | } | 72 | } |
73 | 73 | ||
74 | |||
75 | |||
76 | |||
74 | $(document).ready(function () { | 77 | $(document).ready(function () { |
75 | setEventHandlers(); | 78 | setEventHandlers(); |
79 | |||
80 | /* Provide XHR calls for the "build" buttons.*/ | ||
81 | $("button#build-all-button").click( function (evt) { | ||
82 | var ajax = $.ajax({ | ||
83 | type:"POST", | ||
84 | url:"{% url 'xhr_projectbuild' project.id %}", | ||
85 | headers: { 'X-CSRFToken': $.cookie("csrftoken")}, | ||
86 | success: function (data, textstatus) { | ||
87 | if (data.error != "ok") { | ||
88 | alert("XHR fail: " + data.error ); | ||
89 | } | ||
90 | }, | ||
91 | error: function (jqXHR, textstatus, error) { alert("XHR errored:" + error + "(" + textstatus + ")"); }, | ||
92 | }) | ||
93 | }); | ||
76 | }); | 94 | }); |
77 | 95 | ||
96 | |||
78 | </script> | 97 | </script> |
79 | 98 | ||
80 | 99 | ||
@@ -97,23 +116,7 @@ $(document).ready(function () { | |||
97 | <input class="huge input-xxlarge" placeholder="Or enter the target you want to build" autocomplete="off" data-minlength="1" data-autocomplete="off" data-provide="typeahead" data-source="" type="text"> | 116 | <input class="huge input-xxlarge" placeholder="Or enter the target you want to build" autocomplete="off" data-minlength="1" data-autocomplete="off" data-provide="typeahead" data-source="" type="text"> |
98 | <button id="build-button" class="btn btn-large" disabled="">Build</button> | 117 | <button id="build-button" class="btn btn-large" disabled="">Build</button> |
99 | </div> | 118 | </div> |
100 | <script> | ||
101 | /* Provide XHR calls for the "build" buttons.*/ | ||
102 | $("button#build-all-button").click( function (evt) { | ||
103 | var ajax = $.ajax({ | ||
104 | type:"POST", | ||
105 | url:"{% url 'xhr_projectbuild' project.id %}", | ||
106 | headers: { 'X-CSRFToken': $.cookie("csrftoken")}, | ||
107 | success: function (data, textstatus) { | ||
108 | if (data.error != "ok") { | ||
109 | alert("XHR fail: " + data.error ); | ||
110 | } | ||
111 | }, | ||
112 | error: function (jqXHR, textstatus, error) { alert("XHR errored:" + error + "(" + textstatus + ")"); }, | ||
113 | }) | ||
114 | }); | ||
115 | 119 | ||
116 | </script> | ||
117 | <!--span class="help-inline">This target is not provided <br />by any of your added layers | 120 | <!--span class="help-inline">This target is not provided <br />by any of your added layers |
118 | <i class="icon-question-sign get-help get-help-red" title="Review your list of added layers to make sure one of them provides core-image-xyz. Clicking on a layer name will give you all the information Toaster has about the layer"></i> | 121 | <i class="icon-question-sign get-help get-help-red" title="Review your list of added layers to make sure one of them provides core-image-xyz. Clicking on a layer name will give you all the information Toaster has about the layer"></i> |
119 | </span> | 122 | </span> |
@@ -255,7 +258,7 @@ $("button#build-all-button").click( function (evt) { | |||
255 | <button id="add-layer-dependencies" class="btn btn-info add-layer">Add layers</button> | 258 | <button id="add-layer-dependencies" class="btn btn-info add-layer">Add layers</button> |
256 | </div> | 259 | </div> |
257 | 260 | ||
258 | <p><a href="#">Import your layer</a> | <a href="#">View all layers</a></p> | 261 | <p><a href="{% url 'importlayer' %}">Import your layer</a> | <a href="{% url 'layers'%}">View all layers</a></p> |
259 | </form> | 262 | </form> |
260 | 263 | ||
261 | <h4 class="air"> | 264 | <h4 class="air"> |
@@ -286,7 +289,7 @@ $("button#build-all-button").click( function (evt) { | |||
286 | <button id="add-target-button" class="btn" type="button">Add</button> | 289 | <button id="add-target-button" class="btn" type="button">Add</button> |
287 | </div> | 290 | </div> |
288 | 291 | ||
289 | <p><a href="#" class="link">View all targets</a></p> | 292 | <p><a href="{% url 'targets' %}" class="link">View all targets</a></p> |
290 | </form> | 293 | </form> |
291 | <h4 class="air"> | 294 | <h4 class="air"> |
292 | Added targets | 295 | Added targets |
@@ -328,10 +331,10 @@ $("button#build-all-button").click( function (evt) { | |||
328 | {{distro}} | 331 | {{distro}} |
329 | <i title="" data-original-title="" class="icon-pencil"></i> | 332 | <i title="" data-original-title="" class="icon-pencil"></i> |
330 | </p> | 333 | </p> |
331 | <p class="localconf"> | 334 | <p class="link-action"> |
332 | <a href="#" class="link">Edit the <code>local.conf</code> file</a> | 335 | <a href="{% url 'projectconf' project.id %}" class="link">Edit configuration variables</a> |
333 | <i data-original-title="The <code>local.conf</code> file is where other project configuration options are set. Pretty much any configuration option can be set in this file. Each option, like everything else in the build system, is a variable - value pair" class="icon-question-sign get-help heading-help" title=""></i> | 336 | <i class="icon-question-sign get-help heading-help" title="You can set other project configuration options here. Each option, like everything else in the build system, is a variable - value pair"></i> |
334 | </p> | 337 | </p> |
335 | </div> | 338 | </div> |
336 | </div> | 339 | </div> |
337 | 340 | ||
diff --git a/bitbake/lib/toaster/toastergui/urls.py b/bitbake/lib/toaster/toastergui/urls.py index 7c4f894b9c..30f006348a 100644 --- a/bitbake/lib/toaster/toastergui/urls.py +++ b/bitbake/lib/toaster/toastergui/urls.py | |||
@@ -63,12 +63,21 @@ urlpatterns = patterns('toastergui.views', | |||
63 | 63 | ||
64 | 64 | ||
65 | # urls not linked from the dashboard | 65 | # urls not linked from the dashboard |
66 | url(r'^layers/$', 'layer', name='all-layers'), | ||
67 | url(r'^layerversions/(?P<layerversion_id>\d+)/recipes/.*$', 'layer_versions_recipes', name='layer_versions_recipes'), | 66 | url(r'^layerversions/(?P<layerversion_id>\d+)/recipes/.*$', 'layer_versions_recipes', name='layer_versions_recipes'), |
68 | 67 | ||
69 | # project URLs | 68 | # project URLs |
70 | url(r'^newproject/$', 'newproject', name='newproject'), | 69 | url(r'^newproject/$', 'newproject', name='newproject'), |
70 | url(r'^importlayer/$', 'importlayer', name='importlayer'), | ||
71 | |||
72 | url(r'^layers/$', 'layers', name='layers'), | ||
73 | url(r'^layer/(?P<layerid>\d+)/$', 'layerdetails', name='layerdetails'), | ||
74 | url(r'^targets/$', 'targets', name='targets'), | ||
75 | url(r'^machines/$', 'machines', name='machines'), | ||
76 | |||
71 | url(r'^project/(?P<pid>\d+)/$', 'project', name='project'), | 77 | url(r'^project/(?P<pid>\d+)/$', 'project', name='project'), |
78 | url(r'^project/(?P<pid>\d+)/configuration$', 'projectconf', name='projectconf'), | ||
79 | url(r'^project/(?P<pid>\d+)/builds$', 'projectbuilds', name='projectbuild'), | ||
80 | |||
72 | url(r'^xhr_projectbuild/(?P<pid>\d+)/$', 'xhr_projectbuild', name='xhr_projectbuild'), | 81 | url(r'^xhr_projectbuild/(?P<pid>\d+)/$', 'xhr_projectbuild', name='xhr_projectbuild'), |
73 | url(r'^xhr_projectedit/(?P<pid>\d+)/$', 'xhr_projectedit', name='xhr_projectedit'), | 82 | url(r'^xhr_projectedit/(?P<pid>\d+)/$', 'xhr_projectedit', name='xhr_projectedit'), |
74 | 83 | ||
diff --git a/bitbake/lib/toaster/toastergui/views.py b/bitbake/lib/toaster/toastergui/views.py index bd65c08b06..cad23570f8 100755 --- a/bitbake/lib/toaster/toastergui/views.py +++ b/bitbake/lib/toaster/toastergui/views.py | |||
@@ -1772,6 +1772,7 @@ if toastermain.settings.MANAGED: | |||
1772 | from django.contrib.auth.decorators import login_required | 1772 | from django.contrib.auth.decorators import login_required |
1773 | 1773 | ||
1774 | from orm.models import Project, ProjectLayer, ProjectTarget, ProjectVariable | 1774 | from orm.models import Project, ProjectLayer, ProjectTarget, ProjectVariable |
1775 | from orm.models import Branch, LayerSource, ToasterSetting | ||
1775 | from bldcontrol.models import BuildRequest | 1776 | from bldcontrol.models import BuildRequest |
1776 | 1777 | ||
1777 | import traceback | 1778 | import traceback |
@@ -1791,6 +1792,8 @@ if toastermain.settings.MANAGED: | |||
1791 | context = { | 1792 | context = { |
1792 | 'email': request.user.email if request.user.is_authenticated() else '', | 1793 | 'email': request.user.email if request.user.is_authenticated() else '', |
1793 | 'username': request.user.username if request.user.is_authenticated() else '', | 1794 | 'username': request.user.username if request.user.is_authenticated() else '', |
1795 | 'branches': Branch.objects.order_by("-up_id"), | ||
1796 | 'defaultbranch': ToasterSetting.objects.get(name = "DEFAULT_RELEASE").value, | ||
1794 | } | 1797 | } |
1795 | 1798 | ||
1796 | 1799 | ||
@@ -1816,7 +1819,7 @@ if toastermain.settings.MANAGED: | |||
1816 | 1819 | ||
1817 | # save the project | 1820 | # save the project |
1818 | prj = Project.objects.create_project(name = request.POST['projectname'], | 1821 | prj = Project.objects.create_project(name = request.POST['projectname'], |
1819 | branch = request.POST['projectversion'].split(" ")[0], | 1822 | branch = Branch.objects.get(pk = request.POST['projectversion'].split(" ")[0]), |
1820 | short_description=request.POST['projectversion'].split(" ")[1:]) | 1823 | short_description=request.POST['projectversion'].split(" ")[1:]) |
1821 | prj.user_id = request.user.pk | 1824 | prj.user_id = request.user.pk |
1822 | prj.save() | 1825 | prj.save() |
@@ -1919,6 +1922,26 @@ if toastermain.settings.MANAGED: | |||
1919 | except Exception as e: | 1922 | except Exception as e: |
1920 | return HttpResponse(json.dumps({"error":str(e) + "\n" + traceback.format_exc()}), content_type = "application/json") | 1923 | return HttpResponse(json.dumps({"error":str(e) + "\n" + traceback.format_exc()}), content_type = "application/json") |
1921 | 1924 | ||
1925 | def importlayer(request): | ||
1926 | raise Exception("TODO: implement page #6595") | ||
1927 | |||
1928 | def layers(request): | ||
1929 | raise Exception("TODO: implement page #6590") | ||
1930 | |||
1931 | def layerdetails(request, layerid): | ||
1932 | raise Exception("TODO: implement page #6591") | ||
1933 | |||
1934 | def targets(request): | ||
1935 | raise Exception("TODO: implement page #6592") | ||
1936 | |||
1937 | def machines(request): | ||
1938 | raise Exception("TODO: implement page #6593") | ||
1939 | |||
1940 | def projectconf(request, pid): | ||
1941 | raise Exception("TODO: implement page #6588") | ||
1942 | |||
1943 | def projectbuilds(request, pid): | ||
1944 | raise Exception("TODO: implement page #6589") | ||
1922 | 1945 | ||
1923 | else: | 1946 | else: |
1924 | # these are pages that are NOT available in interactive mode | 1947 | # these are pages that are NOT available in interactive mode |
@@ -1940,3 +1963,26 @@ else: | |||
1940 | def xhr_projectedit(request, pid): | 1963 | def xhr_projectedit(request, pid): |
1941 | raise Exception("page not available in interactive mode") | 1964 | raise Exception("page not available in interactive mode") |
1942 | 1965 | ||
1966 | def importlayer(request): | ||
1967 | raise Exception("page not available in interactive mode") | ||
1968 | |||
1969 | def layers(request): | ||
1970 | raise Exception("page not available in interactive mode") | ||
1971 | |||
1972 | def layerdetails(request): | ||
1973 | raise Exception("page not available in interactive mode") | ||
1974 | |||
1975 | def targets(request): | ||
1976 | raise Exception("page not available in interactive mode") | ||
1977 | |||
1978 | def targetdetails(request): | ||
1979 | raise Exception("page not available in interactive mode") | ||
1980 | |||
1981 | def machines(request): | ||
1982 | raise Exception("page not available in interactive mode") | ||
1983 | |||
1984 | def projectconf(request): | ||
1985 | raise Exception("page not available in interactive mode") | ||
1986 | |||
1987 | def projectbuilds(request): | ||
1988 | raise Exception("page not available in interactive mode") | ||