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))
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))
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))