def create(request, template='contacts/course/create.html'):
    """Create a course.

    :param template: A custom template.
    """

    if not request.user.is_authenticated():
        return HttpResponseRedirect('/login/?next=%s' % request.path)

    user = request.user
    if not user.has_perm('add_course'):
        return HttpResponseForbidden()

    if request.method == 'POST':
        form = CourseForm(request.POST)

        if form.is_valid():
            p = form.save(commit=False)
            p.user_add = user
            p.user_modify = user
            p.save()
            return HttpResponseRedirect(p.get_update_url())
    else:
        form = CourseForm()

    kwvars = {
        'form': form
    }

    return render_to_response(template, kwvars, RequestContext(request))
def update(request, code, template='contacts/course/update.html'):
    """Update a course.

    :param template: A custom template.
    """

    if not request.user.is_authenticated():
        return HttpResponseRedirect('/login/?next=%s' % request.path)

    user = request.user
    if not user.has_perm('change_course'):
        #todo: posar al missatge que no es pot realitzar l'accio si no es te permis
        return detail(request,code)

    try:
        course = Course.objects.get(code__iexact=code)
    except Course.DoesNotExist:
        raise Http404

    if request.method == 'POST':
        form = CourseForm(request.POST, instance=course)

        if form.is_valid():
            course.user_modify = user
            form.save()
            return HttpResponseRedirect(course.get_absolute_url())
    else:
        form = CourseForm(instance=course)

    kwvars = {
        'form': form,
        'object': course,
    }

    return render_to_response(template, kwvars, RequestContext(request))
def copy(request, code, template='contacts/course/create.html'):
    """Copia un course.

    :param template: Add a custom template.
    """

    if not request.user.is_authenticated():
        return HttpResponseRedirect('/login/?next=%s' % request.path)

    user = request.user
    if not user.has_perm('add_course'):
        return HttpResponseForbidden()

    if request.method == 'POST':
        form = CourseForm(request.POST)

        if form.is_valid():
            p = form.save(commit=False)
            p.user_add = user
            p.user_modify = user
            p.save()
            return HttpResponseRedirect(p.get_update_url())
    else:
        try:
            course = Course.objects.get(code__iexact=code)
        except Course.DoesNotExist:
            raise Http404

        new_course = deepcopy(course)
        new_course.id = None
        new_course.code = "%s_cp" % course.code

        form = CourseForm(instance=new_course)

    kwvars = {
        'form': form,
    }

    return render_to_response(template, kwvars, RequestContext(request))