import datetime, time
import string
import random
-import hashlib
from email.mime.text import MIMEText
import email.utils
class Meta:
verbose_name_plural = 'People'
- class Admin:
- pass
-
class Project(models.Model):
linkname = models.CharField(max_length=255, unique=True)
name = models.CharField(max_length=255, unique=True)
def __str__(self):
return self.name
- class Admin:
- pass
-
class UserProfile(models.Model):
user = models.ForeignKey(User, unique = True)
primary_project = models.ForeignKey(Project, null = True)
person.user = self.user
person.save()
- class Admin:
- pass
-
def __str__(self):
return self.name()
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)
-
- def create_user(self):
- 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.delete()
-
- # 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 Admin:
- pass
-
class UserPersonConfirmation(models.Model):
user = models.ForeignKey(User)
email = models.CharField(max_length = 200)
- date = models.DateTimeField(default=datetime.datetime.now)
key = models.CharField(max_length = 32, default = _confirm_key)
+ date = models.DateTimeField(default=datetime.datetime.now)
+ active = models.BooleanField(default = True)
def confirm(self):
+ if not self.active:
+ return
person = None
try:
person = Person.objects.get(email = self.email)
person.link_to_user(self.user)
person.save()
-
-
- class Admin:
- pass
-
+ self.active = False
class State(models.Model):
name = models.CharField(max_length = 100)
class Meta:
ordering = ['ordering']
- class Admin:
- pass
-
class HashField(models.Field):
__metaclass__ = models.SubfieldBase
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':
verbose_name_plural = 'Patches'
ordering = ['date']
- class Admin:
- pass
-
class Comment(models.Model):
patch = models.ForeignKey(Patch)
msgid = models.CharField(max_length=255, unique = True)
headers = models.TextField(blank = True)
content = models.TextField()
- class Admin:
- pass
-
class Meta:
ordering = ['date']
class Meta:
unique_together = [('owner', 'name')]
- class Admin:
- pass
-
def public_url(self):
if not self.public:
return None