|
13 | 13 | ) |
14 | 14 | from dstack._internal.core.backends.models import BackendInfo |
15 | 15 | from dstack._internal.core.errors import ForbiddenError, ResourceExistsError, ServerClientError |
16 | | -from dstack._internal.core.models.projects import Member, MemberPermissions, Project |
| 16 | +from dstack._internal.core.models.projects import ( |
| 17 | + Member, |
| 18 | + MemberPermissions, |
| 19 | + Project, |
| 20 | + ProjectHookConfig, |
| 21 | +) |
17 | 22 | from dstack._internal.core.models.runs import RunStatus |
18 | 23 | from dstack._internal.core.models.users import GlobalRole, ProjectRole |
19 | 24 | from dstack._internal.server.models import ( |
@@ -120,6 +125,7 @@ async def create_project( |
120 | 125 | user: UserModel, |
121 | 126 | project_name: str, |
122 | 127 | is_public: bool = False, |
| 128 | + config: Optional[ProjectHookConfig] = None, |
123 | 129 | ) -> Project: |
124 | 130 | user_permissions = users.get_user_permissions(user) |
125 | 131 | if not user_permissions.can_create_projects: |
@@ -147,7 +153,7 @@ async def create_project( |
147 | 153 | session=session, project_name=project_name |
148 | 154 | ) |
149 | 155 | for hook in _CREATE_PROJECT_HOOKS: |
150 | | - await hook(session, project_model) |
| 156 | + await hook(session, project_model, config) |
151 | 157 | # a hook may change project |
152 | 158 | session.expire(project_model) |
153 | 159 | project_model = await get_project_model_by_name_or_error( |
@@ -609,7 +615,9 @@ def get_member_permissions(member_model: MemberModel) -> MemberPermissions: |
609 | 615 | _CREATE_PROJECT_HOOKS = [] |
610 | 616 |
|
611 | 617 |
|
612 | | -def register_create_project_hook(func: Callable[[AsyncSession, ProjectModel], Awaitable[None]]): |
| 618 | +def register_create_project_hook( |
| 619 | + func: Callable[[AsyncSession, ProjectModel, Optional[ProjectHookConfig]], Awaitable[None]], |
| 620 | +): |
613 | 621 | _CREATE_PROJECT_HOOKS.append(func) |
614 | 622 |
|
615 | 623 |
|
|
0 commit comments