From 5d0abf197a513f09fa980b9aed1a02822639b7f0 Mon Sep 17 00:00:00 2001 From: Alexandru DAMIAN Date: Mon, 22 Jun 2015 14:48:53 +0100 Subject: 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 Signed-off-by: Richard Purdie --- bitbake/lib/toaster/orm/models.py | 8 +- .../toaster/toastergui/templates/newproject.html | 99 ++++++++++++++-------- bitbake/lib/toaster/toastergui/views.py | 11 ++- 3 files changed, 80 insertions(+), 38 deletions(-) (limited to 'bitbake') 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 @@ {% endif %} - {% if releases.count > 0 %} + +
+
{% csrf_token %} +
- {% if releases.count > 1 %} +
+ +
+ + + + {% if releases.count > 0 %} + + {% endif %} +
+ + {% if releases.count > 0 %} +
+ {% if releases.count > 1 %} - {% for release in releases %} - + {% endfor %} + {% else %} + + {% endif %}
+ {% endif %}
To create a project, you need to enter a project name
- {% else %} -
-
-

No releases configured

-

- It looks like Toaster releases have not been configured properly. Contact the person who set up Toaster, and tell them about it. -

-

- If you are the Toaster administrator, we are sorry: setting up Toaster is not easy. -

-

-
- {% endif %} +
-
+
+ +

Toaster project types

+

With a build project you configure and run your builds from Toaster.

+

With an analysis project, 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).

+

You can read more on how to set up an analysis project + in the Toaster manual.

+

Release

+

If you create a build project, you will need to select a release, + which is the version of the build system you want to use to run your builds.

+
+ + 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") -- cgit v1.2.3-54-g00ecf