Added a quick way to get a list of all collections.
This commit is contained in:
		
							parent
							
								
									02ea97f6d9
								
							
						
					
					
						commit
						294afba2ac
					
				@ -120,6 +120,10 @@ class RestApp(object):
 | 
				
			|||||||
        if hasReturnValue:
 | 
					        if hasReturnValue:
 | 
				
			||||||
            return ret
 | 
					            return ret
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def list_collections(self):
 | 
				
			||||||
 | 
					        """Returns an array of valid collection names in our self.data_path."""
 | 
				
			||||||
 | 
					        return [x for x in os.listdir(self.data_root) if os.path.exists(os.path.join(self.data_root, x, 'collection.anki2'))]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def _checkRequest(self, req):
 | 
					    def _checkRequest(self, req):
 | 
				
			||||||
        """Raises an exception if the request isn't allowed or valid for some reason."""
 | 
					        """Raises an exception if the request isn't allowed or valid for some reason."""
 | 
				
			||||||
        if self.allowed_hosts != '*':
 | 
					        if self.allowed_hosts != '*':
 | 
				
			||||||
@ -234,6 +238,9 @@ class RestApp(object):
 | 
				
			|||||||
        # make sure the request is valid
 | 
					        # make sure the request is valid
 | 
				
			||||||
        self._checkRequest(req)
 | 
					        self._checkRequest(req)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if req.path == '/list_collections':
 | 
				
			||||||
 | 
					            return Response(json.dumps(self.list_collections()), content_type='application/json')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # parse the path
 | 
					        # parse the path
 | 
				
			||||||
        type, name, ids = self._parsePath(req.path)
 | 
					        type, name, ids = self._parsePath(req.path)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -34,6 +34,15 @@ class RestAppTest(unittest.TestCase):
 | 
				
			|||||||
        self.rest_app = None
 | 
					        self.rest_app = None
 | 
				
			||||||
        shutil.rmtree(self.temp_dir)
 | 
					        shutil.rmtree(self.temp_dir)
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
 | 
					    def test_list_collections(self):
 | 
				
			||||||
 | 
					        os.mkdir(os.path.join(self.temp_dir, 'test1'))
 | 
				
			||||||
 | 
					        os.mkdir(os.path.join(self.temp_dir, 'test2'))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        with open(os.path.join(self.temp_dir, 'test1', 'collection.anki2'), 'wt') as fd:
 | 
				
			||||||
 | 
					            fd.write('Testing!')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        self.assertEqual(self.rest_app.list_collections(), ['test1'])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_parsePath(self):
 | 
					    def test_parsePath(self):
 | 
				
			||||||
        tests = [
 | 
					        tests = [
 | 
				
			||||||
            ('collection/user', ('collection', 'index', ['user'])),
 | 
					            ('collection/user', ('collection', 'index', ['user'])),
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user