]> git.ozlabs.org Git - patchwork/blobdiff - apps/patchwork/models.py
Eliminate hashlib requirement
[patchwork] / apps / patchwork / models.py
index e3fc9c7e1f7b068e0bb176c8d83ac35fb8d1873a..eef4b69ba6ca7db46965e827a5854ef871c2a082 100644 (file)
@@ -28,7 +28,6 @@ import re
 import datetime, time
 import string
 import random
-import hashlib
 from email.mime.text import MIMEText
 import email.utils
 
@@ -129,43 +128,6 @@ def _confirm_key():
         str += random.choice(allowedchars)
     return str;
 
-class RegistrationRequest(models.Model):
-    username = models.CharField(max_length = 30, unique = True)
-    first_name = models.CharField(max_length = 50)
-    last_name = models.CharField(max_length = 50)
-    email = models.CharField(max_length = 200, unique = True)
-    password = models.CharField(max_length = 200)
-    key = models.CharField(max_length = 32, default = _confirm_key)
-    date = models.DateTimeField(default=datetime.datetime.now)
-    active = models.BooleanField(default = True)
-
-    def create_user(self):
-       if not self.active:
-           return
-        user = User.objects.create_user(self.username,
-                self.email, self.password)
-        user.first_name = self.first_name
-        user.last_name = self.last_name
-        user.save()
-        profile = UserProfile(user = user)
-        profile.save()
-        self.active = False
-       self.save()
-
-        # link a person to this user. if none exists, create.
-        person = None
-        try:
-            person = Person.objects.get(email = user.email)
-        except Exception:
-            pass
-        if not person:
-            person = Person(email = user.email)
-
-        person.link_to_user(user)
-        person.save()
-
-        return user
-
 class UserPersonConfirmation(models.Model):
     user = models.ForeignKey(User)
     email = models.CharField(max_length = 200)
@@ -204,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':