Update
svn: r7137
This commit is contained in:
parent
dd41a8a651
commit
14504b1f30
@ -25,6 +25,7 @@ Package providing filter rules for GRAMPS.
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
__author__ = "Don Allingham"
|
__author__ = "Don Allingham"
|
||||||
|
from Filters.Rules._HasEventBase import HasEventBase as HasEvent
|
||||||
|
|
||||||
from _HasType import HasType
|
from _HasType import HasType
|
||||||
from _AllEvents import AllEvents
|
from _AllEvents import AllEvents
|
||||||
|
@ -40,7 +40,7 @@ from Filters.Rules._HasEventBase import HasEventBase
|
|||||||
#
|
#
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
class HasEvent(HasEventBase):
|
class HasEvent(HasEventBase):
|
||||||
"""Rule that checks for a person with a particular value"""
|
"""Rule that checks for a family event with a particular value"""
|
||||||
|
|
||||||
labels = [ _('Family event:'),
|
labels = [ _('Family event:'),
|
||||||
_('Date:'),
|
_('Date:'),
|
||||||
@ -48,3 +48,12 @@ class HasEvent(HasEventBase):
|
|||||||
_('Description:') ]
|
_('Description:') ]
|
||||||
name = _('Families with the <event>')
|
name = _('Families with the <event>')
|
||||||
description = _("Matches families with an event of a particular value")
|
description = _("Matches families with an event of a particular value")
|
||||||
|
|
||||||
|
def apply(self,db,family):
|
||||||
|
for event_ref in family.get_event_ref_list():
|
||||||
|
if not event_ref:
|
||||||
|
continue
|
||||||
|
event = db.get_event_from_handle(event_ref.ref)
|
||||||
|
if HasEventBase.apply(self,db,event):
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
@ -49,3 +49,11 @@ class HasEvent(HasEventBase):
|
|||||||
name = _('People with the personal <event>')
|
name = _('People with the personal <event>')
|
||||||
description = _("Matches people with a personal event of a particular value")
|
description = _("Matches people with a personal event of a particular value")
|
||||||
|
|
||||||
|
def apply(self,db,person):
|
||||||
|
for event_ref in person.get_event_ref_list():
|
||||||
|
if not event_ref:
|
||||||
|
continue
|
||||||
|
event = db.get_event_from_handle(event_ref.ref)
|
||||||
|
if HasEventBase.apply(self,db,event):
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
@ -35,7 +35,7 @@ from gettext import gettext as _
|
|||||||
import DateHandler
|
import DateHandler
|
||||||
from RelLib import EventType
|
from RelLib import EventType
|
||||||
from Filters.Rules._Rule import Rule
|
from Filters.Rules._Rule import Rule
|
||||||
from Filters.Rules._RuleUtils import date_cmp
|
from Filters.Rules._RuleUtils import loose_date_cmp
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
@ -45,12 +45,13 @@ from Filters.Rules._RuleUtils import date_cmp
|
|||||||
class HasEventBase(Rule):
|
class HasEventBase(Rule):
|
||||||
"""Rule that checks for a person with a particular value"""
|
"""Rule that checks for a person with a particular value"""
|
||||||
|
|
||||||
labels = [ _('Event:'),
|
|
||||||
|
labels = [ _('Event type:'),
|
||||||
_('Date:'),
|
_('Date:'),
|
||||||
_('Place:'),
|
_('Place:'),
|
||||||
_('Description:') ]
|
_('Description:') ]
|
||||||
name = _('Objects with the <event>')
|
name = _('Events matching parameters')
|
||||||
description = _("Matches objects with an event of a particular value")
|
description = _("Matches events with particular parameters")
|
||||||
category = _('Event filters')
|
category = _('Event filters')
|
||||||
|
|
||||||
def prepare(self,db):
|
def prepare(self,db):
|
||||||
@ -64,30 +65,23 @@ class HasEventBase(Rule):
|
|||||||
self.date = DateHandler.parser.parse(self.list[1])
|
self.date = DateHandler.parser.parse(self.list[1])
|
||||||
except: pass
|
except: pass
|
||||||
|
|
||||||
def apply(self,db,person):
|
def apply(self,db,event):
|
||||||
for event_ref in person.get_event_ref_list():
|
|
||||||
if not event_ref:
|
|
||||||
continue
|
|
||||||
event = db.get_event_from_handle(event_ref.ref)
|
|
||||||
val = True
|
|
||||||
if self.etype:
|
if self.etype:
|
||||||
specified_type = EventType()
|
specified_type = EventType()
|
||||||
specified_type.set_from_xml_str(self.etype)
|
specified_type.set_from_xml_str(self.etype)
|
||||||
if event.type != specified_type:
|
if event.type != specified_type:
|
||||||
val = False
|
return False
|
||||||
if self.list[3] and event.get_description().upper().find(
|
if self.list[3] and event.get_description().upper().find(
|
||||||
self.list[3].upper())==-1:
|
self.list[3].upper())==-1:
|
||||||
val = False
|
return False
|
||||||
if self.date:
|
if self.date:
|
||||||
if date_cmp(self.date,event.get_date_object()):
|
if not loose_date_cmp(self.date,event.get_date_object()):
|
||||||
val = False
|
return False
|
||||||
if self.list[2]:
|
if self.list[2]:
|
||||||
pl_id = event.get_place_handle()
|
pl_id = event.get_place_handle()
|
||||||
if pl_id:
|
if pl_id:
|
||||||
pl = db.get_place_from_handle(pl_id)
|
pl = db.get_place_from_handle(pl_id)
|
||||||
pn = pl.get_title()
|
pn = pl.get_title()
|
||||||
if pn.upper().find(self.list[2].upper()) == -1:
|
if pn.upper().find(self.list[2].upper()) == -1:
|
||||||
val = False
|
|
||||||
if val:
|
|
||||||
return True
|
|
||||||
return False
|
return False
|
||||||
|
return True
|
||||||
|
@ -60,6 +60,7 @@ class EventSidebarFilter(SidebarFilter):
|
|||||||
|
|
||||||
def create_widget(self):
|
def create_widget(self):
|
||||||
self.filter_id = gtk.Entry()
|
self.filter_id = gtk.Entry()
|
||||||
|
self.filter_desc = gtk.Entry()
|
||||||
self.filter_event = RelLib.Event()
|
self.filter_event = RelLib.Event()
|
||||||
self.filter_event.set_type((RelLib.EventType.CUSTOM,''))
|
self.filter_event.set_type((RelLib.EventType.CUSTOM,''))
|
||||||
self.etype = gtk.ComboBoxEntry()
|
self.etype = gtk.ComboBoxEntry()
|
||||||
@ -69,6 +70,8 @@ class EventSidebarFilter(SidebarFilter):
|
|||||||
self.filter_event.set_type,
|
self.filter_event.set_type,
|
||||||
self.filter_event.get_type)
|
self.filter_event.get_type)
|
||||||
|
|
||||||
|
self.filter_date = gtk.Entry()
|
||||||
|
self.filter_place = gtk.Entry()
|
||||||
self.filter_note = gtk.Entry()
|
self.filter_note = gtk.Entry()
|
||||||
|
|
||||||
self.filter_regex = gtk.CheckButton(_('Use regular expressions'))
|
self.filter_regex = gtk.CheckButton(_('Use regular expressions'))
|
||||||
@ -85,13 +88,19 @@ class EventSidebarFilter(SidebarFilter):
|
|||||||
self.generic.set_active(0)
|
self.generic.set_active(0)
|
||||||
|
|
||||||
self.add_text_entry(_('ID'), self.filter_id)
|
self.add_text_entry(_('ID'), self.filter_id)
|
||||||
|
self.add_text_entry(_('Description'), self.filter_desc)
|
||||||
self.add_entry(_('Type'), self.etype)
|
self.add_entry(_('Type'), self.etype)
|
||||||
|
self.add_text_entry(_('Date'), self.filter_date)
|
||||||
|
self.add_text_entry(_('Place'), self.filter_place)
|
||||||
self.add_text_entry(_('Note'), self.filter_note)
|
self.add_text_entry(_('Note'), self.filter_note)
|
||||||
self.add_entry(_('Custom filter'), self.generic)
|
self.add_entry(_('Custom filter'), self.generic)
|
||||||
self.add_entry(None, self.filter_regex)
|
self.add_entry(None, self.filter_regex)
|
||||||
|
|
||||||
def clear(self, obj):
|
def clear(self, obj):
|
||||||
self.filter_id.set_text('')
|
self.filter_id.set_text('')
|
||||||
|
self.filter_desc.set_text('')
|
||||||
|
self.filter_date.set_text('')
|
||||||
|
self.filter_place.set_text('')
|
||||||
self.filter_note.set_text('')
|
self.filter_note.set_text('')
|
||||||
self.etype.child.set_text('')
|
self.etype.child.set_text('')
|
||||||
self.generic.set_active(0)
|
self.generic.set_active(0)
|
||||||
@ -101,12 +110,17 @@ class EventSidebarFilter(SidebarFilter):
|
|||||||
|
|
||||||
def get_filter(self):
|
def get_filter(self):
|
||||||
gid = unicode(self.filter_id.get_text()).strip()
|
gid = unicode(self.filter_id.get_text()).strip()
|
||||||
|
desc = unicode(self.filter_desc.get_text()).strip()
|
||||||
|
date = unicode(self.filter_date.get_text()).strip()
|
||||||
|
place = unicode(self.filter_place.get_text()).strip()
|
||||||
note = unicode(self.filter_note.get_text()).strip()
|
note = unicode(self.filter_note.get_text()).strip()
|
||||||
regex = self.filter_regex.get_active()
|
regex = self.filter_regex.get_active()
|
||||||
gen = self.generic.get_active() > 0
|
gen = self.generic.get_active() > 0
|
||||||
|
etype = self.filter_event.get_type().xml_str()
|
||||||
|
|
||||||
if not gid and not str(self.filter_event.get_type()) \
|
empty = not (gid or desc or date or place or note
|
||||||
and not note and not gen:
|
or etype or regex or gen)
|
||||||
|
if empty:
|
||||||
generic_filter = None
|
generic_filter = None
|
||||||
else:
|
else:
|
||||||
generic_filter = GenericEventFilter()
|
generic_filter = GenericEventFilter()
|
||||||
@ -117,9 +131,7 @@ class EventSidebarFilter(SidebarFilter):
|
|||||||
rule = HasIdOf([gid])
|
rule = HasIdOf([gid])
|
||||||
generic_filter.add_rule(rule)
|
generic_filter.add_rule(rule)
|
||||||
|
|
||||||
etype = self.filter_event.get_type().xml_str()
|
rule = HasEvent([etype,date,place,desc])
|
||||||
if str(etype):
|
|
||||||
rule = HasType([etype])
|
|
||||||
generic_filter.add_rule(rule)
|
generic_filter.add_rule(rule)
|
||||||
|
|
||||||
if note:
|
if note:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user