Skip to content

Commit 7490ab3

Browse files
authored
Merge pull request #2831 from Agenta-AI/release/v0.59.1
release/v0.59.1
2 parents 0479110 + ca70aaf commit 7490ab3

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+601
-430
lines changed

api/ee/src/routers/organization_router.py

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,9 @@ async def get_user_organization(
5353
raise HTTPException(status_code=500, detail=str(e))
5454

5555

56-
@router.get("/{org_id}/", operation_id="fetch_ee_organization_details")
56+
@router.get("/{organization_id}/", operation_id="fetch_ee_organization_details")
5757
async def fetch_organization_details(
58-
org_id: str,
58+
organization_id: str,
5959
request: Request,
6060
):
6161
"""Get an organization's details.
@@ -70,7 +70,7 @@ async def fetch_organization_details(
7070

7171
try:
7272
workspace_id = await db_manager_ee.get_default_workspace_id_from_organization(
73-
organization_id=org_id
73+
organization_id=organization_id
7474
)
7575

7676
project_id = await db_manager.get_default_project_id_from_workspace(
@@ -96,14 +96,16 @@ async def fetch_organization_details(
9696
user_org_workspace_data = await get_user_org_and_workspace_id(
9797
request.state.user_id
9898
)
99-
has_permission = await check_user_org_access(user_org_workspace_data, org_id)
99+
has_permission = await check_user_org_access(
100+
user_org_workspace_data, organization_id
101+
)
100102
if not has_permission:
101103
return JSONResponse(
102104
status_code=403,
103105
content={"detail": "You do not have access to this organization"},
104106
)
105107

106-
organization = await get_organization_details(org_id)
108+
organization = await get_organization_details(organization_id)
107109

108110
if membership.role == "viewer" or membership.is_demo:
109111
if "default_workspace" in organization:
@@ -121,9 +123,9 @@ async def fetch_organization_details(
121123
)
122124

123125

124-
@router.put("/{org_id}/", operation_id="update_organization")
126+
@router.put("/{organization_id}/", operation_id="update_organization")
125127
async def update_organization(
126-
org_id: str,
128+
organization_id: str,
127129
payload: OrganizationUpdate,
128130
request: Request,
129131
):
@@ -138,15 +140,15 @@ async def update_organization(
138140
request.state.user_id
139141
)
140142
has_permission = await check_user_org_access(
141-
user_org_workspace_data, org_id, check_owner=True
143+
user_org_workspace_data, organization_id, check_owner=True
142144
)
143145
if not has_permission:
144146
return JSONResponse(
145147
{"detail": "You do not have permission to perform this action"},
146148
status_code=403,
147149
)
148150

149-
organization = await update_an_organization(org_id, payload)
151+
organization = await update_an_organization(organization_id, payload)
150152

151153
return organization
152154

@@ -158,12 +160,12 @@ async def update_organization(
158160

159161

160162
@router.post(
161-
"/{org_id}/workspaces/",
163+
"/{organization_id}/workspaces/",
162164
operation_id="create_workspace",
163165
response_model=WorkspaceResponse,
164166
)
165167
async def create_workspace(
166-
org_id: str,
168+
organization_id: str,
167169
payload: CreateWorkspace,
168170
request: Request,
169171
) -> WorkspaceResponse:
@@ -172,7 +174,7 @@ async def create_workspace(
172174
request.state.user_id
173175
)
174176
has_permission = await check_user_org_access(
175-
user_org_workspace_data, org_id, check_owner=True
177+
user_org_workspace_data, organization_id, check_owner=True
176178
)
177179
if not has_permission:
178180
return JSONResponse(
@@ -186,7 +188,7 @@ async def create_workspace(
186188
status_code=400,
187189
)
188190
workspace = await workspace_manager.create_new_workspace(
189-
payload, org_id, user_org_workspace_data["uid"]
191+
payload, organization_id, user_org_workspace_data["uid"]
190192
)
191193
return workspace
192194

@@ -198,12 +200,12 @@ async def create_workspace(
198200

199201

200202
@router.put(
201-
"/{org_id}/workspaces/{workspace_id}/",
203+
"/{organization_id}/workspaces/{workspace_id}/",
202204
operation_id="update_workspace",
203205
response_model=WorkspaceResponse,
204206
)
205207
async def update_workspace(
206-
org_id: str,
208+
organization_id: str,
207209
workspace_id: str,
208210
payload: UpdateWorkspace,
209211
request: Request,

api/ee/src/routers/workspace_router.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ async def assign_role_to_user(
110110
@router.delete("/{workspace_id}/roles/", operation_id="unassign_role_from_user")
111111
async def unassign_role_from_user(
112112
email: str,
113-
org_id: str,
113+
organization_id: str,
114114
role: str,
115115
workspace_id: str,
116116
request: Request,
@@ -121,7 +121,7 @@ async def unassign_role_from_user(
121121
Args:
122122
workspace_id (str): The ID of the workspace.
123123
email (str): The email of the user to remove the role from.
124-
org_id (str): The ID of the organization.
124+
organization_id (str): The ID of the organization.
125125
role (str): The role to remove from the user.
126126
request (Request): The FastAPI request object.
127127
@@ -153,7 +153,7 @@ async def unassign_role_from_user(
153153

154154
payload = UserRole(
155155
email=email,
156-
organization_id=org_id,
156+
organization_id=organization_id,
157157
role=role,
158158
)
159159

api/ee/src/services/db_manager_ee.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,9 @@ async def get_organizations_by_list_ids(organization_ids: List) -> List[Organiza
105105
"""
106106

107107
async with engine.core_session() as session:
108-
organization_uuids = [uuid.UUID(org_id) for org_id in organization_ids]
108+
organization_uuids = [
109+
uuid.UUID(organization_id) for organization_id in organization_ids
110+
]
109111
query = select(OrganizationDB).where(OrganizationDB.id.in_(organization_uuids))
110112
result = await session.execute(query)
111113
organizations = result.scalars().all()

api/ee/src/services/organization_service.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@
1515

1616

1717
async def update_an_organization(
18-
org_id: str, payload: OrganizationUpdate
18+
organization_id: str, payload: OrganizationUpdate
1919
) -> OrganizationDB:
20-
org = await db_manager_ee.get_organization(org_id)
20+
org = await db_manager_ee.get_organization(organization_id)
2121
if org is not None:
2222
await db_manager_ee.update_organization(str(org.id), payload)
2323
return org
@@ -61,8 +61,12 @@ async def send_invitation_email(
6161
project_param = quote(project_id, safe="")
6262

6363
invite_link = (
64-
f"{env.AGENTA_WEB_URL}/auth?token={token_param}&email={email_param}"
65-
f"&org_id={org_param}&workspace_id={workspace_param}&project_id={project_param}"
64+
f"{env.AGENTA_WEB_URL}/auth"
65+
f"?token={token_param}"
66+
f"&email={email_param}"
67+
f"&organization_id={org_param}"
68+
f"&workspace_id={workspace_param}"
69+
f"&project_id={project_param}"
6670
)
6771

6872
html_content = html_template.format(
@@ -116,6 +120,6 @@ async def notify_org_admin_invitation(workspace: WorkspaceDB, user: UserDB) -> b
116120
return True
117121

118122

119-
async def get_organization_details(org_id: str) -> dict:
120-
organization = await db_manager_ee.get_organization(org_id)
123+
async def get_organization_details(organization_id: str) -> dict:
124+
organization = await db_manager_ee.get_organization(organization_id)
121125
return await db_manager_ee.get_org_details(organization)

api/ee/src/services/workspace_manager.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ async def get_all_workspace_permissions() -> List[Permission]:
128128

129129
async def invite_user_to_workspace(
130130
payload: List[InviteRequest],
131-
org_id: str,
131+
organization_id: str,
132132
project_id: str,
133133
workspace_id: str,
134134
user_uid: str,
@@ -138,7 +138,7 @@ async def invite_user_to_workspace(
138138
139139
Args:
140140
user_uid (str): The user uid.
141-
org_id (str): The ID of the organization that the workspace belongs to.
141+
organization_id (str): The ID of the organization that the workspace belongs to.
142142
project_id (str): The ID of the project that belongs to the workspace.
143143
workspace_id (str): The ID of the workspace.
144144
payload (InviteRequest): The payload containing the email address of the user to invite.
@@ -152,7 +152,7 @@ async def invite_user_to_workspace(
152152

153153
try:
154154
workspace = await get_workspace(workspace_id)
155-
organization = await db_manager_ee.get_organization(org_id)
155+
organization = await db_manager_ee.get_organization(organization_id)
156156
user_performing_action = await db_manager.get_user(user_uid)
157157

158158
for payload_invite in payload:
@@ -216,15 +216,15 @@ async def invite_user_to_workspace(
216216
async def resend_user_workspace_invite(
217217
payload: ReseendInviteRequest,
218218
project_id: str,
219-
org_id: str,
219+
organization_id: str,
220220
workspace_id: str,
221221
user_uid: str,
222222
) -> JSONResponse:
223223
"""
224224
Resend an invitation to a user to a workspace.
225225
226226
Args:
227-
org_id (str): The ID of the organization that the workspace belongs to.
227+
organization_id (str): The ID of the organization that the workspace belongs to.
228228
project_id (str): The ID of the project.
229229
workspace_id (str): The ID of the workspace.
230230
payload (ReseendInviteRequest): The payload containing the email address of the user to invite.
@@ -238,7 +238,7 @@ async def resend_user_workspace_invite(
238238

239239
try:
240240
workspace = await get_workspace(workspace_id)
241-
organization = await db_manager_ee.get_organization(org_id)
241+
organization = await db_manager_ee.get_organization(organization_id)
242242
user_performing_action = await db_manager.get_user(user_uid)
243243

244244
# Check if the email address already has a valid, unused invitation for the workspace

api/oss/src/routers/organization_router.py

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -85,12 +85,12 @@ async def list_organizations(
8585

8686

8787
@router.get(
88-
"/{org_id}/",
88+
"/{organization_id}/",
8989
operation_id="fetch_organization_details",
9090
response_model=OrganizationDetails,
9191
)
9292
async def fetch_organization_details(
93-
org_id: str,
93+
organization_id: str,
9494
request: Request,
9595
):
9696
"""Return the details of the organization."""
@@ -100,11 +100,15 @@ async def fetch_organization_details(
100100
if not active_workspace:
101101
return {}
102102

103-
organization_owner = await db_manager.get_organization_owner(organization_id=org_id)
103+
organization_owner = await db_manager.get_organization_owner(
104+
organization_id=organization_id
105+
)
104106
project_invitations = await db_manager.get_project_invitations(
105107
project_id=request.state.project_id
106108
)
107-
organization_db = await db_manager.get_organization_by_id(organization_id=org_id)
109+
organization_db = await db_manager.get_organization_by_id(
110+
organization_id=organization_id
111+
)
108112

109113
invited_members = [
110114
{
@@ -164,11 +168,11 @@ async def fetch_organization_details(
164168

165169

166170
@router.post(
167-
"/{org_id}/workspaces/{workspace_id}/invite/",
171+
"/{organization_id}/workspaces/{workspace_id}/invite/",
168172
operation_id="invite_user_to_workspace",
169173
)
170174
async def invite_user_to_organization(
171-
org_id: str,
175+
organization_id: str,
172176
payload: List[InviteRequest],
173177
workspace_id: str,
174178
request: Request,
@@ -177,7 +181,7 @@ async def invite_user_to_organization(
177181
Assigns a role to a user in an organization.
178182
179183
Args:
180-
org_id (str): The ID of the organization.
184+
organization_id (str): The ID of the organization.
181185
payload (InviteRequest): The payload containing the organization id, user email, and role to assign.
182186
workspace_id (str): The ID of the workspace.
183187
@@ -213,7 +217,7 @@ async def invite_user_to_organization(
213217
},
214218
)
215219

216-
owner = await db_manager.get_organization_owner(org_id)
220+
owner = await db_manager.get_organization_owner(organization_id)
217221
owner_domain = owner.email.split("@")[-1].lower() if owner else ""
218222
user_domain = payload[0].email.split("@")[-1].lower()
219223
skip_meter = owner_domain != "agenta.ai" and user_domain == "agenta.ai"
@@ -230,7 +234,7 @@ async def invite_user_to_organization(
230234

231235
invite_user = await workspace_manager.invite_user_to_workspace(
232236
payload=payload,
233-
org_id=org_id,
237+
organization_id=organization_id,
234238
project_id=str(project.id),
235239
workspace_id=workspace_id,
236240
user_uid=request.state.user_id,
@@ -246,11 +250,11 @@ async def invite_user_to_organization(
246250

247251

248252
@router.post(
249-
"/{org_id}/workspaces/{workspace_id}/invite/resend/",
253+
"/{organization_id}/workspaces/{workspace_id}/invite/resend/",
250254
operation_id="resend_invitation",
251255
)
252256
async def resend_user_invitation_to_organization(
253-
org_id: str,
257+
organization_id: str,
254258
workspace_id: str,
255259
payload: ResendInviteRequest,
256260
request: Request,
@@ -287,7 +291,7 @@ async def resend_user_invitation_to_organization(
287291
invite_user = await workspace_manager.resend_user_workspace_invite(
288292
payload=payload,
289293
project_id=request.state.project_id,
290-
org_id=org_id,
294+
organization_id=organization_id,
291295
workspace_id=workspace_id,
292296
user_uid=request.state.user_id,
293297
)
@@ -302,11 +306,11 @@ async def resend_user_invitation_to_organization(
302306

303307

304308
@router.post(
305-
"/{org_id}/workspaces/{workspace_id}/invite/accept/",
309+
"/{organization_id}/workspaces/{workspace_id}/invite/accept/",
306310
operation_id="accept_invitation",
307311
)
308312
async def accept_organization_invitation(
309-
org_id: str,
313+
organization_id: str,
310314
workspace_id: str,
311315
project_id: str,
312316
payload: InviteToken,
@@ -326,7 +330,7 @@ async def accept_organization_invitation(
326330

327331
if is_ee():
328332
workspace = await workspace_manager.get_workspace(workspace_id)
329-
organization = await db_manager_ee.get_organization(org_id)
333+
organization = await db_manager_ee.get_organization(organization_id)
330334
user = await db_manager.get_user(request.state.user_id)
331335

332336
accept_invitation = await workspace_manager.accept_workspace_invitation(
@@ -343,7 +347,7 @@ async def accept_organization_invitation(
343347
else:
344348
await organization_service.accept_organization_invitation(
345349
token=payload.token,
346-
organization_id=org_id,
350+
organization_id=organization_id,
347351
email=payload.email,
348352
)
349353
return JSONResponse({"message": "Added user to workspace"}, status_code=200)

0 commit comments

Comments
 (0)