X-Git-Url: https://git.ozlabs.org/?a=blobdiff_plain;f=apps%2Fpatchwork%2Fmodels.py;h=226a69c3a4037d64afbb3684189a2d446df8d3a5;hb=0deabd4014cbc9419d203356786e966c4f803ea3;hp=62ce59266b8a445a5c3a1516dd1fd4d83335b451;hpb=f69773c2f693da03eeb3334d2b0289d738873c63;p=patchwork diff --git a/apps/patchwork/models.py b/apps/patchwork/models.py index 62ce592..226a69c 100644 --- a/apps/patchwork/models.py +++ b/apps/patchwork/models.py @@ -176,19 +176,19 @@ class HashField(models.CharField): self.algorithm = algorithm try: import hashlib - self.hashlib = True + def _construct(string = ''): + return hashlib.new(self.algorithm, string) + self.construct = _construct self.n_bytes = len(hashlib.new(self.algorithm).hexdigest()) except ImportError: - self.hashlib = False - if algorithm == 'sha1': - import sha - hash_constructor = sha.new - elif algorithm == 'md5': - import md5 - hash_constructor = md5.new - else: + modules = { 'sha1': 'sha', 'md5': 'md5'} + + if algorithm not in modules.keys(): raise NameError("Unknown algorithm '%s'" % algorithm) - self.n_bytes = len(hash_constructor().hexdigest()) + + self.construct = __import__(modules[algorithm]).new + + self.n_bytes = len(self.construct().hexdigest()) kwargs['max_length'] = self.n_bytes super(HashField, self).__init__(*args, **kwargs)