def _set_base_permissions(self, obj): update_permissions = False if not obj.id: if not obj.is_private: # Creating a public project update_permissions = True else: if self.get_object().is_private != obj.is_private: # Changing project public state update_permissions = True if update_permissions: permissions_services.set_base_permissions_for_project(obj)
def _set_base_permissions(self, obj): update_permissions = False if not obj.id: if not obj.is_private: # Creating a public project update_permissions = True else: if self.get_object().is_private != obj.is_private: # Changing project public state update_permissions = True if update_permissions: permissions_services.set_base_permissions_for_project(obj)
def duplicate_project(project, **new_project_extra_args): owner = new_project_extra_args.get("owner") users = new_project_extra_args.pop("users") disconnect_projects_signals() Project = apps.get_model("projects", "Project") new_project = Project.objects.create(**new_project_extra_args) connect_projects_signals() permissions_services.set_base_permissions_for_project(new_project) # Cloning the structure from the old project using templates Template = apps.get_model("projects", "ProjectTemplate") template = Template() template.load_data_from_project(project) template.apply_to_project(new_project) new_project.creation_template = project.creation_template new_project.save() # Creating the membership for the new owner Membership = apps.get_model("projects", "Membership") Membership.objects.create( user=owner, is_admin=True, role=new_project.roles.get(slug=template.default_owner_role), project=new_project ) # Creating the extra memberships for user in users: project_memberships = project.memberships.exclude(user_id=owner.id) membership = get_object_or_404(project_memberships, user_id=user["id"]) Membership.objects.create( user=membership.user, is_admin=membership.is_admin, role=new_project.roles.get(slug=membership.role.slug), project=new_project ) # Take initial snapshot for the project take_snapshot(new_project, user=owner) return new_project
def duplicate_project(project, **new_project_extra_args): owner = new_project_extra_args.get("owner") users = new_project_extra_args.pop("users") disconnect_projects_signals() Project = apps.get_model("projects", "Project") new_project = Project.objects.create(**new_project_extra_args) connect_projects_signals() permissions_services.set_base_permissions_for_project(new_project) # Cloning the structure from the old project using templates Template = apps.get_model("projects", "ProjectTemplate") template = Template() template.load_data_from_project(project) template.apply_to_project(new_project) new_project.creation_template = project.creation_template new_project.save() # Creating the membership for the new owner Membership = apps.get_model("projects", "Membership") Membership.objects.create( user=owner, is_admin=True, role=new_project.roles.get(slug=template.default_owner_role), project=new_project ) # Creating the extra memberships for user in users: project_memberships = project.memberships.exclude(user_id=owner.id) membership = get_object_or_404(project_memberships, user_id=user["id"]) Membership.objects.create( user=membership.user, is_admin=membership.is_admin, role=new_project.roles.get(slug=membership.role.slug), project=new_project ) # Take initial snapshot for the project take_snapshot(new_project, user=owner) return new_project