diff options
-rw-r--r-- | apps/patchwork/models.py | 59 | ||||
-rw-r--r-- | lib/sql/migration/002-extend-userpersonconfirmation-key-length.sql | 4 |
2 files changed, 34 insertions, 29 deletions
diff --git a/apps/patchwork/models.py b/apps/patchwork/models.py index 226a69c..e516be2 100644 --- a/apps/patchwork/models.py +++ b/apps/patchwork/models.py @@ -129,35 +129,6 @@ class UserProfile(models.Model): def __str__(self): return self.name() -def _confirm_key(): - allowedchars = string.ascii_lowercase + string.digits - str = '' - for i in range(1, 32): - str += random.choice(allowedchars) - return str; - -class UserPersonConfirmation(models.Model): - user = models.ForeignKey(User) - email = 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 confirm(self): - if not self.active: - return - person = None - try: - person = Person.objects.get(email = self.email) - except Exception: - pass - if not person: - person = Person(email = self.email) - - person.link_to_user(self.user) - person.save() - self.active = False - class State(models.Model): name = models.CharField(max_length = 100) ordering = models.IntegerField(unique = True) @@ -316,3 +287,33 @@ class Bundle(models.Model): return '\n'.join([p.mbox().as_string(True) \ for p in self.patches.all()]) +class UserPersonConfirmation(models.Model): + user = models.ForeignKey(User) + email = models.CharField(max_length = 200) + key = HashField() + 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) + except Exception: + pass + if not person: + person = Person(email = self.email) + + person.link_to_user(self.user) + person.save() + self.active = False + + def save(self): + max = 1 << 32 + if self.key == '': + str = '%s%s%d' % (self.user, self.email, random.randint(0, max)) + self.key = self._meta.get_field('key').construct(str).hexdigest() + super(UserPersonConfirmation, self).save() + + diff --git a/lib/sql/migration/002-extend-userpersonconfirmation-key-length.sql b/lib/sql/migration/002-extend-userpersonconfirmation-key-length.sql new file mode 100644 index 0000000..fa10fba --- /dev/null +++ b/lib/sql/migration/002-extend-userpersonconfirmation-key-length.sql @@ -0,0 +1,4 @@ +BEGIN; +ALTER TABLE patchwork_userpersonconfirmation + ALTER COLUMN key TYPE char(40); +COMMIT; |