Skip to content

Commit

Permalink
invites: Re-organize code accessing database objects fields
Browse files Browse the repository at this point in the history
  • Loading branch information
barthalion committed Feb 5, 2025
1 parent 8127289 commit fa26a6d
Showing 1 changed file with 93 additions and 85 deletions.
178 changes: 93 additions & 85 deletions backend/app/routes/invites.py
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,7 @@ def invite_developer(
app = _get_app(app_id)
_check_permission(app, login.user, require_primary=True)

payload = None
with get_db("writer") as db_session:
invited_user = FlathubUser.by_invite_code(
db_session, invite_code.replace("-", "")
Expand Down Expand Up @@ -141,30 +142,31 @@ def invite_developer(
db_session.add(invite)
db_session.commit()

if app_metadata := get_json_key(f"apps:{app.app_id}"):
app_name = app_metadata["name"]
subject = (
f"You have been invited to be a developer of {app_name} ({app.app_id})"
)
else:
app_name = None
subject = f"You have been invited to be a developer of {app.app_id}"

payload = {
"messageId": f"{app.app_id}/{invite.id}/invited",
"creation_timestamp": datetime.now().timestamp(),
"userId": invited_user.id,
"subject": subject,
"previewText": subject,
"messageInfo": {
"category": EmailCategory.DEVELOPER_INVITE,
"appId": app.app_id,
"appName": app_name,
"inviter": login.user.display_name,
},
}

worker.send_email_new.send(payload)
if app_metadata := get_json_key(f"apps:{app.app_id}"):
app_name = app_metadata["name"]
subject = (
f"You have been invited to be a developer of {app_name} ({app.app_id})"
)
else:
app_name = None
subject = f"You have been invited to be a developer of {app.app_id}"

payload = {
"messageId": f"{app.app_id}/{invite.id}/invited",
"creation_timestamp": datetime.now().timestamp(),
"userId": invited_user.id,
"subject": subject,
"previewText": subject,
"messageInfo": {
"category": EmailCategory.DEVELOPER_INVITE,
"appId": app.app_id,
"appName": app_name,
"inviter": login.user.display_name,
},
}

if payload:
worker.send_email_new.send(payload)


@router.post("/{app_id}/accept", status_code=204, tags=["invite"])
Expand All @@ -185,6 +187,7 @@ def accept_invite(
)

app = _get_app(app_id)
payload = None

with get_db("writer") as db_session:
invite = DirectUploadAppInvite.by_developer_and_app(db_session, login.user, app)
Expand All @@ -201,28 +204,29 @@ def accept_invite(
db_session.delete(invite)
db_session.commit()

username = login.user.display_name

if app_metadata := get_json_key(f"apps:{app.app_id}"):
app_name = app_metadata["name"]
else:
app_name = None
username = login.user.display_name

payload = {
"messageId": f"{app_id}/{invite.id}/success",
"creation_timestamp": datetime.now().timestamp(),
"subject": f"{username} is now a developer",
"previewText": f"{username} is now a developer",
"messageInfo": {
"category": EmailCategory.DEVELOPER_INVITE_ACCEPTED,
"appId": app_id,
"appName": app_name,
"references": f"{app_id}/{invite.id}/invited",
"login": username,
},
}

worker.send_email_new.send(payload)
if app_metadata := get_json_key(f"apps:{app.app_id}"):
app_name = app_metadata["name"]
else:
app_name = None

payload = {
"messageId": f"{app_id}/{invite.id}/success",
"creation_timestamp": datetime.now().timestamp(),
"subject": f"{username} is now a developer",
"previewText": f"{username} is now a developer",
"messageInfo": {
"category": EmailCategory.DEVELOPER_INVITE_ACCEPTED,
"appId": app_id,
"appName": app_name,
"references": f"{app_id}/{invite.id}/invited",
"login": username,
},
}

if payload:
worker.send_email_new.send(payload)


@router.post("/{app_id}/decline", status_code=204, tags=["invite"])
Expand All @@ -236,6 +240,7 @@ def decline_invite(
),
):
app = _get_app(app_id)
payload = None

with get_db("writer") as db_session:
invite = DirectUploadAppInvite.by_developer_and_app(db_session, login.user, app)
Expand All @@ -247,27 +252,28 @@ def decline_invite(

primary_dev = DirectUploadAppDeveloper.primary_for_app(db_session, app)

if app_metadata := get_json_key(f"apps:{app.app_id}"):
app_name = app_metadata["name"]
else:
app_name = None

payload = {
"messageId": f"{app.app_id}/{invite.id}/decline",
"creation_timestamp": datetime.now().timestamp(),
"subject": f"{login.user.display_name} declined their invite",
"previewText": f"{login.user.display_name} declined their invite",
"messageInfo": {
"category": EmailCategory.DEVELOPER_INVITE_DECLINED,
"userId": primary_dev.developer_id,
"appId": app.app_id,
"appName": app_name,
"references": f"{app_id}/{invite.id}/invited",
"login": login.user.display_name,
},
}

worker.send_email_new.send(payload)
if app_metadata := get_json_key(f"apps:{app.app_id}"):
app_name = app_metadata["name"]
else:
app_name = None

payload = {
"messageId": f"{app.app_id}/{invite.id}/decline",
"creation_timestamp": datetime.now().timestamp(),
"subject": f"{login.user.display_name} declined their invite",
"previewText": f"{login.user.display_name} declined their invite",
"messageInfo": {
"category": EmailCategory.DEVELOPER_INVITE_DECLINED,
"userId": primary_dev.developer_id,
"appId": app.app_id,
"appName": app_name,
"references": f"{app_id}/{invite.id}/invited",
"login": login.user.display_name,
},
}

if payload:
worker.send_email_new.send(payload)


@router.post("/{app_id}/leave", status_code=204, tags=["invite"])
Expand All @@ -282,30 +288,32 @@ def leave_team(
):
app = _get_app(app_id)
developer = _check_permission(app, login.user)
payload = None

with get_db("writer") as db_session:
db_session.delete(developer)
db_session.commit()

if app_metadata := get_json_key(f"apps:{app.app_id}"):
app_name = app_metadata["name"]
else:
app_name = None

payload = {
"messageId": f"{app_id}/{login.user.id}/{datetime.now().isoformat()}/left",
"creation_timestamp": datetime.now().timestamp(),
"subject": f"{login.user.display_name} left the developer team",
"previewText": f"{login.user.display_name} left the developer team",
"messageInfo": {
"category": EmailCategory.DEVELOPER_LEFT,
"appId": app.app_id,
"appName": app_name,
"login": login.user.display_name,
},
}

worker.send_email_new.send(payload)
if app_metadata := get_json_key(f"apps:{app.app_id}"):
app_name = app_metadata["name"]
else:
app_name = None

payload = {
"messageId": f"{app_id}/{login.user.id}/{datetime.now().isoformat()}/left",
"creation_timestamp": datetime.now().timestamp(),
"subject": f"{login.user.display_name} left the developer team",
"previewText": f"{login.user.display_name} left the developer team",
"messageInfo": {
"category": EmailCategory.DEVELOPER_LEFT,
"appId": app.app_id,
"appName": app_name,
"login": login.user.display_name,
},
}

if payload:
worker.send_email_new.send(payload)


class Developer(BaseModel):
Expand Down

0 comments on commit fa26a6d

Please sign in to comment.