Skip to content

Commit 4f02a0c

Browse files
refactor: streamline object creation in workspace seed task and improve error handling in workspace creation
1 parent f41e121 commit 4f02a0c

File tree

2 files changed

+34
-19
lines changed

2 files changed

+34
-19
lines changed

apps/api/plane/app/views/workspace/base.py

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -75,14 +75,12 @@ def get_queryset(self):
7575

7676
def create(self, request):
7777
try:
78-
(DISABLE_WORKSPACE_CREATION,) = get_configuration_value(
79-
[
80-
{
81-
"key": "DISABLE_WORKSPACE_CREATION",
82-
"default": os.environ.get("DISABLE_WORKSPACE_CREATION", "0"),
83-
}
84-
]
85-
)
78+
(DISABLE_WORKSPACE_CREATION,) = get_configuration_value([
79+
{
80+
"key": "DISABLE_WORKSPACE_CREATION",
81+
"default": os.environ.get("DISABLE_WORKSPACE_CREATION", "0"),
82+
}
83+
])
8684

8785
if DISABLE_WORKSPACE_CREATION == "1":
8886
return Response(

apps/api/plane/bgtasks/workspace_seed_task.py

Lines changed: 28 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ def create_project_and_member(workspace: Workspace, bot_user: User) -> Dict[int,
9494
project_seed.pop("name", None)
9595
project_seed.pop("identifier", None)
9696

97-
project = Project.objects.create(
97+
project = Project(
9898
**project_seed,
9999
workspace=workspace,
100100
name=workspace.name, # Use workspace name
@@ -105,6 +105,7 @@ def create_project_and_member(workspace: Workspace, bot_user: User) -> Dict[int,
105105
module_view=True,
106106
issue_views_view=True,
107107
)
108+
project.save(created_by_id=bot_user.id, disable_auto_set_user=True)
108109

109110
# Create project members
110111
ProjectMember.objects.bulk_create([
@@ -187,13 +188,13 @@ def create_project_states(
187188
state_id = state_seed.pop("id")
188189
project_id = state_seed.pop("project_id")
189190

190-
state = State.objects.create(
191+
state = State(
191192
**state_seed,
192193
project_id=project_map[project_id],
193194
workspace=workspace,
194195
created_by_id=bot_user.id,
195196
)
196-
197+
state.save(created_by_id=bot_user.id, disable_auto_set_user=True)
197198
state_map[state_id] = state.id
198199
logger.info(f"Task: workspace_seed_task -> State {state_id} created")
199200
return state_map
@@ -220,12 +221,13 @@ def create_project_labels(
220221
for label_seed in label_seeds:
221222
label_id = label_seed.pop("id")
222223
project_id = label_seed.pop("project_id")
223-
label = Label.objects.create(
224+
label = Label(
224225
**label_seed,
225226
project_id=project_map[project_id],
226227
workspace=workspace,
227228
created_by_id=bot_user.id,
228229
)
230+
label.save(created_by_id=bot_user.id, disable_auto_set_user=True)
229231
label_map[label_id] = label.id
230232

231233
logger.info(f"Task: workspace_seed_task -> Label {label_id} created")
@@ -272,13 +274,14 @@ def create_project_issues(
272274
cycle_id = issue_seed.pop("cycle_id")
273275
module_ids = issue_seed.pop("module_ids")
274276

275-
issue = Issue.objects.create(
277+
issue = Issue(
276278
**issue_seed,
277279
state_id=states_map[state_id],
278280
project_id=project_map[project_id],
279281
workspace=workspace,
280282
created_by_id=bot_user.id,
281283
)
284+
issue.save(created_by_id=bot_user.id, disable_auto_set_user=True)
282285
IssueSequence.objects.create(
283286
issue=issue,
284287
project_id=project_map[project_id],
@@ -347,7 +350,7 @@ def create_pages(workspace: Workspace, project_map: Dict[int, uuid.UUID], bot_us
347350
for page_seed in page_seeds:
348351
page_id = page_seed.pop("id")
349352

350-
page = Page.objects.create(
353+
page = Page(
351354
workspace_id=workspace.id,
352355
is_global=False,
353356
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
361364
owned_by_id=bot_user.id,
362365
)
363366

367+
page.save(created_by_id=bot_user.id, disable_auto_set_user=True)
368+
364369
logger.info(f"Task: workspace_seed_task -> Page {page_id} created")
365370
if page_seed.get("project_id") and page_seed.get("type") == "PROJECT":
366-
ProjectPage.objects.create(
371+
project_page = ProjectPage(
367372
workspace_id=workspace.id,
368373
project_id=project_map[page_seed.get("project_id")],
369374
page_id=page.id,
370375
created_by_id=bot_user.id,
371376
updated_by_id=bot_user.id,
372377
)
373-
378+
project_page.save(created_by_id=bot_user.id, disable_auto_set_user=True)
374379
logger.info(f"Task: workspace_seed_task -> Project Page {page_id} created")
375380
return
376381

@@ -410,7 +415,7 @@ def create_cycles(workspace: Workspace, project_map: Dict[int, uuid.UUID], bot_u
410415
start_date = timezone.now() + timedelta(days=14)
411416
end_date = start_date + timedelta(days=14)
412417

413-
cycle = Cycle.objects.create(
418+
cycle = Cycle(
414419
**cycle_seed,
415420
start_date=start_date,
416421
end_date=end_date,
@@ -419,6 +424,7 @@ def create_cycles(workspace: Workspace, project_map: Dict[int, uuid.UUID], bot_u
419424
created_by_id=bot_user.id,
420425
owned_by_id=bot_user.id,
421426
)
427+
cycle.save(created_by_id=bot_user.id, disable_auto_set_user=True)
422428

423429
cycle_map[cycle_id] = cycle.id
424430
logger.info(f"Task: workspace_seed_task -> Cycle {cycle_id} created")
@@ -446,14 +452,15 @@ def create_modules(workspace: Workspace, project_map: Dict[int, uuid.UUID], bot_
446452
start_date = timezone.now() + timedelta(days=index * 2)
447453
end_date = start_date + timedelta(days=14)
448454

449-
module = Module.objects.create(
455+
module = Module(
450456
**module_seed,
451457
start_date=start_date,
452458
target_date=end_date,
453459
project_id=project_map[project_id],
454460
workspace=workspace,
455461
created_by_id=bot_user.id,
456462
)
463+
module.save(created_by_id=bot_user.id, disable_auto_set_user=True)
457464
module_map[module_id] = module.id
458465
logger.info(f"Task: workspace_seed_task -> Module {module_id} created")
459466
return module_map
@@ -474,13 +481,15 @@ def create_views(workspace: Workspace, project_map: Dict[int, uuid.UUID], bot_us
474481

475482
for view_seed in view_seeds:
476483
project_id = view_seed.pop("project_id")
477-
IssueView.objects.create(
484+
view_seed.pop("id")
485+
issue_view = IssueView(
478486
**view_seed,
479487
project_id=project_map[project_id],
480488
workspace=workspace,
481489
created_by_id=bot_user.id,
482490
owned_by_id=bot_user.id,
483491
)
492+
issue_view.save(created_by_id=bot_user.id, disable_auto_set_user=True)
484493

485494

486495
@shared_task
@@ -514,6 +523,14 @@ def workspace_seed(workspace_id: uuid.UUID) -> None:
514523
is_password_autoset=True,
515524
)
516525

526+
# Add bot user to workspace as member
527+
WorkspaceMember.objects.create(
528+
workspace=workspace,
529+
member=bot_user,
530+
role=20,
531+
company_role="",
532+
)
533+
517534
# Create a project with the same name as workspace
518535
project_map = create_project_and_member(workspace, bot_user)
519536

0 commit comments

Comments
 (0)