bitbake: toaster: add project pages

We add the new project and project page skeletons.

In the process, we add an identifier in the settings.py
to detect whenever Toaster is running in managed mode,
and a context processor to make this value available
to the template processor.

(Bitbake rev: 927a27c68e24cfe13f62ca5f0e60878b04fa4e24)

Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Alexandru DAMIAN 2014-06-26 15:21:42 +01:00 committed by Richard Purdie
parent 6b62a0fd6e
commit cff19351a8
7 changed files with 119 additions and 4 deletions

View File

@ -139,6 +139,7 @@ if [ -z "$ZSH_NAME" ] && [ `basename \"$0\"` = `basename \"$BASH_SOURCE\"` ]; th
webserverKillAll
RUNNING=0
}
export TOASTER_MANAGED=1
webserverStartAll || (echo "Fail to start the web server, stopping" 1>&2 && exit 1)
xdg-open http://0.0.0.0:8000/ >/dev/null 2>&1 &
trap trap_ctrlc SIGINT

View File

@ -58,6 +58,19 @@ function reload_params(params) {
<div class="navbar-inner">
<a class="brand logo" href="#"><img src="{% static 'img/logo.png' %}" class="" alt="Yocto logo project"/></a>
<a class="brand" href="/">Toaster</a>
{%if MANAGED %}
<div class="btn-group pull-right">
<a class="btn" href="{% url 'newproject' %}">New project</a>
<button class="btn dropdown-toggle" data-toggle="dropdown">
<i class="icon-caret-down"></i>
</button>
<ul class="dropdown-menu">
<li><a href="#">Clone project</a></li>
<li><a href="#">Export project</a></li>
<li><a href="#">Import project</a></li>
</ul>
</div>
{%endif%}
<a class="pull-right manual" target="_blank" href="http://www.yoctoproject.org/documentation/toaster-manual">
<i class="icon-book"></i>
Toaster manual

View File

@ -0,0 +1,41 @@
{% extends "base.html" %}
{% load projecttags %}
{% load humanize %}
{% block pagecontent %}
<div class="row-fluid">
<div class="span6">
<div class="page-header">
<h1>Create a new project</h1>
</div>
<form>
<fieldset>
<label>Project name <span class="muted">(required)</span></label>
<input type="text" class="input-xlarge" required name="projectname">
<label class="project-form">
Project owner
<i class="icon-question-sign get-help" title="The go-to person for this project"></i>
</label>
<form method="POST">
<input type="text">
<label class="project-form">Owner's email</label>
<input type="email" class="input-large" name="email">
<label class="project-form">
Yocto Project version
<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>
</label>
<select>
<option>Yocto Project 1.7 "D?"</option>
<option>Yocto Project 1.6 "Daisy"</option>
<option>Yocto Project 1.5 "Dora"</option>
</select>
</form>
</fieldset>
<div class="form-actions">
<a href="project-with-targets.html" class="btn btn-primary btn-large">Create project</a>
</div>
</form>
</div>
</div>
</div>
{% endblock %}

View File

@ -0,0 +1,6 @@
{% extends "base.html" %}
{% load projecttags %}
{% load humanize %}
{% block pagecontent %}
{% endblock %}

View File

@ -65,6 +65,11 @@ urlpatterns = patterns('toastergui.views',
# urls not linked from the dashboard
url(r'^layers/$', 'layer', name='all-layers'),
url(r'^layerversions/(?P<layerversion_id>\d+)/recipes/.*$', 'layer_versions_recipes', name='layer_versions_recipes'),
# project URLs
url(r'^newproject/$', 'newproject', name='newproject'),
url(r'^project/$', 'project', name='project'),
# default redirection
url(r'^$', RedirectView.as_view( url= 'builds/')),
)

View File

@ -1758,3 +1758,41 @@ def image_information_dir(request, build_id, target_id, packagefile_id):
# stubbed for now
return redirect(builds)
import toastermain.settings
def managedcontextprocessor(request):
return { "MANAGED" : toastermain.settings.MANAGED }
# we have a set of functions if we're in managed mode, or
# a default "page not available" simple functions for interactive mode
if toastermain.settings.MANAGED:
# new project
def newproject(request):
template = "newproject.html"
context = {}
if request.method == "GET":
# render new project page
return render(request, template, context)
elif request.method == "POST":
if request.method:
return redirect(project)
else:
return render(request, template, context)
raise Exception("Invalid HTTP method for this page")
# Shows the edit project page
def project(request):
template = "project.html"
context = {}
return render(request, template, context)
else:
# these are pages that are NOT available in interactive mode
def newproject(request):
raise Exception("page not available in interactive mode")
def project(request):
raise Exception("page not available in interactive mode")

View File

@ -75,6 +75,11 @@ if 'DATABASE_URL' in os.environ:
raise Exception("FIXME: Please implement missing database url schema for url: %s" % dburl)
if 'TOASTER_MANAGED' in os.environ and os.environ['TOASTER_MANAGED'] == "1":
MANAGED = True
else:
MANAGED = False
# Allows current database settings to be exported as a DATABASE_URL environment variable value
def getDATABASE_URL():
@ -221,12 +226,11 @@ TEMPLATE_CONTEXT_PROCESSORS = ('django.contrib.auth.context_processors.auth',
'django.core.context_processors.static',
'django.core.context_processors.tz',
'django.contrib.messages.context_processors.messages',
"django.core.context_processors.request")
"django.core.context_processors.request",
'toastergui.views.managedcontextprocessor',
)
INSTALLED_APPS = (
#'django.contrib.auth',
#'django.contrib.contenttypes',
#'django.contrib.sessions',
#'django.contrib.sites',
#'django.contrib.messages',
'django.contrib.staticfiles',
@ -243,6 +247,13 @@ INSTALLED_APPS = (
'bldcontrol',
)
# if we run in managed mode, we need user support
if MANAGED:
INSTALLED_APPS = ('django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',) + INSTALLED_APPS
# We automatically detect and install applications here if
# they have a 'models.py' or 'views.py' file
import os