diff options
author | Alexandru DAMIAN <alexandru.damian@intel.com> | 2015-06-22 14:48:53 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2015-06-26 09:27:32 +0100 |
commit | 5d0abf197a513f09fa980b9aed1a02822639b7f0 (patch) | |
tree | 7ae9a32a197952feeede888388ea51f73dc744d8 /bitbake | |
parent | 70c4eb8d3acaad267ee943ebfba793f9cc1c5ee6 (diff) | |
download | openembedded-core-contrib-5d0abf197a513f09fa980b9aed1a02822639b7f0.tar.gz |
bitbake: toastergui: select project types
This brings in project types in the New Project page.
The "analisys" projects are the projects with no "release"
set, and have read-only properties in the project page.
(Bitbake rev: 2efc338cefd6e6e097af83d7dff63e9ba177d021)
Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake')
-rw-r--r-- | bitbake/lib/toaster/orm/models.py | 8 | ||||
-rw-r--r-- | bitbake/lib/toaster/toastergui/templates/newproject.html | 99 | ||||
-rwxr-xr-x | bitbake/lib/toaster/toastergui/views.py | 11 |
3 files changed, 80 insertions, 38 deletions
diff --git a/bitbake/lib/toaster/orm/models.py b/bitbake/lib/toaster/orm/models.py index 077c94d818..8488aa4648 100644 --- a/bitbake/lib/toaster/orm/models.py +++ b/bitbake/lib/toaster/orm/models.py @@ -57,7 +57,11 @@ class ToasterSetting(models.Model): class ProjectManager(models.Manager): def create_project(self, name, release): - prj = self.model(name = name, bitbake_version = release.bitbake_version, release = release) + if release is not None: + prj = self.model(name = name, bitbake_version = release.bitbake_version, release = release) + else: + prj = self.model(name = name, bitbake_version = None, release = None) + prj.save() for defaultconf in ToasterSetting.objects.filter(name__startswith="DEFCONF_"): @@ -66,6 +70,8 @@ class ProjectManager(models.Manager): name = name, value = defaultconf.value) + if release is None: + return prj for rdl in release.releasedefaultlayer_set.all(): try: diff --git a/bitbake/lib/toaster/toastergui/templates/newproject.html b/bitbake/lib/toaster/toastergui/templates/newproject.html index ed3a279052..1159d717ae 100644 --- a/bitbake/lib/toaster/toastergui/templates/newproject.html +++ b/bitbake/lib/toaster/toastergui/templates/newproject.html @@ -11,60 +11,74 @@ <div class="alert alert-error row-fluid" role="alert">{{alert}}</div> {% endif %} </div> - {% if releases.count > 0 %} + + <div class="row-fluid"> + <div class="span6"> <form method="POST">{% csrf_token %} + <fieldset> <label>Project name <span class="muted">(required)</span></label> <input type="text" class="input-xlarge" required id="new-project-name" name="projectname"> - {% if releases.count > 1 %} + </fieldset> + + <fieldset> + <label class="project-form">Project type</label> + <label class="project-form radio"><input type="radio" name="ptype" value="analysis" checked/> Analysis Project</label> + + {% if releases.count > 0 %} + <label class="project-form radio"><input type="radio" name="ptype" value="build" checked /> Build Project</label> + {% endif %} + </fieldset> + + {% if releases.count > 0 %} + <fieldset class="release"> + {% if releases.count > 1 %} <label class="project-form"> Release <i class="icon-question-sign get-help" title="The version of the build system you want to use"></i> </label> <select name="projectversion" id="projectversion"> - {% for release in releases %} - <option value="{{release.id}}" - {%if defaultbranch == release.name %} - selected - {%endif%} - - >{{release.description}}</option> - {% endfor %} + {% for release in releases %} + <option value="{{release.id}}" + {%if defaultbranch == release.name %} + selected + {%endif%} + >{{release.description}}</option> + {% endfor %} </select> - {% for release in releases %} - <div class="row-fluid helptext" id="description-{{release.id}}" style="display: none"> + {% for release in releases %} + <div class="row-fluid helptext" id="description-{{release.id}}" style="display: none"> <span class="help-block span5">{{release.helptext|safe}}</span> - </div> - {% endfor %} - {% else %} - <input type="hidden" name="projectversion" value="{{releases.0.id}}"/> - {% endif %} - + </div> + {% endfor %} + {% else %} + <input type="hidden" name="projectversion" value="{{releases.0.id}}"/> + {% endif %} </fieldset> + {% endif %} <div class="form-actions"> <input type="submit" class="btn btn-primary btn-large" value="Create project"/> <span class="help-inline" style="vertical-align:middle;">To create a project, you need to enter a project name</span> </div> </form> - {% else %} - <br/> - <div class="alert alert-warning row-fluid span6"> - <h3>No releases configured</h3> - <p> - It looks like Toaster releases have not been configured properly. Contact the person who set up Toaster, and tell them about it. - </p> - <p> - If you are the Toaster administrator, we are sorry: setting up Toaster is not easy. - <ul> - <li><a href="{% url 'admin:orm_release_changelist' %}">Log in to the Django administration interface</a> and check the "Releases" section.</li> - <li>Check out the <a href="https://wiki.yoctoproject.org/wiki/Setting_up_a_hosted_managed_mode_for_Toaster#Releases">documentation about configuring releases</a></li> - </ul> - </p> - </div> - {% endif %} + </div> -</div> + <div class="span5 well"> + <span class="help-block"> + <h4>Toaster project types</h4> + <p>With a <strong>build project</strong> you configure and run your builds from Toaster.</p> + <p>With an <strong>analysis project</strong>, the builds are configured and run by another tool + (something like Buildbot or Jenkins), and the project only collects the information about the + builds (packages, recipes, dependencies, logs, etc). </p> + <p>You can read more on <a href="#">how to set up an analysis project</a> + in the Toaster manual.</p> + <h4>Release</h4> + <p>If you create a <strong>build project</strong>, you will need to select a <strong>release</strong>, + which is the version of the build system you want to use to run your builds.</p> + </div> + </div> + </div> <script type="text/javascript"> $(document).ready(function () { @@ -94,6 +108,21 @@ $(".helptext").hide(); $('#description-' + new_release).fadeIn(); }); + + // Hide the project release when you select an analysis project + function projectType() { + if ($("input[type='radio']:checked").val() == 'build') { + $('.release').fadeIn(); + } + else { + $('.release').fadeOut(); + } + } + projectType(); + + $('input:radio').change(function(){ + projectType(); + }); }) </script> diff --git a/bitbake/lib/toaster/toastergui/views.py b/bitbake/lib/toaster/toastergui/views.py index 8c6f9fa84f..1a504b8455 100755 --- a/bitbake/lib/toaster/toastergui/views.py +++ b/bitbake/lib/toaster/toastergui/views.py @@ -2104,8 +2104,11 @@ if True: # render new project page return render(request, template, context) elif request.method == "POST": - mandatory_fields = ['projectname', 'projectversion'] + mandatory_fields = ['projectname', 'ptype'] try: + ptype = request.POST.get('ptype') + if ptype == "build": + mandatory_fields.append('projectversion') # make sure we have values for all mandatory_fields if reduce( lambda x, y: x or y, map(lambda x: len(request.POST.get(x, '')) == 0, mandatory_fields)): # set alert for missing fields @@ -2121,7 +2124,11 @@ if True: login(request, user) # save the project - prj = Project.objects.create_project(name = request.POST['projectname'], release = Release.objects.get(pk = request.POST['projectversion'])) + release = Release.objects.get(pk = request.POST.get('projectversion', None )) + if ptype == "analysis": + release = None + + prj = Project.objects.create_project(name = request.POST['projectname'], release = release) prj.user_id = request.user.pk prj.save() return redirect(reverse(project, args=(prj.pk,)) + "#/newproject") |