Exemple #1
0
    def test_it_returns_annotations_for_ids_in_the_same_order(self, db_session, factories):
        ann_1 = factories.Annotation(userid='luke')
        ann_2 = factories.Annotation(userid='luke')

        assert [ann_2, ann_1] == storage.fetch_ordered_annotations(db_session,
                                                                   [ann_2.id, ann_1.id])
        assert [ann_1, ann_2] == storage.fetch_ordered_annotations(db_session,
                                                                   [ann_1.id, ann_2.id])
Exemple #2
0
def fetch_annotations(session, ids):
    def load_documents(query):
        return query.options(subqueryload(Annotation.document))

    annotations = storage.fetch_ordered_annotations(
        session, ids, query_processor=load_documents
    )

    return annotations
Exemple #3
0
    def test_it_allows_to_change_the_query(self, db_session, factories):
        ann_1 = factories.Annotation(userid="luke")
        ann_2 = factories.Annotation(userid="maria")

        def only_maria(query):
            return query.filter(Annotation.userid == "maria")

        assert [ann_2] == storage.fetch_ordered_annotations(
            db_session, [ann_2.id, ann_1.id], query_processor=only_maria
        )
Exemple #4
0
    def test_it_allows_to_change_the_query(self, db_session, factories):
        ann_1 = factories.Annotation(userid='luke')
        ann_2 = factories.Annotation(userid='maria')

        def only_maria(query):
            return query.filter(Annotation.userid == 'maria')

        assert [ann_2] == storage.fetch_ordered_annotations(db_session,
                                                            [ann_2.id, ann_1.id],
                                                            query_processor=only_maria)
Exemple #5
0
def _present_annotations(request, ids):
    """Load annotations by id from the database and present them."""
    def eager_load_documents(query):
        return query.options(
            subqueryload(models.Annotation.document))

    annotations = storage.fetch_ordered_annotations(request.db, ids,
                                                    query_processor=eager_load_documents)
    group_service = request.find_service(IGroupService)
    links_service = request.find_service(name='links')
    return [AnnotationJSONPresenter(
                AnnotationResource(ann, group_service, links_service)).asdict()
            for ann in annotations]
Exemple #6
0
    def present_all(self, annotation_ids):
        def eager_load_documents(query):
            return query.options(
                subqueryload(models.Annotation.document))

        annotations = storage.fetch_ordered_annotations(
            self.session, annotation_ids, query_processor=eager_load_documents)

        # preload formatters, so they can optimize database access
        for formatter in self.formatters:
            formatter.preload(annotation_ids)

        return [self.present(
                    resources.AnnotationContext(ann, self.group_svc, self.links_svc))
                for ann in annotations]
    def present_all(self, annotation_ids):
        def eager_load_documents(query):
            return query.options(
                subqueryload(models.Annotation.document))

        annotations = storage.fetch_ordered_annotations(
            self.session, annotation_ids, query_processor=eager_load_documents)

        # preload formatters, so they can optimize database access
        for formatter in self.formatters:
            formatter.preload(annotation_ids)

        return [self.present(
                    traversal.AnnotationContext(ann, self.group_svc, self.links_svc))
                for ann in annotations]
Exemple #8
0
def _annotations(request):
    """Return the annotations from the search API."""
    s = search.Search(request)
    result = s.run(MultiDict(request.params))
    return fetch_ordered_annotations(request.db, result.annotation_ids)
Exemple #9
0
Fichier : feeds.py Projet : kael/h
def _annotations(request):
    """Return the annotations from the search API."""
    s = search.Search(request, stats=request.stats)
    s.append_modifier(search.UriFilter(request))
    result = s.run(MultiDict(request.params))
    return fetch_ordered_annotations(request.db, result.annotation_ids)
Exemple #10
0
def _annotations(request):
    """Return the annotations from the search API."""
    result = search.Search(request, stats=request.stats).run(request.params)
    return fetch_ordered_annotations(request.db, result.annotation_ids)
Exemple #11
0
    def test_it_handles_empty_ids(self):
        results = storage.fetch_ordered_annotations(sentinel.db_session,
                                                    ids=[])

        assert results == []