Пример #1
0
 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)
Пример #2
0
 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)
Пример #3
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)
Пример #4
0
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)
Пример #5
0
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
Пример #6
0
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)
Пример #7
0
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)
Пример #8
0
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)
Пример #9
0
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)
Пример #10
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)
Пример #11
0
    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)
Пример #12
0
def admin_bulk_timecard_list(request):
    queryset = get_timecards(TimecardList.queryset, request.GET)
    serializer = AdminBulkTimecardSerializer()
    return stream_csv(queryset, serializer)