track annotation id in table to avoid IntegrityErrors while adding multiple annotations to one item, fixes #2780

This commit is contained in:
j 2015-05-20 00:43:33 +05:30
commit ef56f4aec4
3 changed files with 198 additions and 9 deletions

View file

@ -115,14 +115,7 @@ class Annotation(models.Model):
def set_public_id(self):
if self.id:
public_id = Annotation.objects.filter(item=self.item, id__lt=self.id).count() + 1
if public_id > 1:
previous = Annotation.objects.filter(item=self.item,
id__lt=self.id).order_by('-id')[0]
if not previous.public_id:
previous.set_public_id()
public_id = ox.fromAZ(previous.public_id.split('/')[-1]) + 1
self.public_id = "%s/%s" % (self.item.public_id, ox.toAZ(public_id))
self.public_id = self.item.next_annotationid()
Annotation.objects.filter(id=self.id).update(public_id=self.public_id)
@classmethod