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 @@ def update(self, booklists, collections_attributes, plugboard):
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 @@ def deepcopy(self):
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 @@ def _upload_books(self, files, names, on_card=None, metadata=None, plugboards=No
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