예제 #1
0
    def test_non_staff_sees_all_current_data(self):
        provider = ProviderFactory()
        service1 = ServiceFactory(provider=provider, status=Service.STATUS_CURRENT)
        service2 = ServiceFactory(provider=provider, status=Service.STATUS_CURRENT)
        ServiceFactory(status=Service.STATUS_CURRENT)
        ServiceFactory(provider=provider, status=Service.STATUS_DRAFT)  # Draft - not included
        book = get_export_workbook_for_user(provider.user)
        xlrd_book = save_and_read_book(book)

        # First sheet - providers
        sheet = xlrd_book.get_sheet(0)
        self.assertEqual(2, sheet.nrows - 1)
        # first provider
        values = sheet.row_values(1)
        data = dict(zip(PROVIDER_HEADINGS, values))
        self.assertEqual(provider.id, data['id'])

        # Second sheet - services
        sheet = xlrd_book.get_sheet(1)
        self.assertEqual(3, sheet.nrows - 1)
        values = sheet.row_values(1)
        data = dict(zip(SERVICE_HEADINGS, values))
        self.assertEqual(service1.id, data['id'])
        values = sheet.row_values(2)
        data = dict(zip(SERVICE_HEADINGS, values))
        self.assertEqual(service2.id, data['id'])
예제 #2
0
def export_view(request, signature):
    # Must have a valid signature that hasn't expired
    try:
        signed_value = signing.loads(signature,
                                     max_age=settings.SIGNED_URL_LIFETIME)
    except BadSignature:
        logger.exception("export signature validation failure")
        return HttpResponseForbidden('this signature is not valid')

    # what does this signature allow them to do?
    if signed_value.get('what', None) != 'export':
        return HttpResponseForbidden('this signature does not allow exports')

    # The signature's data contains the userid of the authenticated user
    # that the signature was given to
    user_id = signed_value.get('u', -1)
    User = get_user_model()
    try:
        user = User.objects.get(id=user_id)
    except User.DoesNotExist:
        logger.error("User in export URL does not exist")
        return HttpResponseForbidden('this signature is not valid')

    response = HttpResponse(status=OK, content_type='application/vnd.ms-excel')
    response['Content-Disposition'] = 'attachment; filename="service_info.xls"'

    book = get_export_workbook_for_user(user)
    book.save(response)

    return response
예제 #3
0
def export_view(request, signature):
    # Must have a valid signature that hasn't expired
    try:
        signed_value = signing.loads(signature, max_age=settings.SIGNED_URL_LIFETIME)
    except BadSignature:
        logger.exception("export signature validation failure")
        return HttpResponseForbidden('this signature is not valid')

    # what does this signature allow them to do?
    if signed_value.get('what', None) != 'export':
        return HttpResponseForbidden('this signature does not allow exports')

    # The signature's data contains the userid of the authenticated user
    # that the signature was given to
    user_id = signed_value.get('u', -1)
    User = get_user_model()
    try:
        user = User.objects.get(id=user_id)
    except User.DoesNotExist:
        logger.error("User in export URL does not exist")
        return HttpResponseForbidden('this signature is not valid')

    response = HttpResponse(status=OK, content_type='application/vnd.ms-excel')
    response['Content-Disposition'] = 'attachment; filename="service_info.xls"'

    book = get_export_workbook_for_user(user)
    book.save(response)

    return response
예제 #4
0
 def test_location_exported_as_lat_long(self):
     provider = ProviderFactory()
     service1 = ServiceFactory(provider=provider, status=Service.STATUS_CURRENT)
     book = get_export_workbook_for_user(provider.user)
     xlrd_book = save_and_read_book(book)
     sheet = xlrd_book.get_sheet(1)
     values = sheet.row_values(1)
     data = dict(zip(SERVICE_HEADINGS, values))
     self.assertEqual(service1.longitude, data['longitude'])
     self.assertEqual(service1.latitude, data['latitude'])
예제 #5
0
 def test_open_close_as_hh_mm(self):
     provider = ProviderFactory()
     ServiceFactory(provider=provider, status=Service.STATUS_CURRENT,
                    wednesday_close=time(18, 23)
                    )
     book = get_export_workbook_for_user(provider.user)
     xlrd_book = save_and_read_book(book)
     sheet = xlrd_book.get_sheet(1)
     values = sheet.row_values(1)
     data = dict(zip(SERVICE_HEADINGS, values))
     self.assertEqual('', data['sunday_open'])
     self.assertEqual('18:23', data['wednesday_close'])
예제 #6
0
    def test_staff_see_all_current_data(self):
        user = EmailUserFactory(is_staff=True)
        provider = ProviderFactory()
        ProviderFactory()
        ServiceFactory(provider=provider, status=Service.STATUS_CURRENT)
        ServiceFactory(provider=provider, status=Service.STATUS_CURRENT)
        ServiceFactory(status=Service.STATUS_CURRENT)
        ServiceFactory(provider=provider, status=Service.STATUS_DRAFT)
        book = get_export_workbook_for_user(user)
        xlrd_book = save_and_read_book(book)

        # First sheet - providers
        sheet = xlrd_book.get_sheet(0)
        self.assertEqual(3, sheet.nrows - 1)

        # Second sheet - services
        sheet = xlrd_book.get_sheet(1)
        self.assertEqual(3, sheet.nrows - 1)