X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/877f24b0b26f4f2473f8d6dfe2946a213bd286c0..3e2dfb260f88c4c4efe1840c0ec38e652f070b4d:/scripts/fix_something.py diff --git a/scripts/fix_something.py b/scripts/fix_something.py index 59781308..c9f9a681 100755 --- a/scripts/fix_something.py +++ b/scripts/fix_something.py @@ -10,6 +10,7 @@ sys.path.append('./lib') from django.core.management import setup_environ from redakcja import settings +from lxml import etree setup_environ(settings) @@ -21,21 +22,39 @@ fixed = {} 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 @@ -46,9 +65,12 @@ opts, oth_ = getopt.getopt(sys.argv[1:], 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)