def test_get_unsubmitted_timecards(self): """ Check that get time cards returns the correct queryset """ queryset = get_timecardobjects(TimecardList.queryset, params={'submitted': 'no'}) self.assertEqual(len(queryset), 1) queryset = get_timecardobjects(TimecardList.queryset, params={'submitted': 'yes'}) self.assertEqual(len(queryset), 2) queryset = get_timecardobjects(TimecardList.queryset, params={'submitted': 'foo'}) self.assertEqual(len(queryset), 2)
def admin_bulk_timecard_list(request): if not request.user.is_superuser: raise PermissionDenied queryset = get_timecardobjects(TimecardList.queryset, request.GET) serializer = AdminBulkTimecardSerializer() return stream_csv(queryset, serializer)
def slim_bulk_timecard_list(request): """ Stream a slimmed down version of all the timecards as CSV. """ queryset = get_timecardobjects(TimecardList.queryset, request.GET) serializer = SlimBulkTimecardSerializer() return stream_csv(queryset, serializer)
def bulk_timecard_list(request): """ Stream all the timecards as CSV. """ queryset = get_timecardobjects(TimecardList.queryset, request.GET) serializer = BulkTimecardSerializer() return stream_csv(queryset, serializer)
def general_snippets_only_timecard_list(request): """ Stream all timecard data that is for General and has a snippet. """ objects = TimecardObject.objects.filter( project__accounting_code__billable=False, notes__isnull=False ) queryset = get_timecardobjects(objects, request.GET) serializer = GeneralSnippetsTimecardSerializer() return stream_csv(queryset, serializer)
def timeline_view(request, value_fields=(), **field_alias): """ CSV endpoint for the project timeline viz. """ queryset = get_timecardobjects(TimecardList.queryset, request.GET) fields = list(value_fields) + [ 'timecard__reporting_period__start_date', 'timecard__reporting_period__end_date', 'project__accounting_code__billable', ] field_map = { 'timecard__reporting_period__start_date': 'start_date', 'timecard__reporting_period__end_date': 'end_date', 'project__accounting_code__billable': 'billable', } field_map.update(field_alias) data = queryset.values(*fields).annotate(hours_spent=Sum('hours_spent')) fields.append('hours_spent') data = [ { field_map.get(field, field): row.get(field) for field in fields } for row in data ] response = HttpResponse(content_type='text/csv') fieldnames = [field_map.get(field, field) for field in fields] writer = csv.DictWriter(response, fieldnames=fieldnames) writer.writeheader() for row in data: writer.writerow(row) return response
def test_get_timecardobjects(self): """ Check that get time cards returns the correct queryset """ # Check with no params queryset = get_timecardobjects(TimecardList.queryset) self.assertEqual(len(queryset), 2) # Check with after param queryset = get_timecardobjects(TimecardList.queryset, params={'after': '2020-12-31'}) self.assertEqual(len(queryset), 0) # Check with date param queryset = get_timecardobjects(TimecardList.queryset, params={'date': '2000-01-01'}) self.assertEqual(len(queryset), 0) queryset = get_timecardobjects(TimecardList.queryset, params={'date': '2015-06-08'}) self.assertEqual(len(queryset), 1) # Check with user param queryset = get_timecardobjects(TimecardList.queryset, params={'user': '******'}) self.assertEqual(len(queryset), 2) queryset = get_timecardobjects(TimecardList.queryset, params={'user': '******'}) self.assertEqual(len(queryset), 2) queryset = get_timecardobjects(TimecardList.queryset, params={'user': '******'}) self.assertEqual(len(queryset), 0) # Check with project param queryset = get_timecardobjects(TimecardList.queryset, params={'project': '1'}) self.assertEqual(len(queryset), 2) queryset = get_timecardobjects(TimecardList.queryset, params={'project': 'Out Of Office'}) self.assertEqual(len(queryset), 2) queryset = get_timecardobjects(TimecardList.queryset, params={'project': '22'}) self.assertEqual(len(queryset), 0) # Check with before param queryset = get_timecardobjects(TimecardList.queryset, params={'before': '2015-06-01'}) self.assertEqual(len(queryset), 1) queryset = get_timecardobjects(TimecardList.queryset, params={'before': '2015-05-31'}) self.assertEqual(len(queryset), 0) # Check with a range using before and after param queryset = get_timecardobjects(TimecardList.queryset, params={ 'after': '2015-06-01', 'before': '2016-05-31' }) self.assertEqual(len(queryset), 1) queryset = get_timecardobjects(TimecardList.queryset, params={ 'after': '2015-06-01', 'before': '2016-06-01' }) self.assertEqual(len(queryset), 2)