Package Gnumed :: Package timelinelib :: Package repositories :: Module dbwrapper
[frames] | no frames]

Source Code for Module Gnumed.timelinelib.repositories.dbwrapper

 1  # Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018  Rickard Lindberg, Roger Lindberg 
 2  # 
 3  # This file is part of Timeline. 
 4  # 
 5  # Timeline is free software: you can redistribute it and/or modify 
 6  # it under the terms of the GNU General Public License as published by 
 7  # the Free Software Foundation, either version 3 of the License, or 
 8  # (at your option) any later version. 
 9  # 
10  # Timeline is distributed in the hope that it will be useful, 
11  # but WITHOUT ANY WARRANTY; without even the implied warranty of 
12  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
13  # GNU General Public License for more details. 
14  # 
15  # You should have received a copy of the GNU General Public License 
16  # along with Timeline.  If not, see <http://www.gnu.org/licenses/>. 
17   
18   
19  from timelinelib.repositories.interface import CategoryRepository 
20  from timelinelib.repositories.interface import EventRepository 
21  from timelinelib.canvas.data import sort_categories 
22   
23   
24 -class DbWrapperCategoryRepository(CategoryRepository):
25
26 - def __init__(self, db):
27 self.db = db
28
29 - def get_all(self):
30 return self.db.get_categories()
31
32 - def get_tree(self, remove):
33 return category_tree(self.get_all(), remove=remove)
34
35 - def save(self, category):
37 38
39 -class DbWrapperEventRepository(EventRepository):
40
41 - def __init__(self, db):
42 self.db = db
43
44 - def save(self, event):
45 self.db.save_event(event)
46 47
48 -def category_tree(category_list, parent=None, remove=None):
49 """ 50 Transform flat list of categories to a tree based on parent attribute. 51 52 The top-level categories have the given parent and each level in the tree 53 is sorted. 54 55 If remove is given then the subtree with remove as root will not be 56 included. 57 58 The tree is represented as a list of tuples, (cat, sub-tree), where cat is 59 the parent category and subtree is the same tree representation of the 60 children. 61 """ 62 children = [child for child in category_list 63 if (child.parent == parent and child != remove)] 64 sorted_children = sort_categories(children) 65 tree = [(x, category_tree(category_list, x, remove)) 66 for x in sorted_children] 67 return tree
68