* src/Sources.py: Use get_date_object (not get_date) for source refs.

* src/ReadXML.py: Use get_date_object for source refs.
* src/WriteXML.py: Use get_date_object for source refs.
* src/WriteGedcom.py: Use get_date_object for sourcerefs.
* src/plugins/FtmStyleAncestors.py: Use get_date_object for sourcerefs.
* src/plugins/FtmStyleDescendants.py: Use get_date_object for sourcerefs.
* src/plugins/NavWebPage.py: Use get_date_object for sourcerefs.
* src/plugins/WebPage.py: Use get_date_object for sourcerefs.
* src/RelLib.py (DateBase): Add base class for keeping Date;
(MediaBase): Do not inherit from BaseObject; (Event,MediaObject,LdsOrd,
Address,Name,SourceRef): Inherit all date-related methods from DateBase.


svn: r4222
This commit is contained in:
Alex Roitman
2005-03-22 23:59:51 +00:00
parent d78cd57231
commit 1703b9669c
10 changed files with 128 additions and 297 deletions

View File

@@ -480,7 +480,7 @@ class SourceNote(BaseObject):
"""Creates a unique instance of the current note"""
self.note = Note(self.note.get())
class MediaBase(BaseObject):
class MediaBase:
"""
Base class for storing media references
"""
@@ -564,6 +564,85 @@ class MediaBase(BaseObject):
ix = self.media_list.index(old_handle)
self.media_list[ix] = new_handle
class DateBase:
"""
Base class for storing date information.
"""
def __init__(self,source=None):
"""
Create a new DateBase, copying from source if not None
@param source: Object used to initialize the new object
@type source: DateBase
"""
if source:
self.date = Date.Date(source.date)
else:
self.date = None
def set_date(self, date) :
"""
Sets the date of the DateBase instance.
The date is parsed into a L{Date} instance.
@param date: String representation of a date. The locale specific
L{DateParser} is used to parse the string into a GRAMPS L{Date}
object.
@type date: str
"""
self.date = DateHandler.parser.parse(date)
def get_date(self) :
"""
Returns 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 L{DateDisplay} instance.
@return: Returns a string representing the DateBase date
@rtype: str
"""
if self.date:
return DateHandler.displayer.display(self.date)
return u""
def get_quote_date(self) :
"""
Returns 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 L{DateDisplay} instance. The date is
enclosed in quotes if the L{Date} is not a valid date.
@return: Returns a string representing the DateBase date
@rtype: str
"""
if self.date:
return DateHandler.displayer.quote_display(self.date)
return u""
def get_date_object(self):
"""
Returns the L{Date} object associated with the DateBase.
@return: Returns a DateBase L{Date} instance.
@rtype: L{Date}
"""
if not self.date:
self.date = Date.Date()
return self.date
def set_date_object(self,date):
"""
Sets the L{Date} object associated with the DateBase.
@param date: L{Date} instance to be assigned to the DateBase
@type date: L{Date}
"""
self.date = date
class PrivateObject(SourceNote):
"""
Same as SourceNote, plus the privacy capabilities.
@@ -1798,7 +1877,7 @@ class Family(PrimaryObject,SourceNote,MediaBase):
"""
self.event_list = event_list
class Event(PrimaryObject,PrivateObject,MediaBase):
class Event(PrimaryObject,PrivateObject,MediaBase,DateBase):
"""
Introduction
============
@@ -1821,10 +1900,10 @@ class Event(PrimaryObject,PrivateObject,MediaBase):
PrimaryObject.__init__(self,source)
PrivateObject.__init__(self,source)
MediaBase.__init__(self,source)
DateBase.__init__(self,source)
if source:
self.place = source.place
self.date = Date.Date(source.date)
self.description = source.description
self.name = source.name
self.cause = source.cause
@@ -1834,7 +1913,6 @@ class Event(PrimaryObject,PrivateObject,MediaBase):
self.witness = None
else:
self.place = ""
self.date = None
self.description = ""
self.name = ""
self.cause = ""
@@ -2100,65 +2178,6 @@ class Event(PrimaryObject,PrivateObject,MediaBase):
"""
return self.description
def set_date(self, date) :
"""
Sets the date of the Event instance. The date is parsed into
a L{Date} instance.
@param date: String representation of a date. The locale specific
L{DateParser} is used to parse the string into a GRAMPS L{Date}
object.
@type date: str
"""
self.date = DateHandler.parser.parse(date)
def get_date(self) :
"""
Returns a string representation of the date of the Event instance
based off the default date display format determined by the
locale's L{DateDisplay} instance.
@return: Returns a string representing the Event's date
@rtype: str
"""
if self.date:
return DateHandler.displayer.display(self.date)
return u""
def get_quote_date(self) :
"""
Returns a string representation of the date of the Event instance
based off the default date display format determined by the
locale's L{DateDisplay} instance. The date is enclosed in
quotes if the L{Date} is not a valid date.
@return: Returns a string representing the Event's date
@rtype: str
"""
if self.date:
return DateHandler.displayer.quote_display(self.date)
return u""
def get_date_object(self):
"""
Returns the L{Date} object associated with the Event.
@return: Returns a Event's L{Date} instance.
@rtype: L{Date}
"""
if not self.date:
self.date = Date.Date()
return self.date
def set_date_object(self,date):
"""
Sets the L{Date} object associated with the Event.
@param date: L{Date} instance to be assigned to the Event
@type date: L{Date}
"""
self.date = date
class Place(PrimaryObject,SourceNote,MediaBase):
"""
Contains information related to a place, including multiple address
@@ -2415,7 +2434,7 @@ class Place(PrimaryObject,SourceNote,MediaBase):
return [self.title,self.gramps_id,'','','','','',
self.title.upper(), '','','','','']
class MediaObject(PrimaryObject,SourceNote):
class MediaObject(PrimaryObject,SourceNote,DateBase):
"""
Containter for information about an image file, including location,
description and privacy
@@ -2431,6 +2450,7 @@ class MediaObject(PrimaryObject,SourceNote):
"""
PrimaryObject.__init__(self,source)
SourceNote.__init__(self,source)
DateBase.__init__(self,source)
self.attrlist = []
if source:
@@ -2438,7 +2458,6 @@ class MediaObject(PrimaryObject,SourceNote):
self.mime = source.mime
self.desc = source.desc
self.thumb = source.thumb
self.date = Date.Date(source.date)
self.place = source.place
for attr in source.attrlist:
self.attrlist.append(Attribute(attr))
@@ -2446,7 +2465,6 @@ class MediaObject(PrimaryObject,SourceNote):
self.path = ""
self.mime = ""
self.desc = ""
self.date = None
self.place = ""
self.thumb = None
@@ -2545,50 +2563,6 @@ class MediaObject(PrimaryObject,SourceNote):
"""
return self.place
def get_date(self) :
"""
Returns a string representation of the date of the instance
based off the default date display format determined by the
locale's L{DateDisplay} instance.
@return: Returns a string representing the object's date
@rtype: str
"""
if self.date:
return DateHandler.displayer.display(self.date)
return u""
def get_date_object(self):
"""
Returns the L{Date} instance associated with the object.
@return: Returns the object's L{Date} instance.
@rtype: L{Date}
"""
if not self.date:
self.date = Date.Date()
return self.date
def set_date(self, date) :
"""
Sets the date of the object. The date is parsed into a L{Date} instance.
@param date: String representation of a date. The locale specific
L{DateParser} is used to parse the string into a GRAMPS L{Date}
object.
@type date: str
"""
self.date = DateHandler.parser.parse(date)
def set_date_object(self,date):
"""
Sets the L{Date} instance associated with the object.
@param date: L{Date} instance to be assigned to the object
@type date: L{Date}
"""
self.date = date
def set_mime_type(self,type):
"""
Sets the MIME type associated with the MediaObject
@@ -2804,7 +2778,7 @@ class Source(PrimaryObject,MediaBase):
"""returns the title abbreviation of the Source"""
return self.abbrev
class LdsOrd(SourceNote):
class LdsOrd(SourceNote,DateBase):
"""
Class that contains information about LDS Ordinances. LDS
ordinances are similar to events, but have very specific additional
@@ -2815,16 +2789,15 @@ class LdsOrd(SourceNote):
def __init__(self,source=None):
"""Creates a LDS Ordinance instance"""
SourceNote.__init__(self,source)
DateBase.__init__(self,source)
if source:
self.famc = source.famc
self.date = Date.Date(source.date)
self.temple = source.temple
self.status = source.status
self.place = source.place
else:
self.famc = None
self.date = None
self.temple = ""
self.status = 0
self.place = None
@@ -2876,52 +2849,6 @@ class LdsOrd(SourceNote):
"""Gets the status of the LDS ordinance"""
return self.status
def set_date(self, date) :
"""
Sets the date of the object. The date is parsed into a L{Date} instance.
@param date: String representation of a date. The locale specific
L{DateParser} is used to parse the string into a GRAMPS L{Date}
object.
@type date: str
"""
if not self.date:
self.date = Date.Date()
DateHandler.parser.set_date(self.date,date)
def get_date(self) :
"""
Returns a string representation of the date of the instance
based off the default date display format determined by the
locale's L{DateDisplay} instance.
@return: Returns a string representing the object's date
@rtype: str
"""
if self.date:
return DateHandler.displayer.display(self.date)
return u""
def get_date_object(self):
"""
Returns the L{Date} instance associated with the object.
@return: Returns the object's L{Date} instance.
@rtype: L{Date}
"""
if not self.date:
self.date = Date.Date()
return self.date
def set_date_object(self,date):
"""
Sets the L{Date} instance associated with the object.
@param date: L{Date} instance to be assigned to the object
@type date: L{Date}
"""
self.date = date
def set_temple(self,temple):
"""Sets the temple assocated with the ordinance"""
self.temple = temple
@@ -3332,21 +3259,21 @@ class Attribute(PrivateObject):
"""returns the value of the Attribute instance"""
return self.value
class Address(PrivateObject):
class Address(PrivateObject,DateBase):
"""Provides address information for a person"""
def __init__(self,source=None):
"""Creates a new Address instance, copying from the source
if provided"""
PrivateObject.__init__(self,source)
DateBase.__init__(self,source)
if source:
self.street = source.street
self.city = source.city
self.state = source.state
self.country = source.country
self.postal = source.postal
self.date = Date.Date(source.date)
self.phone = source.phone
else:
self.street = ""
@@ -3354,7 +3281,6 @@ class Address(PrivateObject):
self.state = ""
self.country = ""
self.postal = ""
self.date = Date.Date()
self.phone = ""
def get_text_data_list(self):
@@ -3379,48 +3305,6 @@ class Address(PrivateObject):
check_list.append(self.note)
return check_list
def set_date(self,date):
"""
Sets the date of the object. The date is parsed into a L{Date} instance.
@param date: String representation of a date. The locale specific
L{DateParser} is used to parse the string into a GRAMPS L{Date}
object.
@type date: str
"""
self.date = DateHandler.parser.parse(date)
def get_date(self):
"""
Returns a string representation of the date of the instance
based off the default date display format determined by the
locale's L{DateDisplay} instance.
@return: Returns a string representing the object's date
@rtype: str
"""
if self.date:
return DateHandler.displayer.display(self.date)
return u""
def get_date_object(self):
"""
Returns the L{Date} instance associated with the object.
@return: Returns the object's L{Date} instance.
@rtype: L{Date}
"""
return self.date
def set_date_object(self,date):
"""
Sets the L{Date} instance associated with the object.
@param date: L{Date} instance to be assigned to the object
@type date: L{Date}
"""
self.date = date
def set_street(self,val):
"""sets the street portion of the Address"""
self.street = val
@@ -3469,7 +3353,7 @@ class Address(PrivateObject):
"""returns the postal code of the Address"""
return self.postal
class Name(PrivateObject):
class Name(PrivateObject,DateBase):
"""Provides name information about a person. A person may have more
that one name throughout his or her life."""
@@ -3480,7 +3364,8 @@ class Name(PrivateObject):
def __init__(self,source=None):
"""creates a new Name instance, copying from the source if provided"""
PrivateObject.__init__(self,source)
DateBase.__init__(self,source)
if source:
self.first_name = source.first_name
self.surname = source.surname
@@ -3493,10 +3378,6 @@ class Name(PrivateObject):
self.group_as = source.group_as
self.sort_as = source.sort_as
self.display_as = source.display_as
if source.date:
self.date = Date.Date(source.date)
else:
self.date = None
else:
self.first_name = ""
self.surname = ""
@@ -3509,7 +3390,6 @@ class Name(PrivateObject):
self.group_as = ""
self.sort_as = self.DEF
self.display_as = self.DEF
self.date = None
def get_text_data_list(self):
"""
@@ -3767,6 +3647,10 @@ class Name(PrivateObject):
return False
if self.get_note() != other.get_note():
return False
if (self.date and other.date and not self.date.is_equal(other.date)) \
or (self.date and not other.date) \
or (not self.date and other.date):
return False
if len(self.get_source_references()) != len(other.get_source_references()):
return False
index = 0
@@ -3777,65 +3661,6 @@ class Name(PrivateObject):
index += 1
return True
def set_date(self, date) :
"""
Sets the date of the L{Name} instance. The date is parsed into
a L{Date} instance.
@param date: String representation of a date. The locale specific
L{DateParser} is used to parse the string into a GRAMPS L{Date}
object.
@type date: str
"""
self.date = DateHandler.parser.parse(date)
def get_date(self) :
"""
Returns a string representation of the date of the L{Name} instance
based off the default date display format determined by the
locale's L{DateDisplay} instance.
@return: Returns a string representing the L{Name}'s date
@rtype: str
"""
if self.date:
return DateHandler.displayer.display(self.date)
return u""
def get_quote_date(self) :
"""
Returns a string representation of the date of the L{Name} instance
based off the default date display format determined by the
locale's L{DateDisplay} instance. The date is enclosed in
quotes if the L{Date} is not a valid date.
@return: Returns a string representing the L{Name}'s date
@rtype: str
"""
if self.date:
return DateHandler.displayer.quote_display(self.date)
return u""
def get_date_object(self):
"""
Returns the L{Date} object associated with the L{Name}.
@return: Returns a L{Name}'s L{Date} instance.
@rtype: L{Date}
"""
if not self.date:
self.date = Date.Date()
return self.date
def set_date_object(self,date):
"""
Sets the L{Date} object associated with the L{Name}.
@param date: L{Date} instance to be assigned to the L{Name}
@type date: L{Date}
"""
self.date = date
class Url(BaseObject):
"""Contains information related to internet Uniform Resource Locators,
allowing gramps to store information about internet resources"""
@@ -3966,17 +3791,17 @@ class Witness(BaseObject):
def get_comment(self):
return self.comment
class SourceRef(BaseObject):
class SourceRef(BaseObject,DateBase):
"""Source reference, containing detailed information about how a
referenced source relates to it"""
def __init__(self,source=None):
"""creates a new SourceRef, copying from the source if present"""
DateBase.__init__(self,source)
if source:
self.confidence = source.confidence
self.ref = source.ref
self.page = source.page
self.date = Date.Date(source.date)
self.comments = Note(source.comments.get())
self.text = source.text
self.private = source.private
@@ -3984,7 +3809,6 @@ class SourceRef(BaseObject):
self.confidence = CONF_NORMAL
self.ref = None
self.page = ""
self.date = Date.Date()
self.comments = Note()
self.text = ""
self.private = False
@@ -4042,14 +3866,6 @@ class SourceRef(BaseObject):
"""returns the Source instance to which the SourceRef refers"""
return self.ref
def set_date(self,date):
"""sets the Date instance of the SourceRef"""
self.date = date
def get_date(self):
"""returns the Date instance of the SourceRef"""
return self.date
def set_page(self,page):
"""sets the page indicator of the SourceRef"""
self.page = page
@@ -4083,7 +3899,10 @@ class SourceRef(BaseObject):
if self.ref and other.ref:
if self.page != other.page:
return False
if self.date != other.date:
if (self.date and other.date and \
not self.date.is_equal(other.date)) \
or (self.date and not other.date) \
or (not self.date and other.date):
return False
if self.get_text() != other.get_text():
return False