Loading rpc/methods.py +23 −27 Original line number Diff line number Diff line Loading @@ -17,7 +17,7 @@ from resources.models import ( ) from django.contrib.auth.models import User from django.db.models import QuerySet from typing import List, Dict, Iterator, Union from typing import List, Dict, Iterator, Union, Tuple from rpc import serializers from jama import settings import os Loading @@ -40,6 +40,17 @@ class ServiceException(Exception): pass def _validate_limits(limit_from: int, limit_to: int) -> Tuple[int, int]: try: limit_from = int(limit_from) limit_to = int(limit_to) if limit_to < limit_from: raise ServiceException(WRONG_ARGUMENT) except ValueError: raise ServiceException(WRONG_ARGUMENT) return limit_from, limit_to def _require_superuser(func): """ (Decorator) Loading Loading @@ -305,13 +316,7 @@ def collections( only_published = True if not parent.public_access and parent_id: raise ServiceException(CAN_ONLY_SHOW_PUBLIC_COLLECTIONS_CONTENT) try: limit_from = int(limit_from) limit_to = int(limit_to) if limit_to < limit_from: raise ServiceException(WRONG_ARGUMENT) except ValueError: raise ServiceException(WRONG_ARGUMENT) limit_from, limit_to = _validate_limits(limit_from, limit_to) data = [] if flat_list: query_set: Union[Iterator[Collection], QuerySet] = Collection.objects.filter( Loading Loading @@ -667,6 +672,7 @@ def resources( limit_to: int = 2000, order_by: str = "title", only_deleted_items: bool = False, only_tags: list = None, ) -> List[Dict]: """ Get all resources from a collection. Loading Loading @@ -721,16 +727,18 @@ def resources( except Collection.DoesNotExist: raise ServiceException(NO_SUCH_COLLECTION) data = [] limit_from = int(limit_from) limit_to = int(limit_to) if limit_to < limit_from: return [] limit_from, limit_to = _validate_limits(limit_from, limit_to) query_set: Union[Iterator[Resource], QuerySet] = Resource.objects.filter( collections__id=collection_id, deleted_at__isnull=not only_deleted_items, ptr_project__projectaccess__user=user, ptr_project__projectaccess__role__permissions__label=PERM_RESOURCE_READ, ).order_by(order_by) ) if only_tags: query_set = query_set.filter(tags__uid__in=only_tags) query_set = query_set.order_by(order_by) for item in query_set[limit_from:limit_to]: data.append(serializers.resource(item, include_metas=bool(include_metas))) Loading Loading @@ -894,13 +902,7 @@ def simple_search( } ``` """ try: limit_from = int(limit_from) limit_to = int(limit_to) if limit_to < limit_from: raise ServiceException(WRONG_ARGUMENT) except ValueError: raise ServiceException(WRONG_ARGUMENT) limit_from, limit_to = _validate_limits(limit_from, limit_to) project = Project.objects.filter(pk=project_id).first() _check_project_permission(user, project, PERM_COLLECTION_READ) _check_project_permission(user, project, PERM_RESOURCE_READ) Loading Loading @@ -986,13 +988,7 @@ def advanced_search( } ``` """ try: limit_from = int(limit_from) limit_to = int(limit_to) if limit_to < limit_from: raise ServiceException(WRONG_ARGUMENT) except ValueError: raise ServiceException(WRONG_ARGUMENT) limit_from, limit_to = _validate_limits(limit_from, limit_to) if len(search_terms) > SEARCH_TERMS_LIMIT: raise ServiceException(TOO_MANY_SEARCH_TERMS) project = Project.objects.filter(pk=project_id).first() Loading Loading
rpc/methods.py +23 −27 Original line number Diff line number Diff line Loading @@ -17,7 +17,7 @@ from resources.models import ( ) from django.contrib.auth.models import User from django.db.models import QuerySet from typing import List, Dict, Iterator, Union from typing import List, Dict, Iterator, Union, Tuple from rpc import serializers from jama import settings import os Loading @@ -40,6 +40,17 @@ class ServiceException(Exception): pass def _validate_limits(limit_from: int, limit_to: int) -> Tuple[int, int]: try: limit_from = int(limit_from) limit_to = int(limit_to) if limit_to < limit_from: raise ServiceException(WRONG_ARGUMENT) except ValueError: raise ServiceException(WRONG_ARGUMENT) return limit_from, limit_to def _require_superuser(func): """ (Decorator) Loading Loading @@ -305,13 +316,7 @@ def collections( only_published = True if not parent.public_access and parent_id: raise ServiceException(CAN_ONLY_SHOW_PUBLIC_COLLECTIONS_CONTENT) try: limit_from = int(limit_from) limit_to = int(limit_to) if limit_to < limit_from: raise ServiceException(WRONG_ARGUMENT) except ValueError: raise ServiceException(WRONG_ARGUMENT) limit_from, limit_to = _validate_limits(limit_from, limit_to) data = [] if flat_list: query_set: Union[Iterator[Collection], QuerySet] = Collection.objects.filter( Loading Loading @@ -667,6 +672,7 @@ def resources( limit_to: int = 2000, order_by: str = "title", only_deleted_items: bool = False, only_tags: list = None, ) -> List[Dict]: """ Get all resources from a collection. Loading Loading @@ -721,16 +727,18 @@ def resources( except Collection.DoesNotExist: raise ServiceException(NO_SUCH_COLLECTION) data = [] limit_from = int(limit_from) limit_to = int(limit_to) if limit_to < limit_from: return [] limit_from, limit_to = _validate_limits(limit_from, limit_to) query_set: Union[Iterator[Resource], QuerySet] = Resource.objects.filter( collections__id=collection_id, deleted_at__isnull=not only_deleted_items, ptr_project__projectaccess__user=user, ptr_project__projectaccess__role__permissions__label=PERM_RESOURCE_READ, ).order_by(order_by) ) if only_tags: query_set = query_set.filter(tags__uid__in=only_tags) query_set = query_set.order_by(order_by) for item in query_set[limit_from:limit_to]: data.append(serializers.resource(item, include_metas=bool(include_metas))) Loading Loading @@ -894,13 +902,7 @@ def simple_search( } ``` """ try: limit_from = int(limit_from) limit_to = int(limit_to) if limit_to < limit_from: raise ServiceException(WRONG_ARGUMENT) except ValueError: raise ServiceException(WRONG_ARGUMENT) limit_from, limit_to = _validate_limits(limit_from, limit_to) project = Project.objects.filter(pk=project_id).first() _check_project_permission(user, project, PERM_COLLECTION_READ) _check_project_permission(user, project, PERM_RESOURCE_READ) Loading Loading @@ -986,13 +988,7 @@ def advanced_search( } ``` """ try: limit_from = int(limit_from) limit_to = int(limit_to) if limit_to < limit_from: raise ServiceException(WRONG_ARGUMENT) except ValueError: raise ServiceException(WRONG_ARGUMENT) limit_from, limit_to = _validate_limits(limit_from, limit_to) if len(search_terms) > SEARCH_TERMS_LIMIT: raise ServiceException(TOO_MANY_SEARCH_TERMS) project = Project.objects.filter(pk=project_id).first() Loading