2024-05-23 13:59:51 -07:00
|
|
|
from datetime import timedelta
|
2016-02-24 14:01:19 +00:00
|
|
|
|
2024-10-31 09:17:49 -07:00
|
|
|
from sqlalchemy import select
|
|
|
|
|
|
2021-03-10 13:55:06 +00:00
|
|
|
from app import db
|
2024-01-12 17:46:00 -05:00
|
|
|
from app.enums import InvitedUserStatus
|
2024-01-12 16:05:18 -05:00
|
|
|
from app.models import InvitedUser
|
2024-05-23 13:59:51 -07:00
|
|
|
from app.utils import utc_now
|
2016-02-25 11:22:36 +00:00
|
|
|
|
2016-02-24 14:01:19 +00:00
|
|
|
|
|
|
|
|
def save_invited_user(invited_user):
|
|
|
|
|
db.session.add(invited_user)
|
|
|
|
|
db.session.commit()
|
2016-02-25 11:22:36 +00:00
|
|
|
|
|
|
|
|
|
2021-03-12 12:50:07 +00:00
|
|
|
def get_invited_user_by_service_and_id(service_id, invited_user_id):
|
2024-10-31 09:17:49 -07:00
|
|
|
|
|
|
|
|
stmt = select(InvitedUser).where(
|
2023-11-10 16:14:03 -05:00
|
|
|
InvitedUser.service_id == service_id,
|
|
|
|
|
InvitedUser.id == invited_user_id,
|
2024-10-31 09:17:49 -07:00
|
|
|
)
|
|
|
|
|
return db.session.execute(stmt).scalars().one()
|
2016-02-25 11:22:36 +00:00
|
|
|
|
|
|
|
|
|
2023-12-20 09:51:43 -05:00
|
|
|
def get_expired_invite_by_service_and_id(service_id, invited_user_id):
|
2024-10-31 09:17:49 -07:00
|
|
|
stmt = select(InvitedUser).where(
|
2023-12-20 09:51:43 -05:00
|
|
|
InvitedUser.service_id == service_id,
|
|
|
|
|
InvitedUser.id == invited_user_id,
|
2024-01-12 17:46:00 -05:00
|
|
|
InvitedUser.status == InvitedUserStatus.EXPIRED,
|
2024-10-31 09:17:49 -07:00
|
|
|
)
|
2024-10-31 10:03:15 -07:00
|
|
|
return db.session.execute(stmt).scalars().one()
|
2023-12-20 09:51:43 -05:00
|
|
|
|
|
|
|
|
|
2016-02-29 17:38:02 +00:00
|
|
|
def get_invited_user_by_id(invited_user_id):
|
2024-10-31 09:17:49 -07:00
|
|
|
stmt = select(InvitedUser).where(InvitedUser.id == invited_user_id)
|
|
|
|
|
return db.session.execute(stmt).scalars().one()
|
2023-11-10 16:14:03 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_expired_invited_users_for_service(service_id):
|
2024-10-31 09:17:49 -07:00
|
|
|
# TODO why does this return all invited users?
|
|
|
|
|
stmt = select(InvitedUser).where(InvitedUser.service_id == service_id)
|
|
|
|
|
return db.session.execute(stmt).scalars().all()
|
2016-02-29 17:38:02 +00:00
|
|
|
|
|
|
|
|
|
2016-02-25 11:22:36 +00:00
|
|
|
def get_invited_users_for_service(service_id):
|
2024-10-31 09:17:49 -07:00
|
|
|
stmt = select(InvitedUser).where(InvitedUser.service_id == service_id)
|
|
|
|
|
return db.session.execute(stmt).scalars().all()
|
2016-03-09 17:46:01 +00:00
|
|
|
|
|
|
|
|
|
2023-11-07 15:28:27 -05:00
|
|
|
def expire_invitations_created_more_than_two_days_ago():
|
|
|
|
|
expired = (
|
2023-08-29 14:54:30 -07:00
|
|
|
db.session.query(InvitedUser)
|
2024-12-20 08:09:19 -08:00
|
|
|
.where(
|
2024-05-23 13:59:51 -07:00
|
|
|
InvitedUser.created_at <= utc_now() - timedelta(days=2),
|
2024-01-12 17:46:00 -05:00
|
|
|
InvitedUser.status.in_((InvitedUserStatus.PENDING,)),
|
2023-12-04 16:59:05 -05:00
|
|
|
)
|
2024-01-12 17:46:00 -05:00
|
|
|
.update({InvitedUser.status: InvitedUserStatus.EXPIRED})
|
2023-08-29 14:54:30 -07:00
|
|
|
)
|
2016-03-09 17:46:01 +00:00
|
|
|
db.session.commit()
|
2023-11-07 15:28:27 -05:00
|
|
|
return expired
|