Browse Source

annotation, few comments, some code refactoring and improvment

Nonolost 8 years ago
parent
commit
b5f433d521

+ 36 - 19
tracim/tracim/lib/content.py View File

@@ -364,35 +364,43 @@ class ContentApi(object):
364 364
 
365 365
         return self._base_query(workspace).filter(Content.content_id==content_id).filter(Content.type==content_type).one()
366 366
 
367
-    # TODO : temporary code for webdav support; make it clean !
368 367
     def get_one_revision(self, revision_id: int = None) -> Content:
368
+        """
369
+        This method allow us to get directly any revision with its id
370
+        :param revision_id: The content's revision's id that we want to return
371
+        :return: An item Content linked with the correct revision
372
+        """
373
+        assert revision_id is not None# DYN_REMOVE
369 374
 
370
-        return DBSession.query(ContentRevisionRO).filter(ContentRevisionRO.revision_id == revision_id).one_or_none()
371
-
372
-    def get_one_revision2(self, revision_id: int = None):
373
-        ro = self.get_one_revision(revision_id)
375
+        revision = DBSession.query(ContentRevisionRO).filter(ContentRevisionRO.revision_id == revision_id)
376
+        
377
+        result = self._base_query(None)
374 378
 
375
-        return DBSession.query(Content).filter(Content.id == ro.content_id).one()
379
+        return result.filter(Content.revision_id == revision_id).one()
376 380
 
377 381
     def get_one_by_label_and_parent(self, content_label: str, content_parent: Content = None,
378 382
                                     workspace: Workspace = None) -> Content:
383
+        """
384
+        This method let us request the database to obtain a Content with its name and parent
385
+        :param content_label: Either the content's label or the content's filename if the label is None
386
+        :param content_parent: The parent's content
387
+        :param workspace: The workspace's content
388
+        :return The corresponding Content
389
+        """
390
+        assert content_label is not None# DYN_REMOVE
379 391
 
380
-        if not content_label:
381
-            return None
382
-
383
-        query = self._base_query(workspace)
392
+        resultset = self._base_query(workspace)
384 393
 
385 394
         parent_id = content_parent.content_id if content_parent else None
386 395
 
387
-        query = query.filter(Content.parent_id == parent_id)
388
-
389
-        res = query.filter(Content.label == content_label).one_or_none()
390
-
391
-        return res if res is not None else query.filter(Content.file_name==content_label).one_or_none()
396
+        resultset = resultset.filter(Content.parent_id == parent_id)
392 397
 
393
-    # TODO : end of the webdav's code
398
+        try:
399
+            return resultset.filter(Content.label == content_label).one()
400
+        except:
401
+            return resultset.filter(Content.file_name == content_label).one()
394 402
 
395
-    def get_all(self, parent_id: int, content_type: str, workspace: Workspace=None) -> Content:
403
+    def get_all(self, parent_id: int, content_type: str, workspace: Workspace=None) -> [Content]:
396 404
         assert parent_id is None or isinstance(parent_id, int) # DYN_REMOVE
397 405
         assert content_type is not None# DYN_REMOVE
398 406
         assert isinstance(content_type, str) # DYN_REMOVE
@@ -402,8 +410,17 @@ class ContentApi(object):
402 410
         if content_type!=ContentType.Any:
403 411
             resultset = resultset.filter(Content.type==content_type)
404 412
 
405
-        if parent_id:
406
-            resultset = resultset.filter(Content.parent_id==parent_id)
413
+        resultset = resultset.filter(Content.parent_id==parent_id)
414
+
415
+        return resultset.all()
416
+
417
+    def get_all_without_exception(self, content_type: str) -> [Content]:
418
+        assert content_type is not None# DYN_REMOVE
419
+
420
+        resultset = self._base_query(None)
421
+
422
+        if content_type != ContentType.Any:
423
+            resultset = resultset.filter(Content.type==content_type)
407 424
 
408 425
         return resultset.all()
409 426
 

+ 5 - 6
tracim/tracim/lib/webdav/sql_dav_provider.py View File

@@ -56,15 +56,14 @@ class Provider(DAVProvider):
56 56
 
57 57
         norm_path = normpath(working_path)
58 58
 
59
-        user = UserApi(None).get_one_by_email(environ['http_authenticator.username'])
60
-        workspace_api = WorkspaceApi(user)
59
+        workspace_api = WorkspaceApi(environ['user'])
61 60
 
62 61
         if dirname(norm_path) == "/":
63 62
             workspace = self.get_workspace_from_path(norm_path, workspace_api)
64 63
             return sql_resources.Workspace(path, environ, workspace)
65 64
 
66 65
 
67
-        api = ContentApi(user, show_archived=True, show_deleted=True)
66
+        api = ContentApi(environ['user'], show_archived=True, show_deleted=True)
68 67
 
69 68
         working_path = self.reduce_path(path)
70 69
 
@@ -129,15 +128,15 @@ class Provider(DAVProvider):
129 128
         elif dirname(path) == "/":
130 129
             return self.get_workspace_from_path(
131 130
                 path,
132
-                WorkspaceApi(UserApi(None).get_one_by_email(environ['http_authenticator.username']))
131
+                WorkspaceApi(environ['user'])
133 132
             ) is not None
134 133
 
135 134
         api = ContentApi(
136
-            current_user=UserApi(None).get_one_by_email(environ['http_authenticator.username']),
135
+            current_user=environ['user'],
137 136
             show_archived=True,
138 137
             show_deleted=True
139 138
         )
140
-        wapi = WorkspaceApi(UserApi(None).get_one_by_email(environ['http_authenticator.username']))
139
+        wapi = WorkspaceApi(environ['user'])
141 140
 
142 141
         norm_path = normpath(path)
143 142
 

+ 1 - 1
tracim/tracim/lib/webdav/sql_domain_controller.py View File

@@ -21,7 +21,7 @@ class SQLDomainController(object):
21 21
         travailler dans la bdd pour vérifier si utilisateur existe
22 22
         """
23 23
         try:
24
-            self._api.get_one_by_email(username)
24
+            environ['user'] = self._api.get_one_by_email(username)
25 25
             return True
26 26
         except:
27 27
             return False

File diff suppressed because it is too large
+ 318 - 260
tracim/tracim/lib/webdav/sql_resources.py


+ 2 - 2
tracim/tracim/lib/workspace.py View File

@@ -61,8 +61,8 @@ class WorkspaceApi(object):
61 61
     def get_one(self, id):
62 62
         return self._base_query().filter(Workspace.workspace_id==id).one()
63 63
 
64
-    def get_one_by_label(self, label: str):
65
-        return self._base_query().filter(Workspace.label==label).one()
64
+    def get_one_by_label(self, label: str) -> Workspace:
65
+        return self._base_query().filter(Workspace.label == label).one()
66 66
 
67 67
     """
68 68
     def get_one_for_current_user(self, id):