mirror of
https://github.com/makeplane/plane.git
synced 2025-12-16 20:07:56 +01:00
refactor: streamline object creation in workspace seed task and improve error handling in workspace creation
This commit is contained in:
@@ -75,14 +75,12 @@ class WorkSpaceViewSet(BaseViewSet):
|
|||||||
|
|
||||||
def create(self, request):
|
def create(self, request):
|
||||||
try:
|
try:
|
||||||
(DISABLE_WORKSPACE_CREATION,) = get_configuration_value(
|
(DISABLE_WORKSPACE_CREATION,) = get_configuration_value([
|
||||||
[
|
|
||||||
{
|
{
|
||||||
"key": "DISABLE_WORKSPACE_CREATION",
|
"key": "DISABLE_WORKSPACE_CREATION",
|
||||||
"default": os.environ.get("DISABLE_WORKSPACE_CREATION", "0"),
|
"default": os.environ.get("DISABLE_WORKSPACE_CREATION", "0"),
|
||||||
}
|
}
|
||||||
]
|
])
|
||||||
)
|
|
||||||
|
|
||||||
if DISABLE_WORKSPACE_CREATION == "1":
|
if DISABLE_WORKSPACE_CREATION == "1":
|
||||||
return Response(
|
return Response(
|
||||||
|
|||||||
@@ -94,7 +94,7 @@ def create_project_and_member(workspace: Workspace, bot_user: User) -> Dict[int,
|
|||||||
project_seed.pop("name", None)
|
project_seed.pop("name", None)
|
||||||
project_seed.pop("identifier", None)
|
project_seed.pop("identifier", None)
|
||||||
|
|
||||||
project = Project.objects.create(
|
project = Project(
|
||||||
**project_seed,
|
**project_seed,
|
||||||
workspace=workspace,
|
workspace=workspace,
|
||||||
name=workspace.name, # Use workspace name
|
name=workspace.name, # Use workspace name
|
||||||
@@ -105,6 +105,7 @@ def create_project_and_member(workspace: Workspace, bot_user: User) -> Dict[int,
|
|||||||
module_view=True,
|
module_view=True,
|
||||||
issue_views_view=True,
|
issue_views_view=True,
|
||||||
)
|
)
|
||||||
|
project.save(created_by_id=bot_user.id, disable_auto_set_user=True)
|
||||||
|
|
||||||
# Create project members
|
# Create project members
|
||||||
ProjectMember.objects.bulk_create([
|
ProjectMember.objects.bulk_create([
|
||||||
@@ -187,13 +188,13 @@ def create_project_states(
|
|||||||
state_id = state_seed.pop("id")
|
state_id = state_seed.pop("id")
|
||||||
project_id = state_seed.pop("project_id")
|
project_id = state_seed.pop("project_id")
|
||||||
|
|
||||||
state = State.objects.create(
|
state = State(
|
||||||
**state_seed,
|
**state_seed,
|
||||||
project_id=project_map[project_id],
|
project_id=project_map[project_id],
|
||||||
workspace=workspace,
|
workspace=workspace,
|
||||||
created_by_id=bot_user.id,
|
created_by_id=bot_user.id,
|
||||||
)
|
)
|
||||||
|
state.save(created_by_id=bot_user.id, disable_auto_set_user=True)
|
||||||
state_map[state_id] = state.id
|
state_map[state_id] = state.id
|
||||||
logger.info(f"Task: workspace_seed_task -> State {state_id} created")
|
logger.info(f"Task: workspace_seed_task -> State {state_id} created")
|
||||||
return state_map
|
return state_map
|
||||||
@@ -220,12 +221,13 @@ def create_project_labels(
|
|||||||
for label_seed in label_seeds:
|
for label_seed in label_seeds:
|
||||||
label_id = label_seed.pop("id")
|
label_id = label_seed.pop("id")
|
||||||
project_id = label_seed.pop("project_id")
|
project_id = label_seed.pop("project_id")
|
||||||
label = Label.objects.create(
|
label = Label(
|
||||||
**label_seed,
|
**label_seed,
|
||||||
project_id=project_map[project_id],
|
project_id=project_map[project_id],
|
||||||
workspace=workspace,
|
workspace=workspace,
|
||||||
created_by_id=bot_user.id,
|
created_by_id=bot_user.id,
|
||||||
)
|
)
|
||||||
|
label.save(created_by_id=bot_user.id, disable_auto_set_user=True)
|
||||||
label_map[label_id] = label.id
|
label_map[label_id] = label.id
|
||||||
|
|
||||||
logger.info(f"Task: workspace_seed_task -> Label {label_id} created")
|
logger.info(f"Task: workspace_seed_task -> Label {label_id} created")
|
||||||
@@ -272,13 +274,14 @@ def create_project_issues(
|
|||||||
cycle_id = issue_seed.pop("cycle_id")
|
cycle_id = issue_seed.pop("cycle_id")
|
||||||
module_ids = issue_seed.pop("module_ids")
|
module_ids = issue_seed.pop("module_ids")
|
||||||
|
|
||||||
issue = Issue.objects.create(
|
issue = Issue(
|
||||||
**issue_seed,
|
**issue_seed,
|
||||||
state_id=states_map[state_id],
|
state_id=states_map[state_id],
|
||||||
project_id=project_map[project_id],
|
project_id=project_map[project_id],
|
||||||
workspace=workspace,
|
workspace=workspace,
|
||||||
created_by_id=bot_user.id,
|
created_by_id=bot_user.id,
|
||||||
)
|
)
|
||||||
|
issue.save(created_by_id=bot_user.id, disable_auto_set_user=True)
|
||||||
IssueSequence.objects.create(
|
IssueSequence.objects.create(
|
||||||
issue=issue,
|
issue=issue,
|
||||||
project_id=project_map[project_id],
|
project_id=project_map[project_id],
|
||||||
@@ -347,7 +350,7 @@ def create_pages(workspace: Workspace, project_map: Dict[int, uuid.UUID], bot_us
|
|||||||
for page_seed in page_seeds:
|
for page_seed in page_seeds:
|
||||||
page_id = page_seed.pop("id")
|
page_id = page_seed.pop("id")
|
||||||
|
|
||||||
page = Page.objects.create(
|
page = Page(
|
||||||
workspace_id=workspace.id,
|
workspace_id=workspace.id,
|
||||||
is_global=False,
|
is_global=False,
|
||||||
access=page_seed.get("access", Page.PUBLIC_ACCESS),
|
access=page_seed.get("access", Page.PUBLIC_ACCESS),
|
||||||
@@ -361,16 +364,18 @@ def create_pages(workspace: Workspace, project_map: Dict[int, uuid.UUID], bot_us
|
|||||||
owned_by_id=bot_user.id,
|
owned_by_id=bot_user.id,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
page.save(created_by_id=bot_user.id, disable_auto_set_user=True)
|
||||||
|
|
||||||
logger.info(f"Task: workspace_seed_task -> Page {page_id} created")
|
logger.info(f"Task: workspace_seed_task -> Page {page_id} created")
|
||||||
if page_seed.get("project_id") and page_seed.get("type") == "PROJECT":
|
if page_seed.get("project_id") and page_seed.get("type") == "PROJECT":
|
||||||
ProjectPage.objects.create(
|
project_page = ProjectPage(
|
||||||
workspace_id=workspace.id,
|
workspace_id=workspace.id,
|
||||||
project_id=project_map[page_seed.get("project_id")],
|
project_id=project_map[page_seed.get("project_id")],
|
||||||
page_id=page.id,
|
page_id=page.id,
|
||||||
created_by_id=bot_user.id,
|
created_by_id=bot_user.id,
|
||||||
updated_by_id=bot_user.id,
|
updated_by_id=bot_user.id,
|
||||||
)
|
)
|
||||||
|
project_page.save(created_by_id=bot_user.id, disable_auto_set_user=True)
|
||||||
logger.info(f"Task: workspace_seed_task -> Project Page {page_id} created")
|
logger.info(f"Task: workspace_seed_task -> Project Page {page_id} created")
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -410,7 +415,7 @@ def create_cycles(workspace: Workspace, project_map: Dict[int, uuid.UUID], bot_u
|
|||||||
start_date = timezone.now() + timedelta(days=14)
|
start_date = timezone.now() + timedelta(days=14)
|
||||||
end_date = start_date + timedelta(days=14)
|
end_date = start_date + timedelta(days=14)
|
||||||
|
|
||||||
cycle = Cycle.objects.create(
|
cycle = Cycle(
|
||||||
**cycle_seed,
|
**cycle_seed,
|
||||||
start_date=start_date,
|
start_date=start_date,
|
||||||
end_date=end_date,
|
end_date=end_date,
|
||||||
@@ -419,6 +424,7 @@ def create_cycles(workspace: Workspace, project_map: Dict[int, uuid.UUID], bot_u
|
|||||||
created_by_id=bot_user.id,
|
created_by_id=bot_user.id,
|
||||||
owned_by_id=bot_user.id,
|
owned_by_id=bot_user.id,
|
||||||
)
|
)
|
||||||
|
cycle.save(created_by_id=bot_user.id, disable_auto_set_user=True)
|
||||||
|
|
||||||
cycle_map[cycle_id] = cycle.id
|
cycle_map[cycle_id] = cycle.id
|
||||||
logger.info(f"Task: workspace_seed_task -> Cycle {cycle_id} created")
|
logger.info(f"Task: workspace_seed_task -> Cycle {cycle_id} created")
|
||||||
@@ -446,7 +452,7 @@ def create_modules(workspace: Workspace, project_map: Dict[int, uuid.UUID], bot_
|
|||||||
start_date = timezone.now() + timedelta(days=index * 2)
|
start_date = timezone.now() + timedelta(days=index * 2)
|
||||||
end_date = start_date + timedelta(days=14)
|
end_date = start_date + timedelta(days=14)
|
||||||
|
|
||||||
module = Module.objects.create(
|
module = Module(
|
||||||
**module_seed,
|
**module_seed,
|
||||||
start_date=start_date,
|
start_date=start_date,
|
||||||
target_date=end_date,
|
target_date=end_date,
|
||||||
@@ -454,6 +460,7 @@ def create_modules(workspace: Workspace, project_map: Dict[int, uuid.UUID], bot_
|
|||||||
workspace=workspace,
|
workspace=workspace,
|
||||||
created_by_id=bot_user.id,
|
created_by_id=bot_user.id,
|
||||||
)
|
)
|
||||||
|
module.save(created_by_id=bot_user.id, disable_auto_set_user=True)
|
||||||
module_map[module_id] = module.id
|
module_map[module_id] = module.id
|
||||||
logger.info(f"Task: workspace_seed_task -> Module {module_id} created")
|
logger.info(f"Task: workspace_seed_task -> Module {module_id} created")
|
||||||
return module_map
|
return module_map
|
||||||
@@ -474,13 +481,15 @@ def create_views(workspace: Workspace, project_map: Dict[int, uuid.UUID], bot_us
|
|||||||
|
|
||||||
for view_seed in view_seeds:
|
for view_seed in view_seeds:
|
||||||
project_id = view_seed.pop("project_id")
|
project_id = view_seed.pop("project_id")
|
||||||
IssueView.objects.create(
|
view_seed.pop("id")
|
||||||
|
issue_view = IssueView(
|
||||||
**view_seed,
|
**view_seed,
|
||||||
project_id=project_map[project_id],
|
project_id=project_map[project_id],
|
||||||
workspace=workspace,
|
workspace=workspace,
|
||||||
created_by_id=bot_user.id,
|
created_by_id=bot_user.id,
|
||||||
owned_by_id=bot_user.id,
|
owned_by_id=bot_user.id,
|
||||||
)
|
)
|
||||||
|
issue_view.save(created_by_id=bot_user.id, disable_auto_set_user=True)
|
||||||
|
|
||||||
|
|
||||||
@shared_task
|
@shared_task
|
||||||
@@ -514,6 +523,14 @@ def workspace_seed(workspace_id: uuid.UUID) -> None:
|
|||||||
is_password_autoset=True,
|
is_password_autoset=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Add bot user to workspace as member
|
||||||
|
WorkspaceMember.objects.create(
|
||||||
|
workspace=workspace,
|
||||||
|
member=bot_user,
|
||||||
|
role=20,
|
||||||
|
company_role="",
|
||||||
|
)
|
||||||
|
|
||||||
# Create a project with the same name as workspace
|
# Create a project with the same name as workspace
|
||||||
project_map = create_project_and_member(workspace, bot_user)
|
project_map = create_project_and_member(workspace, bot_user)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user