7212: convert invalid date to text on .gw import
Back-port from master [829986] [1ac0e2]
This commit is contained in:
parent
d8f5d40c4c
commit
0753f87630
@ -96,9 +96,10 @@ def importData(database, filename, cb=None):
|
|||||||
class GeneWebParser(object):
|
class GeneWebParser(object):
|
||||||
def __init__(self, dbase, file):
|
def __init__(self, dbase, file):
|
||||||
self.db = dbase
|
self.db = dbase
|
||||||
self.f = open(file,"rU")
|
if file: # Unit tests can create the parser w/o underlying file
|
||||||
self.filename = file
|
self.f = open(file,"rU")
|
||||||
self.encoding = 'iso-8859-1'
|
self.filename = file
|
||||||
|
self.encoding = 'iso-8859-1'
|
||||||
|
|
||||||
def get_next_line(self):
|
def get_next_line(self):
|
||||||
self.lineno += 1
|
self.lineno += 1
|
||||||
@ -805,8 +806,17 @@ class GeneWebParser(object):
|
|||||||
sub2 = (0,0,0)
|
sub2 = (0,0,0)
|
||||||
cal1 = _cal_map.get(groups[2],gen.lib.Date.CAL_GREGORIAN)
|
cal1 = _cal_map.get(groups[2],gen.lib.Date.CAL_GREGORIAN)
|
||||||
sub1 = self.sub_date(groups[1])
|
sub1 = self.sub_date(groups[1])
|
||||||
date.set(gen.lib.Date.QUAL_NONE,mod, cal1,
|
try:
|
||||||
(sub1[0],sub1[1],sub1[2],0,sub2[0],sub2[1],sub2[2],0))
|
date.set(gen.lib.Date.QUAL_NONE,mod, cal1,
|
||||||
|
(sub1[0],sub1[1],sub1[2],0,sub2[0],sub2[1],sub2[2],0))
|
||||||
|
except gen.lib.DateError as e:
|
||||||
|
# TRANSLATORS: leave the {date} and {gw_snippet} untranslated
|
||||||
|
# in the format string, but you may re-order them if needed.
|
||||||
|
LOG.warning(_(
|
||||||
|
"Invalid date {date} in {gw_snippet}, "
|
||||||
|
"preserving date as text."
|
||||||
|
).format(date=e.date.dateval, gw_snippet=field))
|
||||||
|
date.set(modifier=gen.lib.Date.MOD_TEXTONLY, text=field)
|
||||||
return date
|
return date
|
||||||
else:
|
else:
|
||||||
return None
|
return None
|
||||||
|
49
src/plugins/import/test/ImportGeneWeb_test.py
Normal file
49
src/plugins/import/test/ImportGeneWeb_test.py
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
#
|
||||||
|
# Gramps - a GTK+/GNOME based genealogy program
|
||||||
|
#
|
||||||
|
# Copyright (C) 2013 Vassilii Khachaturov
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 2 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 General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
#
|
||||||
|
|
||||||
|
"""
|
||||||
|
Unit test of the GeneWebParser
|
||||||
|
"""
|
||||||
|
from __future__ import print_function
|
||||||
|
import unittest
|
||||||
|
import sys
|
||||||
|
import os
|
||||||
|
sys.path.append(os.curdir)
|
||||||
|
sys.path.append(os.path.join(os.curdir, 'plugins', 'import'))
|
||||||
|
|
||||||
|
from ImportGeneWeb import GeneWebParser
|
||||||
|
from gen.lib.date import Date
|
||||||
|
|
||||||
|
class ParseDateTest(unittest.TestCase):
|
||||||
|
def setUp(self):
|
||||||
|
self.parse = GeneWebParser(dbase=None, file=None).parse_date
|
||||||
|
|
||||||
|
def test_regular_date_parsed_dmy(self):
|
||||||
|
d = self.parse("28/2/1876")
|
||||||
|
self.assertEqual(d.get_ymd(), (1876, 2, 28))
|
||||||
|
|
||||||
|
def test_invalid_date_stays_verbatim_text(self):
|
||||||
|
text = "29/2/1875"
|
||||||
|
d = self.parse(text)
|
||||||
|
self.assertEqual(d.get_modifier(), Date.MOD_TEXTONLY)
|
||||||
|
self.assertEqual(d.get_text(), text)
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
unittest.main()
|
Loading…
Reference in New Issue
Block a user