def edit_occ_date(request, event_slug):
    """
    edit an unpersisted occurrence
    """
    (event, err, occurrence) = fetch_from_url_occ(request, event_slug)
    if err:
        return err

    if not occurrence.cancelled:
        form = OccurrenceForm(data=request.POST or None, instance=occurrence)
        if request.method == 'POST':
            if form.is_valid():
                occurrence = form.save(commit=False)
                occurrence.event = event
                occurrence.save()
                if not request.is_ajax():
                    return HttpResponseRedirect(occurrence.get_absolute_url())
                response = ({'success': 'True'})
            else:
                response = errors_as_json(form)
            if request.is_ajax():
                json = simplejson.dumps(response, ensure_ascii=False)
                return HttpResponse(json, mimetype="application/json")
        return render_to_response('calendars/occurrence_edit.html', {
            'occ_form': form,
            'occurrence': occurrence,
            'action': occurrence.get_edit_url(),
            'event': occurrence.event,
        },
                                  context_instance=RequestContext(request))
def edit_occ_date(request, event_slug):
    """
    edit an unpersisted occurrence
    """
    (event, err, occurrence) = fetch_from_url_occ(request, event_slug)
    if err:
        return err


    if not occurrence.cancelled:
        form = OccurrenceForm(data=request.POST or None, instance=occurrence)
        if request.method == 'POST':
            if form.is_valid():
                occurrence = form.save(commit=False)
                occurrence.event = event
                occurrence.save()
                if not request.is_ajax():
                    return HttpResponseRedirect(occurrence.get_absolute_url())
                response = ({'success':'True'})
            else:
                response = errors_as_json(form)
            if request.is_ajax():
                json = simplejson.dumps(response, ensure_ascii=False)
                return HttpResponse(json, mimetype="application/json")
        return render_to_response('calendars/occurrence_edit.html', {
            'occ_form': form,
            'occurrence': occurrence,
            'action' : occurrence.get_edit_url(),
            'event' : occurrence.event,
        }, context_instance=RequestContext(request))
def cancel_occ_date(request, event_slug):
    """
    cancel a non persisted occurrence
    """
    (event, err, occurrence) = fetch_from_url_occ(request, event_slug)
    if err:
        return err

    if not occurrence.cancelled:
        next = event.get_absolute_url()
        occurrence.cancel()
        return HttpResponseRedirect(next)
def view_occ_date(request, event_slug):
    """
    view an occurrence by date (for non persisted occurrences)
    """
    (event, err, occurrence) = fetch_from_url_occ(request, event_slug)
    if err:
        return err

    if not occurrence.cancelled:
        c = RequestContext(request, {'occurrence': occurrence,
                                     })
        return render_to_response('calendars/occurrence_view.html', c)
def view_occ_date(request, event_slug):
    """
    view an occurrence by date (for non persisted occurrences)
    """
    (event, err, occurrence) = fetch_from_url_occ(request, event_slug)
    if err:
        return err

    if not occurrence.cancelled:
        c = RequestContext(request, {
            'occurrence': occurrence,
        })
        return render_to_response('calendars/occurrence_view.html', c)
def cancel_occ_date(request, event_slug):
    """
    cancel a non persisted occurrence
    """
    (event, err, occurrence) = fetch_from_url_occ(request, event_slug)
    if err:
        return err


    if not occurrence.cancelled:
        next = event.get_absolute_url()
        occurrence.cancel()
        return HttpResponseRedirect(next)