Source code for users.templatetags.user_tags

"""Template tags of the users app."""

from operator import attrgetter
from typing import Iterable, List

from django.template.defaultfilters import register

from allauth.socialaccount.models import SocialApp


[docs]@register.filter def available(providers: Iterable[SocialApp]) -> List[SocialApp]: """ Filter out the unavailable OAuth providers. :param providers: The original list of OAuth providers. :return: A list of available OAuth providers. """ ids = list(map(attrgetter('id'), providers)) objects = SocialApp.objects \ .filter(provider__in=ids).values_list('provider', flat=True) return list(filter(lambda p: p.id in objects, providers))
__all__ = ['available']