Total Complexity | 9 |
Total Lines | 52 |
Duplicated Lines | 0 % |
Changes | 0 |
1 | from contextlib import contextmanager |
||
2 | |||
3 | from pyramid.decorator import reify |
||
4 | from pyramid.request import Request |
||
5 | |||
6 | from tracim.models import User |
||
7 | from tracim.models.data import Workspace |
||
8 | from tracim.lib.utils.auth import get_safe_user |
||
9 | from tracim.lib.utils.auth import get_workspace |
||
10 | |||
11 | |||
12 | class TracimRequest(Request): |
||
13 | def __init__( |
||
14 | self, |
||
15 | environ, |
||
16 | charset=None, |
||
17 | unicode_errors=None, |
||
18 | decode_param_names=None, |
||
19 | **kw |
||
20 | ): |
||
21 | super().__init__( |
||
22 | environ, |
||
23 | charset, |
||
24 | unicode_errors, |
||
25 | decode_param_names, |
||
26 | **kw |
||
27 | ) |
||
28 | self._current_workspace = None # type: Workspace |
||
29 | self._current_user = None # type: User |
||
30 | |||
31 | @property |
||
32 | def current_workspace(self) -> Workspace: |
||
33 | if self._current_workspace is None: |
||
34 | self.current_workspace = get_workspace(self.current_user, self) |
||
35 | return self._current_workspace |
||
36 | |||
37 | @current_workspace.setter |
||
38 | def current_workspace(self, workspace: Workspace) -> None: |
||
39 | assert self._current_workspace is None |
||
40 | self._current_workspace = workspace |
||
41 | |||
42 | @property |
||
43 | def current_user(self) -> User: |
||
44 | if self._current_user is None: |
||
45 | self.current_user = get_safe_user(self) |
||
46 | return self._current_user |
||
47 | |||
48 | @current_user.setter |
||
49 | def current_user(self, user: User) -> None: |
||
50 | assert self._current_user is None |
||
51 | self._current_user = user |
||
52 |
The coding style of this project requires that you add a docstring to this code element. Below, you find an example for methods:
If you would like to know more about docstrings, we recommend to read PEP-257: Docstring Conventions.