Prevent loop in Wiki

This commit is contained in:
Skia
2015-11-24 20:09:44 +01:00
parent 18115a0dc4
commit cdcf4099fc
4 changed files with 20 additions and 6 deletions

View File

@ -174,6 +174,21 @@ class Page(models.Model):
code='duplicate',
)
super(Page, self).clean()
if self.parent is not None and self in self.get_parent_list():
raise ValidationError(
_('Loop in page tree'),
code='loop',
)
def get_parent_list(self):
l = []
p = self.parent
while p is not None:
l.append(p)
p = p.parent
return l
def save(self, *args, **kwargs):
self.full_clean()