refactor(projects): remove project membership access model
This commit is contained in:
@@ -1,32 +0,0 @@
|
||||
from rest_framework.exceptions import ValidationError
|
||||
from apps.projects.models import ProjectMembership
|
||||
|
||||
def add_project_member(project, user_id, role):
|
||||
"""
|
||||
Adds a user to a project. Ensures no duplicate active memberships exist.
|
||||
"""
|
||||
if ProjectMembership.objects.filter(project=project, user_id=user_id, is_deleted=False).exists():
|
||||
raise ValidationError({"user_id": "This user is already a member of the project."})
|
||||
|
||||
return ProjectMembership.objects.create(
|
||||
project=project,
|
||||
user_id=user_id,
|
||||
role=role,
|
||||
is_active=True
|
||||
)
|
||||
|
||||
def update_project_member(membership, **kwargs):
|
||||
"""
|
||||
Updates a project membership (e.g., changing role or active status).
|
||||
"""
|
||||
update_fields = []
|
||||
for field, value in kwargs.items():
|
||||
if hasattr(membership, field) and getattr(membership, field) != value:
|
||||
setattr(membership, field, value)
|
||||
update_fields.append(field)
|
||||
|
||||
if update_fields:
|
||||
update_fields.append("updated_at")
|
||||
membership.save(update_fields=update_fields)
|
||||
|
||||
return membership
|
||||
@@ -1,18 +1,17 @@
|
||||
from django.db import transaction
|
||||
from django.shortcuts import get_object_or_404
|
||||
from rest_framework.exceptions import ValidationError, PermissionDenied
|
||||
|
||||
from apps.clients.models import Client
|
||||
from apps.projects.models import Project, ProjectMembership
|
||||
from apps.workspaces.models import WorkspaceMembership
|
||||
from django.db import transaction
|
||||
from django.shortcuts import get_object_or_404
|
||||
from rest_framework.exceptions import ValidationError, PermissionDenied
|
||||
|
||||
from apps.clients.models import Client
|
||||
from apps.projects.models import Project
|
||||
from apps.workspaces.models import WorkspaceMembership
|
||||
|
||||
|
||||
@transaction.atomic
|
||||
def create_project(user, workspace, name, client=None, description="", color=""):
|
||||
"""
|
||||
Creates a new project and automatically assigns the creator
|
||||
as an active MANAGER of that project.
|
||||
"""
|
||||
def create_project(user, workspace, name, client=None, description="", color=""):
|
||||
"""
|
||||
Creates a new workspace-shared project.
|
||||
"""
|
||||
workspace_member = WorkspaceMembership.objects.filter(
|
||||
workspace=workspace,
|
||||
user=user,
|
||||
@@ -36,14 +35,7 @@ def create_project(user, workspace, name, client=None, description="", color="")
|
||||
updated_by=user,
|
||||
)
|
||||
|
||||
ProjectMembership.objects.create(
|
||||
project=project,
|
||||
user=user,
|
||||
role=ProjectMembership.Role.MANAGER,
|
||||
is_active=True
|
||||
)
|
||||
|
||||
return project
|
||||
return project
|
||||
|
||||
|
||||
def update_project(project, **kwargs):
|
||||
|
||||
Reference in New Issue
Block a user