Loads the data from this session from persistent storage
(self)
| 205 | self.load() |
| 206 | |
| 207 | def load(self): |
| 208 | "Loads the data from this session from persistent storage" |
| 209 | self.namespace = self.namespace_class(self.id, |
| 210 | data_dir=self.data_dir, digest_filenames=False, |
| 211 | **self.namespace_args) |
| 212 | now = time.time() |
| 213 | self.request['set_cookie'] = True |
| 214 | |
| 215 | self.namespace.acquire_read_lock() |
| 216 | timed_out = False |
| 217 | try: |
| 218 | self.clear() |
| 219 | try: |
| 220 | session_data = self.namespace['session'] |
| 221 | |
| 222 | # Memcached always returns a key, its None when its not |
| 223 | # present |
| 224 | if session_data is None: |
| 225 | session_data = { |
| 226 | '_creation_time':now, |
| 227 | '_accessed_time':now |
| 228 | } |
| 229 | self.is_new = True |
| 230 | except (KeyError, TypeError): |
| 231 | session_data = { |
| 232 | '_creation_time':now, |
| 233 | '_accessed_time':now |
| 234 | } |
| 235 | self.is_new = True |
| 236 | |
| 237 | if self.timeout is not None and \ |
| 238 | now - session_data['_accessed_time'] > self.timeout: |
| 239 | timed_out= True |
| 240 | else: |
| 241 | # Properly set the last_accessed time, which is different |
| 242 | # than the *currently* _accessed_time |
| 243 | if self.is_new or '_accessed_time' not in session_data: |
| 244 | self.last_accessed = None |
| 245 | else: |
| 246 | self.last_accessed = session_data['_accessed_time'] |
| 247 | |
| 248 | # Update the current _accessed_time |
| 249 | session_data['_accessed_time'] = now |
| 250 | self.update(session_data) |
| 251 | self.accessed_dict = session_data.copy() |
| 252 | finally: |
| 253 | self.namespace.release_read_lock() |
| 254 | if timed_out: |
| 255 | self.invalidate() |
| 256 | |
| 257 | def save(self, accessed_only=False): |
| 258 | """Saves the data for this session to persistent storage |
no test coverage detected