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)
Exemplo n.º 2
0
    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)
Exemplo n.º 3
0
 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