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
 
364
 
365
         return self._base_query(workspace).filter(Content.content_id==content_id).filter(Content.type==content_type).one()
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
     def get_one_revision(self, revision_id: int = None) -> Content:
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
     def get_one_by_label_and_parent(self, content_label: str, content_parent: Content = None,
381
     def get_one_by_label_and_parent(self, content_label: str, content_parent: Content = None,
378
                                     workspace: Workspace = None) -> Content:
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
         parent_id = content_parent.content_id if content_parent else None
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
         assert parent_id is None or isinstance(parent_id, int) # DYN_REMOVE
404
         assert parent_id is None or isinstance(parent_id, int) # DYN_REMOVE
397
         assert content_type is not None# DYN_REMOVE
405
         assert content_type is not None# DYN_REMOVE
398
         assert isinstance(content_type, str) # DYN_REMOVE
406
         assert isinstance(content_type, str) # DYN_REMOVE
402
         if content_type!=ContentType.Any:
410
         if content_type!=ContentType.Any:
403
             resultset = resultset.filter(Content.type==content_type)
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
         return resultset.all()
425
         return resultset.all()
409
 
426
 

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

56
 
56
 
57
         norm_path = normpath(working_path)
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
         if dirname(norm_path) == "/":
61
         if dirname(norm_path) == "/":
63
             workspace = self.get_workspace_from_path(norm_path, workspace_api)
62
             workspace = self.get_workspace_from_path(norm_path, workspace_api)
64
             return sql_resources.Workspace(path, environ, workspace)
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
         working_path = self.reduce_path(path)
68
         working_path = self.reduce_path(path)
70
 
69
 
129
         elif dirname(path) == "/":
128
         elif dirname(path) == "/":
130
             return self.get_workspace_from_path(
129
             return self.get_workspace_from_path(
131
                 path,
130
                 path,
132
-                WorkspaceApi(UserApi(None).get_one_by_email(environ['http_authenticator.username']))
131
+                WorkspaceApi(environ['user'])
133
             ) is not None
132
             ) is not None
134
 
133
 
135
         api = ContentApi(
134
         api = ContentApi(
136
-            current_user=UserApi(None).get_one_by_email(environ['http_authenticator.username']),
135
+            current_user=environ['user'],
137
             show_archived=True,
136
             show_archived=True,
138
             show_deleted=True
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
         norm_path = normpath(path)
141
         norm_path = normpath(path)
143
 
142
 

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

21
         travailler dans la bdd pour vérifier si utilisateur existe
21
         travailler dans la bdd pour vérifier si utilisateur existe
22
         """
22
         """
23
         try:
23
         try:
24
-            self._api.get_one_by_email(username)
24
+            environ['user'] = self._api.get_one_by_email(username)
25
             return True
25
             return True
26
         except:
26
         except:
27
             return False
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
     def get_one(self, id):
61
     def get_one(self, id):
62
         return self._base_query().filter(Workspace.workspace_id==id).one()
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
     def get_one_for_current_user(self, id):
68
     def get_one_for_current_user(self, id):