def test_connect_from_settings_or_401_forbidden(self, mock_connection): mock_connection.side_effect = UnauthorizedError() user_settings = AddonDataverseUserSettings() user_settings.api_token = "Something ridiculous" with assert_raises(HTTPError) as e: connect_from_settings_or_401(user_settings) mock_connection.assert_called_once_with(settings.HOST, user_settings.api_token) assert_equal(e.exception.code, 401)
def test_connect_from_settings_or_401_forbidden(self, mock_connection): mock_connection.side_effect = UnauthorizedError() node_settings = AddonDataverseNodeSettings() node_settings.external_account = create_external_account( self.host, self.token, ) with assert_raises(HTTPError) as e: connect_from_settings_or_401(node_settings) mock_connection.assert_called_once_with(self.host, self.token) assert_equal(e.exception.code, 401)
def test_connect_from_settings_or_401_forbidden(self, mock_connection): mock_connection.side_effect = UnauthorizedError() node_settings = AddonDataverseNodeSettings() node_settings.external_account = create_external_account( self.host, self.token, ) with assert_raises(HTTPError) as e: connect_from_settings_or_401(node_settings) mock_connection.assert_called_once_with(self.host, self.token) assert_equal(e.exception.code, 401)
def test_connect_from_settings_or_401_forbidden(self, mock_connection): mock_connection.side_effect = UnauthorizedError() user_settings = AddonDataverseUserSettings() user_settings.api_token = 'Something ridiculous' with assert_raises(HTTPError) as e: connect_from_settings_or_401(user_settings) mock_connection.assert_called_once_with( settings.HOST, user_settings.api_token, ) assert_equal(e.exception.code, 401)
def dataverse_publish(node_addon, auth, publish_both=False): node = node_addon.owner user_settings = node_addon.user_settings now = datetime.datetime.utcnow() try: connection = connect_from_settings_or_401(user_settings) except HTTPError as error: if error.code == httplib.UNAUTHORIZED: connection = None else: raise dataverse = get_dataverse(connection, node_addon.dataverse_alias) dataset = get_dataset(dataverse, node_addon.dataset_doi) if publish_both: publish_dataverse(dataverse) publish_dataset(dataset) # Add a log node.add_log( action="dataverse_dataset_published", params={"project": node.parent_id, "node": node._primary_key, "dataset": dataset.title}, auth=auth, log_date=now, ) return {"dataset": dataset.title}, httplib.OK
def test_connect_from_settings_or_401(self, mock_connect): user_settings = AddonDataverseUserSettings() user_settings.api_token = 'Something ridiculous' connection = connect_from_settings_or_401(user_settings) assert_true(connection) mock_connect.assert_called_once_with(user_settings.api_token)
def dataverse_publish_dataset(node_addon, auth, **kwargs): node = node_addon.owner publish_both = request.json.get('publish_both', False) now = datetime.datetime.utcnow() try: connection = connect_from_settings_or_401(node_addon) except HTTPError as error: if error.code == httplib.UNAUTHORIZED: connection = None else: raise dataverse = get_dataverse(connection, node_addon.dataverse_alias) dataset = get_dataset(dataverse, node_addon.dataset_doi) if publish_both: publish_dataverse(dataverse) publish_dataset(dataset) # Add a log node.add_log( action='dataverse_dataset_published', params={ 'project': node.parent_id, 'node': node._primary_key, 'dataset': dataset.title, }, auth=auth, log_date=now, ) return {'dataset': dataset.title}, httplib.OK
def dataverse_get_widget_contents(node_addon, **kwargs): data = { 'connected': False, } if not node_addon.complete: return {'data': data}, http.OK doi = node_addon.dataset_doi alias = node_addon.dataverse_alias connection = connect_from_settings_or_401(node_addon.user_settings) dataverse = get_dataverse(connection, alias) dataset = get_dataset(dataverse, doi) if dataset is None: return {'data': data}, http.BAD_REQUEST dataverse_url = 'http://{0}/dataverse/'.format(HOST) + alias dataset_url = 'http://dx.doi.org/' + doi data.update({ 'connected': True, 'dataverse': node_addon.dataverse, 'dataverseUrl': dataverse_url, 'dataset': node_addon.dataset, 'doi': doi, 'datasetUrl': dataset_url, 'citation': dataset.citation, }) return {'data': data}, http.OK
def test_connect_from_settings_or_401(self, mock_connect): user_settings = AddonDataverseUserSettings() user_settings.api_token = "Something ridiculous" connection = connect_from_settings_or_401(user_settings) assert_true(connection) mock_connect.assert_called_once_with(user_settings.api_token)
def dataverse_publish(node_addon, auth, publish_both=False): node = node_addon.owner user_settings = node_addon.user_settings now = datetime.datetime.utcnow() try: connection = connect_from_settings_or_401(user_settings) except HTTPError as error: if error.code == httplib.UNAUTHORIZED: connection = None else: raise dataverse = get_dataverse(connection, node_addon.dataverse_alias) dataset = get_dataset(dataverse, node_addon.dataset_doi) if publish_both: publish_dataverse(dataverse) publish_dataset(dataset) # Add a log node.add_log( action='dataverse_dataset_published', params={ 'project': node.parent_id, 'node': node._primary_key, 'dataset': dataset.title, }, auth=auth, log_date=now, ) return {'dataset': dataset.title}, httplib.OK
def dataverse_publish_dataset(node_addon, auth, **kwargs): node = node_addon.owner publish_both = request.json.get('publish_both', False) now = timezone.now() connection = client.connect_from_settings_or_401(node_addon) dataverse = client.get_dataverse(connection, node_addon.dataverse_alias) dataset = client.get_dataset(dataverse, node_addon.dataset_doi) if publish_both: client.publish_dataverse(dataverse) client.publish_dataset(dataset) # Add a log node.add_log( action='dataverse_dataset_published', params={ 'project': node.parent_id, 'node': node._id, 'dataset': dataset.title, }, auth=auth, log_date=now, ) return {'dataset': dataset.title}, http.OK
def dataverse_get_widget_contents(node_addon, **kwargs): data = { 'connected': False, } if not node_addon.complete: return {'data': data}, http.OK doi = node_addon.dataset_doi alias = node_addon.dataverse_alias connection = client.connect_from_settings_or_401(node_addon) dataverse = client.get_dataverse(connection, alias) dataset = client.get_dataset(dataverse, doi) if dataset is None: return {'data': data}, http.BAD_REQUEST dataverse_host = node_addon.external_account.oauth_key dataverse_url = 'http://{0}/dataverse/{1}'.format(dataverse_host, alias) dataset_url = 'https://doi.org/' + doi data.update({ 'connected': True, 'dataverse': node_addon.dataverse, 'dataverseUrl': dataverse_url, 'dataset': node_addon.dataset, 'doi': doi, 'datasetUrl': dataset_url, 'citation': dataset.citation, }) return {'data': data}, http.OK
def dataverse_get_widget_contents(node_addon, **kwargs): data = { 'connected': False, } if not node_addon.complete: return {'data': data}, http.OK doi = node_addon.dataset_doi alias = node_addon.dataverse_alias connection = client.connect_from_settings_or_401(node_addon) dataverse = client.get_dataverse(connection, alias) dataset = client.get_dataset(dataverse, doi) if dataset is None: return {'data': data}, http.BAD_REQUEST dataverse_host = node_addon.external_account.oauth_key dataverse_url = 'http://{0}/dataverse/{1}'.format(dataverse_host, alias) dataset_url = 'http://dx.doi.org/' + doi data.update({ 'connected': True, 'dataverse': node_addon.dataverse, 'dataverseUrl': dataverse_url, 'dataset': node_addon.dataset, 'doi': doi, 'datasetUrl': dataset_url, 'citation': dataset.citation, }) return {'data': data}, http.OK
def dataverse_publish_dataset(node_addon, auth, **kwargs): node = node_addon.owner publish_both = request.json.get('publish_both', False) now = datetime.datetime.utcnow() connection = client.connect_from_settings_or_401(node_addon) dataverse = client.get_dataverse(connection, node_addon.dataverse_alias) dataset = client.get_dataset(dataverse, node_addon.dataset_doi) if publish_both: client.publish_dataverse(dataverse) client.publish_dataset(dataset) # Add a log node.add_log( action='dataverse_dataset_published', params={ 'project': node.parent_id, 'node': node._id, 'dataset': dataset.title, }, auth=auth, log_date=now, ) return {'dataset': dataset.title}, http.OK
def dataverse_user_config_get(user_addon, auth, **kwargs): """View for getting a JSON representation of the logged-in user's Dataverse user settings. """ try: connection = connect_from_settings_or_401(user_addon) except HTTPError as error: if error.code == 401: connection = None else: raise urls = { 'create': api_url_for('dataverse_set_user_config'), 'delete': api_url_for('dataverse_delete_user'), 'apiToken': 'https://{0}/account/apitoken'.format(HOST), } return { 'result': { 'connected': connection is not None, 'userHasAuth': user_addon.has_auth, 'apiToken': user_addon.api_token, 'urls': urls }, }, http.OK
def dataset_id(self): if self._dataset_id is None: connection = connect_from_settings_or_401(self.user_settings) dataverse = connection.get_dataverse(self.dataverse_alias) dataset = dataverse.get_dataset_by_doi(self.dataset_doi) self._dataset_id = dataset.id self.save() return self._dataset_id
def dataset_id(self): if self._dataset_id is None: connection = connect_from_settings_or_401(self.user_settings) dataverse = connection.get_dataverse(self.dataverse_alias) dataset = dataverse.get_dataset_by_doi(self.dataset_doi) self._dataset_id = dataset.id self.save() return self._dataset_id
def test_connect_from_settings_or_401(self, mock_connect): node_settings = AddonDataverseNodeSettings() node_settings.external_account = create_external_account( self.host, self.token, ) connection = connect_from_settings_or_401(node_settings) assert_true(connection) mock_connect.assert_called_once_with(self.host, self.token)
def test_connect_from_settings_or_401(self, mock_connect): node_settings = AddonDataverseNodeSettings() node_settings.external_account = create_external_account( self.host, self.token, ) connection = connect_from_settings_or_401(node_settings) assert_true(connection) mock_connect.assert_called_once_with(self.host, self.token)
def test_connect_from_settings_or_401_none(self): connection = connect_from_settings_or_401(None) assert_is_none(connection)
def test_connect_from_settings_or_401_none(self): connection = connect_from_settings_or_401(None) assert_is_none(connection)