Insert fields in order in ebook processing
authorDan Scott <dscott@laurentian.ca>
Thu, 25 Oct 2012 14:56:54 +0000 (10:56 -0400)
committerDan Scott <dscott@laurentian.ca>
Tue, 7 May 2013 18:58:21 +0000 (14:58 -0400)
pymarc 2.8.5 offers the add_ordered_field() method for inserting fields
in the correct numerical order in the record - so use that. Note that
you may have to run "easy_install --upgrade pymarc" to get the latest
version of pymarc installed.

Signed-off-by: Dan Scott <dscott@laurentian.ca>
tools/ebooks/prep_ebook_records.py [changed mode: 0644->0755]

old mode 100644 (file)
new mode 100755 (executable)
index 65fd373..7e483be
@@ -485,7 +485,7 @@ def process_fields(record, options):
                 'a', note_value
             ]
         )
-        record.add_field(note)
+        record.add_ordered_field(note)
 
     add_marc_source(record, options) # 598
     publisher = add_publisher(record, options) # 710
@@ -504,7 +504,7 @@ def process_fields(record, options):
             new_fields = process_urls(field, options, publisher)
             if new_fields:
                 for new_856 in new_fields:
-                    new_record.add_field(new_856)
+                    new_record.add_ordered_field(new_856)
         # Strip out 9xx fields: we don't want local fields in our records
         # except for 924 fields that we create
         elif field.tag[0] == '9' and field.tag != '924':
@@ -517,9 +517,9 @@ def process_fields(record, options):
                 tag='008',
                 data=field.value()[:22] + 's' + field.value()[24:]
             )
-            new_record.add_field(fixed_field)
+            new_record.add_ordered_field(fixed_field)
         else:
-            new_record.add_field(field)
+            new_record.add_ordered_field(field)
 
     if not marked_isbn:
         try:
@@ -544,7 +544,7 @@ def add_dupe_field(record, bib_id):
             'a', dup_value
         ]
     )
-    record.add_field(dup)
+    record.add_ordered_field(dup)
     return record
 
 def clean_diacritics(field):
@@ -728,7 +728,7 @@ def add_publisher(record, options):
                 '4', 'pbl'
             ]
         )
-        record.add_field(seven_ten)
+        record.add_ordered_field(seven_ten)
 
     return publisher
 
@@ -758,7 +758,7 @@ def add_platform(record, options):
                 'a', platform
             ]
         )
-        record.add_field(seven_ten)
+        record.add_ordered_field(seven_ten)
 
 def mark_isbn_for_sfx(record, options):
     """
@@ -796,7 +796,7 @@ def mark_isbn_for_sfx(record, options):
             )
 
         if urn is not None:
-            record.add_field(urn)
+            record.add_ordered_field(urn)
             return True
 
     return False
@@ -892,7 +892,7 @@ def add_restriction(new_record, options, publisher):
                 '9', libopts['lac_symbol']
             ]
         )
-        new_record.add_field(note)
+        new_record.add_ordered_field(note)
 
 def append_space_semi_space(note):
     """
@@ -927,7 +927,7 @@ def add_cat_source(record, options):
             indicators = [' ', ' '],
             subfields = [ 'd', 'CaOWA' ]
         )
-        record.add_field(forty)
+        record.add_ordered_field(forty)
 
 def add_marc_source(record, options):
     """
@@ -946,7 +946,7 @@ def add_marc_source(record, options):
             'c', str(RECORD_COUNT)
         ]
     )
-    record.add_field(marc_source)
+    record.add_ordered_field(marc_source)
 
 def process_urls(field, options, publisher):
     """Creates 856 fields required by Conifer"""