organization filters
[redakcja.git] / apps / toolbar / management / commands / fixbuttons.py
old mode 100755 (executable)
new mode 100644 (file)
index 627ef25..ea797fc
@@ -1,20 +1,25 @@
-# -*- conding: utf-8
-__author__="lreqc"
-__date__ ="$2009-09-08 14:31:26$"
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+#
+# This file is part of FNP-Redakcja, licensed under GNU Affero GPLv3 or later.
+# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
+#
+
 from django.core.management.base import NoArgsCommand
-from toolbar.models import Button
+from toolbar.models import Button, ButtonGroup
 from django.utils import simplejson as json
 import re
 
+
 class Command(NoArgsCommand):
-    
+
     def handle_noargs(self, **options):
         buttons = Button.objects.all()
         print "Validating parameters... "
         for b in buttons:
-            params = b.params;
+            params = b.params
             try:
-                v = json.loads(b.params)               
+                v = json.loads(b.params)
             except ValueError, e:
                 print 'Trying to fix button "%s" ...' % b.slug
                 if params[0] == u'(':
@@ -38,7 +43,7 @@ class Command(NoArgsCommand):
             if b.slug not in hash:
                 hash[b.slug] = b
                 continue
-                
+
             # duplicate button
             print "Found duplicate of '%s'" % b.slug
             a = hash[b.slug]
@@ -55,4 +60,14 @@ class Command(NoArgsCommand):
             b.group.clear()
 
             a.save()
-            b.delete()
+            if remove_duplicate:
+                b.delete()
+
+        print "Searching for empty groups and orphaned buttons:"
+        for g in ButtonGroup.objects.all():
+            if len(g.button_set.all()) == 0:
+                print "Empty group: '%s'" % g.slug
+
+        for b in Button.objects.all():
+            if len(b.group.all()) == 0:
+                print "orphan: '%s'" % b.slug