예제 #1
0
파일: serializer.py 프로젝트: atelic/osf.io
    def serialized_node_settings(self):
        result = super(DataverseSerializer, self).serialized_node_settings
        result['hosts'] = DEFAULT_HOSTS

        # Update with Dataverse specific fields
        if self.node_settings.has_auth:
            external_account = self.node_settings.external_account
            dataverse_host = external_account.oauth_key

            connection = client.connect_from_settings(self.node_settings)
            dataverses = client.get_dataverses(connection)
            result.update({
                'dataverseHost': dataverse_host,
                'connected': connection is not None,
                'dataverses': [
                    {'title': dataverse.title, 'alias': dataverse.alias}
                    for dataverse in dataverses
                ],
                'savedDataverse': {
                    'title': self.node_settings.dataverse,
                    'alias': self.node_settings.dataverse_alias,
                },
                'savedDataset': {
                    'title': self.node_settings.dataset,
                    'doi': self.node_settings.dataset_doi,
                }
            })

        return result
예제 #2
0
    def serialized_node_settings(self):
        result = super(DataverseSerializer, self).serialized_node_settings
        result['hosts'] = DEFAULT_HOSTS

        # Update with Dataverse specific fields
        if self.node_settings.has_auth:
            external_account = self.node_settings.external_account
            dataverse_host = external_account.oauth_key

            connection = client.connect_from_settings(self.node_settings)
            dataverses = client.get_dataverses(connection)
            result.update({
                'dataverseHost':
                dataverse_host,
                'connected':
                connection is not None,
                'dataverses': [{
                    'title': dataverse.title,
                    'alias': dataverse.alias
                } for dataverse in dataverses],
                'savedDataverse': {
                    'title': self.node_settings.dataverse,
                    'alias': self.node_settings.dataverse_alias,
                },
                'savedDataset': {
                    'title': self.node_settings.dataset,
                    'doi': self.node_settings.dataset_doi,
                }
            })

        return result
예제 #3
0
파일: config.py 프로젝트: jinluyuan/osf.io
def serialize_settings(node_settings, current_user):
    """View helper that returns a dictionary representation of a
    DataverseNodeSettings record. Provides the return value for the
    dataverse config endpoints.
    """
    user_settings = node_settings.user_settings
    user_is_owner = user_settings is not None and (user_settings.owner._primary_key == current_user._primary_key)
    current_user_settings = current_user.get_addon("dataverse")
    result = {
        "nodeHasAuth": node_settings.has_auth,
        "userIsOwner": user_is_owner,
        "userHasAuth": current_user_settings is not None and current_user_settings.has_auth,
        "urls": serialize_urls(node_settings),
    }

    if node_settings.has_auth:
        # Add owner's profile info
        result["urls"]["owner"] = web_url_for("profile_view_id", uid=user_settings.owner._primary_key)
        result.update({"ownerName": user_settings.owner.fullname, "apiToken": user_settings.api_token})
        # Add owner's dataverse settings
        connection = client.connect_from_settings(user_settings)
        dataverses = client.get_dataverses(connection)
        result.update(
            {
                "connected": connection is not None,
                "dataverses": [{"title": dataverse.title, "alias": dataverse.alias} for dataverse in dataverses],
                "savedDataverse": {"title": node_settings.dataverse, "alias": node_settings.dataverse_alias},
                "savedDataset": {"title": node_settings.dataset, "doi": node_settings.dataset_doi},
            }
        )
    return result
예제 #4
0
    def test_get_dataverses(self):
        published_dv = mock.create_autospec(Dataverse)
        unpublished_dv = mock.create_autospec(Dataverse)
        type(published_dv).is_published = mock.PropertyMock(return_value=True)
        type(unpublished_dv).is_published = mock.PropertyMock(return_value=False)
        self.mock_connection.get_dataverses.return_value = [published_dv, unpublished_dv]

        dvs = get_dataverses(self.mock_connection)
        self.mock_connection.get_dataverses.assert_called_once_with()

        assert_in(published_dv, dvs)
        assert_in(unpublished_dv, dvs)
        assert_equal(len(dvs), 2)
예제 #5
0
    def test_get_dataverses(self):
        released_dv = mock.create_autospec(Dataverse)
        unreleased_dv = mock.create_autospec(Dataverse)
        type(released_dv).is_released = mock.PropertyMock(return_value=True)
        type(unreleased_dv).is_released = mock.PropertyMock(return_value=False)
        self.mock_connection.get_dataverses.return_value = [
            released_dv, unreleased_dv
        ]

        dvs = get_dataverses(self.mock_connection)
        self.mock_connection.get_dataverses.assert_called_once_with()

        assert_in(released_dv, dvs)
        assert_not_in(unreleased_dv, dvs)
예제 #6
0
    def test_get_dataverses(self):
        published_dv = mock.create_autospec(Dataverse)
        unpublished_dv = mock.create_autospec(Dataverse)
        type(published_dv).is_published = mock.PropertyMock(return_value=True)
        type(unpublished_dv).is_published = mock.PropertyMock(return_value=False)
        self.mock_connection.get_dataverses.return_value = [
            published_dv, unpublished_dv
        ]

        dvs = get_dataverses(self.mock_connection)
        self.mock_connection.get_dataverses.assert_called_once_with()

        assert_in(published_dv, dvs)
        assert_in(unpublished_dv, dvs)
        assert_equal(len(dvs), 2)
예제 #7
0
def serialize_settings(node_settings, current_user):
    """View helper that returns a dictionary representation of a
    DataverseNodeSettings record. Provides the return value for the
    dataverse config endpoints.
    """
    user_settings = node_settings.user_settings
    user_is_owner = user_settings is not None and (
        user_settings.owner._primary_key == current_user._primary_key)
    current_user_settings = current_user.get_addon('dataverse')
    result = {
        'nodeHasAuth':
        node_settings.has_auth,
        'userIsOwner':
        user_is_owner,
        'userHasAuth':
        current_user_settings is not None and current_user_settings.has_auth,
        'urls':
        serialize_urls(node_settings),
    }

    if node_settings.has_auth:
        # Add owner's profile info
        result['urls']['owner'] = web_url_for(
            'profile_view_id', uid=user_settings.owner._primary_key)
        result.update({
            'ownerName': user_settings.owner.fullname,
            'dataverseUsername': user_settings.dataverse_username,
        })
        # Add owner's dataverse settings
        connection = client.connect_from_settings(user_settings)
        dataverses = client.get_dataverses(connection)
        result.update({
            'connected':
            connection is not None,
            'dataverses': [{
                'title': dataverse.title,
                'alias': dataverse.alias
            } for dataverse in dataverses],
            'savedDataverse': {
                'title': node_settings.dataverse,
                'alias': node_settings.dataverse_alias
            },
            'savedStudy': {
                'title': node_settings.study,
                'hdl': node_settings.study_hdl
            }
        })
    return result
예제 #8
0
def serialize_settings(node_settings, current_user):
    """View helper that returns a dictionary representation of a
    DataverseNodeSettings record. Provides the return value for the
    dataverse config endpoints.
    """
    user_settings = node_settings.user_settings
    user_is_owner = user_settings is not None and (
        user_settings.owner._primary_key == current_user._primary_key
    )
    current_user_settings = current_user.get_addon('dataverse')
    result = {
        'nodeHasAuth': node_settings.has_auth,
        'userIsOwner': user_is_owner,
        'userHasAuth': current_user_settings is not None and current_user_settings.has_auth,
        'urls': serialize_urls(node_settings),
    }

    if node_settings.has_auth:
        # Add owner's profile info
        result['urls']['owner'] = web_url_for('profile_view_id',
            uid=user_settings.owner._primary_key)
        result.update({
            'ownerName': user_settings.owner.fullname,
            'dataverseUsername': user_settings.dataverse_username,
        })
        # Add owner's dataverse settings
        connection = connect_from_settings(user_settings)
        dataverses = get_dataverses(connection)
        result.update({
            'connected': connection is not None,
            'dataverses': [
                {'title': dataverse.title, 'alias': dataverse.alias}
                for dataverse in dataverses
            ],
            'savedDataverse': {
                'title': node_settings.dataverse,
                'alias': node_settings.dataverse_alias
            },
            'savedStudy': {
                'title': node_settings.study,
                'hdl': node_settings.study_hdl
            }
        })
    return result