MCPcopy Create free account
hub / github.com/StackStorm/st2 / validate_limit_query_param

Function validate_limit_query_param

st2api/st2api/controllers/resource.py:784–824  ·  view source on GitHub ↗

Validate that the provided value for "limit" query parameter is valid. Note: We only perform max_page_size check for non-admin users. Admin users can provide arbitrary limit value.

(limit, requester_user=None)

Source from the content-addressed store, hash-verified

782
783
784def validate_limit_query_param(limit, requester_user=None):
785 """
786 Validate that the provided value for "limit" query parameter is valid.
787
788 Note: We only perform max_page_size check for non-admin users. Admin users
789 can provide arbitrary limit value.
790 """
791 rbac_utils = get_rbac_backend().get_utils_class()
792 user_is_admin = rbac_utils.user_is_admin(user_db=requester_user)
793
794 if limit:
795 # Display all the results
796 if int(limit) == -1:
797 if not user_is_admin:
798 # Only admins can specify limit -1
799 message = (
800 "Administrator access required to be able to specify limit=-1 and "
801 "retrieve all the records"
802 )
803 raise AccessDeniedError(message=message, user_db=requester_user)
804
805 return 0
806 elif int(limit) <= -2:
807 msg = 'Limit, "%s" specified, must be a positive number.' % (limit)
808 raise ValueError(msg)
809 elif int(limit) > cfg.CONF.api.max_page_size and not user_is_admin:
810 msg = 'Limit "%s" specified, maximum value is "%s"' % (
811 limit,
812 cfg.CONF.api.max_page_size,
813 )
814
815 raise AccessDeniedError(message=msg, user_db=requester_user)
816 # Disable n = 0
817 elif limit == 0:
818 msg = (
819 'Limit, "%s" specified, must be a positive number or -1 for full result set.'
820 % (limit)
821 )
822 raise ValueError(msg)
823
824 return limit

Callers 1

_get_allMethod · 0.85

Calls 4

get_rbac_backendFunction · 0.90
AccessDeniedErrorClass · 0.90
get_utils_classMethod · 0.45
user_is_adminMethod · 0.45

Tested by

no test coverage detected