def _extract_pagination_rules_from_token(self, limit, sorting): """Get pagination params.""" token = self.request.validated['querystring'].get('_token', None) filters = [] offset = 0 if token: error_msg = None try: tokeninfo = json.loads(decode64(token)) if not isinstance(tokeninfo, dict): raise ValueError() last_record = tokeninfo['last_record'] offset = tokeninfo['offset'] nonce = tokeninfo['nonce'] except (ValueError, KeyError, TypeError): error_msg = '_token has invalid content' # We don't want pagination tokens to be reused several times (#1171). # The cache backend is used to keep track of "nonces". if self.request.method.lower() == "delete" and error_msg is None: registry = self.request.registry deleted = registry.cache.delete(nonce) if deleted is None: error_msg = '_token was already used or has expired.' if error_msg: error_details = { 'location': 'querystring', 'description': error_msg } raise_invalid(self.request, **error_details) filters = self._build_pagination_rules(sorting, last_record) return filters, offset
def _extract_pagination_rules_from_token(self, limit, sorting): """Get pagination params.""" token = self.request.validated['querystring'].get('_token', None) filters = [] offset = 0 if token: error_msg = None try: tokeninfo = json.loads(decode64(token)) if not isinstance(tokeninfo, dict): raise ValueError() last_record = tokeninfo['last_record'] offset = tokeninfo['offset'] nonce = tokeninfo['nonce'] except (ValueError, KeyError, TypeError): error_msg = '_token has invalid content' # We don't want pagination tokens to be reused several times (#1171). # The cache backend is used to keep track of "nonces". if self.request.method.lower() == 'delete' and error_msg is None: registry = self.request.registry deleted = registry.cache.delete(nonce) if deleted is None: error_msg = '_token was already used or has expired.' if error_msg: error_details = { 'location': 'querystring', 'description': error_msg } raise_invalid(self.request, **error_details) filters = self._build_pagination_rules(sorting, last_record) return filters, offset
def _extract_pagination_rules_from_token(self, limit, sorting): """Get pagination params.""" queryparams = self.request.GET token = queryparams.get("_token", None) filters = [] offset = 0 if token: try: tokeninfo = json.loads(decode64(token)) if not isinstance(tokeninfo, dict): raise ValueError() last_record = tokeninfo["last_record"] offset = tokeninfo["offset"] except (ValueError, KeyError, TypeError): error_msg = "_token has invalid content" error_details = {"location": "querystring", "description": error_msg} raise_invalid(self.request, **error_details) filters = self._build_pagination_rules(sorting, last_record) return filters, offset
def _extract_pagination_rules_from_token(self, limit, sorting): """Get pagination params.""" token = self.request.validated['querystring'].get('_token', None) filters = [] offset = 0 if token: try: tokeninfo = json.loads(decode64(token)) if not isinstance(tokeninfo, dict): raise ValueError() last_record = tokeninfo['last_record'] offset = tokeninfo['offset'] except (ValueError, KeyError, TypeError): error_msg = '_token has invalid content' error_details = { 'location': 'querystring', 'description': error_msg } raise_invalid(self.request, **error_details) filters = self._build_pagination_rules(sorting, last_record) return filters, offset