taiga-back/greenmine/profile/services.py

24 lines
944 B
Python

from django.contrib.auth.models import Group
from greenmine.scrum.models import Project
class RoleGroupsService(object):
def replicate_role_on_all_projects(self, role):
for group in role.groups.all():
self._replicate_role_permissions_on_group(role, group)
for project in Project.objects.all():
self._replicate_role_on_project_if_needed(role, project)
def _replicate_role_permissions_on_group(self, role, group):
group.permissions.clear()
for permission in role.permissions.all():
group.permissions.add(permission)
group.save()
def _replicate_role_on_project_if_needed(self, role, project):
if project.groups.filter(role=role).count() == 0:
group = Group(name="p%d-r%d" % (project.pk, role.pk), role=role)
group.save()
role.groups.add(group)
self._replicate_role_permissions_on_group(role, group)