Browse Source

use config as param in every internal api + with_context method in API

Guénaël Muller 6 years ago
parent
commit
7d7f68f2f8

+ 1 - 0
tracim/command/user.py View File

@@ -153,6 +153,7 @@ class UserCommand(AppContextCommand):
153 153
         self._group_api = GroupApi(
154 154
             current_user=None,
155 155
             session=self._session,
156
+            config=self._app_config,
156 157
         )
157 158
         user = self._proceed_user(parsed_args)
158 159
         self._proceed_groups(user, parsed_args)

+ 3 - 0
tracim/fixtures/content.py View File

@@ -24,10 +24,12 @@ class Content(Fixture):
24 24
         admin_workspace_api = WorkspaceApi(
25 25
             current_user=admin,
26 26
             session=self._session,
27
+            config=self._config,
27 28
         )
28 29
         bob_workspace_api = WorkspaceApi(
29 30
             current_user=bob,
30 31
             session=self._session,
32
+            config=self._config
31 33
         )
32 34
         content_api = ContentApi(
33 35
             current_user=admin,
@@ -37,6 +39,7 @@ class Content(Fixture):
37 39
         role_api = RoleApi(
38 40
             current_user=admin,
39 41
             session=self._session,
42
+            config=self._config,
40 43
         )
41 44
 
42 45
         # Workspaces

+ 5 - 0
tracim/lib/core/group.py View File

@@ -1,6 +1,8 @@
1 1
 # -*- coding: utf-8 -*-
2 2
 import typing
3 3
 
4
+from tracim import CFG
5
+
4 6
 __author__ = 'damien'
5 7
 
6 8
 from tracim.models.auth import Group, User
@@ -14,9 +16,12 @@ class GroupApi(object):
14 16
             self,
15 17
             session: Session,
16 18
             current_user: typing.Optional[User],
19
+            config: CFG
20
+
17 21
     ):
18 22
         self._user = current_user
19 23
         self._session = session
24
+        self._config = config
20 25
 
21 26
     def _base_query(self) -> Query:
22 27
         return self._session.query(Group)

+ 22 - 1
tracim/lib/core/userworkspace.py View File

@@ -1,6 +1,9 @@
1 1
 # -*- coding: utf-8 -*-
2 2
 import typing
3 3
 
4
+from tracim import CFG
5
+from tracim.models.context_models import UserRoleWorkspaceInContext
6
+
4 7
 __author__ = 'damien'
5 8
 
6 9
 from sqlalchemy.orm import Session
@@ -38,6 +41,20 @@ class RoleApi(object):
38 41
         ],
39 42
     }
40 43
 
44
+    def get_user_role_workspace_with_context(
45
+            self,
46
+            user_role: UserRoleInWorkspace
47
+    ) -> UserRoleWorkspaceInContext:
48
+        """
49
+        Return WorkspaceInContext object from Workspace
50
+        """
51
+        workspace = UserRoleWorkspaceInContext(
52
+            user_role=user_role,
53
+            dbsession=self._session,
54
+            config=self._config,
55
+        )
56
+        return workspace
57
+
41 58
     @classmethod
42 59
     def role_can_read_member_role(cls, reader_role: int, tested_role: int) \
43 60
             -> bool:
@@ -56,9 +73,13 @@ class RoleApi(object):
56 73
 
57 74
         return role
58 75
 
59
-    def __init__(self, session: Session, current_user: typing.Optional[User]):
76
+    def __init__(self,
77
+                 session: Session,
78
+                 current_user: typing.Optional[User],
79
+                 config: CFG):
60 80
         self._session = session
61 81
         self._user = current_user
82
+        self._config = config
62 83
 
63 84
     def _get_one_rsc(self, user_id, workspace_id):
64 85
         """

+ 20 - 0
tracim/lib/core/workspace.py View File

@@ -3,11 +3,14 @@ import typing
3 3
 
4 4
 from sqlalchemy.orm import Query
5 5
 from sqlalchemy.orm import Session
6
+
7
+from tracim import CFG
6 8
 from tracim.lib.utils.translation import fake_translator as _
7 9
 
8 10
 from tracim.lib.core.userworkspace import RoleApi
9 11
 from tracim.models.auth import Group
10 12
 from tracim.models.auth import User
13
+from tracim.models.context_models import WorkspaceInContext
11 14
 from tracim.models.data import UserRoleInWorkspace
12 15
 from tracim.models.data import Workspace
13 16
 
@@ -20,6 +23,7 @@ class WorkspaceApi(object):
20 23
             self,
21 24
             session: Session,
22 25
             current_user: User,
26
+            config: CFG,
23 27
             force_role: bool=False
24 28
     ):
25 29
         """
@@ -28,6 +32,7 @@ class WorkspaceApi(object):
28 32
         """
29 33
         self._session = session
30 34
         self._user = current_user
35
+        self._config = config
31 36
         self._force_role = force_role
32 37
 
33 38
     def _base_query_without_roles(self):
@@ -42,6 +47,20 @@ class WorkspaceApi(object):
42 47
             filter(UserRoleInWorkspace.user_id == self._user.user_id).\
43 48
             filter(Workspace.is_deleted == False)
44 49
 
50
+    def get_workspace_with_context(
51
+            self,
52
+            workspace: Workspace
53
+    ) -> WorkspaceInContext:
54
+        """
55
+        Return WorkspaceInContext object from Workspace
56
+        """
57
+        workspace = WorkspaceInContext(
58
+            workspace=workspace,
59
+            dbsession=self._session,
60
+            config=self._config,
61
+        )
62
+        return workspace
63
+
45 64
     def create_workspace(
46 65
             self,
47 66
             label: str='',
@@ -62,6 +81,7 @@ class WorkspaceApi(object):
62 81
         role_api = RoleApi(
63 82
             session=self._session,
64 83
             current_user=self._user,
84
+            config=self._config
65 85
         )
66 86
 
67 87
         role = role_api.create_one(

+ 5 - 1
tracim/lib/utils/request.py View File

@@ -115,7 +115,11 @@ def get_workspace(
115 115
         if 'workspace_id' not in request.json_body:
116 116
             raise WorkspaceNotFound('No workspace_id param in json body')
117 117
         workspace_id = request.json_body['workspace_id']
118
-        wapi = WorkspaceApi(current_user=user, session=request.dbsession)
118
+        wapi = WorkspaceApi(
119
+            current_user=user,
120
+            session=request.dbsession,
121
+            config=request.registry.settings['CFG']
122
+        )
119 123
         workspace = wapi.get_one(workspace_id)
120 124
     except JSONDecodeError:
121 125
         raise WorkspaceNotFound('Bad json body')

+ 10 - 2
tracim/lib/webdav/dav_provider.py View File

@@ -72,7 +72,11 @@ class Provider(DAVProvider):
72 72
         if path == root_path:
73 73
             return resources.RootResource(path, environ, user=user, session=session)
74 74
 
75
-        workspace_api = WorkspaceApi(current_user=user, session=session)
75
+        workspace_api = WorkspaceApi(
76
+            current_user=user,
77
+            session=session,
78
+            config=self.app_config,
79
+        )
76 80
         workspace = self.get_workspace_from_path(path, workspace_api)
77 81
 
78 82
         # If the request path is in the form root/name, then we return a WorkspaceResource resource
@@ -194,7 +198,11 @@ class Provider(DAVProvider):
194 198
 
195 199
         workspace = self.get_workspace_from_path(
196 200
             path,
197
-            WorkspaceApi(current_user=user, session=session)
201
+            WorkspaceApi(
202
+                current_user=user,
203
+                session=session,
204
+                config=self.app_config,
205
+            )
198 206
         )
199 207
 
200 208
         if parent_path == root_path or workspace is None:

+ 3 - 1
tracim/lib/webdav/resources.py View File

@@ -90,7 +90,8 @@ class RootResource(DAVCollection):
90 90
         self.workspace_api = WorkspaceApi(
91 91
             current_user=self.user,
92 92
             session=session,
93
-            force_role=True
93
+            force_role=True,
94
+            config=self.provider.app_config
94 95
         )
95 96
 
96 97
     def __repr__(self) -> str:
@@ -1254,6 +1255,7 @@ class FileResource(DAVNonCollection):
1254 1255
             workspace_api = WorkspaceApi(
1255 1256
                 current_user=self.user,
1256 1257
                 session=self.session,
1258
+                config=self.provider.app_config,
1257 1259
                 )
1258 1260
             content_api = ContentApi(
1259 1261
                 current_user=self.user,

+ 1 - 0
tracim/tests/__init__.py View File

@@ -159,6 +159,7 @@ class DefaultTest(StandardTest):
159 159
         WorkspaceApi(
160 160
             current_user=user,
161 161
             session=self.session,
162
+            config=self.app_config,
162 163
         ).create_workspace(name, save_now=True)
163 164
 
164 165
         eq_(

+ 217 - 59
tracim/tests/library/test_content_api.py View File

@@ -107,7 +107,11 @@ class TestContentApi(DefaultTest):
107 107
             config=self.app_config,
108 108
             current_user=None,
109 109
         )
110
-        group_api = GroupApi(current_user=None,session=self.session)
110
+        group_api = GroupApi(
111
+            current_user=None,
112
+            session=self.session,
113
+            config=self.app_config,
114
+        )
111 115
         groups = [group_api.get_one(Group.TIM_USER),
112 116
                   group_api.get_one(Group.TIM_MANAGER),
113 117
                   group_api.get_one(Group.TIM_ADMIN)]
@@ -116,7 +120,8 @@ class TestContentApi(DefaultTest):
116 120
                                 groups=groups, save_now=True)
117 121
         workspace = WorkspaceApi(
118 122
             current_user=user,
119
-            session=self.session
123
+            session=self.session,
124
+            config=self.app_config,
120 125
         ).create_workspace('test workspace', save_now=True)
121 126
         api = ContentApi(
122 127
             current_user=user,
@@ -133,7 +138,11 @@ class TestContentApi(DefaultTest):
133 138
 
134 139
         # Refresh instances after commit
135 140
         user = uapi.get_one(uid)
136
-        workspace_api = WorkspaceApi(current_user=user, session=self.session)
141
+        workspace_api = WorkspaceApi(
142
+            current_user=user,
143
+            session=self.session,
144
+            config=self.app_config
145
+        )
137 146
         workspace = workspace_api.get_one(wid)
138 147
         api = ContentApi(
139 148
             current_user=user,
@@ -154,7 +163,11 @@ class TestContentApi(DefaultTest):
154 163
 
155 164
         # Refresh instances after commit
156 165
         user = uapi.get_one(uid)
157
-        workspace_api = WorkspaceApi(current_user=user, session=self.session)
166
+        workspace_api = WorkspaceApi(
167
+            current_user=user,
168
+            session=self.session,
169
+            config=self.app_config
170
+        )
158 171
         workspace = workspace_api.get_one(wid)
159 172
         api = ContentApi(
160 173
             current_user=user, 
@@ -168,7 +181,11 @@ class TestContentApi(DefaultTest):
168 181
         # Test that the item is still available if "show deleted" is activated
169 182
         # Refresh instances after commit
170 183
         user = uapi.get_one(uid)
171
-        workspace_api = WorkspaceApi(current_user=user, session=self.session)
184
+        workspace_api = WorkspaceApi(
185
+            current_user=user,
186
+            session=self.session,
187
+            config=self.app_config,
188
+        )
172 189
         api = ContentApi(
173 190
             current_user=user,
174 191
             session=self.session,
@@ -184,14 +201,22 @@ class TestContentApi(DefaultTest):
184 201
             config=self.app_config,
185 202
             current_user=None,
186 203
         )
187
-        group_api = GroupApi(current_user=None, session=self.session)
204
+        group_api = GroupApi(
205
+            current_user=None,
206
+            session=self.session,
207
+            config=self.app_config,
208
+        )
188 209
         groups = [group_api.get_one(Group.TIM_USER),
189 210
                   group_api.get_one(Group.TIM_MANAGER),
190 211
                   group_api.get_one(Group.TIM_ADMIN)]
191 212
 
192 213
         user = uapi.create_user(email='this.is@user',
193 214
                                 groups=groups, save_now=True)
194
-        workspace_api = WorkspaceApi(current_user=user, session=self.session)
215
+        workspace_api = WorkspaceApi(
216
+            current_user=user,
217
+            session=self.session,
218
+            config=self.app_config,
219
+        )
195 220
         workspace = workspace_api.create_workspace(
196 221
             'test workspace',
197 222
             save_now=True
@@ -210,7 +235,11 @@ class TestContentApi(DefaultTest):
210 235
         transaction.commit()
211 236
         # Refresh instances after commit
212 237
         user = uapi.get_one(uid)
213
-        workspace_api = WorkspaceApi(current_user=user, session=self.session)
238
+        workspace_api = WorkspaceApi(
239
+            current_user=user,
240
+            session=self.session,
241
+            config=self.app_config,
242
+        )
214 243
         api = ContentApi(
215 244
             session=self.session,
216 245
             current_user=user,
@@ -231,7 +260,11 @@ class TestContentApi(DefaultTest):
231 260
 
232 261
         # Refresh instances after commit
233 262
         user = uapi.get_one(uid)
234
-        workspace_api = WorkspaceApi(current_user=user, session=self.session)
263
+        workspace_api = WorkspaceApi(
264
+            current_user=user,
265
+            session=self.session,
266
+            config=self.app_config,
267
+        )
235 268
         workspace = workspace_api.get_one(wid)
236 269
         api = ContentApi(
237 270
             current_user=user, 
@@ -245,7 +278,11 @@ class TestContentApi(DefaultTest):
245 278
 
246 279
         # Refresh instances after commit
247 280
         user = uapi.get_one(uid)
248
-        workspace_api = WorkspaceApi(current_user=user, session=self.session)
281
+        workspace_api = WorkspaceApi(
282
+            current_user=user,
283
+            session=self.session,
284
+            config=self.app_config,
285
+        )
249 286
         workspace = workspace_api.get_one(wid)
250 287
         api = ContentApi(
251 288
             current_user=user,
@@ -269,7 +306,11 @@ class TestContentApi(DefaultTest):
269 306
             config=self.app_config,
270 307
             current_user=None,
271 308
         )
272
-        group_api = GroupApi(current_user=None, session=self.session)
309
+        group_api = GroupApi(
310
+            current_user=None,
311
+            session=self.session,
312
+            config=self.app_config,
313
+        )
273 314
         groups = [group_api.get_one(Group.TIM_USER),
274 315
                   group_api.get_one(Group.TIM_MANAGER),
275 316
                   group_api.get_one(Group.TIM_ADMIN)]
@@ -281,7 +322,8 @@ class TestContentApi(DefaultTest):
281 322
         )
282 323
         workspace = WorkspaceApi(
283 324
             current_user=user,
284
-            session=self.session
325
+            session=self.session,
326
+            config=self.app_config,
285 327
         ).create_workspace(
286 328
             'test workspace',
287 329
             save_now=True
@@ -301,7 +343,11 @@ class TestContentApi(DefaultTest):
301 343
 
302 344
         # Refresh instances after commit
303 345
         user = uapi.get_one(uid)
304
-        workspace_api = WorkspaceApi(current_user=user, session=self.session)
346
+        workspace_api = WorkspaceApi(
347
+            current_user=user,
348
+            session=self.session,
349
+            config=self.app_config,
350
+        )
305 351
         workspace = workspace_api.get_one(wid)
306 352
         api = ContentApi(
307 353
             current_user=user, 
@@ -326,7 +372,11 @@ class TestContentApi(DefaultTest):
326 372
             config=self.app_config,
327 373
             current_user=None,
328 374
         )
329
-        group_api = GroupApi(current_user=None, session=self.session)
375
+        group_api = GroupApi(
376
+            current_user=None,
377
+            session=self.session,
378
+            config=self.app_config
379
+        )
330 380
         groups = [group_api.get_one(Group.TIM_USER),
331 381
                   group_api.get_one(Group.TIM_MANAGER),
332 382
                   group_api.get_one(Group.TIM_ADMIN)]
@@ -335,7 +385,8 @@ class TestContentApi(DefaultTest):
335 385
                                 groups=groups, save_now=True)
336 386
         workspace = WorkspaceApi(
337 387
             current_user=user,
338
-            session=self.session
388
+            session=self.session,
389
+            config=self.app_config
339 390
         ).create_workspace('test workspace', save_now=True)
340 391
         api = ContentApi(
341 392
             current_user=user, 
@@ -371,7 +422,11 @@ class TestContentApi(DefaultTest):
371 422
 
372 423
         # Refresh instances after commit
373 424
         user = uapi.get_one(uid)
374
-        workspace_api = WorkspaceApi(current_user=user, session=self.session)
425
+        workspace_api = WorkspaceApi(
426
+            current_user=user,
427
+            session=self.session,
428
+            config=self.app_config,
429
+        )
375 430
         workspace = workspace_api.get_one(wid)
376 431
         api = ContentApi(
377 432
             current_user=user,
@@ -394,7 +449,8 @@ class TestContentApi(DefaultTest):
394 449
         )
395 450
         group_api = GroupApi(
396 451
             current_user=None,
397
-            session=self.session
452
+            session=self.session,
453
+            config=self.app_config,
398 454
         )
399 455
         groups = [group_api.get_one(Group.TIM_USER),
400 456
                   group_api.get_one(Group.TIM_MANAGER),
@@ -405,7 +461,8 @@ class TestContentApi(DefaultTest):
405 461
 
406 462
         workspace = WorkspaceApi(
407 463
             current_user=user,
408
-            session=self.session
464
+            session=self.session,
465
+            config=self.app_config,
409 466
         ).create_workspace(
410 467
             'test workspace',
411 468
             save_now=True
@@ -432,7 +489,8 @@ class TestContentApi(DefaultTest):
432 489
         )
433 490
         group_api = GroupApi(
434 491
             current_user=None,
435
-            session=self.session
492
+            session=self.session,
493
+            config=self.app_config,
436 494
         )
437 495
         groups = [group_api.get_one(Group.TIM_USER),
438 496
                   group_api.get_one(Group.TIM_MANAGER),
@@ -443,7 +501,8 @@ class TestContentApi(DefaultTest):
443 501
 
444 502
         workspace = WorkspaceApi(
445 503
             current_user=user,
446
-            session=self.session
504
+            session=self.session,
505
+            config=self.app_config,
447 506
         ).create_workspace(
448 507
             'test workspace',
449 508
             save_now=True
@@ -474,7 +533,8 @@ class TestContentApi(DefaultTest):
474 533
         )
475 534
         group_api = GroupApi(
476 535
             current_user=None,
477
-            session=self.session
536
+            session=self.session,
537
+            config=self.config,
478 538
         )
479 539
         groups = [group_api.get_one(Group.TIM_USER),
480 540
                   group_api.get_one(Group.TIM_MANAGER),
@@ -485,7 +545,8 @@ class TestContentApi(DefaultTest):
485 545
 
486 546
         workspace = WorkspaceApi(
487 547
             current_user=user,
488
-            session=self.session
548
+            session=self.session,
549
+            config=self.app_config,
489 550
         ).create_workspace(
490 551
             'test workspace',
491 552
             save_now=True
@@ -516,7 +577,8 @@ class TestContentApi(DefaultTest):
516 577
         )
517 578
         group_api = GroupApi(
518 579
             current_user=None,
519
-            session=self.session
580
+            session=self.session,
581
+            config=self.app_config
520 582
         )
521 583
         groups = [group_api.get_one(Group.TIM_USER),
522 584
                   group_api.get_one(Group.TIM_MANAGER),
@@ -534,12 +596,17 @@ class TestContentApi(DefaultTest):
534 596
         )
535 597
         workspace = WorkspaceApi(
536 598
             current_user=user,
537
-            session=self.session
599
+            session=self.session,
600
+            config=self.app_config,
538 601
         ).create_workspace(
539 602
             'test workspace',
540 603
             save_now=True
541 604
         )
542
-        RoleApi(current_user=user, session=self.session).create_one(
605
+        RoleApi(
606
+            current_user=user,
607
+            session=self.session,
608
+            config=self.app_config,
609
+        ).create_one(
543 610
             user2,
544 611
             workspace,
545 612
             UserRoleInWorkspace.WORKSPACE_MANAGER,
@@ -581,6 +648,7 @@ class TestContentApi(DefaultTest):
581 648
         workspace2 = WorkspaceApi(
582 649
             current_user=user2,
583 650
             session=self.session,
651
+            config=self.app_config,
584 652
         ).create_workspace(
585 653
             'test workspace2',
586 654
             save_now=True
@@ -628,7 +696,8 @@ class TestContentApi(DefaultTest):
628 696
         )
629 697
         group_api = GroupApi(
630 698
             current_user=None,
631
-            session=self.session
699
+            session=self.session,
700
+            config=self.app_config,
632 701
         )
633 702
         groups = [group_api.get_one(Group.TIM_USER),
634 703
                   group_api.get_one(Group.TIM_MANAGER),
@@ -646,12 +715,17 @@ class TestContentApi(DefaultTest):
646 715
         )
647 716
         workspace = WorkspaceApi(
648 717
             current_user=user,
649
-            session=self.session
718
+            session=self.session,
719
+            config=self.app_config,
650 720
         ).create_workspace(
651 721
             'test workspace',
652 722
             save_now=True
653 723
         )
654
-        RoleApi(current_user=user, session=self.session).create_one(
724
+        RoleApi(
725
+            current_user=user,
726
+            session=self.session,
727
+            config=self.app_config,
728
+        ).create_one(
655 729
             user2,
656 730
             workspace,
657 731
             UserRoleInWorkspace.WORKSPACE_MANAGER,
@@ -692,7 +766,8 @@ class TestContentApi(DefaultTest):
692 766
         )
693 767
         workspace2 = WorkspaceApi(
694 768
             current_user=user2,
695
-            session=self.session
769
+            session=self.session,
770
+            config=self.app_config,
696 771
         ).create_workspace(
697 772
             'test workspace2',
698 773
             save_now=True
@@ -738,7 +813,8 @@ class TestContentApi(DefaultTest):
738 813
         )
739 814
         group_api = GroupApi(
740 815
             current_user=None,
741
-            session=self.session
816
+            session=self.session,
817
+            config=self.app_config,
742 818
         )
743 819
         groups = [group_api.get_one(Group.TIM_USER),
744 820
                   group_api.get_one(Group.TIM_MANAGER),
@@ -756,12 +832,17 @@ class TestContentApi(DefaultTest):
756 832
         )
757 833
         workspace = WorkspaceApi(
758 834
             current_user=user,
759
-            session=self.session
835
+            session=self.session,
836
+            config=self.app_config,
760 837
         ).create_workspace(
761 838
             'test workspace',
762 839
             save_now=True
763 840
         )
764
-        RoleApi(current_user=user, session=self.session).create_one(
841
+        RoleApi(
842
+            current_user=user,
843
+            session=self.session,
844
+            config=self.app_config,
845
+        ).create_one(
765 846
             user2, workspace,
766 847
             UserRoleInWorkspace.WORKSPACE_MANAGER,
767 848
             with_notif=False
@@ -837,7 +918,8 @@ class TestContentApi(DefaultTest):
837 918
         )
838 919
         group_api = GroupApi(
839 920
             current_user=None,
840
-            session=self.session
921
+            session=self.session,
922
+            config=self.app_config,
841 923
         )
842 924
         groups = [group_api.get_one(Group.TIM_USER),
843 925
                   group_api.get_one(Group.TIM_MANAGER),
@@ -851,6 +933,7 @@ class TestContentApi(DefaultTest):
851 933
         wapi = WorkspaceApi(
852 934
             current_user=user_a,
853 935
             session=self.session,
936
+            config=self.app_config,
854 937
         )
855 938
         workspace1 = wapi.create_workspace(
856 939
             'test workspace n°1',
@@ -862,6 +945,7 @@ class TestContentApi(DefaultTest):
862 945
         role_api1 = RoleApi(
863 946
             current_user=user_a,
864 947
             session=self.session,
948
+            config=self.app_config,
865 949
         )
866 950
         role_api1.create_one(
867 951
             user_b,
@@ -873,6 +957,7 @@ class TestContentApi(DefaultTest):
873 957
         role_api2 = RoleApi(
874 958
             current_user=user_b,
875 959
             session=self.session,
960
+            config=self.app_config,
876 961
         )
877 962
         role_api2.create_one(user_b, workspace2, UserRoleInWorkspace.READER,
878 963
                              False)
@@ -940,7 +1025,8 @@ class TestContentApi(DefaultTest):
940 1025
         )
941 1026
         group_api = GroupApi(
942 1027
             current_user=None,
943
-            session=self.session
1028
+            session=self.session,
1029
+            config = self.app_config,
944 1030
         )
945 1031
         groups = [group_api.get_one(Group.TIM_USER),
946 1032
                   group_api.get_one(Group.TIM_MANAGER),
@@ -957,10 +1043,15 @@ class TestContentApi(DefaultTest):
957 1043
             save_now=True
958 1044
         )
959 1045
 
960
-        wapi = WorkspaceApi(current_user=user_a, session=self.session)
1046
+        wapi = WorkspaceApi(
1047
+            current_user=user_a,
1048
+            session=self.session,
1049
+            config=self.app_config,
1050
+        )
961 1051
         workspace_api = WorkspaceApi(
962 1052
             current_user=user_a,
963
-            session=self.session
1053
+            session=self.session,
1054
+            config=self.app_config,
964 1055
         )
965 1056
         workspace = wapi.create_workspace(
966 1057
             'test workspace',
@@ -969,6 +1060,7 @@ class TestContentApi(DefaultTest):
969 1060
         role_api = RoleApi(
970 1061
             current_user=user_a,
971 1062
             session=self.session,
1063
+            config=self.app_config,
972 1064
         )
973 1065
         role_api.create_one(
974 1066
             user_b,
@@ -1004,7 +1096,11 @@ class TestContentApi(DefaultTest):
1004 1096
             config=self.app_config,
1005 1097
             current_user=None,
1006 1098
         )
1007
-        group_api = GroupApi(current_user=None, session=self.session)
1099
+        group_api = GroupApi(
1100
+            current_user=None,
1101
+            session=self.session,
1102
+            config=self.app_config,
1103
+        )
1008 1104
         groups = [group_api.get_one(Group.TIM_USER),
1009 1105
                   group_api.get_one(Group.TIM_MANAGER),
1010 1106
                   group_api.get_one(Group.TIM_ADMIN)]
@@ -1023,6 +1119,7 @@ class TestContentApi(DefaultTest):
1023 1119
         wapi = WorkspaceApi(
1024 1120
             current_user=user_a,
1025 1121
             session=self.session,
1122
+            config=self.app_config,
1026 1123
         )
1027 1124
         workspace = wapi.create_workspace(
1028 1125
             'test workspace',
@@ -1031,6 +1128,7 @@ class TestContentApi(DefaultTest):
1031 1128
         role_api = RoleApi(
1032 1129
             current_user=user_a,
1033 1130
             session=self.session,
1131
+            config=self.app_config,
1034 1132
         )
1035 1133
         role_api.create_one(
1036 1134
             user_b,
@@ -1097,7 +1195,11 @@ class TestContentApi(DefaultTest):
1097 1195
             config=self.app_config,
1098 1196
             current_user=None,
1099 1197
         )
1100
-        group_api = GroupApi(current_user=None, session=self.session)
1198
+        group_api = GroupApi(
1199
+            current_user=None,
1200
+            session=self.session,
1201
+            config=self.app_config,
1202
+        )
1101 1203
         groups = [group_api.get_one(Group.TIM_USER),
1102 1204
                   group_api.get_one(Group.TIM_MANAGER),
1103 1205
                   group_api.get_one(Group.TIM_ADMIN)]
@@ -1108,7 +1210,11 @@ class TestContentApi(DefaultTest):
1108 1210
             save_now=True
1109 1211
         )
1110 1212
 
1111
-        workspace_api = WorkspaceApi(current_user=user1, session=self.session)
1213
+        workspace_api = WorkspaceApi(
1214
+            current_user=user1,
1215
+            session=self.session,
1216
+            config=self.app_config,
1217
+        )
1112 1218
         workspace = workspace_api.create_workspace(
1113 1219
             'test workspace',
1114 1220
             save_now=True
@@ -1122,7 +1228,8 @@ class TestContentApi(DefaultTest):
1122 1228
 
1123 1229
         RoleApi(
1124 1230
             current_user=user1,
1125
-            session=self.session
1231
+            session=self.session,
1232
+            config=self.app_config,
1126 1233
         ).create_one(
1127 1234
             user2,
1128 1235
             workspace,
@@ -1153,7 +1260,8 @@ class TestContentApi(DefaultTest):
1153 1260
         user1 = uapi.get_one(u1id)
1154 1261
         workspace = WorkspaceApi(
1155 1262
             current_user=user1,
1156
-            session=self.session
1263
+            session=self.session,
1264
+            config=self.app_config,
1157 1265
         ).get_one(wid)
1158 1266
         api = ContentApi(
1159 1267
             current_user=user1,
@@ -1194,6 +1302,7 @@ class TestContentApi(DefaultTest):
1194 1302
         workspace = WorkspaceApi(
1195 1303
             current_user=user1,
1196 1304
             session=self.session,
1305
+            config=self.app_config,
1197 1306
         ).get_one(wid)
1198 1307
         api = ContentApi(
1199 1308
             current_user=user1,
@@ -1217,7 +1326,8 @@ class TestContentApi(DefaultTest):
1217 1326
         )
1218 1327
         group_api = GroupApi(
1219 1328
             current_user=None,
1220
-            session=self.session
1329
+            session=self.session,
1330
+            config = self.app_config,
1221 1331
         )
1222 1332
         groups = [group_api.get_one(Group.TIM_USER),
1223 1333
                   group_api.get_one(Group.TIM_MANAGER),
@@ -1232,6 +1342,7 @@ class TestContentApi(DefaultTest):
1232 1342
         workspace = WorkspaceApi(
1233 1343
             current_user=user1,
1234 1344
             session=self.session,
1345
+            config=self.app_config,
1235 1346
         ).create_workspace(
1236 1347
             'test workspace',
1237 1348
             save_now=True
@@ -1243,7 +1354,8 @@ class TestContentApi(DefaultTest):
1243 1354
 
1244 1355
         RoleApi(
1245 1356
             current_user=user1,
1246
-            session=self.session
1357
+            session=self.session,
1358
+            config=self.app_config,
1247 1359
         ).create_one(
1248 1360
             user2,
1249 1361
             workspace,
@@ -1295,7 +1407,8 @@ class TestContentApi(DefaultTest):
1295 1407
         )
1296 1408
         group_api = GroupApi(
1297 1409
             current_user=None,
1298
-            session=self.session
1410
+            session=self.session,
1411
+            config=self.app_config,
1299 1412
         )
1300 1413
         groups = [group_api.get_one(Group.TIM_USER),
1301 1414
                   group_api.get_one(Group.TIM_MANAGER),
@@ -1307,7 +1420,11 @@ class TestContentApi(DefaultTest):
1307 1420
             save_now=True
1308 1421
         )
1309 1422
 
1310
-        workspace_api = WorkspaceApi(current_user=user1, session=self.session)
1423
+        workspace_api = WorkspaceApi(
1424
+            current_user=user1,
1425
+            session=self.session,
1426
+            config=self.app_config,
1427
+        )
1311 1428
         workspace = workspace_api.create_workspace(
1312 1429
             'test workspace',
1313 1430
             save_now=True
@@ -1321,6 +1438,7 @@ class TestContentApi(DefaultTest):
1321 1438
         RoleApi(
1322 1439
             current_user=user1,
1323 1440
             session=self.session,
1441
+            config=self.app_config,
1324 1442
         ).create_one(
1325 1443
             user2,
1326 1444
             workspace,
@@ -1348,7 +1466,11 @@ class TestContentApi(DefaultTest):
1348 1466
 
1349 1467
         # Refresh instances after commit
1350 1468
         user1 = uapi.get_one(u1id)
1351
-        workspace_api2 = WorkspaceApi(current_user=user1, session=self.session)
1469
+        workspace_api2 = WorkspaceApi(
1470
+            current_user=user1,
1471
+            session=self.session,
1472
+            config=self.app_config,
1473
+        )
1352 1474
         workspace = workspace_api2.get_one(wid)
1353 1475
         api = ContentApi(
1354 1476
             current_user=user1,
@@ -1390,6 +1512,7 @@ class TestContentApi(DefaultTest):
1390 1512
         workspace = WorkspaceApi(
1391 1513
             current_user=user1,
1392 1514
             session=self.session,
1515
+            config=self.app_config,
1393 1516
         ).get_one(wid)
1394 1517
 
1395 1518
         updated = api.get_one(pcid, ContentType.Any, workspace)
@@ -1410,6 +1533,7 @@ class TestContentApi(DefaultTest):
1410 1533
         group_api = GroupApi(
1411 1534
             current_user=None,
1412 1535
             session=self.session,
1536
+            config=self.app_config,
1413 1537
         )
1414 1538
         groups = [group_api.get_one(Group.TIM_USER),
1415 1539
                   group_api.get_one(Group.TIM_MANAGER),
@@ -1421,7 +1545,11 @@ class TestContentApi(DefaultTest):
1421 1545
             save_now=True,
1422 1546
         )
1423 1547
 
1424
-        workspace_api = WorkspaceApi(current_user=user1, session=self.session)
1548
+        workspace_api = WorkspaceApi(
1549
+            current_user=user1,
1550
+            session=self.session,
1551
+            config=self.app_config,
1552
+        )
1425 1553
         workspace = workspace_api.create_workspace(
1426 1554
             'test workspace',
1427 1555
             save_now=True
@@ -1434,6 +1562,7 @@ class TestContentApi(DefaultTest):
1434 1562
         RoleApi(
1435 1563
             current_user=user1,
1436 1564
             session=self.session,
1565
+            config=self.app_config,
1437 1566
         ).create_one(
1438 1567
             user2,
1439 1568
             workspace,
@@ -1489,7 +1618,11 @@ class TestContentApi(DefaultTest):
1489 1618
             config=self.app_config,
1490 1619
             current_user=None,
1491 1620
         )
1492
-        group_api = GroupApi(current_user=None, session=self.session)
1621
+        group_api = GroupApi(
1622
+            current_user=None,
1623
+            session=self.session,
1624
+            config=self.app_config,
1625
+        )
1493 1626
         groups = [group_api.get_one(Group.TIM_USER),
1494 1627
                   group_api.get_one(Group.TIM_MANAGER),
1495 1628
                   group_api.get_one(Group.TIM_ADMIN)]
@@ -1501,7 +1634,11 @@ class TestContentApi(DefaultTest):
1501 1634
         )
1502 1635
         u1id = user1.user_id
1503 1636
 
1504
-        workspace_api = WorkspaceApi(current_user=user1, session=self.session)
1637
+        workspace_api = WorkspaceApi(
1638
+            current_user=user1,
1639
+            session=self.session,
1640
+            config=self.app_config,
1641
+        )
1505 1642
         workspace = workspace_api.create_workspace(
1506 1643
             'test workspace',
1507 1644
             save_now=True
@@ -1514,7 +1651,8 @@ class TestContentApi(DefaultTest):
1514 1651
 
1515 1652
         RoleApi(
1516 1653
             current_user=user1,
1517
-            session=self.session
1654
+            session=self.session,
1655
+            config=self.app_config,
1518 1656
         ).create_one(
1519 1657
             user2,
1520 1658
             workspace,
@@ -1550,7 +1688,8 @@ class TestContentApi(DefaultTest):
1550 1688
         ).get_one(u1id)
1551 1689
         workspace = WorkspaceApi(
1552 1690
             current_user=user1,
1553
-            session=self.session
1691
+            session=self.session,
1692
+            config=self.app_config,
1554 1693
         ).get_one(wid)
1555 1694
 
1556 1695
         content = api.get_one(pcid, ContentType.Any, workspace)
@@ -1588,6 +1727,7 @@ class TestContentApi(DefaultTest):
1588 1727
         workspace = WorkspaceApi(
1589 1728
             current_user=user1,
1590 1729
             session=self.session,
1730
+            config=self.app_config,
1591 1731
         ).get_one(wid)
1592 1732
         u2 = UserApi(
1593 1733
             current_user=None,
@@ -1637,7 +1777,8 @@ class TestContentApi(DefaultTest):
1637 1777
         )
1638 1778
         group_api = GroupApi(
1639 1779
             current_user=None,
1640
-            session=self.session
1780
+            session=self.session,
1781
+            config=self.app_config,
1641 1782
         )
1642 1783
         groups = [group_api.get_one(Group.TIM_USER),
1643 1784
                   group_api.get_one(Group.TIM_MANAGER),
@@ -1650,7 +1791,11 @@ class TestContentApi(DefaultTest):
1650 1791
         )
1651 1792
         u1id = user1.user_id
1652 1793
 
1653
-        workspace_api = WorkspaceApi(current_user=user1, session=self.session)
1794
+        workspace_api = WorkspaceApi(
1795
+            current_user=user1,
1796
+            session=self.session,
1797
+            config=self.app_config,
1798
+        )
1654 1799
         workspace = workspace_api.create_workspace(
1655 1800
             'test workspace',
1656 1801
             save_now=True
@@ -1663,7 +1808,8 @@ class TestContentApi(DefaultTest):
1663 1808
 
1664 1809
         RoleApi(
1665 1810
             current_user=user1,
1666
-            session=self.session
1811
+            session=self.session,
1812
+            config=self.app_config,
1667 1813
         ).create_one(
1668 1814
             user2,
1669 1815
             workspace,
@@ -1698,6 +1844,7 @@ class TestContentApi(DefaultTest):
1698 1844
         workspace = WorkspaceApi(
1699 1845
             current_user=user1,
1700 1846
             session=self.session,
1847
+            config=self.app_config,
1701 1848
         ).get_one(wid)
1702 1849
 
1703 1850
         content = api.get_one(pcid, ContentType.Any, workspace)
@@ -1735,6 +1882,7 @@ class TestContentApi(DefaultTest):
1735 1882
         workspace = WorkspaceApi(
1736 1883
             current_user=user1,
1737 1884
             session=self.session,
1885
+            config=self.app_config,
1738 1886
         ).get_one(wid)
1739 1887
         # show archived is used at the top end of the test
1740 1888
         api = ContentApi(
@@ -1788,6 +1936,7 @@ class TestContentApi(DefaultTest):
1788 1936
         group_api = GroupApi(
1789 1937
             current_user=None,
1790 1938
             session=self.session,
1939
+            config=self.app_config,
1791 1940
         )
1792 1941
         groups = [group_api.get_one(Group.TIM_USER),
1793 1942
                   group_api.get_one(Group.TIM_MANAGER),
@@ -1798,7 +1947,8 @@ class TestContentApi(DefaultTest):
1798 1947
 
1799 1948
         workspace = WorkspaceApi(
1800 1949
             current_user=user,
1801
-            session=self.session
1950
+            session=self.session,
1951
+            config=self.app_config,
1802 1952
         ).create_workspace(
1803 1953
             'test workspace',
1804 1954
             save_now=True
@@ -1808,7 +1958,6 @@ class TestContentApi(DefaultTest):
1808 1958
             current_user=user, 
1809 1959
             session=self.session,
1810 1960
             config=self.app_config,
1811
-
1812 1961
         )
1813 1962
         a = api.create(ContentType.Folder, workspace, None,
1814 1963
                        'this is randomized folder', True)
@@ -1843,6 +1992,7 @@ class TestContentApi(DefaultTest):
1843 1992
         group_api = GroupApi(
1844 1993
             current_user=None,
1845 1994
             session=self.session,
1995
+            config=self.app_config,
1846 1996
         )
1847 1997
         groups = [group_api.get_one(Group.TIM_USER),
1848 1998
                   group_api.get_one(Group.TIM_MANAGER),
@@ -1853,7 +2003,8 @@ class TestContentApi(DefaultTest):
1853 2003
 
1854 2004
         workspace = WorkspaceApi(
1855 2005
             current_user=user,
1856
-            session=self.session
2006
+            session=self.session,
2007
+            config=self.app_config,
1857 2008
         ).create_workspace(
1858 2009
             'test workspace',
1859 2010
             save_now=True,
@@ -1894,7 +2045,11 @@ class TestContentApi(DefaultTest):
1894 2045
             config=self.app_config,
1895 2046
             current_user=None,
1896 2047
         )
1897
-        group_api = GroupApi(current_user=None, session=self.session)
2048
+        group_api = GroupApi(
2049
+            current_user=None,
2050
+            session=self.session,
2051
+            config=self.app_config,
2052
+        )
1898 2053
         groups = [group_api.get_one(Group.TIM_USER),
1899 2054
                   group_api.get_one(Group.TIM_MANAGER),
1900 2055
                   group_api.get_one(Group.TIM_ADMIN)]
@@ -1904,7 +2059,8 @@ class TestContentApi(DefaultTest):
1904 2059
 
1905 2060
         workspace = WorkspaceApi(
1906 2061
             current_user=user,
1907
-            session=self.session
2062
+            session=self.session,
2063
+            config=self.app_config,
1908 2064
         ).create_workspace('test workspace', save_now=True)
1909 2065
 
1910 2066
         api = ContentApi(
@@ -2038,6 +2194,7 @@ class TestContentApiSecurity(DefaultTest):
2038 2194
         bob_workspace = WorkspaceApi(
2039 2195
             current_user=bob,
2040 2196
             session=self.session,
2197
+            config=self.app_config,
2041 2198
         ).create_workspace(
2042 2199
             'bob_workspace',
2043 2200
             save_now=True,
@@ -2045,6 +2202,7 @@ class TestContentApiSecurity(DefaultTest):
2045 2202
         admin_workspace = WorkspaceApi(
2046 2203
             current_user=admin,
2047 2204
             session=self.session,
2205
+            config=self.app_config,
2048 2206
         ).create_workspace(
2049 2207
             'admin_workspace',
2050 2208
             save_now=True,

+ 8 - 2
tracim/tests/library/test_workspace.py View File

@@ -44,6 +44,7 @@ class TestThread(DefaultTest):
44 44
             .filter(User.email == 'admin@admin.admin').one()
45 45
         wapi = WorkspaceApi(
46 46
             session=self.session,
47
+            config=self.app_config,
47 48
             current_user=admin,
48 49
         )
49 50
         w = wapi.create_workspace(label='workspace w', save_now=True)
@@ -57,6 +58,7 @@ class TestThread(DefaultTest):
57 58
         rapi = RoleApi(
58 59
             session=self.session,
59 60
             current_user=admin,
61
+            config=self.app_config,
60 62
         )
61 63
         r = rapi.create_one(u, w, UserRoleInWorkspace.READER, with_notif=True)
62 64
         eq_([r, ], wapi.get_notifiable_roles(workspace=w))
@@ -75,6 +77,7 @@ class TestThread(DefaultTest):
75 77
         wapi = WorkspaceApi(
76 78
             session=self.session,
77 79
             current_user=admin,
80
+            config=self.app_config,
78 81
         )
79 82
         eq_([], wapi.get_all_manageable())
80 83
         # Checks an admin gets all workspaces.
@@ -87,15 +90,18 @@ class TestThread(DefaultTest):
87 90
         gapi = GroupApi(
88 91
             session=self.session,
89 92
             current_user=None,
93
+            config=self.app_config,
90 94
         )
91 95
         u = uapi.create_user('u.s@e.r', [gapi.get_one(Group.TIM_USER)], True)
92 96
         wapi = WorkspaceApi(
93 97
             session=self.session,
94
-            current_user=u
98
+            current_user=u,
99
+            config=self.app_config,
95 100
         )
96 101
         rapi = RoleApi(
97 102
             session=self.session,
98
-            current_user=u
103
+            current_user=u,
104
+            config=self.app_config,
99 105
         )
100 106
         rapi.create_one(u, w4, UserRoleInWorkspace.READER, False)
101 107
         rapi.create_one(u, w3, UserRoleInWorkspace.CONTRIBUTOR, False)

+ 1 - 0
tracim/views/core_api/user_controller.py View File

@@ -40,6 +40,7 @@ class UserController(Controller):
40 40
         wapi = WorkspaceApi(
41 41
             current_user=request.current_user,  # User
42 42
             session=request.dbsession,
43
+            config=app_config,
43 44
         )
44 45
         # TODO - G.M - 22-05-2018 - Refactor this in a more lib way( avoid
45 46
         # try/catch and complex code here).

+ 13 - 9
tracim/views/core_api/workspace_controller.py View File

@@ -1,3 +1,5 @@
1
+import typing
2
+
1 3
 from pyramid.config import Configurator
2 4
 from sqlalchemy.orm.exc import NoResultFound
3 5
 
@@ -30,13 +32,14 @@ class WorkspaceController(Controller):
30 32
     @hapic.output_body(WorkspaceSchema())
31 33
     def workspace(self, context, request: TracimRequest, hapic_data=None):
32 34
         """
33
-        Get workspace information
35
+        Get workspace informations
34 36
         """
35 37
         wid = hapic_data.path['workspace_id']
36 38
         app_config = request.registry.settings['CFG']
37 39
         wapi = WorkspaceApi(
38 40
             current_user=request.current_user,  # User
39 41
             session=request.dbsession,
42
+            config=app_config,
40 43
         )
41 44
         # TODO - G.M - 22-05-2018 - Refactor this in a more lib way( avoid
42 45
         # try/catch and complex code here).
@@ -44,7 +47,7 @@ class WorkspaceController(Controller):
44 47
             workspace = wapi.get_one(wid)
45 48
         except NoResultFound:
46 49
             raise WorkspaceNotFound()
47
-        return WorkspaceInContext(workspace, request.dbsession, app_config)
50
+        return wapi.get_workspace_with_context(workspace)
48 51
 
49 52
     @hapic.with_api_doc()
50 53
     @hapic.input_path(WorkspaceIdPathSchema())
@@ -57,27 +60,28 @@ class WorkspaceController(Controller):
57 60
             context,
58 61
             request: TracimRequest,
59 62
             hapic_data=None
60
-    ) -> None:
63
+    ) -> typing.List[UserRoleWorkspaceInContext]:
64
+        """
65
+        Get Members of this workspace
66
+        """
61 67
         wid = hapic_data.path['workspace_id']
62 68
         app_config = request.registry.settings['CFG']
63 69
         rapi = RoleApi(
64 70
             current_user=request.current_user,
65 71
             session=request.dbsession,
72
+            config=app_config,
66 73
         )
67 74
         wapi = WorkspaceApi(
68 75
             current_user=request.current_user,
69 76
             session=request.dbsession,
77
+            config=app_config,
70 78
         )
71 79
         try:
72 80
             wapi.get_one(wid)
73 81
         except NoResultFound:
74 82
             raise WorkspaceNotFound()
75 83
         return [
76
-            UserRoleWorkspaceInContext(
77
-                user_role,
78
-                request.dbsession,
79
-                app_config
80
-            )
84
+            rapi.get_user_role_workspace_with_context(user_role)
81 85
             for user_role in rapi.get_all_for_workspace(wid)
82 86
         ]
83 87
 
@@ -91,4 +95,4 @@ class WorkspaceController(Controller):
91 95
         configurator.add_route('workspace', '/workspaces/{workspace_id}', request_method='GET')  # nopep8
92 96
         configurator.add_view(self.workspace, route_name='workspace')
93 97
         configurator.add_route('workspace_members', '/workspaces/{workspace_id}/members', request_method='GET')  # nopep8
94
-        configurator.add_view(self.workspaces_members, route_name='workspace_members')
98
+        configurator.add_view(self.workspaces_members, route_name='workspace_members')  # nopep8