def test_get_timecards(self): """ Check that get time cards returns the correct queryset """ # Check with no params queryset = get_timecards(TimecardList.queryset) self.assertEqual(len(queryset), 1) # Check with date param queryset = get_timecards(TimecardList.queryset, params={'date': '2000-01-01'}) self.assertEqual(len(queryset), 0) queryset = get_timecards(TimecardList.queryset, params={'date': '2015-06-08'}) self.assertEqual(len(queryset), 1) # Check with user param queryset = get_timecards(TimecardList.queryset, params={'user': '******'}) self.assertEqual(len(queryset), 1) queryset = get_timecards(TimecardList.queryset, params={'user': '******'}) self.assertEqual(len(queryset), 1) queryset = get_timecards(TimecardList.queryset, params={'user': '******'}) self.assertEqual(len(queryset), 0) # Check with project param queryset = get_timecards(TimecardList.queryset, params={'project': '1'}) self.assertEqual(len(queryset), 1) queryset = get_timecards(TimecardList.queryset, params={'project': 'Out Of Office'}) self.assertEqual(len(queryset), 1) queryset = get_timecards(TimecardList.queryset, params={'project': '22'}) self.assertEqual(len(queryset), 0)
def test_get_unsubmitted_timecards(self): """ Check that get time cards returns the correct queryset """ queryset = get_timecards(TimecardList.queryset, params={'submitted': 'no'}) self.assertEqual(len(queryset), 1) queryset = get_timecards(TimecardList.queryset, params={'submitted': 'yes'}) self.assertEqual(len(queryset), 2) queryset = get_timecards(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_timecards(TimecardList.queryset, request.GET) serializer = AdminBulkTimecardSerializer() return stream_csv(queryset, serializer)
def timeline_view(request, value_fields=(), **field_alias): """ CSV endpoint for the project timeline viz. """ queryset = get_timecards(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 slim_bulk_timecard_list(request): """ Stream a slimmed down version of all the timecards as CSV. """ queryset = get_timecards(TimecardList.queryset, request.GET) serializer = SlimBulkTimecardSerializer() return stream_csv(queryset, serializer)
def bulk_timecard_list(request): """ Stream all the timecards as CSV. """ queryset = get_timecards(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__id__in=NON_BILLABLE_PROJECT_IDS, notes__isnull=False) queryset = get_timecards(objects, request.GET) serializer = GeneralSnippetsTimecardSerializer() 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_timecards(objects, request.GET) serializer = GeneralSnippetsTimecardSerializer() return stream_csv(queryset, serializer)
def test_get_unsubmitted_timecards(self): """ Check that get time cards returns the correct queryset """ queryset = get_timecards( TimecardList.queryset, params={'submitted': 'no'} ) self.assertEqual(len(queryset), 1) queryset = get_timecards( TimecardList.queryset, params={'submitted': 'yes'} ) self.assertEqual(len(queryset), 2) queryset = get_timecards( TimecardList.queryset, params={'submitted': 'foo'} ) self.assertEqual(len(queryset), 2)
def test_get_timecards(self): """ Check that get time cards returns the correct queryset """ # Check with no params queryset = get_timecards(TimecardList.queryset) self.assertEqual(len(queryset), 2) # Check with after param queryset = get_timecards(TimecardList.queryset, params={'after': '2020-12-31'}) self.assertEqual(len(queryset), 0) # Check with date param queryset = get_timecards(TimecardList.queryset, params={'date': '2000-01-01'}) self.assertEqual(len(queryset), 0) queryset = get_timecards(TimecardList.queryset, params={'date': '2015-06-08'}) self.assertEqual(len(queryset), 1) # Check with user param queryset = get_timecards(TimecardList.queryset, params={'user': '******'}) self.assertEqual(len(queryset), 2) queryset = get_timecards(TimecardList.queryset, params={'user': '******'}) self.assertEqual(len(queryset), 2) queryset = get_timecards(TimecardList.queryset, params={'user': '******'}) self.assertEqual(len(queryset), 0) # Check with project param queryset = get_timecards(TimecardList.queryset, params={'project': '1'}) self.assertEqual(len(queryset), 2) queryset = get_timecards(TimecardList.queryset, params={'project': 'Out Of Office'}) self.assertEqual(len(queryset), 2) queryset = get_timecards(TimecardList.queryset, params={'project': '22'}) self.assertEqual(len(queryset), 0) # Check with before param queryset = get_timecards(TimecardList.queryset, params={'before': '2015-06-01'}) self.assertEqual(len(queryset), 1) queryset = get_timecards(TimecardList.queryset, params={'before': '2015-05-31'}) self.assertEqual(len(queryset), 0) # Check with a range using before and after param queryset = get_timecards(TimecardList.queryset, params={ 'after': '2015-06-01', 'before': '2016-05-31' }) self.assertEqual(len(queryset), 1) queryset = get_timecards(TimecardList.queryset, params={ 'after': '2015-06-01', 'before': '2016-06-01' }) self.assertEqual(len(queryset), 2)
def admin_bulk_timecard_list(request): queryset = get_timecards(TimecardList.queryset, request.GET) serializer = AdminBulkTimecardSerializer() return stream_csv(queryset, serializer)