Merge pull request #6947 from AlanCoding/circular

Move circular group association validation to view
This commit is contained in:
Alan Rominger
2017-07-11 12:45:29 -04:00
committed by GitHub
3 changed files with 25 additions and 8 deletions

View File

@@ -2181,6 +2181,16 @@ class GroupChildrenList(ControlledByScmMixin, EnforceParentRelationshipMixin, Su
parent.delete()
return Response(status=status.HTTP_204_NO_CONTENT)
def is_valid_relation(self, parent, sub, created=False):
# Prevent any cyclical group associations.
parent_pks = set(parent.all_parents.values_list('pk', flat=True))
parent_pks.add(parent.pk)
child_pks = set(sub.all_children.values_list('pk', flat=True))
child_pks.add(sub.pk)
if parent_pks & child_pks:
return {'error': _('Cyclical Group association.')}
return None
class GroupPotentialChildrenList(SubListAPIView):