Ejemplo n.º 1
0
def billing_show(request, project_id, task_id, user_id, begin, end, group_slug=None, template_name="djime/statistics/billing_info.html", bridge=None):
    if begin != '0':
        s = begin.split('-')
        begin = date(int(s[0]),int(s[1]),int(s[2]))
    else:
        begin = None
    if end != '0':
        e = begin.split('-')
        end = date(int(e[0]),int(e[1]),int(e[2]))
    else:
        end = None
    if project_id == 'all':
        query = Q()
    else:
        query = Q(task__object_id=project_id)
    if task_id == 'all':
        query = query & Q()
    else:
        query = query & Q(task=task_id)
    if user_id == 'all':
        query = query & Q()
    else:
        query = query & Q(user=user_id)
    if begin and end:
        query = query & Q(begin__range=(begin, end + timedelta(days=1)))
    elif begin:
        query = query & Q(begin__gte=begin)
    elif end:
        query = query & Q(begin__gte=end)
    timeslices = TimeSlice.objects.select_related().filter(query)
    return render_to_response(template_name, {'timeslices':
                timesheet_timeslice_handler(timeslices)},
                        context_instance=RequestContext(request))
Ejemplo n.º 2
0
def timesheet_date(request, end_date, start_date, group_slug=None, template_name="djime/timesheet.html", bridge=None):
    if request.method == 'GET':
        form = TimeSliceSheetForm(request.user)
    elif request.method == 'POST':
        form = TimeSliceSheetForm(request.user, request.POST)
        if form.is_valid():
            cd = form.cleaned_data
            timeslice = TimeSlice(
                task=cd['task'],
                user=request.user,
                duration=cd['duration'],
                note=cd['note'],
            )
            timeslice.save()

    headline = '%s to %s' % (start_date, end_date)
    s_date = datetime.strptime(start_date, '%Y-%m-%d').date()
    e_date = datetime.strptime(end_date, '%Y-%m-%d').date() + \
                                                    timedelta(days=1)
    timeslices = TimeSlice.objects.select_related().filter(
                                user=request.user,
                                begin__range=(s_date, e_date))

    return render_to_response(template_name, {
        'slice_list': timesheet_timeslice_handler(timeslices),
        'timesheet_timeslice_form': form,
        'headline': headline
    }, context_instance=RequestContext(request))
Ejemplo n.º 3
0
def timesheet(request, method=None, year=None, method_value=0, group_slug=None, template_name="djime/timesheet.html", bridge=None):
    if request.method == 'GET':
        form = TimeSliceSheetForm(request.user)
    elif request.method == 'POST':
        form = TimeSliceSheetForm(request.user, request.POST)
        if form.is_valid():
            cd = form.cleaned_data
            timeslice = TimeSlice(
                task=cd['task'],
                user=request.user,
                duration=cd['duration'],
                note=cd['note'],
            )
            timeslice.save()

    today = date.today()
    if not method:
        headline = 'today'
        timeslices = TimeSlice.objects.select_related().filter(
                            user=request.user, begin__day=today.day,
                            begin__month=today.month, begin__year=today.year)
    elif method == 'week':
        week = int(method_value)
        if year:
            year = int(year)
            headline = 'week %s - %s' % (week, year)
        elif week:
            year = today.year
            headline = 'week %s - %s' % (week, year)
        else:
            headline = 'this week'
            week = today.isocalendar()[1]
            year = today.year

        start_date = date(year, 1, 1) + timedelta(days=(week-2)*7)
        while start_date.isocalendar()[1] != week:
            start_date += timedelta(days=1)
        end_date = start_date + timedelta(days=7)

        timeslices = TimeSlice.objects.select_related().filter(
                                    user=request.user,
                                    begin__range=(start_date, end_date))
    elif method == 'month':
        month = int(method_value)
        if year:
            headline = '%s - %s' % (datetime(2000, month, 1).strftime('%B'), year)
        elif month:
            year = today.year
            headline = '%s - %s' % (datetime(2000, month, 1).strftime('%B'), year)
        else:
            headline = 'this month'
            month = today.month
            year = today.year
        timeslices = TimeSlice.objects.select_related().filter(
                            user=request.user, begin__month=month,
                                                    begin__year=year)
    elif method == 'quarter':
        quarter = int(method_value)
        quarter_suffix = ['1st', '2nd', '3rd', '4th']
        quarter_end = [31, 30, 30, 31]
        if year:
            year = int(year)
            headline = '%s quarter - %s' % (quarter_suffix[quarter-1], year)
        elif quarter:
            year = today.year
            headline = '%s quarter - %s' % (quarter_suffix[quarter-1], year)
        else:
            headline = 'this quarter'
            quarter = (today.month - 1) / 3 + 1
            year = today.year
        start_date = date(year, quarter * 3 - 2, 1)
        end_date = date(year, quarter * 3, quarter_end[quarter-1]) + \
                                                    timedelta(days=1)
        timeslices = TimeSlice.objects.select_related().filter(
                                    user=request.user,
                                    begin__range=(start_date, end_date))
    elif method == 'year':
        year = int(method_value)
        if not year:
            year = today.year
        if year == today.year:
            headline = 'this year'
        else:
            headline = year
        timeslices = TimeSlice.objects.select_related().filter(
                                user=request.user, begin__year=year)


    return render_to_response(template_name, {
        'slice_list': timesheet_timeslice_handler(timeslices),
        'timesheet_timeslice_form': form,
        'headline': headline
    }, context_instance=RequestContext(request))