|  | @@ -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 |  
 |