Gnumed.timelinelib.repositories.dbwrapper

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):
    36          self.db.save_category(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