diff mbox

management: Create 'rehash' command

Message ID 1448338047-1352-1-git-send-email-stephen.finucane@intel.com
State Accepted
Headers show

Commit Message

Stephen Finucane Nov. 24, 2015, 4:07 a.m. UTC
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@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

Comments

Stephen Finucane Nov. 24, 2015, 4:11 a.m. UTC | #1
On 24 Nov 04:07, Stephen Finucane wrote:
> 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@intel.com>

I'm still not sure if this should be converted to a command or just
deleted. Does anyone use it? It seems like the hash could never really
get out of date without manual DB modification (in which case you have
more than one problem) thanks to the 'save' method.

Jeremy - any input here?

Stephen
Jeremy Kerr Nov. 24, 2015, 6:15 a.m. UTC | #2
Hi Stephen,

>> 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@intel.com>
> 
> I'm still not sure if this should be converted to a command or just
> deleted. Does anyone use it? It seems like the hash could never really
> get out of date without manual DB modification (in which case you have
> more than one problem) thanks to the 'save' method.

This was useful when the hashes were first introduced, but wouldn't be
used much now. If we did need to change the hashing algorithm, (eg, move
to SHA1, or change which parts of a patch are included in the hashed
text), then it'd be required for that.

I'd say keep it in, since you've already done the work converting it :)

Cheers,


Jeremy
Stephen Finucane Nov. 24, 2015, 9:22 p.m. UTC | #3
On 24 Nov 14:15, Jeremy Kerr wrote:
> Hi Stephen,
> 
> >> 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@intel.com>
> > 
> > I'm still not sure if this should be converted to a command or just
> > deleted. Does anyone use it? It seems like the hash could never really
> > get out of date without manual DB modification (in which case you have
> > more than one problem) thanks to the 'save' method.
> 
> This was useful when the hashes were first introduced, but wouldn't be
> used much now. If we did need to change the hashing algorithm, (eg, move
> to SHA1, or change which parts of a patch are included in the hashed
> text), then it'd be required for that.
> 
> I'd say keep it in, since you've already done the work converting it :)

...and that's exactly what I'll do. Thanks, Jeremy.

Cheers,
Stephen
Stephen Finucane Nov. 29, 2015, 9:44 p.m. UTC | #4
On 24 Nov 21:22, Finucane, Stephen wrote:
> On 24 Nov 14:15, Jeremy Kerr wrote:
> > Hi Stephen,
> > 
> > >> 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@intel.com>
> > > 
> > > I'm still not sure if this should be converted to a command or just
> > > deleted. Does anyone use it? It seems like the hash could never really
> > > get out of date without manual DB modification (in which case you have
> > > more than one problem) thanks to the 'save' method.
> > 
> > This was useful when the hashes were first introduced, but wouldn't be
> > used much now. If we did need to change the hashing algorithm, (eg, move
> > to SHA1, or change which parts of a patch are included in the hashed
> > text), then it'd be required for that.
> > 
> > I'd say keep it in, since you've already done the work converting it :)
> 
> ...and that's exactly what I'll do. Thanks, Jeremy.
> 
> Cheers,
> Stephen

Merged.
diff mbox

Patch

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@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@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')