def reject_user_timesheet(request, user_id): """ This allows admins to reject all entries, instead of just one """ form = YearMonthForm(request.GET or request.POST) user = User.objects.get(pk=user_id) if form.is_valid(): from_date, to_date = form.save() entries = Entry.no_join.filter(status=Entry.VERIFIED, user=user, start_time__gte=from_date, end_time__lte=to_date) if request.POST.get('yes'): if entries.exists(): count = entries.count() entries.update(status=Entry.UNVERIFIED) msg = 'You have rejected %d previously verified entries.' \ % count else: msg = 'There are no verified entries to reject.' messages.info(request, msg) else: return render(request, 'timepiece/user/timesheet/reject.html', { 'date': from_date, 'timesheet_user': user }) else: msg = 'You must provide a month and year for entries to be rejected.' messages.error(request, msg) url = reverse('view_user_timesheet', args=(user_id,)) return HttpResponseRedirect(url)
def reject_user_timesheet(request, user_id): """ This allows admins to reject all entries, instead of just one """ form = YearMonthForm(request.GET or request.POST) user = User.objects.get(pk=user_id) if form.is_valid(): from_date, to_date = form.save() entries = Entry.no_join.filter(status=Entry.VERIFIED, user=user, start_time__gte=from_date, end_time__lte=to_date) if request.POST.get('yes'): if entries.exists(): count = entries.count() entries.update(status=Entry.UNVERIFIED) msg = 'You have rejected %d previously verified entries.' \ % count else: msg = 'There are no verified entries to reject.' messages.info(request, msg) else: return render(request, 'timepiece/user/timesheet/reject.html', { 'date': from_date, 'timesheet_user': user }) else: msg = 'You must provide a month and year for entries to be rejected.' messages.error(request, msg) url = reverse('view_user_timesheet', args=(user_id, )) return HttpResponseRedirect(url)
def get_context_data(self, **kwargs): context = super(ProjectTimesheet, self).get_context_data(**kwargs) project = self.object year_month_form = YearMonthForm(self.request.GET or None) if self.request.GET and year_month_form.is_valid(): from_date, to_date = year_month_form.save() else: date = utils.add_timezone(datetime.datetime.today()) from_date = utils.get_month_start(date).date() to_date = from_date + relativedelta(months=1) entries_qs = Entry.objects entries_qs = entries_qs.timespan(from_date, span='month').filter(project=project) extra_values = ('start_time', 'end_time', 'comments', 'seconds_paused', 'id', 'location__name', 'project__name', 'activity__name', 'status') month_entries = entries_qs.date_trunc('month', extra_values) total = entries_qs.aggregate(hours=Sum('hours'))['hours'] user_entries = entries_qs.order_by().values( 'user__first_name', 'user__last_name').annotate(sum=Sum('hours')).order_by('-sum') activity_entries = entries_qs.order_by().values( 'activity__name').annotate(sum=Sum('hours')).order_by('-sum') context.update({ 'project': project, 'year_month_form': year_month_form, 'from_date': from_date, 'to_date': to_date - relativedelta(days=1), 'entries': month_entries, 'total': total, 'user_entries': user_entries, 'activity_entries': activity_entries, }) return context
def get_context_data(self, **kwargs): context = super(ProjectTimesheet, self).get_context_data(**kwargs) project = self.object year_month_form = YearMonthForm(self.request.GET or None) if self.request.GET and year_month_form.is_valid(): from_date, to_date = year_month_form.save() else: date = utils.add_timezone(datetime.datetime.today()) from_date = utils.get_month_start(date).date() to_date = from_date + relativedelta(months=1) entries_qs = Entry.objects entries_qs = entries_qs.timespan(from_date, span='month').filter( project=project ) extra_values = ('start_time', 'end_time', 'comments', 'seconds_paused', 'id', 'location__name', 'project__name', 'activity__name', 'status') month_entries = entries_qs.date_trunc('month', extra_values).order_by('start_time') if month_entries: format_totals(month_entries, "hours") total = entries_qs.aggregate(hours=Sum('hours'))['hours'] if total: total = "{0:.2f}".format(total) user_entries = entries_qs.order_by().values('user__first_name', 'user__last_name') user_entries = user_entries.annotate(sum=Sum('hours')).order_by('-sum') if user_entries: format_totals(user_entries) activity_entries = entries_qs.order_by().values('activity__name') activity_entries = activity_entries.annotate(sum=Sum('hours')).order_by('-sum') if activity_entries: format_totals(activity_entries) context.update({ 'project': project, 'year_month_form': year_month_form, 'from_date': from_date, 'to_date': to_date - relativedelta(days=1), 'entries': month_entries, 'total': total, 'user_entries': user_entries, 'activity_entries': activity_entries, }) return context