diff options
| -rwxr-xr-x | bitbake/bin/toaster | 1 | ||||
| -rw-r--r-- | bitbake/lib/toaster/toastergui/templates/base.html | 13 | ||||
| -rw-r--r-- | bitbake/lib/toaster/toastergui/templates/newproject.html | 41 | ||||
| -rw-r--r-- | bitbake/lib/toaster/toastergui/templates/project.html | 6 | ||||
| -rw-r--r-- | bitbake/lib/toaster/toastergui/urls.py | 5 | ||||
| -rwxr-xr-x | bitbake/lib/toaster/toastergui/views.py | 38 | ||||
| -rw-r--r-- | bitbake/lib/toaster/toastermain/settings.py | 19 |
7 files changed, 119 insertions, 4 deletions
diff --git a/bitbake/bin/toaster b/bitbake/bin/toaster index 01ffc7a37c..90cd982876 100755 --- a/bitbake/bin/toaster +++ b/bitbake/bin/toaster | |||
| @@ -139,6 +139,7 @@ if [ -z "$ZSH_NAME" ] && [ `basename \"$0\"` = `basename \"$BASH_SOURCE\"` ]; th | |||
| 139 | webserverKillAll | 139 | webserverKillAll |
| 140 | RUNNING=0 | 140 | RUNNING=0 |
| 141 | } | 141 | } |
| 142 | export TOASTER_MANAGED=1 | ||
| 142 | webserverStartAll || (echo "Fail to start the web server, stopping" 1>&2 && exit 1) | 143 | webserverStartAll || (echo "Fail to start the web server, stopping" 1>&2 && exit 1) |
| 143 | xdg-open http://0.0.0.0:8000/ >/dev/null 2>&1 & | 144 | xdg-open http://0.0.0.0:8000/ >/dev/null 2>&1 & |
| 144 | trap trap_ctrlc SIGINT | 145 | trap trap_ctrlc SIGINT |
diff --git a/bitbake/lib/toaster/toastergui/templates/base.html b/bitbake/lib/toaster/toastergui/templates/base.html index 9ca9c9ac3b..1407d641d5 100644 --- a/bitbake/lib/toaster/toastergui/templates/base.html +++ b/bitbake/lib/toaster/toastergui/templates/base.html | |||
| @@ -58,6 +58,19 @@ function reload_params(params) { | |||
| 58 | <div class="navbar-inner"> | 58 | <div class="navbar-inner"> |
| 59 | <a class="brand logo" href="#"><img src="{% static 'img/logo.png' %}" class="" alt="Yocto logo project"/></a> | 59 | <a class="brand logo" href="#"><img src="{% static 'img/logo.png' %}" class="" alt="Yocto logo project"/></a> |
| 60 | <a class="brand" href="/">Toaster</a> | 60 | <a class="brand" href="/">Toaster</a> |
| 61 | {%if MANAGED %} | ||
| 62 | <div class="btn-group pull-right"> | ||
| 63 | <a class="btn" href="{% url 'newproject' %}">New project</a> | ||
| 64 | <button class="btn dropdown-toggle" data-toggle="dropdown"> | ||
| 65 | <i class="icon-caret-down"></i> | ||
| 66 | </button> | ||
| 67 | <ul class="dropdown-menu"> | ||
| 68 | <li><a href="#">Clone project</a></li> | ||
| 69 | <li><a href="#">Export project</a></li> | ||
| 70 | <li><a href="#">Import project</a></li> | ||
| 71 | </ul> | ||
| 72 | </div> | ||
| 73 | {%endif%} | ||
| 61 | <a class="pull-right manual" target="_blank" href="http://www.yoctoproject.org/documentation/toaster-manual"> | 74 | <a class="pull-right manual" target="_blank" href="http://www.yoctoproject.org/documentation/toaster-manual"> |
| 62 | <i class="icon-book"></i> | 75 | <i class="icon-book"></i> |
| 63 | Toaster manual | 76 | Toaster manual |
diff --git a/bitbake/lib/toaster/toastergui/templates/newproject.html b/bitbake/lib/toaster/toastergui/templates/newproject.html new file mode 100644 index 0000000000..e5a6551967 --- /dev/null +++ b/bitbake/lib/toaster/toastergui/templates/newproject.html | |||
| @@ -0,0 +1,41 @@ | |||
| 1 | {% extends "base.html" %} | ||
| 2 | {% load projecttags %} | ||
| 3 | {% load humanize %} | ||
| 4 | {% block pagecontent %} | ||
| 5 | <div class="row-fluid"> | ||
| 6 | <div class="span6"> | ||
| 7 | <div class="page-header"> | ||
| 8 | <h1>Create a new project</h1> | ||
| 9 | </div> | ||
| 10 | <form> | ||
| 11 | <fieldset> | ||
| 12 | <label>Project name <span class="muted">(required)</span></label> | ||
| 13 | <input type="text" class="input-xlarge" required name="projectname"> | ||
| 14 | <label class="project-form"> | ||
| 15 | Project owner | ||
| 16 | <i class="icon-question-sign get-help" title="The go-to person for this project"></i> | ||
| 17 | </label> | ||
| 18 | <form method="POST"> | ||
| 19 | <input type="text"> | ||
| 20 | <label class="project-form">Owner's email</label> | ||
| 21 | <input type="email" class="input-large" name="email"> | ||
| 22 | <label class="project-form"> | ||
| 23 | Yocto Project version | ||
| 24 | <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> | ||
| 25 | </label> | ||
| 26 | <select> | ||
| 27 | <option>Yocto Project 1.7 "D?"</option> | ||
| 28 | <option>Yocto Project 1.6 "Daisy"</option> | ||
| 29 | <option>Yocto Project 1.5 "Dora"</option> | ||
| 30 | </select> | ||
| 31 | </form> | ||
| 32 | </fieldset> | ||
| 33 | |||
| 34 | <div class="form-actions"> | ||
| 35 | <a href="project-with-targets.html" class="btn btn-primary btn-large">Create project</a> | ||
| 36 | </div> | ||
| 37 | </form> | ||
| 38 | </div> | ||
| 39 | </div> | ||
| 40 | </div> | ||
| 41 | {% endblock %} | ||
diff --git a/bitbake/lib/toaster/toastergui/templates/project.html b/bitbake/lib/toaster/toastergui/templates/project.html new file mode 100644 index 0000000000..71adb54431 --- /dev/null +++ b/bitbake/lib/toaster/toastergui/templates/project.html | |||
| @@ -0,0 +1,6 @@ | |||
| 1 | {% extends "base.html" %} | ||
| 2 | {% load projecttags %} | ||
| 3 | {% load humanize %} | ||
| 4 | {% block pagecontent %} | ||
| 5 | |||
| 6 | {% endblock %} | ||
diff --git a/bitbake/lib/toaster/toastergui/urls.py b/bitbake/lib/toaster/toastergui/urls.py index 9b583f217b..bba4fda074 100644 --- a/bitbake/lib/toaster/toastergui/urls.py +++ b/bitbake/lib/toaster/toastergui/urls.py | |||
| @@ -65,6 +65,11 @@ urlpatterns = patterns('toastergui.views', | |||
| 65 | # urls not linked from the dashboard | 65 | # urls not linked from the dashboard |
| 66 | url(r'^layers/$', 'layer', name='all-layers'), | 66 | url(r'^layers/$', 'layer', name='all-layers'), |
| 67 | url(r'^layerversions/(?P<layerversion_id>\d+)/recipes/.*$', 'layer_versions_recipes', name='layer_versions_recipes'), | 67 | url(r'^layerversions/(?P<layerversion_id>\d+)/recipes/.*$', 'layer_versions_recipes', name='layer_versions_recipes'), |
| 68 | |||
| 69 | # project URLs | ||
| 70 | url(r'^newproject/$', 'newproject', name='newproject'), | ||
| 71 | url(r'^project/$', 'project', name='project'), | ||
| 72 | |||
| 68 | # default redirection | 73 | # default redirection |
| 69 | url(r'^$', RedirectView.as_view( url= 'builds/')), | 74 | url(r'^$', RedirectView.as_view( url= 'builds/')), |
| 70 | ) | 75 | ) |
diff --git a/bitbake/lib/toaster/toastergui/views.py b/bitbake/lib/toaster/toastergui/views.py index 1f3e11d57c..7dc0108393 100755 --- a/bitbake/lib/toaster/toastergui/views.py +++ b/bitbake/lib/toaster/toastergui/views.py | |||
| @@ -1758,3 +1758,41 @@ def image_information_dir(request, build_id, target_id, packagefile_id): | |||
| 1758 | # stubbed for now | 1758 | # stubbed for now |
| 1759 | return redirect(builds) | 1759 | return redirect(builds) |
| 1760 | 1760 | ||
| 1761 | |||
| 1762 | import toastermain.settings | ||
| 1763 | def managedcontextprocessor(request): | ||
| 1764 | return { "MANAGED" : toastermain.settings.MANAGED } | ||
| 1765 | |||
| 1766 | |||
| 1767 | # we have a set of functions if we're in managed mode, or | ||
| 1768 | # a default "page not available" simple functions for interactive mode | ||
| 1769 | if toastermain.settings.MANAGED: | ||
| 1770 | |||
| 1771 | # new project | ||
| 1772 | def newproject(request): | ||
| 1773 | template = "newproject.html" | ||
| 1774 | context = {} | ||
| 1775 | if request.method == "GET": | ||
| 1776 | # render new project page | ||
| 1777 | return render(request, template, context) | ||
| 1778 | elif request.method == "POST": | ||
| 1779 | if request.method: | ||
| 1780 | return redirect(project) | ||
| 1781 | else: | ||
| 1782 | return render(request, template, context) | ||
| 1783 | raise Exception("Invalid HTTP method for this page") | ||
| 1784 | |||
| 1785 | # Shows the edit project page | ||
| 1786 | def project(request): | ||
| 1787 | template = "project.html" | ||
| 1788 | context = {} | ||
| 1789 | return render(request, template, context) | ||
| 1790 | |||
| 1791 | |||
| 1792 | else: | ||
| 1793 | # these are pages that are NOT available in interactive mode | ||
| 1794 | def newproject(request): | ||
| 1795 | raise Exception("page not available in interactive mode") | ||
| 1796 | |||
| 1797 | def project(request): | ||
| 1798 | raise Exception("page not available in interactive mode") | ||
diff --git a/bitbake/lib/toaster/toastermain/settings.py b/bitbake/lib/toaster/toastermain/settings.py index 97f2ff7cab..09ec2bda98 100644 --- a/bitbake/lib/toaster/toastermain/settings.py +++ b/bitbake/lib/toaster/toastermain/settings.py | |||
| @@ -75,6 +75,11 @@ if 'DATABASE_URL' in os.environ: | |||
| 75 | raise Exception("FIXME: Please implement missing database url schema for url: %s" % dburl) | 75 | raise Exception("FIXME: Please implement missing database url schema for url: %s" % dburl) |
| 76 | 76 | ||
| 77 | 77 | ||
| 78 | if 'TOASTER_MANAGED' in os.environ and os.environ['TOASTER_MANAGED'] == "1": | ||
| 79 | MANAGED = True | ||
| 80 | else: | ||
| 81 | MANAGED = False | ||
| 82 | |||
| 78 | # Allows current database settings to be exported as a DATABASE_URL environment variable value | 83 | # Allows current database settings to be exported as a DATABASE_URL environment variable value |
| 79 | 84 | ||
| 80 | def getDATABASE_URL(): | 85 | def getDATABASE_URL(): |
| @@ -221,12 +226,11 @@ TEMPLATE_CONTEXT_PROCESSORS = ('django.contrib.auth.context_processors.auth', | |||
| 221 | 'django.core.context_processors.static', | 226 | 'django.core.context_processors.static', |
| 222 | 'django.core.context_processors.tz', | 227 | 'django.core.context_processors.tz', |
| 223 | 'django.contrib.messages.context_processors.messages', | 228 | 'django.contrib.messages.context_processors.messages', |
| 224 | "django.core.context_processors.request") | 229 | "django.core.context_processors.request", |
| 230 | 'toastergui.views.managedcontextprocessor', | ||
| 231 | ) | ||
| 225 | 232 | ||
| 226 | INSTALLED_APPS = ( | 233 | INSTALLED_APPS = ( |
| 227 | #'django.contrib.auth', | ||
| 228 | #'django.contrib.contenttypes', | ||
| 229 | #'django.contrib.sessions', | ||
| 230 | #'django.contrib.sites', | 234 | #'django.contrib.sites', |
| 231 | #'django.contrib.messages', | 235 | #'django.contrib.messages', |
| 232 | 'django.contrib.staticfiles', | 236 | 'django.contrib.staticfiles', |
| @@ -243,6 +247,13 @@ INSTALLED_APPS = ( | |||
| 243 | 'bldcontrol', | 247 | 'bldcontrol', |
| 244 | ) | 248 | ) |
| 245 | 249 | ||
| 250 | # if we run in managed mode, we need user support | ||
| 251 | if MANAGED: | ||
| 252 | INSTALLED_APPS = ('django.contrib.auth', | ||
| 253 | 'django.contrib.contenttypes', | ||
| 254 | 'django.contrib.sessions',) + INSTALLED_APPS | ||
| 255 | |||
| 256 | |||
| 246 | # We automatically detect and install applications here if | 257 | # We automatically detect and install applications here if |
| 247 | # they have a 'models.py' or 'views.py' file | 258 | # they have a 'models.py' or 'views.py' file |
| 248 | import os | 259 | import os |
