diff --git a/biscuit/core/forms.py b/biscuit/core/forms.py index 1f2d6c6c3ed28d48133c4b0abbe9aaa0e5b92dba..b9429a86f22093d1c860a2ce921d4d4da8cc3117 100644 --- a/biscuit/core/forms.py +++ b/biscuit/core/forms.py @@ -71,9 +71,10 @@ class EditPersonForm(forms.ModelForm): class EditGroupForm(forms.ModelForm): class Meta: model = Group - fields = ['name', 'short_name', 'members', 'owners'] + fields = ['name', 'short_name', 'members', 'owners', 'parent_groups'] def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.fields['members'].queryset = Person.objects.all() self.fields['owners'].queryset = Person.objects.all() + self.fields['parent_groups'].queryset = Group.objects.all() diff --git a/biscuit/core/migrations/0016_parent_groups.py b/biscuit/core/migrations/0016_parent_groups.py new file mode 100644 index 0000000000000000000000000000000000000000..a9067b2cbacd276e1f893d69315647b5108bb98b --- /dev/null +++ b/biscuit/core/migrations/0016_parent_groups.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.4 on 2019-09-02 19:01 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0015_person_photo_crop'), + ] + + operations = [ + migrations.AddField( + model_name='group', + name='parent_groups', + field=models.ManyToManyField(related_name='child_groups', to='core.Group', verbose_name='Parent groups'), + ), + ] diff --git a/biscuit/core/models.py b/biscuit/core/models.py index 12b97470bce6f6106d2b125c6f12f6054fc9a7d5..3ff9e31c32a2d777bcd5c0f6a0adfd9750ca6589 100644 --- a/biscuit/core/models.py +++ b/biscuit/core/models.py @@ -130,5 +130,8 @@ class Group(SchoolRelated): members = models.ManyToManyField('Person', related_name='member_of') owners = models.ManyToManyField('Person', related_name='owner_of') + parent_groups = models.ManyToManyField('self', related_name='child_groups', + symmetrical=False, verbose_name=_('Parent groups')) + def __str__(self) -> str: return '%s (%s)' % (self.name, self.short_name)