def create_project(request): """View to create a new project. In the past I just linked to the page in the admin, but that doesn't automatically create users and admins for you. And it may be a pain to create project memberships manually. Perhaps the Django admin is customizable enough to fix this, but for now I'll just code it myself. At least this way I can make sure no one (but me) makes any major errors and destroys the site First check if the user is a superuser...""" if not request.user.is_superuser: return handle_privilege( request, "Only the site administrator can create a new project!", '/') if request.method == 'POST': form = CreateProjectForm(request.POST) if form.is_valid(): newproject = CollabProject() newproject = form.save(commit=False) newproject.start_date = datetime.date.today() newproject.save() form.save_m2m() for admin in form.cleaned_data["admins"]: p = ProjectMembership(person=admin, project=newproject, is_admin=True) p.save() return handle_privilege( request, 'The collaboration group "' + newproject.name + '" has been created!', reverse('project_summary', args=[newproject.slug])) else: form = CreateProjectForm() return render_to_response('project/create_project.html', {'form': form}, context_instance=RequestContext(request))