Exemplo n.º 1
0
def get_events(request, child_id):
    if child_id:
        if not re.match('^[0-9]+$', child_id):
            raise Exception('Invalid input')
        try:
            child = Child.objects.get(id=child_id)
        except Child.DoesNotExist:
            raise Exception("Invalid input")

        cv = ChildView(user=request.user, child=child)

        if not cv.can_view_child_schedule:
            raise Exception("You do not have permissions for this")

        start, end = get_period_date(request.GET)

        event_list = list(
            child.events.select_related('event').filter(
                event__start__gte=start, event__end__lte=end))
        # TODO filter out 'unavailable' events.

        select_related_generic_prop(event_list, 'activity', 'event')

        return_list = process_event_list_for_fullcalendar(event_list)

    return HttpResponse(simplejson.dumps(return_list, default=dthandler),
                        mimetype='application/javascript')
Exemplo n.º 2
0
Arquivo: views.py Projeto: braskin/pd
def get_condensed_calendar(request, child_id, **kwargs):
    if child_id:
        if not re.match('^[0-9]+$',child_id):
            raise Exception('Invalid input')
        try:
            child = Child.objects.get(id=child_id)
        except Child.DoesNotExist:
            raise Exception("Invalid input")

        childview = create_childview(user=request.user, child=child)
        if not childview.can_view_child_schedule:
            raise Exception("No permissions for this")
    else:
        raise Exception('Invalid input')


    start = datetime.now()
    start = start.replace(hour=0,minute=1,second=0)
    end = start + timedelta(days=7, hours=2)
    end = end.replace(hour=0,minute=1,second=0)

    days = []

    day_to_array_map = {}
    day_counter = 0

    current_day = start    
    event_day_list = []

    while not current_day.day == end.day:
        day = current_day.strftime('%d')
        day_to_array_map[day] = day_counter
        day_counter = day_counter + 1
        event_day_list.append([])
        current_day = current_day + timedelta(days=1)

    event_list = list(child.events.select_related('event').filter(event__start__gte = start, event__end__lte = end))
    select_related_generic_prop(event_list, 'activity','event')

    max_events = 3

    for ep in event_list:
        if not ep.status == '1' and not ep.status == '5':
            ev_day = ep.event.start.strftime('%d')
            
            ev_start = ep.event.start.strftime('%I:%M %p')
            ev_status = ep.status

            ev_index = day_to_array_map[ev_day]

            if len(event_day_list[ev_index]) < max_events:
                activity = ep.event.activity

                event_day_list[ev_index].append({ 'direct_url':activity.direct_url, 'type':activity.type, 'start': ev_start, 'status': ev_status, 'summary':activity.summary() })
                
    return HttpResponse(simplejson.dumps(event_day_list), mimetype='application/javascript')
Exemplo n.º 3
0
Arquivo: views.py Projeto: braskin/pd
def get_events(request, child_id):
    if child_id:
        if not re.match('^[0-9]+$',child_id):
            raise Exception('Invalid input')
        try:
            child = Child.objects.get(id=child_id)
        except Child.DoesNotExist:
            raise Exception("Invalid input")

        cv = ChildView(user=request.user, child=child)

        if not cv.can_view_child_schedule:
            raise Exception("You do not have permissions for this")

        start, end = get_period_date(request.GET)

        event_list = list(child.events.select_related('event').filter(event__start__gte = start, event__end__lte = end))
        # TODO filter out 'unavailable' events.
        
        select_related_generic_prop(event_list, 'activity','event')

        return_list = process_event_list_for_fullcalendar(event_list)
            
    return HttpResponse(simplejson.dumps(return_list, default=dthandler), mimetype='application/javascript')
Exemplo n.º 4
0
def get_condensed_calendar(request, child_id, **kwargs):
    if child_id:
        if not re.match('^[0-9]+$', child_id):
            raise Exception('Invalid input')
        try:
            child = Child.objects.get(id=child_id)
        except Child.DoesNotExist:
            raise Exception("Invalid input")

        childview = create_childview(user=request.user, child=child)
        if not childview.can_view_child_schedule:
            raise Exception("No permissions for this")
    else:
        raise Exception('Invalid input')

    start = datetime.now()
    start = start.replace(hour=0, minute=1, second=0)
    end = start + timedelta(days=7, hours=2)
    end = end.replace(hour=0, minute=1, second=0)

    days = []

    day_to_array_map = {}
    day_counter = 0

    current_day = start
    event_day_list = []

    while not current_day.day == end.day:
        day = current_day.strftime('%d')
        day_to_array_map[day] = day_counter
        day_counter = day_counter + 1
        event_day_list.append([])
        current_day = current_day + timedelta(days=1)

    event_list = list(
        child.events.select_related('event').filter(event__start__gte=start,
                                                    event__end__lte=end))
    select_related_generic_prop(event_list, 'activity', 'event')

    max_events = 3

    for ep in event_list:
        if not ep.status == '1' and not ep.status == '5':
            ev_day = ep.event.start.strftime('%d')

            ev_start = ep.event.start.strftime('%I:%M %p')
            ev_status = ep.status

            ev_index = day_to_array_map[ev_day]

            if len(event_day_list[ev_index]) < max_events:
                activity = ep.event.activity

                event_day_list[ev_index].append({
                    'direct_url': activity.direct_url,
                    'type': activity.type,
                    'start': ev_start,
                    'status': ev_status,
                    'summary': activity.summary()
                })

    return HttpResponse(simplejson.dumps(event_day_list),
                        mimetype='application/javascript')