From: Ɓukasz Rekucki Date: Tue, 8 Sep 2009 17:34:14 +0000 (+0200) Subject: Zlacz takie same przyciski podczas naprawiania. X-Git-Url: https://git.mdrn.pl/redakcja.git/commitdiff_plain/537012c60af1ea1c0e39949c58df4647ddadc72b Zlacz takie same przyciski podczas naprawiania. --- diff --git a/apps/toolbar/management/commands/fixbuttons.py b/apps/toolbar/management/commands/fixbuttons.py index 2f15525b..627ef25d 100755 --- a/apps/toolbar/management/commands/fixbuttons.py +++ b/apps/toolbar/management/commands/fixbuttons.py @@ -10,26 +10,49 @@ class Command(NoArgsCommand): def handle_noargs(self, **options): buttons = Button.objects.all() + print "Validating parameters... " for b in buttons: params = b.params; try: - v = json.loads(b.params) - + v = json.loads(b.params) except ValueError, e: - print 'On button %s: ' % b.label, b.params - print e - # try to fix the bad json - - # cut the parenthis + print 'Trying to fix button "%s" ...' % b.slug if params[0] == u'(': params = params[1:] if params[-1] == u')': params = params[:-1] + try: + v = son.loads(re.sub(u'([\\w-]+)\\s*:', u'"\\1": ', params).encode('utf-8')) + except ValueError, e: + print "Unable to fix '%s' " % b.params + print "Try to fix this button manually and rerun the script." + return False - v = json.loads(re.sub(u'([\\w-]+)\\s*:', u'"\\1": ', params).encode('utf-8')) + # resave b.params = json.dumps(v) b.save() + print "Merge duplicate buttons (if any)..." + hash = {} + for b in buttons: + if b.slug not in hash: + hash[b.slug] = b + continue + + # duplicate button + print "Found duplicate of '%s'" % b.slug + a = hash[b.slug] + + remove_duplicate = True + if a.params != b.params: + print "Conflicting params for duplicate of '%s'." % b.slug + print "Groups will be joined, but won't remove duplicates." + remove_duplicate = False + for g in b.group.all(): + a.group.add(g) - + b.group.clear() + + a.save() + b.delete() diff --git a/dump_toolbar.sh b/dump_toolbar.sh index 58898eee..6dcbbe08 100755 --- a/dump_toolbar.sh +++ b/dump_toolbar.sh @@ -1 +1 @@ -./project/manage.py dumpdata --format=xml toolbar | xmllint --format - > fixtures/przyciski.xml.new +./project/manage.py dumpdata --format=xml toolbar | xmllint --format - > fixtures/przyciski.new.xml