def get_openid_providers(request): providers = [] openid_form = None for provider in settings.SORTED_OPENID_PROVIDERS: errors = [] if request.method == 'POST' and request.POST.get( 'login') == provider['name']: if provider['pattern'] and request.POST.get('openid', ''): data = request.POST.copy() data['openid'] = provider['pattern'] % data['openid'] else: data = request.POST form = openid_forms.LoginForm(data) if form.is_valid(): openid_form = form else: errors.extend([error for error in form.non_field_errors()]) errors.extend([error for error in form['openid'].errors]) else: form = openid_forms.LoginForm() providers.append({ 'form': form, 'name': provider['name'], 'url': provider['url'], 'errors': errors, }) return providers, openid_form
def get_openid_providers(request): providers = [] openid_form = None for provider in settings.SORTED_OPENID_PROVIDERS: errors = [] if request.method == 'POST' and request.POST.get('login') == provider['name']: if provider['pattern'] and request.POST.get('openid', ''): data = request.POST.copy() data['openid'] = provider['pattern'] % data['openid'] else: data = request.POST form = openid_forms.LoginForm(data) if form.is_valid(): openid_form = form else: errors.extend([error for error in form.non_field_errors()]) errors.extend([error for error in form['openid'].errors]) else: form = openid_forms.LoginForm() providers.append({ 'form': form, 'name': provider['name'], 'url': provider['url'], 'errors': errors, }) return providers, openid_form
def get_social_accounts(user): """ {% get_social_accounts user as accounts %} Then: {{accounts.twitter}} -- a list of connected Twitter accounts {{accounts.twitter.0}} -- the first Twitter account {% if accounts %} -- if there is at least one social account """ accounts = {} for account in user.socialaccount_set.all().iterator(): providers = accounts.setdefault(account.provider, []) providers.append(account) return accounts
def login(request): providers = [] for provider in get_providers(): try: provider.social_app = SocialApp.objects.get(provider=provider.id, sites=settings.SITE_ID) except SocialApp.DoesNotExist: provider.social_app = None providers.append(provider) return LoginView.as_view(authentication_form=LoginForm, template_name='accounts/login_form.html', extra_context={'providers': providers})(request)