add batch publish command
[redakcja.git] / apps / catalogue / management / commands / fixdc.py
index 80b341c..564773e 100644 (file)
@@ -9,26 +9,35 @@ from catalogue.management import XmlUpdater
 from catalogue.management.commands import XmlUpdaterCommand
 
 
+def fix_wluri(elem, change, verbose):
+    try:
+        WLURI.strict(elem.text)
+    except ValidationError:
+        correct_field = unicode(WLURI.from_slug(
+            WLURI(elem.text.strip()).slug))
+        try:
+            WLURI.strict(correct_field)
+        except ValidationError:
+            # Can't make a valid WLURI out of it, leave as is.
+            return False
+        if verbose:
+            print "Changing %s from %s to %s" % (
+                elem.tag, elem.text, correct_field
+            )
+        elem.text = correct_field
+        return True
+
+
 class FixDC(XmlUpdater):
     commit_desc = "auto-fixing DC"
     retain_publishable = True
     only_first_chunk = True
 
-    def fix_wluri(elem, change, verbose):
-        try:
-            WLURI.strict(elem.text)
-        except ValidationError:
-            correct_field = unicode(WLURI.from_slug(WLURI(elem.text).slug))
-            if verbose:
-                print "Changing %s from %s to %s" % (
-                        elem.tag, elem.text, correct_field
-                    )
-            elem.text = correct_field
-            return True
     for field in BookInfo.FIELDS:
         if field.validator == WLURI:
             XmlUpdater.fixes_elements('.//' + field.uri)(fix_wluri)
 
+    # unused
     @XmlUpdater.fixes_elements(".//" + RDFNS("Description"))
     def fix_rdfabout(elem, change, verbose):
         correct_about = change.tree.book.correct_about()