Exemple #1
0
def get_event_data(request):
    """
    Provides events for fullcalendar.
    FullCalendar provides date range in request.GET

    Event structure:
        {
            'title': event title,
            'start': event start date,
            'end': event end date, //optional
            'allDay': True if the event duration is all day,  //optional
            'color': color event display,
            'type': sickday, vacation, holiday, birthday, event
        }

    return: a JSON with the events

    """
    tzinfo = tz.gettz('America/Santiago')
    start = request.GET.get('start')
    end = request.GET.get('end')

    if start is None or end is None:
        return JsonResponse([], encoder=ModelEncoder, safe=False)

    start = datetime.datetime.strptime(start, "%Y-%m-%d")
    start = start.replace(tzinfo=tzinfo)
    end = datetime.datetime.strptime(end, "%Y-%m-%d")
    end = end.replace(tzinfo=tzinfo)

    region_id = request.GET.get('region')
    hide_events = request.GET.get('hideEvents')
    hide_workshops = request.GET.get('hideWorkshops')
    hide_meetings = request.GET.get('hideMeetings')
    hide_taks = request.GET.get('hideTaks')
    hide_external = request.GET.get('hideExternal')
    hide_experimenta = request.GET.get('hideExperimenta')

    events = Event.get_events_for_calendar(
        request.user,
        start,
        end,
        region_id=region_id,
        hide_events=hide_events,
        hide_workshops=hide_workshops,
        hide_meetings=hide_meetings,
        hide_taks=hide_taks,
        hide_external=hide_external,
        hide_experimenta=hide_experimenta,
    )

    return JsonResponse(events, encoder=ModelEncoder, safe=False)