diff --git a/flask_mongorest/resources.py b/flask_mongorest/resources.py index 87cb80f2..cbdf3c14 100644 --- a/flask_mongorest/resources.py +++ b/flask_mongorest/resources.py @@ -3,7 +3,7 @@ from bson.dbref import DBRef from bson.objectid import ObjectId -from flask import request, url_for +from flask import has_request_context, request, url_for try: from urllib.parse import urlparse except ImportError: # Python 2 @@ -131,6 +131,10 @@ def params(self): 2. As a _params property in the JSON payload. For example: { '_params': { 'status': 'active', '_limit': '10' } } """ + if not has_request_context(): + # `params` doesn't make sense if we don't have a request + raise AttributeError + if not hasattr(self, '_params'): if '_params' in self.raw_data: self._params = self.raw_data['_params'] @@ -157,6 +161,10 @@ def _enforce_strict_json(self, val): @property def raw_data(self): """Validate and return parsed JSON payload.""" + if not has_request_context(): + # `raw_data` doesn't make sense if we don't have a request + raise AttributeError + if not hasattr(self, '_raw_data'): if request.method in ('PUT', 'POST') or request.data: if request.mimetype and 'json' not in request.mimetype: