Exemple #1
0
def lint(fname, options, out=stdPrint):

    output = None
    opts = {}

    for o in options:
        out(o)
        if '=' in o:
            k, v = o.split('=', 1)
            opts[k] = v
        else:
            opts[o] = None

    if opts.has_key('output'):
        output = open(opts['output'], 'w')

    maxage = None
    if opts.has_key('maxage'):
        maxage = float(opts['maxage'])

    g = gedcom.Gedcom(fname)
    llg = gedcom.LineageLinkedGedcom(g)

    if output is not None:
        output.write('<html><body>\n')
        output.write(
            '<h1><a href="http://www.wikitree.com">WikiTree</a> Lint</h1>\n')
        output.write('<p>Report run at: ' + str(datetime.datetime.now()) +
                     '</p>\n')
        output.write('<p>input: ' + fname + '</p>\n')
        output.write('<el>Lint options\n')
        for k, v in opts.iteritems():
            output.write('<li>' + k)
            if v is not None:
                output.write(': ' + v)
            output.write('</li>\n')
        output.write('</el>\n')

    for i in llg.individuals:

        if i.records.has_key('WWW'):
            problems = []
            if maxage is not None and i.getAge(
            ) is not None and i.getAge() > maxage:
                problems.append('age {0} greater than maximum age {1}'.format(
                    i.getAge(), maxage))

            if opts.has_key('birth') and i.get('BIRT').get('DATE') is None:
                problems.append('missing birth date')
            if opts.has_key('death') and i.get('DEAT') is None:
                problems.append('missing date of death')
            if i.get('SEX') is None:
                problems.append('sex not defined')
            for obj in i.getAll('OBJE'):
                if obj.get('FORM').value == 'Message':
                    if obj.get('TEXT').value.lower().find('todo') != -1:
                        problems.append('todo found in message')
            if i.get('NOTE').get('TEXT').value.lower().find('todo') != -1:
                problems.append('todo found in bio')
            if len(problems):
                if output is not None:
                    output.write(i.html() + '\n')
                    output.write('<h3>Problems:</h3>\n')
                    output.write('<e1>\n')
                    for p in problems:
                        output.write('<li>' + p + '</li>\n')
                    output.write('</e1>\n')
                out('')
                out('\n'.join(problems))
                out(i)
                for obj in i.getAll('OBJE'):
                    if obj.get('FORM').value == 'Message':
                        out(obj.get('TEXT').value)

    if output is not None:
        output.write('</body></html>\n')
Exemple #2
0
    print '    defaults to only listing the urls, add check to actually check if they are valid'
    exit(1)


if len(sys.argv) not in [2, 3]:
    usage()

check = False

if len(sys.argv) == 3:
    if sys.argv[2] == 'check':
        check = True
    else:
        usage()

g = gedcom.Gedcom(sys.argv[1])
llg = gedcom.LineageLinkedGedcom(g)

urls = {}

for i in llg.individuals:
    if i.get('NOTE') is not None:
        for l in i.get('NOTE').get('TEXT').value.splitlines():
            start = l.find('http')
            if start != -1:
                #print l
                url = l[start:].split()[0]
                if '<' in url:
                    url = url[:url.find('<')]
                if ']' in url:
                    url = url[:url.find(']')]
Exemple #3
0
 def __init__(self, g):
     if type(g) == str:
         gedcom.LineageLinkedGedcom.__init__(self, gedcom.Gedcom(g),
                                             handlers)
     else:
         gedcom.LineageLinkedGedcom.__init__(self, g, handlers)
Exemple #4
0
 def __init__(self):
     """ Initialize test class."""
     self.parse_options()
     self.filename = self.options.filename
     self.g = gedcom.Gedcom(self.filename)
     self.info = 'names'
 def __init__(self):
     """ Initialize test class."""
     self.parse_options()
     self.filename = self.options.filename
     self.g = gedcom.Gedcom(getLinesFromFile(self.filename, encoding='utf-8'))
     self.info = 'names'