summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorNate Case <ncase@xes-inc.com>2008-08-22 15:58:02 -0500
committerJeremy Kerr <jk@ozlabs.org>2008-08-23 10:51:05 +0800
commit97d8d152a5f832f6266a33622e25f4ae5f7dc068 (patch)
tree71de5d5cf6ec9aafadc384a2fd5bd3bf77bb36ae /apps
parent8252a61e73126c2b89c97e4195c635bc3d60a3e9 (diff)
downloadpatchwork-97d8d152a5f832f6266a33622e25f4ae5f7dc068.tar.bz2
patchwork-97d8d152a5f832f6266a33622e25f4ae5f7dc068.tar.xz
Eliminate hashlib requirement
If the hashlib module does not exist, use sha and md5 modules instead to support Python 2.4. The hashlib module was added to Python 2.5. Signed-off-by: Nate Case <ncase@xes-inc.com> Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Diffstat (limited to 'apps')
-rw-r--r--apps/patchwork/models.py20
-rw-r--r--apps/patchwork/parser.py9
2 files changed, 25 insertions, 4 deletions
diff --git a/apps/patchwork/models.py b/apps/patchwork/models.py
index a40931a..eef4b69 100644
--- a/apps/patchwork/models.py
+++ b/apps/patchwork/models.py
@@ -28,7 +28,6 @@ import re
import datetime, time
import string
import random
-import hashlib
from email.mime.text import MIMEText
import email.utils
@@ -167,10 +166,27 @@ class HashField(models.Field):
def __init__(self, algorithm = 'sha1', *args, **kwargs):
self.algorithm = algorithm
+ try:
+ import hashlib
+ self.hashlib = True
+ except ImportError:
+ self.hashlib = False
+ if algorithm == 'sha1':
+ import sha
+ self.hash_constructor = sha.new
+ elif algorithm == 'md5':
+ import md5
+ self.hash_constructor = md5.new
+ else:
+ raise NameError("Unknown algorithm '%s'" % algorithm)
+
super(HashField, self).__init__(*args, **kwargs)
def db_type(self):
- n_bytes = len(hashlib.new(self.algorithm).digest())
+ if self.hashlib:
+ n_bytes = len(hashlib.new(self.algorithm).digest())
+ else:
+ n_bytes = len(self.hash_constructor().digest())
if settings.DATABASE_ENGINE == 'postgresql':
return 'bytea'
elif settings.DATABASE_ENGINE == 'mysql':
diff --git a/apps/patchwork/parser.py b/apps/patchwork/parser.py
index ecc1d4b..bb6fce0 100644
--- a/apps/patchwork/parser.py
+++ b/apps/patchwork/parser.py
@@ -21,7 +21,12 @@
import re
-import hashlib
+try:
+ import hashlib
+ sha1_hash = hashlib.sha1
+except ImportError:
+ import sha
+ sha1_hash = sha.sha
_hunk_re = re.compile('^\@\@ -\d+(?:,(\d+))? \+\d+(?:,(\d+))? \@\@')
_filename_re = re.compile('^(---|\+\+\+) (\S+)')
@@ -158,7 +163,7 @@ def patch_hash(str):
lines = str.split('\n')
prefixes = ['-', '+', ' ']
- hash = hashlib.sha1()
+ hash = sha1_hash()
for line in str.split('\n'):