privaterelay/management/utils.py (21 lines of code) (raw):
from django.conf import settings
from allauth.socialaccount.models import SocialAccount
from waffle.models import Flag
def get_free_phone_social_accounts() -> set[SocialAccount]:
free_phones_flag = Flag.objects.filter(name="free_phones").first()
if free_phones_flag is None:
return set()
free_phones_sa = set(
SocialAccount.objects.filter(user__in=free_phones_flag.users.all())
)
for group in free_phones_flag.groups.all():
free_phones_sa.update(SocialAccount.objects.filter(user__in=group.users.all()))
return free_phones_sa
def get_phone_subscriber_social_accounts() -> set[SocialAccount]:
phone_subscribers_sa = set()
for sub_with_phone in settings.SUBSCRIPTIONS_WITH_PHONE:
social_accounts = SocialAccount.objects.filter(
extra_data__icontains=sub_with_phone
)
phone_subscribers_sa.update(social_accounts)
return phone_subscribers_sa