diff -Nru django-allauth-0.36.0+ds/allauth/account/adapter.py django-allauth-0.38.0+ds/allauth/account/adapter.py --- django-allauth-0.36.0+ds/allauth/account/adapter.py 2018-04-10 21:06:43.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/account/adapter.py 2018-08-27 09:49:49.000000000 +0000 @@ -268,7 +268,13 @@ username_field).error_messages.get('unique') if not error_message: error_message = self.error_messages['username_taken'] - raise forms.ValidationError(error_message) + raise forms.ValidationError( + error_message, + params={ + 'model_name': user_model.__name__, + 'field_label': username_field, + } + ) return username def clean_email(self, email): @@ -333,8 +339,8 @@ if hasattr(response, 'render'): response.render() resp['html'] = response.content.decode('utf8') - if data is not None: - resp['data'] = data + if data is not None: + resp['data'] = data return HttpResponse(json.dumps(resp), status=status, content_type='application/json') diff -Nru django-allauth-0.36.0+ds/allauth/account/templatetags/account.py django-allauth-0.38.0+ds/allauth/account/templatetags/account.py --- django-allauth-0.36.0+ds/allauth/account/templatetags/account.py 2017-07-26 20:14:15.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/account/templatetags/account.py 2018-10-03 19:25:09.000000000 +0000 @@ -6,25 +6,8 @@ register = template.Library() -class UserDisplayNode(template.Node): - - def __init__(self, user, as_var=None): - self.user_var = template.Variable(user) - self.as_var = as_var - - def render(self, context): - user = self.user_var.resolve(context) - - display = user_display(user) - - if self.as_var: - context[self.as_var] = display - return "" - return display - - -@register.tag(name="user_display") -def do_user_display(parser, token): +@register.simple_tag(name='user_display') +def user_display_tag(user): """ Example usage:: @@ -38,15 +21,4 @@ {% endblocktrans %} """ - bits = token.split_contents() - if len(bits) == 2: - user = bits[1] - as_var = None - elif len(bits) == 4: - user = bits[1] - as_var = bits[3] - else: - raise template.TemplateSyntaxError( - "'%s' takes either two or four arguments" % bits[0]) - - return UserDisplayNode(user, as_var) + return user_display(user) diff -Nru django-allauth-0.36.0+ds/allauth/account/tests.py django-allauth-0.38.0+ds/allauth/account/tests.py --- django-allauth-0.36.0+ds/allauth/account/tests.py 2018-04-17 09:30:21.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/account/tests.py 2018-10-03 19:41:58.000000000 +0000 @@ -11,6 +11,8 @@ from django.core import mail, validators from django.core.exceptions import ValidationError from django.db import models +from django.http import HttpResponseRedirect +from django.template import Context, Template from django.test.client import Client, RequestFactory from django.test.utils import override_settings from django.urls import reverse @@ -28,7 +30,7 @@ from . import app_settings from .adapter import get_adapter from .auth_backends import AuthenticationBackend -from .signals import user_logged_out +from .signals import user_logged_in, user_logged_out from .utils import ( filter_users_by_username, url_str_to_user_pk, @@ -1100,7 +1102,7 @@ with patch('allauth.account.utils.get_user_model') as mocked_gum: mocked_gum.return_value = UUIDUser self.assertEqual(url_str_to_user_pk(self.user_id), - self.user_id) + uuid.UUID(self.user_id)) def test_pk_to_url_string_identifies_UUID_as_stringlike(self): user = UUIDUser( @@ -1124,3 +1126,94 @@ self.assertEqual(user_username(user), 'CamelCase') # TODO: Actually test something filter_users_by_username('camelcase', 'foobar') + + def test_user_display(self): + user = get_user_model()(username='john
doe') + expected_name = 'john<br/>doe' + templates = [ + '{% load account %}{% user_display user %}', + '{% load account %}{% user_display user as x %}{{ x }}' + ] + for template in templates: + t = Template(template) + content = t.render(Context({'user': user})) + self.assertEqual(content, expected_name) + + +class ConfirmationViewTests(TestCase): + def _create_user(self, username='john', password='doe'): + user = get_user_model().objects.create( + username=username, + is_active=True) + if password: + user.set_password(password) + else: + user.set_unusable_password() + user.save() + return user + + @override_settings(ACCOUNT_EMAIL_CONFIRMATION_HMAC=True, + ACCOUNT_LOGIN_ON_EMAIL_CONFIRMATION=True) + def test_login_on_confirm(self): + user = self._create_user() + email = EmailAddress.objects.create( + user=user, + email='a@b.com', + verified=False, + primary=True) + key = EmailConfirmationHMAC(email).key + + receiver_mock = Mock() # we've logged if signal was called + user_logged_in.connect(receiver_mock) + + # fake post-signup account_user stash + session = self.client.session + session['account_user'] = user_pk_to_url_str(user) + session.save() + + resp = self.client.post( + reverse('account_confirm_email', + args=[key])) + email = EmailAddress.objects.get(pk=email.pk) + self.assertTrue(email.verified) + + receiver_mock.assert_called_once_with( + sender=get_user_model(), + request=resp.wsgi_request, + response=resp, + user=get_user_model().objects.get(username='john'), + signal=user_logged_in, + ) + + user_logged_in.disconnect(receiver_mock) + + @override_settings(ACCOUNT_EMAIL_CONFIRMATION_HMAC=True, + ACCOUNT_LOGIN_ON_EMAIL_CONFIRMATION=True) + @patch('allauth.account.views.perform_login') + @patch('allauth.account.utils.get_user_model', return_value=UUIDUser) + def test_login_on_confirm_uuid_user(self, mocked_gum, mock_perform_login): + user = UUIDUser( + is_active=True, + email='john@example.com', + username='john') + + # fake post-signup account_user stash + session = self.client.session + session['account_user'] = user_pk_to_url_str(user) + session.save() + + # fake email and email confirmation to avoid swappable model hell + email = Mock(verified=False, user=user) + key = 'mockkey' + confirmation = Mock(autospec=EmailConfirmationHMAC, key=key) + confirmation.email_address = email + confirmation.from_key.return_value = confirmation + mock_perform_login.return_value = HttpResponseRedirect(redirect_to='/') + + with patch('allauth.account.views.EmailConfirmationHMAC', + confirmation): + self.client.post( + reverse('account_confirm_email', + args=[key])) + + assert mock_perform_login.called diff -Nru django-allauth-0.36.0+ds/allauth/account/utils.py django-allauth-0.38.0+ds/allauth/account/utils.py --- django-allauth-0.36.0+ds/allauth/account/utils.py 2017-12-11 22:20:14.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/account/utils.py 2018-05-21 14:51:37.000000000 +0000 @@ -422,7 +422,7 @@ else: pk_field = User._meta.pk if issubclass(type(pk_field), models.UUIDField): - return s + return pk_field.to_python(s) try: pk_field.to_python('a') pk = s diff -Nru django-allauth-0.36.0+ds/allauth/account/views.py django-allauth-0.38.0+ds/allauth/account/views.py --- django-allauth-0.36.0+ds/allauth/account/views.py 2018-04-17 08:59:43.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/account/views.py 2018-08-27 09:49:49.000000000 +0000 @@ -765,15 +765,18 @@ if app_settings.LOGOUT_ON_GET: return self.post(*args, **kwargs) if not self.request.user.is_authenticated: - return redirect(self.get_redirect_url()) + response = redirect(self.get_redirect_url()) + return _ajax_response(self.request, response) ctx = self.get_context_data() - return self.render_to_response(ctx) + response = self.render_to_response(ctx) + return _ajax_response(self.request, response) def post(self, *args, **kwargs): url = self.get_redirect_url() if self.request.user.is_authenticated: self.logout() - return redirect(url) + response = redirect(url) + return _ajax_response(self.request, response) def logout(self): adapter = get_adapter(self.request) diff -Nru django-allauth-0.36.0+ds/allauth/__init__.py django-allauth-0.38.0+ds/allauth/__init__.py --- django-allauth-0.36.0+ds/allauth/__init__.py 2018-02-08 22:06:00.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/__init__.py 2018-10-03 19:43:19.000000000 +0000 @@ -8,7 +8,7 @@ """ -VERSION = (0, 36, 0, 'final', 0) +VERSION = (0, 38, 0, 'final', 0) __title__ = 'django-allauth' __version_info__ = VERSION diff -Nru django-allauth-0.36.0+ds/allauth/locale/ar/LC_MESSAGES/django.po django-allauth-0.38.0+ds/allauth/locale/ar/LC_MESSAGES/django.po --- django-allauth-0.36.0+ds/allauth/locale/ar/LC_MESSAGES/django.po 2018-05-08 05:43:54.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/locale/ar/LC_MESSAGES/django.po 2018-08-27 10:01:33.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: 0.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-08 00:43-0500\n" +"POT-Creation-Date: 2018-08-27 05:00-0500\n" "PO-Revision-Date: 2016-01-19 19:32+0100\n" "Last-Translator: David D Lowe \n" "Language-Team: Arabic\n" @@ -31,7 +31,7 @@ msgid "A user is already registered with this e-mail address." msgstr "هنالك مستخدم مسجل سابقا مع نفس عنوان البريد الاكتروني‪.‬" -#: account/adapter.py:288 +#: account/adapter.py:294 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "كلمة المرور يجب أن لا تقل عن {0} حروف." diff -Nru django-allauth-0.36.0+ds/allauth/locale/cs/LC_MESSAGES/django.po django-allauth-0.38.0+ds/allauth/locale/cs/LC_MESSAGES/django.po --- django-allauth-0.36.0+ds/allauth/locale/cs/LC_MESSAGES/django.po 2018-05-08 05:43:54.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/locale/cs/LC_MESSAGES/django.po 2018-08-27 10:01:33.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: 0.35\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-08 00:43-0500\n" +"POT-Creation-Date: 2018-08-27 05:00-0500\n" "PO-Revision-Date: 2018-04-17 16:52+0200\n" "Last-Translator: Beda Kosata \n" "Language-Team: Czech <>\n" @@ -31,7 +31,7 @@ msgid "A user is already registered with this e-mail address." msgstr "Uživatel s tímto e-mailem je již registrován." -#: account/adapter.py:288 +#: account/adapter.py:294 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "Heslo musí obsahovat minimálně {0} znaků." diff -Nru django-allauth-0.36.0+ds/allauth/locale/da/LC_MESSAGES/django.po django-allauth-0.38.0+ds/allauth/locale/da/LC_MESSAGES/django.po --- django-allauth-0.36.0+ds/allauth/locale/da/LC_MESSAGES/django.po 1970-01-01 00:00:00.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/locale/da/LC_MESSAGES/django.po 2018-10-03 19:25:08.000000000 +0000 @@ -0,0 +1,794 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-09-03 14:25+0200\n" +"PO-Revision-Date: 2018-09-03 16:04+0200\n" +"Language: da\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Last-Translator: b'Tuk Bredsdorff '\n" +"Language-Team: \n" +"X-Generator: Poedit 2.1.1\n" + +#: account/adapter.py:45 +msgid "Username can not be used. Please use other username." +msgstr "Brugernavn kan ikke bruges. Brug venligst et andet brugernavn." + +#: account/adapter.py:49 +msgid "Too many failed login attempts. Try again later." +msgstr "Der er for mange mislykkede logonforsøg. Prøv igen senere." + +#: account/adapter.py:51 +msgid "A user is already registered with this e-mail address." +msgstr "En bruger er allerede registreret med denne e-mail-adresse." + +#: account/adapter.py:294 +#, python-brace-format +msgid "Password must be a minimum of {0} characters." +msgstr "Adgangskoden skal være på mindst {0} tegn." + +#: account/apps.py:7 +msgid "Accounts" +msgstr "Konti" + +#: account/forms.py:61 account/forms.py:398 +msgid "You must type the same password each time." +msgstr "Du skal skrive den samme adgangskode hver gang." + +#: account/forms.py:91 account/forms.py:365 account/forms.py:476 +msgid "Password" +msgstr "Adgangskode" + +#: account/forms.py:92 +msgid "Remember Me" +msgstr "Husk mig" + +#: account/forms.py:98 +msgid "This account is currently inactive." +msgstr "Denne konto er i øjeblikket inaktiv." + +#: account/forms.py:101 +msgid "The e-mail address and/or password you specified are not correct." +msgstr "Den angivne e-mail-adresse og/eller adgangskode er ikke korrekt." + +#: account/forms.py:104 +msgid "The username and/or password you specified are not correct." +msgstr "Det angivne brugernavn og/eller adgangskoden er ikke korrekt." + +#: account/forms.py:113 account/forms.py:268 account/forms.py:426 +#: account/forms.py:495 +msgid "E-mail address" +msgstr "E-mail adresse" + +#: account/forms.py:115 account/forms.py:301 account/forms.py:421 +#: account/forms.py:490 +msgid "E-mail" +msgstr "E-mail" + +#: account/forms.py:120 account/forms.py:123 account/forms.py:260 +#: account/forms.py:264 +msgid "Username" +msgstr "Brugernavn" + +#: account/forms.py:130 +msgid "Username or e-mail" +msgstr "Brugernavn eller e-mail" + +#: account/forms.py:133 +msgctxt "field label" +msgid "Login" +msgstr "Bruger" + +#: account/forms.py:292 +msgid "E-mail (again)" +msgstr "E-mail (igen)" + +#: account/forms.py:296 +msgid "E-mail address confirmation" +msgstr "Bekræftelse af e-mail-adresse" + +#: account/forms.py:304 +msgid "E-mail (optional)" +msgstr "E-mail (valgfri)" + +#: account/forms.py:345 +msgid "You must type the same email each time." +msgstr "Du skal skrive den samme e-mail hver gang." + +#: account/forms.py:368 account/forms.py:477 +msgid "Password (again)" +msgstr "Adgangskode (igen)" + +#: account/forms.py:432 +msgid "This e-mail address is already associated with this account." +msgstr "Denne e-mail-adresse er allerede knyttet til denne konto." + +#: account/forms.py:434 +msgid "This e-mail address is already associated with another account." +msgstr "Denne e-mail-adresse er allerede knyttet til en anden konto." + +#: account/forms.py:456 +msgid "Current Password" +msgstr "Nuværende adgangskode" + +#: account/forms.py:457 account/forms.py:546 +msgid "New Password" +msgstr "Ny adgangskode" + +#: account/forms.py:458 account/forms.py:547 +msgid "New Password (again)" +msgstr "Ny adgangskode (igen)" + +#: account/forms.py:466 +msgid "Please type your current password." +msgstr "Indtast din nuværende adgangskode." + +#: account/forms.py:504 +msgid "The e-mail address is not assigned to any user account" +msgstr "E-mail-adressen er ikke tildelt til nogen brugerkonto" + +#: account/forms.py:568 +msgid "The password reset token was invalid." +msgstr "Token for nulstilling af adgangskode var ugyldig." + +#: account/models.py:23 +msgid "user" +msgstr "bruger" + +#: account/models.py:27 account/models.py:81 +msgid "e-mail address" +msgstr "e-mail adresse" + +#: account/models.py:28 +msgid "verified" +msgstr "bekræftet" + +#: account/models.py:29 +msgid "primary" +msgstr "primær" + +#: account/models.py:34 +msgid "email address" +msgstr "e-mail adresse" + +#: account/models.py:35 +msgid "email addresses" +msgstr "e-mail adresser" + +#: account/models.py:83 +msgid "created" +msgstr "oprettet" + +#: account/models.py:85 +msgid "sent" +msgstr "sendt" + +#: account/models.py:86 socialaccount/models.py:55 +msgid "key" +msgstr "nøgle" + +#: account/models.py:91 +msgid "email confirmation" +msgstr "e-mail bekræftigelse" + +#: account/models.py:92 +msgid "email confirmations" +msgstr "e-mail bekræftigelser" + +#: socialaccount/adapter.py:26 +#, python-format +msgid "" +"An account already exists with this e-mail address. Please sign in to that " +"account first, then connect your %s account." +msgstr "" +"En konto med denne e-mail adresse eksisterer allerede. Log venligst ind med " +"den konto først og tilknyt din %s konto derefter." + +#: socialaccount/adapter.py:131 +msgid "Your account has no password set up." +msgstr "Der er ikke oprettet noget password til din konto." + +#: socialaccount/adapter.py:138 +msgid "Your account has no verified e-mail address." +msgstr "Din konto har ikke noget bekræftiget e-mail adresse." + +#: socialaccount/apps.py:7 +msgid "Social Accounts" +msgstr "Sociale konti" + +#: socialaccount/models.py:43 socialaccount/models.py:77 +msgid "provider" +msgstr "udbyder" + +#: socialaccount/models.py:46 +msgid "name" +msgstr "navn" + +#: socialaccount/models.py:48 +msgid "client id" +msgstr "klient id" + +#: socialaccount/models.py:50 +msgid "App ID, or consumer key" +msgstr "App ID, eller konsumer nøgle" + +#: socialaccount/models.py:51 +msgid "secret key" +msgstr "hemmelig nøgle" + +#: socialaccount/models.py:53 +msgid "API secret, client secret, or consumer secret" +msgstr "API hemmelighed, klient hemmelighed eller konsumet hemmelighed" + +#: socialaccount/models.py:58 +msgid "Key" +msgstr "Nøgle" + +#: socialaccount/models.py:66 +msgid "social application" +msgstr "social applikation" + +#: socialaccount/models.py:67 +msgid "social applications" +msgstr "sociale applikationer" + +#: socialaccount/models.py:96 +msgid "uid" +msgstr "uid" + +#: socialaccount/models.py:98 +msgid "last login" +msgstr "sidste log ind" + +#: socialaccount/models.py:100 +msgid "date joined" +msgstr "dato oprettet" + +#: socialaccount/models.py:102 +msgid "extra data" +msgstr "ekstra data" + +#: socialaccount/models.py:106 +msgid "social account" +msgstr "social konto" + +#: socialaccount/models.py:107 +msgid "social accounts" +msgstr "sociale konti" + +#: socialaccount/models.py:133 +msgid "token" +msgstr "token" + +#: socialaccount/models.py:135 +msgid "\"oauth_token\" (OAuth1) or access token (OAuth2)" +msgstr "“oauth_token” (OAuth1) eller adgangstoken (OAuth2)" + +#: socialaccount/models.py:138 +msgid "token secret" +msgstr "token hemmelighed" + +#: socialaccount/models.py:140 +msgid "\"oauth_token_secret\" (OAuth1) or refresh token (OAuth2)" +msgstr "“oauth_token_secret” (OAuth1) eller fornyelsestoken (OAuth2)" + +#: socialaccount/models.py:142 +msgid "expires at" +msgstr "udløber den" + +#: socialaccount/models.py:146 +msgid "social application token" +msgstr "socialt applikationstoken" + +#: socialaccount/models.py:147 +msgid "social application tokens" +msgstr "sociale applikationstokener" + +#: socialaccount/providers/douban/views.py:36 +msgid "Invalid profile data" +msgstr "Ugyldig profildata" + +#: socialaccount/providers/oauth/client.py:78 +#, python-format +msgid "Invalid response while obtaining request token from \"%s\"." +msgstr "Ugyldig respons under forsøg på at hente request token fra “%s”." + +#: socialaccount/providers/oauth/client.py:109 +#, python-format +msgid "Invalid response while obtaining access token from \"%s\"." +msgstr "Ugyldig respons under forsøg på at hente adgangstoken fra “%s”." + +#: socialaccount/providers/oauth/client.py:128 +#, python-format +msgid "No request token saved for \"%s\"." +msgstr "Intet request token gemt for “%s”." + +#: socialaccount/providers/oauth/client.py:177 +#, python-format +msgid "No access token saved for \"%s\"." +msgstr "Intet adgangstoken gemt for “%s”." + +#: socialaccount/providers/oauth/client.py:197 +#, python-format +msgid "No access to private resources at \"%s\"." +msgstr "Ingen adgang til private ressourcer på “%s”." + +#: templates/account/account_inactive.html:5 +#: templates/account/account_inactive.html:8 +msgid "Account Inactive" +msgstr "Inaktiv konto" + +#: templates/account/account_inactive.html:10 +msgid "This account is inactive." +msgstr "Denne konto er inaktiv." + +#: templates/account/email.html:5 +msgid "Account" +msgstr "Konto" + +#: templates/account/email.html:8 +msgid "E-mail Addresses" +msgstr "E-mail adresser" + +#: templates/account/email.html:10 +msgid "The following e-mail addresses are associated with your account:" +msgstr "De følgende e-mail adresser er tilknyttet din konto:" + +#: templates/account/email.html:24 +msgid "Verified" +msgstr "Bekæftet" + +#: templates/account/email.html:26 +msgid "Unverified" +msgstr "Ubekræftet" + +#: templates/account/email.html:28 +msgid "Primary" +msgstr "Primær" + +#: templates/account/email.html:34 +msgid "Make Primary" +msgstr "Gør primær" + +#: templates/account/email.html:35 +msgid "Re-send Verification" +msgstr "Send bekræftigelse igen" + +#: templates/account/email.html:36 templates/socialaccount/connections.html:35 +msgid "Remove" +msgstr "Fjern" + +#: templates/account/email.html:43 +msgid "Warning:" +msgstr "Advarsel:" + +#: templates/account/email.html:43 +msgid "" +"You currently do not have any e-mail address set up. You should really add " +"an e-mail address so you can receive notifications, reset your password, etc." +msgstr "" +"Du har på nuværende tidspunkt ikke nogen emailadresser tilknyttet. Du bør " +"virkeligt tilknytte en email-adresse, så du kan modtage notifikationer, " +"resette dit password osv." + +#: templates/account/email.html:48 +msgid "Add E-mail Address" +msgstr "Tilføj e-mail adresse" + +#: templates/account/email.html:53 +msgid "Add E-mail" +msgstr "Tilføj e-mail" + +#: templates/account/email.html:62 +msgid "Do you really want to remove the selected e-mail address?" +msgstr "Vil du virkeligt fjerne den valgte e-mail adresse?" + +#: templates/account/email/email_confirmation_message.txt:1 +#, python-format +msgid "" +"Hello from %(site_name)s!\n" +"\n" +"You're receiving this e-mail because user %(user_display)s has given yours " +"as an e-mail address to connect their account.\n" +"\n" +"To confirm this is correct, go to %(activate_url)s\n" +msgstr "" +"Hej fra %(site_name)s!\n" +"\n" +"Du modtager denne e-mail fordi brugeren %(user_display)s ønsker at bruge den " +"til sin konto.\n" +"\n" +"For at bekræfte dette, gå til %(activate_url)s\n" + +#: templates/account/email/email_confirmation_message.txt:7 +#, python-format +msgid "" +"Thank you from %(site_name)s!\n" +"%(site_domain)s" +msgstr "" +"Tak fra %(site_name)s!\n" +"%(site_domain)s" + +#: templates/account/email/email_confirmation_subject.txt:3 +msgid "Please Confirm Your E-mail Address" +msgstr "Bekræft venligst din e-mail adresse" + +#: templates/account/email/password_reset_key_message.txt:1 +#, python-format +msgid "" +"Hello from %(site_name)s!\n" +"\n" +"You're receiving this e-mail because you or someone else has requested a " +"password for your user account.\n" +"It can be safely ignored if you did not request a password reset. Click the " +"link below to reset your password." +msgstr "" +"Hej fra %(site_name)s!\n" +"\n" +"Du har modtaget denne email fordi du eller en anden har bedt om et password " +"til din konto.\n" +"Den kan trygt ses bort fra, hvis du ikke har bedt om at få nulstillet dit " +"password. Klik linket herunder for at nulstille dit password." + +#: templates/account/email/password_reset_key_message.txt:8 +#, python-format +msgid "In case you forgot, your username is %(username)s." +msgstr "I tilfælde af at du har glemt det er dit brugernavn %(username)s." + +#: templates/account/email/password_reset_key_message.txt:10 +#, python-format +msgid "" +"Thank you for using %(site_name)s!\n" +"%(site_domain)s" +msgstr "" +"Tak fordi du bruger %(site_name)s!\n" +"%(site_domain)s" + +#: templates/account/email/password_reset_key_subject.txt:3 +msgid "Password Reset E-mail" +msgstr "Token for nulstilling af adgangskode var ugyldig" + +#: templates/account/email_confirm.html:6 +#: templates/account/email_confirm.html:10 +msgid "Confirm E-mail Address" +msgstr "Bekræft venligst din e-mail adresse" + +#: templates/account/email_confirm.html:16 +#, python-format +msgid "" +"Please confirm that %(email)s is an e-mail " +"address for user %(user_display)s." +msgstr "" +"Bekræft venligst at %(email)s er en e-mail " +"adresse for %(user_display)s." + +#: templates/account/email_confirm.html:20 +msgid "Confirm" +msgstr "Bekræft" + +#: templates/account/email_confirm.html:27 +#, python-format +msgid "" +"This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request." +msgstr "" +"Dette e-mail bekræftigelseslink er udløbet eller ugyldigt. Lav venligst et nyt." + +#: templates/account/login.html:6 templates/account/login.html:10 +#: templates/account/login.html:43 +msgid "Sign In" +msgstr "Log ind" + +#: templates/account/login.html:15 +#, python-format +msgid "" +"Please sign in with one\n" +"of your existing third party accounts. Or, sign " +"up\n" +"for a %(site_name)s account and sign in below:" +msgstr "" +"Log venligst ind med en\n" +"af dine eksisterende tredjeparts konti. Eller, opret\n" +"en konto på %(site_name)s og log ind herunder:" + +#: templates/account/login.html:25 +msgid "or" +msgstr "eller" + +#: templates/account/login.html:32 +#, python-format +msgid "" +"If you have not created an account yet, then please\n" +"sign up first." +msgstr "" +"Hvis du ikke allerede har oprettet en konto, så\n" +"opret dig først." + +#: templates/account/login.html:42 +msgid "Forgot Password?" +msgstr "Glemt password?" + +#: templates/account/logout.html:5 templates/account/logout.html:8 +#: templates/account/logout.html:17 +msgid "Sign Out" +msgstr "Log ud" + +#: templates/account/logout.html:10 +msgid "Are you sure you want to sign out?" +msgstr "Er du sikker på, at du vil logge af?" + +#: templates/account/messages/cannot_delete_primary_email.txt:2 +#, python-format +msgid "You cannot remove your primary e-mail address (%(email)s)." +msgstr "Du kan ikke fjerne din primære e-mail adresse (%(email)s)." + +#: templates/account/messages/email_confirmation_sent.txt:2 +#, python-format +msgid "Confirmation e-mail sent to %(email)s." +msgstr "Bekræftigelses-email sendt til %(email)s." + +#: templates/account/messages/email_confirmed.txt:2 +#, python-format +msgid "You have confirmed %(email)s." +msgstr "Du har bekræftet %(email)s." + +#: templates/account/messages/email_deleted.txt:2 +#, python-format +msgid "Removed e-mail address %(email)s." +msgstr "Fjernede e-mail adressen %(email)s." + +#: templates/account/messages/logged_in.txt:4 +#, python-format +msgid "Successfully signed in as %(name)s." +msgstr "Loggede succesfuldt ind med %(name)s." + +#: templates/account/messages/logged_out.txt:2 +msgid "You have signed out." +msgstr "Du har logget ud." + +#: templates/account/messages/password_changed.txt:2 +msgid "Password successfully changed." +msgstr "Password ændret med success." + +#: templates/account/messages/password_set.txt:2 +msgid "Password successfully set." +msgstr "Password indstillet med success." + +#: templates/account/messages/primary_email_set.txt:2 +msgid "Primary e-mail address set." +msgstr "Primær e-mail indstillet." + +#: templates/account/messages/unverified_primary_email.txt:2 +msgid "Your primary e-mail address must be verified." +msgstr "Din primære e-mail adresse skal bekræftes." + +#: templates/account/password_change.html:5 +#: templates/account/password_change.html:8 +#: templates/account/password_change.html:13 +#: templates/account/password_reset_from_key.html:4 +#: templates/account/password_reset_from_key.html:7 +#: templates/account/password_reset_from_key_done.html:4 +#: templates/account/password_reset_from_key_done.html:7 +msgid "Change Password" +msgstr "Ændr password" + +#: templates/account/password_reset.html:6 +#: templates/account/password_reset.html:10 +#: templates/account/password_reset_done.html:6 +#: templates/account/password_reset_done.html:9 +msgid "Password Reset" +msgstr "Nulstil password" + +#: templates/account/password_reset.html:15 +msgid "" +"Forgotten your password? Enter your e-mail address below, and we'll send you " +"an e-mail allowing you to reset it." +msgstr "" +"Glemt dit password? Skriv din e-mail adresse herunder, og vi vil sende dig " +"en e-mail, hvorfra du kan nulstille det." + +#: templates/account/password_reset.html:20 +msgid "Reset My Password" +msgstr "Nulstil mit password" + +#: templates/account/password_reset.html:23 +msgid "Please contact us if you have any trouble resetting your password." +msgstr "" +"Kontakt os venligst, hvis du har problemer med at nulstille dit password." + +#: templates/account/password_reset_done.html:15 +msgid "" +"We have sent you an e-mail. Please contact us if you do not receive it " +"within a few minutes." +msgstr "" +"Vi har sendt dig en e-mail. Kontakt os venligst, hvis du ikke modtager den i " +"løbet af et par minutter." + +#: templates/account/password_reset_from_key.html:7 +msgid "Bad Token" +msgstr "Ugyldigt token" + +#: templates/account/password_reset_from_key.html:11 +#, python-format +msgid "" +"The password reset link was invalid, possibly because it has already been " +"used. Please request a new password reset." +msgstr "" +"Linket til nulstilling af password var ugyldigt, muligvis fordi det allerede " +"er blevet brugt. Lav venligst et nyt." + +#: templates/account/password_reset_from_key.html:17 +msgid "change password" +msgstr "ændr password" + +#: templates/account/password_reset_from_key.html:20 +#: templates/account/password_reset_from_key_done.html:8 +msgid "Your password is now changed." +msgstr "Dit password er nu ændret." + +#: templates/account/password_set.html:5 templates/account/password_set.html:8 +#: templates/account/password_set.html:13 +msgid "Set Password" +msgstr "Indstil password" + +#: templates/account/signup.html:5 templates/socialaccount/signup.html:5 +msgid "Signup" +msgstr "Opret" + +#: templates/account/signup.html:8 templates/account/signup.html:18 +#: templates/socialaccount/signup.html:8 templates/socialaccount/signup.html:19 +msgid "Sign Up" +msgstr "Opret konto" + +#: templates/account/signup.html:10 +#, python-format +msgid "" +"Already have an account? Then please sign in." +msgstr "Har du allerede en konto? Så log ind." + +#: templates/account/signup_closed.html:5 +#: templates/account/signup_closed.html:8 +msgid "Sign Up Closed" +msgstr "Lukket for nye konti" + +#: templates/account/signup_closed.html:10 +msgid "We are sorry, but the sign up is currently closed." +msgstr "Vi beklager, men der er for tiden lukket for oprettelse af nye konti." + +#: templates/account/snippets/already_logged_in.html:5 +msgid "Note" +msgstr "Note" + +#: templates/account/snippets/already_logged_in.html:5 +#, python-format +msgid "you are already logged in as %(user_display)s." +msgstr "du er allerede logget ind som %(user_display)s." + +#: templates/account/verification_sent.html:5 +#: templates/account/verification_sent.html:8 +#: templates/account/verified_email_required.html:5 +#: templates/account/verified_email_required.html:8 +msgid "Verify Your E-mail Address" +msgstr "Bekræft din e-mail adresse" + +#: templates/account/verification_sent.html:10 +msgid "" +"We have sent an e-mail to you for verification. Follow the link provided to " +"finalize the signup process. Please contact us if you do not receive it " +"within a few minutes." +msgstr "" +"Vi har sendt en e-mail til dig. Følg linket i den for at færdiggøre " +"oprettelsesprocessen. Kontakt os venligst, hvis du ikke modtager den i løbet " +"af et par minutter." + +#: templates/account/verified_email_required.html:12 +msgid "" +"This part of the site requires us to verify that\n" +"you are who you claim to be. For this purpose, we require that you\n" +"verify ownership of your e-mail address. " +msgstr "" +"Denne del af siden kræver at du bekræftiger at\n" +"du er hvem du påstår du er. Derfor er du nødt til at\n" +"bekræftige at du ejer din e-mail adresse " + +#: templates/account/verified_email_required.html:16 +msgid "" +"We have sent an e-mail to you for\n" +"verification. Please click on the link inside this e-mail. Please\n" +"contact us if you do not receive it within a few minutes." +msgstr "" +"Vi har sendt en e-mail til dig for bekræftigelse.\n" +"Klik på linket i den. Kontakt os venligst, hvis du ikke modtager\n" +" den i løbet af et par minutter." + +#: templates/account/verified_email_required.html:20 +#, python-format +msgid "" +"Note: you can still change your e-" +"mail address." +msgstr "" +"Bemærk: du kan stadig ændre din e-" +"mail adresse." + +#: templates/openid/login.html:9 +msgid "OpenID Sign In" +msgstr "OpenID Log ind" + +#: templates/socialaccount/authentication_error.html:5 +#: templates/socialaccount/authentication_error.html:8 +msgid "Social Network Login Failure" +msgstr "Social Network log ind-fejl" + +#: templates/socialaccount/authentication_error.html:10 +msgid "" +"An error occurred while attempting to login via your social network account." +msgstr "" +"Der opstod en fejl under forsøget på at logge ind via din social konto." + +#: templates/socialaccount/connections.html:5 +#: templates/socialaccount/connections.html:8 +msgid "Account Connections" +msgstr "Kontoforbindelser" + +#: templates/socialaccount/connections.html:11 +msgid "" +"You can sign in to your account using any of the following third party " +"accounts:" +msgstr "Du kan logge ind med følgende tredjepartskonti:" + +#: templates/socialaccount/connections.html:43 +msgid "" +"You currently have no social network accounts connected to this account." +msgstr "Du har ikke nogle social netværks-konti tilknyttet denne konto." + +#: templates/socialaccount/connections.html:46 +msgid "Add a 3rd Party Account" +msgstr "Tilføj tredjeparts konto" + +#: templates/socialaccount/login_cancelled.html:5 +#: templates/socialaccount/login_cancelled.html:9 +msgid "Login Cancelled" +msgstr "Log ind afbrudt" + +#: templates/socialaccount/login_cancelled.html:13 +#, python-format +msgid "" +"You decided to cancel logging in to our site using one of your existing " +"accounts. If this was a mistake, please proceed to sign in." +msgstr "" +"Du valgte at afbryde log ind på vores side med en af dine eksisterende " +"konti. Hvis det var en fejl, så fortsæt venligst til log ind." + +#: templates/socialaccount/messages/account_connected.txt:2 +msgid "The social account has been connected." +msgstr "Den social konto er tilknyttet." + +#: templates/socialaccount/messages/account_connected_other.txt:2 +msgid "The social account is already connected to a different account." +msgstr "Den sociale konto er allerede tilknyttet en anden konto." + +#: templates/socialaccount/messages/account_disconnected.txt:2 +msgid "The social account has been disconnected." +msgstr "Tilknytningen til den social konto er blevet afbrydt." + +#: templates/socialaccount/signup.html:10 +#, python-format +msgid "" +"You are about to use your %(provider_name)s account to login to\n" +"%(site_name)s. As a final step, please complete the following form:" +msgstr "" +"Du er ved at bruge din %(provider_name)s -konto til at logge ind i\n" +"%(site_name)s. Som et sidste skridt, udfyld venligst denne formular:" diff -Nru django-allauth-0.36.0+ds/allauth/locale/de/LC_MESSAGES/django.po django-allauth-0.38.0+ds/allauth/locale/de/LC_MESSAGES/django.po --- django-allauth-0.36.0+ds/allauth/locale/de/LC_MESSAGES/django.po 2018-05-08 05:43:54.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/locale/de/LC_MESSAGES/django.po 2018-08-27 10:01:33.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-allauth\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-08 00:43-0500\n" +"POT-Creation-Date: 2018-08-27 05:00-0500\n" "PO-Revision-Date: 2017-11-04 16:22+0100\n" "Last-Translator: Jannis Vajen \n" "Language-Team: German (http://www.transifex.com/projects/p/django-allauth/" @@ -34,7 +34,7 @@ msgid "A user is already registered with this e-mail address." msgstr "Es ist bereits jemand mit dieser E-Mail-Adresse registriert." -#: account/adapter.py:288 +#: account/adapter.py:294 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "Das Passwort muss aus mindestens {0} Zeichen bestehen." diff -Nru django-allauth-0.36.0+ds/allauth/locale/el/LC_MESSAGES/django.po django-allauth-0.38.0+ds/allauth/locale/el/LC_MESSAGES/django.po --- django-allauth-0.36.0+ds/allauth/locale/el/LC_MESSAGES/django.po 2018-05-08 05:43:54.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/locale/el/LC_MESSAGES/django.po 2018-08-27 10:01:33.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-08 00:43-0500\n" +"POT-Creation-Date: 2018-08-27 05:00-0500\n" "PO-Revision-Date: 2014-08-12 00:29+0200\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -32,7 +32,7 @@ msgid "A user is already registered with this e-mail address." msgstr "Ένας χρήστης έχει ήδη εγγραφεί με τη συγκεκριμένη διεύθυνση e-mail." -#: account/adapter.py:288 +#: account/adapter.py:294 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "Ο κωδικός πρέπει να είναι κατ' ελάχιστο {0} χαρακτήρες." diff -Nru django-allauth-0.36.0+ds/allauth/locale/en/LC_MESSAGES/django.po django-allauth-0.38.0+ds/allauth/locale/en/LC_MESSAGES/django.po --- django-allauth-0.36.0+ds/allauth/locale/en/LC_MESSAGES/django.po 2018-05-08 05:43:54.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/locale/en/LC_MESSAGES/django.po 2018-08-27 10:01:33.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-08 00:43-0500\n" +"POT-Creation-Date: 2018-08-27 05:00-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -29,7 +29,7 @@ msgid "A user is already registered with this e-mail address." msgstr "" -#: account/adapter.py:288 +#: account/adapter.py:294 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "" diff -Nru django-allauth-0.36.0+ds/allauth/locale/es/LC_MESSAGES/django.po django-allauth-0.38.0+ds/allauth/locale/es/LC_MESSAGES/django.po --- django-allauth-0.36.0+ds/allauth/locale/es/LC_MESSAGES/django.po 2018-05-08 05:43:54.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/locale/es/LC_MESSAGES/django.po 2018-08-27 10:01:33.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: django-allauth\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-08 00:43-0500\n" +"POT-Creation-Date: 2018-08-27 05:00-0500\n" "PO-Revision-Date: 2018-02-14 17:46-0600\n" "Last-Translator: Jannis Š\n" "Language-Team: Spanish (http://www.transifex.com/projects/p/django-allauth/" @@ -31,7 +31,7 @@ msgid "A user is already registered with this e-mail address." msgstr "Un usuario ya fue registrado con esta dirección de correo electrónico." -#: account/adapter.py:288 +#: account/adapter.py:294 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "Una contraseña necesita al menos {0} caracteres." diff -Nru django-allauth-0.36.0+ds/allauth/locale/eu/LC_MESSAGES/django.po django-allauth-0.38.0+ds/allauth/locale/eu/LC_MESSAGES/django.po --- django-allauth-0.36.0+ds/allauth/locale/eu/LC_MESSAGES/django.po 1970-01-01 00:00:00.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/locale/eu/LC_MESSAGES/django.po 2018-10-03 19:25:08.000000000 +0000 @@ -0,0 +1,803 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: django-allauth\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-08-28 20:53+0200\n" +"PO-Revision-Date: 2018-08-29 08:16+0200\n" +"Last-Translator: Eneko Illarramendi \n" +"Language-Team: Basque \n" +"Language: eu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.1.1\n" + +#: account/adapter.py:45 +msgid "Username can not be used. Please use other username." +msgstr "" +"Erabiltzaile izen hau ezin da erabili. Aukeratu beste erabiltzaile izen bat." + +#: account/adapter.py:49 +msgid "Too many failed login attempts. Try again later." +msgstr "Huts egite gehiegi saioa hasterakoan. Saiatu berriro beranduago." + +#: account/adapter.py:51 +msgid "A user is already registered with this e-mail address." +msgstr "" +"Erabiltzaile batek kontu bat sortu du iada helbide elektroniko honekin." + +#: account/adapter.py:294 +#, python-brace-format +msgid "Password must be a minimum of {0} characters." +msgstr "Pasahitzak gutxienez {0} karaktere izan behar ditu." + +#: account/apps.py:7 +msgid "Accounts" +msgstr "Kontuak" + +#: account/forms.py:61 account/forms.py:398 +msgid "You must type the same password each time." +msgstr "Pasahitz berdina idatzi behar duzu aldi bakoitzean." + +#: account/forms.py:91 account/forms.py:365 account/forms.py:476 +msgid "Password" +msgstr "Pasahitza" + +#: account/forms.py:92 +msgid "Remember Me" +msgstr "Gogora nazazue" + +#: account/forms.py:98 +msgid "This account is currently inactive." +msgstr "Kontu hau ez dago aktiboa orain." + +#: account/forms.py:101 +msgid "The e-mail address and/or password you specified are not correct." +msgstr "Sartutako helbide elektronikoa eta/edo pasahitza ez dira zuzenak." + +#: account/forms.py:104 +msgid "The username and/or password you specified are not correct." +msgstr "Sartutako erabiltzailea eta/edo pasahitza ez dira zuzenak." + +#: account/forms.py:113 account/forms.py:268 account/forms.py:426 +#: account/forms.py:495 +msgid "E-mail address" +msgstr "Helbide elektronikoa" + +#: account/forms.py:115 account/forms.py:301 account/forms.py:421 +#: account/forms.py:490 +msgid "E-mail" +msgstr "Emaila" + +#: account/forms.py:120 account/forms.py:123 account/forms.py:260 +#: account/forms.py:264 +msgid "Username" +msgstr "Erabiltzailea" + +#: account/forms.py:130 +msgid "Username or e-mail" +msgstr "Erabiltzailea edo emaila" + +#: account/forms.py:133 +msgctxt "field label" +msgid "Login" +msgstr "Logina" + +#: account/forms.py:292 +msgid "E-mail (again)" +msgstr "Emaila (berriro)" + +#: account/forms.py:296 +msgid "E-mail address confirmation" +msgstr "Helbide elektronikoaren egiaztapena" + +#: account/forms.py:304 +msgid "E-mail (optional)" +msgstr "Emaila (hautazkoa)" + +#: account/forms.py:345 +msgid "You must type the same email each time." +msgstr "Email berdina idatzi behar duzu aldi bakoitzean." + +#: account/forms.py:368 account/forms.py:477 +msgid "Password (again)" +msgstr "Pasahitza (berriro)" + +#: account/forms.py:432 +msgid "This e-mail address is already associated with this account." +msgstr "Helbide elektroniko hau dagoeneko kontu honi lotuta dago." + +#: account/forms.py:434 +msgid "This e-mail address is already associated with another account." +msgstr "Helbide elektroniko hau dagoeneko beste kontu bati lotuta dago." + +#: account/forms.py:456 +msgid "Current Password" +msgstr "Oraingo pasahitza" + +#: account/forms.py:457 account/forms.py:546 +msgid "New Password" +msgstr "Pasahitz berria" + +#: account/forms.py:458 account/forms.py:547 +msgid "New Password (again)" +msgstr "Pasahitz berria (berriro)" + +#: account/forms.py:466 +msgid "Please type your current password." +msgstr "Mesedez idatzi zure oraingo pasahitza." + +#: account/forms.py:504 +msgid "The e-mail address is not assigned to any user account" +msgstr "Helbide elektroniko hau ez dago kontu bati lotuta" + +#: account/forms.py:568 +msgid "The password reset token was invalid." +msgstr "Pasahitza berrezartzeko \"token\"-a baliogabea da." + +#: account/models.py:23 +msgid "user" +msgstr "erabiltzailea" + +#: account/models.py:27 account/models.py:81 +msgid "e-mail address" +msgstr "helbide elektronikoa" + +#: account/models.py:28 +msgid "verified" +msgstr "egiaztatuta" + +#: account/models.py:29 +msgid "primary" +msgstr "nagusia" + +#: account/models.py:34 +msgid "email address" +msgstr "helbide elektronikoa" + +#: account/models.py:35 +msgid "email addresses" +msgstr "helbide elektronikoak" + +#: account/models.py:83 +msgid "created" +msgstr "sortuta" + +#: account/models.py:85 +msgid "sent" +msgstr "bidalita" + +#: account/models.py:86 socialaccount/models.py:55 +msgid "key" +msgstr "giltza" + +#: account/models.py:91 +msgid "email confirmation" +msgstr "email egiaztapena" + +#: account/models.py:92 +msgid "email confirmations" +msgstr "email egiaztapenak" + +#: socialaccount/adapter.py:26 +#, python-format +msgid "" +"An account already exists with this e-mail address. Please sign in to that " +"account first, then connect your %s account." +msgstr "" +"Kontu bat sortu da iada helbide elektroniko honekin. Mesedez hasi saio berri " +"bat kontu honekin eta gero zure %s kontua honi lotu." + +#: socialaccount/adapter.py:131 +msgid "Your account has no password set up." +msgstr "Zure kontuak ez du pasahitzik zehaztuta." + +#: socialaccount/adapter.py:138 +msgid "Your account has no verified e-mail address." +msgstr "Zure kontuak ez du egiaztatutako emailik." + +#: socialaccount/apps.py:7 +msgid "Social Accounts" +msgstr "Sare sozial kontuak" + +#: socialaccount/models.py:43 socialaccount/models.py:77 +msgid "provider" +msgstr "zerbitzua" + +#: socialaccount/models.py:46 +msgid "name" +msgstr "izena" + +#: socialaccount/models.py:48 +msgid "client id" +msgstr "client id" + +#: socialaccount/models.py:50 +msgid "App ID, or consumer key" +msgstr "Aplikazioaren ID-a, edo \"consumer key\"-a" + +#: socialaccount/models.py:51 +msgid "secret key" +msgstr "\"secret key\"-a" + +#: socialaccount/models.py:53 +msgid "API secret, client secret, or consumer secret" +msgstr "\"API secret\"-a, \"client secret\"-a edo \"consumer secret\"-a" + +#: socialaccount/models.py:58 +msgid "Key" +msgstr "Giltza" + +#: socialaccount/models.py:66 +msgid "social application" +msgstr "aplikazio soziala" + +#: socialaccount/models.py:67 +msgid "social applications" +msgstr "aplikazio sozialak" + +#: socialaccount/models.py:96 +msgid "uid" +msgstr "uid" + +#: socialaccount/models.py:98 +msgid "last login" +msgstr "azken logina" + +#: socialaccount/models.py:100 +msgid "date joined" +msgstr "erregistro eguna" + +#: socialaccount/models.py:102 +msgid "extra data" +msgstr "datu gehigarriak" + +#: socialaccount/models.py:106 +msgid "social account" +msgstr "sare sozial kontua" + +#: socialaccount/models.py:107 +msgid "social accounts" +msgstr "sare sozial kontuak" + +#: socialaccount/models.py:133 +msgid "token" +msgstr "\"token\"-a" + +#: socialaccount/models.py:135 +msgid "\"oauth_token\" (OAuth1) or access token (OAuth2)" +msgstr "\"oauth_token\"-a (OAuth1) edo \"access token\"-a (OAuth2)" + +#: socialaccount/models.py:138 +msgid "token secret" +msgstr "\"token secret\"-a" + +#: socialaccount/models.py:140 +msgid "\"oauth_token_secret\" (OAuth1) or refresh token (OAuth2)" +msgstr "\"oauth_token_secret\"-a (OAuth1) edo \"refresh token\"-a (OAuth2)" + +#: socialaccount/models.py:142 +msgid "expires at" +msgstr "iraungitze data" + +#: socialaccount/models.py:146 +msgid "social application token" +msgstr "aplikazio sozial \"token\"-a" + +#: socialaccount/models.py:147 +msgid "social application tokens" +msgstr "aplikazio sozial \"token\"-ak" + +#: socialaccount/providers/douban/views.py:36 +msgid "Invalid profile data" +msgstr "Profil datu baliogabeak" + +#: socialaccount/providers/oauth/client.py:78 +#, python-format +msgid "Invalid response while obtaining request token from \"%s\"." +msgstr "Erantzun baliogabea \"%s\"-tik \"request token\"-a eskuratzean." + +#: socialaccount/providers/oauth/client.py:109 +#, python-format +msgid "Invalid response while obtaining access token from \"%s\"." +msgstr "Erantzun baliogabea \"%s\"-tik \"access token\"-a eskuratzean." + +#: socialaccount/providers/oauth/client.py:128 +#, python-format +msgid "No request token saved for \"%s\"." +msgstr "Ez dago \"request token\"-ik gordeta \"%s\"-entzat." + +#: socialaccount/providers/oauth/client.py:177 +#, python-format +msgid "No access token saved for \"%s\"." +msgstr "Ez dago \"access token\"-ik gordeta \"%s\"-entzat." + +#: socialaccount/providers/oauth/client.py:197 +#, python-format +msgid "No access to private resources at \"%s\"." +msgstr "Ez duzu baliabide pribatuetara sarbiderik: \"%s\"." + +#: templates/account/account_inactive.html:5 +#: templates/account/account_inactive.html:8 +msgid "Account Inactive" +msgstr "Kontu ez aktiboa" + +#: templates/account/account_inactive.html:10 +msgid "This account is inactive." +msgstr "Kontu hau ez dago aktiboa." + +#: templates/account/email.html:5 +msgid "Account" +msgstr "Kontua" + +#: templates/account/email.html:8 +msgid "E-mail Addresses" +msgstr "Helbide elektronikoak" + +#: templates/account/email.html:10 +msgid "The following e-mail addresses are associated with your account:" +msgstr "Helbide elektroniko hauek zure kontuari lotuta daude:" + +#: templates/account/email.html:24 +msgid "Verified" +msgstr "Egiaztatuta" + +#: templates/account/email.html:26 +msgid "Unverified" +msgstr "Egiaztatu gabe" + +#: templates/account/email.html:28 +msgid "Primary" +msgstr "Nagusia" + +#: templates/account/email.html:34 +msgid "Make Primary" +msgstr "Nagusia egin" + +#: templates/account/email.html:35 +msgid "Re-send Verification" +msgstr "Egiaztapen emaila berbidali" + +#: templates/account/email.html:36 templates/socialaccount/connections.html:35 +msgid "Remove" +msgstr "Ezabatu" + +#: templates/account/email.html:43 +msgid "Warning:" +msgstr "Adi:" + +#: templates/account/email.html:43 +msgid "" +"You currently do not have any e-mail address set up. You should really add " +"an e-mail address so you can receive notifications, reset your password, etc." +msgstr "" +"Oraingoz ez duzu helbide elektronikorik zehaztu. Helbide elektroniko bat " +"gehitu beharko zenuke notifikazioak jaso ahal izateko, pasahitza " +"berrezartzeko, etab." + +#: templates/account/email.html:48 +msgid "Add E-mail Address" +msgstr "Helbide elektronikoa gehitu" + +#: templates/account/email.html:53 +msgid "Add E-mail" +msgstr "Emaila gehitu" + +#: templates/account/email.html:62 +msgid "Do you really want to remove the selected e-mail address?" +msgstr "Ziur al zaude aukeratutako helbide elektronikoa ezabatu nahi duzula?" + +#: templates/account/email/email_confirmation_message.txt:1 +#, python-format +msgid "" +"Hello from %(site_name)s!\n" +"\n" +"You're receiving this e-mail because user %(user_display)s has given yours " +"as an e-mail address to connect their account.\n" +"\n" +"To confirm this is correct, go to %(activate_url)s\n" +msgstr "" +"Kaixo %(site_name)s webgunetik!\n" +"\n" +"Email hau jaso duzu %(user_display)s erabiltzaileak zure helbide " +"elektronikoa bere kontuarekin lotu nahi duelako.\n" +"\n" +"Hau zuzena dela baieztatzeko, egin klik hemen: %(activate_url)s\n" + +#: templates/account/email/email_confirmation_message.txt:7 +#, python-format +msgid "" +"Thank you from %(site_name)s!\n" +"%(site_domain)s" +msgstr "" +"Mila esker %(site_name)s-(e)tik!\n" +"%(site_domain)s" + +#: templates/account/email/email_confirmation_subject.txt:3 +msgid "Please Confirm Your E-mail Address" +msgstr "Mesedez egiaztatu zure helbide elektronikoa" + +#: templates/account/email/password_reset_key_message.txt:1 +#, python-format +msgid "" +"Hello from %(site_name)s!\n" +"\n" +"You're receiving this e-mail because you or someone else has requested a " +"password for your user account.\n" +"It can be safely ignored if you did not request a password reset. Click the " +"link below to reset your password." +msgstr "" +"Kaixo %(site_name)s webgunetik!\n" +"\n" +"Email hau jaso duzu zuk edo beste norbaitek pasahitza berrezartzeko eskaera " +"egin duelako zure kontuarentzat.\n" +"Eskaera zuk egin ez baduzu mezu hau alde batera utzi dezakezu. Edo egin klik " +"ondorengo estekan zure pasahitza berrezartzeko." + +#: templates/account/email/password_reset_key_message.txt:8 +#, python-format +msgid "In case you forgot, your username is %(username)s." +msgstr "Ahaztu baduzu, zure erabiltzaile izena %(username)s da." + +#: templates/account/email/password_reset_key_message.txt:10 +#, python-format +msgid "" +"Thank you for using %(site_name)s!\n" +"%(site_domain)s" +msgstr "" +"Mila esker %(site_name)s webgunea erabiltzeagatik!\n" +"%(site_domain)s" + +#: templates/account/email/password_reset_key_subject.txt:3 +msgid "Password Reset E-mail" +msgstr "Pasahitza berrezartzeko emaila" + +#: templates/account/email_confirm.html:6 +#: templates/account/email_confirm.html:10 +msgid "Confirm E-mail Address" +msgstr "Helbide elektronikoa egiaztatu" + +#: templates/account/email_confirm.html:16 +#, python-format +msgid "" +"Please confirm that %(email)s is an e-mail " +"address for user %(user_display)s." +msgstr "" +"Mesedez egiaztatu %(email)s " +"%(user_display)s erabiltzailearen helbide elektroniko bat dela." + +#: templates/account/email_confirm.html:20 +msgid "Confirm" +msgstr "Egiaztatu" + +#: templates/account/email_confirm.html:27 +#, python-format +msgid "" +"This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request." +msgstr "" +"Egiaztapen esteka hau iraungirik dago edo baliogabea da. Mesedez eskatu egiaztapen email berri bat." + +#: templates/account/login.html:6 templates/account/login.html:10 +#: templates/account/login.html:43 +msgid "Sign In" +msgstr "Saioa hasi" + +#: templates/account/login.html:15 +#, python-format +msgid "" +"Please sign in with one\n" +"of your existing third party accounts. Or, sign " +"up\n" +"for a %(site_name)s account and sign in below:" +msgstr "" +"Mesedez hasi saioa lotutako sare sozial kontu bat\n" +"erabiliz, edo sortu kontu bat\n" +"%(site_name)s webgunean eta saioa hasi hemen:" + +#: templates/account/login.html:25 +msgid "or" +msgstr "edo" + +#: templates/account/login.html:32 +#, python-format +msgid "" +"If you have not created an account yet, then please\n" +"sign up first." +msgstr "" +"Oraindik kontu bat sortu ez baduzu, mesedez\n" +"sortu kontu bat lehenik." + +#: templates/account/login.html:42 +msgid "Forgot Password?" +msgstr "Pasahitza ahaztu duzu?" + +#: templates/account/logout.html:5 templates/account/logout.html:8 +#: templates/account/logout.html:17 +msgid "Sign Out" +msgstr "Saioa amaitu" + +#: templates/account/logout.html:10 +msgid "Are you sure you want to sign out?" +msgstr "Ziur al zaude saioa amaitu nahi duzula?" + +#: templates/account/messages/cannot_delete_primary_email.txt:2 +#, python-format +msgid "You cannot remove your primary e-mail address (%(email)s)." +msgstr "Ezin duzu zure helbide elektroniko nagusia ezabatu (%(email)s)." + +#: templates/account/messages/email_confirmation_sent.txt:2 +#, python-format +msgid "Confirmation e-mail sent to %(email)s." +msgstr "Egiaztapen emaila bidali da %(email)s helbidera." + +#: templates/account/messages/email_confirmed.txt:2 +#, python-format +msgid "You have confirmed %(email)s." +msgstr "%(email)s emaila egiaztatu duzu." + +#: templates/account/messages/email_deleted.txt:2 +#, python-format +msgid "Removed e-mail address %(email)s." +msgstr "%(email)s helbide elektronikoa ezabatu da." + +#: templates/account/messages/logged_in.txt:4 +#, python-format +msgid "Successfully signed in as %(name)s." +msgstr "%(name)s bezala hasi duzu saioa." + +#: templates/account/messages/logged_out.txt:2 +msgid "You have signed out." +msgstr "Saioa amaitu duzu." + +#: templates/account/messages/password_changed.txt:2 +msgid "Password successfully changed." +msgstr "Pasahitza behar bezala aldatu da." + +#: templates/account/messages/password_set.txt:2 +msgid "Password successfully set." +msgstr "Pasahitza behar bezala zehaztu da." + +#: templates/account/messages/primary_email_set.txt:2 +msgid "Primary e-mail address set." +msgstr "Helbide elektroniko nagusia zehaztu da." + +#: templates/account/messages/unverified_primary_email.txt:2 +msgid "Your primary e-mail address must be verified." +msgstr "Zure email nagusiak egiaztatuta egon behar du." + +#: templates/account/password_change.html:5 +#: templates/account/password_change.html:8 +#: templates/account/password_change.html:13 +#: templates/account/password_reset_from_key.html:4 +#: templates/account/password_reset_from_key.html:7 +#: templates/account/password_reset_from_key_done.html:4 +#: templates/account/password_reset_from_key_done.html:7 +msgid "Change Password" +msgstr "Pasahitza aldatu" + +#: templates/account/password_reset.html:6 +#: templates/account/password_reset.html:10 +#: templates/account/password_reset_done.html:6 +#: templates/account/password_reset_done.html:9 +msgid "Password Reset" +msgstr "Pasahitza berrezarri" + +#: templates/account/password_reset.html:15 +msgid "" +"Forgotten your password? Enter your e-mail address below, and we'll send you " +"an e-mail allowing you to reset it." +msgstr "" +"Zure pasahitza ahaztu al duzu? Idatzi zure helbide elektronikoa hemen eta " +"pasahitza berrezartzeko email bat bidaliko dizugu." + +#: templates/account/password_reset.html:20 +msgid "Reset My Password" +msgstr "Nire pasahitza berrezarri" + +#: templates/account/password_reset.html:23 +msgid "Please contact us if you have any trouble resetting your password." +msgstr "" +"Mesedez jarri gurekin kontaktuan zure pasahitza berrezartzeko arazorik " +"baduzu." + +#: templates/account/password_reset_done.html:15 +msgid "" +"We have sent you an e-mail. Please contact us if you do not receive it " +"within a few minutes." +msgstr "" +"Email bat bidali dizugu. Mesedez jarri gurekin kontaktuan hurrengo " +"minutuetan jasotzen ez baduzu." + +#: templates/account/password_reset_from_key.html:7 +msgid "Bad Token" +msgstr "Token baliogabea" + +#: templates/account/password_reset_from_key.html:11 +#, python-format +msgid "" +"The password reset link was invalid, possibly because it has already been " +"used. Please request a new password reset." +msgstr "" +"Pasahitza berrezartzeko esteka baliogabea da, beharbada lehendik ere erabili " +"delako. Mesedez eskatu pasahitza " +"berrezartzeko email berri bat." + +#: templates/account/password_reset_from_key.html:17 +msgid "change password" +msgstr "pasahitza aldatu" + +#: templates/account/password_reset_from_key.html:20 +#: templates/account/password_reset_from_key_done.html:8 +msgid "Your password is now changed." +msgstr "Zure pasahitza aldatuta dago orain." + +#: templates/account/password_set.html:5 templates/account/password_set.html:8 +#: templates/account/password_set.html:13 +msgid "Set Password" +msgstr "Pasahitza zehaztu" + +#: templates/account/signup.html:5 templates/socialaccount/signup.html:5 +msgid "Signup" +msgstr "Kontua sortu" + +#: templates/account/signup.html:8 templates/account/signup.html:18 +#: templates/socialaccount/signup.html:8 templates/socialaccount/signup.html:19 +msgid "Sign Up" +msgstr "Kontua sortu" + +#: templates/account/signup.html:10 +#, python-format +msgid "" +"Already have an account? Then please sign in." +msgstr "" +"Lehendik kontu bat sortua duzu? Saioa hasi " +"orduan." + +#: templates/account/signup_closed.html:5 +#: templates/account/signup_closed.html:8 +msgid "Sign Up Closed" +msgstr "Ezin da konturik sortu iada" + +#: templates/account/signup_closed.html:10 +msgid "We are sorry, but the sign up is currently closed." +msgstr "Sentitzen dugu baina ezin da kontu berririk sortu." + +#: templates/account/snippets/already_logged_in.html:5 +msgid "Note" +msgstr "Oharra" + +#: templates/account/snippets/already_logged_in.html:5 +#, python-format +msgid "you are already logged in as %(user_display)s." +msgstr "lehendik saioa hasita duzu %(user_display)s bezala." + +#: templates/account/verification_sent.html:5 +#: templates/account/verification_sent.html:8 +#: templates/account/verified_email_required.html:5 +#: templates/account/verified_email_required.html:8 +msgid "Verify Your E-mail Address" +msgstr "Zure helbide elektronikoa egiaztatu" + +#: templates/account/verification_sent.html:10 +msgid "" +"We have sent an e-mail to you for verification. Follow the link provided to " +"finalize the signup process. Please contact us if you do not receive it " +"within a few minutes." +msgstr "" +"Email bat bidali dizugu zure helbidea egiaztatzeko. Mesedez egin klik bertan " +"aurkituko duzun estekan kontua sortzeko prozesua amaitzeko, edo jarri " +"gurekin kontaktuan hurrengo minutuetan emailik jasotzen ez baduzu." + +#: templates/account/verified_email_required.html:12 +msgid "" +"This part of the site requires us to verify that\n" +"you are who you claim to be. For this purpose, we require that you\n" +"verify ownership of your e-mail address. " +msgstr "" +"Webguneko atal honek zuk diozuna zarela egiaztatzea\n" +"eskatzen digu. Honetarako zure helbide elektronikoa\n" +"egiaztatzea beharrezkoa da. " + +#: templates/account/verified_email_required.html:16 +msgid "" +"We have sent an e-mail to you for\n" +"verification. Please click on the link inside this e-mail. Please\n" +"contact us if you do not receive it within a few minutes." +msgstr "" +"Email bat bidali dizugu zure helbidea egiaztatzeko.\n" +"Mesedez egin klik bertan aurkituko duzun estekan,\n" +"edo jarri gurekin kontaktuan hurrengo minutuetan\n" +"emailik jasotzen ez baduzu." + +#: templates/account/verified_email_required.html:20 +#, python-format +msgid "" +"Note: you can still change your e-" +"mail address." +msgstr "" +"Oharra: oraindik zure helbide " +"elektronikoa aldatu dezakezu." + +#: templates/openid/login.html:9 +msgid "OpenID Sign In" +msgstr "OpenID-rekin sartu" + +#: templates/socialaccount/authentication_error.html:5 +#: templates/socialaccount/authentication_error.html:8 +msgid "Social Network Login Failure" +msgstr "Arazoak sare sozialarekin logina egitean" + +#: templates/socialaccount/authentication_error.html:10 +msgid "" +"An error occurred while attempting to login via your social network account." +msgstr "" +"Arazoren bat izan da zure sare sozial kontua erabiltzen saioa hasteko " +"ahaleginean." + +#: templates/socialaccount/connections.html:5 +#: templates/socialaccount/connections.html:8 +msgid "Account Connections" +msgstr "Lotutako kontuak" + +#: templates/socialaccount/connections.html:11 +msgid "" +"You can sign in to your account using any of the following third party " +"accounts:" +msgstr "" +"Ondorengo zerbitzu hauetako edozein erabili dezakezu zure kontuan sartzeko:" + +#: templates/socialaccount/connections.html:43 +msgid "" +"You currently have no social network accounts connected to this account." +msgstr "Oraingoz ez duzu sare sozial konturik lotu kontu honekin." + +#: templates/socialaccount/connections.html:46 +msgid "Add a 3rd Party Account" +msgstr "Sare sozial kontu bat gehitu" + +#: templates/socialaccount/login_cancelled.html:5 +#: templates/socialaccount/login_cancelled.html:9 +msgid "Login Cancelled" +msgstr "Baliogabetutako logina" + +#: templates/socialaccount/login_cancelled.html:13 +#, python-format +msgid "" +"You decided to cancel logging in to our site using one of your existing " +"accounts. If this was a mistake, please proceed to sign in." +msgstr "" +"Lotutako kontu batekin saioa hasteko saiakera bertan behera utzi duzu. " +"Oharkabean gertatu bada, mesedez saioa hasi " +"berriro." + +#: templates/socialaccount/messages/account_connected.txt:2 +msgid "The social account has been connected." +msgstr "Sare sozial kontua behar bezala lotu da." + +#: templates/socialaccount/messages/account_connected_other.txt:2 +msgid "The social account is already connected to a different account." +msgstr "Sare sozial kontua dagoeneko beste kontu bati lotuta dago." + +#: templates/socialaccount/messages/account_disconnected.txt:2 +msgid "The social account has been disconnected." +msgstr "Sare sozial kontu honekin lotura ezabatu da." + +#: templates/socialaccount/signup.html:10 +#, python-format +msgid "" +"You are about to use your %(provider_name)s account to login to\n" +"%(site_name)s. As a final step, please complete the following form:" +msgstr "" +"Zure %(provider_name)s kontua erabiltzear zaude %(site_name)s\n" +"webgunean saioa hasteko. Azken pausu bezala, mesedez osa ezazu\n" +"formulario hau:" diff -Nru django-allauth-0.36.0+ds/allauth/locale/fa/LC_MESSAGES/django.po django-allauth-0.38.0+ds/allauth/locale/fa/LC_MESSAGES/django.po --- django-allauth-0.36.0+ds/allauth/locale/fa/LC_MESSAGES/django.po 2018-05-08 05:43:54.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/locale/fa/LC_MESSAGES/django.po 2018-08-27 10:01:33.000000000 +0000 @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-08 00:43-0500\n" +"POT-Creation-Date: 2018-08-27 05:00-0500\n" "PO-Revision-Date: 2015-09-14 12:40-0000\n" "Last-Translator: NARIMAN GHARIB \n" "Language-Team: \n" @@ -28,7 +28,7 @@ msgid "A user is already registered with this e-mail address." msgstr "کاربر دیگری قبلا با این نام کاربری ثبت نام کرده است." -#: account/adapter.py:288 +#: account/adapter.py:294 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "پسورد تنها می‌تواند دارای {0} کاراکتر باشد." diff -Nru django-allauth-0.36.0+ds/allauth/locale/fi/LC_MESSAGES/django.po django-allauth-0.38.0+ds/allauth/locale/fi/LC_MESSAGES/django.po --- django-allauth-0.36.0+ds/allauth/locale/fi/LC_MESSAGES/django.po 2018-05-08 05:43:54.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/locale/fi/LC_MESSAGES/django.po 2018-08-27 10:01:33.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-08 00:43-0500\n" +"POT-Creation-Date: 2018-08-27 05:00-0500\n" "PO-Revision-Date: 2015-08-13 15:17+0300\n" "Last-Translator: Anonymous User \n" "Language-Team: LANGUAGE \n" @@ -32,7 +32,7 @@ msgid "A user is already registered with this e-mail address." msgstr "Tämä sähköpostiosoite on jo käytössä." -#: account/adapter.py:288 +#: account/adapter.py:294 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "Salasanan tulee olla vähintään {0} merkkiä pitkä." diff -Nru django-allauth-0.36.0+ds/allauth/locale/fr/LC_MESSAGES/django.po django-allauth-0.38.0+ds/allauth/locale/fr/LC_MESSAGES/django.po --- django-allauth-0.36.0+ds/allauth/locale/fr/LC_MESSAGES/django.po 2018-05-08 05:43:54.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/locale/fr/LC_MESSAGES/django.po 2018-08-27 10:01:33.000000000 +0000 @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: django-allauth\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-08 00:43-0500\n" +"POT-Creation-Date: 2018-08-27 05:00-0500\n" "PO-Revision-Date: 2016-10-06 15:16+0200\n" "Last-Translator: Steve Kossouho \n" "Language-Team: français <>\n" @@ -33,7 +33,7 @@ msgid "A user is already registered with this e-mail address." msgstr "Un autre utilisateur utilise déjà cette adresse e-mail." -#: account/adapter.py:288 +#: account/adapter.py:294 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "Le mot de passe doit contenir au minimum {0} caractères." diff -Nru django-allauth-0.36.0+ds/allauth/locale/he/LC_MESSAGES/django.po django-allauth-0.38.0+ds/allauth/locale/he/LC_MESSAGES/django.po --- django-allauth-0.36.0+ds/allauth/locale/he/LC_MESSAGES/django.po 2018-05-08 05:43:53.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/locale/he/LC_MESSAGES/django.po 2018-08-27 10:01:33.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: 0.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-08 00:43-0500\n" +"POT-Creation-Date: 2018-08-27 05:00-0500\n" "PO-Revision-Date: 2017-08-26 16:11+0300\n" "Last-Translator: Udi Oron \n" "Language-Team: Hebrew\n" @@ -30,7 +30,7 @@ msgid "A user is already registered with this e-mail address." msgstr "משתמש אחר כבר רשום עם כתובת אימייל זו." -#: account/adapter.py:288 +#: account/adapter.py:294 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "הסיסמה חייבת להיות באורך של לפחות {0} תווים." diff -Nru django-allauth-0.36.0+ds/allauth/locale/hr/LC_MESSAGES/django.po django-allauth-0.38.0+ds/allauth/locale/hr/LC_MESSAGES/django.po --- django-allauth-0.36.0+ds/allauth/locale/hr/LC_MESSAGES/django.po 2018-05-08 05:43:54.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/locale/hr/LC_MESSAGES/django.po 2018-08-27 10:01:33.000000000 +0000 @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-08 00:43-0500\n" +"POT-Creation-Date: 2018-08-27 05:00-0500\n" "PO-Revision-Date: 2014-08-12 00:31+0200\n" "Last-Translator: \n" "Language-Team: Bojan Mihelac \n" @@ -35,7 +35,7 @@ msgid "A user is already registered with this e-mail address." msgstr "Već postoji korisnik registriran s ovom e-mail adresom." -#: account/adapter.py:288 +#: account/adapter.py:294 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "Lozinka treba imati najmanje {0} znakova." diff -Nru django-allauth-0.36.0+ds/allauth/locale/hu/LC_MESSAGES/django.po django-allauth-0.38.0+ds/allauth/locale/hu/LC_MESSAGES/django.po --- django-allauth-0.36.0+ds/allauth/locale/hu/LC_MESSAGES/django.po 2018-05-08 05:43:54.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/locale/hu/LC_MESSAGES/django.po 2018-08-27 10:01:33.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-08 00:43-0500\n" +"POT-Creation-Date: 2018-08-27 05:00-0500\n" "PO-Revision-Date: 2015-05-08 22:42+0100\n" "Last-Translator: Tamás Makó \n" "Language-Team: \n" @@ -29,7 +29,7 @@ msgid "A user is already registered with this e-mail address." msgstr "Egy felhasználó már regisztrált ezzel az email címmel." -#: account/adapter.py:288 +#: account/adapter.py:294 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "A jelszónak minimum {0} hosszúnak kell lennnie." diff -Nru django-allauth-0.36.0+ds/allauth/locale/it/LC_MESSAGES/django.po django-allauth-0.38.0+ds/allauth/locale/it/LC_MESSAGES/django.po --- django-allauth-0.36.0+ds/allauth/locale/it/LC_MESSAGES/django.po 2018-05-08 05:43:54.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/locale/it/LC_MESSAGES/django.po 2018-08-27 10:01:33.000000000 +0000 @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: django-allauth\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-08 00:43-0500\n" +"POT-Creation-Date: 2018-08-27 05:00-0500\n" "PO-Revision-Date: 2018-03-08 00:40+0100\n" "Last-Translator: joke2k \n" "Language-Team: Italian (http://www.transifex.com/projects/p/django-allauth/" @@ -33,7 +33,7 @@ msgid "A user is already registered with this e-mail address." msgstr "Un altro utente si è già registrato con questo indirizzo e-mail." -#: account/adapter.py:288 +#: account/adapter.py:294 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "La password deve essere lunga almeno {0} caratteri." diff -Nru django-allauth-0.36.0+ds/allauth/locale/ja/LC_MESSAGES/django.po django-allauth-0.38.0+ds/allauth/locale/ja/LC_MESSAGES/django.po --- django-allauth-0.36.0+ds/allauth/locale/ja/LC_MESSAGES/django.po 2018-05-08 05:43:53.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/locale/ja/LC_MESSAGES/django.po 2018-08-27 10:01:33.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-08 00:43-0500\n" +"POT-Creation-Date: 2018-08-27 05:00-0500\n" "PO-Revision-Date: 2014-08-12 00:32+0200\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -30,7 +30,7 @@ msgid "A user is already registered with this e-mail address." msgstr "他のユーザーがこのメールアドレスを使用しています。" -#: account/adapter.py:288 +#: account/adapter.py:294 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "パスワードは {0} 文字以上の長さが必要です。" diff -Nru django-allauth-0.36.0+ds/allauth/locale/ko/LC_MESSAGES/django.po django-allauth-0.38.0+ds/allauth/locale/ko/LC_MESSAGES/django.po --- django-allauth-0.36.0+ds/allauth/locale/ko/LC_MESSAGES/django.po 2018-05-08 05:43:54.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/locale/ko/LC_MESSAGES/django.po 2018-08-27 10:01:33.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-08 00:43-0500\n" +"POT-Creation-Date: 2018-08-27 05:00-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -30,7 +30,7 @@ msgid "A user is already registered with this e-mail address." msgstr "해당 이메일은 이미 사용되고 있습니다." -#: account/adapter.py:288 +#: account/adapter.py:294 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "비밀번호는 최소 {0}자 이상이어야 합니다." diff -Nru django-allauth-0.36.0+ds/allauth/locale/ky/LC_MESSAGES/django.po django-allauth-0.38.0+ds/allauth/locale/ky/LC_MESSAGES/django.po --- django-allauth-0.36.0+ds/allauth/locale/ky/LC_MESSAGES/django.po 2018-05-08 05:43:53.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/locale/ky/LC_MESSAGES/django.po 2018-08-27 10:01:33.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-08 00:43-0500\n" +"POT-Creation-Date: 2018-08-27 05:00-0500\n" "PO-Revision-Date: 2016-07-20 22:24+0600\n" "Last-Translator: Murat Jumashev \n" "Language-Team: LANGUAGE \n" @@ -29,7 +29,7 @@ msgid "A user is already registered with this e-mail address." msgstr "Мындай эмейл менен катталган колдонуучу бар." -#: account/adapter.py:288 +#: account/adapter.py:294 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "Купуя жок дегенде {0} белгиден турушу керек." diff -Nru django-allauth-0.36.0+ds/allauth/locale/lt/LC_MESSAGES/django.po django-allauth-0.38.0+ds/allauth/locale/lt/LC_MESSAGES/django.po --- django-allauth-0.36.0+ds/allauth/locale/lt/LC_MESSAGES/django.po 2018-05-08 05:43:54.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/locale/lt/LC_MESSAGES/django.po 2018-08-27 10:01:33.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-08 00:43-0500\n" +"POT-Creation-Date: 2018-08-27 05:00-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -32,7 +32,7 @@ msgid "A user is already registered with this e-mail address." msgstr "Šiuo el. pašto adresu jau yra užsiregistravęs kitas naudotojas." -#: account/adapter.py:288 +#: account/adapter.py:294 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "Slaptažodis turi būti sudarytas mažiausiai iš {0} simbolių." diff -Nru django-allauth-0.36.0+ds/allauth/locale/lv/LC_MESSAGES/django.po django-allauth-0.38.0+ds/allauth/locale/lv/LC_MESSAGES/django.po --- django-allauth-0.36.0+ds/allauth/locale/lv/LC_MESSAGES/django.po 2018-05-08 05:43:54.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/locale/lv/LC_MESSAGES/django.po 2018-08-27 10:01:33.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-08 00:43-0500\n" +"POT-Creation-Date: 2018-08-27 05:00-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -33,7 +33,7 @@ msgid "A user is already registered with this e-mail address." msgstr "Lietotājs ar šādu e-pasta adresi jau ir reģistrēts." -#: account/adapter.py:288 +#: account/adapter.py:294 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "Parolei jābūt vismaz {0} simbolus garai." diff -Nru django-allauth-0.36.0+ds/allauth/locale/nl/LC_MESSAGES/django.po django-allauth-0.38.0+ds/allauth/locale/nl/LC_MESSAGES/django.po --- django-allauth-0.36.0+ds/allauth/locale/nl/LC_MESSAGES/django.po 2018-05-08 05:43:54.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/locale/nl/LC_MESSAGES/django.po 2018-08-27 10:01:33.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-allauth\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-08 00:43-0500\n" +"POT-Creation-Date: 2018-08-27 05:00-0500\n" "PO-Revision-Date: 2016-07-25 15:18+0200\n" "Last-Translator: pennersr \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/django-allauth/" @@ -31,7 +31,7 @@ msgid "A user is already registered with this e-mail address." msgstr "Er is al een gebruiker geregistreerd met dit e-mailadres." -#: account/adapter.py:288 +#: account/adapter.py:294 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "Het wachtwoord moet minimaal {0} tekens bevatten." diff -Nru django-allauth-0.36.0+ds/allauth/locale/no/LC_MESSAGES/django.po django-allauth-0.38.0+ds/allauth/locale/no/LC_MESSAGES/django.po --- django-allauth-0.36.0+ds/allauth/locale/no/LC_MESSAGES/django.po 2018-05-08 05:43:53.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/locale/no/LC_MESSAGES/django.po 2018-08-27 10:01:33.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-08 00:43-0500\n" +"POT-Creation-Date: 2018-08-27 05:00-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -29,7 +29,7 @@ msgid "A user is already registered with this e-mail address." msgstr "En bruker med følgende e-postadresse er allerede registrert." -#: account/adapter.py:288 +#: account/adapter.py:294 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "Passordet må være minst {0} tegn." diff -Nru django-allauth-0.36.0+ds/allauth/locale/pl/LC_MESSAGES/django.po django-allauth-0.38.0+ds/allauth/locale/pl/LC_MESSAGES/django.po --- django-allauth-0.36.0+ds/allauth/locale/pl/LC_MESSAGES/django.po 2018-05-08 05:43:53.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/locale/pl/LC_MESSAGES/django.po 2018-08-27 10:01:33.000000000 +0000 @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-08 00:43-0500\n" +"POT-Creation-Date: 2018-08-27 05:00-0500\n" "PO-Revision-Date: 2016-12-05 10:43+0100\n" "Last-Translator: Adam Dobrawy \n" "Language-Team: \n" @@ -28,7 +28,7 @@ msgid "A user is already registered with this e-mail address." msgstr "W systemie jest już zarejestrowany użytkownik o tym adresie e-mail." -#: account/adapter.py:288 +#: account/adapter.py:294 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "Hasło musi składać się minimalnie z {0} znaków." diff -Nru django-allauth-0.36.0+ds/allauth/locale/pt_BR/LC_MESSAGES/django.po django-allauth-0.38.0+ds/allauth/locale/pt_BR/LC_MESSAGES/django.po --- django-allauth-0.36.0+ds/allauth/locale/pt_BR/LC_MESSAGES/django.po 2018-05-08 05:43:53.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/locale/pt_BR/LC_MESSAGES/django.po 2018-08-27 10:01:33.000000000 +0000 @@ -11,7 +11,7 @@ msgstr "" "Project-Id-Version: django-allauth\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-08 00:43-0500\n" +"POT-Creation-Date: 2018-08-27 05:00-0500\n" "PO-Revision-Date: 2014-12-01 01:20+0000\n" "Last-Translator: cacarrara \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/" @@ -34,7 +34,7 @@ msgid "A user is already registered with this e-mail address." msgstr "Um usuário já foi registado com este endereço de e-mail." -#: account/adapter.py:288 +#: account/adapter.py:294 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "A senha deve ter no mínimo {0} caracteres." diff -Nru django-allauth-0.36.0+ds/allauth/locale/pt_PT/LC_MESSAGES/django.po django-allauth-0.38.0+ds/allauth/locale/pt_PT/LC_MESSAGES/django.po --- django-allauth-0.36.0+ds/allauth/locale/pt_PT/LC_MESSAGES/django.po 2018-05-08 05:43:54.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/locale/pt_PT/LC_MESSAGES/django.po 2018-08-27 10:01:33.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: django-allauth\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-08 00:43-0500\n" +"POT-Creation-Date: 2018-08-27 05:00-0500\n" "PO-Revision-Date: 2014-08-12 00:33+0200\n" "Last-Translator: Jannis Š\n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/" @@ -30,7 +30,7 @@ msgid "A user is already registered with this e-mail address." msgstr "Um utilizador já foi registado com este endereço de e-mail." -#: account/adapter.py:288 +#: account/adapter.py:294 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "A palavra-passe deve ter no mínimo {0} caracteres." diff -Nru django-allauth-0.36.0+ds/allauth/locale/ru/LC_MESSAGES/django.po django-allauth-0.38.0+ds/allauth/locale/ru/LC_MESSAGES/django.po --- django-allauth-0.36.0+ds/allauth/locale/ru/LC_MESSAGES/django.po 2018-05-08 05:43:54.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/locale/ru/LC_MESSAGES/django.po 2018-08-27 10:01:33.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-08 00:43-0500\n" +"POT-Creation-Date: 2018-08-27 05:00-0500\n" "PO-Revision-Date: 2017-04-05 22:48+0300\n" "Last-Translator: \n" "Language-Team: \n" @@ -29,7 +29,7 @@ msgid "A user is already registered with this e-mail address." msgstr "Пользователь с таким e-mail адресом уже зарегистрирован." -#: account/adapter.py:288 +#: account/adapter.py:294 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "Минимальное количество символов в пароле: {0}." diff -Nru django-allauth-0.36.0+ds/allauth/locale/sk/LC_MESSAGES/django.po django-allauth-0.38.0+ds/allauth/locale/sk/LC_MESSAGES/django.po --- django-allauth-0.36.0+ds/allauth/locale/sk/LC_MESSAGES/django.po 2018-05-08 05:43:53.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/locale/sk/LC_MESSAGES/django.po 2018-08-27 10:01:33.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-08 00:43-0500\n" +"POT-Creation-Date: 2018-08-27 05:00-0500\n" "PO-Revision-Date: 2017-04-26 12:48+0200\n" "Last-Translator: Tomas Babej \n" "Language-Team: \n" @@ -29,7 +29,7 @@ msgid "A user is already registered with this e-mail address." msgstr "Používateľ s touto e-mailovou adresou už existuje." -#: account/adapter.py:288 +#: account/adapter.py:294 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "Heslo musí mať aspoň {0} znakov." diff -Nru django-allauth-0.36.0+ds/allauth/locale/sv/LC_MESSAGES/django.po django-allauth-0.38.0+ds/allauth/locale/sv/LC_MESSAGES/django.po --- django-allauth-0.36.0+ds/allauth/locale/sv/LC_MESSAGES/django.po 2018-05-08 05:43:53.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/locale/sv/LC_MESSAGES/django.po 2018-08-27 10:01:33.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: django-allauth\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-08 00:43-0500\n" +"POT-Creation-Date: 2018-08-27 05:00-0500\n" "PO-Revision-Date: 2014-08-12 00:35+0200\n" "Last-Translator: Jannis Š\n" "Language-Team: Swedish (http://www.transifex.com/projects/p/django-allauth/" @@ -30,7 +30,7 @@ msgid "A user is already registered with this e-mail address." msgstr "En användare är redan registrerad med den här epost-adressen" -#: account/adapter.py:288 +#: account/adapter.py:294 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "Lösenordet måste vara minst {0} tecken långt" diff -Nru django-allauth-0.36.0+ds/allauth/locale/th/LC_MESSAGES/django.po django-allauth-0.38.0+ds/allauth/locale/th/LC_MESSAGES/django.po --- django-allauth-0.36.0+ds/allauth/locale/th/LC_MESSAGES/django.po 2018-05-08 05:43:54.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/locale/th/LC_MESSAGES/django.po 2018-08-27 10:01:33.000000000 +0000 @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: django-allauth\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-08 00:43-0500\n" +"POT-Creation-Date: 2018-08-27 05:00-0500\n" "PO-Revision-Date: 2015-06-26 13:09+0700\n" "Last-Translator: Nattaphoom Chaipreecha \n" "Language-Team: Thai \n" @@ -32,7 +32,7 @@ msgid "A user is already registered with this e-mail address." msgstr "ชื่อผู้ใช้ได้ถูกลงทะเบียนด้วยอีเมลนี้แล้ว" -#: account/adapter.py:288 +#: account/adapter.py:294 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "รหัสผ่านต้องมีอย่างน้อย {0} ตัวอักษร" diff -Nru django-allauth-0.36.0+ds/allauth/locale/tr/LC_MESSAGES/django.po django-allauth-0.38.0+ds/allauth/locale/tr/LC_MESSAGES/django.po --- django-allauth-0.36.0+ds/allauth/locale/tr/LC_MESSAGES/django.po 2018-05-08 05:43:54.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/locale/tr/LC_MESSAGES/django.po 2018-08-27 10:01:33.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: django-allauth\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-08 00:43-0500\n" +"POT-Creation-Date: 2018-08-27 05:00-0500\n" "PO-Revision-Date: 2014-08-12 00:35+0200\n" "Last-Translator: Jannis Š\n" "Language-Team: Turkish (http://www.transifex.com/projects/p/django-allauth/" @@ -31,7 +31,7 @@ msgid "A user is already registered with this e-mail address." msgstr "Bu e-posta adresiyle bir kullanıcı zaten kayıtlı." -#: account/adapter.py:288 +#: account/adapter.py:294 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "Parola en az {0} karakter olmalıdır." @@ -176,11 +176,11 @@ #: account/models.py:83 msgid "created" -msgstr "" +msgstr "oluşturuldu" #: account/models.py:85 msgid "sent" -msgstr "" +msgstr "gönderildi" #: account/models.py:86 socialaccount/models.py:55 msgid "key" @@ -218,7 +218,7 @@ #: socialaccount/models.py:43 socialaccount/models.py:77 msgid "provider" -msgstr "" +msgstr "sağlayıcı" #: socialaccount/models.py:46 #, fuzzy @@ -259,11 +259,11 @@ #: socialaccount/models.py:98 msgid "last login" -msgstr "" +msgstr "son giriş" #: socialaccount/models.py:100 msgid "date joined" -msgstr "" +msgstr "katıldığı tarih" #: socialaccount/models.py:102 msgid "extra data" @@ -307,7 +307,7 @@ #: socialaccount/providers/douban/views.py:36 msgid "Invalid profile data" -msgstr "" +msgstr "Geçersiz profil bilgisi" #: socialaccount/providers/oauth/client.py:78 #, python-format @@ -428,6 +428,8 @@ "Thank you from %(site_name)s!\n" "%(site_domain)s" msgstr "" +"%(site_name)s: Teşekkürler!\n" +"%(site_domain)s" #: templates/account/email/email_confirmation_subject.txt:3 #, fuzzy @@ -532,11 +534,11 @@ #: templates/account/logout.html:5 templates/account/logout.html:8 #: templates/account/logout.html:17 msgid "Sign Out" -msgstr "" +msgstr "Çıkış Yap" #: templates/account/logout.html:10 msgid "Are you sure you want to sign out?" -msgstr "" +msgstr "Çıkış yapmak istediğinize emin misiniz?" #: templates/account/messages/cannot_delete_primary_email.txt:2 #, python-format @@ -546,7 +548,7 @@ #: templates/account/messages/email_confirmation_sent.txt:2 #, python-format msgid "Confirmation e-mail sent to %(email)s." -msgstr "" +msgstr "Doğrulama e-posta'sı %(email)s adresine gönderildi." #: templates/account/messages/email_confirmed.txt:2 #, python-format @@ -556,12 +558,12 @@ #: templates/account/messages/email_deleted.txt:2 #, python-format msgid "Removed e-mail address %(email)s." -msgstr "" +msgstr "%(email)s adresini sildiniz." #: templates/account/messages/logged_in.txt:4 #, python-format msgid "Successfully signed in as %(name)s." -msgstr "" +msgstr "%(name)s olarak başarıyla giriş yapıldı." #: templates/account/messages/logged_out.txt:2 msgid "You have signed out." @@ -628,7 +630,7 @@ #: templates/account/password_reset_from_key.html:7 msgid "Bad Token" -msgstr "Kötü kod" +msgstr "" #: templates/account/password_reset_from_key.html:11 #, python-format @@ -675,7 +677,7 @@ #: templates/account/signup_closed.html:5 #: templates/account/signup_closed.html:8 msgid "Sign Up Closed" -msgstr "" +msgstr "Kayıt Kapalı" #: templates/account/signup_closed.html:10 msgid "We are sorry, but the sign up is currently closed." diff -Nru django-allauth-0.36.0+ds/allauth/locale/uk/LC_MESSAGES/django.po django-allauth-0.38.0+ds/allauth/locale/uk/LC_MESSAGES/django.po --- django-allauth-0.36.0+ds/allauth/locale/uk/LC_MESSAGES/django.po 2018-05-08 05:43:54.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/locale/uk/LC_MESSAGES/django.po 2018-08-27 10:01:33.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-08 00:43-0500\n" +"POT-Creation-Date: 2018-08-27 05:00-0500\n" "PO-Revision-Date: 2014-08-12 00:36+0200\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -33,7 +33,7 @@ msgid "A user is already registered with this e-mail address." msgstr "Користувач з такою e-mail адресою уже зареєстрований." -#: account/adapter.py:288 +#: account/adapter.py:294 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "Пароль повинен містити мінімум {0} символів." diff -Nru django-allauth-0.36.0+ds/allauth/locale/zh_CN/LC_MESSAGES/django.po django-allauth-0.38.0+ds/allauth/locale/zh_CN/LC_MESSAGES/django.po --- django-allauth-0.36.0+ds/allauth/locale/zh_CN/LC_MESSAGES/django.po 2018-05-08 05:43:54.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/locale/zh_CN/LC_MESSAGES/django.po 2018-08-27 10:01:33.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: django-allauth\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-08 00:43-0500\n" +"POT-Creation-Date: 2018-08-27 05:00-0500\n" "PO-Revision-Date: 2014-08-12 00:36+0200\n" "Last-Translator: jresins \n" "Language-Team: LANGUAGE \n" @@ -28,7 +28,7 @@ msgid "A user is already registered with this e-mail address." msgstr "此e-mail地址已被其他用户注册。" -#: account/adapter.py:288 +#: account/adapter.py:294 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "密码长度不得少于 {0} 个字符。" diff -Nru django-allauth-0.36.0+ds/allauth/locale/zh_Hans/LC_MESSAGES/django.po django-allauth-0.38.0+ds/allauth/locale/zh_Hans/LC_MESSAGES/django.po --- django-allauth-0.36.0+ds/allauth/locale/zh_Hans/LC_MESSAGES/django.po 2018-05-08 05:43:54.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/locale/zh_Hans/LC_MESSAGES/django.po 2018-08-27 10:01:33.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-08 00:43-0500\n" +"POT-Creation-Date: 2018-08-27 05:00-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -30,7 +30,7 @@ msgid "A user is already registered with this e-mail address." msgstr "此e-mail地址已被其他用户注册。" -#: account/adapter.py:288 +#: account/adapter.py:294 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "密码长度不得少于 {0} 个字符。" @@ -446,8 +446,7 @@ "It can be safely ignored if you did not request a password reset. Click the " "link below to reset your password." msgstr "" -"您收到此邮件表示您或者他人在网站 %(site_domain)s上为您的账号请求了密码重" -"置。\n" +"您收到此邮件表示您或者他人在网站 %(site_name)s上为您的账号请求了密码重置。\n" "若您未请求密码重置,可以直接忽略此邮件。如要重置密码,请点击下面的链接。" #: templates/account/email/password_reset_key_message.txt:8 diff -Nru django-allauth-0.36.0+ds/allauth/locale/zh_Hant/LC_MESSAGES/django.po django-allauth-0.38.0+ds/allauth/locale/zh_Hant/LC_MESSAGES/django.po --- django-allauth-0.36.0+ds/allauth/locale/zh_Hant/LC_MESSAGES/django.po 2018-05-08 05:43:54.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/locale/zh_Hant/LC_MESSAGES/django.po 2018-08-27 10:01:33.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-08 00:43-0500\n" +"POT-Creation-Date: 2018-08-27 05:00-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -30,7 +30,7 @@ msgid "A user is already registered with this e-mail address." msgstr "已經有人使用這一個電子郵件註冊了。" -#: account/adapter.py:288 +#: account/adapter.py:294 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "密碼長度至少要有 {0} 個字元。" diff -Nru django-allauth-0.36.0+ds/allauth/locale/zh_TW/LC_MESSAGES/django.po django-allauth-0.38.0+ds/allauth/locale/zh_TW/LC_MESSAGES/django.po --- django-allauth-0.36.0+ds/allauth/locale/zh_TW/LC_MESSAGES/django.po 2018-05-08 05:43:54.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/locale/zh_TW/LC_MESSAGES/django.po 2018-08-27 10:01:33.000000000 +0000 @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: django-allauth\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-05-08 00:43-0500\n" +"POT-Creation-Date: 2018-08-27 05:00-0500\n" "PO-Revision-Date: 2014-08-12 00:36+0200\n" "Last-Translator: jresins \n" "Language-Team: Chinese (Traditional)\n" @@ -27,7 +27,7 @@ msgid "A user is already registered with this e-mail address." msgstr "已經有人使用這一個電子郵件註冊了。" -#: account/adapter.py:288 +#: account/adapter.py:294 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "密碼長度至少要有 {0} 個字元。" diff -Nru django-allauth-0.36.0+ds/allauth/socialaccount/providers/agave/provider.py django-allauth-0.38.0+ds/allauth/socialaccount/providers/agave/provider.py --- django-allauth-0.36.0+ds/allauth/socialaccount/providers/agave/provider.py 1970-01-01 00:00:00.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/socialaccount/providers/agave/provider.py 2018-08-27 09:49:49.000000000 +0000 @@ -0,0 +1,38 @@ +from allauth.socialaccount.providers.base import ProviderAccount +from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider + + +class AgaveAccount(ProviderAccount): + + def get_profile_url(self): + return self.account.extra_data.get('web_url', 'dflt') + + def get_avatar_url(self): + return self.account.extra_data.get('avatar_url', 'dflt') + + def to_str(self): + dflt = super(AgaveAccount, self).to_str() + return self.account.extra_data.get('name', dflt) + + +class AgaveProvider(OAuth2Provider): + id = 'agave' + name = 'Agave' + account_class = AgaveAccount + + def extract_uid(self, data): + return str(data.get('create_time')) + + def extract_common_fields(self, data): + return dict( + email=data.get('email'), + username=data.get('username'), + name=(data.get('first_name') + ' ' + data.get('last_name')), + ) + + def get_default_scope(self): + scope = ['PRODUCTION'] + return scope + + +provider_classes = [AgaveProvider] diff -Nru django-allauth-0.36.0+ds/allauth/socialaccount/providers/agave/tests.py django-allauth-0.38.0+ds/allauth/socialaccount/providers/agave/tests.py --- django-allauth-0.36.0+ds/allauth/socialaccount/providers/agave/tests.py 1970-01-01 00:00:00.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/socialaccount/providers/agave/tests.py 2018-08-27 09:49:49.000000000 +0000 @@ -0,0 +1,28 @@ +from allauth.socialaccount.tests import OAuth2TestsMixin +from allauth.tests import MockedResponse, TestCase + +from .provider import AgaveProvider + + +class AgaveTests(OAuth2TestsMixin, TestCase): + provider_id = AgaveProvider.id + + def get_mocked_response(self): + return MockedResponse(200, """ + { + "status": "success", + "message": "User details retrieved successfully.", + "version": "2.0.0-SNAPSHOT-rc3fad", + "result": { + "first_name": "John", + "last_name": "Doe", + "full_name": "John Doe", + "email": "jon@doe.edu", + "phone": "", + "mobile_phone": "", + "status": "Active", + "create_time": "20180322043812Z", + "username": "jdoe" + } + } + """) diff -Nru django-allauth-0.36.0+ds/allauth/socialaccount/providers/agave/urls.py django-allauth-0.38.0+ds/allauth/socialaccount/providers/agave/urls.py --- django-allauth-0.36.0+ds/allauth/socialaccount/providers/agave/urls.py 1970-01-01 00:00:00.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/socialaccount/providers/agave/urls.py 2018-08-27 09:49:49.000000000 +0000 @@ -0,0 +1,5 @@ +from allauth.socialaccount.providers.agave.provider import AgaveProvider +from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns + + +urlpatterns = default_urlpatterns(AgaveProvider) diff -Nru django-allauth-0.36.0+ds/allauth/socialaccount/providers/agave/views.py django-allauth-0.38.0+ds/allauth/socialaccount/providers/agave/views.py --- django-allauth-0.36.0+ds/allauth/socialaccount/providers/agave/views.py 1970-01-01 00:00:00.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/socialaccount/providers/agave/views.py 2018-08-27 09:49:49.000000000 +0000 @@ -0,0 +1,36 @@ +import requests + +from allauth.socialaccount.providers.agave.provider import AgaveProvider +from allauth.socialaccount.providers.oauth2.views import ( + OAuth2Adapter, + OAuth2CallbackView, + OAuth2LoginView, +) + + +class AgaveAdapter(OAuth2Adapter): + provider_id = AgaveProvider.id + provider_default_url = 'https://public.agaveapi.co/' + provider_api_version = 'v2' + + provider_base_url = 'https://public.agaveapi.co' + + access_token_url = '{0}/token'.format(provider_base_url) + authorize_url = '{0}/authorize'.format(provider_base_url) + profile_url = '{0}/profiles/v2/me'.format(provider_base_url) + + def complete_login(self, request, app, token, response): + extra_data = requests.get(self.profile_url, params={ + 'access_token': token.token + }, headers={ + 'Authorization': 'Bearer ' + token.token, + }) + + return self.get_provider().sociallogin_from_response( + request, + extra_data.json()['result'] + ) + + +oauth2_login = OAuth2LoginView.adapter_view(AgaveAdapter) +oauth2_callback = OAuth2CallbackView.adapter_view(AgaveAdapter) diff -Nru django-allauth-0.36.0+ds/allauth/socialaccount/providers/auth0/provider.py django-allauth-0.38.0+ds/allauth/socialaccount/providers/auth0/provider.py --- django-allauth-0.36.0+ds/allauth/socialaccount/providers/auth0/provider.py 2017-07-26 20:14:15.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/socialaccount/providers/auth0/provider.py 2018-08-27 09:49:49.000000000 +0000 @@ -18,6 +18,9 @@ name = 'Auth0' account_class = Auth0Account + def get_default_scope(self): + return ['openid', 'profile', 'email'] + def extract_uid(self, data): return str(data['id']) diff -Nru django-allauth-0.36.0+ds/allauth/socialaccount/providers/auth0/tests.py django-allauth-0.38.0+ds/allauth/socialaccount/providers/auth0/tests.py --- django-allauth-0.36.0+ds/allauth/socialaccount/providers/auth0/tests.py 2017-07-26 20:14:15.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/socialaccount/providers/auth0/tests.py 2018-08-27 09:49:49.000000000 +0000 @@ -13,7 +13,7 @@ "picture": "https://secure.gravatar.com/avatar/123", "email": "mr.bob@your.Auth0.server.example.com", "id": 2, - "user_id": 2, + "sub": 2, "identities": [], "name": "Mr Bob" } diff -Nru django-allauth-0.36.0+ds/allauth/socialaccount/providers/auth0/views.py django-allauth-0.38.0+ds/allauth/socialaccount/providers/auth0/views.py --- django-allauth-0.36.0+ds/allauth/socialaccount/providers/auth0/views.py 2017-07-26 20:14:15.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/socialaccount/providers/auth0/views.py 2018-08-27 09:49:49.000000000 +0000 @@ -26,8 +26,8 @@ 'access_token': token.token }).json() extra_data = { - 'user_id': extra_data['user_id'], - 'id': extra_data['user_id'], + 'user_id': extra_data['sub'], + 'id': extra_data['sub'], 'name': extra_data['name'], 'email': extra_data['email'] } diff -Nru django-allauth-0.36.0+ds/allauth/socialaccount/providers/azure/provider.py django-allauth-0.38.0+ds/allauth/socialaccount/providers/azure/provider.py --- django-allauth-0.36.0+ds/allauth/socialaccount/providers/azure/provider.py 2018-01-16 19:09:58.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/socialaccount/providers/azure/provider.py 2018-08-27 09:49:49.000000000 +0000 @@ -37,6 +37,8 @@ def extract_common_fields(self, data): email = data.get('mail') + if not email and 'userPrincipalName' in data: + email = data.get('userPrincipalName') return dict(email=email, username=email, last_name=data.get('surname'), diff -Nru django-allauth-0.36.0+ds/allauth/socialaccount/providers/baidu/provider.py django-allauth-0.38.0+ds/allauth/socialaccount/providers/baidu/provider.py --- django-allauth-0.36.0+ds/allauth/socialaccount/providers/baidu/provider.py 2017-07-26 20:14:16.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/socialaccount/providers/baidu/provider.py 2018-08-27 09:49:49.000000000 +0000 @@ -4,9 +4,7 @@ class BaiduAccount(ProviderAccount): def get_profile_url(self): - return ( - 'https://openapi.baidu.com' - '/rest/2.0/passport/users/getLoggedInUser') + return "http://www.baidu.com/p/" + self.account.extra_data.get('uname') def get_avatar_url(self): return ( diff -Nru django-allauth-0.36.0+ds/allauth/socialaccount/providers/battlenet/views.py django-allauth-0.38.0+ds/allauth/socialaccount/providers/battlenet/views.py --- django-allauth-0.36.0+ds/allauth/socialaccount/providers/battlenet/views.py 2017-07-26 20:14:16.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/socialaccount/providers/battlenet/views.py 2018-05-21 14:51:37.000000000 +0000 @@ -24,6 +24,16 @@ from .provider import BattleNetProvider +class Region: + APAC = "apac" + CN = "cn" + EU = "eu" + KR = "kr" + SEA = "sea" + TW = "tw" + US = "us" + + def _check_errors(response): try: data = response.json() @@ -67,22 +77,30 @@ Can be any of eu, us, kr, sea, tw or cn """ provider_id = BattleNetProvider.id - valid_regions = ("us", "eu", "kr", "sea", "tw", "cn") + valid_regions = ( + Region.APAC, + Region.CN, + Region.EU, + Region.KR, + Region.SEA, + Region.TW, + Region.US, + ) @property def battlenet_region(self): region = self.request.GET.get("region", "").lower() - if region == "sea": + if region == Region.SEA: # South-East Asia uses the same region as US everywhere - return "us" + return Region.US if region in self.valid_regions: return region - return "us" + return Region.US @property def battlenet_base_url(self): region = self.battlenet_region - if region == "cn": + if region == Region.CN: return "https://www.battlenet.com.cn" return "https://%s.battle.net" % (region) diff -Nru django-allauth-0.36.0+ds/allauth/socialaccount/providers/cern/provider.py django-allauth-0.38.0+ds/allauth/socialaccount/providers/cern/provider.py --- django-allauth-0.36.0+ds/allauth/socialaccount/providers/cern/provider.py 1970-01-01 00:00:00.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/socialaccount/providers/cern/provider.py 2018-08-27 09:49:49.000000000 +0000 @@ -0,0 +1,34 @@ +from allauth.socialaccount.providers.base import ProviderAccount +from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider + + +class CernAccount(ProviderAccount): + def to_str(self): + dflt = super(CernAccount, self).to_str() + return self.account.extra_data.get('name', dflt) + + +class CernProvider(OAuth2Provider): + id = 'cern' + name = 'Cern' + account_class = CernAccount + + def get_auth_params(self, request, action): + data = super(CernProvider, self).get_auth_params(request, action) + data['scope'] = 'read:user' + return data + + def extract_uid(self, data): + return str(data.get('id')) + + def extract_common_fields(self, data): + return dict( + email=data.get('email'), + username=data.get('username'), + first_name=data.get('first_name'), + last_name=data.get('last_name'), + name=data.get('name') + ) + + +provider_classes = [CernProvider] diff -Nru django-allauth-0.36.0+ds/allauth/socialaccount/providers/cern/tests.py django-allauth-0.38.0+ds/allauth/socialaccount/providers/cern/tests.py --- django-allauth-0.36.0+ds/allauth/socialaccount/providers/cern/tests.py 1970-01-01 00:00:00.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/socialaccount/providers/cern/tests.py 2018-08-27 09:49:49.000000000 +0000 @@ -0,0 +1,25 @@ +from allauth.socialaccount.tests import OAuth2TestsMixin +from allauth.tests import MockedResponse, TestCase + +from .provider import CernProvider + + +class CernTests(OAuth2TestsMixin, TestCase): + provider_id = CernProvider.id + + def get_mocked_response(self): + return MockedResponse(200, """ + { + "name":"Max Mustermann", + "username":"mmuster", + "id":8173921, + "personid":924225, + "email":"max.mustermann@cern.ch", + "first_name":"Max", + "last_name":"Mustermann", + "identityclass":"CERN Registered", + "federation":"CERN", + "phone":null, + "mobile":null + } + """) diff -Nru django-allauth-0.36.0+ds/allauth/socialaccount/providers/cern/urls.py django-allauth-0.38.0+ds/allauth/socialaccount/providers/cern/urls.py --- django-allauth-0.36.0+ds/allauth/socialaccount/providers/cern/urls.py 1970-01-01 00:00:00.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/socialaccount/providers/cern/urls.py 2018-08-27 09:49:49.000000000 +0000 @@ -0,0 +1,6 @@ +from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns + +from .provider import CernProvider + + +urlpatterns = default_urlpatterns(CernProvider) diff -Nru django-allauth-0.36.0+ds/allauth/socialaccount/providers/cern/views.py django-allauth-0.38.0+ds/allauth/socialaccount/providers/cern/views.py --- django-allauth-0.36.0+ds/allauth/socialaccount/providers/cern/views.py 1970-01-01 00:00:00.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/socialaccount/providers/cern/views.py 2018-08-27 09:49:49.000000000 +0000 @@ -0,0 +1,33 @@ +import requests + +from allauth.socialaccount.providers.oauth2.views import ( + OAuth2Adapter, + OAuth2CallbackView, + OAuth2LoginView, +) + +from .provider import CernProvider + + +class CernOAuth2Adapter(OAuth2Adapter): + provider_id = CernProvider.id + access_token_url = 'https://oauth.web.cern.ch/OAuth/Token' + authorize_url = 'https://oauth.web.cern.ch/OAuth/Authorize' + profile_url = 'https://oauthresource.web.cern.ch/api/User' + groups_url = 'https://oauthresource.web.cern.ch/api/Groups' + + supports_state = False + redirect_uri_protocol = 'https' + + def complete_login(self, request, app, token, **kwargs): + headers = {'Authorization': 'Bearer {0}'.format(token.token)} + user_response = requests.get(self.profile_url, headers=headers) + groups_response = requests.get(self.groups_url, headers=headers) + extra_data = user_response.json() + extra_data.update(groups_response.json()) + return self.get_provider().sociallogin_from_response(request, + extra_data) + + +oauth2_login = OAuth2LoginView.adapter_view(CernOAuth2Adapter) +oauth2_callback = OAuth2CallbackView.adapter_view(CernOAuth2Adapter) diff -Nru django-allauth-0.36.0+ds/allauth/socialaccount/providers/disqus/provider.py django-allauth-0.38.0+ds/allauth/socialaccount/providers/disqus/provider.py --- django-allauth-0.36.0+ds/allauth/socialaccount/providers/disqus/provider.py 1970-01-01 00:00:00.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/socialaccount/providers/disqus/provider.py 2018-05-21 14:52:28.000000000 +0000 @@ -0,0 +1,48 @@ +from allauth.account.models import EmailAddress +from allauth.socialaccount.app_settings import QUERY_EMAIL +from allauth.socialaccount.providers.base import ProviderAccount +from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider + + +class DisqusAccount(ProviderAccount): + def get_profile_url(self): + return self.account.extra_data.get('profileUrl') + + def get_avatar_url(self): + return self.account.extra_data.get('avatar', {}).get('permalink') + + def to_str(self): + dflt = super(DisqusAccount, self).to_str() + return self.account.extra_data.get('name', dflt) + + +class DisqusProvider(OAuth2Provider): + id = 'disqus' + name = 'Disqus' + account_class = DisqusAccount + + def get_default_scope(self): + scope = ['read'] + if QUERY_EMAIL: + scope += ['email'] + return scope + + def extract_uid(self, data): + return str(data['id']) + + def extract_common_fields(self, data): + return { + 'username': data.get('username'), + 'email': data.get('email'), + 'name': data.get('name'), + } + + def extract_email_addresses(self, data): + ret = [] + email = data.get('email') + if email: + ret.append(EmailAddress(email=email, verified=True, primary=True)) + return ret + + +provider_classes = [DisqusProvider] diff -Nru django-allauth-0.36.0+ds/allauth/socialaccount/providers/disqus/tests.py django-allauth-0.38.0+ds/allauth/socialaccount/providers/disqus/tests.py --- django-allauth-0.36.0+ds/allauth/socialaccount/providers/disqus/tests.py 1970-01-01 00:00:00.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/socialaccount/providers/disqus/tests.py 2018-05-21 14:52:28.000000000 +0000 @@ -0,0 +1,59 @@ +# -*- coding: utf-8 -*- +from __future__ import absolute_import, unicode_literals + +from django.contrib.auth.models import User +from django.test.utils import override_settings + +from allauth.account import app_settings as account_settings +from allauth.account.models import EmailAddress +from allauth.socialaccount.models import SocialAccount +from allauth.socialaccount.tests import OAuth2TestsMixin +from allauth.tests import MockedResponse, TestCase + +from .provider import DisqusProvider + + +@override_settings( + SOCIALACCOUNT_AUTO_SIGNUP=True, + ACCOUNT_SIGNUP_FORM_CLASS=None, + ACCOUNT_EMAIL_VERIFICATION=account_settings + .EmailVerificationMethod.MANDATORY) +class DisqusTests(OAuth2TestsMixin, TestCase): + provider_id = DisqusProvider.id + + def get_mocked_response(self, + name='Raymond Penners', + email="raymond.penners@example.com"): + return MockedResponse(200, """ + {"response": {"name": "%s", + "avatar": { + "permalink": "https://lh5.googleusercontent.com/photo.jpg" + }, + "email": "%s", + "profileUrl": "https://plus.google.com/108204268033311374519", + "id": "108204268033311374519" }} + """ % (name, email)) + + def test_account_connect(self): + email = "user@example.com" + user = User.objects.create(username='user', + is_active=True, + email=email) + user.set_password('test') + user.save() + EmailAddress.objects.create(user=user, + email=email, + primary=True, + verified=True) + self.client.login(username=user.username, + password='test') + self.login(self.get_mocked_response(), process='connect') + # Check if we connected... + self.assertTrue(SocialAccount.objects.filter( + user=user, + provider=DisqusProvider.id).exists()) + # For now, we do not pick up any new e-mail addresses on connect + self.assertEqual(EmailAddress.objects.filter(user=user).count(), 1) + self.assertEqual(EmailAddress.objects.filter( + user=user, + email=email).count(), 1) diff -Nru django-allauth-0.36.0+ds/allauth/socialaccount/providers/disqus/urls.py django-allauth-0.38.0+ds/allauth/socialaccount/providers/disqus/urls.py --- django-allauth-0.36.0+ds/allauth/socialaccount/providers/disqus/urls.py 1970-01-01 00:00:00.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/socialaccount/providers/disqus/urls.py 2018-05-21 14:52:28.000000000 +0000 @@ -0,0 +1,6 @@ +from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns + +from .provider import DisqusProvider + + +urlpatterns = default_urlpatterns(DisqusProvider) diff -Nru django-allauth-0.36.0+ds/allauth/socialaccount/providers/disqus/views.py django-allauth-0.38.0+ds/allauth/socialaccount/providers/disqus/views.py --- django-allauth-0.36.0+ds/allauth/socialaccount/providers/disqus/views.py 1970-01-01 00:00:00.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/socialaccount/providers/disqus/views.py 2018-05-21 14:52:28.000000000 +0000 @@ -0,0 +1,34 @@ +import requests + +from allauth.socialaccount.providers.oauth2.views import ( + OAuth2Adapter, + OAuth2CallbackView, + OAuth2LoginView, +) + +from .provider import DisqusProvider + + +class DisqusOAuth2Adapter(OAuth2Adapter): + provider_id = DisqusProvider.id + access_token_url = 'https://disqus.com/api/oauth/2.0/access_token/' + authorize_url = 'https://disqus.com/api/oauth/2.0/authorize/' + profile_url = 'https://disqus.com/api/3.0/users/details.json' + scope_delimiter = ',' + + def complete_login(self, request, app, token, **kwargs): + resp = requests.get(self.profile_url, params={ + 'access_token': token.token, + 'api_key': app.client_id, + 'api_secret': app.secret}) + resp.raise_for_status() + + extra_data = resp.json().get('response') + + login = self.get_provider()\ + .sociallogin_from_response(request, extra_data) + return login + + +oauth2_login = OAuth2LoginView.adapter_view(DisqusOAuth2Adapter) +oauth2_callback = OAuth2CallbackView.adapter_view(DisqusOAuth2Adapter) diff -Nru django-allauth-0.36.0+ds/allauth/socialaccount/providers/gitlab/tests.py django-allauth-0.38.0+ds/allauth/socialaccount/providers/gitlab/tests.py --- django-allauth-0.36.0+ds/allauth/socialaccount/providers/gitlab/tests.py 2017-07-26 20:14:16.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/socialaccount/providers/gitlab/tests.py 2018-08-27 09:49:49.000000000 +0000 @@ -11,27 +11,32 @@ return MockedResponse(200, """ { "avatar_url": "https://secure.gravatar.com/avatar/123", - "bio": "", - "can_create_group": "true", - "can_create_project": "true", - "color_scheme_id": 2, - "created_at": "2015-12-14T23:40:33+0100", - "current_sign_in_at": "2015-12-14T23:40:33+0100", + "bio": null, + "can_create_group": true, + "can_create_project": true, + "color_scheme_id": 5, + "confirmed_at": "2015-03-02T16:53:58.370Z", + "created_at": "2015-03-02T16:53:58.885Z", + "current_sign_in_at": "2018-06-12T18:44:49.985Z", "email": "mr.bob@gitlab.example.com", + "external": false, "id": 2, "identities": [], - "is_admin": "false", + "last_activity_on": "2018-06-11", + "last_sign_in_at": "2018-05-31T14:59:44.527Z", "linkedin": "", + "location": null, "name": "Mr Bob", - "private_token": "123", + "organization": null, "projects_limit": 10, - "skype": "mr.bob", + "shared_runners_minutes_limit": 2000, + "skype": "", "state": "active", "theme_id": 6, "twitter": "mrbob", - "two_factor_enabled": "false", + "two_factor_enabled": true, "username": "mr.bob", "web_url": "https://gitlab.example.com/u/mr.bob", - "website_url": "https://example.com" + "website_url": "" } """) diff -Nru django-allauth-0.36.0+ds/allauth/socialaccount/providers/gitlab/views.py django-allauth-0.38.0+ds/allauth/socialaccount/providers/gitlab/views.py --- django-allauth-0.36.0+ds/allauth/socialaccount/providers/gitlab/views.py 2017-07-26 20:14:16.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/socialaccount/providers/gitlab/views.py 2018-08-27 09:49:49.000000000 +0000 @@ -13,7 +13,7 @@ class GitLabOAuth2Adapter(OAuth2Adapter): provider_id = GitLabProvider.id provider_default_url = 'https://gitlab.com' - provider_api_version = 'v3' + provider_api_version = 'v4' settings = app_settings.PROVIDERS.get(provider_id, {}) provider_base_url = settings.get('GITLAB_URL', provider_default_url) diff -Nru django-allauth-0.36.0+ds/allauth/socialaccount/providers/globus/provider.py django-allauth-0.38.0+ds/allauth/socialaccount/providers/globus/provider.py --- django-allauth-0.36.0+ds/allauth/socialaccount/providers/globus/provider.py 1970-01-01 00:00:00.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/socialaccount/providers/globus/provider.py 2018-08-27 09:49:49.000000000 +0000 @@ -0,0 +1,41 @@ +from allauth.socialaccount import app_settings +from allauth.socialaccount.providers.base import ProviderAccount +from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider + + +class GlobusAccount(ProviderAccount): + + def get_profile_url(self): + return self.account.extra_data.get('web_url', 'dflt') + + def get_avatar_url(self): + return self.account.extra_data.get('avatar_url', 'dflt') + + def to_str(self): + dflt = super(GlobusAccount, self).to_str() + return self.account.extra_data.get('name', dflt) + + +class GlobusProvider(OAuth2Provider): + id = 'globus' + name = 'Globus' + account_class = GlobusAccount + + def extract_uid(self, data): + return str(data.get('create_time')) + + def extract_common_fields(self, data): + return dict( + email=data.get('email'), + username=data.get('preferred_username'), + name=data.get('name'), + ) + + def get_default_scope(self): + scope = ['openid', 'profile', 'offline_access'] + if app_settings.QUERY_EMAIL: + scope.append('email') + return scope + + +provider_classes = [GlobusProvider] diff -Nru django-allauth-0.36.0+ds/allauth/socialaccount/providers/globus/tests.py django-allauth-0.38.0+ds/allauth/socialaccount/providers/globus/tests.py --- django-allauth-0.36.0+ds/allauth/socialaccount/providers/globus/tests.py 1970-01-01 00:00:00.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/socialaccount/providers/globus/tests.py 2018-08-27 09:49:49.000000000 +0000 @@ -0,0 +1,24 @@ +from django.test.utils import override_settings + +from allauth.socialaccount.tests import OAuth2TestsMixin +from allauth.tests import MockedResponse, TestCase + +from .provider import GlobusProvider + + +class GlobusTests(OAuth2TestsMixin, TestCase): + provider_id = GlobusProvider.id + + @override_settings(SOCIALACCOUNT_QUERY_EMAIL=True) + def get_mocked_response(self): + return MockedResponse(200, """ + { + "identity_provider_display_name": "University of Gozorpazorp", + "sub": "a6fc81e-4a6c1-97ac-b4c6-84ff6a8ce662", + "preferred_username": "morty@ugz.edu", + "identity_provider": "9a4c8312f-9432-9a7c-1654-6a987c6531fa", + "organization": "University of Gozorpazorp", + "email": "morty@ugz.edu", + "name": "Morty Smith" + } + """) diff -Nru django-allauth-0.36.0+ds/allauth/socialaccount/providers/globus/urls.py django-allauth-0.38.0+ds/allauth/socialaccount/providers/globus/urls.py --- django-allauth-0.36.0+ds/allauth/socialaccount/providers/globus/urls.py 1970-01-01 00:00:00.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/socialaccount/providers/globus/urls.py 2018-08-27 09:49:49.000000000 +0000 @@ -0,0 +1,5 @@ +from allauth.socialaccount.providers.globus.provider import GlobusProvider +from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns + + +urlpatterns = default_urlpatterns(GlobusProvider) diff -Nru django-allauth-0.36.0+ds/allauth/socialaccount/providers/globus/views.py django-allauth-0.38.0+ds/allauth/socialaccount/providers/globus/views.py --- django-allauth-0.36.0+ds/allauth/socialaccount/providers/globus/views.py 1970-01-01 00:00:00.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/socialaccount/providers/globus/views.py 2018-08-27 09:49:49.000000000 +0000 @@ -0,0 +1,35 @@ +import requests + +from allauth.socialaccount.providers.globus.provider import GlobusProvider +from allauth.socialaccount.providers.oauth2.views import ( + OAuth2Adapter, + OAuth2CallbackView, + OAuth2LoginView, +) + + +class GlobusAdapter(OAuth2Adapter): + provider_id = GlobusProvider.id + provider_default_url = 'https://auth.globus.org/v2/oauth2' + + provider_base_url = 'https://auth.globus.org/v2/oauth2' + + access_token_url = '{0}/token'.format(provider_base_url) + authorize_url = '{0}/authorize'.format(provider_base_url) + profile_url = '{0}/userinfo'.format(provider_base_url) + + def complete_login(self, request, app, token, response): + extra_data = requests.get(self.profile_url, params={ + 'access_token': token.token + }, headers={ + 'Authorization': 'Bearer ' + token.token, + }) + + return self.get_provider().sociallogin_from_response( + request, + extra_data.json() + ) + + +oauth2_login = OAuth2LoginView.adapter_view(GlobusAdapter) +oauth2_callback = OAuth2CallbackView.adapter_view(GlobusAdapter) diff -Nru django-allauth-0.36.0+ds/allauth/socialaccount/providers/linkedin_oauth2/provider.py django-allauth-0.38.0+ds/allauth/socialaccount/providers/linkedin_oauth2/provider.py --- django-allauth-0.36.0+ds/allauth/socialaccount/providers/linkedin_oauth2/provider.py 2018-02-26 17:03:10.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/socialaccount/providers/linkedin_oauth2/provider.py 2018-08-27 15:17:16.000000000 +0000 @@ -58,7 +58,7 @@ return fields def get_default_scope(self): - scope = [] + scope = ['r_basicprofile'] if app_settings.QUERY_EMAIL: scope.append('r_emailaddress') return scope diff -Nru django-allauth-0.36.0+ds/allauth/socialaccount/providers/linkedin_oauth2/views.py django-allauth-0.38.0+ds/allauth/socialaccount/providers/linkedin_oauth2/views.py --- django-allauth-0.36.0+ds/allauth/socialaccount/providers/linkedin_oauth2/views.py 2018-03-05 15:19:13.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/socialaccount/providers/linkedin_oauth2/views.py 2018-08-27 15:21:38.000000000 +0000 @@ -11,8 +11,8 @@ class LinkedInOAuth2Adapter(OAuth2Adapter): provider_id = LinkedInOAuth2Provider.id - access_token_url = 'https://api.linkedin.com/uas/oauth2/accessToken' - authorize_url = 'https://www.linkedin.com/uas/oauth2/authorization' + access_token_url = 'https://www.linkedin.com/oauth/v2/accessToken' + authorize_url = 'https://www.linkedin.com/oauth/v2/authorization' profile_url = 'https://api.linkedin.com/v1/people/~' # See: # http://developer.linkedin.com/forum/unauthorized-invalid-or-expired-token-immediately-after-receiving-oauth2-token?page=1 # noqa @@ -26,7 +26,10 @@ def get_user_info(self, token): fields = self.get_provider().get_profile_fields() url = self.profile_url + ':(%s)?format=json' % ','.join(fields) - resp = requests.get(url, params={'oauth2_access_token': token.token}) + headers = {} + headers.update(self.get_provider().get_settings().get('HEADERS', {})) + headers['Authorization'] = ' '.join(['Bearer', token.token]) + resp = requests.get(url, headers=headers) resp.raise_for_status() return resp.json() diff -Nru django-allauth-0.36.0+ds/allauth/socialaccount/providers/naver/provider.py django-allauth-0.38.0+ds/allauth/socialaccount/providers/naver/provider.py --- django-allauth-0.36.0+ds/allauth/socialaccount/providers/naver/provider.py 2017-07-26 20:14:16.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/socialaccount/providers/naver/provider.py 2018-08-27 09:49:49.000000000 +0000 @@ -1,3 +1,4 @@ +from allauth.account.models import EmailAddress from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider @@ -19,5 +20,16 @@ def extract_uid(self, data): return str(data['id']) + def extract_common_fields(self, data): + email = data.get("email") + return dict(email=email) + + def extract_email_addresses(self, data): + ret = [] + email = data.get("email") + if email: + ret.append(EmailAddress(email=email, verified=True, primary=True)) + return ret + provider_classes = [NaverProvider] diff -Nru django-allauth-0.36.0+ds/allauth/socialaccount/providers/oauth2/client.py django-allauth-0.38.0+ds/allauth/socialaccount/providers/oauth2/client.py --- django-allauth-0.36.0+ds/allauth/socialaccount/providers/oauth2/client.py 2017-07-26 20:14:16.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/socialaccount/providers/oauth2/client.py 2018-08-27 09:49:49.000000000 +0000 @@ -73,7 +73,7 @@ auth=auth) access_token = None - if resp.status_code == 200: + if resp.status_code in [200, 201]: # Weibo sends json via 'text/plain;charset=UTF-8' if (resp.headers['content-type'].split( ';')[0] == 'application/json' or resp.text[:2] == '{"'): diff -Nru django-allauth-0.36.0+ds/allauth/socialaccount/providers/openid/views.py django-allauth-0.38.0+ds/allauth/socialaccount/providers/openid/views.py --- django-allauth-0.36.0+ds/allauth/socialaccount/providers/openid/views.py 2017-11-17 18:34:33.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/socialaccount/providers/openid/views.py 2018-08-27 11:26:35.000000000 +0000 @@ -35,6 +35,10 @@ ) if form.is_valid(): client = _openid_consumer(request) + provider = OpenIDProvider(request) + realm = provider.get_settings().get( + 'REALM', + request.build_absolute_uri('/')) try: auth_request = client.begin(form.cleaned_data['openid']) if QUERY_EMAIL: @@ -58,11 +62,12 @@ auth_request.addExtension(ax) callback_url = reverse(callback) SocialLogin.stash_state(request) - # https://github.com/pennersr/django-allauth/issues/1523 - auth_request.return_to_args['next'] = \ - form.cleaned_data.get('next', '/') + # Fix for issues 1523 and 2072 (github django-allauth) + if 'next' in form.cleaned_data and form.cleaned_data['next']: + auth_request.return_to_args['next'] = \ + form.cleaned_data['next'] redirect_url = auth_request.redirectURL( - request.build_absolute_uri('/'), + realm, request.build_absolute_uri(callback_url)) return HttpResponseRedirect(redirect_url) # UnicodeDecodeError: diff -Nru django-allauth-0.36.0+ds/allauth/socialaccount/providers/vimeo_oauth2/provider.py django-allauth-0.38.0+ds/allauth/socialaccount/providers/vimeo_oauth2/provider.py --- django-allauth-0.36.0+ds/allauth/socialaccount/providers/vimeo_oauth2/provider.py 1970-01-01 00:00:00.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/socialaccount/providers/vimeo_oauth2/provider.py 2018-10-03 19:25:08.000000000 +0000 @@ -0,0 +1,29 @@ +""" +Provider for Patreon +""" +from allauth.socialaccount.providers.base import ProviderAccount +from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider + + +class VimeoOAuth2Account(ProviderAccount): + pass + + +class VimeoOAuth2Provider(OAuth2Provider): + id = 'vimeo_oauth2' + name = 'Vimeo' + account_class = VimeoOAuth2Account + + def get_default_scope(self): + return ['public', 'private'] + + def extract_uid(self, data): + return data.get('uri').split('/')[-1] + + def extract_common_fields(self, data): + return { + 'fullname': data.get('name'), + } + + +provider_classes = [VimeoOAuth2Provider] diff -Nru django-allauth-0.36.0+ds/allauth/socialaccount/providers/vimeo_oauth2/test.py django-allauth-0.38.0+ds/allauth/socialaccount/providers/vimeo_oauth2/test.py --- django-allauth-0.36.0+ds/allauth/socialaccount/providers/vimeo_oauth2/test.py 1970-01-01 00:00:00.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/socialaccount/providers/vimeo_oauth2/test.py 2018-10-03 19:25:08.000000000 +0000 @@ -0,0 +1,29 @@ +from allauth.socialaccount.tests import OAuth2TestsMixin +from allauth.tests import MockedResponse, TestCase + +from .provider import VimeoOAuth2Provider + + +class VimeoOAuth2Tests(OAuth2TestsMixin, TestCase): + provider_id = VimeoOAuth2Provider.id + + def get_mocked_response(self): + return MockedResponse(200, """{ + "uri": "/users/12345", + "name": "AllAuth", + "link": "https://vimeo.com/user12345", + "created_time": "2012-06-04T00:02:16+00:00", + "pictures": { + "uri": null, + "active": false, + "type": "default", + "sizes": [{ + "width": 30, + "height": 30, + "link": "https://i.vimeocdn.com/portrait/defaults-blue_30x30.png" + }], + "resource_key": "1234567890abcdef" + }, + "resource_key": "1234567890abcdef", + "account": "pro" + }""") # noqa diff -Nru django-allauth-0.36.0+ds/allauth/socialaccount/providers/vimeo_oauth2/urls.py django-allauth-0.38.0+ds/allauth/socialaccount/providers/vimeo_oauth2/urls.py --- django-allauth-0.36.0+ds/allauth/socialaccount/providers/vimeo_oauth2/urls.py 1970-01-01 00:00:00.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/socialaccount/providers/vimeo_oauth2/urls.py 2018-10-03 19:25:08.000000000 +0000 @@ -0,0 +1,8 @@ +"""URLs for Patreon Provider""" + +from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns + +from .provider import VimeoOAuth2Provider + + +urlpatterns = default_urlpatterns(VimeoOAuth2Provider) diff -Nru django-allauth-0.36.0+ds/allauth/socialaccount/providers/vimeo_oauth2/views.py django-allauth-0.38.0+ds/allauth/socialaccount/providers/vimeo_oauth2/views.py --- django-allauth-0.36.0+ds/allauth/socialaccount/providers/vimeo_oauth2/views.py 1970-01-01 00:00:00.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/socialaccount/providers/vimeo_oauth2/views.py 2018-10-03 19:25:08.000000000 +0000 @@ -0,0 +1,32 @@ +""" +Views for PatreonProvider +https://www.patreon.com/platform/documentation/oauth +""" + +import requests + +from allauth.socialaccount.providers.oauth2.views import ( + OAuth2Adapter, + OAuth2CallbackView, + OAuth2LoginView, +) + +from .provider import VimeoOAuth2Provider + + +class VimeoOAuth2Adapter(OAuth2Adapter): + provider_id = VimeoOAuth2Provider.id + access_token_url = 'https://api.vimeo.com/oauth/access_token' + authorize_url = 'https://api.vimeo.com/oauth/authorize' + profile_url = 'https://api.vimeo.com/me/' + + def complete_login(self, request, app, token, **kwargs): + resp = requests.get(self.profile_url, + headers={'Authorization': 'Bearer ' + token.token}) + extra_data = resp.json() + return self.get_provider().sociallogin_from_response(request, + extra_data) + + +oauth2_login = OAuth2LoginView.adapter_view(VimeoOAuth2Adapter) +oauth2_callback = OAuth2CallbackView.adapter_view(VimeoOAuth2Adapter) diff -Nru django-allauth-0.36.0+ds/allauth/templates/base.html django-allauth-0.38.0+ds/allauth/templates/base.html --- django-allauth-0.36.0+ds/allauth/templates/base.html 2017-07-19 21:56:23.000000000 +0000 +++ django-allauth-0.38.0+ds/allauth/templates/base.html 2018-08-27 09:49:49.000000000 +0000 @@ -12,9 +12,9 @@
Messages:
    - {% for message in messages %} -
  • {{message}}
  • - {% endfor %} + {% for message in messages %} +
  • {{message}}
  • + {% endfor %}
{% endif %} @@ -22,13 +22,13 @@
Menu:
{% block content %} diff -Nru django-allauth-0.36.0+ds/AUTHORS django-allauth-0.38.0+ds/AUTHORS --- django-allauth-0.36.0+ds/AUTHORS 2018-03-05 15:18:10.000000000 +0000 +++ django-allauth-0.38.0+ds/AUTHORS 2018-10-03 19:25:08.000000000 +0000 @@ -47,6 +47,7 @@ Guillaume Vincent Guoyu Hao Hatem Nassrat +Hyunwoo Shim J. Erm J. Fernando Sánchez Jack Shedd @@ -68,6 +69,7 @@ Julen Ruiz Aizpuru Justin Michalicek Justin Pogrob +Kevin Dice Koichi Harakawa Lee Semel Luis Diego García @@ -86,10 +88,13 @@ Morgante Pell Nariman Gharib Niklas A Emanuelsson +Pavel Savchenko Patrick Paul Paulo Eduardo Neves Peter Bittner Peter Rowlands +Peter Stein +Philip John James Rabi Alam Radek Czajka Rense VanderHoek @@ -108,6 +113,7 @@ Terry Jones Tomas Babej Tomas Marcik +Tuk Bredsdorff Udi Oron Vuong Nguyen Volodymyr Yatsyk diff -Nru django-allauth-0.36.0+ds/ChangeLog.rst django-allauth-0.38.0+ds/ChangeLog.rst --- django-allauth-0.36.0+ds/ChangeLog.rst 2018-05-08 05:43:45.000000000 +0000 +++ django-allauth-0.38.0+ds/ChangeLog.rst 2018-10-03 19:35:42.000000000 +0000 @@ -1,3 +1,47 @@ +0.38.0 (2018-10-03) +******************* + +Security notice +--------------- + +The ``{% user_display user %}`` tag did not escape properly. Depending on the +username validation rules, this could lead to XSS issues. + + +Note worthy changes +------------------- + +- New provider: Vimeo (OAuth2). + +- New translations: Basque. + + +0.37.1 (2018-08-27) +******************* + +Backwards incompatible changes +------------------------------ + +- Dropped the ``x-li-src: msdk`` headers from the ``linkedin_oauth2`` handshake. + This header is only required for mobile tokens, and breaks the regular flow. + Use the ``HEADERS`` setting to add this header if you need it. + + +0.37.0 (2018-08-27) +******************* + +Note worthy changes +------------------- + +- The Battle.net login backend now recognizes ``apac`` as a valid region. + +- User model using a ``UUIDField`` as it's primary key can now be logged + in upon email confirmation (if using ``ACCOUNT_LOGIN_ON_EMAIL_CONFIRMATION``). + +- New providers: Agave, Cern, Disqus, Globus. + +- New translation: Danish. + 0.36.0 (2018-05-08) ******************* @@ -1060,7 +1104,7 @@ social login to existing accounts. The symptom is you end up with users who have multiple primary email addresses which conflicts with assumptions made by the code. In addition to fixing the code - that allowed duplicates to occur, there is a managegement command + that allowed duplicates to occur, there is a management command you can run if you think this effects you (and if it doesn't effect you there is no harm in running it anyways if you are unsure): diff -Nru django-allauth-0.36.0+ds/debian/changelog django-allauth-0.38.0+ds/debian/changelog --- django-allauth-0.36.0+ds/debian/changelog 2018-05-15 11:53:49.000000000 +0000 +++ django-allauth-0.38.0+ds/debian/changelog 2018-10-26 21:27:16.000000000 +0000 @@ -1,3 +1,16 @@ +django-allauth (0.38.0+ds-1) unstable; urgency=medium + + [ Pierre-Elliott Bécue ] + * New upstream release 0.38.0+ds + * d/control: + - Replace my Crans address by my Debian address + - Bump Standards-Version to 4.2.1. No change required + + [ Ondřej Nový ] + * d/rules: Use 'python3 -m sphinx' instead of sphinx-build for building docs + + -- Pierre-Elliott Bécue Fri, 26 Oct 2018 23:27:16 +0200 + django-allauth (0.36.0+ds-1) unstable; urgency=medium [ Ondřej Nový ] diff -Nru django-allauth-0.36.0+ds/debian/control django-allauth-0.38.0+ds/debian/control --- django-allauth-0.36.0+ds/debian/control 2018-05-11 11:29:14.000000000 +0000 +++ django-allauth-0.38.0+ds/debian/control 2018-10-26 21:22:35.000000000 +0000 @@ -1,7 +1,7 @@ Source: django-allauth Maintainer: Debian Python Modules Team Uploaders: Jonas Meurer , - Pierre-Elliott Bécue + Pierre-Elliott Bécue Section: python Priority: optional Build-Depends: debhelper (>= 11), @@ -16,7 +16,7 @@ python3-requests, python3-setuptools, python3-sphinx -Standards-Version: 4.1.4 +Standards-Version: 4.2.1 Vcs-Browser: https://salsa.debian.org/python-team/modules/django-allauth Vcs-Git: https://salsa.debian.org/python-team/modules/django-allauth.git Homepage: https://github.com/pennersr/django-allauth diff -Nru django-allauth-0.36.0+ds/debian/patches/0002-Fixes-wrongly-encoded-characters-in-some-.po-files.patch django-allauth-0.38.0+ds/debian/patches/0002-Fixes-wrongly-encoded-characters-in-some-.po-files.patch --- django-allauth-0.36.0+ds/debian/patches/0002-Fixes-wrongly-encoded-characters-in-some-.po-files.patch 2018-05-11 11:22:23.000000000 +0000 +++ django-allauth-0.38.0+ds/debian/patches/0002-Fixes-wrongly-encoded-characters-in-some-.po-files.patch 2018-10-26 21:17:00.000000000 +0000 @@ -10,12 +10,12 @@ 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/allauth/locale/es/LC_MESSAGES/django.po b/allauth/locale/es/LC_MESSAGES/django.po -index 6ff81ba..0aadf57 100644 +index 81e7f5f..f76a473 100644 --- a/allauth/locale/es/LC_MESSAGES/django.po +++ b/allauth/locale/es/LC_MESSAGES/django.po @@ -9,7 +9,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" - "POT-Creation-Date: 2018-05-08 00:43-0500\n" + "POT-Creation-Date: 2018-08-27 05:00-0500\n" "PO-Revision-Date: 2018-02-14 17:46-0600\n" -"Last-Translator: Jannis Š\n" +"Last-Translator: Jannis Š\n" @@ -23,12 +23,12 @@ "language/es/)\n" "Language: es\n" diff --git a/allauth/locale/pt_PT/LC_MESSAGES/django.po b/allauth/locale/pt_PT/LC_MESSAGES/django.po -index e0ad028..d579725 100644 +index 0e257f1..a907392 100644 --- a/allauth/locale/pt_PT/LC_MESSAGES/django.po +++ b/allauth/locale/pt_PT/LC_MESSAGES/django.po @@ -9,7 +9,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" - "POT-Creation-Date: 2018-05-08 00:43-0500\n" + "POT-Creation-Date: 2018-08-27 05:00-0500\n" "PO-Revision-Date: 2014-08-12 00:33+0200\n" -"Last-Translator: Jannis Š\n" +"Last-Translator: Jannis Š\n" @@ -36,12 +36,12 @@ "django-allauth/language/pt_PT/)\n" "Language: pt_PT\n" diff --git a/allauth/locale/sv/LC_MESSAGES/django.po b/allauth/locale/sv/LC_MESSAGES/django.po -index 4e899db..33e7d62 100644 +index aa3c7ae..9da7a48 100644 --- a/allauth/locale/sv/LC_MESSAGES/django.po +++ b/allauth/locale/sv/LC_MESSAGES/django.po @@ -9,7 +9,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" - "POT-Creation-Date: 2018-05-08 00:43-0500\n" + "POT-Creation-Date: 2018-08-27 05:00-0500\n" "PO-Revision-Date: 2014-08-12 00:35+0200\n" -"Last-Translator: Jannis Š\n" +"Last-Translator: Jannis Š\n" @@ -49,12 +49,12 @@ "language/sv/)\n" "Language: sv\n" diff --git a/allauth/locale/tr/LC_MESSAGES/django.po b/allauth/locale/tr/LC_MESSAGES/django.po -index fbce639..4b5fc51 100644 +index 91ad377..6c8964d 100644 --- a/allauth/locale/tr/LC_MESSAGES/django.po +++ b/allauth/locale/tr/LC_MESSAGES/django.po @@ -10,7 +10,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" - "POT-Creation-Date: 2018-05-08 00:43-0500\n" + "POT-Creation-Date: 2018-08-27 05:00-0500\n" "PO-Revision-Date: 2014-08-12 00:35+0200\n" -"Last-Translator: Jannis Š\n" +"Last-Translator: Jannis Š\n" diff -Nru django-allauth-0.36.0+ds/debian/rules django-allauth-0.38.0+ds/debian/rules --- django-allauth-0.36.0+ds/debian/rules 2018-05-15 08:42:41.000000000 +0000 +++ django-allauth-0.38.0+ds/debian/rules 2018-10-26 21:26:15.000000000 +0000 @@ -7,7 +7,7 @@ override_dh_auto_build: cd allauth && django-admin compilemessages - PYTHONPATH=. sphinx-build -b html -d docs/.build/.doctrees -N docs docs/.build/html + PYTHONPATH=. python3 -m sphinx -b html -d docs/.build/.doctrees -N docs docs/.build/html dh_auto_build override_dh_auto_test: diff -Nru django-allauth-0.36.0+ds/django_allauth.egg-info/PKG-INFO django-allauth-0.38.0+ds/django_allauth.egg-info/PKG-INFO --- django-allauth-0.36.0+ds/django_allauth.egg-info/PKG-INFO 2018-05-08 05:48:44.000000000 +0000 +++ django-allauth-0.38.0+ds/django_allauth.egg-info/PKG-INFO 2018-10-03 19:51:40.000000000 +0000 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: django-allauth -Version: 0.36.0 +Version: 0.38.0 Summary: Integrated set of Django applications addressing authentication, registration, account management as well as 3rd party (social) account authentication. Home-page: http://github.com/pennersr/django-allauth Author: Raymond Penners @@ -110,3 +110,4 @@ Classifier: Framework :: Django Classifier: Framework :: Django :: 1.11 Classifier: Framework :: Django :: 2.0 +Classifier: Framework :: Django :: 2.1 diff -Nru django-allauth-0.36.0+ds/django_allauth.egg-info/SOURCES.txt django-allauth-0.38.0+ds/django_allauth.egg-info/SOURCES.txt --- django-allauth-0.36.0+ds/django_allauth.egg-info/SOURCES.txt 2018-05-08 05:48:45.000000000 +0000 +++ django-allauth-0.38.0+ds/django_allauth.egg-info/SOURCES.txt 2018-10-03 19:51:40.000000000 +0000 @@ -40,6 +40,8 @@ allauth/locale/ar/LC_MESSAGES/django.po allauth/locale/cs/LC_MESSAGES/django.mo allauth/locale/cs/LC_MESSAGES/django.po +allauth/locale/da/LC_MESSAGES/django.mo +allauth/locale/da/LC_MESSAGES/django.po allauth/locale/de/LC_MESSAGES/django.mo allauth/locale/de/LC_MESSAGES/django.po allauth/locale/el/LC_MESSAGES/django.mo @@ -48,6 +50,8 @@ allauth/locale/en/LC_MESSAGES/django.po allauth/locale/es/LC_MESSAGES/django.mo allauth/locale/es/LC_MESSAGES/django.po +allauth/locale/eu/LC_MESSAGES/django.mo +allauth/locale/eu/LC_MESSAGES/django.po allauth/locale/fa/LC_MESSAGES/django.mo allauth/locale/fa/LC_MESSAGES/django.po allauth/locale/fi/LC_MESSAGES/django.mo @@ -121,6 +125,11 @@ allauth/socialaccount/migrations/__init__.py allauth/socialaccount/providers/__init__.py allauth/socialaccount/providers/base.py +allauth/socialaccount/providers/agave/__init__.py +allauth/socialaccount/providers/agave/provider.py +allauth/socialaccount/providers/agave/tests.py +allauth/socialaccount/providers/agave/urls.py +allauth/socialaccount/providers/agave/views.py allauth/socialaccount/providers/amazon/__init__.py allauth/socialaccount/providers/amazon/provider.py allauth/socialaccount/providers/amazon/tests.py @@ -190,6 +199,11 @@ allauth/socialaccount/providers/box/tests.py allauth/socialaccount/providers/box/urls.py allauth/socialaccount/providers/box/views.py +allauth/socialaccount/providers/cern/__init__.py +allauth/socialaccount/providers/cern/provider.py +allauth/socialaccount/providers/cern/tests.py +allauth/socialaccount/providers/cern/urls.py +allauth/socialaccount/providers/cern/views.py allauth/socialaccount/providers/coinbase/__init__.py allauth/socialaccount/providers/coinbase/provider.py allauth/socialaccount/providers/coinbase/tests.py @@ -217,6 +231,11 @@ allauth/socialaccount/providers/discord/tests.py allauth/socialaccount/providers/discord/urls.py allauth/socialaccount/providers/discord/views.py +allauth/socialaccount/providers/disqus/__init__.py +allauth/socialaccount/providers/disqus/provider.py +allauth/socialaccount/providers/disqus/tests.py +allauth/socialaccount/providers/disqus/urls.py +allauth/socialaccount/providers/disqus/views.py allauth/socialaccount/providers/douban/__init__.py allauth/socialaccount/providers/douban/provider.py allauth/socialaccount/providers/douban/tests.py @@ -310,6 +329,11 @@ allauth/socialaccount/providers/gitlab/tests.py allauth/socialaccount/providers/gitlab/urls.py allauth/socialaccount/providers/gitlab/views.py +allauth/socialaccount/providers/globus/__init__.py +allauth/socialaccount/providers/globus/provider.py +allauth/socialaccount/providers/globus/tests.py +allauth/socialaccount/providers/globus/urls.py +allauth/socialaccount/providers/globus/views.py allauth/socialaccount/providers/google/__init__.py allauth/socialaccount/providers/google/provider.py allauth/socialaccount/providers/google/tests.py @@ -521,6 +545,12 @@ allauth/socialaccount/providers/vimeo/tests.py allauth/socialaccount/providers/vimeo/urls.py allauth/socialaccount/providers/vimeo/views.py +allauth/socialaccount/providers/vimeo_oauth2/__init__.py +allauth/socialaccount/providers/vimeo_oauth2/models.py +allauth/socialaccount/providers/vimeo_oauth2/provider.py +allauth/socialaccount/providers/vimeo_oauth2/test.py +allauth/socialaccount/providers/vimeo_oauth2/urls.py +allauth/socialaccount/providers/vimeo_oauth2/views.py allauth/socialaccount/providers/vk/__init__.py allauth/socialaccount/providers/vk/provider.py allauth/socialaccount/providers/vk/tests.py @@ -612,6 +642,7 @@ docs/configuration.rst docs/decorators.rst docs/faq.rst +docs/forms.rst docs/index.rst docs/installation.rst docs/overview.rst diff -Nru django-allauth-0.36.0+ds/docs/advanced.rst django-allauth-0.38.0+ds/docs/advanced.rst --- django-allauth-0.36.0+ds/docs/advanced.rst 2018-01-16 19:05:59.000000000 +0000 +++ django-allauth-0.38.0+ds/docs/advanced.rst 2018-10-03 19:25:08.000000000 +0000 @@ -130,12 +130,17 @@ confirmation) can be altered by providing your own templates. Templates are named as follows:: + account/email/email_confirmation_signup_subject.txt + account/email/email_confirmation_signup_message.txt + account/email/email_confirmation_subject.txt account/email/email_confirmation_message.txt In case you want to include an HTML representation, add an HTML template as follows:: + account/email/email_confirmation_signup_message.html + account/email/email_confirmation_message.html The project does not contain any HTML email templates out of the box. diff -Nru django-allauth-0.36.0+ds/docs/configuration.rst django-allauth-0.38.0+ds/docs/configuration.rst --- django-allauth-0.36.0+ds/docs/configuration.rst 2018-04-10 20:19:04.000000000 +0000 +++ django-allauth-0.38.0+ds/docs/configuration.rst 2018-08-27 09:49:49.000000000 +0000 @@ -130,7 +130,7 @@ ACCOUNT_LOGOUT_ON_PASSWORD_CHANGE (=False) Determines whether or not the user is automatically logged out after changing or setting their password. See documentation for - `Django's session invalidation on password change `_. + `Django's session invalidation on password change `_. ACCOUNT_LOGIN_ON_PASSWORD_RESET (=False) By changing this setting to ``True``, users will automatically be logged in diff -Nru django-allauth-0.36.0+ds/docs/forms.rst django-allauth-0.38.0+ds/docs/forms.rst --- django-allauth-0.36.0+ds/docs/forms.rst 1970-01-01 00:00:00.000000000 +0000 +++ django-allauth-0.38.0+ds/docs/forms.rst 2018-08-27 09:49:49.000000000 +0000 @@ -0,0 +1,289 @@ +Forms +===== + +The following forms can be overridden as needed. + +- Add extra fields for extra required information +- Override save to add extra functionality on save + +Overriding Save +--------------- + +If you decide to add fields to a form, you will need to +manually save the custom fields data. + +ACCOUNT_FORMS +============= + +Default Settings:: + + ACCOUNT_FORMS = { + 'login': 'allauth.account.forms.LoginForm', + 'signup': 'allauth.account.forms.SignupForm', + 'add_email': 'allauth.account.forms.AddEmailForm', + 'change_password': 'allauth.account.forms.ChangePasswordForm', + 'set_password': 'allauth.account.forms.SetPasswordForm', + 'reset_password': 'allauth.account.forms.ResetPasswordForm', + 'reset_password_from_key': 'allauth.account.forms.ResetPasswordKeyForm', + } + +login (``allauth.account.forms.LoginForm``) +------------------------------------------- + +Used on `account_login `__ view. + +``save`` is not called, you need to override ``login`` +:: + + from allauth.account.forms import LoginForm + class MyCustomLoginForm(LoginForm): + + def login(self, *args, **kwargs): + + # Add your own processing here. + + # You must return the original result. + return super(MyCustomLoginForm, self).login(*args, **kwargs) + +You have access to the following: + +- ``self.user`` is the User object that is logging in. + +``settings.py``:: + + ACCOUNT_FORMS = {'login': 'mysite.forms.MyCustomLoginForm'} + +signup (``allauth.account.forms.SignupForm``) +--------------------------------------------- + +Used on `account_signup `__ view. + +:: + + from allauth.account.forms import SignupForm + class MyCustomSignupForm(SignupForm): + + def save(self, request): + + # Ensure you call the parent classes save. + # .save() returns a User object. + user = super(MyCustomSignupForm, self).save(request) + + # Add your own processing here. + + # You must return the original result. + return user + +``settings.py``:: + + ACCOUNT_FORMS = {'signup': 'mysite.forms.MyCustomSignupForm'} + +add_email (``allauth.account.forms.AddEmailForm``) +-------------------------------------------------- + +Used on `account_email `__ view. + +:: + + from allauth.account.forms import AddEmailForm + class MyCustomAddEmailForm(AddEmailForm): + + def save(self): + + # Ensure you call the parent classes save. + # .save() returns a allauth.account.models.EmailAddress object. + email_address_obj = super(MyCustomAddEmailForm, self).save() + + # Add your own processing here. + + # You must return the original result. + return email_address_obj + +You have access to the following: + +- ``self.user`` is the User object that is logged in. + +``settings.py``:: + + ACCOUNT_FORMS = {'add_email': 'mysite.forms.MyCustomAddEmailForm'} + +change_password (``allauth.account.forms.ChangePasswordForm``) +-------------------------------------------------------------- + +Used on `account_change_password `__ view. + +:: + + from allauth.account.forms import ChangePasswordForm + class MyCustomChangePasswordForm(ChangePasswordForm): + + def save(self): + + # Ensure you call the parent classes save + # .save() does not return anything + super(MyCustomChangePasswordForm, self).save() + + # Add your own processing here. + +You have access to the following: + +- ``self.user`` is the User object that is logged in. + +``settings.py``:: + + ACCOUNT_FORMS = {'change_password': 'mysite.forms.MyCustomChangePasswordForm'} + +set_password (``allauth.account.forms.SetPasswordForm``) +-------------------------------------------------------- + +Used on `account_set_password `__ view. + +:: + + from allauth.account.forms import SetPasswordForm + class MyCustomSetPasswordForm(SetPasswordForm): + + def save(self): + + # Ensure you call the parent classes save + # .save() does not return anything + super(MyCustomSetPasswordForm, self).save() + + # Add your own processing here. + +You have access to the following: + +- ``self.user`` is the User object that is logged in. + +``settings.py``:: + + ACCOUNT_FORMS = {'set_password': 'mysite.forms.MyCustomSetPasswordForm'} + +reset_password (``allauth.account.forms.ResetPasswordForm``) +------------------------------------------------------------ + +Used on `account_reset_password `__ view. + +:: + + from allauth.account.forms import ResetPasswordForm + class MyCustomSetPasswordForm(ResetPasswordForm): + + def save(self): + + # Ensure you call the parent classes save + # .save() returns a string containing the email address supplied + email_address = super(MyCustomResetPasswordForm, self).save() + + # Add your own processing here. + + # Ensure you return the original result + return email_address + +You have access to the following: + +- ``self.users`` is a list of all possible User objects with matching email address + +``settings.py``:: + + ACCOUNT_FORMS = {'reset_password': 'mysite.forms.MyCustomResetPasswordForm'} + +reset_password_from_key (``allauth.account.forms.ResetPasswordKeyForm``) +------------------------------------------------------------------------ + +Used on `account_reset_password `__ view. + +:: + + from allauth.account.forms import ResetPasswordKeyForm + class MyCustomResetPasswordKeyForm(ResetPasswordKeyForm): + + def save(self): + + # Add your own processing here. + + # Ensure you call the parent classes save + # .save() does not return anything + super(MyCustomResetPasswordKeyForm, self).save() + +You have access to the following: + +- ``self.user`` is the User object + +``settings.py``:: + + ACCOUNT_FORMS = {'reset_password_from_key': 'mysite.forms.MyCustomResetPasswordKeyForm'} + +SOCIALACCOUNT_FORMS +=================== + +Default Settings:: + + SOCIALACCOUNT_FORMS = { + 'login': 'allauth.socialaccount.forms.DisconnectForm', + 'signup': 'allauth.socialaccount.forms.SignupForm', + } + +signup (``allauth.socialaccount.forms.SignupForm``) +--------------------------------------------------- + +Used on socialaccount_signup view used when someone initially signs up +with a social account and needs to create an account. + +:: + + from allauth.socialaccount.forms import SignupForm + class MyCustomSocialSignupForm(SignupForm): + + def save(self): + + # Ensure you call the parent classes save. + # .save() returns a User object. + user = super(MyCustomSocialSignupForm, self).save() + + # Add your own processing here. + + # You must return the original result. + return user + +You have access to the following: + +- ``self.socialaccount`` + +``settings.py``:: + + SOCIALACCOUNT_FORMS = {'signup': 'mysite.forms.MyCustomSocialSignupForm'} + +disconnect (``allauth.socialaccount.forms.DisconnectForm``) +----------------------------------------------------------- + +Used on socialaccount_connections view, used when removing a social account. + +:: + + from allauth.socialaccount.forms import DisconnectForm + class MyCustomSocialDisconnectForm(DisconnectForm): + + def save(self): + + # Add your own processing here if you do need access to the + # socialaccount being deleted. + + # Ensure you call the parent classes save. + # .save() does not return anything + super(MyCustomSocialDisconnectForm, self).save() + + # Add your own processing here if you don't need access to the + # socialaccount being deleted. + +You have access to the following: + +- ``self.request`` is the request object +- ``self.accounts`` is a list containing all of the users SocialAccount objects. +- ``self.cleaned_data['account']`` contains the socialaccount being deleted. .save() + issues the delete so if you need access to the socialaccount beforehand, move your + code before .save() + +``settings.py``:: + + SOCIALACCOUNT_FORMS = {'disconnect': 'mysite.forms.MyCustomSocialDisconnectForm'} diff -Nru django-allauth-0.36.0+ds/docs/index.rst django-allauth-0.38.0+ds/docs/index.rst --- django-allauth-0.36.0+ds/docs/index.rst 2017-07-19 21:56:23.000000000 +0000 +++ django-allauth-0.38.0+ds/docs/index.rst 2018-08-27 09:49:49.000000000 +0000 @@ -15,6 +15,7 @@ providers signals views + forms templates decorators advanced diff -Nru django-allauth-0.36.0+ds/docs/installation.rst django-allauth-0.38.0+ds/docs/installation.rst --- django-allauth-0.36.0+ds/docs/installation.rst 2017-11-17 18:34:33.000000000 +0000 +++ django-allauth-0.38.0+ds/docs/installation.rst 2018-10-03 19:25:08.000000000 +0000 @@ -41,12 +41,14 @@ ... # The following apps are required: 'django.contrib.auth', + 'django.contrib.messages', 'django.contrib.sites', 'allauth', 'allauth.account', 'allauth.socialaccount', # ... include the providers you want to enable: + 'allauth.socialaccount.providers.agave', 'allauth.socialaccount.providers.amazon', 'allauth.socialaccount.providers.angellist', 'allauth.socialaccount.providers.asana', @@ -57,11 +59,13 @@ 'allauth.socialaccount.providers.bitbucket', 'allauth.socialaccount.providers.bitbucket_oauth2', 'allauth.socialaccount.providers.bitly', + 'allauth.socialaccount.providers.cern', 'allauth.socialaccount.providers.coinbase', 'allauth.socialaccount.providers.dataporten', 'allauth.socialaccount.providers.daum', 'allauth.socialaccount.providers.digitalocean', 'allauth.socialaccount.providers.discord', + 'allauth.socialaccount.providers.disqus', 'allauth.socialaccount.providers.douban', 'allauth.socialaccount.providers.draugiem', 'allauth.socialaccount.providers.dropbox', @@ -109,6 +113,7 @@ 'allauth.socialaccount.providers.twitter', 'allauth.socialaccount.providers.untappd', 'allauth.socialaccount.providers.vimeo', + 'allauth.socialaccount.providers.vimeo_oauth2', 'allauth.socialaccount.providers.vk', 'allauth.socialaccount.providers.weibo', 'allauth.socialaccount.providers.weixin', diff -Nru django-allauth-0.36.0+ds/docs/overview.rst django-allauth-0.38.0+ds/docs/overview.rst --- django-allauth-0.36.0+ds/docs/overview.rst 2018-03-19 08:25:44.000000000 +0000 +++ django-allauth-0.38.0+ds/docs/overview.rst 2018-10-03 19:25:08.000000000 +0000 @@ -4,9 +4,9 @@ Requirements ------------ -- Python 2.7, 3.3, 3.4, or 3.5 +- Python 2.7, 3.3, 3.4, 3.5 or 3.6 -- Django (1.10+) +- Django (1.11+) - python-openid or python3-openid (depending on your Python version) @@ -37,6 +37,8 @@ - 500px +- AgaveAPI (OAuth2) + - Amazon (OAuth2) - AngelList (OAuth2) @@ -61,12 +63,16 @@ - Box (OAuth2) +- CERN (OAuth2) + - Dataporten (OAuth2) - Daum (OAuth2) - Douban (OAuth2) +- Disqus (OAuth2) + - Doximity (OAuth2) - Dropbox (OAuth, OAuth2) @@ -93,6 +99,8 @@ - GitLab (OAuth2) +- Globus (OAuth2) + - Google (OAuth2) - Hubic (OAuth2) @@ -159,7 +167,7 @@ - Untappd (OAuth2) -- Vimeo (OAuth) +- Vimeo (OAuth, OAuth2) - VK (OAuth2) diff -Nru django-allauth-0.36.0+ds/docs/providers.rst django-allauth-0.38.0+ds/docs/providers.rst --- django-allauth-0.36.0+ds/docs/providers.rst 2018-03-19 08:26:36.000000000 +0000 +++ django-allauth-0.38.0+ds/docs/providers.rst 2018-10-03 19:25:08.000000000 +0000 @@ -44,6 +44,19 @@ http://localhost:8000/accounts/500px/login/callback/ +AgaveAPI +-------- + +Account Signup + https://public.agaveapi.co/create_account + +App registration + Run ``client-create`` from the cli: https://bitbucket.org/agaveapi/cli/overview + +Development callback URL + http://localhost:8000/accounts/agave/login/callback/ + *May require https url, even for localhost* + Amazon ------ @@ -178,9 +191,17 @@ http://localhost:8000/accounts/box/login/callback/ +CERN +---- +App registration (get your key and secret here) + https://sso-management.web.cern.ch/OAuth/RegisterOAuthClient.aspx + +CERN OAuth2 Documentation + https://espace.cern.ch/authentication/CERN%20Authentication/OAuth.aspx + + Dataporten ---------- - App registration (get your key and secret here) https://docs.dataporten.no/docs/gettingstarted/ @@ -644,6 +665,32 @@ } +Globus +------ + +Registering an application: + https://developers.globus.org/ + +By default, you will have access to the openid, profile, and offline_access +scopes. With the offline_access scope, the API will provide you with a +refresh token. For additional scopes, see the Globus API docs: + https://docs.globus.org/api/auth/reference/ + +.. code-block:: python + + SOCIALACCOUNT_PROVIDERS = { + 'globus': { + 'SCOPE': [ + 'openid', + 'profile', + 'email', + 'urn:globus:auth:scope:transfer.api.globus.org:all' + ] + } + } + + + Google ------ @@ -756,7 +803,8 @@ SOCIALACCOUNT_PROVIDERS = { 'linkedin': { 'SCOPE': [ - 'r_emailaddress', + 'r_basicprofile', + 'r_emailaddress' ], 'PROFILE_FIELDS': [ 'id', @@ -784,6 +832,19 @@ missing required parameters, includes an invalid parameter value, parameter more then once. : Unable to retrieve access token : authorization code not found +If you are using tokens originating from the mobile SDK, you will need to specify +additional headers: + +.. code-block:: python + + SOCIALACCOUNT_PROVIDERS = { + 'linkedin': { + 'HEADERS': { + 'x-li-src': 'msdk' + } + } + } + App registration (get your key and secret here) https://www.linkedin.com/secure/developer?newapp= @@ -1375,8 +1436,16 @@ https://developer.vimeo.com/apps Development callback URL - http://localhost:8000 + http://localhost:8000/a +Vimeo (OAuth 2) +----- + +App registration (get your key and secret here) + https://developer.vimeo.com/apps + +Development callback URL + http://localhost:8000/accounts/vimeo_oauth2/login/callback/ VK -- diff -Nru django-allauth-0.36.0+ds/PKG-INFO django-allauth-0.38.0+ds/PKG-INFO --- django-allauth-0.36.0+ds/PKG-INFO 2018-05-08 05:48:52.000000000 +0000 +++ django-allauth-0.38.0+ds/PKG-INFO 2018-10-03 19:51:40.000000000 +0000 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: django-allauth -Version: 0.36.0 +Version: 0.38.0 Summary: Integrated set of Django applications addressing authentication, registration, account management as well as 3rd party (social) account authentication. Home-page: http://github.com/pennersr/django-allauth Author: Raymond Penners @@ -110,3 +110,4 @@ Classifier: Framework :: Django Classifier: Framework :: Django :: 1.11 Classifier: Framework :: Django :: 2.0 +Classifier: Framework :: Django :: 2.1 diff -Nru django-allauth-0.36.0+ds/setup.py django-allauth-0.38.0+ds/setup.py --- django-allauth-0.36.0+ds/setup.py 2018-02-05 07:22:53.000000000 +0000 +++ django-allauth-0.38.0+ds/setup.py 2018-08-27 10:01:33.000000000 +0000 @@ -148,6 +148,7 @@ 'Framework :: Django', 'Framework :: Django :: 1.11', 'Framework :: Django :: 2.0', + 'Framework :: Django :: 2.1', ], packages=find_packages(exclude=['example']), package_data=package_data, diff -Nru django-allauth-0.36.0+ds/test_settings.py django-allauth-0.38.0+ds/test_settings.py --- django-allauth-0.36.0+ds/test_settings.py 2018-03-19 08:25:44.000000000 +0000 +++ django-allauth-0.38.0+ds/test_settings.py 2018-10-03 19:25:08.000000000 +0000 @@ -50,6 +50,7 @@ 'allauth', 'allauth.account', 'allauth.socialaccount', + 'allauth.socialaccount.providers.agave', 'allauth.socialaccount.providers.amazon', 'allauth.socialaccount.providers.angellist', 'allauth.socialaccount.providers.asana', @@ -63,11 +64,13 @@ 'allauth.socialaccount.providers.bitbucket_oauth2', 'allauth.socialaccount.providers.bitly', 'allauth.socialaccount.providers.box', + 'allauth.socialaccount.providers.cern', 'allauth.socialaccount.providers.coinbase', 'allauth.socialaccount.providers.dataporten', 'allauth.socialaccount.providers.daum', 'allauth.socialaccount.providers.digitalocean', 'allauth.socialaccount.providers.discord', + 'allauth.socialaccount.providers.disqus', 'allauth.socialaccount.providers.douban', 'allauth.socialaccount.providers.doximity', 'allauth.socialaccount.providers.draugiem', @@ -85,6 +88,7 @@ 'allauth.socialaccount.providers.fxa', 'allauth.socialaccount.providers.github', 'allauth.socialaccount.providers.gitlab', + 'allauth.socialaccount.providers.globus', 'allauth.socialaccount.providers.google', 'allauth.socialaccount.providers.hubic', 'allauth.socialaccount.providers.instagram', @@ -122,6 +126,7 @@ 'allauth.socialaccount.providers.twitter', 'allauth.socialaccount.providers.untappd', 'allauth.socialaccount.providers.vimeo', + 'allauth.socialaccount.providers.vimeo_oauth2', 'allauth.socialaccount.providers.vk', 'allauth.socialaccount.providers.weibo', 'allauth.socialaccount.providers.weixin',