[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