Skip to content

Commit 8c62640

Browse files
committed
add subscription info to invite emails
1 parent c0cf6e6 commit 8c62640

File tree

2 files changed

+31
-12
lines changed

2 files changed

+31
-12
lines changed

backend/btrixcloud/emailsender.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
from .models import CreateReplicaJob, DeleteReplicaJob, Organization, InvitePending
1818
from .utils import is_bool, get_origin
19+
from backend.btrixcloud.models import Subscription
1920

2021

2122
# pylint: disable=too-few-public-methods, too-many-instance-attributes
@@ -138,6 +139,7 @@ async def send_user_invite(
138139
token: UUID,
139140
org_name: str,
140141
is_new: bool,
142+
subscription: Optional[Subscription] = None,
141143
headers: Optional[dict] = None,
142144
):
143145
"""Send email to invite new user"""
@@ -160,6 +162,11 @@ async def send_user_invite(
160162
sender=invite.inviterEmail if not invite.fromSuperuser else "",
161163
org_name=org_name,
162164
support_email=self.support_email,
165+
trial_remaining_days=(
166+
(subscription.futureCancelDate - datetime.now()).days
167+
if subscription and subscription.futureCancelDate
168+
else None
169+
),
163170
)
164171

165172
async def send_user_forgot_password(self, receiver_email, token, headers=None):

backend/btrixcloud/invites.py

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,11 @@
1616
EmailStr,
1717
UserRole,
1818
InvitePending,
19-
InviteRequest,
19+
InviteToOrgRequest,
2020
InviteOut,
2121
User,
2222
Organization,
23+
Subscription
2324
)
2425
from .users import UserManager
2526
from .emailsender import EmailSender
@@ -71,6 +72,7 @@ async def add_new_user_invite(
7172
new_user_invite: InvitePending,
7273
invite_token: UUID,
7374
org_name: str,
75+
subscription: Optional[Subscription],
7476
headers: Optional[dict],
7577
) -> None:
7678
"""Add invite for new user"""
@@ -94,7 +96,12 @@ async def add_new_user_invite(
9496
await self.invites.insert_one(new_user_invite.to_dict())
9597

9698
await self.email.send_user_invite(
97-
new_user_invite, invite_token, org_name, True, headers
99+
invite=new_user_invite,
100+
token=invite_token,
101+
org_name=org_name,
102+
is_new=True,
103+
subscription=subscription,
104+
headers=headers,
98105
)
99106

100107
# pylint: disable=too-many-arguments
@@ -130,7 +137,12 @@ async def add_existing_user_invite(
130137
await self.invites.insert_one(existing_user_invite.to_dict())
131138

132139
await self.email.send_user_invite(
133-
existing_user_invite, invite_token, org_name, False, headers
140+
invite=existing_user_invite,
141+
token=invite_token,
142+
org_name=org_name,
143+
is_new=False,
144+
subscription=org.subscription,
145+
headers=headers,
134146
)
135147

136148
async def get_valid_invite(
@@ -173,7 +185,7 @@ async def remove_invite_by_email(
173185
# pylint: disable=too-many-arguments
174186
async def invite_user(
175187
self,
176-
invite: InviteRequest,
188+
invite: InviteToOrgRequest,
177189
user: User,
178190
user_manager: UserManager,
179191
org: Organization,
@@ -199,9 +211,9 @@ async def invite_user(
199211
id=uuid4(),
200212
oid=oid,
201213
created=dt_now(),
202-
role=invite.role if hasattr(invite, "role") else None,
214+
role=invite.role if hasattr(invite, "role") else UserRole.VIEWER,
203215
# URL decode email address just in case
204-
email=urllib.parse.unquote(invite.email),
216+
email=EmailStr(urllib.parse.unquote(invite.email)),
205217
inviterEmail=user.email,
206218
fromSuperuser=user.is_superuser,
207219
tokenHash=get_hash(invite_token),
@@ -223,10 +235,11 @@ async def invite_user(
223235
return False, invite_token
224236

225237
await self.add_new_user_invite(
226-
invite_pending,
227-
invite_token,
228-
org_name,
229-
headers,
238+
new_user_invite=invite_pending,
239+
invite_token=invite_token,
240+
org_name=org_name,
241+
headers=headers,
242+
subscription=org.subscription,
230243
)
231244
return True, invite_token
232245

@@ -275,11 +288,10 @@ async def get_invite_out(
275288
created=invite.created,
276289
inviterEmail=inviter_email,
277290
inviterName=inviter_name,
278-
fromSuperuser=from_superuser,
291+
fromSuperuser=from_superuser or False,
279292
oid=invite.oid,
280293
role=invite.role,
281294
email=invite.email,
282-
userid=invite.userid,
283295
)
284296

285297
if not invite.oid:

0 commit comments

Comments
 (0)