Add a special deepcopy that only copies metadata, not the other random attributes that have been added.

This commit is contained in:
Charles Haley 2010-10-04 14:02:33 +01:00
parent 4ae7a3b8c9
commit 7e1e6bd746
4 changed files with 8 additions and 3 deletions

View File

@ -360,7 +360,7 @@ class XMLCache(object):
if record is None:
record = self.create_text_record(root, i, book.lpath)
if plugboard is not None:
newmi = book.deepcopy()
newmi = book.deepcopy_metadata()
newmi.template_to_attribute(book, plugboard)
else:
newmi = book

View File

@ -148,6 +148,11 @@ class Metadata(object):
object.__setattr__(m, '_data', copy.deepcopy(object.__getattribute__(self, '_data')))
return m
def deepcopy_metadata(self):
m = Metadata(None)
object.__setattr__(m, '_data', copy.deepcopy(object.__getattribute__(self, '_data')))
return m
def get(self, field, default=None):
try:
return self.__getattribute__(field)

View File

@ -357,7 +357,7 @@ class DeviceManager(Thread): # {{{
f, file=sys.__stdout__)
with open(f, 'r+b') as stream:
if cpb:
newmi = mi.deepcopy()
newmi = mi.deepcopy_metadata()
newmi.template_to_attribute(mi, cpb)
else:
newmi = mi

View File

@ -281,7 +281,7 @@ def save_book_to_disk(id, db, root, opts, length):
stream.seek(0)
try:
if cpb:
newmi = mi.deepcopy()
newmi = mi.deepcopy_metadata()
newmi.template_to_attribute(mi, cpb)
else:
newmi = mi