summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bitbake/lib/toaster/toastergui/templates/newproject.html35
-rwxr-xr-xbitbake/lib/toaster/toastergui/views.py29
2 files changed, 46 insertions, 18 deletions
diff --git a/bitbake/lib/toaster/toastergui/templates/newproject.html b/bitbake/lib/toaster/toastergui/templates/newproject.html
index e5a6551967..ce01800e08 100644
--- a/bitbake/lib/toaster/toastergui/templates/newproject.html
+++ b/bitbake/lib/toaster/toastergui/templates/newproject.html
@@ -6,36 +6,39 @@
6 <div class="span6"> 6 <div class="span6">
7 <div class="page-header"> 7 <div class="page-header">
8 <h1>Create a new project</h1> 8 <h1>Create a new project</h1>
9 </div> 9 </div>
10 <form> 10 <div class="container-fluid">
11 {% for a in alerts %}
12 <div class="alert alert-error row-fluid" role="alert">{{a}}</div>
13 {% endfor %}
14 </div>
15 <form method="POST">{% csrf_token %}
11 <fieldset> 16 <fieldset>
12 <label>Project name <span class="muted">(required)</span></label> 17 <label>Project name <span class="muted">(required)</span></label>
13 <input type="text" class="input-xlarge" required name="projectname"> 18 <input type="text" class="input-xlarge" required name="projectname" value="{{projectname}}">
14 <label class="project-form"> 19 <label class="project-form">
15 Project owner 20 Project owner
16 <i class="icon-question-sign get-help" title="The go-to person for this project"></i> 21 <i class="icon-question-sign get-help" title="The go-to person for this project"></i>
17 </label> 22 </label>
18 <form method="POST"> 23 <input type="text" name="username" value="{{username}}">
19 <input type="text">
20 <label class="project-form">Owner's email</label> 24 <label class="project-form">Owner's email</label>
21 <input type="email" class="input-large" name="email"> 25 <input type="email" class="input-large" name="email" value="{{email}}">
22 <label class="project-form"> 26 <label class="project-form">
23 Yocto Project version 27 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> 28 <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> 29 </label>
26 <select> 30 <select name="projectversion">
27 <option>Yocto Project 1.7 "D?"</option> 31 <option value="1.7" {%if projectversion == "1.7" %}selected{%endif%}>Yocto Project 1.7 "D?"</option>
28 <option>Yocto Project 1.6 "Daisy"</option> 32 <option value="1.6" {%if projectversion == "1.6" %}selected{%endif%}>Yocto Project 1.6 "Daisy"</option>
29 <option>Yocto Project 1.5 "Dora"</option> 33 <option value="1.5" {%if projectversion == "1.5" %}selected{%endif%}>Yocto Project 1.5 "Dora"</option>
30 </select> 34 </select>
31 </form>
32 </fieldset> 35 </fieldset>
33 36
34 <div class="form-actions"> 37 <div class="form-actions">
35 <a href="project-with-targets.html" class="btn btn-primary btn-large">Create project</a> 38 <input type="submit" class="btn btn-primary btn-large" value="Create project"/>
36 </div> 39 </div>
37 </form> 40 </form>
38 </div> 41 </div>
39 </div> 42 </div>
40 </div> 43 </div>
41{% endblock %} 44{% endblock %}
diff --git a/bitbake/lib/toaster/toastergui/views.py b/bitbake/lib/toaster/toastergui/views.py
index 7dc0108393..89c02d41ab 100755
--- a/bitbake/lib/toaster/toastergui/views.py
+++ b/bitbake/lib/toaster/toastergui/views.py
@@ -1768,17 +1768,42 @@ def managedcontextprocessor(request):
1768# a default "page not available" simple functions for interactive mode 1768# a default "page not available" simple functions for interactive mode
1769if toastermain.settings.MANAGED: 1769if toastermain.settings.MANAGED:
1770 1770
1771 from django.contrib.auth.models import User
1772 from django.contrib.auth import authenticate, login
1773 from django.contrib.auth.decorators import login_required
1774
1775
1771 # new project 1776 # new project
1772 def newproject(request): 1777 def newproject(request):
1773 template = "newproject.html" 1778 template = "newproject.html"
1774 context = {} 1779 context = {
1780 'email': request.user.email if request.user.is_authenticated() else '',
1781 'username': request.user.username if request.user.is_authenticated() else '',
1782 }
1783
1784
1775 if request.method == "GET": 1785 if request.method == "GET":
1776 # render new project page 1786 # render new project page
1777 return render(request, template, context) 1787 return render(request, template, context)
1778 elif request.method == "POST": 1788 elif request.method == "POST":
1779 if request.method: 1789 mandatory_fields = ['projectname', 'email', 'username', 'projectversion']
1790 if reduce( lambda x, y: x and y, map(lambda x: x in request.POST and len(request.POST[x]) > 0, mandatory_fields)):
1791 if not request.user.is_authenticated():
1792 user = authenticate(username = request.POST['username'], password = 'nopass')
1793 if user is None:
1794 user = User.objects.create_user(username = request.POST['username'], email = request.POST['email'], password = "nopass")
1795 raise Exception("User cannot be authed, creating")
1796 user = authenticate(username = request.POST['username'], password = '')
1797 login(request, user)
1798
1780 return redirect(project) 1799 return redirect(project)
1781 else: 1800 else:
1801 alerts = []
1802 # set alerts for missing fields
1803 map(lambda x: alerts.append('Field '+ x + ' not filled in') if not x in request.POST or len(request.POST[x]) == 0 else None, mandatory_fields)
1804 # fill in new page with already submitted values
1805 map(lambda x: context.__setitem__(x, request.POST[x]), mandatory_fields)
1806 context['alerts'] = alerts
1782 return render(request, template, context) 1807 return render(request, template, context)
1783 raise Exception("Invalid HTTP method for this page") 1808 raise Exception("Invalid HTTP method for this page")
1784 1809