[PATCH] management: Create 'rehash' command

Stephen Finucane stephen.finucane at intel.com
Tue Nov 24 15:07:27 AEDT 2015


The rehash script, though undocumented and possibly unused at the
moment, likely has some value to some users. Howver, it makes more
sense to provide this command as a management command like 'retag'.
Do this.

Signed-off-by: Stephen Finucane <stephen.finucane at intel.com>
---
 patchwork/bin/rehash.py                 | 34 ----------------------
 patchwork/management/commands/rehash.py | 50 +++++++++++++++++++++++++++++++++
 2 files changed, 50 insertions(+), 34 deletions(-)
 delete mode 100755 patchwork/bin/rehash.py
 create mode 100644 patchwork/management/commands/rehash.py

diff --git a/patchwork/bin/rehash.py b/patchwork/bin/rehash.py
deleted file mode 100755
index c44e49b..0000000
--- a/patchwork/bin/rehash.py
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/usr/bin/env python
-#
-# Patchwork - automated patch tracking system
-# Copyright (C) 2008 Jeremy Kerr <jk at ozlabs.org>
-#
-# This file is part of the Patchwork package.
-#
-# Patchwork is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# Patchwork is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Patchwork; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-from patchwork.models import Patch
-import sys
-
-if __name__ == '__main__':
-    if len(sys.argv) > 1:
-        patches = Patch.objects.filter(id__in = sys.argv[1:])
-    else:
-        patches = Patch.objects.all()
-
-    for patch in patches:
-        print patch.id, patch.name
-        patch.hash = None
-        patch.save()
diff --git a/patchwork/management/commands/rehash.py b/patchwork/management/commands/rehash.py
new file mode 100644
index 0000000..a694d96
--- /dev/null
+++ b/patchwork/management/commands/rehash.py
@@ -0,0 +1,50 @@
+#!/usr/bin/env python
+#
+# Patchwork - automated patch tracking system
+# Copyright (C) 2008 Jeremy Kerr <jk at ozlabs.org>
+# Copyright (C) 2015 Intel Corporation
+#
+# This file is part of the Patchwork package.
+#
+# Patchwork is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# Patchwork is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Patchwork; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+import sys
+
+from django.core.management.base import BaseCommand
+
+from patchwork.models import Patch
+
+
+class Command(BaseCommand):
+    help = 'Update the hashes on existing patches'
+    args = '[<patch_id>...]'
+
+    def handle(self, *args, **options):
+        query = Patch.objects
+
+        if args:
+            query = query.filter(id_in=args)
+        else:
+            query = query.all()
+
+        count = query.count()
+
+        for i, patch in enumerate(query.iterator()):
+            patch.hash = None
+            patch.save()
+            if (i % 10) == 0:
+                self.stdout.write('%06d/%06d\r' % (i, count), ending='')
+                self.stdout.flush()
+        self.stdout.write('\ndone')
-- 
2.0.0



More information about the Patchwork mailing list