* src/ArgHandler.py: Command line support for geneweb import

and export; Fix command line exports for gedcom, XML, and package.
* src/Exporter.py (help): Point to correct manual section.
* src/const.py.in: Add a constant for geneweb mime type name.
* src/plugins/WriteFtree.py: Support wizard and fix command line mode.
* src/plugins/writeftree.glade: Support export wizard.
* src/plugins/WritePkg.py: Support wizard and fix command line mode.
* src/plugins/ImportGeneWeb.py: Comment out debugging messages.
* src/plugins/WriteGeneWeb.py: Support for command-line export.


svn: r4054
This commit is contained in:
Alex Roitman
2005-02-19 19:05:48 +00:00
parent 3ca70aac2d
commit 14052b42db
9 changed files with 297 additions and 349 deletions

View File

@@ -152,7 +152,7 @@ class ArgHandler:
if opt_ix<len(options)-1 \
and options[opt_ix+1][0] in ( '-f', '--format'):
format = options[opt_ix+1][1]
if format not in ('gedcom','gramps-xml','gramps-pkg','grdb'):
if format not in ('gedcom','gramps-xml','gramps-pkg','grdb','geneweb'):
print "Invalid format: %s" % format
print "Ignoring input file: %s" % fname
continue
@@ -164,6 +164,8 @@ class ArgHandler:
format = 'gramps-xml'
elif ftype == const.app_gramps:
format = 'grdb'
elif ftype == const.app_geneweb:
format = 'geneweb'
else:
print "Unrecognized format for input file %s" % fname
print "Ignoring input file: %s" % fname
@@ -174,7 +176,7 @@ class ArgHandler:
if opt_ix<len(options)-1 \
and options[opt_ix+1][0] in ( '-f', '--format'):
outformat = options[opt_ix+1][1]
if outformat not in ('gedcom','gramps-xml','gramps-pkg','grdb','iso','wft'):
if outformat not in ('gedcom','gramps-xml','gramps-pkg','grdb','iso','wft','geneweb'):
print "Invalid format: %s" % outformat
print "Ignoring output file: %s" % outfname
continue
@@ -184,6 +186,8 @@ class ArgHandler:
outformat = 'gramps-pkg'
elif outfname[-3:].upper() == "WFT":
outformat = 'wft'
elif outfname[-2:].upper() == "GW":
outformat = 'geneweb'
elif not os.path.isfile(outfname):
if not os.path.isdir(outfname):
try:
@@ -426,6 +430,14 @@ class ArgHandler:
except:
print "Error importing %s" % filename
os._exit(1)
elif format == 'geneweb':
import ImportGeneWeb
filename = os.path.normpath(os.path.abspath(filename))
try:
ImportGeneWeb.importData(self.parent.db,filename,None)
except:
print "Error importing %s" % filename
os._exit(1)
elif format == 'gramps-pkg':
# Create tempdir, if it does not exist, then check for writability
tmpdir_path = os.path.expanduser("~/.gramps/tmp" )
@@ -484,8 +496,8 @@ class ArgHandler:
if format == 'gedcom':
import WriteGedcom
try:
g = WriteGedcom.GedcomWriter(self.parent.db,None,1,filename)
del g
gw = WriteGedcom.GedcomWriter(self.parent.db,None,1,filename)
ret = gw.export_data(filename)
except:
print "Error exporting %s" % filename
os._exit(1)
@@ -494,63 +506,41 @@ class ArgHandler:
dbname = os.path.join(filename,const.xmlFile)
if filename:
try:
self.parent.save_media(filename)
self.parent.db.save(dbname,None)
import WriteXML
g = WriteXML.XmlWriter(self.parent.db,None,1,1)
ret = g.write(dbname)
except:
print "Error exporting %s" % filename
os._exit(1)
elif format == 'gramps-pkg':
import TarFile
import WriteXML
from cStringIO import StringIO
try:
t = TarFile.TarFile(filename)
mtime = time.time()
import WritePkg
writer = WritePkg.PackageWriter(self.parent.db,filename)
ret = writer.export()
except:
print "Error creating %s" % filename
os._exit(1)
try:
# Write media files first, since the database may be modified
# during the process (i.e. when removing object)
for m_id in self.parent.db.get_media_object_handles():
mobject = self.parent.db.get_object_from_handle(m_id)
oldfile = mobject.get_path()
base = os.path.basename(oldfile)
if os.path.isfile(oldfile):
g = open(oldfile,"rb")
t.add_file(base,mtime,g)
g.close()
else:
print "Warning: media file %s was not found," % base,\
"so it was ignored."
except:
print "Error exporting media files to %s" % filename
os._exit(1)
try:
# Write XML now
g = StringIO()
gfile = WriteXML.XmlWriter(self.parent.db,None,1)
gfile.write_handle(g)
mtime = time.time()
t.add_file("data.gramps",mtime,g)
g.close()
t.close()
except:
print "Error exporting data to %s" % filename
os._exit(1)
elif format == 'iso':
import WriteCD
try:
WriteCD.PackageWriter(self.parent.db,1,filename)
except:
print "Error exporting %s" % filename
os._exit(1)
print "\tISO format is temporarily disabled."
#import WriteCD
#try:
# WriteCD.PackageWriter(self.parent.db,1,filename)
#except:
# print "Error exporting %s" % filename
# os._exit(1)
elif format == 'wft':
import WriteFtree
try:
WriteFtree.FtreeWriter(self.parent.db,None,1,filename)
writer = WriteFtree.FtreeWriter(self.parent.db,None,1,filename)
ret = writer.export_data()
except:
print "Error exporting %s" % filename
os._exit(1)
elif format == 'geneweb':
import WriteGeneWeb
try:
writer = WriteGeneWeb.GeneWebWriter(self.parent.db,None,1,filename)
ret = writer.export_data()
except:
print "Error exporting %s" % filename
os._exit(1)