+class BundlePatch(models.Model):
+ patch = models.ForeignKey(Patch)
+ bundle = models.ForeignKey(Bundle)
+ order = models.IntegerField()
+
+ class Meta:
+ unique_together = [('bundle', 'patch')]
+ ordering = ['order']
+
+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__iexact = self.email)
+ except Exception:
+ pass
+ if not person:
+ person = Person(email = self.email)
+
+ person.link_to_user(self.user)
+ person.save()
+ self.active = False
+ self.save()
+
+ 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()
+
+