def index(request): # Data returned to the template data = { 'projects_active': Project.objects.filter(members=request.user, state='active').order_by('name'), 'projects_on_hold': Project.objects.filter(members=request.user, state='on_hold').order_by('name'), 'projects_completed': Project.objects.filter(members=request.user, state='completed').order_by('name'), 'projects_dropped': Project.objects.filter(members=request.user, state='dropped').order_by('name'), } # Adding a form to create a new project if user is viewing this page. if request.method == 'GET': data['project_add_form'] = ProjectAddForm() # Handleing the form data that's being posted. elif request.method == 'POST': form = ProjectAddForm(request.POST) if form.is_valid: new_project = form.save() # Need to save the new project before we can assign the user to the project. new_project.members.add(request.user) new_project.save() return HttpResponseRedirect(reverse('project_page', kwargs={'project_id': new_project.id})) # if form doesn't validate, return the form with errors. else: data['project_add_form'] = form return render_to_response('project/project_index.html', data, context_instance=RequestContext(request))