def post(self, request): replace = 'replace' in request.POST file_ref = expose_cached_download( request.file.read(), file_extension=file_extention_from_filename(request.file.name), expiry=1*60*60, ) # catch basic validation in the synchronous UI try: validate_fixture_file_format(file_ref.get_filename()) except FixtureUploadError as e: messages.error( request, _(u'Please fix the following formatting issues in your excel file: %s') % '<ul><li>{}</li></ul>'.format('</li><li>'.join(e.errors)), extra_tags='html' ) return HttpResponseRedirect(fixtures_home(self.domain)) # hand off to async task = fixture_upload_async.delay( self.domain, file_ref.download_id, replace, ) file_ref.set_task(task) return HttpResponseRedirect( reverse( FixtureUploadStatusView.urlname, args=[self.domain, file_ref.download_id] ) )
def post(self, request): replace = 'replace' in request.POST file_ref = expose_cached_download( request.file.read(), file_extension=file_extention_from_filename(request.file.name), expiry=1*60*60, ) # catch basic validation in the synchronous UI try: validate_fixture_file_format(file_ref.get_filename()) except FixtureUploadError as e: messages.error( request, _('Please fix the following formatting issues in your Excel file: %s') % '<ul><li>{}</li></ul>'.format('</li><li>'.join(e.errors)), extra_tags='html' ) return HttpResponseRedirect(fixtures_home(self.domain)) # hand off to async task = fixture_upload_async.delay( self.domain, file_ref.download_id, replace, ) file_ref.set_task(task) return HttpResponseRedirect( reverse( FixtureUploadStatusView.urlname, args=[self.domain, file_ref.download_id] ) )
def _test(self, config): if config.error_messages: with self.assertRaises(FixtureUploadError) as context: validate_fixture_file_format(config.upload_file) self.assertEqual(context.exception.errors, config.error_messages) else: # assert doesn't raise anything validate_fixture_file_format(config.upload_file)
def test_validation(self, filename, error_messages): upload_file = _make_path('test_upload', '{}.xlsx'.format(filename)) if error_messages: with self.assertRaises(FixtureUploadError) as context: validate_fixture_file_format(upload_file) self.assertEqual(context.exception.errors, error_messages) else: # assert doesn't raise anything validate_fixture_file_format(upload_file)
def _upload_fixture_api(request, domain): try: excel_file, replace, is_async = _get_fixture_upload_args_from_request(request, domain) except FixtureAPIRequestError as e: return UploadFixtureAPIResponse('fail', six.text_type(e)) with excel_file as filename: if is_async: with open(filename, 'r') as f: file_ref = expose_cached_download( f.read(), file_extension=file_extention_from_filename(filename), expiry=1 * 60 * 60, ) download_id = file_ref.download_id task = fixture_upload_async.delay( domain, download_id, replace, ) file_ref.set_task(task) status_url = "{}{}".format( get_url_base(), reverse('fixture_api_status', args=(domain, download_id)) ) curl_command = "curl -v --digest {} -u {}".format( status_url, request.user.username ) return UploadFixtureAPIResponse('success', { "download_id": download_id, "status_url": status_url, "curl_command": curl_command, "message": _("File uploaded successfully.") }) try: validate_fixture_file_format(filename) except FixtureUploadError as e: return UploadFixtureAPIResponse( 'fail', _('Please fix the following formatting issues in your Excel file: %s') % '\n'.join(e.errors)) result = upload_fixture_file(domain, filename, replace=replace) status = 'warning' if result.errors else 'success' return UploadFixtureAPIResponse(status, result.get_display_message())
def _upload_fixture_api(request, domain): try: excel_file, replace = _get_fixture_upload_args_from_request(request, domain) except FixtureAPIRequestError as e: return UploadFixtureAPIResponse('fail', e.message) with excel_file as filename: try: validate_fixture_file_format(filename) except FixtureUploadError as e: return UploadFixtureAPIResponse( 'fail', _('Please fix the following formatting issues in your Excel file: %s') % '\n'.join(e.errors)) result = upload_fixture_file(domain, filename, replace=replace) status = 'warning' if result.errors else 'success' return UploadFixtureAPIResponse(status, result.get_display_message())
def _upload_fixture_api(request, domain): try: excel_file, replace = _get_fixture_upload_args_from_request(request, domain) except FixtureAPIRequestError as e: return UploadFixtureAPIResponse('fail', e.message) with excel_file as filename: try: validate_fixture_file_format(filename) except FixtureUploadError as e: return UploadFixtureAPIResponse( 'fail', _(u'Please fix the following formatting issues in your excel file: %s') % '\n'.join(e.errors)) result = upload_fixture_file(domain, filename, replace=replace) status = 'warning' if result.errors else 'success' return UploadFixtureAPIResponse(status, result.get_display_message())
def _upload_fixture_api(request, domain): try: excel_file, replace, is_async, skip_orm, email = _get_fixture_upload_args_from_request( request, domain) except FixtureAPIRequestError as e: return UploadFixtureAPIResponse('fail', str(e)) with excel_file as filename: if is_async: with open(filename, 'rb') as f: file_ref = expose_cached_download( f.read(), file_extension=file_extention_from_filename(filename), expiry=1 * 60 * 60, ) download_id = file_ref.download_id task = fixture_upload_async.delay(domain, download_id, replace, skip_orm, user_email=email) file_ref.set_task(task) status_url = "{}{}".format( get_url_base(), reverse('fixture_api_status', args=(domain, download_id))) return AsyncUploadFixtureAPIResponse( 'success', _("File has been uploaded successfully and is queued for processing." ), download_id, status_url) try: validate_fixture_file_format(filename) except FixtureUploadError as e: return UploadFixtureAPIResponse( 'fail', _('Please fix the following formatting issues in your Excel file: %s' ) % '\n'.join(e.errors)) result = upload_fixture_file(domain, filename, replace=replace) status = 'warning' if result.errors else 'success' return UploadFixtureAPIResponse(status, result.get_display_message())
def test_validation(self, filename, error_messages, file_contents): if file_contents: workbook = openpyxl.Workbook() for title, rows in file_contents.items(): if title == 'types': sheet = workbook.create_sheet(title, 0) else: sheet = workbook.create_sheet(title) for row in rows: sheet.append(row) upload_file = tempfile.TemporaryFile() workbook.save(upload_file) upload_file.seek(0) else: upload_file = _make_path('test_upload', '{}.xlsx'.format(filename)) if error_messages: with self.assertRaises(FixtureUploadError) as context: validate_fixture_file_format(upload_file) self.assertEqual(context.exception.errors, error_messages) else: # assert doesn't raise anything validate_fixture_file_format(upload_file)