server/session.py
changeset 8817 6ce87a0f0a0c
parent 8816 fe321c0f6d13
child 8840 bd5b5759c9b3
equal deleted inserted replaced
8816:fe321c0f6d13 8817:6ce87a0f0a0c
   149     By default security is disabled on queries executed on the repository
   149     By default security is disabled on queries executed on the repository
   150     side.
   150     side.
   151     """
   151     """
   152     def __init__(self, session, read=None, write=None):
   152     def __init__(self, session, read=None, write=None):
   153         self.session = session
   153         self.session = session
       
   154         self.tx = session._tx
   154         self.read = read
   155         self.read = read
   155         self.write = write
   156         self.write = write
   156         self.oldread = None
   157         self.oldread = None
   157         self.oldwrite = None
   158         self.oldwrite = None
   158 
   159 
   159     def __enter__(self):
   160     def __enter__(self):
   160         if self.read is None:
   161         if self.read is None:
   161             self.oldread = None
   162             self.oldread = None
   162         else:
   163         else:
   163             self.oldread = self.session._tx.read_security
   164             self.oldread = self.tx.read_security
   164             self.session._tx.read_security = self.read
   165             self.tx.read_security = self.read
   165         if self.write is None:
   166         if self.write is None:
   166             self.oldwrite = None
   167             self.oldwrite = None
   167         else:
   168         else:
   168             self.oldwrite = self.session._tx.write_security
   169             self.oldwrite = self.tx.write_security
   169             self.session._tx.write_security = self.write
   170             self.tx.write_security = self.write
   170         self.session._tx.ctx_count += 1
   171         self.tx.ctx_count += 1
   171 
   172 
   172     def __exit__(self, exctype, exc, traceback):
   173     def __exit__(self, exctype, exc, traceback):
   173         tx = self.session._tx
   174         self.tx.ctx_count -= 1
   174         tx.ctx_count -= 1
   175         if self.tx.ctx_count == 0:
   175         if tx.ctx_count == 0:
   176             self.session._clear_thread_storage(self.tx)
   176             self.session._clear_thread_storage(tx)
       
   177         else:
   177         else:
   178             if self.oldread is not None:
   178             if self.oldread is not None:
   179                 self.session._tx.read_security = self.oldread
   179                 self.tx.read_security = self.oldread
   180             if self.oldwrite is not None:
   180             if self.oldwrite is not None:
   181                 self.session._tx.write_security = self.oldwrite
   181                 self.tx.write_security = self.oldwrite
   182 
   182 
   183 HOOKS_ALLOW_ALL = object()
   183 HOOKS_ALLOW_ALL = object()
   184 HOOKS_DENY_ALL = object()
   184 HOOKS_DENY_ALL = object()
   185 DEFAULT_SECURITY = object() # evaluated to true by design
   185 DEFAULT_SECURITY = object() # evaluated to true by design
   186 
   186