Ejemplo n.º 1
0
 def test_prepare_node_with_valid_datafile(self):
     with mock.patch.object(FileStoreItem,
                            'get_datafile_url',
                            return_value='/media/file_store/test_file.txt'):
         self._assert_node_index_prepared_correctly(
             self._prepare_node_index(self.node),
             expected_download_url=build_absolute_url(
                 self.file_store_item.get_datafile_url()),
             expected_datafile=self.file_store_item.datafile)
Ejemplo n.º 2
0
 def test_prepare_node_with_exposed_output_node_connection_isnt_skipped(
         self):
     with mock.patch.object(FileStoreItem,
                            'get_datafile_url',
                            return_value='/media/file_store/test_file.txt'):
         self._create_analysis_node_connection(OUTPUT_CONNECTION, True)
         self._assert_node_index_prepared_correctly(
             self._prepare_node_index(self.node),
             expected_download_url=build_absolute_url(
                 self.file_store_item.get_datafile_url()),
             expected_datafile=self.file_store_item.datafile)
Ejemplo n.º 3
0
 def test_prepare_node_s3_file_store_item_source_with_datafile(self):
     self.file_store_item.source = 's3://test/test.txt'
     self.file_store_item.save()
     with mock.patch.object(FileStoreItem,
                            'get_datafile_url',
                            return_value='/media/file_store/test.txt'):
         self._assert_node_index_prepared_correctly(
             self._prepare_node_index(self.node),
             expected_download_url=build_absolute_url(
                 self.file_store_item.get_datafile_url()),
             expected_filetype=self.file_store_item.filetype,
             expected_datafile=self.file_store_item.datafile)
Ejemplo n.º 4
0
def _get_download_url_or_import_state(file_store_item):
    """
    Discerns the download url or file import state for a given FileStoreItem
    :param file_store_item: A FileStoreItem instance
    :returns <String>:
        - a valid url pointing to the FileStoreItem's datafile
        - constants.NOT_AVAILABLE
        - celery.states.PENDING
    """
    if file_store_item is None:
        return constants.NOT_AVAILABLE

    download_url = file_store_item.get_datafile_url()
    if download_url:
        try:
            absolute_download_url = build_absolute_url(download_url)
            return absolute_download_url
        except ValueError:
            logger.error('{} is not a valid relative url'.format(
                    str(download_url)
                )
            )
            return None
        except RuntimeError:
            logger.error('Could not fetch full absolute url for {}'.format(
                    str(download_url)
                )
            )
            return None

    # "PENDING" if an import_task_id doesn't exist and
    # there is no valid download_url
    if not file_store_item.import_task_id:
        return celery.states.PENDING

    # "N/A" if the import_state is in a "READY_STATE" or "PENDING" with an
    # import_task_id and without a valid download_url
    import_state = file_store_item.get_import_status()
    if import_state in {celery.states.PENDING} | celery.states.READY_STATES:
        return constants.NOT_AVAILABLE