mirror of
https://git.yoctoproject.org/poky
synced 2026-05-08 05:09:24 +00:00
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>
This commit is contained in:
committed by
Richard Purdie
parent
70c4eb8d3a
commit
5d0abf197a
@@ -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:
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user