* src/GrampsDb/_GrampsBSDDB.py: Fix new db creation; make metadata
work with UseTXN set either way. svn: r7162
This commit is contained in:
parent
a2cf746c00
commit
cb1323f4f9
@ -1,4 +1,6 @@
|
|||||||
2006-08-12 Alex Roitman <shura@gramps-project.org>
|
2006-08-12 Alex Roitman <shura@gramps-project.org>
|
||||||
|
* src/GrampsDb/_GrampsBSDDB.py: Fix new db creation; make metadata
|
||||||
|
work with UseTXN set either way.
|
||||||
* src/ViewManager.py (_connect_signals): Connect to the proper
|
* src/ViewManager.py (_connect_signals): Connect to the proper
|
||||||
event to cleanly quit on window manager's close action.
|
event to cleanly quit on window manager's close action.
|
||||||
(quit): Allow variable number of args (to work with signals).
|
(quit): Allow variable number of args (to work with signals).
|
||||||
|
@ -157,15 +157,13 @@ class GrampsBSDDB(GrampsDbBase,UpdateCallback):
|
|||||||
else:
|
else:
|
||||||
return db.DB_CREATE
|
return db.DB_CREATE
|
||||||
|
|
||||||
def open_table(self,name,dbname,no_txn=False,dbtype=db.DB_HASH):
|
def open_table(self,file_name,table_name,dbtype=db.DB_HASH):
|
||||||
dbmap = dbshelve.DBShelf(self.env)
|
dbmap = dbshelve.DBShelf(self.env)
|
||||||
dbmap.db.set_pagesize(16384)
|
dbmap.db.set_pagesize(16384)
|
||||||
if self.readonly:
|
if self.readonly:
|
||||||
dbmap.open(name, dbname, dbtype, db.DB_RDONLY)
|
dbmap.open(file_name, table_name, dbtype, db.DB_RDONLY)
|
||||||
elif no_txn:
|
|
||||||
dbmap.open(name, dbname, dbtype, db.DB_CREATE, 0666)
|
|
||||||
else:
|
else:
|
||||||
dbmap.open(name, dbname, dbtype, self.open_flags(), 0666)
|
dbmap.open(file_name, table_name, dbtype, self.open_flags(), 0666)
|
||||||
return dbmap
|
return dbmap
|
||||||
|
|
||||||
def _all_handles(self,table):
|
def _all_handles(self,table):
|
||||||
@ -276,9 +274,16 @@ class GrampsBSDDB(GrampsDbBase,UpdateCallback):
|
|||||||
def set_default_person_handle(self, handle):
|
def set_default_person_handle(self, handle):
|
||||||
"""sets the default Person to the passed instance"""
|
"""sets the default Person to the passed instance"""
|
||||||
if not self.readonly:
|
if not self.readonly:
|
||||||
the_txn = self.env.txn_begin()
|
if self.UseTXN:
|
||||||
|
# Start transaction if needed
|
||||||
|
the_txn = self.env.txn_begin()
|
||||||
|
else:
|
||||||
|
the_txn = None
|
||||||
self.metadata.put('default',str(handle),txn=the_txn)
|
self.metadata.put('default',str(handle),txn=the_txn)
|
||||||
the_txn.commit()
|
if self.UseTXN:
|
||||||
|
the_txn.commit()
|
||||||
|
else:
|
||||||
|
self.metadata.sync()
|
||||||
|
|
||||||
def get_default_person(self):
|
def get_default_person(self):
|
||||||
"""returns the default Person of the database"""
|
"""returns the default Person of the database"""
|
||||||
@ -286,16 +291,30 @@ class GrampsBSDDB(GrampsDbBase,UpdateCallback):
|
|||||||
if person:
|
if person:
|
||||||
return person
|
return person
|
||||||
elif (self.metadata) and (not self.readonly):
|
elif (self.metadata) and (not self.readonly):
|
||||||
the_txn = self.env.txn_begin()
|
if self.UseTXN:
|
||||||
|
# Start transaction if needed
|
||||||
|
the_txn = self.env.txn_begin()
|
||||||
|
else:
|
||||||
|
the_txn = None
|
||||||
self.metadata.put('default',None,txn=the_txn)
|
self.metadata.put('default',None,txn=the_txn)
|
||||||
the_txn.commit()
|
if self.UseTXN:
|
||||||
|
the_txn.commit()
|
||||||
|
else:
|
||||||
|
self.metadata.sync()
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def _set_column_order(self, col_list, name):
|
def _set_column_order(self, col_list, name):
|
||||||
if self.metadata and not self.readonly:
|
if self.metadata and not self.readonly:
|
||||||
the_txn = self.env.txn_begin()
|
if self.UseTXN:
|
||||||
|
# Start transaction if needed
|
||||||
|
the_txn = self.env.txn_begin()
|
||||||
|
else:
|
||||||
|
the_txn = None
|
||||||
self.metadata.put(name,col_list,txn=the_txn)
|
self.metadata.put(name,col_list,txn=the_txn)
|
||||||
the_txn.commit()
|
if self.UseTXN:
|
||||||
|
the_txn.commit()
|
||||||
|
else:
|
||||||
|
self.metadata.sync()
|
||||||
|
|
||||||
def version_supported(self):
|
def version_supported(self):
|
||||||
dbversion = self.metadata.get('version',default=0)
|
dbversion = self.metadata.get('version',default=0)
|
||||||
@ -364,15 +383,27 @@ class GrampsBSDDB(GrampsDbBase,UpdateCallback):
|
|||||||
|
|
||||||
self._load_metadata()
|
self._load_metadata()
|
||||||
|
|
||||||
gstats = self.metadata.get('gender_stats',default=[])
|
gstats = self.metadata.get('gender_stats',default=None)
|
||||||
|
|
||||||
if not self.readonly:
|
if not self.readonly:
|
||||||
the_txn = self.env.txn_begin()
|
if self.UseTXN:
|
||||||
|
# Start transaction if needed
|
||||||
|
the_txn = self.env.txn_begin()
|
||||||
|
else:
|
||||||
|
the_txn = None
|
||||||
|
|
||||||
if gstats == None:
|
if gstats == None:
|
||||||
|
# New database. Set up the current version.
|
||||||
self.metadata.put('version',_DBVERSION,txn=the_txn)
|
self.metadata.put('version',_DBVERSION,txn=the_txn)
|
||||||
elif not self.metadata.has_key('version'):
|
elif not self.metadata.has_key('version'):
|
||||||
|
# Not new database, but the version is missing.
|
||||||
|
# Use 0, but it is likely to fail anyway.
|
||||||
self.metadata.put('version',0,txn=the_txn)
|
self.metadata.put('version',0,txn=the_txn)
|
||||||
the_txn.commit()
|
|
||||||
|
if self.UseTXN:
|
||||||
|
the_txn.commit()
|
||||||
|
else:
|
||||||
|
self.metadata.sync()
|
||||||
|
|
||||||
self.genderStats = GenderStats(gstats)
|
self.genderStats = GenderStats(gstats)
|
||||||
|
|
||||||
@ -869,7 +900,11 @@ class GrampsBSDDB(GrampsDbBase,UpdateCallback):
|
|||||||
|
|
||||||
def _close_metadata(self):
|
def _close_metadata(self):
|
||||||
if not self.readonly:
|
if not self.readonly:
|
||||||
the_txn = self.env.txn_begin()
|
if self.UseTXN:
|
||||||
|
# Start transaction if needed
|
||||||
|
the_txn = self.env.txn_begin()
|
||||||
|
else:
|
||||||
|
the_txn = None
|
||||||
|
|
||||||
# name display formats
|
# name display formats
|
||||||
self.metadata.put('name_formats',self.name_formats,txn=the_txn)
|
self.metadata.put('name_formats',self.name_formats,txn=the_txn)
|
||||||
@ -916,7 +951,10 @@ class GrampsBSDDB(GrampsDbBase,UpdateCallback):
|
|||||||
txn=the_txn)
|
txn=the_txn)
|
||||||
self.metadata.put('mattr_names',list(self.media_attributes),
|
self.metadata.put('mattr_names',list(self.media_attributes),
|
||||||
txn=the_txn)
|
txn=the_txn)
|
||||||
the_txn.commit()
|
if self.UseTXN:
|
||||||
|
the_txn.commit()
|
||||||
|
else:
|
||||||
|
self.metadata.sync()
|
||||||
|
|
||||||
self.metadata.close()
|
self.metadata.close()
|
||||||
|
|
||||||
@ -1374,9 +1412,16 @@ class GrampsBSDDB(GrampsDbBase,UpdateCallback):
|
|||||||
if val[1] != 6:
|
if val[1] != 6:
|
||||||
order.append(val)
|
order.append(val)
|
||||||
self.set_media_column_order(order)
|
self.set_media_column_order(order)
|
||||||
the_txn = self.env.txn_begin()
|
if self.UseTXN:
|
||||||
|
# Start transaction if needed
|
||||||
|
the_txn = self.env.txn_begin()
|
||||||
|
else:
|
||||||
|
the_txn = None
|
||||||
self.metadata.put('version',6,txn=the_txn)
|
self.metadata.put('version',6,txn=the_txn)
|
||||||
the_txn.commit()
|
if self.UseTXN:
|
||||||
|
the_txn.commit()
|
||||||
|
else:
|
||||||
|
self.metadata.sync()
|
||||||
|
|
||||||
def gramps_upgrade_7(self):
|
def gramps_upgrade_7(self):
|
||||||
print "Upgrading to DB version 7"
|
print "Upgrading to DB version 7"
|
||||||
@ -1390,9 +1435,16 @@ class GrampsBSDDB(GrampsDbBase,UpdateCallback):
|
|||||||
self.genderStats.count_person(p)
|
self.genderStats.count_person(p)
|
||||||
data = cursor.next()
|
data = cursor.next()
|
||||||
cursor.close()
|
cursor.close()
|
||||||
the_txn = self.env.txn_begin()
|
if self.UseTXN:
|
||||||
|
# Start transaction if needed
|
||||||
|
the_txn = self.env.txn_begin()
|
||||||
|
else:
|
||||||
|
the_txn = None
|
||||||
self.metadata.put('version',7,txn=the_txn)
|
self.metadata.put('version',7,txn=the_txn)
|
||||||
the_txn.commit()
|
if self.UseTXN:
|
||||||
|
the_txn.commit()
|
||||||
|
else:
|
||||||
|
self.metadata.sync()
|
||||||
|
|
||||||
def gramps_upgrade_8(self):
|
def gramps_upgrade_8(self):
|
||||||
print "Upgrading to DB version 8"
|
print "Upgrading to DB version 8"
|
||||||
@ -1421,9 +1473,16 @@ class GrampsBSDDB(GrampsDbBase,UpdateCallback):
|
|||||||
self.family_event_names.add(event.name)
|
self.family_event_names.add(event.name)
|
||||||
data = cursor.next()
|
data = cursor.next()
|
||||||
cursor.close()
|
cursor.close()
|
||||||
the_txn = self.env.txn_begin()
|
if self.UseTXN:
|
||||||
|
# Start transaction if needed
|
||||||
|
the_txn = self.env.txn_begin()
|
||||||
|
else:
|
||||||
|
the_txn = None
|
||||||
self.metadata.put('version',8,txn=the_txn)
|
self.metadata.put('version',8,txn=the_txn)
|
||||||
the_txn.commit()
|
if self.UseTXN:
|
||||||
|
the_txn.commit()
|
||||||
|
else:
|
||||||
|
self.metadata.sync()
|
||||||
|
|
||||||
def gramps_upgrade_9(self):
|
def gramps_upgrade_9(self):
|
||||||
print "Upgrading to DB version 9 -- this may take a while"
|
print "Upgrading to DB version 9 -- this may take a while"
|
||||||
@ -1439,11 +1498,19 @@ class GrampsBSDDB(GrampsDbBase,UpdateCallback):
|
|||||||
for name in (PERSON_COL_KEY,CHILD_COL_KEY,PLACE_COL_KEY,SOURCE_COL_KEY,
|
for name in (PERSON_COL_KEY,CHILD_COL_KEY,PLACE_COL_KEY,SOURCE_COL_KEY,
|
||||||
MEDIA_COL_KEY,EVENT_COL_KEY,FAMILY_COL_KEY):
|
MEDIA_COL_KEY,EVENT_COL_KEY,FAMILY_COL_KEY):
|
||||||
try:
|
try:
|
||||||
the_txn = self.env.txn_begin()
|
if self.UseTXN:
|
||||||
|
# Start transaction if needed
|
||||||
|
the_txn = self.env.txn_begin()
|
||||||
|
else:
|
||||||
|
the_txn = None
|
||||||
self.metadata.delete(name,txn=the_txn)
|
self.metadata.delete(name,txn=the_txn)
|
||||||
the_txn.commit()
|
if self.UseTXN:
|
||||||
|
the_txn.commit()
|
||||||
|
else:
|
||||||
|
self.metadata.sync()
|
||||||
except KeyError:
|
except KeyError:
|
||||||
the_txn.abort()
|
if self.UseTXN:
|
||||||
|
the_txn.abort()
|
||||||
|
|
||||||
# Then we remove the surname secondary index table
|
# Then we remove the surname secondary index table
|
||||||
# because its format changed from HASH to DUPSORTed BTREE.
|
# because its format changed from HASH to DUPSORTed BTREE.
|
||||||
@ -1465,13 +1532,21 @@ class GrampsBSDDB(GrampsDbBase,UpdateCallback):
|
|||||||
### Now we're ready to proceed with the normal upgrade.
|
### Now we're ready to proceed with the normal upgrade.
|
||||||
# First, make sure the stored default person handle is str, not unicode
|
# First, make sure the stored default person handle is str, not unicode
|
||||||
try:
|
try:
|
||||||
the_txn = self.env.txn_begin()
|
if self.UseTXN:
|
||||||
|
# Start transaction if needed
|
||||||
|
the_txn = self.env.txn_begin()
|
||||||
|
else:
|
||||||
|
the_txn = None
|
||||||
handle = self.metadata.get('default',txn=the_txn)
|
handle = self.metadata.get('default',txn=the_txn)
|
||||||
self.metadata.put('default',str(handle),txn=the_txn)
|
self.metadata.put('default',str(handle),txn=the_txn)
|
||||||
the_txn.commit()
|
if self.UseTXN:
|
||||||
|
the_txn.commit()
|
||||||
|
else:
|
||||||
|
self.metadata.sync()
|
||||||
except KeyError:
|
except KeyError:
|
||||||
# default person was not stored in database
|
# default person was not stored in database
|
||||||
the_txn.abort()
|
if self.UseTXN:
|
||||||
|
the_txn.abort()
|
||||||
|
|
||||||
# The rest of the upgrade deals with real data, not metadata
|
# The rest of the upgrade deals with real data, not metadata
|
||||||
# so starting (batch) transaction here.
|
# so starting (batch) transaction here.
|
||||||
@ -1777,10 +1852,16 @@ class GrampsBSDDB(GrampsDbBase,UpdateCallback):
|
|||||||
# Close secodnary index
|
# Close secodnary index
|
||||||
self.reference_map_primary_map.close()
|
self.reference_map_primary_map.close()
|
||||||
|
|
||||||
# Separate transaction to save metadata
|
if self.UseTXN:
|
||||||
the_txn = self.env.txn_begin()
|
# Separate transaction to save metadata
|
||||||
|
the_txn = self.env.txn_begin()
|
||||||
|
else:
|
||||||
|
the_txn = None
|
||||||
self.metadata.put('version',9,txn=the_txn)
|
self.metadata.put('version',9,txn=the_txn)
|
||||||
the_txn.commit()
|
if self.UseTXN:
|
||||||
|
the_txn.commit()
|
||||||
|
else:
|
||||||
|
self.metadata.sync()
|
||||||
|
|
||||||
print "Done upgrading to DB version 9"
|
print "Done upgrading to DB version 9"
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user