123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- #!/usr/bin/env python
- # * Copyright 2001 Rod Senra <Rodrigo.Senra@ic.unicamp.br>
- # *
- # * This file 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.
- # *
- import re
- import sys
- header = """<?xml version="1.0" encoding="ISO-8859-1"?>
- <addressbook>
- <common_address>
- """
- footer = """
- </common_address>
- <personal_address>
- </personal_address>
- </addressbook>
- """
- def printGroupRec(fd,name,members):
- """ Print XML group record from r-tuple"""
- fd.write(" <group name=\"%s\">\n"%(name))
- for each in members:
- printRec(fd,each," ")
- fd.write(" </group>\n")
- def printRec(fd,r,ident):
- """ Print XML group record from r-tuple"""
- fd.write("%s<item>\n"%(ident) )
- fd.write("%s <name>%s</name>\n"%(ident,r[0]))
- fd.write("%s <address>%s</address>\n"%(ident,r[1]))
- fd.write("%s <remarks>%s</remarks>\n"%(ident,r[2]))
- fd.write("%s</item>\n"%(ident))
-
- outfd = open('addressbook.xml','w')
- outfd.write(header)
- try:
- rec = {}
- for line in open(sys.argv[1]).readlines():
- line = line[:-1].strip() # clean string
- if line=='':
- try:
- if rec.has_key('description'):
- str = rec['description']
- elif rec.has_key('xmozillanickname'):
- str = rec['xmozillanickname']
- elif rec.has_key('sn'):
- str = rec['sn']
- else:
- str = ''
- try:
- if rec.has_key('member'):
- printGroupRec(outfd,rec['cn'].strip(),rec['member'])
- elif rec.has_key('mail'):
- printRec(outfd,(rec['cn'].strip(),rec['mail'].strip(),str.strip())," ")
- except KeyError:
- pass
- finally:
- del rec
- rec = {}
- continue
- try: # parse line
- key,value = line.split(':')
- except:
- continue
- if key=='member':
- name,addr = value.split(',')
- name = name.split('=')[1].strip()
- addr = addr.split('=')[1].strip()
- value = (name,addr,'')
- if rec.has_key('member'):
- rec['member'].append(value)
- else :
- rec['member'] = [value]
- else:
- rec[key]=value
-
- finally:
- outfd.write(footer)
- outfd.close()
|