diff --git a/odata/context.py b/odata/context.py index d85e47d..f00d3d4 100644 --- a/odata/context.py +++ b/odata/context.py @@ -13,8 +13,8 @@ def __init__(self, session=None, auth=None): self.log = logging.getLogger('odata.context') self.connection = ODataConnection(session=session, auth=auth) - def query(self, entitycls): - q = Query(entitycls, connection=self.connection) + def query(self, entitycls, options=None): + q = Query(entitycls, connection=self.connection, options=options) return q def call(self, action_or_function, **parameters): diff --git a/odata/query.py b/odata/query.py index 4d276ad..d0aa6ca 100644 --- a/odata/query.py +++ b/odata/query.py @@ -61,6 +61,7 @@ class Query(object): def __init__(self, entitycls, connection=None, options=None): self.entity = entitycls self.options = options or dict() + self.default_opts = options self.connection = connection def __iter__(self): @@ -98,7 +99,7 @@ def _get_options(self): Format current query options to a dict that can be passed to requests :return: Dictionary """ - options = dict() + options = self.options _top = self.options.get('$top') if _top is not None: @@ -149,7 +150,7 @@ def _new_query(self): :return: Query instance """ - o = dict() + o = self.default_opts or dict() o['$top'] = self.options.get('$top', None) o['$skip'] = self.options.get('$skip', None) o['$select'] = self.options.get('$select', [])[:] diff --git a/odata/service.py b/odata/service.py index 6238462..be34a08 100644 --- a/odata/service.py +++ b/odata/service.py @@ -170,14 +170,14 @@ def is_entity_saved(self, entity): """Returns boolean indicating entity's status""" return self.default_context.is_entity_saved(entity) - def query(self, entitycls): + def query(self, entitycls, options=None): """ Start a new query for given entity class :param entitycls: Entity to query :return: Query object """ - return self.default_context.query(entitycls) + return self.default_context.query(entitycls, options=options) def delete(self, entity): """