Skip to content
Snippets Groups Projects

Path ordering

Merged Erwan Rouchet requested to merge path-ordering into master
All threads resolved!
1 file
+ 6
3
Compare changes
  • Side-by-side
  • Inline
@@ -121,7 +121,7 @@ class Element(IndexableModel):
raise ValueError('Cannot add a descendant as a parent')
if order is None:
order = parent.get_next_order()
order = parent.get_next_order(self.type)
# Create new base link
ElementLink.objects.create(parent=parent, child=self, order=order)
@@ -173,11 +173,14 @@ class Element(IndexableModel):
# Finally create all new paths
ElementPath.objects.bulk_create(new_paths)
def get_next_order(self):
def get_next_order(self, type):
"""
Find the next ordering for a new child in ElementPath
"""
return ElementPath.objects.filter(path__last=self.id).aggregate(max=models.Max('ordering') + 1)['max'] or 0
assert isinstance(type, ElementType)
return ElementPath.objects \
.filter(path__last=self.id, element__type=type) \
.aggregate(max=models.Max('ordering') + 1)['max'] or 0
def __str__(self):
return '{} : {}'.format(self.type, self.name)
Loading