コード例 #1
0
    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)
コード例 #2
0
ファイル: views.py プロジェクト: isabella232/tock
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)
コード例 #3
0
ファイル: views.py プロジェクト: isabella232/tock
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)
コード例 #4
0
ファイル: views.py プロジェクト: isabella232/tock
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)
コード例 #5
0
ファイル: views.py プロジェクト: isabella232/tock
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)
コード例 #6
0
ファイル: views.py プロジェクト: isabella232/tock
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
コード例 #7
0
    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)