def achievement_add(request, response_format='html'):
    """
    Opens an empty form for a new Achievement.

    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 = AchievementForm(request.user.get_profile(), request.POST, files=request.FILES)
            if form.is_valid():
                achievement = form.save()  # TODO: saver
                return HttpResponseRedirect(reverse('achievements_achievement_detail', args=[achievement.id]))
        else:
            return HttpResponseRedirect(reverse('achievements'))
    else:
        form = AchievementForm(request.user)

    return render_to_response('achievements/achievement_form', {'form': form},
                               context_instance=RequestContext(request), response_format=response_format)
def achievement_edit(request, achievement_id, response_format='html'):
    """
    Opens a form to edit a specific Achievement.

    Arguments:
    request -- a Django Request object
    achievement_id -- the id of the requested Achievement object
    response_format -- defines which format the response should be
    """
    achievement = get_object_or_404(Achievement, pk=achievement_id)
    if request.POST:
        if not 'cancel' in request.POST:
            form = AchievementForm(request.user.get_profile(), request.POST, files=request.FILES, instance=achievement)
            if form.is_valid():
                achievement = form.save()  # TODO: saver
                return HttpResponseRedirect(reverse('achievements_achievement_detail', args=[achievement.id]))
        else:
            return HttpResponseRedirect(reverse('achievements'))
    else:
        form = AchievementForm(request.user, instance=achievement)

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