def test_folder_handler_cdc2_selects_tag(self): load_remote_folders_from_csv() source_dir = os.path.join(settings.BASE_DIR, 'testdata/upload') destination_dir = os.path.join(settings.BASE_DIR, 'testdata/viral_load') archive_dir = os.path.join(settings.BASE_DIR, 'testdata/archive') filename = '12-34-567-89.pdf' self.create_temp_pdf(os.path.join(source_dir, filename), '12-34-567-89') self.assertEqual( magic.from_file(os.path.join(source_dir, filename), mime=True), b'application/pdf') event_handler = GrRemoteFolderEventHandler( file_handler=GrCdc2FileHandler, source_dir=source_dir, destination_dir=destination_dir, archive_dir=archive_dir, file_patterns=['*.pdf'], mime_types=['application/pdf'], mkdir_destination=False) server = Server(event_handler) self.assertEquals( server.event_handler.folder_handler.bhs_folder_tag_func( filename, b'application/pdf'), None) self.assertEquals( server.event_handler.folder_handler.cdc1_folder_tag_func( filename, b'application/pdf'), None) self.assertEquals( server.event_handler.folder_handler.cdc2_folder_tag_func( filename, b'application/pdf'), '34') self.remove_temp_files([os.path.join(source_dir, filename)], server)
def test_upload_form_clean(self): load_remote_folders_from_csv() source_dir = os.path.join(settings.MEDIA_ROOT, settings.GRTX_UPLOAD_FOLDER) destination_dir = os.path.expanduser(settings.GRTX_REMOTE_FOLDER) archive_dir = os.path.join(settings.MEDIA_ROOT, settings.GRTX_ARCHIVE_FOLDER) filename = '066-12000001-3.pdf' self.create_temp_pdf(os.path.join(source_dir, filename), '066-12000001-3') LocalFolderEventHandler.folder_handler = BaseFolderHandler() event_handler = LocalFolderEventHandler( source_dir=source_dir, destination_dir=destination_dir, archive_dir=archive_dir, file_patterns=['*.pdf'], mime_types=['application/pdf'], mkdir_destination=True) server = Server(event_handler) self.upload_file_event(server, filename) self.assertIsInstance(Upload.objects.get(filename=filename), Upload) self.assertIsInstance(History.objects.get(filename=filename), History) self.assertRaises(ValidationError, UploadForm().raise_if_upload, filename) self.assertRaises(ValidationError, UploadForm().raise_if_history, filename) upload = Upload.objects.get(filename=filename) upload.save() self.assertEquals(upload.filename, filename) self.remove_temp_files([filename], server)
def test_folder_handler_no_mkdir(self): load_remote_folders_from_csv() source_dir = os.path.join(settings.BASE_DIR, 'testdata/upload') destination_dir = os.path.join(settings.BASE_DIR, 'testdata/viral_load') archive_dir = os.path.join(settings.BASE_DIR, 'testdata/archive') filename = '066-12000001-3.pdf' self.create_temp_pdf(os.path.join(source_dir, filename)) self.assertEqual( magic.from_file(os.path.join(source_dir, filename), mime=True), b'application/pdf') event_handler = RemoteFolderEventHandler( source_dir=source_dir, destination_dir=destination_dir, archive_dir=archive_dir, file_patterns=['*.pdf'], mime_types=['application/pdf'], mkdir_destination=False) server = Server(event_handler) folder_selection = BaseLookupFolderHandler().select( server, filename, b'application/pdf', server.event_handler.destination_dir) self.assertEquals(folder_selection.name, None) self.assertEquals(folder_selection.path, None) self.assertEquals(folder_selection.tag, None) try: os.remove(os.path.join(server.event_handler.source_dir, filename)) except IOError: pass
def handle(self, *args, **options): try: recs, added, updated = load_remote_folders_from_csv( options['csv_filename'][0]) print('{} records (added {}, updated {}).'.format( recs, added, updated)) except (FileNotFoundError, ) as e: sys.stdout.write('\n') raise CommandError(e)
def test_folder_handler_load_remotes_exists(self): load_remote_folders_from_csv() source_dir = os.path.join(settings.BASE_DIR, 'testdata/upload') destination_dir = os.path.join(settings.BASE_DIR, 'testdata/viral_load') archive_dir = os.path.join(settings.BASE_DIR, 'testdata/archive') remote_folder = os.path.join(destination_dir, 'digawana') try: os.makedirs(remote_folder) except FileExistsError: pass filename = '066-12000001-3.pdf' self.create_temp_pdf(os.path.join(source_dir, filename)) self.assertEqual( magic.from_file(os.path.join(source_dir, filename), mime=True), b'application/pdf') event_handler = GrRemoteFolderEventHandler( file_handler=BaseFileHandler, source_dir=source_dir, destination_dir=destination_dir, archive_dir=archive_dir, file_patterns=['*.pdf'], mime_types=['application/pdf'], mkdir_destination=False) server = Server(event_handler) with SSHClient() as event_handler.ssh: event_handler.connect() folder_selection = server.event_handler.folder_handler.select( server.event_handler, filename, b'application/pdf', server.event_handler.destination_dir) self.assertEquals(folder_selection.name, 'digawana') self.assertEquals( folder_selection.path, os.path.join(server.event_handler.destination_dir, 'digawana')) self.assertEquals(folder_selection.tag, '12') try: os.remove(os.path.join(server.event_handler.source_dir, filename)) except IOError: pass try: os.rmdir(remote_folder) except IOError: pass
def test_knows_folder_using_cdc2_file_handler(self): load_remote_folders_from_csv() source_dir = os.path.join(settings.BASE_DIR, 'testdata/upload') destination_dir = os.path.join(settings.BASE_DIR, 'testdata/viral_load') archive_dir = os.path.join(settings.BASE_DIR, 'testdata/archive') filename = '12-34-567-89.pdf' self.create_temp_pdf(os.path.join(source_dir, filename)) self.assertEqual( magic.from_file(os.path.join(source_dir, filename), mime=True), b'application/pdf') event_handler = GrRemoteFolderEventHandler( file_handler=GrCdc2FileHandler, source_dir=source_dir, destination_dir=destination_dir, archive_dir=archive_dir, file_patterns=['*.pdf'], mime_types=['application/pdf'], mkdir_destination=True) server = Server(event_handler) with SSHClient() as event_handler.ssh: event_handler.connect() folder_selection = server.event_handler.folder_handler.select( server.event_handler, filename, b'application/pdf', server.event_handler.destination_dir) self.assertEquals(folder_selection.name, 'gweta') self.assertEquals( folder_selection.path, os.path.join(server.event_handler.destination_dir, 'gweta')) self.assertEquals(folder_selection.tag, '34') try: os.remove(os.path.join(server.event_handler.source_dir, filename)) except IOError: pass try: os.rmdir(folder_selection.path) except IOError: pass
def test_check_sent_action(self): load_remote_folders_from_csv() source_dir = os.path.join(settings.MEDIA_ROOT, settings.GRTX_UPLOAD_FOLDER) destination_dir = settings.GRTX_REMOTE_FOLDER archive_dir = os.path.join(settings.MEDIA_ROOT, settings.GRTX_ARCHIVE_FOLDER) filename = '066-12000001-3.pdf' self.create_temp_pdf(os.path.join(source_dir, filename), '066-12000001-3') event_handler = GrRemoteFolderEventHandler( file_handler=GrFileHandler, source_dir=source_dir, destination_dir=destination_dir, archive_dir=archive_dir, file_patterns=['*.pdf'], mime_types=['application/pdf'], mkdir_destination=True) server = Server(event_handler) self.upload_remote_file_event(server, filename) self.assertIsInstance(History.objects.get(filename=filename), History) self.assertIsInstance(Upload.objects.get(filename=filename), Upload) update_on_sent_action(None, None, Upload.objects.filter(filename=filename)) self.assertIsInstance(Upload.objects.get(filename=filename, sent=True), Upload) self.remove_temp_files([filename, 'digawana/' + filename], server) self.create_temp_pdf(os.path.join(source_dir, filename), '066-12000001-3') self.upload_remote_file_event(server, filename) self.assertIsInstance( History.objects.filter( filename=filename).order_by('sent_datetime')[1], History) self.assertIsInstance( Upload.objects.get(filename=filename, sent=False), Upload) update_on_sent_action( None, None, Upload.objects.filter(filename=filename, sent=False)) self.assertEquals( Upload.objects.filter(filename=filename, sent=True).count(), 2) self.remove_temp_files([filename, 'digawana/' + filename], server) self.create_temp_pdf(os.path.join(source_dir, filename), '066-12000001-3') self.upload_remote_file_event(server, filename) self.assertIsInstance( History.objects.filter( filename=filename).order_by('sent_datetime')[1], History) self.assertIsInstance( Upload.objects.get(filename=filename, sent=False), Upload) update_on_sent_action( None, None, Upload.objects.filter(filename=filename, sent=False)) self.assertEquals( Upload.objects.filter(filename=filename, sent=True).count(), 3) self.remove_temp_files([filename, 'digawana/' + filename], server) try: os.rmdir( os.path.join(server.event_handler.destination_dir, 'digawana/')) except IOError: pass