from django.core.management import setup_environ
from redakcja import settings
+from lxml import etree
setup_environ(settings)
tag_with_name = r"<([^>]+)name=\"([^>]+)>"
def fix(book, author, dry_run=True):
- if len(book) == 0:
- print "%s does not contain chunks" % book.slug
- return
fc = book[0]
txt = fc.materialize()
newtxt, cnt = re.subn(tag_with_name, r'<\1nazwa="\2>', txt)
if cnt == 0:
- print "%s nothing changed" % book
+ print "%s ==> nothing changed" % book.slug
return
if not dry_run:
- print "%s changing" % book
+ print "%s ==> changing" % book.slug
fc.commit(newtxt, author=author, description=u"Automatyczna zmiana atrybutu name na nazwa")
+ else:
+ print "%s ==> i would change this" % book.slug
+
+def fix_empty_opis(book, author, dry_run=True):
+ fc = book[0]
+ txt = fc.materialize()
+ try:
+ t = etree.fromstring(txt)
+ empty_opis = t.xpath('//opis[not(node())]')
+ empty_cwiczenie = t.xpath('//cwiczenie[not(node())]')
+
+ if empty_opis:
+ print "%s: opis/ x %d" % (book.slug, len(empty_opis))
+ if empty_cwiczenie:
+ print "%s: cwiczenie/ x %d" % (book.slug, len(empty_cwiczenie))
+
+ except:
+ print "%s didn't parse" % b.slug
+ return
+
+
import sys
import getopt
dry_run = not (("--seriously",'') in opts)
me = User.objects.get(username='marcinkoziej')
if dry_run:
- print "This is a dry run, to really change dates, run with --seriously"
+ print "This is a dry run, to really fix something, run with --seriously"
for b in Book.objects.all():
- fix(b, me, dry_run)
+ if len(b) == 0:
+ print "%s ==> does not contain chunks" % b.slug
+ continue
+ fix_empty_opis(b, me, dry_run)