Example #1
0
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))