| 165 | | try: |
|---|
| 166 | | # If the body is a generator, we have to save the data |
|---|
| 167 | | # *after* the generator has been consumed |
|---|
| 168 | | if isinstance(body, types.GeneratorType): |
|---|
| 169 | | for line in body: |
|---|
| 170 | | yield line |
|---|
| 171 | | |
|---|
| 172 | | # Save session data |
|---|
| 173 | | t = datetime.timedelta(seconds = sess.sessionTimeout * 60) |
|---|
| 174 | | expirationTime = datetime.datetime.now() + t |
|---|
| 175 | | sess.sessionStorage.save(sess.sessionID, sess.sessionData, |
|---|
| 176 | | expirationTime) |
|---|
| 177 | | if sess.locked: |
|---|
| 178 | | # Always release the lock if the user didn't release it |
|---|
| 179 | | sess.sessionStorage.releaseLock() |
|---|
| 180 | | |
|---|
| 181 | | # If the body is not a generator, we save the data |
|---|
| 182 | | # before the body is returned |
|---|
| 183 | | if not isinstance(body, types.GeneratorType): |
|---|
| 184 | | for line in body: |
|---|
| 185 | | yield line |
|---|
| 186 | | except: |
|---|
| 187 | | # Can't use try/finally because of yield |
|---|
| 188 | | self._clean() |
|---|
| 189 | | raise |
|---|
| 190 | | self._clean() |
|---|
| | 164 | # If the body is a generator, we have to save the data |
|---|
| | 165 | # *after* the generator has been consumed |
|---|
| | 166 | if isinstance(body, types.GeneratorType): |
|---|
| | 167 | for line in body: |
|---|
| | 168 | yield line |
|---|
| | 169 | |
|---|
| | 170 | # Save session data |
|---|
| | 171 | t = datetime.timedelta(seconds = sess.sessionTimeout * 60) |
|---|
| | 172 | expirationTime = datetime.datetime.now() + t |
|---|
| | 173 | sess.sessionStorage.save(sess.sessionID, sess.sessionData, |
|---|
| | 174 | expirationTime) |
|---|
| | 175 | if sess.locked: |
|---|
| | 176 | # Always release the lock if the user didn't release it |
|---|
| | 177 | sess.sessionStorage.releaseLock() |
|---|
| | 178 | |
|---|
| | 179 | # If the body is not a generator, we save the data |
|---|
| | 180 | # before the body is returned |
|---|
| | 181 | if not isinstance(body, types.GeneratorType): |
|---|
| | 182 | for line in body: |
|---|
| | 183 | yield line |
|---|