def prototype_edit(request, prototype_id, response_format='html'):
    """
    Opens a form to edit a Prototype.

    Arguments:
    request -- a Django Request object
    prototype_id -- the id of the requested Prototype object
    response_format -- defines which format the response should be
    """
    prototype = get_object_or_404(Prototype, pk=prototype_id)
    if not request.user.get_profile().has_permission(prototype, mode='w'):
        return HttpResponseRedirect(reverse('achievements_prototype_detail', args=[prototype.id]))

    if request.POST:
        if not 'cancel' in request.POST:
            form = PrototypeForm(request.user.get_profile(), request.POST, files=request.FILES, instance=prototype)
            if form.is_valid():
                prototype = form.save()
                return HttpResponseRedirect(reverse('achievements_prototype_detail', args=[prototype.id]))
        else:
            return HttpResponseRedirect(reverse('achievements_prototypes'))
    else:
        form = PrototypeForm(request.user, instance=prototype)

    return render_to_response('achievements/prototype_form', {'form': form},
                              context_instance=RequestContext(request), response_format=response_format)
def prototype_add(request, response_format='html'):
    """
    This delivers a view to create a new Prototype.

    Arguments:
    request -- a Django Request object
    response_format -- defines which format the response should be
    """
    if request.POST:
        if not 'cancel' in request.POST:
            form = PrototypeForm(request.user.get_profile(), request.POST, files=request.FILES)
            if form.is_valid():
                prototype = form.save()  # TODO: saver
                return HttpResponseRedirect(reverse('achievements_prototype_detail', args=[prototype.id]))
        else:
            return HttpResponseRedirect(reverse('achievements_prototypes'))
    else:
        form = PrototypeForm(request.user)

    return render_to_response('achievements/prototype_form', {'form': form},
                              context_instance=RequestContext(request), response_format=response_format)