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'])
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
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'])
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'])
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)