[bitbake-devel] [PATCH 08/14] toastergui: new project page
Alex DAMIAN
alexandru.damian at intel.com
Thu Nov 27 17:07:59 UTC 2014
From: Alexandru DAMIAN <alexandru.damian at intel.com>
Patch that brings in to new project page according to specifications.
[YOCTO #6596]
Signed-off-by: Alexandru DAMIAN <alexandru.damian at intel.com>
---
lib/toaster/toastergui/templates/base.html | 2 +-
lib/toaster/toastergui/templates/newproject.html | 116 +++++++++++++++++------
lib/toaster/toastergui/views.py | 7 +-
3 files changed, 92 insertions(+), 33 deletions(-)
diff --git a/lib/toaster/toastergui/templates/base.html b/lib/toaster/toastergui/templates/base.html
index 8170a3d..594c495 100644
--- a/lib/toaster/toastergui/templates/base.html
+++ b/lib/toaster/toastergui/templates/base.html
@@ -60,7 +60,7 @@
</a>
{%if MANAGED %}
<div class="btn-group pull-right">
- <a class="btn" href="{% url 'newproject' %}">New project</a>
+ <a class="btn" id="new-project-button" href="{% url 'newproject' %}">New project</a>
</div>
<!-- New build popover -->
<div class="btn-group pull-right" id="new-build-button">
diff --git a/lib/toaster/toastergui/templates/newproject.html b/lib/toaster/toastergui/templates/newproject.html
index 43c4e28..5a5e1e6 100644
--- a/lib/toaster/toastergui/templates/newproject.html
+++ b/lib/toaster/toastergui/templates/newproject.html
@@ -3,35 +3,91 @@
{% load humanize %}
{% block pagecontent %}
<div class="row-fluid">
- <div class="span6">
- <div class="page-header">
- <h1>Create a new project</h1>
- </div>
- <div class="container-fluid">
- {% if alert %}
- <div class="alert alert-error row-fluid" role="alert">{{alert}}</div>
- {% endif %}
- </div>
- <form method="POST">{% csrf_token %}
- <fieldset>
- <label>Project name <span class="muted">(required)</span></label>
- <input type="text" class="input-xlarge" required name="projectname" value="{{projectname}}">
- <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 name="projectversion" id="projectversion">
- {% for release in releases %}
- <option value="{{release.id}}"{%if projectversion == release.id %} selected{%endif%}>{{release.name}} ({{release.description}})</option>
- {% endfor %}
- </select>
- </fieldset>
+ <div class="page-header">
+ <h1>Create a new project</h1>
+ </div>
+ <div class="container-fluid">
+ {% if alert %}
+ <div class="alert alert-error row-fluid" role="alert">{{alert}}</div>
+ {% endif %}
+ </div>
+ {% if releases.count > 0 %}
+ <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 %}
+ <label class="project-form">
+ Release version
+ <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 projectversion == release.id %} selected{%endif%}>{{release.description}} ({{release.name}})</option>
+ {% endfor %}
+ </select>
+ {% 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 %}
+ </fieldset>
- <div class="form-actions">
- <input type="submit" class="btn btn-primary btn-large" value="Create project"/>
- </div>
- </form>
- </div>
- </div>
- </div>
+ <div class="form-actions">
+ <input type="submit" class="btn btn-primary btn-large" value="Create project"></input>
+ <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>
+ <script type="text/javascript">
+ $(document).ready(function () {
+ // hide the new project button
+ $("#new-project-button").hide();
+ $('.btn-primary').attr('disabled', 'disabled');
+
+ // enable submit button when all required fields are populated
+ $("input#new-project-name").keyup(function() {
+ if ($("input#new-project-name").val().length > 0 ){
+ $('.btn-primary').removeAttr('disabled');
+ $(".help-inline").css('visibility','hidden');
+ }
+ else {
+ $('.btn-primary').attr('disabled', 'disabled');
+ $(".help-inline").css('visibility','visible');
+ }
+ });
+
+ // show relevant help text for the selected release
+ var selected_release = $('select').val();
+ $("#description-" + selected_release).show();
+
+
+ $('select').change(function(){
+ var new_release = $('select').val();
+ $(".helptext").hide();
+ $('#description-' + new_release).fadeIn();
+ });
+ })
+ </script>
+</div>
{% endblock %}
diff --git a/lib/toaster/toastergui/views.py b/lib/toaster/toastergui/views.py
index b13f3e8..49a7769 100755
--- a/lib/toaster/toastergui/views.py
+++ b/lib/toaster/toastergui/views.py
@@ -1894,9 +1894,12 @@ if toastermain.settings.MANAGED:
'email': request.user.email if request.user.is_authenticated() else '',
'username': request.user.username if request.user.is_authenticated() else '',
'releases': Release.objects.order_by("id"),
- 'defaultbranch': ToasterSetting.objects.get(name = "DEFAULT_RELEASE").value,
}
+ try:
+ context['defaultbranch'] = ToasterSetting.objects.get(name = "DEFAULT_RELEASE").value
+ except ToasterSetting.DoesNotExist:
+ pass
if request.method == "GET":
# render new project page
@@ -2156,7 +2159,7 @@ if toastermain.settings.MANAGED:
def _lv_to_dict(x):
- return {"id": x.pk, "name": x.layer.name,
+ return {"id": x.pk, "name": x.layer.name,
"detail": "(" + x.layer.vcs_url + (")" if x.up_branch == None else " | "+x.up_branch.name+")"),
"giturl": x.layer.vcs_url, "layerdetailurl" : reverse('layerdetails', args=(x.pk,))}
--
1.9.1
More information about the bitbake-devel
mailing list