* RelLib/_*.py: Make objects serialize all the way down to built-in

python objects, so that Gramps classes are never pickled.
* Date.py, CalSdn.py: Move to RelLib.
* src/dates/Date_*.py: Use new Date.
* src/plugins/*.py: Use new Date.
* src/GrampsDb/_*.py: Use new Date, new unserialize.
* src/*.py: Use new Date.


svn: r5875
This commit is contained in:
Alex Roitman
2006-02-03 22:03:53 +00:00
parent b311f11c5c
commit de0559e32c
73 changed files with 1298 additions and 905 deletions

View File

@@ -47,7 +47,6 @@ import gtk.glade
#
#-------------------------------------------------------------------------
import Errors
import Date
import RelLib
import Tool
import const
@@ -647,61 +646,71 @@ class TestcaseGenerator(Tool.Tool):
def generate_date_tests(self):
dates = []
# first some valid dates
calendar = Date.CAL_GREGORIAN
for quality in (Date.QUAL_NONE, Date.QUAL_ESTIMATED, Date.QUAL_CALCULATED):
for modifier in (Date.MOD_NONE, Date.MOD_BEFORE, Date.MOD_AFTER, Date.MOD_ABOUT):
calendar = RelLib.Date.CAL_GREGORIAN
for quality in (RelLib.Date.QUAL_NONE, RelLib.Date.QUAL_ESTIMATED,
RelLib.Date.QUAL_CALCULATED):
for modifier in (RelLib.Date.MOD_NONE, RelLib.Date.MOD_BEFORE,
RelLib.Date.MOD_AFTER, RelLib.Date.MOD_ABOUT):
for slash1 in (False,True):
d = Date.Date()
d = RelLib.Date()
d.set(quality,modifier,calendar,(4,7,1789,slash1),"Text comment")
dates.append( d)
for modifier in (Date.MOD_RANGE, Date.MOD_SPAN):
for modifier in (RelLib.Date.MOD_RANGE, RelLib.Date.MOD_SPAN):
for slash1 in (False,True):
for slash2 in (False,True):
d = Date.Date()
d = RelLib.Date()
d.set(quality,modifier,calendar,(4,7,1789,slash1,5,8,1876,slash2),"Text comment")
dates.append( d)
modifier = Date.MOD_TEXTONLY
d = Date.Date()
d.set(quality,modifier,calendar,Date.EMPTY,"This is a textual date")
modifier = RelLib.Date.MOD_TEXTONLY
d = RelLib.Date()
d.set(quality,modifier,calendar,RelLib.Date.EMPTY,
"This is a textual date")
dates.append( d)
# test invalid dates
dateval = (4,7,1789,False,5,8,1876,False)
for l in range(1,len(dateval)):
d = Date.Date()
d = RelLib.Date()
try:
d.set(Date.QUAL_NONE,Date.MOD_NONE,Date.CAL_GREGORIAN,dateval[:l],"Text comment")
d.set(RelLib.Date.QUAL_NONE,RelLib.Date.MOD_NONE,
RelLib.Date.CAL_GREGORIAN,dateval[:l],"Text comment")
dates.append( d)
except Errors.DateError, e:
d.set_as_text("Date identified value correctly as invalid.\n%s" % e)
dates.append( d)
except:
d = Date.Date()
d = RelLib.Date()
d.set_as_text("Date.set Exception %s" % ("".join(traceback.format_exception(*sys.exc_info())),))
dates.append( d)
for l in range(1,len(dateval)):
d = Date.Date()
d = RelLib.Date()
try:
d.set(Date.QUAL_NONE,Date.MOD_SPAN,Date.CAL_GREGORIAN,dateval[:l],"Text comment")
d.set(RelLib.Date.QUAL_NONE,RelLib.Date.MOD_SPAN,RelLib.Date.CAL_GREGORIAN,dateval[:l],"Text comment")
dates.append( d)
except Errors.DateError, e:
d.set_as_text("Date identified value correctly as invalid.\n%s" % e)
dates.append( d)
except:
d = Date.Date()
d = RelLib.Date()
d.set_as_text("Date.set Exception %s" % ("".join(traceback.format_exception(*sys.exc_info())),))
dates.append( d)
d = Date.Date()
d.set(Date.QUAL_NONE,Date.MOD_NONE,Date.CAL_GREGORIAN,(44,7,1789,False),"Text comment")
d = RelLib.Date()
d.set(RelLib.Date.QUAL_NONE,RelLib.Date.MOD_NONE,
RelLib.Date.CAL_GREGORIAN,(44,7,1789,False),"Text comment")
dates.append( d)
d = Date.Date()
d.set(Date.QUAL_NONE,Date.MOD_NONE,Date.CAL_GREGORIAN,(4,77,1789,False),"Text comment")
d = RelLib.Date()
d.set(RelLib.Date.QUAL_NONE,RelLib.Date.MOD_NONE,
RelLib.Date.CAL_GREGORIAN,(4,77,1789,False),"Text comment")
dates.append( d)
d = Date.Date()
d.set(Date.QUAL_NONE,Date.MOD_SPAN,Date.CAL_GREGORIAN,(4,7,1789,False,55,8,1876,False),"Text comment")
d = RelLib.Date()
d.set(RelLib.Date.QUAL_NONE,RelLib.Date.MOD_SPAN,
RelLib.Date.CAL_GREGORIAN,
(4,7,1789,False,55,8,1876,False),"Text comment")
dates.append( d)
d = Date.Date()
d.set(Date.QUAL_NONE,Date.MOD_SPAN,Date.CAL_GREGORIAN,(4,7,1789,False,5,88,1876,False),"Text comment")
d = RelLib.Date()
d.set(RelLib.Date.QUAL_NONE,RelLib.Date.MOD_SPAN,
RelLib.Date.CAL_GREGORIAN,
(4,7,1789,False,5,88,1876,False),"Text comment")
dates.append( d)
# now add them as birth to new persons
@@ -721,16 +730,17 @@ class TestcaseGenerator(Tool.Tool):
try:
ndate = _dp.parse( datestr)
if not ndate:
ndate = Date.Date()
ndate = RelLib.Date()
ndate.set_as_text("DateParser None")
except:
ndate = Date.Date()
ndate = RelLib.Date()
ndate.set_as_text("DateParser Exception %s" % ("".join(traceback.format_exception(*sys.exc_info())),))
except:
ndate = Date.Date()
ndate = RelLib.Date()
ndate.set_as_text("DateDisplay Exception: %s" % ("".join(traceback.format_exception(*sys.exc_info())),))
if dateval.get_modifier() != Date.MOD_TEXTONLY and ndate.get_modifier() == Date.MOD_TEXTONLY:
if dateval.get_modifier() != RelLib.Date.MOD_TEXTONLY \
and ndate.get_modifier() == RelLib.Date.MOD_TEXTONLY:
# parser was unable to correctly parse the string
ndate.set_as_text( "TEXTONLY: "+ndate.get_text())
@@ -1029,7 +1039,7 @@ class TestcaseGenerator(Tool.Tool):
start = end - randint(0,100)
year = randint(start,end)
ndate = Date.Date()
ndate = RelLib.Date()
if randint(0,10) == 1:
# Some get a textual date
ndate.set_as_text( choice((self.rand_text(self.SHORT),"Unknown","??","Don't know","TODO!")))
@@ -1039,17 +1049,23 @@ class TestcaseGenerator(Tool.Tool):
pass
else:
# regular dates
calendar = Date.CAL_GREGORIAN
quality = choice( (Date.QUAL_NONE, Date.QUAL_ESTIMATED, Date.QUAL_CALCULATED))
modifier = choice( (Date.MOD_NONE, Date.MOD_BEFORE, Date.MOD_AFTER,\
Date.MOD_ABOUT, Date.MOD_RANGE, Date.MOD_SPAN))
calendar = RelLib.Date.CAL_GREGORIAN
quality = choice( (RelLib.Date.QUAL_NONE,
RelLib.Date.QUAL_ESTIMATED,
RelLib.Date.QUAL_CALCULATED))
modifier = choice( (RelLib.Date.MOD_NONE,
RelLib.Date.MOD_BEFORE,
RelLib.Date.MOD_AFTER,\
RelLib.Date.MOD_ABOUT,
RelLib.Date.MOD_RANGE,
RelLib.Date.MOD_SPAN))
day = randint(0,28)
if day > 0: # avoid days without month
month = randint(1,12)
else:
month = randint(0,12)
if modifier in (Date.MOD_RANGE, Date.MOD_SPAN):
if modifier in (RelLib.Date.MOD_RANGE, RelLib.Date.MOD_SPAN):
day2 = randint(0,28)
if day2 > 0:
month2 = randint(1,12)