From: Jeremy Kerr Date: Wed, 10 Sep 2008 03:20:29 +0000 (+1000) Subject: Simplify hashlib behaviour in HashField X-Git-Url: https://git.ozlabs.org/?a=commitdiff_plain;h=f69773c2f693da03eeb3334d2b0289d738873c63;hp=331db999e0306539940965123a001da135b0ac62;p=patchwork Simplify hashlib behaviour in HashField We only need to keep the size of the field required, not the whole hashlib constructor Signed-off-by: Jeremy Kerr --- diff --git a/apps/patchwork/models.py b/apps/patchwork/models.py index e2b636e..62ce592 100644 --- a/apps/patchwork/models.py +++ b/apps/patchwork/models.py @@ -177,29 +177,24 @@ class HashField(models.CharField): try: import hashlib self.hashlib = True - n_bytes = len(hashlib.new(self.algorithm).hexdigest()) + self.n_bytes = len(hashlib.new(self.algorithm).hexdigest()) except ImportError: self.hashlib = False if algorithm == 'sha1': import sha - self.hash_constructor = sha.new + hash_constructor = sha.new elif algorithm == 'md5': import md5 - self.hash_constructor = md5.new + hash_constructor = md5.new else: raise NameError("Unknown algorithm '%s'" % algorithm) - n_bytes = len(self.hash_constructor().hexdigest()) + self.n_bytes = len(hash_constructor().hexdigest()) - kwargs['max_length'] = n_bytes + kwargs['max_length'] = self.n_bytes super(HashField, self).__init__(*args, **kwargs) def db_type(self): - if self.hashlib: - import hashlib - n_bytes = len(hashlib.new(self.algorithm).hexdigest()) - else: - n_bytes = len(self.hash_constructor().hexdigest()) - return 'char(%d)' % n_bytes + return 'char(%d)' % self.n_bytes class Patch(models.Model): project = models.ForeignKey(Project)