def create(cls, domain, name, permissions=None, assignable_by=None, **kwargs): from corehq.apps.users.models import Permissions with transaction.atomic(): role = UserRole.objects.create(domain=domain, name=name, **kwargs) if permissions is None: # match couch functionality and set default permissions permissions = Permissions() role.set_permissions(permissions.to_list()) if assignable_by: if not isinstance(assignable_by, list): assignable_by = [assignable_by] role.set_assignable_by(assignable_by) return role