/usr/lib/python2.7/dist-packages/liblarch/filters_bank.py is in python-liblarch 2.1.0-4.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 | # -*- coding: utf-8 -*-
# -----------------------------------------------------------------------------
# Liblarch - a library to handle directed acyclic graphs
# Copyright (c) 2011-2012 - Lionel Dricot & Izidor MatuĊĦov
#
# This program is free software: you can redistribute it and/or modify it under
# the terms of the GNU Lesser General Public License as published by the Free
# Software Foundation, either version 3 of the License, or (at your option) any
# later version.
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
# details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# -----------------------------------------------------------------------------
"""
filters_bank stores all of GTG's filters in centralized place
"""
class Filter:
def __init__(self, func, req):
self.func = func
self.dic = {}
self.tree = req
def set_parameters(self, dic):
if dic:
self.dic = dic
def is_displayed(self, node_id):
if self.tree.has_node(node_id):
task = self.tree.get_node(node_id)
else:
return False
if self.dic:
value = self.func(task, parameters=self.dic)
else:
value = self.func(task)
if 'negate' in self.dic and self.dic['negate']:
value = not value
return value
def get_parameters(self, param):
return self.dic.get(param, None)
def is_flat(self):
""" Should be the final list flat """
return self.get_parameters('flat')
class FiltersBank:
"""
Stores filter objects in a centralized place.
"""
def __init__(self,tree):
"""
Create several stock filters:
workview - Tasks that are active, workable, and started
active - Tasks of status Active
closed - Tasks of status closed or dismissed
notag - Tasks with no tags
"""
self.tree = tree
self.available_filters = {}
self.custom_filters = {}
##########################################
def get_filter(self,filter_name):
""" Get the filter object for a given name """
if self.available_filters.has_key(filter_name):
return self.available_filters[filter_name]
elif self.custom_filters.has_key(filter_name):
return self.custom_filters[filter_name]
else:
return None
def has_filter(self,filter_name):
return self.available_filters.has_key(filter_name) \
or self.custom_filters.has_key(filter_name)
def list_filters(self):
""" List, by name, all available filters """
liste = self.available_filters.keys()
liste += self.custom_filters.keys()
return liste
def add_filter(self,filter_name,filter_func,parameters=None):
"""
Adds a filter to the filter bank
Return True if the filter was added
Return False if the filter_name was already in the bank
"""
if filter_name not in self.list_filters():
negate = False
if filter_name.startswith('!'):
negate = True
filter_name = filter_name[1:]
else:
filter_obj = Filter(filter_func,self.tree)
filter_obj.set_parameters(parameters)
self.custom_filters[filter_name] = filter_obj
return True
else:
return False
def remove_filter(self,filter_name):
"""
Remove a filter from the bank.
Only custom filters that were added here can be removed
Return False if the filter was not removed
"""
if not self.available_filters.has_key(filter_name):
if self.custom_filters.has_key(filter_name):
self.custom_filters.pop(filter_name)
return True
else:
return False
else:
return False
|