<div class="span6">
<div class="page-header">
<h1>Create a new project</h1>
- </div>
- <form>
+ </div>
+ <div class="container-fluid">
+ {% for a in alerts %}
+ <div class="alert alert-error row-fluid" role="alert">{{a}}</div>
+ {% endfor %}
+ </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">
+ <input type="text" class="input-xlarge" required name="projectname" value="{{projectname}}">
<label class="project-form">
Project owner
- <i class="icon-question-sign get-help" title="The go-to person for this project"></i>
+ <i class="icon-question-sign get-help" title="The go-to person for this project"></i>
</label>
- <form method="POST">
- <input type="text">
+ <input type="text" name="username" value="{{username}}">
<label class="project-form">Owner's email</label>
- <input type="email" class="input-large" name="email">
+ <input type="email" class="input-large" name="email" value="{{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 name="projectversion">
+ <option value="1.7" {%if projectversion == "1.7" %}selected{%endif%}>Yocto Project 1.7 "D?"</option>
+ <option value="1.6" {%if projectversion == "1.6" %}selected{%endif%}>Yocto Project 1.6 "Daisy"</option>
+ <option value="1.5" {%if projectversion == "1.5" %}selected{%endif%}>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>
+ <input type="submit" class="btn btn-primary btn-large" value="Create project"/>
</div>
- </form>
+ </form>
</div>
</div>
- </div>
+ </div>
{% endblock %}
# a default "page not available" simple functions for interactive mode
if toastermain.settings.MANAGED:
+ from django.contrib.auth.models import User
+ from django.contrib.auth import authenticate, login
+ from django.contrib.auth.decorators import login_required
+
+
# new project
def newproject(request):
template = "newproject.html"
- context = {}
+ context = {
+ 'email': request.user.email if request.user.is_authenticated() else '',
+ 'username': request.user.username if request.user.is_authenticated() else '',
+ }
+
+
if request.method == "GET":
# render new project page
return render(request, template, context)
elif request.method == "POST":
- if request.method:
+ mandatory_fields = ['projectname', 'email', 'username', 'projectversion']
+ if reduce( lambda x, y: x and y, map(lambda x: x in request.POST and len(request.POST[x]) > 0, mandatory_fields)):
+ if not request.user.is_authenticated():
+ user = authenticate(username = request.POST['username'], password = 'nopass')
+ if user is None:
+ user = User.objects.create_user(username = request.POST['username'], email = request.POST['email'], password = "nopass")
+ raise Exception("User cannot be authed, creating")
+ user = authenticate(username = request.POST['username'], password = '')
+ login(request, user)
+
return redirect(project)
else:
+ alerts = []
+ # set alerts for missing fields
+ 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)
+ # fill in new page with already submitted values
+ map(lambda x: context.__setitem__(x, request.POST[x]), mandatory_fields)
+ context['alerts'] = alerts
return render(request, template, context)
raise Exception("Invalid HTTP method for this page")