def get(self, first_snapshot, second_snapshot, pagination_parameters: PaginationParameters): """Compare NER between two snapshots""" first_snapshot = Snapshot.from_string(first_snapshot) second_snapshot = Snapshot.from_string(second_snapshot) first_snapshot_id = first_snapshot.id second_snapshot_id = second_snapshot.id def map_text(text): raw_text = text['value'] _, first = parse_text(first_snapshot_id, raw_text) _, second = parse_text(second_snapshot_id, raw_text) return { 'text_id': text.id, 'first': first, 'second': second } results = Text.objects pagination_parameters.item_count = results.count() skip_elements = (pagination_parameters.page - 1) * pagination_parameters.page_size texts = results.skip(skip_elements).limit(pagination_parameters.page_size) return { 'first_snapshot': first_snapshot, 'second_snapshot': second_snapshot, 'results': map(map_text, texts) }
def get(self, query_filter: FilterUsersSchema, pagination_parameters: PaginationParameters): """Returns a list of existing users""" results = User.objects if 'query' not in query_filter else User.objects( Q(email__icontains=query_filter['query']) | Q(name__icontains=query_filter['query'])) pagination_parameters.item_count = results.count() skip_elements = (pagination_parameters.page - 1) * \ pagination_parameters.page_size return results.aggregate(*[{ '$skip': skip_elements }, { '$limit': pagination_parameters.page_size }, { '$project': { 'id': '$_id', 'email': 1, 'name': 1, 'roles': 1, 'total_trainings': { '$cond': { 'if': { '$isArray': "$trainings" }, 'then': { '$size': "$trainings" }, 'else': 0 } } } }])
def get(self, text_id, pagination_parameters: PaginationParameters): """Trainings for a given text""" trainings = Training.objects.filter(text_id=text_id) pagination_parameters.item_count = trainings.count() skip_elements = (pagination_parameters.page - 1) * \ pagination_parameters.page_size return trainings.skip(skip_elements).limit( pagination_parameters.page_size)
def get(self, pagination_parameters: PaginationParameters): """List of texts part of the training corpus""" results = Text.objects pagination_parameters.item_count = results.count() skip_elements = (pagination_parameters.page - 1) * \ pagination_parameters.page_size return results.skip(skip_elements).limit( pagination_parameters.page_size)
def get(self, pagination_parameters: PaginationParameters): """List available snapshots""" snapshots = Snapshot.objects pagination_parameters.item_count = snapshots.count() skip_elements = (pagination_parameters.page - 1) * \ pagination_parameters.page_size return snapshots.skip(skip_elements).limit( pagination_parameters.page_size)
def test_page_repr(self): page_params = PaginationParameters(1, 2) assert (repr(Page([1, 2, 3, 4, 5], page_params)) == "Page(collection=[1, 2, 3, 4, 5],page_params={})".format( repr(page_params)))
def test_pagination_parameters_repr(self): assert (repr(PaginationParameters( 1, 10)) == "PaginationParameters(page=1,page_size=10)")
def _get_user_trainings(user: User, pagination_params: PaginationParameters): texts = Training.objects.filter(user_id=user.pk) pagination_params.item_count = texts.count() skip_elements = (pagination_params.page - 1) * pagination_params.page_size return texts.skip(skip_elements).limit(pagination_params.page_size)