Esempio n. 1
0
    def present(self, annotation: Annotation):
        """
        Get the JSON presentation of an annotation.

        This representation does not contain any user specific information and
        has only the data applicable to all users. This does not blank content
        for moderated annotations.

        :param annotation: Annotation to present
        :return: A dict suitable for JSON serialisation
        """
        model = deepcopy(annotation.extra) or {}

        model.update(
            {
                "id": annotation.id,
                "created": utc_iso8601(annotation.created),
                "updated": utc_iso8601(annotation.updated),
                "user": annotation.userid,
                "uri": annotation.target_uri,
                "text": annotation.text or "",
                "tags": annotation.tags or [],
                "group": annotation.groupid,
                #  Convert our simple internal annotation storage format into the
                #  legacy complex permissions dict format that is still used in
                #  some places.
                "permissions": {
                    "read": [self._get_read_permission(annotation)],
                    "admin": [annotation.userid],
                    "update": [annotation.userid],
                    "delete": [annotation.userid],
                },
                "target": annotation.target,
                "document": DocumentJSONPresenter(annotation.document).asdict(),
                "links": self._links_service.get_all(annotation),
            }
        )

        model.update(user_info(self._user_service.fetch(annotation.userid)))

        if annotation.references:
            model["references"] = annotation.references

        return model
Esempio n. 2
0
 def test_format_returns_empty_dict_when_user_missing(self):
     assert session.user_info(None) == {}
Esempio n. 3
0
    def test_allows_null_display_name(self, factories):
        user = factories.User.build(display_name=None)

        result = session.user_info(user)
        assert result == {'user_info': {'display_name': None}}
Esempio n. 4
0
    def test_returns_user_info_object(self, factories):
        user = factories.User.build(display_name='Jane Doe')

        result = session.user_info(user)
        assert result == {'user_info': {'display_name': 'Jane Doe'}}
 def format(self, annotation_resource):
     user = self.user_svc.fetch(annotation_resource.annotation.userid)
     return user_info(user)
Esempio n. 6
0
    def test_returns_user_info_object(self, factories):
        user = factories.User.build(display_name="Jane Doe")

        result = session.user_info(user)
        assert result == {"user_info": {"display_name": "Jane Doe"}}
Esempio n. 7
0
 def format(self, annotation_resource):
     user = self.user_svc.fetch(annotation_resource.annotation.userid)
     return user_info(user)
Esempio n. 8
0
 def test_format_returns_empty_dict_when_user_missing(self):
     assert session.user_info(None) == {}
Esempio n. 9
0
    def test_allows_null_display_name(self, factories):
        user = factories.User.build(display_name=None)

        result = session.user_info(user)
        assert result == {'user_info': {'display_name': None}}
Esempio n. 10
0
    def test_returns_user_info_object(self, factories):
        user = factories.User.build(display_name='Jane Doe')

        result = session.user_info(user)
        assert result == {'user_info': {'display_name': 'Jane Doe'}}
Esempio n. 11
0
    def test_returns_user_info_object(self, factories):
        user = factories.User.build(display_name="Jane Doe")

        result = session.user_info(user)
        assert result == {"user_info": {"display_name": "Jane Doe"}}