2008-02-22 Raphael Ackermann <raphael.ackermann@gmail.com>
* src/FilterEditor/_EditRule.py * src/Filters/Rules/_HasAttributeBase.py * src/Filters/Rules/Family/_MatchesFilter.py * src/Filters/Rules/Event/_MatchesFilter.py * src/Filters/Rules/Event/_MatchesSourceFilter.py * src/Filters/Rules/Event/_HasType.py * src/Filters/Rules/Event/_MatchesPersonFilter.py * src/Filters/Rules/_HasTextMatchingRegexpOf.py * src/Filters/Rules/_HasReferenceCountBase.py * src/Filters/Rules/_HasNoteSubstrBase.py * src/Filters/Rules/__init__.py * src/Filters/Rules/_HasGrampsId.py * src/Filters/Rules/_RegExpIdBase.py * src/Filters/Rules/_IsPrivate.py * src/Filters/Rules/_Rule.py * src/Filters/Rules/_HasMarkerBase.py * src/Filters/Rules/_HasEventBase.py * src/Filters/Rules/Note/_MatchesFilter.py * src/Filters/Rules/Person/_MatchesFilter.py * src/Filters/Rules/Person/_MatchesEventFilter.py * src/Filters/Rules/MediaObject/_MatchesFilter.py * src/Filters/Rules/_HasTextMatchingSubstringOf.py * src/Filters/Rules/_Everything.py * src/Filters/Rules/_MatchesFilterBase.py * src/Filters/Rules/_HasNoteRegexBase.py * src/DateHandler/_DateUtils.py pylint and doc fixes. svn: r10094
This commit is contained in:
parent
19dd787311
commit
f3db8c0e75
30
ChangeLog
30
ChangeLog
@ -1,3 +1,33 @@
|
||||
2008-02-22 Raphael Ackermann <raphael.ackermann@gmail.com>
|
||||
* src/FilterEditor/_EditRule.py
|
||||
* src/Filters/Rules/_HasAttributeBase.py
|
||||
* src/Filters/Rules/Family/_MatchesFilter.py
|
||||
* src/Filters/Rules/Event/_MatchesFilter.py
|
||||
* src/Filters/Rules/Event/_MatchesSourceFilter.py
|
||||
* src/Filters/Rules/Event/_HasType.py
|
||||
* src/Filters/Rules/Event/_MatchesPersonFilter.py
|
||||
* src/Filters/Rules/_HasTextMatchingRegexpOf.py
|
||||
* src/Filters/Rules/_HasReferenceCountBase.py
|
||||
* src/Filters/Rules/_HasNoteSubstrBase.py
|
||||
* src/Filters/Rules/__init__.py
|
||||
* src/Filters/Rules/_HasGrampsId.py
|
||||
* src/Filters/Rules/_RegExpIdBase.py
|
||||
* src/Filters/Rules/_IsPrivate.py
|
||||
* src/Filters/Rules/_Rule.py
|
||||
* src/Filters/Rules/_HasMarkerBase.py
|
||||
* src/Filters/Rules/_HasEventBase.py
|
||||
* src/Filters/Rules/Note/_MatchesFilter.py
|
||||
* src/Filters/Rules/Person/_MatchesFilter.py
|
||||
* src/Filters/Rules/Person/_MatchesEventFilter.py
|
||||
* src/Filters/Rules/MediaObject/_MatchesFilter.py
|
||||
* src/Filters/Rules/_HasTextMatchingSubstringOf.py
|
||||
* src/Filters/Rules/_Everything.py
|
||||
* src/Filters/Rules/_MatchesFilterBase.py
|
||||
* src/Filters/Rules/_HasNoteRegexBase.py
|
||||
* src/DateHandler/_DateUtils.py
|
||||
pylint and doc fixes.
|
||||
|
||||
|
||||
2008-02-20 Frederik De Richter <frederik.de.richter@pandora.be>
|
||||
* src/Merge/_MergePerson.py
|
||||
* src/Merge/_MergeSource.py
|
||||
|
@ -38,7 +38,7 @@ from DateHandler import LANG_TO_DISPLAY, LANG, parser, displayer
|
||||
#--------------------------------------------------------------
|
||||
def get_date_formats():
|
||||
"""
|
||||
Returns the lists supported formats for date parsers and displayers
|
||||
Return the lists supported formats for date parsers and displayers.
|
||||
"""
|
||||
try:
|
||||
return LANG_TO_DISPLAY[LANG].formats
|
||||
@ -53,7 +53,7 @@ def set_format(value):
|
||||
|
||||
def set_date(date_base, text) :
|
||||
"""
|
||||
Sets the date of the DateBase instance.
|
||||
Set the date of the DateBase instance.
|
||||
|
||||
The date is parsed into a Date instance.
|
||||
|
||||
@ -61,23 +61,25 @@ def set_date(date_base, text) :
|
||||
@type date_base: DateBase
|
||||
@param text: The text to use for the text string in date
|
||||
@type text: str
|
||||
|
||||
"""
|
||||
parser.set_date(date_base.get_date_object(),text)
|
||||
parser.set_date(date_base.get_date_object(), text)
|
||||
|
||||
def get_date(date_base) :
|
||||
"""
|
||||
Returns a string representation of the date of the DateBase instance.
|
||||
Return a string representation of the date of the DateBase instance.
|
||||
|
||||
This representation is based off the default date display format
|
||||
determined by the locale's DateDisplay instance.
|
||||
@return: Returns a string representing the DateBase date
|
||||
@rtype: str
|
||||
|
||||
"""
|
||||
return displayer.display(date_base.get_date_object())
|
||||
|
||||
def get_quote_date(date_base):
|
||||
"""
|
||||
Returns a string representation of the date of the DateBase instance.
|
||||
Return a string representation of the date of the DateBase instance.
|
||||
|
||||
This representation is based off the default date display format
|
||||
determined by the locale's DateDisplay instance. The date is
|
||||
@ -85,5 +87,6 @@ def get_quote_date(date_base):
|
||||
|
||||
@return: Returns a string representing the DateBase date
|
||||
@rtype: str
|
||||
|
||||
"""
|
||||
return displayer.quote_display(date_base.get_date_object())
|
||||
|
@ -67,8 +67,8 @@ import ManagedWindow
|
||||
# Sorting function for the filter rules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
def by_rule_name(f,s):
|
||||
return cmp(f.name,s.name)
|
||||
def by_rule_name(f, s):
|
||||
return cmp(f.name, s.name)
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@ -93,22 +93,25 @@ _name2typeclass = {
|
||||
#-------------------------------------------------------------------------
|
||||
class MyBoolean(gtk.CheckButton):
|
||||
|
||||
def __init__(self,label=None):
|
||||
gtk.CheckButton.__init__(self,label)
|
||||
def __init__(self, label=None):
|
||||
gtk.CheckButton.__init__(self, label)
|
||||
self.show()
|
||||
|
||||
def get_text(self):
|
||||
"""
|
||||
This method returns the text to save. It should be the same
|
||||
no matter the present locale (English or numeric types).
|
||||
Return the text to save.
|
||||
|
||||
It should be the same no matter the present locale (English or numeric
|
||||
types).
|
||||
This class sets this to get_display_text, but when localization
|
||||
is an issue (events/attr/etc types) then it has to be overridden.
|
||||
|
||||
"""
|
||||
return str(int(self.get_active()))
|
||||
|
||||
def set_text(self,val):
|
||||
def set_text(self, val):
|
||||
"""
|
||||
This method sets the selector state to display the passed value.
|
||||
Set the selector state to display the passed value.
|
||||
"""
|
||||
is_active = bool(int(val))
|
||||
self.set_active(is_active)
|
||||
@ -120,15 +123,15 @@ class MyBoolean(gtk.CheckButton):
|
||||
#-------------------------------------------------------------------------
|
||||
class MyInteger(gtk.SpinButton):
|
||||
|
||||
def __init__(self,min,max):
|
||||
def __init__(self, min, max):
|
||||
gtk.SpinButton.__init__(self)
|
||||
self.set_adjustment(gtk.Adjustment(min,min,max,1))
|
||||
self.set_adjustment(gtk.Adjustment(min, min, max, 1))
|
||||
self.show()
|
||||
|
||||
def get_text(self):
|
||||
return str(self.get_value_as_int())
|
||||
|
||||
def set_text(self,val):
|
||||
def set_text(self, val):
|
||||
self.set_value(int(val))
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
@ -137,20 +140,23 @@ class MyInteger(gtk.SpinButton):
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
class MyFilters(gtk.ComboBox):
|
||||
"""Class to present a combobox of selectable filters
|
||||
"""
|
||||
Class to present a combobox of selectable filters.
|
||||
"""
|
||||
def __init__(self, filters, filter_name=None):
|
||||
""" Construct the combobox from the entries of
|
||||
the filters list.
|
||||
filter_name is name of calling filter
|
||||
If filter_name is given, it will be excluded from the dropdown box
|
||||
"""
|
||||
Construct the combobox from the entries of the filters list.
|
||||
|
||||
Filter_name is name of calling filter.
|
||||
If filter_name is given, it will be excluded from the dropdown box.
|
||||
|
||||
"""
|
||||
gtk.ComboBox.__init__(self)
|
||||
store = gtk.ListStore(gobject.TYPE_STRING)
|
||||
self.set_model(store)
|
||||
cell = gtk.CellRendererText()
|
||||
self.pack_start(cell,True)
|
||||
self.add_attribute(cell,'text',0)
|
||||
self.pack_start(cell, True)
|
||||
self.add_attribute(cell, 'text', 0)
|
||||
#remove own name from the list if given.
|
||||
self.flist = [ f.get_name() for f in filters if \
|
||||
(filter_name is None or f.get_name() != filter_name)]
|
||||
@ -167,7 +173,7 @@ class MyFilters(gtk.ComboBox):
|
||||
return ""
|
||||
return self.flist[active]
|
||||
|
||||
def set_text(self,val):
|
||||
def set_text(self, val):
|
||||
if val in self.flist:
|
||||
self.set_active(self.flist.index(val))
|
||||
|
||||
@ -183,8 +189,8 @@ class MyLesserEqualGreater(gtk.ComboBox):
|
||||
store = gtk.ListStore(gobject.TYPE_STRING)
|
||||
self.set_model(store)
|
||||
cell = gtk.CellRendererText()
|
||||
self.pack_start(cell,True)
|
||||
self.add_attribute(cell,'text',0)
|
||||
self.pack_start(cell, True)
|
||||
self.add_attribute(cell, 'text', 0)
|
||||
self.clist = [_('lesser than'), _('equal to'), _('greater than')]
|
||||
for name in self.clist:
|
||||
store.append(row=[name])
|
||||
@ -197,7 +203,7 @@ class MyLesserEqualGreater(gtk.ComboBox):
|
||||
return _('equal to')
|
||||
return self.clist[active]
|
||||
|
||||
def set_text(self,val):
|
||||
def set_text(self, val):
|
||||
if val in self.clist:
|
||||
self.set_active(self.clist.index(val))
|
||||
else:
|
||||
@ -216,8 +222,8 @@ class MySource(gtk.ComboBox):
|
||||
store = gtk.ListStore(gobject.TYPE_STRING)
|
||||
self.set_model(store)
|
||||
cell = gtk.CellRendererText()
|
||||
self.pack_start(cell,True)
|
||||
self.add_attribute(cell,'text',0)
|
||||
self.pack_start(cell, True)
|
||||
self.add_attribute(cell, 'text', 0)
|
||||
|
||||
self.slist = []
|
||||
for src_handle in self.db.get_source_handles(sort_handles=True):
|
||||
@ -226,7 +232,7 @@ class MySource(gtk.ComboBox):
|
||||
title = src.get_title()
|
||||
if len(title) > 44:
|
||||
title = title[:40] + "..."
|
||||
store.append(row=["%s [%s]" % (title,src.get_gramps_id())])
|
||||
store.append(row=["%s [%s]" % (title, src.get_gramps_id())])
|
||||
|
||||
self.set_active(0)
|
||||
self.show()
|
||||
@ -237,7 +243,7 @@ class MySource(gtk.ComboBox):
|
||||
return ""
|
||||
return self.slist[active]
|
||||
|
||||
def set_text(self,val):
|
||||
def set_text(self, val):
|
||||
if val in self.slist:
|
||||
self.set_active(self.slist.index(val))
|
||||
|
||||
@ -249,10 +255,10 @@ class MySource(gtk.ComboBox):
|
||||
#-------------------------------------------------------------------------
|
||||
class MyPlaces(gtk.Entry):
|
||||
|
||||
def __init__(self,places):
|
||||
def __init__(self, places):
|
||||
gtk.Entry.__init__(self)
|
||||
|
||||
AutoComp.fill_entry(self,places)
|
||||
AutoComp.fill_entry(self, places)
|
||||
self.show()
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
@ -274,7 +280,7 @@ class MyID(gtk.HBox):
|
||||
}
|
||||
|
||||
def __init__(self, dbstate, uistate, track, namespace='Person'):
|
||||
gtk.HBox.__init__(self,False,6)
|
||||
gtk.HBox.__init__(self, False, 6)
|
||||
self.dbstate = dbstate
|
||||
self.db = dbstate.db
|
||||
self.uistate = uistate
|
||||
@ -285,18 +291,18 @@ class MyID(gtk.HBox):
|
||||
self.entry.show()
|
||||
self.button = gtk.Button()
|
||||
self.button.set_label(_('Select...'))
|
||||
self.button.connect('clicked',self.button_press)
|
||||
self.button.connect('clicked', self.button_press)
|
||||
self.button.show()
|
||||
self.pack_start(self.entry)
|
||||
self.add(self.button)
|
||||
self.tooltips = gtk.Tooltips()
|
||||
self.tooltips.set_tip(self.button,_('Select %s from a list')
|
||||
self.tooltips.set_tip(self.button, _('Select %s from a list')
|
||||
% self.obj_name[namespace])
|
||||
self.tooltips.enable()
|
||||
self.show()
|
||||
self.set_text('')
|
||||
|
||||
def button_press(self,obj):
|
||||
def button_press(self, obj):
|
||||
obj_class = self.namespace
|
||||
selector = selector_factory(obj_class)
|
||||
inst = selector(self.dbstate, self.uistate, self.track)
|
||||
@ -309,7 +315,7 @@ class MyID(gtk.HBox):
|
||||
def get_text(self):
|
||||
return unicode(self.entry.get_text())
|
||||
|
||||
def name_from_gramps_id(self,gramps_id):
|
||||
def name_from_gramps_id(self, gramps_id):
|
||||
if self.namespace == 'Person':
|
||||
person = self.db.get_person_from_gramps_id(gramps_id)
|
||||
name = _nd.display_name(person.get_primary_name())
|
||||
@ -336,12 +342,12 @@ class MyID(gtk.HBox):
|
||||
name = note.get()
|
||||
return name
|
||||
|
||||
def set_text(self,val):
|
||||
def set_text(self, val):
|
||||
try:
|
||||
name = self.name_from_gramps_id(val)
|
||||
self.tooltips.set_tip(self.entry,name)
|
||||
self.tooltips.set_tip(self.entry, name)
|
||||
except AttributeError:
|
||||
self.tooltips.set_tip(self.entry,_('Not a valid ID'))
|
||||
self.tooltips.set_tip(self.entry, _('Not a valid ID'))
|
||||
self.entry.set_text(val)
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
@ -362,10 +368,10 @@ class MySelect(gtk.ComboBoxEntry):
|
||||
def get_text(self):
|
||||
return self.type_class(self.sel.get_values()).xml_str()
|
||||
|
||||
def set_text(self,val):
|
||||
def set_text(self, val):
|
||||
tc = self.type_class()
|
||||
tc.set_from_xml_str(val)
|
||||
self.sel.set_values((tc.val,tc.string))
|
||||
self.sel.set_values((tc.val, tc.string))
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@ -437,27 +443,27 @@ class EditRule(ManagedWindow.ManagedWindow):
|
||||
arglist = class_obj.labels
|
||||
vallist = []
|
||||
tlist = []
|
||||
self.page.append((class_obj,vallist,tlist))
|
||||
self.page.append((class_obj, vallist, tlist))
|
||||
pos = 0
|
||||
l2 = gtk.Label(class_obj.name)
|
||||
l2.set_alignment(0,0.5)
|
||||
l2.set_alignment(0, 0.5)
|
||||
l2.show()
|
||||
c = gtk.TreeView()
|
||||
c.set_data('d',pos)
|
||||
c.set_data('d', pos)
|
||||
c.show()
|
||||
the_map[class_obj] = c
|
||||
# Only add a table with parameters if there are any parameters
|
||||
if arglist:
|
||||
table = gtk.Table(3,len(arglist))
|
||||
table = gtk.Table(3, len(arglist))
|
||||
else:
|
||||
table = gtk.Table(1,1)
|
||||
table = gtk.Table(1, 1)
|
||||
table.set_border_width(6)
|
||||
table.set_col_spacings(6)
|
||||
table.set_row_spacings(6)
|
||||
table.show()
|
||||
for v in arglist:
|
||||
l = gtk.Label(v)
|
||||
l.set_alignment(1,0.5)
|
||||
l.set_alignment(1, 0.5)
|
||||
l.show()
|
||||
if v == _('Place:'):
|
||||
t = MyPlaces([])
|
||||
@ -466,9 +472,10 @@ class EditRule(ManagedWindow.ManagedWindow):
|
||||
elif v == _('Reference count must be:'):
|
||||
t = MyLesserEqualGreater()
|
||||
elif v == _('Number of generations:'):
|
||||
t = MyInteger(1,32)
|
||||
t = MyInteger(1, 32)
|
||||
elif v == _('ID:'):
|
||||
t = MyID(self.dbstate,self.uistate,self.track,self.namespace)
|
||||
t = MyID(self.dbstate, self.uistate, self.track,
|
||||
self.namespace)
|
||||
elif v == _('Source ID:'):
|
||||
t = MySource(self.db)
|
||||
elif v == _('Filter name:'):
|
||||
@ -490,20 +497,22 @@ class EditRule(ManagedWindow.ManagedWindow):
|
||||
elif v == _('Regular-Expression matching:'):
|
||||
t = MyBoolean(_('Use regular expression'))
|
||||
elif v == _('Include Family events:'):
|
||||
t = MyBoolean(_('Also family events where person is wife/husband'))
|
||||
t = MyBoolean(_('Also family events where person is '
|
||||
'wife/husband'))
|
||||
else:
|
||||
t = MyEntry()
|
||||
tlist.append(t)
|
||||
table.attach(l,1,2,pos,pos+1,gtk.FILL,0,5,5)
|
||||
table.attach(t,2,3,pos,pos+1,gtk.EXPAND|gtk.FILL,0,5,5)
|
||||
table.attach(l, 1, 2, pos, pos+1, gtk.FILL, 0, 5, 5)
|
||||
table.attach(t, 2, 3, pos, pos+1, gtk.EXPAND|gtk.FILL, 0, 5, 5)
|
||||
pos = pos + 1
|
||||
self.notebook.append_page(table,gtk.Label(class_obj.name))
|
||||
self.notebook.append_page(table, gtk.Label(class_obj.name))
|
||||
self.class2page[class_obj] = self.page_num
|
||||
self.page_num = self.page_num + 1
|
||||
self.page_num = 0
|
||||
self.store = gtk.TreeStore(gobject.TYPE_STRING,gobject.TYPE_PYOBJECT)
|
||||
self.store = gtk.TreeStore(gobject.TYPE_STRING, gobject.TYPE_PYOBJECT)
|
||||
self.selection = self.rname.get_selection()
|
||||
col = gtk.TreeViewColumn(_('Rule Name'),gtk.CellRendererText(),text=0)
|
||||
col = gtk.TreeViewColumn(_('Rule Name'), gtk.CellRendererText(),
|
||||
text=0)
|
||||
self.rname.append_column(col)
|
||||
self.rname.set_model(self.store)
|
||||
|
||||
@ -533,16 +542,16 @@ class EditRule(ManagedWindow.ManagedWindow):
|
||||
catlist.sort()
|
||||
|
||||
for category in catlist:
|
||||
top_node[category] = self.store.insert_after(None,last_top)
|
||||
top_node[category] = self.store.insert_after(None, last_top)
|
||||
top_level[category] = []
|
||||
last_top = top_node[category]
|
||||
self.store.set(last_top,0,category,1,None)
|
||||
self.store.set(last_top, 0, category, 1, None)
|
||||
|
||||
for class_obj in keys:
|
||||
category = class_obj.category
|
||||
top_level[category].append(class_obj.name)
|
||||
node = self.store.insert_after(top_node[category],prev)
|
||||
self.store.set(node,0,class_obj.name,1,class_obj)
|
||||
node = self.store.insert_after(top_node[category], prev)
|
||||
self.store.set(node, 0, class_obj.name, 1, class_obj)
|
||||
|
||||
#
|
||||
# if this is an edit rule, save the node
|
||||
@ -554,53 +563,57 @@ class EditRule(ManagedWindow.ManagedWindow):
|
||||
page = self.class2page[self.active_rule.__class__]
|
||||
self.notebook.set_current_page(page)
|
||||
self.display_values(self.active_rule.__class__)
|
||||
(class_obj,vallist,tlist) = self.page[page]
|
||||
(class_obj, vallist, tlist) = self.page[page]
|
||||
r = self.active_rule.values()
|
||||
for i in range(0,len(tlist)):
|
||||
for i in range(0, len(tlist)):
|
||||
tlist[i].set_text(r[i])
|
||||
|
||||
self.selection.connect('changed', self.on_node_selected)
|
||||
self.get_widget('ok').connect('clicked',self.rule_ok)
|
||||
self.get_widget('ok').connect('clicked', self.rule_ok)
|
||||
self.get_widget('cancel').connect('clicked', self.close_window)
|
||||
self.get_widget('help').connect('clicked',self.on_help_clicked)
|
||||
self.get_widget('help').connect('clicked', self.on_help_clicked)
|
||||
|
||||
self.show()
|
||||
|
||||
def on_help_clicked(self,obj):
|
||||
"""Display the relevant portion of GRAMPS manual"""
|
||||
def on_help_clicked(self, obj):
|
||||
"""
|
||||
Display the relevant portion of GRAMPS manual.
|
||||
"""
|
||||
GrampsDisplay.help('append-filtref')
|
||||
|
||||
def close_window(self,obj):
|
||||
def close_window(self, obj):
|
||||
self.close()
|
||||
|
||||
def on_node_selected(self,obj):
|
||||
"""Updates the informational display on the right hand side of
|
||||
the dialog box with the description of the selected report"""
|
||||
def on_node_selected(self, obj):
|
||||
"""
|
||||
Update the informational display on the right hand side of the dialog
|
||||
box with the description of the selected report.
|
||||
"""
|
||||
|
||||
store,node = self.selection.get_selected()
|
||||
store, node = self.selection.get_selected()
|
||||
if node:
|
||||
try:
|
||||
class_obj = store.get_value(node,1)
|
||||
class_obj = store.get_value(node, 1)
|
||||
self.display_values(class_obj)
|
||||
except:
|
||||
self.valuebox.set_sensitive(0)
|
||||
self.rule_name.set_text(_('No rule selected'))
|
||||
self.get_widget('description').set_text('')
|
||||
|
||||
def display_values(self,class_obj):
|
||||
def display_values(self, class_obj):
|
||||
page = self.class2page[class_obj]
|
||||
self.notebook.set_current_page(page)
|
||||
self.valuebox.set_sensitive(1)
|
||||
self.rule_name.set_text(class_obj.name)
|
||||
self.get_widget('description').set_text(class_obj.description)
|
||||
|
||||
def rule_ok(self,obj):
|
||||
def rule_ok(self, obj):
|
||||
if self.rule_name.get_text() == _('No rule selected'):
|
||||
return
|
||||
|
||||
try:
|
||||
page = self.notebook.get_current_page()
|
||||
(class_obj,vallist,tlist) = self.page[page]
|
||||
(class_obj, vallist, tlist) = self.page[page]
|
||||
value_list = []
|
||||
for selector_class in tlist:
|
||||
value_list.append(unicode(selector_class.get_text()))
|
||||
|
@ -33,7 +33,7 @@ from gettext import gettext as _
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from gen.lib import EventType
|
||||
from Filters.Rules._Rule import Rule
|
||||
from Filters.Rules import Rule
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@ -41,7 +41,7 @@ from Filters.Rules._Rule import Rule
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
class HasType(Rule):
|
||||
"""Rule that checks for an event of a particular type"""
|
||||
"""Rule that checks for an event of a particular type."""
|
||||
|
||||
labels = [ _('Event type:') ]
|
||||
name = _('Event with the particular type')
|
||||
|
@ -32,7 +32,7 @@ from gettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from Filters.Rules._MatchesFilterBase import MatchesFilterBase
|
||||
from Filters.Rules import MatchesFilterBase
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@ -40,7 +40,7 @@ from Filters.Rules._MatchesFilterBase import MatchesFilterBase
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
class MatchesFilter(MatchesFilterBase):
|
||||
"""Rule that checks against another filter"""
|
||||
"""Rule that checks against another filter."""
|
||||
|
||||
name = _('Events matching the <filter>')
|
||||
description = _("Matches events matched by the specified filter name")
|
||||
|
@ -32,7 +32,7 @@ from gettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from Filters.Rules._MatchesFilterBase import MatchesFilterBase
|
||||
from Filters.Rules import MatchesFilterBase
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@ -45,6 +45,7 @@ class MatchesPersonFilter(MatchesFilterBase):
|
||||
|
||||
This is a base rule for subclassing by specific objects.
|
||||
Subclasses need to define the namespace class attribute.
|
||||
|
||||
"""
|
||||
|
||||
labels = [_('Person filter name:'), _('Include Family events:')]
|
||||
@ -52,10 +53,11 @@ class MatchesPersonFilter(MatchesFilterBase):
|
||||
description = _("Matches events of persons matched by the specified "
|
||||
"person filter name")
|
||||
category = _('General filters')
|
||||
|
||||
# we want to have this filter show person filters
|
||||
namespace = 'Person'
|
||||
|
||||
def prepare(self,db):
|
||||
def prepare(self, db):
|
||||
MatchesFilterBase.prepare(self, db)
|
||||
|
||||
try :
|
||||
@ -67,7 +69,7 @@ class MatchesPersonFilter(MatchesFilterBase):
|
||||
self.MPF_famevents = False
|
||||
|
||||
|
||||
def apply(self,db,event):
|
||||
def apply(self, db, event):
|
||||
filt = self.find_filter()
|
||||
if filt:
|
||||
for (classname, handle) in db.find_backlink_handles(
|
||||
|
@ -32,7 +32,7 @@ from gettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from Filters.Rules._MatchesFilterBase import MatchesFilterBase
|
||||
from Filters.Rules import MatchesFilterBase
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@ -49,6 +49,7 @@ class MatchesSourceFilter(MatchesFilterBase):
|
||||
description = _("Matches events with sources that match the "
|
||||
"specified source filter name")
|
||||
category = _('General filters')
|
||||
|
||||
# we want to have this filter show source filters
|
||||
namespace = 'Source'
|
||||
|
||||
@ -64,5 +65,5 @@ class MatchesSourceFilter(MatchesFilterBase):
|
||||
for sourcehandle in sourcelist:
|
||||
#check if source in source filter
|
||||
if self.MSF_filt.check(db, sourcehandle):
|
||||
return True
|
||||
return True
|
||||
return False
|
||||
|
@ -32,7 +32,7 @@ from gettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from Filters.Rules._MatchesFilterBase import MatchesFilterBase
|
||||
from Filters.Rules import MatchesFilterBase
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@ -40,7 +40,7 @@ from Filters.Rules._MatchesFilterBase import MatchesFilterBase
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
class MatchesFilter(MatchesFilterBase):
|
||||
"""Rule that checks against another filter"""
|
||||
"""Rule that checks against another filter."""
|
||||
|
||||
name = _('Families matching the <filter>')
|
||||
description = _("Matches families matched by the specified filter name")
|
||||
|
@ -32,7 +32,7 @@ from gettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from Filters.Rules._MatchesFilterBase import MatchesFilterBase
|
||||
from Filters.Rules import MatchesFilterBase
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@ -40,7 +40,7 @@ from Filters.Rules._MatchesFilterBase import MatchesFilterBase
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
class MatchesFilter(MatchesFilterBase):
|
||||
"""Rule that checks against another filter"""
|
||||
"""Rule that checks against another filter."""
|
||||
|
||||
name = _('Media objects matching the <filter>')
|
||||
description = _("Matches media objects matched by the "
|
||||
|
@ -32,7 +32,7 @@ from gettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from Filters.Rules._MatchesFilterBase import MatchesFilterBase
|
||||
from Filters.Rules import MatchesFilterBase
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@ -40,7 +40,7 @@ from Filters.Rules._MatchesFilterBase import MatchesFilterBase
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
class MatchesFilter(MatchesFilterBase):
|
||||
"""Rule that checks against another filter"""
|
||||
"""Rule that checks against another filter."""
|
||||
|
||||
name = _('Notes matching the <filter>')
|
||||
description = _("Matches notes matched "
|
||||
|
@ -32,7 +32,7 @@ from gettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from Filters.Rules._MatchesFilterBase import MatchesFilterBase
|
||||
from Filters.Rules import MatchesFilterBase
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@ -45,6 +45,7 @@ class MatchesEventFilter(MatchesFilterBase):
|
||||
|
||||
This is a base rule for subclassing by specific objects.
|
||||
Subclasses need to define the namespace class attribute.
|
||||
|
||||
"""
|
||||
|
||||
labels = [_('Event filter name:')]
|
||||
@ -52,6 +53,7 @@ class MatchesEventFilter(MatchesFilterBase):
|
||||
description = _("Matches persons who have events that match a certain"
|
||||
" event filter")
|
||||
category = _('General filters')
|
||||
|
||||
# we want to have this filter show event filters
|
||||
namespace = 'Event'
|
||||
|
||||
@ -67,5 +69,5 @@ class MatchesEventFilter(MatchesFilterBase):
|
||||
for eventhandle in eventlist:
|
||||
#check if event in event filter
|
||||
if self.MEF_filt.check(db, eventhandle):
|
||||
return True
|
||||
return True
|
||||
return False
|
||||
|
@ -32,7 +32,7 @@ from gettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from Filters.Rules._MatchesFilterBase import MatchesFilterBase
|
||||
from Filters.Rules import MatchesFilterBase
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@ -40,7 +40,7 @@ from Filters.Rules._MatchesFilterBase import MatchesFilterBase
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
class MatchesFilter(MatchesFilterBase):
|
||||
"""Rule that checks against another filter"""
|
||||
"""Rule that checks against another filter."""
|
||||
|
||||
name = _('People matching the <filter>')
|
||||
description = _("Matches people matched by the specified filter name")
|
||||
|
@ -32,7 +32,7 @@ from gettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from _Rule import Rule
|
||||
from Filters.Rules import Rule
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@ -40,7 +40,7 @@ from _Rule import Rule
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
class Everything(Rule):
|
||||
"""Matches Everyone"""
|
||||
"""Match Everyone."""
|
||||
|
||||
name = _('Every object')
|
||||
category = _('General filters')
|
||||
@ -49,5 +49,5 @@ class Everything(Rule):
|
||||
def is_empty(self):
|
||||
return True
|
||||
|
||||
def apply(self,db,obj):
|
||||
def apply(self, db, obj):
|
||||
return True
|
||||
|
@ -33,7 +33,7 @@ from gettext import gettext as _
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from gen.lib import AttributeType
|
||||
from Filters.Rules._Rule import Rule
|
||||
from Filters.Rules import Rule
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@ -41,7 +41,9 @@ from Filters.Rules._Rule import Rule
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
class HasAttributeBase(Rule):
|
||||
"""Rule that checks for an object with a particular attribute"""
|
||||
"""
|
||||
Rule that checks for an object with a particular attribute.
|
||||
"""
|
||||
|
||||
labels = [ _('Attribute:'), _('Value:') ]
|
||||
name = _('Objects with the <attribute>')
|
||||
@ -49,7 +51,7 @@ class HasAttributeBase(Rule):
|
||||
"of a particular value")
|
||||
category = _('General filters')
|
||||
|
||||
def apply(self,db,obj):
|
||||
def apply(self, db, obj):
|
||||
if not self.list[0]:
|
||||
return False
|
||||
for attr in obj.get_attribute_list():
|
||||
|
@ -34,7 +34,7 @@ from gettext import gettext as _
|
||||
#-------------------------------------------------------------------------
|
||||
import DateHandler
|
||||
from gen.lib import EventType
|
||||
from Filters.Rules._Rule import Rule
|
||||
from Filters.Rules import Rule
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@ -42,7 +42,7 @@ from Filters.Rules._Rule import Rule
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
class HasEventBase(Rule):
|
||||
"""Rule that checks for an event with a particular value"""
|
||||
"""Rule that checks for an event with a particular value."""
|
||||
|
||||
|
||||
labels = [ _('Event type:'),
|
||||
@ -53,7 +53,7 @@ class HasEventBase(Rule):
|
||||
description = _("Matches events with particular parameters")
|
||||
category = _('Event filters')
|
||||
|
||||
def prepare(self,db):
|
||||
def prepare(self, db):
|
||||
self.date = None
|
||||
if self.list[0]:
|
||||
self.etype = self.list[0]
|
||||
@ -64,7 +64,7 @@ class HasEventBase(Rule):
|
||||
self.date = DateHandler.parser.parse(self.list[1])
|
||||
except: pass
|
||||
|
||||
def apply(self,db,event):
|
||||
def apply(self, db, event):
|
||||
if self.etype:
|
||||
specified_type = EventType()
|
||||
specified_type.set_from_xml_str(self.etype)
|
||||
@ -79,11 +79,11 @@ class HasEventBase(Rule):
|
||||
return False
|
||||
|
||||
if self.list[2]:
|
||||
pl_id = event.get_place_handle()
|
||||
if pl_id:
|
||||
pl = db.get_place_from_handle(pl_id)
|
||||
pn = pl.get_title()
|
||||
if pn.upper().find(self.list[2].upper()) == -1:
|
||||
place_id = event.get_place_handle()
|
||||
if place_id:
|
||||
place = db.get_place_from_handle(place_id)
|
||||
place_name = place.get_title()
|
||||
if place_name.upper().find(self.list[2].upper()) == -1:
|
||||
return False
|
||||
else:
|
||||
return False
|
||||
|
@ -32,7 +32,7 @@ from gettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from Filters.Rules._Rule import Rule
|
||||
from Filters.Rules import Rule
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@ -40,12 +40,12 @@ from Filters.Rules._Rule import Rule
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
class HasGrampsId(Rule):
|
||||
"""Rule that checks for a person with a specific GRAMPS ID"""
|
||||
"""Rule that checks for a person with a specific GRAMPS ID."""
|
||||
|
||||
labels = [ _('ID:') ]
|
||||
name = _('Object with <Id>')
|
||||
description = _("Matches objects with a specified GRAMPS ID")
|
||||
category = _('General filters')
|
||||
|
||||
def apply(self,db,obj):
|
||||
def apply(self, db, obj):
|
||||
return obj.gramps_id.find(self.list[0]) !=-1
|
||||
|
@ -33,7 +33,7 @@ from gettext import gettext as _
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from gen.lib import MarkerType
|
||||
from Filters.Rules._Rule import Rule
|
||||
from Filters.Rules import Rule
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@ -41,7 +41,7 @@ from Filters.Rules._Rule import Rule
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
class HasMarkerBase(Rule):
|
||||
"""Rule that checks for a person with a particular value"""
|
||||
"""Rule that checks for a person with a particular value."""
|
||||
|
||||
|
||||
labels = [ _('Marker type:')]
|
||||
@ -49,7 +49,7 @@ class HasMarkerBase(Rule):
|
||||
description = _("Matches markers of a partikular type")
|
||||
category = _('General filters')
|
||||
|
||||
def apply(self,db,obj):
|
||||
def apply(self, db, obj):
|
||||
specified_type = MarkerType()
|
||||
specified_type.set_from_xml_str(self.list[0])
|
||||
return obj.get_marker() == specified_type
|
||||
|
@ -33,13 +33,13 @@ from gettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from _Rule import Rule
|
||||
from Filters.Rules import Rule
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
# "People having notes that contain a substring"
|
||||
#-------------------------------------------------------------------------
|
||||
class HasNoteRegexBase(Rule):
|
||||
"""People having notes containing <subtring>"""
|
||||
"""People having notes containing <substring>."""
|
||||
|
||||
labels = [ _('Regular expression:')]
|
||||
name = _('Objects having notes containing <regular expression>')
|
||||
@ -55,7 +55,7 @@ class HasNoteRegexBase(Rule):
|
||||
except:
|
||||
self.match = re.compile('')
|
||||
|
||||
def apply(self,db,person):
|
||||
def apply(self, db, person):
|
||||
notelist = person.get_note_list()
|
||||
for notehandle in notelist:
|
||||
note = db.get_note_from_handle(notehandle)
|
||||
|
@ -32,20 +32,21 @@ from gettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from Filters.Rules._Rule import Rule
|
||||
from Filters.Rules import Rule
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
# "People having notes that contain a substring"
|
||||
#-------------------------------------------------------------------------
|
||||
class HasNoteSubstrBase(Rule):
|
||||
"""People having notes containing <subtring>"""
|
||||
"""People having notes containing <substring>."""
|
||||
|
||||
labels = [ _('Substring:')]
|
||||
name = _('Objects having notes containing <substring>')
|
||||
description = _("Matches objects whose notes contain text matching a substring")
|
||||
description = _("Matches objects whose notes contain text matching a "
|
||||
"substring")
|
||||
category = _('General filters')
|
||||
|
||||
def apply(self,db,person):
|
||||
def apply(self, db, person):
|
||||
notelist = person.get_note_list()
|
||||
for notehandle in notelist:
|
||||
note = db.get_note_from_handle(notehandle)
|
||||
|
@ -32,13 +32,13 @@ from gettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from Filters.Rules._Rule import Rule
|
||||
from Filters.Rules import Rule
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
# "Objects with a certain reference count"
|
||||
#-------------------------------------------------------------------------
|
||||
class HasReferenceCountBase(Rule):
|
||||
"""Objects with a reference count of <count>"""
|
||||
"""Objects with a reference count of <count>."""
|
||||
|
||||
labels = [ _('Reference count must be:'), _('Reference count:')]
|
||||
name = _('Objects with a reference count of <count>')
|
||||
@ -46,27 +46,27 @@ class HasReferenceCountBase(Rule):
|
||||
category = _('General filters')
|
||||
|
||||
|
||||
def prepare(self,db):
|
||||
def prepare(self, db):
|
||||
# things we want to do just once, not for every handle
|
||||
if self.list[0] == _('lesser than'):
|
||||
self.countType = 0
|
||||
self.count_type = 0
|
||||
elif self.list[0] == _('greater than'):
|
||||
self.countType = 2
|
||||
self.count_type = 2
|
||||
else:
|
||||
self.countType = 1 # "equal to"
|
||||
self.count_type = 1 # "equal to"
|
||||
|
||||
self.userSelectedCount = int(self.list[1])
|
||||
|
||||
|
||||
def apply(self,db,object):
|
||||
handle = object.get_handle()
|
||||
def apply(self, db, obj):
|
||||
handle = obj.get_handle()
|
||||
count = 0
|
||||
for item in db.find_backlink_handles(handle):
|
||||
count += 1
|
||||
|
||||
if self.countType == 0: # "lesser than"
|
||||
if self.count_type == 0: # "lesser than"
|
||||
return count < self.userSelectedCount
|
||||
elif self.countType == 2: # "greater than"
|
||||
elif self.count_type == 2: # "greater than"
|
||||
return count > self.userSelectedCount
|
||||
# "equal to"
|
||||
return count == self.userSelectedCount
|
||||
|
@ -31,18 +31,17 @@
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from _HasTextMatchingSubstringOf import HasTextMatchingSubstringOf
|
||||
from Filters.Rules import HasTextMatchingSubstringOf
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
# "HasTextMatchingRegexOf"
|
||||
#-------------------------------------------------------------------------
|
||||
class HasTextMatchingRegexpOf(HasTextMatchingSubstringOf):
|
||||
"""This is wrapping HasTextMatchingSubstringOf to enable the regex_match
|
||||
parameter.
|
||||
|
||||
"""
|
||||
def __init__(self,list):
|
||||
HasTextMatchingSubstringOf.__init__(self,list)
|
||||
Wrap HasTextMatchingSubstringOf to enable the regex_match parameter.
|
||||
"""
|
||||
def __init__(self, list):
|
||||
HasTextMatchingSubstringOf.__init__(self, list)
|
||||
|
||||
# FIXME: This needs to be written for an arbitrary object
|
||||
# if possible
|
||||
|
@ -32,13 +32,13 @@ from gettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from _Rule import Rule
|
||||
from Filters.Rules import Rule
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
# "HasTextMatchingSubstringOf"
|
||||
#-------------------------------------------------------------------------
|
||||
class HasTextMatchingSubstringOf(Rule):
|
||||
"""Rule that checks for string matches in any textual information"""
|
||||
"""Rule that checks for string matches in any textual information."""
|
||||
|
||||
labels = [ _('Substring:'),
|
||||
_('Case sensitive:'),
|
||||
|
@ -32,17 +32,17 @@ from gettext import gettext as _
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from _Rule import Rule
|
||||
from Filters.Rules import Rule
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
# "People marked private"
|
||||
#-------------------------------------------------------------------------
|
||||
class IsPrivate(Rule):
|
||||
"""Objects marked private"""
|
||||
"""Objects marked private."""
|
||||
|
||||
name = _('Objects marked private')
|
||||
description = _("Matches objects that are indicated as private")
|
||||
category = _('General filters')
|
||||
|
||||
def apply(self,db,obj):
|
||||
def apply(self, db, obj):
|
||||
return obj.get_privacy()
|
||||
|
@ -33,7 +33,7 @@ from gettext import gettext as _
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
import Filters
|
||||
from _Rule import Rule
|
||||
from Filters.Rules import Rule
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@ -46,6 +46,7 @@ class MatchesFilterBase(Rule):
|
||||
|
||||
This is a base rule for subclassing by specific objects.
|
||||
Subclasses need to define the namespace class attribute.
|
||||
|
||||
"""
|
||||
|
||||
labels = [_('Filter name:')]
|
||||
@ -53,7 +54,7 @@ class MatchesFilterBase(Rule):
|
||||
description = _("Matches objects matched by the specified filter name")
|
||||
category = _('General filters')
|
||||
|
||||
def prepare(self,db):
|
||||
def prepare(self, db):
|
||||
if Filters.SystemFilters:
|
||||
for filt in Filters.SystemFilters.get_filters(self.namespace):
|
||||
if filt.get_name() == self.list[0]:
|
||||
@ -77,7 +78,7 @@ class MatchesFilterBase(Rule):
|
||||
for rule in filt.flist:
|
||||
rule.reset()
|
||||
|
||||
def apply(self,db,obj):
|
||||
def apply(self, db, obj):
|
||||
if Filters.SystemFilters:
|
||||
for filt in Filters.SystemFilters.get_filters(self.namespace):
|
||||
if filt.get_name() == self.list[0]:
|
||||
@ -89,8 +90,8 @@ class MatchesFilterBase(Rule):
|
||||
return False
|
||||
|
||||
def find_filter(self):
|
||||
""" helper function that can be usefull, returning the filter
|
||||
selected or None
|
||||
"""
|
||||
Return the selected filter or None.
|
||||
"""
|
||||
if Filters.SystemFilters:
|
||||
for filt in Filters.SystemFilters.get_filters(self.namespace):
|
||||
|
@ -33,7 +33,7 @@ import re
|
||||
# GRAMPS modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
from _Rule import Rule
|
||||
from Filters.Rules import Rule
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
#
|
||||
@ -42,8 +42,7 @@ from _Rule import Rule
|
||||
#-------------------------------------------------------------------------
|
||||
class RegExpIdBase(Rule):
|
||||
"""
|
||||
Rule that checks for an object whose GRAMPS ID
|
||||
matches regular expression.
|
||||
Rule that checks for an object whose GRAMPS ID matches regular expression.
|
||||
"""
|
||||
|
||||
labels = [ _('Regular expression:') ]
|
||||
@ -56,9 +55,9 @@ class RegExpIdBase(Rule):
|
||||
Rule.__init__(self, list)
|
||||
|
||||
try:
|
||||
self.match = re.compile(list[0],re.I|re.U|re.L)
|
||||
self.match = re.compile(list[0], re.I|re.U|re.L)
|
||||
except:
|
||||
self.match = re.compile('')
|
||||
|
||||
def apply(self,db,obj):
|
||||
def apply(self, db, obj):
|
||||
return self.match.match(obj.gramps_id) != None
|
||||
|
@ -33,26 +33,26 @@ from gettext import gettext as _
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
class Rule:
|
||||
"""Base rule class"""
|
||||
"""Base rule class."""
|
||||
|
||||
labels = []
|
||||
name = ''
|
||||
category = _('Miscellaneous filters')
|
||||
description = _('No description')
|
||||
|
||||
def __init__(self,list):
|
||||
def __init__(self, list):
|
||||
self.set_list(list)
|
||||
|
||||
def is_empty(self):
|
||||
return False
|
||||
|
||||
def prepare(self,db):
|
||||
def prepare(self, db):
|
||||
pass
|
||||
|
||||
def reset(self):
|
||||
pass
|
||||
|
||||
def set_list(self,list):
|
||||
def set_list(self, list):
|
||||
assert type(list) == type([]) or list == None, "Argument is not a list"
|
||||
assert len(list) == len(self.labels), \
|
||||
"Number of arguments does not match number of labels.\n"\
|
||||
@ -65,7 +65,7 @@ class Rule:
|
||||
def check(self):
|
||||
return len(self.list) == len(self.labels)
|
||||
|
||||
def apply(self,db,person):
|
||||
def apply(self, db, person):
|
||||
return True
|
||||
|
||||
def display_values(self):
|
||||
@ -74,7 +74,7 @@ class Rule:
|
||||
|
||||
return ';'.join(v)
|
||||
|
||||
def match_substring(self,param_index,str_var):
|
||||
def match_substring(self, param_index, str_var):
|
||||
if self.list[param_index] and \
|
||||
(str_var.upper().find(self.list[param_index].upper()) == -1):
|
||||
return False
|
||||
|
@ -26,19 +26,14 @@ Package providing filter rules for GRAMPS.
|
||||
|
||||
# Need to expose this to be available for filter plugins:
|
||||
# the plugins should say: from Filters.Rules import Rule
|
||||
from _Rule import Rule
|
||||
from Filters.Rules._Rule import Rule
|
||||
|
||||
from _Everything import Everything
|
||||
from _HasGrampsId import HasGrampsId
|
||||
from _IsPrivate import IsPrivate
|
||||
from _HasTextMatchingSubstringOf import HasTextMatchingSubstringOf
|
||||
from _HasTextMatchingRegexpOf import HasTextMatchingRegexpOf
|
||||
from Filters.Rules._Everything import Everything
|
||||
from Filters.Rules._HasGrampsId import HasGrampsId
|
||||
from Filters.Rules._IsPrivate import IsPrivate
|
||||
from Filters.Rules._HasTextMatchingSubstringOf import HasTextMatchingSubstringOf
|
||||
from Filters.Rules._HasTextMatchingRegexpOf import HasTextMatchingRegexpOf
|
||||
from Filters.Rules._MatchesFilterBase import MatchesFilterBase
|
||||
|
||||
import Person
|
||||
import Family
|
||||
import Event
|
||||
import Source
|
||||
import Place
|
||||
import MediaObject
|
||||
import Repository
|
||||
import Note
|
||||
from Filters.Rules import (Person, Family, Event, Source, Place, MediaObject,
|
||||
Repository, Note)
|
||||
|
Loading…
Reference in New Issue
Block a user