class Patch(models.Model):
project = models.ForeignKey(Project)
- msgid = models.CharField(max_length=255, unique = True)
+ msgid = models.CharField(max_length=255)
name = models.CharField(max_length=255)
date = models.DateTimeField(default=datetime.datetime.now)
submitter = models.ForeignKey(Person)
class Meta:
verbose_name_plural = 'Patches'
ordering = ['date']
+ unique_together = [('msgid', 'project')]
class Comment(models.Model):
patch = models.ForeignKey(Patch)
- msgid = models.CharField(max_length=255, unique = True)
+ msgid = models.CharField(max_length=255)
submitter = models.ForeignKey(Person)
date = models.DateTimeField(default = datetime.datetime.now)
headers = models.TextField(blank = True)
class Meta:
ordering = ['date']
+ unique_together = [('msgid', 'patch')]
class Bundle(models.Model):
owner = models.ForeignKey(User)
project = models.ForeignKey(Project)
name = models.CharField(max_length = 50, null = False, blank = False)
- patches = models.ManyToManyField(Patch)
+ patches = models.ManyToManyField(Patch, through = 'BundlePatch')
public = models.BooleanField(default = False)
def n_patches(self):
return self.patches.all().count()
+ def append_patch(self, patch):
+ # todo: use the aggregate queries in django 1.1
+ orders = BundlePatch.objects.filter(bundle = self).values('order')
+ max_order = max([ v for (k, v) in orders])
+
+ bp = BundlePatch.objects.create(bundle = self, patch = patch, order = max_order + 1)
+ bp.save()
+
class Meta:
unique_together = [('owner', 'name')]
return '\n'.join([p.mbox().as_string(True) \
for p in self.patches.all()])
+class BundlePatch(models.Model):
+ patch = models.ForeignKey(Patch)
+ bundle = models.ForeignKey(Bundle)
+ order = models.IntegerField()
+
+ class Meta:
+ unique_together = [('bundle', 'patch'), ('bundle', 'order')]
+
class UserPersonConfirmation(models.Model):
user = models.ForeignKey(User)
email = models.CharField(max_length = 200)
return
person = None
try:
- person = Person.objects.get(email = self.email)
+ person = Person.objects.get(email__iexact = self.email)
except Exception:
pass
if not person: