Skip to content

Commit a37e5e2

Browse files
[WEB-5598] refactor: streamline object creation in workspace seed task and improve error handling in workspace creation #8264
1 parent a976bea commit a37e5e2

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
@@ -77,14 +77,12 @@ def get_queryset(self):
7777

7878
def create(self, request):
7979
try:
80-
(DISABLE_WORKSPACE_CREATION,) = get_configuration_value(
81-
[
82-
{
83-
"key": "DISABLE_WORKSPACE_CREATION",
84-
"default": os.environ.get("DISABLE_WORKSPACE_CREATION", "0"),
85-
}
86-
]
87-
)
80+
(DISABLE_WORKSPACE_CREATION,) = get_configuration_value([
81+
{
82+
"key": "DISABLE_WORKSPACE_CREATION",
83+
"default": os.environ.get("DISABLE_WORKSPACE_CREATION", "0"),
84+
}
85+
])
8886

8987
if DISABLE_WORKSPACE_CREATION == "1":
9088
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(
@@ -191,13 +192,13 @@ def create_project_states(
191192
state_id = state_seed.pop("id")
192193
project_id = state_seed.pop("project_id")
193194

194-
state = State.objects.create(
195+
state = State(
195196
**state_seed,
196197
project_id=project_map[project_id],
197198
workspace=workspace,
198199
created_by_id=bot_user.id,
199200
)
200-
201+
state.save(created_by_id=bot_user.id, disable_auto_set_user=True)
201202
state_map[state_id] = state.id
202203
logger.info(f"Task: workspace_seed_task -> State {state_id} created")
203204
return state_map
@@ -224,12 +225,13 @@ def create_project_labels(
224225
for label_seed in label_seeds:
225226
label_id = label_seed.pop("id")
226227
project_id = label_seed.pop("project_id")
227-
label = Label.objects.create(
228+
label = Label(
228229
**label_seed,
229230
project_id=project_map[project_id],
230231
workspace=workspace,
231232
created_by_id=bot_user.id,
232233
)
234+
label.save(created_by_id=bot_user.id, disable_auto_set_user=True)
233235
label_map[label_id] = label.id
234236

235237
logger.info(f"Task: workspace_seed_task -> Label {label_id} created")
@@ -276,13 +278,14 @@ def create_project_issues(
276278
cycle_id = issue_seed.pop("cycle_id")
277279
module_ids = issue_seed.pop("module_ids")
278280

279-
issue = Issue.objects.create(
281+
issue = Issue(
280282
**issue_seed,
281283
state_id=states_map[state_id],
282284
project_id=project_map[project_id],
283285
workspace=workspace,
284286
created_by_id=bot_user.id,
285287
)
288+
issue.save(created_by_id=bot_user.id, disable_auto_set_user=True)
286289
IssueSequence.objects.create(
287290
issue=issue,
288291
project_id=project_map[project_id],
@@ -351,7 +354,7 @@ def create_pages(workspace: Workspace, project_map: Dict[int, uuid.UUID], bot_us
351354
for page_seed in page_seeds:
352355
page_id = page_seed.pop("id")
353356

354-
page = Page.objects.create(
357+
page = Page(
355358
workspace_id=workspace.id,
356359
is_global=False,
357360
access=page_seed.get("access", Page.PUBLIC_ACCESS),
@@ -365,16 +368,18 @@ def create_pages(workspace: Workspace, project_map: Dict[int, uuid.UUID], bot_us
365368
owned_by_id=bot_user.id,
366369
)
367370

371+
page.save(created_by_id=bot_user.id, disable_auto_set_user=True)
372+
368373
logger.info(f"Task: workspace_seed_task -> Page {page_id} created")
369374
if page_seed.get("project_id") and page_seed.get("type") == "PROJECT":
370-
ProjectPage.objects.create(
375+
project_page = ProjectPage(
371376
workspace_id=workspace.id,
372377
project_id=project_map[page_seed.get("project_id")],
373378
page_id=page.id,
374379
created_by_id=bot_user.id,
375380
updated_by_id=bot_user.id,
376381
)
377-
382+
project_page.save(created_by_id=bot_user.id, disable_auto_set_user=True)
378383
logger.info(f"Task: workspace_seed_task -> Project Page {page_id} created")
379384
return
380385

@@ -414,7 +419,7 @@ def create_cycles(workspace: Workspace, project_map: Dict[int, uuid.UUID], bot_u
414419
start_date = timezone.now() + timedelta(days=14)
415420
end_date = start_date + timedelta(days=14)
416421

417-
cycle = Cycle.objects.create(
422+
cycle = Cycle(
418423
**cycle_seed,
419424
start_date=start_date,
420425
end_date=end_date,
@@ -423,6 +428,7 @@ def create_cycles(workspace: Workspace, project_map: Dict[int, uuid.UUID], bot_u
423428
created_by_id=bot_user.id,
424429
owned_by_id=bot_user.id,
425430
)
431+
cycle.save(created_by_id=bot_user.id, disable_auto_set_user=True)
426432

427433
cycle_map[cycle_id] = cycle.id
428434
logger.info(f"Task: workspace_seed_task -> Cycle {cycle_id} created")
@@ -450,14 +456,15 @@ def create_modules(workspace: Workspace, project_map: Dict[int, uuid.UUID], bot_
450456
start_date = timezone.now() + timedelta(days=index * 2)
451457
end_date = start_date + timedelta(days=14)
452458

453-
module = Module.objects.create(
459+
module = Module(
454460
**module_seed,
455461
start_date=start_date,
456462
target_date=end_date,
457463
project_id=project_map[project_id],
458464
workspace=workspace,
459465
created_by_id=bot_user.id,
460466
)
467+
module.save(created_by_id=bot_user.id, disable_auto_set_user=True)
461468
module_map[module_id] = module.id
462469
logger.info(f"Task: workspace_seed_task -> Module {module_id} created")
463470
return module_map
@@ -478,13 +485,15 @@ def create_views(workspace: Workspace, project_map: Dict[int, uuid.UUID], bot_us
478485

479486
for view_seed in view_seeds:
480487
project_id = view_seed.pop("project_id")
481-
IssueView.objects.create(
488+
view_seed.pop("id")
489+
issue_view = IssueView(
482490
**view_seed,
483491
project_id=project_map[project_id],
484492
workspace=workspace,
485493
created_by_id=bot_user.id,
486494
owned_by_id=bot_user.id,
487495
)
496+
issue_view.save(created_by_id=bot_user.id, disable_auto_set_user=True)
488497

489498

490499
@shared_task
@@ -518,6 +527,14 @@ def workspace_seed(workspace_id: uuid.UUID) -> None:
518527
is_password_autoset=True,
519528
)
520529

530+
# Add bot user to workspace as member
531+
WorkspaceMember.objects.create(
532+
workspace=workspace,
533+
member=bot_user,
534+
role=20,
535+
company_role="",
536+
)
537+
521538
# Create a project with the same name as workspace
522539
project_map = create_project_and_member(workspace, bot_user)
523540

0 commit comments

Comments
 (0)