Codebase list django-allauth / b9099ef
New upstream version 0.38.0+ds Pierre-Elliott Bécue 5 years ago
95 changed file(s) with 2915 addition(s) and 176 deletion(s). Raw diff Collapse all Expand all
4646 Guillaume Vincent
4747 Guoyu Hao
4848 Hatem Nassrat
49 Hyunwoo Shim
4950 J. Erm
5051 J. Fernando Sánchez
5152 Jack Shedd
6768 Julen Ruiz Aizpuru
6869 Justin Michalicek
6970 Justin Pogrob
71 Kevin Dice
7072 Koichi Harakawa
7173 Lee Semel
7274 Luis Diego García
8587 Morgante Pell
8688 Nariman Gharib
8789 Niklas A Emanuelsson
90 Pavel Savchenko
8891 Patrick Paul
8992 Paulo Eduardo Neves
9093 Peter Bittner
9194 Peter Rowlands
95 Peter Stein
96 Philip John James
9297 Rabi Alam
9398 Radek Czajka
9499 Rense VanderHoek
107112 Terry Jones
108113 Tomas Babej
109114 Tomas Marcik
115 Tuk Bredsdorff
110116 Udi Oron
111117 Vuong Nguyen
112118 Volodymyr Yatsyk
0 0.38.0 (2018-10-03)
1 *******************
2
3 Security notice
4 ---------------
5
6 The ``{% user_display user %}`` tag did not escape properly. Depending on the
7 username validation rules, this could lead to XSS issues.
8
9
10 Note worthy changes
11 -------------------
12
13 - New provider: Vimeo (OAuth2).
14
15 - New translations: Basque.
16
17
18 0.37.1 (2018-08-27)
19 *******************
20
21 Backwards incompatible changes
22 ------------------------------
23
24 - Dropped the ``x-li-src: msdk`` headers from the ``linkedin_oauth2`` handshake.
25 This header is only required for mobile tokens, and breaks the regular flow.
26 Use the ``HEADERS`` setting to add this header if you need it.
27
28
29 0.37.0 (2018-08-27)
30 *******************
31
32 Note worthy changes
33 -------------------
34
35 - The Battle.net login backend now recognizes ``apac`` as a valid region.
36
37 - User model using a ``UUIDField`` as it's primary key can now be logged
38 in upon email confirmation (if using ``ACCOUNT_LOGIN_ON_EMAIL_CONFIRMATION``).
39
40 - New providers: Agave, Cern, Disqus, Globus.
41
42 - New translation: Danish.
43
044 0.36.0 (2018-05-08)
145 *******************
246
10591103 social login to existing accounts. The symptom is you end up with
10601104 users who have multiple primary email addresses which conflicts
10611105 with assumptions made by the code. In addition to fixing the code
1062 that allowed duplicates to occur, there is a managegement command
1106 that allowed duplicates to occur, there is a management command
10631107 you can run if you think this effects you (and if it doesn't effect
10641108 you there is no harm in running it anyways if you are unsure):
10651109
00 Metadata-Version: 1.1
11 Name: django-allauth
2 Version: 0.36.0
2 Version: 0.38.0
33 Summary: Integrated set of Django applications addressing authentication, registration, account management as well as 3rd party (social) account authentication.
44 Home-page: http://github.com/pennersr/django-allauth
55 Author: Raymond Penners
109109 Classifier: Framework :: Django
110110 Classifier: Framework :: Django :: 1.11
111111 Classifier: Framework :: Django :: 2.0
112 Classifier: Framework :: Django :: 2.1
77
88 """
99
10 VERSION = (0, 36, 0, 'final', 0)
10 VERSION = (0, 38, 0, 'final', 0)
1111
1212 __title__ = 'django-allauth'
1313 __version_info__ = VERSION
267267 username_field).error_messages.get('unique')
268268 if not error_message:
269269 error_message = self.error_messages['username_taken']
270 raise forms.ValidationError(error_message)
270 raise forms.ValidationError(
271 error_message,
272 params={
273 'model_name': user_model.__name__,
274 'field_label': username_field,
275 }
276 )
271277 return username
272278
273279 def clean_email(self, email):
332338 if hasattr(response, 'render'):
333339 response.render()
334340 resp['html'] = response.content.decode('utf8')
335 if data is not None:
336 resp['data'] = data
341 if data is not None:
342 resp['data'] = data
337343 return HttpResponse(json.dumps(resp),
338344 status=status,
339345 content_type='application/json')
55 register = template.Library()
66
77
8 class UserDisplayNode(template.Node):
9
10 def __init__(self, user, as_var=None):
11 self.user_var = template.Variable(user)
12 self.as_var = as_var
13
14 def render(self, context):
15 user = self.user_var.resolve(context)
16
17 display = user_display(user)
18
19 if self.as_var:
20 context[self.as_var] = display
21 return ""
22 return display
23
24
25 @register.tag(name="user_display")
26 def do_user_display(parser, token):
8 @register.simple_tag(name='user_display')
9 def user_display_tag(user):
2710 """
2811 Example usage::
2912
3720 {% endblocktrans %}
3821
3922 """
40 bits = token.split_contents()
41 if len(bits) == 2:
42 user = bits[1]
43 as_var = None
44 elif len(bits) == 4:
45 user = bits[1]
46 as_var = bits[3]
47 else:
48 raise template.TemplateSyntaxError(
49 "'%s' takes either two or four arguments" % bits[0])
50
51 return UserDisplayNode(user, as_var)
23 return user_display(user)
1010 from django.core import mail, validators
1111 from django.core.exceptions import ValidationError
1212 from django.db import models
13 from django.http import HttpResponseRedirect
14 from django.template import Context, Template
1315 from django.test.client import Client, RequestFactory
1416 from django.test.utils import override_settings
1517 from django.urls import reverse
2729 from . import app_settings
2830 from .adapter import get_adapter
2931 from .auth_backends import AuthenticationBackend
30 from .signals import user_logged_out
32 from .signals import user_logged_in, user_logged_out
3133 from .utils import (
3234 filter_users_by_username,
3335 url_str_to_user_pk,
10991101 with patch('allauth.account.utils.get_user_model') as mocked_gum:
11001102 mocked_gum.return_value = UUIDUser
11011103 self.assertEqual(url_str_to_user_pk(self.user_id),
1102 self.user_id)
1104 uuid.UUID(self.user_id))
11031105
11041106 def test_pk_to_url_string_identifies_UUID_as_stringlike(self):
11051107 user = UUIDUser(
11231125 self.assertEqual(user_username(user), 'CamelCase')
11241126 # TODO: Actually test something
11251127 filter_users_by_username('camelcase', 'foobar')
1128
1129 def test_user_display(self):
1130 user = get_user_model()(username='john<br/>doe')
1131 expected_name = 'john&lt;br/&gt;doe'
1132 templates = [
1133 '{% load account %}{% user_display user %}',
1134 '{% load account %}{% user_display user as x %}{{ x }}'
1135 ]
1136 for template in templates:
1137 t = Template(template)
1138 content = t.render(Context({'user': user}))
1139 self.assertEqual(content, expected_name)
1140
1141
1142 class ConfirmationViewTests(TestCase):
1143 def _create_user(self, username='john', password='doe'):
1144 user = get_user_model().objects.create(
1145 username=username,
1146 is_active=True)
1147 if password:
1148 user.set_password(password)
1149 else:
1150 user.set_unusable_password()
1151 user.save()
1152 return user
1153
1154 @override_settings(ACCOUNT_EMAIL_CONFIRMATION_HMAC=True,
1155 ACCOUNT_LOGIN_ON_EMAIL_CONFIRMATION=True)
1156 def test_login_on_confirm(self):
1157 user = self._create_user()
1158 email = EmailAddress.objects.create(
1159 user=user,
1160 email='a@b.com',
1161 verified=False,
1162 primary=True)
1163 key = EmailConfirmationHMAC(email).key
1164
1165 receiver_mock = Mock() # we've logged if signal was called
1166 user_logged_in.connect(receiver_mock)
1167
1168 # fake post-signup account_user stash
1169 session = self.client.session
1170 session['account_user'] = user_pk_to_url_str(user)
1171 session.save()
1172
1173 resp = self.client.post(
1174 reverse('account_confirm_email',
1175 args=[key]))
1176 email = EmailAddress.objects.get(pk=email.pk)
1177 self.assertTrue(email.verified)
1178
1179 receiver_mock.assert_called_once_with(
1180 sender=get_user_model(),
1181 request=resp.wsgi_request,
1182 response=resp,
1183 user=get_user_model().objects.get(username='john'),
1184 signal=user_logged_in,
1185 )
1186
1187 user_logged_in.disconnect(receiver_mock)
1188
1189 @override_settings(ACCOUNT_EMAIL_CONFIRMATION_HMAC=True,
1190 ACCOUNT_LOGIN_ON_EMAIL_CONFIRMATION=True)
1191 @patch('allauth.account.views.perform_login')
1192 @patch('allauth.account.utils.get_user_model', return_value=UUIDUser)
1193 def test_login_on_confirm_uuid_user(self, mocked_gum, mock_perform_login):
1194 user = UUIDUser(
1195 is_active=True,
1196 email='john@example.com',
1197 username='john')
1198
1199 # fake post-signup account_user stash
1200 session = self.client.session
1201 session['account_user'] = user_pk_to_url_str(user)
1202 session.save()
1203
1204 # fake email and email confirmation to avoid swappable model hell
1205 email = Mock(verified=False, user=user)
1206 key = 'mockkey'
1207 confirmation = Mock(autospec=EmailConfirmationHMAC, key=key)
1208 confirmation.email_address = email
1209 confirmation.from_key.return_value = confirmation
1210 mock_perform_login.return_value = HttpResponseRedirect(redirect_to='/')
1211
1212 with patch('allauth.account.views.EmailConfirmationHMAC',
1213 confirmation):
1214 self.client.post(
1215 reverse('account_confirm_email',
1216 args=[key]))
1217
1218 assert mock_perform_login.called
421421 else:
422422 pk_field = User._meta.pk
423423 if issubclass(type(pk_field), models.UUIDField):
424 return s
424 return pk_field.to_python(s)
425425 try:
426426 pk_field.to_python('a')
427427 pk = s
764764 if app_settings.LOGOUT_ON_GET:
765765 return self.post(*args, **kwargs)
766766 if not self.request.user.is_authenticated:
767 return redirect(self.get_redirect_url())
767 response = redirect(self.get_redirect_url())
768 return _ajax_response(self.request, response)
768769 ctx = self.get_context_data()
769 return self.render_to_response(ctx)
770 response = self.render_to_response(ctx)
771 return _ajax_response(self.request, response)
770772
771773 def post(self, *args, **kwargs):
772774 url = self.get_redirect_url()
773775 if self.request.user.is_authenticated:
774776 self.logout()
775 return redirect(url)
777 response = redirect(url)
778 return _ajax_response(self.request, response)
776779
777780 def logout(self):
778781 adapter = get_adapter(self.request)
66 msgstr ""
77 "Project-Id-Version: 0.1\n"
88 "Report-Msgid-Bugs-To: \n"
9 "POT-Creation-Date: 2018-05-08 00:43-0500\n"
9 "POT-Creation-Date: 2018-08-27 05:00-0500\n"
1010 "PO-Revision-Date: 2016-01-19 19:32+0100\n"
1111 "Last-Translator: David D Lowe <daviddlowe.flimm@gmail.com>\n"
1212 "Language-Team: Arabic\n"
3030 msgid "A user is already registered with this e-mail address."
3131 msgstr "هنالك مستخدم مسجل سابقا مع نفس عنوان البريد الاكتروني‪.‬"
3232
33 #: account/adapter.py:288
33 #: account/adapter.py:294
3434 #, python-brace-format
3535 msgid "Password must be a minimum of {0} characters."
3636 msgstr "كلمة المرور يجب أن لا تقل عن {0} حروف."
77 msgstr ""
88 "Project-Id-Version: 0.35\n"
99 "Report-Msgid-Bugs-To: \n"
10 "POT-Creation-Date: 2018-05-08 00:43-0500\n"
10 "POT-Creation-Date: 2018-08-27 05:00-0500\n"
1111 "PO-Revision-Date: 2018-04-17 16:52+0200\n"
1212 "Last-Translator: Beda Kosata <beda.kosata@gmail.com>\n"
1313 "Language-Team: Czech <>\n"
3030 msgid "A user is already registered with this e-mail address."
3131 msgstr "Uživatel s tímto e-mailem je již registrován."
3232
33 #: account/adapter.py:288
33 #: account/adapter.py:294
3434 #, python-brace-format
3535 msgid "Password must be a minimum of {0} characters."
3636 msgstr "Heslo musí obsahovat minimálně {0} znaků."
0 # SOME DESCRIPTIVE TITLE.
1 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
2 # This file is distributed under the same license as the PACKAGE package.
3 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4 #
5 msgid ""
6 msgstr ""
7 "Project-Id-Version: \n"
8 "Report-Msgid-Bugs-To: \n"
9 "POT-Creation-Date: 2018-09-03 14:25+0200\n"
10 "PO-Revision-Date: 2018-09-03 16:04+0200\n"
11 "Language: da\n"
12 "MIME-Version: 1.0\n"
13 "Content-Type: text/plain; charset=UTF-8\n"
14 "Content-Transfer-Encoding: 8bit\n"
15 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
16 "Last-Translator: b'Tuk Bredsdorff <tukodeb@gmail.com>'\n"
17 "Language-Team: \n"
18 "X-Generator: Poedit 2.1.1\n"
19
20 #: account/adapter.py:45
21 msgid "Username can not be used. Please use other username."
22 msgstr "Brugernavn kan ikke bruges. Brug venligst et andet brugernavn."
23
24 #: account/adapter.py:49
25 msgid "Too many failed login attempts. Try again later."
26 msgstr "Der er for mange mislykkede logonforsøg. Prøv igen senere."
27
28 #: account/adapter.py:51
29 msgid "A user is already registered with this e-mail address."
30 msgstr "En bruger er allerede registreret med denne e-mail-adresse."
31
32 #: account/adapter.py:294
33 #, python-brace-format
34 msgid "Password must be a minimum of {0} characters."
35 msgstr "Adgangskoden skal være på mindst {0} tegn."
36
37 #: account/apps.py:7
38 msgid "Accounts"
39 msgstr "Konti"
40
41 #: account/forms.py:61 account/forms.py:398
42 msgid "You must type the same password each time."
43 msgstr "Du skal skrive den samme adgangskode hver gang."
44
45 #: account/forms.py:91 account/forms.py:365 account/forms.py:476
46 msgid "Password"
47 msgstr "Adgangskode"
48
49 #: account/forms.py:92
50 msgid "Remember Me"
51 msgstr "Husk mig"
52
53 #: account/forms.py:98
54 msgid "This account is currently inactive."
55 msgstr "Denne konto er i øjeblikket inaktiv."
56
57 #: account/forms.py:101
58 msgid "The e-mail address and/or password you specified are not correct."
59 msgstr "Den angivne e-mail-adresse og/eller adgangskode er ikke korrekt."
60
61 #: account/forms.py:104
62 msgid "The username and/or password you specified are not correct."
63 msgstr "Det angivne brugernavn og/eller adgangskoden er ikke korrekt."
64
65 #: account/forms.py:113 account/forms.py:268 account/forms.py:426
66 #: account/forms.py:495
67 msgid "E-mail address"
68 msgstr "E-mail adresse"
69
70 #: account/forms.py:115 account/forms.py:301 account/forms.py:421
71 #: account/forms.py:490
72 msgid "E-mail"
73 msgstr "E-mail"
74
75 #: account/forms.py:120 account/forms.py:123 account/forms.py:260
76 #: account/forms.py:264
77 msgid "Username"
78 msgstr "Brugernavn"
79
80 #: account/forms.py:130
81 msgid "Username or e-mail"
82 msgstr "Brugernavn eller e-mail"
83
84 #: account/forms.py:133
85 msgctxt "field label"
86 msgid "Login"
87 msgstr "Bruger"
88
89 #: account/forms.py:292
90 msgid "E-mail (again)"
91 msgstr "E-mail (igen)"
92
93 #: account/forms.py:296
94 msgid "E-mail address confirmation"
95 msgstr "Bekræftelse af e-mail-adresse"
96
97 #: account/forms.py:304
98 msgid "E-mail (optional)"
99 msgstr "E-mail (valgfri)"
100
101 #: account/forms.py:345
102 msgid "You must type the same email each time."
103 msgstr "Du skal skrive den samme e-mail hver gang."
104
105 #: account/forms.py:368 account/forms.py:477
106 msgid "Password (again)"
107 msgstr "Adgangskode (igen)"
108
109 #: account/forms.py:432
110 msgid "This e-mail address is already associated with this account."
111 msgstr "Denne e-mail-adresse er allerede knyttet til denne konto."
112
113 #: account/forms.py:434
114 msgid "This e-mail address is already associated with another account."
115 msgstr "Denne e-mail-adresse er allerede knyttet til en anden konto."
116
117 #: account/forms.py:456
118 msgid "Current Password"
119 msgstr "Nuværende adgangskode"
120
121 #: account/forms.py:457 account/forms.py:546
122 msgid "New Password"
123 msgstr "Ny adgangskode"
124
125 #: account/forms.py:458 account/forms.py:547
126 msgid "New Password (again)"
127 msgstr "Ny adgangskode (igen)"
128
129 #: account/forms.py:466
130 msgid "Please type your current password."
131 msgstr "Indtast din nuværende adgangskode."
132
133 #: account/forms.py:504
134 msgid "The e-mail address is not assigned to any user account"
135 msgstr "E-mail-adressen er ikke tildelt til nogen brugerkonto"
136
137 #: account/forms.py:568
138 msgid "The password reset token was invalid."
139 msgstr "Token for nulstilling af adgangskode var ugyldig."
140
141 #: account/models.py:23
142 msgid "user"
143 msgstr "bruger"
144
145 #: account/models.py:27 account/models.py:81
146 msgid "e-mail address"
147 msgstr "e-mail adresse"
148
149 #: account/models.py:28
150 msgid "verified"
151 msgstr "bekræftet"
152
153 #: account/models.py:29
154 msgid "primary"
155 msgstr "primær"
156
157 #: account/models.py:34
158 msgid "email address"
159 msgstr "e-mail adresse"
160
161 #: account/models.py:35
162 msgid "email addresses"
163 msgstr "e-mail adresser"
164
165 #: account/models.py:83
166 msgid "created"
167 msgstr "oprettet"
168
169 #: account/models.py:85
170 msgid "sent"
171 msgstr "sendt"
172
173 #: account/models.py:86 socialaccount/models.py:55
174 msgid "key"
175 msgstr "nøgle"
176
177 #: account/models.py:91
178 msgid "email confirmation"
179 msgstr "e-mail bekræftigelse"
180
181 #: account/models.py:92
182 msgid "email confirmations"
183 msgstr "e-mail bekræftigelser"
184
185 #: socialaccount/adapter.py:26
186 #, python-format
187 msgid ""
188 "An account already exists with this e-mail address. Please sign in to that "
189 "account first, then connect your %s account."
190 msgstr ""
191 "En konto med denne e-mail adresse eksisterer allerede. Log venligst ind med "
192 "den konto først og tilknyt din %s konto derefter."
193
194 #: socialaccount/adapter.py:131
195 msgid "Your account has no password set up."
196 msgstr "Der er ikke oprettet noget password til din konto."
197
198 #: socialaccount/adapter.py:138
199 msgid "Your account has no verified e-mail address."
200 msgstr "Din konto har ikke noget bekræftiget e-mail adresse."
201
202 #: socialaccount/apps.py:7
203 msgid "Social Accounts"
204 msgstr "Sociale konti"
205
206 #: socialaccount/models.py:43 socialaccount/models.py:77
207 msgid "provider"
208 msgstr "udbyder"
209
210 #: socialaccount/models.py:46
211 msgid "name"
212 msgstr "navn"
213
214 #: socialaccount/models.py:48
215 msgid "client id"
216 msgstr "klient id"
217
218 #: socialaccount/models.py:50
219 msgid "App ID, or consumer key"
220 msgstr "App ID, eller konsumer nøgle"
221
222 #: socialaccount/models.py:51
223 msgid "secret key"
224 msgstr "hemmelig nøgle"
225
226 #: socialaccount/models.py:53
227 msgid "API secret, client secret, or consumer secret"
228 msgstr "API hemmelighed, klient hemmelighed eller konsumet hemmelighed"
229
230 #: socialaccount/models.py:58
231 msgid "Key"
232 msgstr "Nøgle"
233
234 #: socialaccount/models.py:66
235 msgid "social application"
236 msgstr "social applikation"
237
238 #: socialaccount/models.py:67
239 msgid "social applications"
240 msgstr "sociale applikationer"
241
242 #: socialaccount/models.py:96
243 msgid "uid"
244 msgstr "uid"
245
246 #: socialaccount/models.py:98
247 msgid "last login"
248 msgstr "sidste log ind"
249
250 #: socialaccount/models.py:100
251 msgid "date joined"
252 msgstr "dato oprettet"
253
254 #: socialaccount/models.py:102
255 msgid "extra data"
256 msgstr "ekstra data"
257
258 #: socialaccount/models.py:106
259 msgid "social account"
260 msgstr "social konto"
261
262 #: socialaccount/models.py:107
263 msgid "social accounts"
264 msgstr "sociale konti"
265
266 #: socialaccount/models.py:133
267 msgid "token"
268 msgstr "token"
269
270 #: socialaccount/models.py:135
271 msgid "\"oauth_token\" (OAuth1) or access token (OAuth2)"
272 msgstr "“oauth_token” (OAuth1) eller adgangstoken (OAuth2)"
273
274 #: socialaccount/models.py:138
275 msgid "token secret"
276 msgstr "token hemmelighed"
277
278 #: socialaccount/models.py:140
279 msgid "\"oauth_token_secret\" (OAuth1) or refresh token (OAuth2)"
280 msgstr "“oauth_token_secret” (OAuth1) eller fornyelsestoken (OAuth2)"
281
282 #: socialaccount/models.py:142
283 msgid "expires at"
284 msgstr "udløber den"
285
286 #: socialaccount/models.py:146
287 msgid "social application token"
288 msgstr "socialt applikationstoken"
289
290 #: socialaccount/models.py:147
291 msgid "social application tokens"
292 msgstr "sociale applikationstokener"
293
294 #: socialaccount/providers/douban/views.py:36
295 msgid "Invalid profile data"
296 msgstr "Ugyldig profildata"
297
298 #: socialaccount/providers/oauth/client.py:78
299 #, python-format
300 msgid "Invalid response while obtaining request token from \"%s\"."
301 msgstr "Ugyldig respons under forsøg på at hente request token fra “%s”."
302
303 #: socialaccount/providers/oauth/client.py:109
304 #, python-format
305 msgid "Invalid response while obtaining access token from \"%s\"."
306 msgstr "Ugyldig respons under forsøg på at hente adgangstoken fra “%s”."
307
308 #: socialaccount/providers/oauth/client.py:128
309 #, python-format
310 msgid "No request token saved for \"%s\"."
311 msgstr "Intet request token gemt for “%s”."
312
313 #: socialaccount/providers/oauth/client.py:177
314 #, python-format
315 msgid "No access token saved for \"%s\"."
316 msgstr "Intet adgangstoken gemt for “%s”."
317
318 #: socialaccount/providers/oauth/client.py:197
319 #, python-format
320 msgid "No access to private resources at \"%s\"."
321 msgstr "Ingen adgang til private ressourcer på “%s”."
322
323 #: templates/account/account_inactive.html:5
324 #: templates/account/account_inactive.html:8
325 msgid "Account Inactive"
326 msgstr "Inaktiv konto"
327
328 #: templates/account/account_inactive.html:10
329 msgid "This account is inactive."
330 msgstr "Denne konto er inaktiv."
331
332 #: templates/account/email.html:5
333 msgid "Account"
334 msgstr "Konto"
335
336 #: templates/account/email.html:8
337 msgid "E-mail Addresses"
338 msgstr "E-mail adresser"
339
340 #: templates/account/email.html:10
341 msgid "The following e-mail addresses are associated with your account:"
342 msgstr "De følgende e-mail adresser er tilknyttet din konto:"
343
344 #: templates/account/email.html:24
345 msgid "Verified"
346 msgstr "Bekæftet"
347
348 #: templates/account/email.html:26
349 msgid "Unverified"
350 msgstr "Ubekræftet"
351
352 #: templates/account/email.html:28
353 msgid "Primary"
354 msgstr "Primær"
355
356 #: templates/account/email.html:34
357 msgid "Make Primary"
358 msgstr "Gør primær"
359
360 #: templates/account/email.html:35
361 msgid "Re-send Verification"
362 msgstr "Send bekræftigelse igen"
363
364 #: templates/account/email.html:36 templates/socialaccount/connections.html:35
365 msgid "Remove"
366 msgstr "Fjern"
367
368 #: templates/account/email.html:43
369 msgid "Warning:"
370 msgstr "Advarsel:"
371
372 #: templates/account/email.html:43
373 msgid ""
374 "You currently do not have any e-mail address set up. You should really add "
375 "an e-mail address so you can receive notifications, reset your password, etc."
376 msgstr ""
377 "Du har på nuværende tidspunkt ikke nogen emailadresser tilknyttet. Du bør "
378 "virkeligt tilknytte en email-adresse, så du kan modtage notifikationer, "
379 "resette dit password osv."
380
381 #: templates/account/email.html:48
382 msgid "Add E-mail Address"
383 msgstr "Tilføj e-mail adresse"
384
385 #: templates/account/email.html:53
386 msgid "Add E-mail"
387 msgstr "Tilføj e-mail"
388
389 #: templates/account/email.html:62
390 msgid "Do you really want to remove the selected e-mail address?"
391 msgstr "Vil du virkeligt fjerne den valgte e-mail adresse?"
392
393 #: templates/account/email/email_confirmation_message.txt:1
394 #, python-format
395 msgid ""
396 "Hello from %(site_name)s!\n"
397 "\n"
398 "You're receiving this e-mail because user %(user_display)s has given yours "
399 "as an e-mail address to connect their account.\n"
400 "\n"
401 "To confirm this is correct, go to %(activate_url)s\n"
402 msgstr ""
403 "Hej fra %(site_name)s!\n"
404 "\n"
405 "Du modtager denne e-mail fordi brugeren %(user_display)s ønsker at bruge den "
406 "til sin konto.\n"
407 "\n"
408 "For at bekræfte dette, gå til %(activate_url)s\n"
409
410 #: templates/account/email/email_confirmation_message.txt:7
411 #, python-format
412 msgid ""
413 "Thank you from %(site_name)s!\n"
414 "%(site_domain)s"
415 msgstr ""
416 "Tak fra %(site_name)s!\n"
417 "%(site_domain)s"
418
419 #: templates/account/email/email_confirmation_subject.txt:3
420 msgid "Please Confirm Your E-mail Address"
421 msgstr "Bekræft venligst din e-mail adresse"
422
423 #: templates/account/email/password_reset_key_message.txt:1
424 #, python-format
425 msgid ""
426 "Hello from %(site_name)s!\n"
427 "\n"
428 "You're receiving this e-mail because you or someone else has requested a "
429 "password for your user account.\n"
430 "It can be safely ignored if you did not request a password reset. Click the "
431 "link below to reset your password."
432 msgstr ""
433 "Hej fra %(site_name)s!\n"
434 "\n"
435 "Du har modtaget denne email fordi du eller en anden har bedt om et password "
436 "til din konto.\n"
437 "Den kan trygt ses bort fra, hvis du ikke har bedt om at få nulstillet dit "
438 "password. Klik linket herunder for at nulstille dit password."
439
440 #: templates/account/email/password_reset_key_message.txt:8
441 #, python-format
442 msgid "In case you forgot, your username is %(username)s."
443 msgstr "I tilfælde af at du har glemt det er dit brugernavn %(username)s."
444
445 #: templates/account/email/password_reset_key_message.txt:10
446 #, python-format
447 msgid ""
448 "Thank you for using %(site_name)s!\n"
449 "%(site_domain)s"
450 msgstr ""
451 "Tak fordi du bruger %(site_name)s!\n"
452 "%(site_domain)s"
453
454 #: templates/account/email/password_reset_key_subject.txt:3
455 msgid "Password Reset E-mail"
456 msgstr "Token for nulstilling af adgangskode var ugyldig"
457
458 #: templates/account/email_confirm.html:6
459 #: templates/account/email_confirm.html:10
460 msgid "Confirm E-mail Address"
461 msgstr "Bekræft venligst din e-mail adresse"
462
463 #: templates/account/email_confirm.html:16
464 #, python-format
465 msgid ""
466 "Please confirm that <a href=\"mailto:%(email)s\">%(email)s</a> is an e-mail "
467 "address for user %(user_display)s."
468 msgstr ""
469 "Bekræft venligst at <a href=\"mailto:%(email)s\">%(email)s</a> er en e-mail "
470 "adresse for %(user_display)s."
471
472 #: templates/account/email_confirm.html:20
473 msgid "Confirm"
474 msgstr "Bekræft"
475
476 #: templates/account/email_confirm.html:27
477 #, python-format
478 msgid ""
479 "This e-mail confirmation link expired or is invalid. Please <a href="
480 "\"%(email_url)s\">issue a new e-mail confirmation request</a>."
481 msgstr ""
482 "Dette e-mail bekræftigelseslink er udløbet eller ugyldigt. Lav venligst <a "
483 "href=\"%(email_url)s\">et nyt</a>."
484
485 #: templates/account/login.html:6 templates/account/login.html:10
486 #: templates/account/login.html:43
487 msgid "Sign In"
488 msgstr "Log ind"
489
490 #: templates/account/login.html:15
491 #, python-format
492 msgid ""
493 "Please sign in with one\n"
494 "of your existing third party accounts. Or, <a href=\"%(signup_url)s\">sign "
495 "up</a>\n"
496 "for a %(site_name)s account and sign in below:"
497 msgstr ""
498 "Log venligst ind med en\n"
499 "af dine eksisterende tredjeparts konti. Eller, <a href=\"%(signup_url)s"
500 "\">opret</a>\n"
501 "en konto på %(site_name)s og log ind herunder:"
502
503 #: templates/account/login.html:25
504 msgid "or"
505 msgstr "eller"
506
507 #: templates/account/login.html:32
508 #, python-format
509 msgid ""
510 "If you have not created an account yet, then please\n"
511 "<a href=\"%(signup_url)s\">sign up</a> first."
512 msgstr ""
513 "Hvis du ikke allerede har oprettet en konto, så\n"
514 "<a href=\"%(signup_url)s\">opret dig</a> først."
515
516 #: templates/account/login.html:42
517 msgid "Forgot Password?"
518 msgstr "Glemt password?"
519
520 #: templates/account/logout.html:5 templates/account/logout.html:8
521 #: templates/account/logout.html:17
522 msgid "Sign Out"
523 msgstr "Log ud"
524
525 #: templates/account/logout.html:10
526 msgid "Are you sure you want to sign out?"
527 msgstr "Er du sikker på, at du vil logge af?"
528
529 #: templates/account/messages/cannot_delete_primary_email.txt:2
530 #, python-format
531 msgid "You cannot remove your primary e-mail address (%(email)s)."
532 msgstr "Du kan ikke fjerne din primære e-mail adresse (%(email)s)."
533
534 #: templates/account/messages/email_confirmation_sent.txt:2
535 #, python-format
536 msgid "Confirmation e-mail sent to %(email)s."
537 msgstr "Bekræftigelses-email sendt til %(email)s."
538
539 #: templates/account/messages/email_confirmed.txt:2
540 #, python-format
541 msgid "You have confirmed %(email)s."
542 msgstr "Du har bekræftet %(email)s."
543
544 #: templates/account/messages/email_deleted.txt:2
545 #, python-format
546 msgid "Removed e-mail address %(email)s."
547 msgstr "Fjernede e-mail adressen %(email)s."
548
549 #: templates/account/messages/logged_in.txt:4
550 #, python-format
551 msgid "Successfully signed in as %(name)s."
552 msgstr "Loggede succesfuldt ind med %(name)s."
553
554 #: templates/account/messages/logged_out.txt:2
555 msgid "You have signed out."
556 msgstr "Du har logget ud."
557
558 #: templates/account/messages/password_changed.txt:2
559 msgid "Password successfully changed."
560 msgstr "Password ændret med success."
561
562 #: templates/account/messages/password_set.txt:2
563 msgid "Password successfully set."
564 msgstr "Password indstillet med success."
565
566 #: templates/account/messages/primary_email_set.txt:2
567 msgid "Primary e-mail address set."
568 msgstr "Primær e-mail indstillet."
569
570 #: templates/account/messages/unverified_primary_email.txt:2
571 msgid "Your primary e-mail address must be verified."
572 msgstr "Din primære e-mail adresse skal bekræftes."
573
574 #: templates/account/password_change.html:5
575 #: templates/account/password_change.html:8
576 #: templates/account/password_change.html:13
577 #: templates/account/password_reset_from_key.html:4
578 #: templates/account/password_reset_from_key.html:7
579 #: templates/account/password_reset_from_key_done.html:4
580 #: templates/account/password_reset_from_key_done.html:7
581 msgid "Change Password"
582 msgstr "Ændr password"
583
584 #: templates/account/password_reset.html:6
585 #: templates/account/password_reset.html:10
586 #: templates/account/password_reset_done.html:6
587 #: templates/account/password_reset_done.html:9
588 msgid "Password Reset"
589 msgstr "Nulstil password"
590
591 #: templates/account/password_reset.html:15
592 msgid ""
593 "Forgotten your password? Enter your e-mail address below, and we'll send you "
594 "an e-mail allowing you to reset it."
595 msgstr ""
596 "Glemt dit password? Skriv din e-mail adresse herunder, og vi vil sende dig "
597 "en e-mail, hvorfra du kan nulstille det."
598
599 #: templates/account/password_reset.html:20
600 msgid "Reset My Password"
601 msgstr "Nulstil mit password"
602
603 #: templates/account/password_reset.html:23
604 msgid "Please contact us if you have any trouble resetting your password."
605 msgstr ""
606 "Kontakt os venligst, hvis du har problemer med at nulstille dit password."
607
608 #: templates/account/password_reset_done.html:15
609 msgid ""
610 "We have sent you an e-mail. Please contact us if you do not receive it "
611 "within a few minutes."
612 msgstr ""
613 "Vi har sendt dig en e-mail. Kontakt os venligst, hvis du ikke modtager den i "
614 "løbet af et par minutter."
615
616 #: templates/account/password_reset_from_key.html:7
617 msgid "Bad Token"
618 msgstr "Ugyldigt token"
619
620 #: templates/account/password_reset_from_key.html:11
621 #, python-format
622 msgid ""
623 "The password reset link was invalid, possibly because it has already been "
624 "used. Please request a <a href=\"%(passwd_reset_url)s\">new password reset</"
625 "a>."
626 msgstr ""
627 "Linket til nulstilling af password var ugyldigt, muligvis fordi det allerede "
628 "er blevet brugt. Lav venligst <a href=\"%(passwd_reset_url)s\">et nyt</a>."
629
630 #: templates/account/password_reset_from_key.html:17
631 msgid "change password"
632 msgstr "ændr password"
633
634 #: templates/account/password_reset_from_key.html:20
635 #: templates/account/password_reset_from_key_done.html:8
636 msgid "Your password is now changed."
637 msgstr "Dit password er nu ændret."
638
639 #: templates/account/password_set.html:5 templates/account/password_set.html:8
640 #: templates/account/password_set.html:13
641 msgid "Set Password"
642 msgstr "Indstil password"
643
644 #: templates/account/signup.html:5 templates/socialaccount/signup.html:5
645 msgid "Signup"
646 msgstr "Opret"
647
648 #: templates/account/signup.html:8 templates/account/signup.html:18
649 #: templates/socialaccount/signup.html:8 templates/socialaccount/signup.html:19
650 msgid "Sign Up"
651 msgstr "Opret konto"
652
653 #: templates/account/signup.html:10
654 #, python-format
655 msgid ""
656 "Already have an account? Then please <a href=\"%(login_url)s\">sign in</a>."
657 msgstr "Har du allerede en konto? Så <a href=\"%(login_url)s\">log ind</a>."
658
659 #: templates/account/signup_closed.html:5
660 #: templates/account/signup_closed.html:8
661 msgid "Sign Up Closed"
662 msgstr "Lukket for nye konti"
663
664 #: templates/account/signup_closed.html:10
665 msgid "We are sorry, but the sign up is currently closed."
666 msgstr "Vi beklager, men der er for tiden lukket for oprettelse af nye konti."
667
668 #: templates/account/snippets/already_logged_in.html:5
669 msgid "Note"
670 msgstr "Note"
671
672 #: templates/account/snippets/already_logged_in.html:5
673 #, python-format
674 msgid "you are already logged in as %(user_display)s."
675 msgstr "du er allerede logget ind som %(user_display)s."
676
677 #: templates/account/verification_sent.html:5
678 #: templates/account/verification_sent.html:8
679 #: templates/account/verified_email_required.html:5
680 #: templates/account/verified_email_required.html:8
681 msgid "Verify Your E-mail Address"
682 msgstr "Bekræft din e-mail adresse"
683
684 #: templates/account/verification_sent.html:10
685 msgid ""
686 "We have sent an e-mail to you for verification. Follow the link provided to "
687 "finalize the signup process. Please contact us if you do not receive it "
688 "within a few minutes."
689 msgstr ""
690 "Vi har sendt en e-mail til dig. Følg linket i den for at færdiggøre "
691 "oprettelsesprocessen. Kontakt os venligst, hvis du ikke modtager den i løbet "
692 "af et par minutter."
693
694 #: templates/account/verified_email_required.html:12
695 msgid ""
696 "This part of the site requires us to verify that\n"
697 "you are who you claim to be. For this purpose, we require that you\n"
698 "verify ownership of your e-mail address. "
699 msgstr ""
700 "Denne del af siden kræver at du bekræftiger at\n"
701 "du er hvem du påstår du er. Derfor er du nødt til at\n"
702 "bekræftige at du ejer din e-mail adresse "
703
704 #: templates/account/verified_email_required.html:16
705 msgid ""
706 "We have sent an e-mail to you for\n"
707 "verification. Please click on the link inside this e-mail. Please\n"
708 "contact us if you do not receive it within a few minutes."
709 msgstr ""
710 "Vi har sendt en e-mail til dig for bekræftigelse.\n"
711 "Klik på linket i den. Kontakt os venligst, hvis du ikke modtager\n"
712 " den i løbet af et par minutter."
713
714 #: templates/account/verified_email_required.html:20
715 #, python-format
716 msgid ""
717 "<strong>Note:</strong> you can still <a href=\"%(email_url)s\">change your e-"
718 "mail address</a>."
719 msgstr ""
720 "<strong>Bemærk:</strong> du kan stadig <a href=\"%(email_url)s\">ændre din e-"
721 "mail adresse</a>."
722
723 #: templates/openid/login.html:9
724 msgid "OpenID Sign In"
725 msgstr "OpenID Log ind"
726
727 #: templates/socialaccount/authentication_error.html:5
728 #: templates/socialaccount/authentication_error.html:8
729 msgid "Social Network Login Failure"
730 msgstr "Social Network log ind-fejl"
731
732 #: templates/socialaccount/authentication_error.html:10
733 msgid ""
734 "An error occurred while attempting to login via your social network account."
735 msgstr ""
736 "Der opstod en fejl under forsøget på at logge ind via din social konto."
737
738 #: templates/socialaccount/connections.html:5
739 #: templates/socialaccount/connections.html:8
740 msgid "Account Connections"
741 msgstr "Kontoforbindelser"
742
743 #: templates/socialaccount/connections.html:11
744 msgid ""
745 "You can sign in to your account using any of the following third party "
746 "accounts:"
747 msgstr "Du kan logge ind med følgende tredjepartskonti:"
748
749 #: templates/socialaccount/connections.html:43
750 msgid ""
751 "You currently have no social network accounts connected to this account."
752 msgstr "Du har ikke nogle social netværks-konti tilknyttet denne konto."
753
754 #: templates/socialaccount/connections.html:46
755 msgid "Add a 3rd Party Account"
756 msgstr "Tilføj tredjeparts konto"
757
758 #: templates/socialaccount/login_cancelled.html:5
759 #: templates/socialaccount/login_cancelled.html:9
760 msgid "Login Cancelled"
761 msgstr "Log ind afbrudt"
762
763 #: templates/socialaccount/login_cancelled.html:13
764 #, python-format
765 msgid ""
766 "You decided to cancel logging in to our site using one of your existing "
767 "accounts. If this was a mistake, please proceed to <a href=\"%(login_url)s"
768 "\">sign in</a>."
769 msgstr ""
770 "Du valgte at afbryde log ind på vores side med en af dine eksisterende "
771 "konti. Hvis det var en fejl, så fortsæt venligst til <a "
772 "href=“%(login_url)s”>log ind</a>."
773
774 #: templates/socialaccount/messages/account_connected.txt:2
775 msgid "The social account has been connected."
776 msgstr "Den social konto er tilknyttet."
777
778 #: templates/socialaccount/messages/account_connected_other.txt:2
779 msgid "The social account is already connected to a different account."
780 msgstr "Den sociale konto er allerede tilknyttet en anden konto."
781
782 #: templates/socialaccount/messages/account_disconnected.txt:2
783 msgid "The social account has been disconnected."
784 msgstr "Tilknytningen til den social konto er blevet afbrydt."
785
786 #: templates/socialaccount/signup.html:10
787 #, python-format
788 msgid ""
789 "You are about to use your %(provider_name)s account to login to\n"
790 "%(site_name)s. As a final step, please complete the following form:"
791 msgstr ""
792 "Du er ved at bruge din %(provider_name)s -konto til at logge ind i\n"
793 "%(site_name)s. Som et sidste skridt, udfyld venligst denne formular:"
77 msgstr ""
88 "Project-Id-Version: django-allauth\n"
99 "Report-Msgid-Bugs-To: \n"
10 "POT-Creation-Date: 2018-05-08 00:43-0500\n"
10 "POT-Creation-Date: 2018-08-27 05:00-0500\n"
1111 "PO-Revision-Date: 2017-11-04 16:22+0100\n"
1212 "Last-Translator: Jannis Vajen <jvajen@gmail.com>\n"
1313 "Language-Team: German (http://www.transifex.com/projects/p/django-allauth/"
3333 msgid "A user is already registered with this e-mail address."
3434 msgstr "Es ist bereits jemand mit dieser E-Mail-Adresse registriert."
3535
36 #: account/adapter.py:288
36 #: account/adapter.py:294
3737 #, python-brace-format
3838 msgid "Password must be a minimum of {0} characters."
3939 msgstr "Das Passwort muss aus mindestens {0} Zeichen bestehen."
66 msgstr ""
77 "Project-Id-Version: \n"
88 "Report-Msgid-Bugs-To: \n"
9 "POT-Creation-Date: 2018-05-08 00:43-0500\n"
9 "POT-Creation-Date: 2018-08-27 05:00-0500\n"
1010 "PO-Revision-Date: 2014-08-12 00:29+0200\n"
1111 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1212 "Language-Team: LANGUAGE <LL@li.org>\n"
3131 msgid "A user is already registered with this e-mail address."
3232 msgstr "Ένας χρήστης έχει ήδη εγγραφεί με τη συγκεκριμένη διεύθυνση e-mail."
3333
34 #: account/adapter.py:288
34 #: account/adapter.py:294
3535 #, python-brace-format
3636 msgid "Password must be a minimum of {0} characters."
3737 msgstr "Ο κωδικός πρέπει να είναι κατ' ελάχιστο {0} χαρακτήρες."
77 msgstr ""
88 "Project-Id-Version: PACKAGE VERSION\n"
99 "Report-Msgid-Bugs-To: \n"
10 "POT-Creation-Date: 2018-05-08 00:43-0500\n"
10 "POT-Creation-Date: 2018-08-27 05:00-0500\n"
1111 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
1212 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313 "Language-Team: LANGUAGE <LL@li.org>\n"
2828 msgid "A user is already registered with this e-mail address."
2929 msgstr ""
3030
31 #: account/adapter.py:288
31 #: account/adapter.py:294
3232 #, python-brace-format
3333 msgid "Password must be a minimum of {0} characters."
3434 msgstr ""
66 msgstr ""
77 "Project-Id-Version: django-allauth\n"
88 "Report-Msgid-Bugs-To: \n"
9 "POT-Creation-Date: 2018-05-08 00:43-0500\n"
9 "POT-Creation-Date: 2018-08-27 05:00-0500\n"
1010 "PO-Revision-Date: 2018-02-14 17:46-0600\n"
1111 "Last-Translator: Jannis Š\n"
1212 "Language-Team: Spanish (http://www.transifex.com/projects/p/django-allauth/"
3030 msgid "A user is already registered with this e-mail address."
3131 msgstr "Un usuario ya fue registrado con esta dirección de correo electrónico."
3232
33 #: account/adapter.py:288
33 #: account/adapter.py:294
3434 #, python-brace-format
3535 msgid "Password must be a minimum of {0} characters."
3636 msgstr "Una contraseña necesita al menos {0} caracteres."
0 # SOME DESCRIPTIVE TITLE.
1 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
2 # This file is distributed under the same license as the PACKAGE package.
3 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4 #
5 msgid ""
6 msgstr ""
7 "Project-Id-Version: django-allauth\n"
8 "Report-Msgid-Bugs-To: \n"
9 "POT-Creation-Date: 2018-08-28 20:53+0200\n"
10 "PO-Revision-Date: 2018-08-29 08:16+0200\n"
11 "Last-Translator: Eneko Illarramendi <eneko@illarra.com>\n"
12 "Language-Team: Basque <translate@tropela.eus>\n"
13 "Language: eu\n"
14 "MIME-Version: 1.0\n"
15 "Content-Type: text/plain; charset=UTF-8\n"
16 "Content-Transfer-Encoding: 8bit\n"
17 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
18 "X-Generator: Poedit 2.1.1\n"
19
20 #: account/adapter.py:45
21 msgid "Username can not be used. Please use other username."
22 msgstr ""
23 "Erabiltzaile izen hau ezin da erabili. Aukeratu beste erabiltzaile izen bat."
24
25 #: account/adapter.py:49
26 msgid "Too many failed login attempts. Try again later."
27 msgstr "Huts egite gehiegi saioa hasterakoan. Saiatu berriro beranduago."
28
29 #: account/adapter.py:51
30 msgid "A user is already registered with this e-mail address."
31 msgstr ""
32 "Erabiltzaile batek kontu bat sortu du iada helbide elektroniko honekin."
33
34 #: account/adapter.py:294
35 #, python-brace-format
36 msgid "Password must be a minimum of {0} characters."
37 msgstr "Pasahitzak gutxienez {0} karaktere izan behar ditu."
38
39 #: account/apps.py:7
40 msgid "Accounts"
41 msgstr "Kontuak"
42
43 #: account/forms.py:61 account/forms.py:398
44 msgid "You must type the same password each time."
45 msgstr "Pasahitz berdina idatzi behar duzu aldi bakoitzean."
46
47 #: account/forms.py:91 account/forms.py:365 account/forms.py:476
48 msgid "Password"
49 msgstr "Pasahitza"
50
51 #: account/forms.py:92
52 msgid "Remember Me"
53 msgstr "Gogora nazazue"
54
55 #: account/forms.py:98
56 msgid "This account is currently inactive."
57 msgstr "Kontu hau ez dago aktiboa orain."
58
59 #: account/forms.py:101
60 msgid "The e-mail address and/or password you specified are not correct."
61 msgstr "Sartutako helbide elektronikoa eta/edo pasahitza ez dira zuzenak."
62
63 #: account/forms.py:104
64 msgid "The username and/or password you specified are not correct."
65 msgstr "Sartutako erabiltzailea eta/edo pasahitza ez dira zuzenak."
66
67 #: account/forms.py:113 account/forms.py:268 account/forms.py:426
68 #: account/forms.py:495
69 msgid "E-mail address"
70 msgstr "Helbide elektronikoa"
71
72 #: account/forms.py:115 account/forms.py:301 account/forms.py:421
73 #: account/forms.py:490
74 msgid "E-mail"
75 msgstr "Emaila"
76
77 #: account/forms.py:120 account/forms.py:123 account/forms.py:260
78 #: account/forms.py:264
79 msgid "Username"
80 msgstr "Erabiltzailea"
81
82 #: account/forms.py:130
83 msgid "Username or e-mail"
84 msgstr "Erabiltzailea edo emaila"
85
86 #: account/forms.py:133
87 msgctxt "field label"
88 msgid "Login"
89 msgstr "Logina"
90
91 #: account/forms.py:292
92 msgid "E-mail (again)"
93 msgstr "Emaila (berriro)"
94
95 #: account/forms.py:296
96 msgid "E-mail address confirmation"
97 msgstr "Helbide elektronikoaren egiaztapena"
98
99 #: account/forms.py:304
100 msgid "E-mail (optional)"
101 msgstr "Emaila (hautazkoa)"
102
103 #: account/forms.py:345
104 msgid "You must type the same email each time."
105 msgstr "Email berdina idatzi behar duzu aldi bakoitzean."
106
107 #: account/forms.py:368 account/forms.py:477
108 msgid "Password (again)"
109 msgstr "Pasahitza (berriro)"
110
111 #: account/forms.py:432
112 msgid "This e-mail address is already associated with this account."
113 msgstr "Helbide elektroniko hau dagoeneko kontu honi lotuta dago."
114
115 #: account/forms.py:434
116 msgid "This e-mail address is already associated with another account."
117 msgstr "Helbide elektroniko hau dagoeneko beste kontu bati lotuta dago."
118
119 #: account/forms.py:456
120 msgid "Current Password"
121 msgstr "Oraingo pasahitza"
122
123 #: account/forms.py:457 account/forms.py:546
124 msgid "New Password"
125 msgstr "Pasahitz berria"
126
127 #: account/forms.py:458 account/forms.py:547
128 msgid "New Password (again)"
129 msgstr "Pasahitz berria (berriro)"
130
131 #: account/forms.py:466
132 msgid "Please type your current password."
133 msgstr "Mesedez idatzi zure oraingo pasahitza."
134
135 #: account/forms.py:504
136 msgid "The e-mail address is not assigned to any user account"
137 msgstr "Helbide elektroniko hau ez dago kontu bati lotuta"
138
139 #: account/forms.py:568
140 msgid "The password reset token was invalid."
141 msgstr "Pasahitza berrezartzeko \"token\"-a baliogabea da."
142
143 #: account/models.py:23
144 msgid "user"
145 msgstr "erabiltzailea"
146
147 #: account/models.py:27 account/models.py:81
148 msgid "e-mail address"
149 msgstr "helbide elektronikoa"
150
151 #: account/models.py:28
152 msgid "verified"
153 msgstr "egiaztatuta"
154
155 #: account/models.py:29
156 msgid "primary"
157 msgstr "nagusia"
158
159 #: account/models.py:34
160 msgid "email address"
161 msgstr "helbide elektronikoa"
162
163 #: account/models.py:35
164 msgid "email addresses"
165 msgstr "helbide elektronikoak"
166
167 #: account/models.py:83
168 msgid "created"
169 msgstr "sortuta"
170
171 #: account/models.py:85
172 msgid "sent"
173 msgstr "bidalita"
174
175 #: account/models.py:86 socialaccount/models.py:55
176 msgid "key"
177 msgstr "giltza"
178
179 #: account/models.py:91
180 msgid "email confirmation"
181 msgstr "email egiaztapena"
182
183 #: account/models.py:92
184 msgid "email confirmations"
185 msgstr "email egiaztapenak"
186
187 #: socialaccount/adapter.py:26
188 #, python-format
189 msgid ""
190 "An account already exists with this e-mail address. Please sign in to that "
191 "account first, then connect your %s account."
192 msgstr ""
193 "Kontu bat sortu da iada helbide elektroniko honekin. Mesedez hasi saio berri "
194 "bat kontu honekin eta gero zure %s kontua honi lotu."
195
196 #: socialaccount/adapter.py:131
197 msgid "Your account has no password set up."
198 msgstr "Zure kontuak ez du pasahitzik zehaztuta."
199
200 #: socialaccount/adapter.py:138
201 msgid "Your account has no verified e-mail address."
202 msgstr "Zure kontuak ez du egiaztatutako emailik."
203
204 #: socialaccount/apps.py:7
205 msgid "Social Accounts"
206 msgstr "Sare sozial kontuak"
207
208 #: socialaccount/models.py:43 socialaccount/models.py:77
209 msgid "provider"
210 msgstr "zerbitzua"
211
212 #: socialaccount/models.py:46
213 msgid "name"
214 msgstr "izena"
215
216 #: socialaccount/models.py:48
217 msgid "client id"
218 msgstr "client id"
219
220 #: socialaccount/models.py:50
221 msgid "App ID, or consumer key"
222 msgstr "Aplikazioaren ID-a, edo \"consumer key\"-a"
223
224 #: socialaccount/models.py:51
225 msgid "secret key"
226 msgstr "\"secret key\"-a"
227
228 #: socialaccount/models.py:53
229 msgid "API secret, client secret, or consumer secret"
230 msgstr "\"API secret\"-a, \"client secret\"-a edo \"consumer secret\"-a"
231
232 #: socialaccount/models.py:58
233 msgid "Key"
234 msgstr "Giltza"
235
236 #: socialaccount/models.py:66
237 msgid "social application"
238 msgstr "aplikazio soziala"
239
240 #: socialaccount/models.py:67
241 msgid "social applications"
242 msgstr "aplikazio sozialak"
243
244 #: socialaccount/models.py:96
245 msgid "uid"
246 msgstr "uid"
247
248 #: socialaccount/models.py:98
249 msgid "last login"
250 msgstr "azken logina"
251
252 #: socialaccount/models.py:100
253 msgid "date joined"
254 msgstr "erregistro eguna"
255
256 #: socialaccount/models.py:102
257 msgid "extra data"
258 msgstr "datu gehigarriak"
259
260 #: socialaccount/models.py:106
261 msgid "social account"
262 msgstr "sare sozial kontua"
263
264 #: socialaccount/models.py:107
265 msgid "social accounts"
266 msgstr "sare sozial kontuak"
267
268 #: socialaccount/models.py:133
269 msgid "token"
270 msgstr "\"token\"-a"
271
272 #: socialaccount/models.py:135
273 msgid "\"oauth_token\" (OAuth1) or access token (OAuth2)"
274 msgstr "\"oauth_token\"-a (OAuth1) edo \"access token\"-a (OAuth2)"
275
276 #: socialaccount/models.py:138
277 msgid "token secret"
278 msgstr "\"token secret\"-a"
279
280 #: socialaccount/models.py:140
281 msgid "\"oauth_token_secret\" (OAuth1) or refresh token (OAuth2)"
282 msgstr "\"oauth_token_secret\"-a (OAuth1) edo \"refresh token\"-a (OAuth2)"
283
284 #: socialaccount/models.py:142
285 msgid "expires at"
286 msgstr "iraungitze data"
287
288 #: socialaccount/models.py:146
289 msgid "social application token"
290 msgstr "aplikazio sozial \"token\"-a"
291
292 #: socialaccount/models.py:147
293 msgid "social application tokens"
294 msgstr "aplikazio sozial \"token\"-ak"
295
296 #: socialaccount/providers/douban/views.py:36
297 msgid "Invalid profile data"
298 msgstr "Profil datu baliogabeak"
299
300 #: socialaccount/providers/oauth/client.py:78
301 #, python-format
302 msgid "Invalid response while obtaining request token from \"%s\"."
303 msgstr "Erantzun baliogabea \"%s\"-tik \"request token\"-a eskuratzean."
304
305 #: socialaccount/providers/oauth/client.py:109
306 #, python-format
307 msgid "Invalid response while obtaining access token from \"%s\"."
308 msgstr "Erantzun baliogabea \"%s\"-tik \"access token\"-a eskuratzean."
309
310 #: socialaccount/providers/oauth/client.py:128
311 #, python-format
312 msgid "No request token saved for \"%s\"."
313 msgstr "Ez dago \"request token\"-ik gordeta \"%s\"-entzat."
314
315 #: socialaccount/providers/oauth/client.py:177
316 #, python-format
317 msgid "No access token saved for \"%s\"."
318 msgstr "Ez dago \"access token\"-ik gordeta \"%s\"-entzat."
319
320 #: socialaccount/providers/oauth/client.py:197
321 #, python-format
322 msgid "No access to private resources at \"%s\"."
323 msgstr "Ez duzu baliabide pribatuetara sarbiderik: \"%s\"."
324
325 #: templates/account/account_inactive.html:5
326 #: templates/account/account_inactive.html:8
327 msgid "Account Inactive"
328 msgstr "Kontu ez aktiboa"
329
330 #: templates/account/account_inactive.html:10
331 msgid "This account is inactive."
332 msgstr "Kontu hau ez dago aktiboa."
333
334 #: templates/account/email.html:5
335 msgid "Account"
336 msgstr "Kontua"
337
338 #: templates/account/email.html:8
339 msgid "E-mail Addresses"
340 msgstr "Helbide elektronikoak"
341
342 #: templates/account/email.html:10
343 msgid "The following e-mail addresses are associated with your account:"
344 msgstr "Helbide elektroniko hauek zure kontuari lotuta daude:"
345
346 #: templates/account/email.html:24
347 msgid "Verified"
348 msgstr "Egiaztatuta"
349
350 #: templates/account/email.html:26
351 msgid "Unverified"
352 msgstr "Egiaztatu gabe"
353
354 #: templates/account/email.html:28
355 msgid "Primary"
356 msgstr "Nagusia"
357
358 #: templates/account/email.html:34
359 msgid "Make Primary"
360 msgstr "Nagusia egin"
361
362 #: templates/account/email.html:35
363 msgid "Re-send Verification"
364 msgstr "Egiaztapen emaila berbidali"
365
366 #: templates/account/email.html:36 templates/socialaccount/connections.html:35
367 msgid "Remove"
368 msgstr "Ezabatu"
369
370 #: templates/account/email.html:43
371 msgid "Warning:"
372 msgstr "Adi:"
373
374 #: templates/account/email.html:43
375 msgid ""
376 "You currently do not have any e-mail address set up. You should really add "
377 "an e-mail address so you can receive notifications, reset your password, etc."
378 msgstr ""
379 "Oraingoz ez duzu helbide elektronikorik zehaztu. Helbide elektroniko bat "
380 "gehitu beharko zenuke notifikazioak jaso ahal izateko, pasahitza "
381 "berrezartzeko, etab."
382
383 #: templates/account/email.html:48
384 msgid "Add E-mail Address"
385 msgstr "Helbide elektronikoa gehitu"
386
387 #: templates/account/email.html:53
388 msgid "Add E-mail"
389 msgstr "Emaila gehitu"
390
391 #: templates/account/email.html:62
392 msgid "Do you really want to remove the selected e-mail address?"
393 msgstr "Ziur al zaude aukeratutako helbide elektronikoa ezabatu nahi duzula?"
394
395 #: templates/account/email/email_confirmation_message.txt:1
396 #, python-format
397 msgid ""
398 "Hello from %(site_name)s!\n"
399 "\n"
400 "You're receiving this e-mail because user %(user_display)s has given yours "
401 "as an e-mail address to connect their account.\n"
402 "\n"
403 "To confirm this is correct, go to %(activate_url)s\n"
404 msgstr ""
405 "Kaixo %(site_name)s webgunetik!\n"
406 "\n"
407 "Email hau jaso duzu %(user_display)s erabiltzaileak zure helbide "
408 "elektronikoa bere kontuarekin lotu nahi duelako.\n"
409 "\n"
410 "Hau zuzena dela baieztatzeko, egin klik hemen: %(activate_url)s\n"
411
412 #: templates/account/email/email_confirmation_message.txt:7
413 #, python-format
414 msgid ""
415 "Thank you from %(site_name)s!\n"
416 "%(site_domain)s"
417 msgstr ""
418 "Mila esker %(site_name)s-(e)tik!\n"
419 "%(site_domain)s"
420
421 #: templates/account/email/email_confirmation_subject.txt:3
422 msgid "Please Confirm Your E-mail Address"
423 msgstr "Mesedez egiaztatu zure helbide elektronikoa"
424
425 #: templates/account/email/password_reset_key_message.txt:1
426 #, python-format
427 msgid ""
428 "Hello from %(site_name)s!\n"
429 "\n"
430 "You're receiving this e-mail because you or someone else has requested a "
431 "password for your user account.\n"
432 "It can be safely ignored if you did not request a password reset. Click the "
433 "link below to reset your password."
434 msgstr ""
435 "Kaixo %(site_name)s webgunetik!\n"
436 "\n"
437 "Email hau jaso duzu zuk edo beste norbaitek pasahitza berrezartzeko eskaera "
438 "egin duelako zure kontuarentzat.\n"
439 "Eskaera zuk egin ez baduzu mezu hau alde batera utzi dezakezu. Edo egin klik "
440 "ondorengo estekan zure pasahitza berrezartzeko."
441
442 #: templates/account/email/password_reset_key_message.txt:8
443 #, python-format
444 msgid "In case you forgot, your username is %(username)s."
445 msgstr "Ahaztu baduzu, zure erabiltzaile izena %(username)s da."
446
447 #: templates/account/email/password_reset_key_message.txt:10
448 #, python-format
449 msgid ""
450 "Thank you for using %(site_name)s!\n"
451 "%(site_domain)s"
452 msgstr ""
453 "Mila esker %(site_name)s webgunea erabiltzeagatik!\n"
454 "%(site_domain)s"
455
456 #: templates/account/email/password_reset_key_subject.txt:3
457 msgid "Password Reset E-mail"
458 msgstr "Pasahitza berrezartzeko emaila"
459
460 #: templates/account/email_confirm.html:6
461 #: templates/account/email_confirm.html:10
462 msgid "Confirm E-mail Address"
463 msgstr "Helbide elektronikoa egiaztatu"
464
465 #: templates/account/email_confirm.html:16
466 #, python-format
467 msgid ""
468 "Please confirm that <a href=\"mailto:%(email)s\">%(email)s</a> is an e-mail "
469 "address for user %(user_display)s."
470 msgstr ""
471 "Mesedez egiaztatu <a href=\"mailto:%(email)s\">%(email)s</a> "
472 "%(user_display)s erabiltzailearen helbide elektroniko bat dela."
473
474 #: templates/account/email_confirm.html:20
475 msgid "Confirm"
476 msgstr "Egiaztatu"
477
478 #: templates/account/email_confirm.html:27
479 #, python-format
480 msgid ""
481 "This e-mail confirmation link expired or is invalid. Please <a href="
482 "\"%(email_url)s\">issue a new e-mail confirmation request</a>."
483 msgstr ""
484 "Egiaztapen esteka hau iraungirik dago edo baliogabea da. Mesedez eskatu <a "
485 "href=\"%(email_url)s\">egiaztapen email berri bat</a>."
486
487 #: templates/account/login.html:6 templates/account/login.html:10
488 #: templates/account/login.html:43
489 msgid "Sign In"
490 msgstr "Saioa hasi"
491
492 #: templates/account/login.html:15
493 #, python-format
494 msgid ""
495 "Please sign in with one\n"
496 "of your existing third party accounts. Or, <a href=\"%(signup_url)s\">sign "
497 "up</a>\n"
498 "for a %(site_name)s account and sign in below:"
499 msgstr ""
500 "Mesedez hasi saioa lotutako sare sozial kontu bat\n"
501 "erabiliz, edo <a href=\"%(signup_url)s\">sortu kontu bat</a>\n"
502 "%(site_name)s webgunean eta saioa hasi hemen:"
503
504 #: templates/account/login.html:25
505 msgid "or"
506 msgstr "edo"
507
508 #: templates/account/login.html:32
509 #, python-format
510 msgid ""
511 "If you have not created an account yet, then please\n"
512 "<a href=\"%(signup_url)s\">sign up</a> first."
513 msgstr ""
514 "Oraindik kontu bat sortu ez baduzu, mesedez\n"
515 "<a href=\"%(signup_url)s\">sortu kontu bat</a> lehenik."
516
517 #: templates/account/login.html:42
518 msgid "Forgot Password?"
519 msgstr "Pasahitza ahaztu duzu?"
520
521 #: templates/account/logout.html:5 templates/account/logout.html:8
522 #: templates/account/logout.html:17
523 msgid "Sign Out"
524 msgstr "Saioa amaitu"
525
526 #: templates/account/logout.html:10
527 msgid "Are you sure you want to sign out?"
528 msgstr "Ziur al zaude saioa amaitu nahi duzula?"
529
530 #: templates/account/messages/cannot_delete_primary_email.txt:2
531 #, python-format
532 msgid "You cannot remove your primary e-mail address (%(email)s)."
533 msgstr "Ezin duzu zure helbide elektroniko nagusia ezabatu (%(email)s)."
534
535 #: templates/account/messages/email_confirmation_sent.txt:2
536 #, python-format
537 msgid "Confirmation e-mail sent to %(email)s."
538 msgstr "Egiaztapen emaila bidali da %(email)s helbidera."
539
540 #: templates/account/messages/email_confirmed.txt:2
541 #, python-format
542 msgid "You have confirmed %(email)s."
543 msgstr "%(email)s emaila egiaztatu duzu."
544
545 #: templates/account/messages/email_deleted.txt:2
546 #, python-format
547 msgid "Removed e-mail address %(email)s."
548 msgstr "%(email)s helbide elektronikoa ezabatu da."
549
550 #: templates/account/messages/logged_in.txt:4
551 #, python-format
552 msgid "Successfully signed in as %(name)s."
553 msgstr "%(name)s bezala hasi duzu saioa."
554
555 #: templates/account/messages/logged_out.txt:2
556 msgid "You have signed out."
557 msgstr "Saioa amaitu duzu."
558
559 #: templates/account/messages/password_changed.txt:2
560 msgid "Password successfully changed."
561 msgstr "Pasahitza behar bezala aldatu da."
562
563 #: templates/account/messages/password_set.txt:2
564 msgid "Password successfully set."
565 msgstr "Pasahitza behar bezala zehaztu da."
566
567 #: templates/account/messages/primary_email_set.txt:2
568 msgid "Primary e-mail address set."
569 msgstr "Helbide elektroniko nagusia zehaztu da."
570
571 #: templates/account/messages/unverified_primary_email.txt:2
572 msgid "Your primary e-mail address must be verified."
573 msgstr "Zure email nagusiak egiaztatuta egon behar du."
574
575 #: templates/account/password_change.html:5
576 #: templates/account/password_change.html:8
577 #: templates/account/password_change.html:13
578 #: templates/account/password_reset_from_key.html:4
579 #: templates/account/password_reset_from_key.html:7
580 #: templates/account/password_reset_from_key_done.html:4
581 #: templates/account/password_reset_from_key_done.html:7
582 msgid "Change Password"
583 msgstr "Pasahitza aldatu"
584
585 #: templates/account/password_reset.html:6
586 #: templates/account/password_reset.html:10
587 #: templates/account/password_reset_done.html:6
588 #: templates/account/password_reset_done.html:9
589 msgid "Password Reset"
590 msgstr "Pasahitza berrezarri"
591
592 #: templates/account/password_reset.html:15
593 msgid ""
594 "Forgotten your password? Enter your e-mail address below, and we'll send you "
595 "an e-mail allowing you to reset it."
596 msgstr ""
597 "Zure pasahitza ahaztu al duzu? Idatzi zure helbide elektronikoa hemen eta "
598 "pasahitza berrezartzeko email bat bidaliko dizugu."
599
600 #: templates/account/password_reset.html:20
601 msgid "Reset My Password"
602 msgstr "Nire pasahitza berrezarri"
603
604 #: templates/account/password_reset.html:23
605 msgid "Please contact us if you have any trouble resetting your password."
606 msgstr ""
607 "Mesedez jarri gurekin kontaktuan zure pasahitza berrezartzeko arazorik "
608 "baduzu."
609
610 #: templates/account/password_reset_done.html:15
611 msgid ""
612 "We have sent you an e-mail. Please contact us if you do not receive it "
613 "within a few minutes."
614 msgstr ""
615 "Email bat bidali dizugu. Mesedez jarri gurekin kontaktuan hurrengo "
616 "minutuetan jasotzen ez baduzu."
617
618 #: templates/account/password_reset_from_key.html:7
619 msgid "Bad Token"
620 msgstr "Token baliogabea"
621
622 #: templates/account/password_reset_from_key.html:11
623 #, python-format
624 msgid ""
625 "The password reset link was invalid, possibly because it has already been "
626 "used. Please request a <a href=\"%(passwd_reset_url)s\">new password reset</"
627 "a>."
628 msgstr ""
629 "Pasahitza berrezartzeko esteka baliogabea da, beharbada lehendik ere erabili "
630 "delako. Mesedez eskatu <a href=\"%(passwd_reset_url)s\">pasahitza "
631 "berrezartzeko email berri bat</a>."
632
633 #: templates/account/password_reset_from_key.html:17
634 msgid "change password"
635 msgstr "pasahitza aldatu"
636
637 #: templates/account/password_reset_from_key.html:20
638 #: templates/account/password_reset_from_key_done.html:8
639 msgid "Your password is now changed."
640 msgstr "Zure pasahitza aldatuta dago orain."
641
642 #: templates/account/password_set.html:5 templates/account/password_set.html:8
643 #: templates/account/password_set.html:13
644 msgid "Set Password"
645 msgstr "Pasahitza zehaztu"
646
647 #: templates/account/signup.html:5 templates/socialaccount/signup.html:5
648 msgid "Signup"
649 msgstr "Kontua sortu"
650
651 #: templates/account/signup.html:8 templates/account/signup.html:18
652 #: templates/socialaccount/signup.html:8 templates/socialaccount/signup.html:19
653 msgid "Sign Up"
654 msgstr "Kontua sortu"
655
656 #: templates/account/signup.html:10
657 #, python-format
658 msgid ""
659 "Already have an account? Then please <a href=\"%(login_url)s\">sign in</a>."
660 msgstr ""
661 "Lehendik kontu bat sortua duzu? <a href=\"%(login_url)s\">Saioa hasi</a> "
662 "orduan."
663
664 #: templates/account/signup_closed.html:5
665 #: templates/account/signup_closed.html:8
666 msgid "Sign Up Closed"
667 msgstr "Ezin da konturik sortu iada"
668
669 #: templates/account/signup_closed.html:10
670 msgid "We are sorry, but the sign up is currently closed."
671 msgstr "Sentitzen dugu baina ezin da kontu berririk sortu."
672
673 #: templates/account/snippets/already_logged_in.html:5
674 msgid "Note"
675 msgstr "Oharra"
676
677 #: templates/account/snippets/already_logged_in.html:5
678 #, python-format
679 msgid "you are already logged in as %(user_display)s."
680 msgstr "lehendik saioa hasita duzu %(user_display)s bezala."
681
682 #: templates/account/verification_sent.html:5
683 #: templates/account/verification_sent.html:8
684 #: templates/account/verified_email_required.html:5
685 #: templates/account/verified_email_required.html:8
686 msgid "Verify Your E-mail Address"
687 msgstr "Zure helbide elektronikoa egiaztatu"
688
689 #: templates/account/verification_sent.html:10
690 msgid ""
691 "We have sent an e-mail to you for verification. Follow the link provided to "
692 "finalize the signup process. Please contact us if you do not receive it "
693 "within a few minutes."
694 msgstr ""
695 "Email bat bidali dizugu zure helbidea egiaztatzeko. Mesedez egin klik bertan "
696 "aurkituko duzun estekan kontua sortzeko prozesua amaitzeko, edo jarri "
697 "gurekin kontaktuan hurrengo minutuetan emailik jasotzen ez baduzu."
698
699 #: templates/account/verified_email_required.html:12
700 msgid ""
701 "This part of the site requires us to verify that\n"
702 "you are who you claim to be. For this purpose, we require that you\n"
703 "verify ownership of your e-mail address. "
704 msgstr ""
705 "Webguneko atal honek zuk diozuna zarela egiaztatzea\n"
706 "eskatzen digu. Honetarako zure helbide elektronikoa\n"
707 "egiaztatzea beharrezkoa da. "
708
709 #: templates/account/verified_email_required.html:16
710 msgid ""
711 "We have sent an e-mail to you for\n"
712 "verification. Please click on the link inside this e-mail. Please\n"
713 "contact us if you do not receive it within a few minutes."
714 msgstr ""
715 "Email bat bidali dizugu zure helbidea egiaztatzeko.\n"
716 "Mesedez egin klik bertan aurkituko duzun estekan,\n"
717 "edo jarri gurekin kontaktuan hurrengo minutuetan\n"
718 "emailik jasotzen ez baduzu."
719
720 #: templates/account/verified_email_required.html:20
721 #, python-format
722 msgid ""
723 "<strong>Note:</strong> you can still <a href=\"%(email_url)s\">change your e-"
724 "mail address</a>."
725 msgstr ""
726 "<strong>Oharra:</strong> oraindik <a href=\"%(email_url)s\">zure helbide "
727 "elektronikoa aldatu</a> dezakezu."
728
729 #: templates/openid/login.html:9
730 msgid "OpenID Sign In"
731 msgstr "OpenID-rekin sartu"
732
733 #: templates/socialaccount/authentication_error.html:5
734 #: templates/socialaccount/authentication_error.html:8
735 msgid "Social Network Login Failure"
736 msgstr "Arazoak sare sozialarekin logina egitean"
737
738 #: templates/socialaccount/authentication_error.html:10
739 msgid ""
740 "An error occurred while attempting to login via your social network account."
741 msgstr ""
742 "Arazoren bat izan da zure sare sozial kontua erabiltzen saioa hasteko "
743 "ahaleginean."
744
745 #: templates/socialaccount/connections.html:5
746 #: templates/socialaccount/connections.html:8
747 msgid "Account Connections"
748 msgstr "Lotutako kontuak"
749
750 #: templates/socialaccount/connections.html:11
751 msgid ""
752 "You can sign in to your account using any of the following third party "
753 "accounts:"
754 msgstr ""
755 "Ondorengo zerbitzu hauetako edozein erabili dezakezu zure kontuan sartzeko:"
756
757 #: templates/socialaccount/connections.html:43
758 msgid ""
759 "You currently have no social network accounts connected to this account."
760 msgstr "Oraingoz ez duzu sare sozial konturik lotu kontu honekin."
761
762 #: templates/socialaccount/connections.html:46
763 msgid "Add a 3rd Party Account"
764 msgstr "Sare sozial kontu bat gehitu"
765
766 #: templates/socialaccount/login_cancelled.html:5
767 #: templates/socialaccount/login_cancelled.html:9
768 msgid "Login Cancelled"
769 msgstr "Baliogabetutako logina"
770
771 #: templates/socialaccount/login_cancelled.html:13
772 #, python-format
773 msgid ""
774 "You decided to cancel logging in to our site using one of your existing "
775 "accounts. If this was a mistake, please proceed to <a href=\"%(login_url)s"
776 "\">sign in</a>."
777 msgstr ""
778 "Lotutako kontu batekin saioa hasteko saiakera bertan behera utzi duzu. "
779 "Oharkabean gertatu bada, mesedez <a href=\"%(login_url)s\">saioa hasi</a> "
780 "berriro."
781
782 #: templates/socialaccount/messages/account_connected.txt:2
783 msgid "The social account has been connected."
784 msgstr "Sare sozial kontua behar bezala lotu da."
785
786 #: templates/socialaccount/messages/account_connected_other.txt:2
787 msgid "The social account is already connected to a different account."
788 msgstr "Sare sozial kontua dagoeneko beste kontu bati lotuta dago."
789
790 #: templates/socialaccount/messages/account_disconnected.txt:2
791 msgid "The social account has been disconnected."
792 msgstr "Sare sozial kontu honekin lotura ezabatu da."
793
794 #: templates/socialaccount/signup.html:10
795 #, python-format
796 msgid ""
797 "You are about to use your %(provider_name)s account to login to\n"
798 "%(site_name)s. As a final step, please complete the following form:"
799 msgstr ""
800 "Zure %(provider_name)s kontua erabiltzear zaude %(site_name)s\n"
801 "webgunean saioa hasteko. Azken pausu bezala, mesedez osa ezazu\n"
802 "formulario hau:"
55 msgstr ""
66 "Project-Id-Version: \n"
77 "Report-Msgid-Bugs-To: \n"
8 "POT-Creation-Date: 2018-05-08 00:43-0500\n"
8 "POT-Creation-Date: 2018-08-27 05:00-0500\n"
99 "PO-Revision-Date: 2015-09-14 12:40-0000\n"
1010 "Last-Translator: NARIMAN GHARIB <NARIMAN.GH@GMAIL.COM>\n"
1111 "Language-Team: \n"
2727 msgid "A user is already registered with this e-mail address."
2828 msgstr "کاربر دیگری قبلا با این نام کاربری ثبت نام کرده است."
2929
30 #: account/adapter.py:288
30 #: account/adapter.py:294
3131 #, python-brace-format
3232 msgid "Password must be a minimum of {0} characters."
3333 msgstr "پسورد تنها می‌تواند دارای {0} کاراکتر باشد."
77 msgstr ""
88 "Project-Id-Version: PACKAGE VERSION\n"
99 "Report-Msgid-Bugs-To: \n"
10 "POT-Creation-Date: 2018-05-08 00:43-0500\n"
10 "POT-Creation-Date: 2018-08-27 05:00-0500\n"
1111 "PO-Revision-Date: 2015-08-13 15:17+0300\n"
1212 "Last-Translator: Anonymous User <seppo.erviala@iki.fi>\n"
1313 "Language-Team: LANGUAGE <LL@li.org>\n"
3131 msgid "A user is already registered with this e-mail address."
3232 msgstr "Tämä sähköpostiosoite on jo käytössä."
3333
34 #: account/adapter.py:288
34 #: account/adapter.py:294
3535 #, python-brace-format
3636 msgid "Password must be a minimum of {0} characters."
3737 msgstr "Salasanan tulee olla vähintään {0} merkkiä pitkä."
88 msgstr ""
99 "Project-Id-Version: django-allauth\n"
1010 "Report-Msgid-Bugs-To: \n"
11 "POT-Creation-Date: 2018-05-08 00:43-0500\n"
11 "POT-Creation-Date: 2018-08-27 05:00-0500\n"
1212 "PO-Revision-Date: 2016-10-06 15:16+0200\n"
1313 "Last-Translator: Steve Kossouho <steve.kossouho@yahoo.fr>\n"
1414 "Language-Team: français <>\n"
3232 msgid "A user is already registered with this e-mail address."
3333 msgstr "Un autre utilisateur utilise déjà cette adresse e-mail."
3434
35 #: account/adapter.py:288
35 #: account/adapter.py:294
3636 #, python-brace-format
3737 msgid "Password must be a minimum of {0} characters."
3838 msgstr "Le mot de passe doit contenir au minimum {0} caractères."
66 msgstr ""
77 "Project-Id-Version: 0.1\n"
88 "Report-Msgid-Bugs-To: \n"
9 "POT-Creation-Date: 2018-05-08 00:43-0500\n"
9 "POT-Creation-Date: 2018-08-27 05:00-0500\n"
1010 "PO-Revision-Date: 2017-08-26 16:11+0300\n"
1111 "Last-Translator: Udi Oron <udioron@gmail.com>\n"
1212 "Language-Team: Hebrew\n"
2929 msgid "A user is already registered with this e-mail address."
3030 msgstr "משתמש אחר כבר רשום עם כתובת אימייל זו."
3131
32 #: account/adapter.py:288
32 #: account/adapter.py:294
3333 #, python-brace-format
3434 msgid "Password must be a minimum of {0} characters."
3535 msgstr "הסיסמה חייבת להיות באורך של לפחות {0} תווים."
99 msgstr ""
1010 "Project-Id-Version: PACKAGE VERSION\n"
1111 "Report-Msgid-Bugs-To: \n"
12 "POT-Creation-Date: 2018-05-08 00:43-0500\n"
12 "POT-Creation-Date: 2018-08-27 05:00-0500\n"
1313 "PO-Revision-Date: 2014-08-12 00:31+0200\n"
1414 "Last-Translator: <goran.cetusic@gmail.com>\n"
1515 "Language-Team: Bojan Mihelac <bmihelac@mihelac.org>\n"
3434 msgid "A user is already registered with this e-mail address."
3535 msgstr "Već postoji korisnik registriran s ovom e-mail adresom."
3636
37 #: account/adapter.py:288
37 #: account/adapter.py:294
3838 #, python-brace-format
3939 msgid "Password must be a minimum of {0} characters."
4040 msgstr "Lozinka treba imati najmanje {0} znakova."
66 msgstr ""
77 "Project-Id-Version: \n"
88 "Report-Msgid-Bugs-To: \n"
9 "POT-Creation-Date: 2018-05-08 00:43-0500\n"
9 "POT-Creation-Date: 2018-08-27 05:00-0500\n"
1010 "PO-Revision-Date: 2015-05-08 22:42+0100\n"
1111 "Last-Translator: Tamás Makó <tom@greenplug.hu>\n"
1212 "Language-Team: \n"
2828 msgid "A user is already registered with this e-mail address."
2929 msgstr "Egy felhasználó már regisztrált ezzel az email címmel."
3030
31 #: account/adapter.py:288
31 #: account/adapter.py:294
3232 #, python-brace-format
3333 msgid "Password must be a minimum of {0} characters."
3434 msgstr "A jelszónak minimum {0} hosszúnak kell lennnie."
99 msgstr ""
1010 "Project-Id-Version: django-allauth\n"
1111 "Report-Msgid-Bugs-To: \n"
12 "POT-Creation-Date: 2018-05-08 00:43-0500\n"
12 "POT-Creation-Date: 2018-08-27 05:00-0500\n"
1313 "PO-Revision-Date: 2018-03-08 00:40+0100\n"
1414 "Last-Translator: joke2k <joke2k@gmail.com>\n"
1515 "Language-Team: Italian (http://www.transifex.com/projects/p/django-allauth/"
3232 msgid "A user is already registered with this e-mail address."
3333 msgstr "Un altro utente si è già registrato con questo indirizzo e-mail."
3434
35 #: account/adapter.py:288
35 #: account/adapter.py:294
3636 #, python-brace-format
3737 msgid "Password must be a minimum of {0} characters."
3838 msgstr "La password deve essere lunga almeno {0} caratteri."
77 msgstr ""
88 "Project-Id-Version: PACKAGE VERSION\n"
99 "Report-Msgid-Bugs-To: \n"
10 "POT-Creation-Date: 2018-05-08 00:43-0500\n"
10 "POT-Creation-Date: 2018-08-27 05:00-0500\n"
1111 "PO-Revision-Date: 2014-08-12 00:32+0200\n"
1212 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313 "Language-Team: LANGUAGE <LL@li.org>\n"
2929 msgid "A user is already registered with this e-mail address."
3030 msgstr "他のユーザーがこのメールアドレスを使用しています。"
3131
32 #: account/adapter.py:288
32 #: account/adapter.py:294
3333 #, python-brace-format
3434 msgid "Password must be a minimum of {0} characters."
3535 msgstr "パスワードは {0} 文字以上の長さが必要です。"
77 msgstr ""
88 "Project-Id-Version: PACKAGE VERSION\n"
99 "Report-Msgid-Bugs-To: \n"
10 "POT-Creation-Date: 2018-05-08 00:43-0500\n"
10 "POT-Creation-Date: 2018-08-27 05:00-0500\n"
1111 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
1212 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313 "Language-Team: LANGUAGE <LL@li.org>\n"
2929 msgid "A user is already registered with this e-mail address."
3030 msgstr "해당 이메일은 이미 사용되고 있습니다."
3131
32 #: account/adapter.py:288
32 #: account/adapter.py:294
3333 #, python-brace-format
3434 msgid "Password must be a minimum of {0} characters."
3535 msgstr "비밀번호는 최소 {0}자 이상이어야 합니다."
66 msgstr ""
77 "Project-Id-Version: PACKAGE VERSION\n"
88 "Report-Msgid-Bugs-To: \n"
9 "POT-Creation-Date: 2018-05-08 00:43-0500\n"
9 "POT-Creation-Date: 2018-08-27 05:00-0500\n"
1010 "PO-Revision-Date: 2016-07-20 22:24+0600\n"
1111 "Last-Translator: Murat Jumashev <jumasheff at gmail dot com>\n"
1212 "Language-Team: LANGUAGE <LL@li.org>\n"
2828 msgid "A user is already registered with this e-mail address."
2929 msgstr "Мындай эмейл менен катталган колдонуучу бар."
3030
31 #: account/adapter.py:288
31 #: account/adapter.py:294
3232 #, python-brace-format
3333 msgid "Password must be a minimum of {0} characters."
3434 msgstr "Купуя жок дегенде {0} белгиден турушу керек."
77 msgstr ""
88 "Project-Id-Version: PACKAGE VERSION\n"
99 "Report-Msgid-Bugs-To: \n"
10 "POT-Creation-Date: 2018-05-08 00:43-0500\n"
10 "POT-Creation-Date: 2018-08-27 05:00-0500\n"
1111 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
1212 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313 "Language-Team: LANGUAGE <LL@li.org>\n"
3131 msgid "A user is already registered with this e-mail address."
3232 msgstr "Šiuo el. pašto adresu jau yra užsiregistravęs kitas naudotojas."
3333
34 #: account/adapter.py:288
34 #: account/adapter.py:294
3535 #, python-brace-format
3636 msgid "Password must be a minimum of {0} characters."
3737 msgstr "Slaptažodis turi būti sudarytas mažiausiai iš {0} simbolių."
77 msgstr ""
88 "Project-Id-Version: PACKAGE VERSION\n"
99 "Report-Msgid-Bugs-To: \n"
10 "POT-Creation-Date: 2018-05-08 00:43-0500\n"
10 "POT-Creation-Date: 2018-08-27 05:00-0500\n"
1111 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
1212 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313 "Language-Team: LANGUAGE <LL@li.org>\n"
3232 msgid "A user is already registered with this e-mail address."
3333 msgstr "Lietotājs ar šādu e-pasta adresi jau ir reģistrēts."
3434
35 #: account/adapter.py:288
35 #: account/adapter.py:294
3636 #, python-brace-format
3737 msgid "Password must be a minimum of {0} characters."
3838 msgstr "Parolei jābūt vismaz {0} simbolus garai."
77 msgstr ""
88 "Project-Id-Version: django-allauth\n"
99 "Report-Msgid-Bugs-To: \n"
10 "POT-Creation-Date: 2018-05-08 00:43-0500\n"
10 "POT-Creation-Date: 2018-08-27 05:00-0500\n"
1111 "PO-Revision-Date: 2016-07-25 15:18+0200\n"
1212 "Last-Translator: pennersr <raymond.penners@intenct.nl>\n"
1313 "Language-Team: Dutch (http://www.transifex.com/projects/p/django-allauth/"
3030 msgid "A user is already registered with this e-mail address."
3131 msgstr "Er is al een gebruiker geregistreerd met dit e-mailadres."
3232
33 #: account/adapter.py:288
33 #: account/adapter.py:294
3434 #, python-brace-format
3535 msgid "Password must be a minimum of {0} characters."
3636 msgstr "Het wachtwoord moet minimaal {0} tekens bevatten."
77 msgstr ""
88 "Project-Id-Version: PACKAGE VERSION\n"
99 "Report-Msgid-Bugs-To: \n"
10 "POT-Creation-Date: 2018-05-08 00:43-0500\n"
10 "POT-Creation-Date: 2018-08-27 05:00-0500\n"
1111 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
1212 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313 "Language-Team: LANGUAGE <LL@li.org>\n"
2828 msgid "A user is already registered with this e-mail address."
2929 msgstr "En bruker med følgende e-postadresse er allerede registrert."
3030
31 #: account/adapter.py:288
31 #: account/adapter.py:294
3232 #, python-brace-format
3333 msgid "Password must be a minimum of {0} characters."
3434 msgstr "Passordet må være minst {0} tegn."
55 msgstr ""
66 "Project-Id-Version: \n"
77 "Report-Msgid-Bugs-To: \n"
8 "POT-Creation-Date: 2018-05-08 00:43-0500\n"
8 "POT-Creation-Date: 2018-08-27 05:00-0500\n"
99 "PO-Revision-Date: 2016-12-05 10:43+0100\n"
1010 "Last-Translator: Adam Dobrawy <naczelnik@jawnosc.tk>\n"
1111 "Language-Team: \n"
2727 msgid "A user is already registered with this e-mail address."
2828 msgstr "W systemie jest już zarejestrowany użytkownik o tym adresie e-mail."
2929
30 #: account/adapter.py:288
30 #: account/adapter.py:294
3131 #, python-brace-format
3232 msgid "Password must be a minimum of {0} characters."
3333 msgstr "Hasło musi składać się minimalnie z {0} znaków."
1010 msgstr ""
1111 "Project-Id-Version: django-allauth\n"
1212 "Report-Msgid-Bugs-To: \n"
13 "POT-Creation-Date: 2018-05-08 00:43-0500\n"
13 "POT-Creation-Date: 2018-08-27 05:00-0500\n"
1414 "PO-Revision-Date: 2014-12-01 01:20+0000\n"
1515 "Last-Translator: cacarrara <caiocarrara@gmail.com>\n"
1616 "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/"
3333 msgid "A user is already registered with this e-mail address."
3434 msgstr "Um usuário já foi registado com este endereço de e-mail."
3535
36 #: account/adapter.py:288
36 #: account/adapter.py:294
3737 #, python-brace-format
3838 msgid "Password must be a minimum of {0} characters."
3939 msgstr "A senha deve ter no mínimo {0} caracteres."
66 msgstr ""
77 "Project-Id-Version: django-allauth\n"
88 "Report-Msgid-Bugs-To: \n"
9 "POT-Creation-Date: 2018-05-08 00:43-0500\n"
9 "POT-Creation-Date: 2018-08-27 05:00-0500\n"
1010 "PO-Revision-Date: 2014-08-12 00:33+0200\n"
1111 "Last-Translator: Jannis Š\n"
1212 "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/"
2929 msgid "A user is already registered with this e-mail address."
3030 msgstr "Um utilizador já foi registado com este endereço de e-mail."
3131
32 #: account/adapter.py:288
32 #: account/adapter.py:294
3333 #, python-brace-format
3434 msgid "Password must be a minimum of {0} characters."
3535 msgstr "A palavra-passe deve ter no mínimo {0} caracteres."
66 msgstr ""
77 "Project-Id-Version: \n"
88 "Report-Msgid-Bugs-To: \n"
9 "POT-Creation-Date: 2018-05-08 00:43-0500\n"
9 "POT-Creation-Date: 2018-08-27 05:00-0500\n"
1010 "PO-Revision-Date: 2017-04-05 22:48+0300\n"
1111 "Last-Translator: \n"
1212 "Language-Team: \n"
2828 msgid "A user is already registered with this e-mail address."
2929 msgstr "Пользователь с таким e-mail адресом уже зарегистрирован."
3030
31 #: account/adapter.py:288
31 #: account/adapter.py:294
3232 #, python-brace-format
3333 msgid "Password must be a minimum of {0} characters."
3434 msgstr "Минимальное количество символов в пароле: {0}."
66 msgstr ""
77 "Project-Id-Version: \n"
88 "Report-Msgid-Bugs-To: \n"
9 "POT-Creation-Date: 2018-05-08 00:43-0500\n"
9 "POT-Creation-Date: 2018-08-27 05:00-0500\n"
1010 "PO-Revision-Date: 2017-04-26 12:48+0200\n"
1111 "Last-Translator: Tomas Babej <tomasbabej@gmail.com>\n"
1212 "Language-Team: \n"
2828 msgid "A user is already registered with this e-mail address."
2929 msgstr "Používateľ s touto e-mailovou adresou už existuje."
3030
31 #: account/adapter.py:288
31 #: account/adapter.py:294
3232 #, python-brace-format
3333 msgid "Password must be a minimum of {0} characters."
3434 msgstr "Heslo musí mať aspoň {0} znakov."
66 msgstr ""
77 "Project-Id-Version: django-allauth\n"
88 "Report-Msgid-Bugs-To: \n"
9 "POT-Creation-Date: 2018-05-08 00:43-0500\n"
9 "POT-Creation-Date: 2018-08-27 05:00-0500\n"
1010 "PO-Revision-Date: 2014-08-12 00:35+0200\n"
1111 "Last-Translator: Jannis Š\n"
1212 "Language-Team: Swedish (http://www.transifex.com/projects/p/django-allauth/"
2929 msgid "A user is already registered with this e-mail address."
3030 msgstr "En användare är redan registrerad med den här epost-adressen"
3131
32 #: account/adapter.py:288
32 #: account/adapter.py:294
3333 #, python-brace-format
3434 msgid "Password must be a minimum of {0} characters."
3535 msgstr "Lösenordet måste vara minst {0} tecken långt"
99 msgstr ""
1010 "Project-Id-Version: django-allauth\n"
1111 "Report-Msgid-Bugs-To: \n"
12 "POT-Creation-Date: 2018-05-08 00:43-0500\n"
12 "POT-Creation-Date: 2018-08-27 05:00-0500\n"
1313 "PO-Revision-Date: 2015-06-26 13:09+0700\n"
1414 "Last-Translator: Nattaphoom Chaipreecha <attomos@gmail.com>\n"
1515 "Language-Team: Thai <LL@li.org>\n"
3131 msgid "A user is already registered with this e-mail address."
3232 msgstr "ชื่อผู้ใช้ได้ถูกลงทะเบียนด้วยอีเมลนี้แล้ว"
3333
34 #: account/adapter.py:288
34 #: account/adapter.py:294
3535 #, python-brace-format
3636 msgid "Password must be a minimum of {0} characters."
3737 msgstr "รหัสผ่านต้องมีอย่างน้อย {0} ตัวอักษร"
77 msgstr ""
88 "Project-Id-Version: django-allauth\n"
99 "Report-Msgid-Bugs-To: \n"
10 "POT-Creation-Date: 2018-05-08 00:43-0500\n"
10 "POT-Creation-Date: 2018-08-27 05:00-0500\n"
1111 "PO-Revision-Date: 2014-08-12 00:35+0200\n"
1212 "Last-Translator: Jannis Š\n"
1313 "Language-Team: Turkish (http://www.transifex.com/projects/p/django-allauth/"
3030 msgid "A user is already registered with this e-mail address."
3131 msgstr "Bu e-posta adresiyle bir kullanıcı zaten kayıtlı."
3232
33 #: account/adapter.py:288
33 #: account/adapter.py:294
3434 #, python-brace-format
3535 msgid "Password must be a minimum of {0} characters."
3636 msgstr "Parola en az {0} karakter olmalıdır."
175175
176176 #: account/models.py:83
177177 msgid "created"
178 msgstr ""
178 msgstr "oluşturuldu"
179179
180180 #: account/models.py:85
181181 msgid "sent"
182 msgstr ""
182 msgstr "gönderildi"
183183
184184 #: account/models.py:86 socialaccount/models.py:55
185185 msgid "key"
217217
218218 #: socialaccount/models.py:43 socialaccount/models.py:77
219219 msgid "provider"
220 msgstr ""
220 msgstr "sağlayıcı"
221221
222222 #: socialaccount/models.py:46
223223 #, fuzzy
258258
259259 #: socialaccount/models.py:98
260260 msgid "last login"
261 msgstr ""
261 msgstr "son giriş"
262262
263263 #: socialaccount/models.py:100
264264 msgid "date joined"
265 msgstr ""
265 msgstr "katıldığı tarih"
266266
267267 #: socialaccount/models.py:102
268268 msgid "extra data"
306306
307307 #: socialaccount/providers/douban/views.py:36
308308 msgid "Invalid profile data"
309 msgstr ""
309 msgstr "Geçersiz profil bilgisi"
310310
311311 #: socialaccount/providers/oauth/client.py:78
312312 #, python-format
427427 "Thank you from %(site_name)s!\n"
428428 "%(site_domain)s"
429429 msgstr ""
430 "%(site_name)s: Teşekkürler!\n"
431 "%(site_domain)s"
430432
431433 #: templates/account/email/email_confirmation_subject.txt:3
432434 #, fuzzy
531533 #: templates/account/logout.html:5 templates/account/logout.html:8
532534 #: templates/account/logout.html:17
533535 msgid "Sign Out"
534 msgstr ""
536 msgstr "Çıkış Yap"
535537
536538 #: templates/account/logout.html:10
537539 msgid "Are you sure you want to sign out?"
538 msgstr ""
540 msgstr "Çıkış yapmak istediğinize emin misiniz?"
539541
540542 #: templates/account/messages/cannot_delete_primary_email.txt:2
541543 #, python-format
545547 #: templates/account/messages/email_confirmation_sent.txt:2
546548 #, python-format
547549 msgid "Confirmation e-mail sent to %(email)s."
548 msgstr ""
550 msgstr "Doğrulama e-posta'sı %(email)s adresine gönderildi."
549551
550552 #: templates/account/messages/email_confirmed.txt:2
551553 #, python-format
555557 #: templates/account/messages/email_deleted.txt:2
556558 #, python-format
557559 msgid "Removed e-mail address %(email)s."
558 msgstr ""
560 msgstr "%(email)s adresini sildiniz."
559561
560562 #: templates/account/messages/logged_in.txt:4
561563 #, python-format
562564 msgid "Successfully signed in as %(name)s."
563 msgstr ""
565 msgstr "%(name)s olarak başarıyla giriş yapıldı."
564566
565567 #: templates/account/messages/logged_out.txt:2
566568 msgid "You have signed out."
627629
628630 #: templates/account/password_reset_from_key.html:7
629631 msgid "Bad Token"
630 msgstr "Kötü kod"
632 msgstr ""
631633
632634 #: templates/account/password_reset_from_key.html:11
633635 #, python-format
674676 #: templates/account/signup_closed.html:5
675677 #: templates/account/signup_closed.html:8
676678 msgid "Sign Up Closed"
677 msgstr ""
679 msgstr "Kayıt Kapalı"
678680
679681 #: templates/account/signup_closed.html:10
680682 msgid "We are sorry, but the sign up is currently closed."
77 msgstr ""
88 "Project-Id-Version: PACKAGE VERSION\n"
99 "Report-Msgid-Bugs-To: \n"
10 "POT-Creation-Date: 2018-05-08 00:43-0500\n"
10 "POT-Creation-Date: 2018-08-27 05:00-0500\n"
1111 "PO-Revision-Date: 2014-08-12 00:36+0200\n"
1212 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313 "Language-Team: LANGUAGE <LL@li.org>\n"
3232 msgid "A user is already registered with this e-mail address."
3333 msgstr "Користувач з такою e-mail адресою уже зареєстрований."
3434
35 #: account/adapter.py:288
35 #: account/adapter.py:294
3636 #, python-brace-format
3737 msgid "Password must be a minimum of {0} characters."
3838 msgstr "Пароль повинен містити мінімум {0} символів."
66 msgstr ""
77 "Project-Id-Version: django-allauth\n"
88 "Report-Msgid-Bugs-To: \n"
9 "POT-Creation-Date: 2018-05-08 00:43-0500\n"
9 "POT-Creation-Date: 2018-08-27 05:00-0500\n"
1010 "PO-Revision-Date: 2014-08-12 00:36+0200\n"
1111 "Last-Translator: jresins <jresins@gmail.com>\n"
1212 "Language-Team: LANGUAGE <LL@li.org>\n"
2727 msgid "A user is already registered with this e-mail address."
2828 msgstr "此e-mail地址已被其他用户注册。"
2929
30 #: account/adapter.py:288
30 #: account/adapter.py:294
3131 #, python-brace-format
3232 msgid "Password must be a minimum of {0} characters."
3333 msgstr "密码长度不得少于 {0} 个字符。"
77 msgstr ""
88 "Project-Id-Version: PACKAGE VERSION\n"
99 "Report-Msgid-Bugs-To: \n"
10 "POT-Creation-Date: 2018-05-08 00:43-0500\n"
10 "POT-Creation-Date: 2018-08-27 05:00-0500\n"
1111 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
1212 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313 "Language-Team: LANGUAGE <LL@li.org>\n"
2929 msgid "A user is already registered with this e-mail address."
3030 msgstr "此e-mail地址已被其他用户注册。"
3131
32 #: account/adapter.py:288
32 #: account/adapter.py:294
3333 #, python-brace-format
3434 msgid "Password must be a minimum of {0} characters."
3535 msgstr "密码长度不得少于 {0} 个字符。"
445445 "It can be safely ignored if you did not request a password reset. Click the "
446446 "link below to reset your password."
447447 msgstr ""
448 "您收到此邮件表示您或者他人在网站 %(site_domain)s上为您的账号请求了密码重"
449 "置。\n"
448 "您收到此邮件表示您或者他人在网站 %(site_name)s上为您的账号请求了密码重置。\n"
450449 "若您未请求密码重置,可以直接忽略此邮件。如要重置密码,请点击下面的链接。"
451450
452451 #: templates/account/email/password_reset_key_message.txt:8
77 msgstr ""
88 "Project-Id-Version: PACKAGE VERSION\n"
99 "Report-Msgid-Bugs-To: \n"
10 "POT-Creation-Date: 2018-05-08 00:43-0500\n"
10 "POT-Creation-Date: 2018-08-27 05:00-0500\n"
1111 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
1212 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313 "Language-Team: LANGUAGE <LL@li.org>\n"
2929 msgid "A user is already registered with this e-mail address."
3030 msgstr "已經有人使用這一個電子郵件註冊了。"
3131
32 #: account/adapter.py:288
32 #: account/adapter.py:294
3333 #, python-brace-format
3434 msgid "Password must be a minimum of {0} characters."
3535 msgstr "密碼長度至少要有 {0} 個字元。"
55 msgstr ""
66 "Project-Id-Version: django-allauth\n"
77 "Report-Msgid-Bugs-To: \n"
8 "POT-Creation-Date: 2018-05-08 00:43-0500\n"
8 "POT-Creation-Date: 2018-08-27 05:00-0500\n"
99 "PO-Revision-Date: 2014-08-12 00:36+0200\n"
1010 "Last-Translator: jresins <jresins@gmail.com>\n"
1111 "Language-Team: Chinese (Traditional)\n"
2626 msgid "A user is already registered with this e-mail address."
2727 msgstr "已經有人使用這一個電子郵件註冊了。"
2828
29 #: account/adapter.py:288
29 #: account/adapter.py:294
3030 #, python-brace-format
3131 msgid "Password must be a minimum of {0} characters."
3232 msgstr "密碼長度至少要有 {0} 個字元。"
0 from allauth.socialaccount.providers.base import ProviderAccount
1 from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider
2
3
4 class AgaveAccount(ProviderAccount):
5
6 def get_profile_url(self):
7 return self.account.extra_data.get('web_url', 'dflt')
8
9 def get_avatar_url(self):
10 return self.account.extra_data.get('avatar_url', 'dflt')
11
12 def to_str(self):
13 dflt = super(AgaveAccount, self).to_str()
14 return self.account.extra_data.get('name', dflt)
15
16
17 class AgaveProvider(OAuth2Provider):
18 id = 'agave'
19 name = 'Agave'
20 account_class = AgaveAccount
21
22 def extract_uid(self, data):
23 return str(data.get('create_time'))
24
25 def extract_common_fields(self, data):
26 return dict(
27 email=data.get('email'),
28 username=data.get('username'),
29 name=(data.get('first_name') + ' ' + data.get('last_name')),
30 )
31
32 def get_default_scope(self):
33 scope = ['PRODUCTION']
34 return scope
35
36
37 provider_classes = [AgaveProvider]
0 from allauth.socialaccount.tests import OAuth2TestsMixin
1 from allauth.tests import MockedResponse, TestCase
2
3 from .provider import AgaveProvider
4
5
6 class AgaveTests(OAuth2TestsMixin, TestCase):
7 provider_id = AgaveProvider.id
8
9 def get_mocked_response(self):
10 return MockedResponse(200, """
11 {
12 "status": "success",
13 "message": "User details retrieved successfully.",
14 "version": "2.0.0-SNAPSHOT-rc3fad",
15 "result": {
16 "first_name": "John",
17 "last_name": "Doe",
18 "full_name": "John Doe",
19 "email": "jon@doe.edu",
20 "phone": "",
21 "mobile_phone": "",
22 "status": "Active",
23 "create_time": "20180322043812Z",
24 "username": "jdoe"
25 }
26 }
27 """)
0 from allauth.socialaccount.providers.agave.provider import AgaveProvider
1 from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns
2
3
4 urlpatterns = default_urlpatterns(AgaveProvider)
0 import requests
1
2 from allauth.socialaccount.providers.agave.provider import AgaveProvider
3 from allauth.socialaccount.providers.oauth2.views import (
4 OAuth2Adapter,
5 OAuth2CallbackView,
6 OAuth2LoginView,
7 )
8
9
10 class AgaveAdapter(OAuth2Adapter):
11 provider_id = AgaveProvider.id
12 provider_default_url = 'https://public.agaveapi.co/'
13 provider_api_version = 'v2'
14
15 provider_base_url = 'https://public.agaveapi.co'
16
17 access_token_url = '{0}/token'.format(provider_base_url)
18 authorize_url = '{0}/authorize'.format(provider_base_url)
19 profile_url = '{0}/profiles/v2/me'.format(provider_base_url)
20
21 def complete_login(self, request, app, token, response):
22 extra_data = requests.get(self.profile_url, params={
23 'access_token': token.token
24 }, headers={
25 'Authorization': 'Bearer ' + token.token,
26 })
27
28 return self.get_provider().sociallogin_from_response(
29 request,
30 extra_data.json()['result']
31 )
32
33
34 oauth2_login = OAuth2LoginView.adapter_view(AgaveAdapter)
35 oauth2_callback = OAuth2CallbackView.adapter_view(AgaveAdapter)
1717 name = 'Auth0'
1818 account_class = Auth0Account
1919
20 def get_default_scope(self):
21 return ['openid', 'profile', 'email']
22
2023 def extract_uid(self, data):
2124 return str(data['id'])
2225
1212 "picture": "https://secure.gravatar.com/avatar/123",
1313 "email": "mr.bob@your.Auth0.server.example.com",
1414 "id": 2,
15 "user_id": 2,
15 "sub": 2,
1616 "identities": [],
1717 "name": "Mr Bob"
1818 }
2525 'access_token': token.token
2626 }).json()
2727 extra_data = {
28 'user_id': extra_data['user_id'],
29 'id': extra_data['user_id'],
28 'user_id': extra_data['sub'],
29 'id': extra_data['sub'],
3030 'name': extra_data['name'],
3131 'email': extra_data['email']
3232 }
3636
3737 def extract_common_fields(self, data):
3838 email = data.get('mail')
39 if not email and 'userPrincipalName' in data:
40 email = data.get('userPrincipalName')
3941 return dict(email=email,
4042 username=email,
4143 last_name=data.get('surname'),
33
44 class BaiduAccount(ProviderAccount):
55 def get_profile_url(self):
6 return (
7 'https://openapi.baidu.com'
8 '/rest/2.0/passport/users/getLoggedInUser')
6 return "http://www.baidu.com/p/" + self.account.extra_data.get('uname')
97
108 def get_avatar_url(self):
119 return (
2121 )
2222
2323 from .provider import BattleNetProvider
24
25
26 class Region:
27 APAC = "apac"
28 CN = "cn"
29 EU = "eu"
30 KR = "kr"
31 SEA = "sea"
32 TW = "tw"
33 US = "us"
2434
2535
2636 def _check_errors(response):
6676 Can be any of eu, us, kr, sea, tw or cn
6777 """
6878 provider_id = BattleNetProvider.id
69 valid_regions = ("us", "eu", "kr", "sea", "tw", "cn")
79 valid_regions = (
80 Region.APAC,
81 Region.CN,
82 Region.EU,
83 Region.KR,
84 Region.SEA,
85 Region.TW,
86 Region.US,
87 )
7088
7189 @property
7290 def battlenet_region(self):
7391 region = self.request.GET.get("region", "").lower()
74 if region == "sea":
92 if region == Region.SEA:
7593 # South-East Asia uses the same region as US everywhere
76 return "us"
94 return Region.US
7795 if region in self.valid_regions:
7896 return region
79 return "us"
97 return Region.US
8098
8199 @property
82100 def battlenet_base_url(self):
83101 region = self.battlenet_region
84 if region == "cn":
102 if region == Region.CN:
85103 return "https://www.battlenet.com.cn"
86104 return "https://%s.battle.net" % (region)
87105
0 from allauth.socialaccount.providers.base import ProviderAccount
1 from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider
2
3
4 class CernAccount(ProviderAccount):
5 def to_str(self):
6 dflt = super(CernAccount, self).to_str()
7 return self.account.extra_data.get('name', dflt)
8
9
10 class CernProvider(OAuth2Provider):
11 id = 'cern'
12 name = 'Cern'
13 account_class = CernAccount
14
15 def get_auth_params(self, request, action):
16 data = super(CernProvider, self).get_auth_params(request, action)
17 data['scope'] = 'read:user'
18 return data
19
20 def extract_uid(self, data):
21 return str(data.get('id'))
22
23 def extract_common_fields(self, data):
24 return dict(
25 email=data.get('email'),
26 username=data.get('username'),
27 first_name=data.get('first_name'),
28 last_name=data.get('last_name'),
29 name=data.get('name')
30 )
31
32
33 provider_classes = [CernProvider]
0 from allauth.socialaccount.tests import OAuth2TestsMixin
1 from allauth.tests import MockedResponse, TestCase
2
3 from .provider import CernProvider
4
5
6 class CernTests(OAuth2TestsMixin, TestCase):
7 provider_id = CernProvider.id
8
9 def get_mocked_response(self):
10 return MockedResponse(200, """
11 {
12 "name":"Max Mustermann",
13 "username":"mmuster",
14 "id":8173921,
15 "personid":924225,
16 "email":"max.mustermann@cern.ch",
17 "first_name":"Max",
18 "last_name":"Mustermann",
19 "identityclass":"CERN Registered",
20 "federation":"CERN",
21 "phone":null,
22 "mobile":null
23 }
24 """)
0 from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns
1
2 from .provider import CernProvider
3
4
5 urlpatterns = default_urlpatterns(CernProvider)
0 import requests
1
2 from allauth.socialaccount.providers.oauth2.views import (
3 OAuth2Adapter,
4 OAuth2CallbackView,
5 OAuth2LoginView,
6 )
7
8 from .provider import CernProvider
9
10
11 class CernOAuth2Adapter(OAuth2Adapter):
12 provider_id = CernProvider.id
13 access_token_url = 'https://oauth.web.cern.ch/OAuth/Token'
14 authorize_url = 'https://oauth.web.cern.ch/OAuth/Authorize'
15 profile_url = 'https://oauthresource.web.cern.ch/api/User'
16 groups_url = 'https://oauthresource.web.cern.ch/api/Groups'
17
18 supports_state = False
19 redirect_uri_protocol = 'https'
20
21 def complete_login(self, request, app, token, **kwargs):
22 headers = {'Authorization': 'Bearer {0}'.format(token.token)}
23 user_response = requests.get(self.profile_url, headers=headers)
24 groups_response = requests.get(self.groups_url, headers=headers)
25 extra_data = user_response.json()
26 extra_data.update(groups_response.json())
27 return self.get_provider().sociallogin_from_response(request,
28 extra_data)
29
30
31 oauth2_login = OAuth2LoginView.adapter_view(CernOAuth2Adapter)
32 oauth2_callback = OAuth2CallbackView.adapter_view(CernOAuth2Adapter)
0 from allauth.account.models import EmailAddress
1 from allauth.socialaccount.app_settings import QUERY_EMAIL
2 from allauth.socialaccount.providers.base import ProviderAccount
3 from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider
4
5
6 class DisqusAccount(ProviderAccount):
7 def get_profile_url(self):
8 return self.account.extra_data.get('profileUrl')
9
10 def get_avatar_url(self):
11 return self.account.extra_data.get('avatar', {}).get('permalink')
12
13 def to_str(self):
14 dflt = super(DisqusAccount, self).to_str()
15 return self.account.extra_data.get('name', dflt)
16
17
18 class DisqusProvider(OAuth2Provider):
19 id = 'disqus'
20 name = 'Disqus'
21 account_class = DisqusAccount
22
23 def get_default_scope(self):
24 scope = ['read']
25 if QUERY_EMAIL:
26 scope += ['email']
27 return scope
28
29 def extract_uid(self, data):
30 return str(data['id'])
31
32 def extract_common_fields(self, data):
33 return {
34 'username': data.get('username'),
35 'email': data.get('email'),
36 'name': data.get('name'),
37 }
38
39 def extract_email_addresses(self, data):
40 ret = []
41 email = data.get('email')
42 if email:
43 ret.append(EmailAddress(email=email, verified=True, primary=True))
44 return ret
45
46
47 provider_classes = [DisqusProvider]
0 # -*- coding: utf-8 -*-
1 from __future__ import absolute_import, unicode_literals
2
3 from django.contrib.auth.models import User
4 from django.test.utils import override_settings
5
6 from allauth.account import app_settings as account_settings
7 from allauth.account.models import EmailAddress
8 from allauth.socialaccount.models import SocialAccount
9 from allauth.socialaccount.tests import OAuth2TestsMixin
10 from allauth.tests import MockedResponse, TestCase
11
12 from .provider import DisqusProvider
13
14
15 @override_settings(
16 SOCIALACCOUNT_AUTO_SIGNUP=True,
17 ACCOUNT_SIGNUP_FORM_CLASS=None,
18 ACCOUNT_EMAIL_VERIFICATION=account_settings
19 .EmailVerificationMethod.MANDATORY)
20 class DisqusTests(OAuth2TestsMixin, TestCase):
21 provider_id = DisqusProvider.id
22
23 def get_mocked_response(self,
24 name='Raymond Penners',
25 email="raymond.penners@example.com"):
26 return MockedResponse(200, """
27 {"response": {"name": "%s",
28 "avatar": {
29 "permalink": "https://lh5.googleusercontent.com/photo.jpg"
30 },
31 "email": "%s",
32 "profileUrl": "https://plus.google.com/108204268033311374519",
33 "id": "108204268033311374519" }}
34 """ % (name, email))
35
36 def test_account_connect(self):
37 email = "user@example.com"
38 user = User.objects.create(username='user',
39 is_active=True,
40 email=email)
41 user.set_password('test')
42 user.save()
43 EmailAddress.objects.create(user=user,
44 email=email,
45 primary=True,
46 verified=True)
47 self.client.login(username=user.username,
48 password='test')
49 self.login(self.get_mocked_response(), process='connect')
50 # Check if we connected...
51 self.assertTrue(SocialAccount.objects.filter(
52 user=user,
53 provider=DisqusProvider.id).exists())
54 # For now, we do not pick up any new e-mail addresses on connect
55 self.assertEqual(EmailAddress.objects.filter(user=user).count(), 1)
56 self.assertEqual(EmailAddress.objects.filter(
57 user=user,
58 email=email).count(), 1)
0 from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns
1
2 from .provider import DisqusProvider
3
4
5 urlpatterns = default_urlpatterns(DisqusProvider)
0 import requests
1
2 from allauth.socialaccount.providers.oauth2.views import (
3 OAuth2Adapter,
4 OAuth2CallbackView,
5 OAuth2LoginView,
6 )
7
8 from .provider import DisqusProvider
9
10
11 class DisqusOAuth2Adapter(OAuth2Adapter):
12 provider_id = DisqusProvider.id
13 access_token_url = 'https://disqus.com/api/oauth/2.0/access_token/'
14 authorize_url = 'https://disqus.com/api/oauth/2.0/authorize/'
15 profile_url = 'https://disqus.com/api/3.0/users/details.json'
16 scope_delimiter = ','
17
18 def complete_login(self, request, app, token, **kwargs):
19 resp = requests.get(self.profile_url, params={
20 'access_token': token.token,
21 'api_key': app.client_id,
22 'api_secret': app.secret})
23 resp.raise_for_status()
24
25 extra_data = resp.json().get('response')
26
27 login = self.get_provider()\
28 .sociallogin_from_response(request, extra_data)
29 return login
30
31
32 oauth2_login = OAuth2LoginView.adapter_view(DisqusOAuth2Adapter)
33 oauth2_callback = OAuth2CallbackView.adapter_view(DisqusOAuth2Adapter)
1010 return MockedResponse(200, """
1111 {
1212 "avatar_url": "https://secure.gravatar.com/avatar/123",
13 "bio": "",
14 "can_create_group": "true",
15 "can_create_project": "true",
16 "color_scheme_id": 2,
17 "created_at": "2015-12-14T23:40:33+0100",
18 "current_sign_in_at": "2015-12-14T23:40:33+0100",
13 "bio": null,
14 "can_create_group": true,
15 "can_create_project": true,
16 "color_scheme_id": 5,
17 "confirmed_at": "2015-03-02T16:53:58.370Z",
18 "created_at": "2015-03-02T16:53:58.885Z",
19 "current_sign_in_at": "2018-06-12T18:44:49.985Z",
1920 "email": "mr.bob@gitlab.example.com",
21 "external": false,
2022 "id": 2,
2123 "identities": [],
22 "is_admin": "false",
24 "last_activity_on": "2018-06-11",
25 "last_sign_in_at": "2018-05-31T14:59:44.527Z",
2326 "linkedin": "",
27 "location": null,
2428 "name": "Mr Bob",
25 "private_token": "123",
29 "organization": null,
2630 "projects_limit": 10,
27 "skype": "mr.bob",
31 "shared_runners_minutes_limit": 2000,
32 "skype": "",
2833 "state": "active",
2934 "theme_id": 6,
3035 "twitter": "mrbob",
31 "two_factor_enabled": "false",
36 "two_factor_enabled": true,
3237 "username": "mr.bob",
3338 "web_url": "https://gitlab.example.com/u/mr.bob",
34 "website_url": "https://example.com"
39 "website_url": ""
3540 }
3641 """)
1212 class GitLabOAuth2Adapter(OAuth2Adapter):
1313 provider_id = GitLabProvider.id
1414 provider_default_url = 'https://gitlab.com'
15 provider_api_version = 'v3'
15 provider_api_version = 'v4'
1616
1717 settings = app_settings.PROVIDERS.get(provider_id, {})
1818 provider_base_url = settings.get('GITLAB_URL', provider_default_url)
0 from allauth.socialaccount import app_settings
1 from allauth.socialaccount.providers.base import ProviderAccount
2 from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider
3
4
5 class GlobusAccount(ProviderAccount):
6
7 def get_profile_url(self):
8 return self.account.extra_data.get('web_url', 'dflt')
9
10 def get_avatar_url(self):
11 return self.account.extra_data.get('avatar_url', 'dflt')
12
13 def to_str(self):
14 dflt = super(GlobusAccount, self).to_str()
15 return self.account.extra_data.get('name', dflt)
16
17
18 class GlobusProvider(OAuth2Provider):
19 id = 'globus'
20 name = 'Globus'
21 account_class = GlobusAccount
22
23 def extract_uid(self, data):
24 return str(data.get('create_time'))
25
26 def extract_common_fields(self, data):
27 return dict(
28 email=data.get('email'),
29 username=data.get('preferred_username'),
30 name=data.get('name'),
31 )
32
33 def get_default_scope(self):
34 scope = ['openid', 'profile', 'offline_access']
35 if app_settings.QUERY_EMAIL:
36 scope.append('email')
37 return scope
38
39
40 provider_classes = [GlobusProvider]
0 from django.test.utils import override_settings
1
2 from allauth.socialaccount.tests import OAuth2TestsMixin
3 from allauth.tests import MockedResponse, TestCase
4
5 from .provider import GlobusProvider
6
7
8 class GlobusTests(OAuth2TestsMixin, TestCase):
9 provider_id = GlobusProvider.id
10
11 @override_settings(SOCIALACCOUNT_QUERY_EMAIL=True)
12 def get_mocked_response(self):
13 return MockedResponse(200, """
14 {
15 "identity_provider_display_name": "University of Gozorpazorp",
16 "sub": "a6fc81e-4a6c1-97ac-b4c6-84ff6a8ce662",
17 "preferred_username": "morty@ugz.edu",
18 "identity_provider": "9a4c8312f-9432-9a7c-1654-6a987c6531fa",
19 "organization": "University of Gozorpazorp",
20 "email": "morty@ugz.edu",
21 "name": "Morty Smith"
22 }
23 """)
0 from allauth.socialaccount.providers.globus.provider import GlobusProvider
1 from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns
2
3
4 urlpatterns = default_urlpatterns(GlobusProvider)
0 import requests
1
2 from allauth.socialaccount.providers.globus.provider import GlobusProvider
3 from allauth.socialaccount.providers.oauth2.views import (
4 OAuth2Adapter,
5 OAuth2CallbackView,
6 OAuth2LoginView,
7 )
8
9
10 class GlobusAdapter(OAuth2Adapter):
11 provider_id = GlobusProvider.id
12 provider_default_url = 'https://auth.globus.org/v2/oauth2'
13
14 provider_base_url = 'https://auth.globus.org/v2/oauth2'
15
16 access_token_url = '{0}/token'.format(provider_base_url)
17 authorize_url = '{0}/authorize'.format(provider_base_url)
18 profile_url = '{0}/userinfo'.format(provider_base_url)
19
20 def complete_login(self, request, app, token, response):
21 extra_data = requests.get(self.profile_url, params={
22 'access_token': token.token
23 }, headers={
24 'Authorization': 'Bearer ' + token.token,
25 })
26
27 return self.get_provider().sociallogin_from_response(
28 request,
29 extra_data.json()
30 )
31
32
33 oauth2_login = OAuth2LoginView.adapter_view(GlobusAdapter)
34 oauth2_callback = OAuth2CallbackView.adapter_view(GlobusAdapter)
5757 return fields
5858
5959 def get_default_scope(self):
60 scope = []
60 scope = ['r_basicprofile']
6161 if app_settings.QUERY_EMAIL:
6262 scope.append('r_emailaddress')
6363 return scope
1010
1111 class LinkedInOAuth2Adapter(OAuth2Adapter):
1212 provider_id = LinkedInOAuth2Provider.id
13 access_token_url = 'https://api.linkedin.com/uas/oauth2/accessToken'
14 authorize_url = 'https://www.linkedin.com/uas/oauth2/authorization'
13 access_token_url = 'https://www.linkedin.com/oauth/v2/accessToken'
14 authorize_url = 'https://www.linkedin.com/oauth/v2/authorization'
1515 profile_url = 'https://api.linkedin.com/v1/people/~'
1616 # See:
1717 # http://developer.linkedin.com/forum/unauthorized-invalid-or-expired-token-immediately-after-receiving-oauth2-token?page=1 # noqa
2525 def get_user_info(self, token):
2626 fields = self.get_provider().get_profile_fields()
2727 url = self.profile_url + ':(%s)?format=json' % ','.join(fields)
28 resp = requests.get(url, params={'oauth2_access_token': token.token})
28 headers = {}
29 headers.update(self.get_provider().get_settings().get('HEADERS', {}))
30 headers['Authorization'] = ' '.join(['Bearer', token.token])
31 resp = requests.get(url, headers=headers)
2932 resp.raise_for_status()
3033 return resp.json()
3134
0 from allauth.account.models import EmailAddress
01 from allauth.socialaccount.providers.base import ProviderAccount
12 from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider
23
1819 def extract_uid(self, data):
1920 return str(data['id'])
2021
22 def extract_common_fields(self, data):
23 email = data.get("email")
24 return dict(email=email)
25
26 def extract_email_addresses(self, data):
27 ret = []
28 email = data.get("email")
29 if email:
30 ret.append(EmailAddress(email=email, verified=True, primary=True))
31 return ret
32
2133
2234 provider_classes = [NaverProvider]
7272 auth=auth)
7373
7474 access_token = None
75 if resp.status_code == 200:
75 if resp.status_code in [200, 201]:
7676 # Weibo sends json via 'text/plain;charset=UTF-8'
7777 if (resp.headers['content-type'].split(
7878 ';')[0] == 'application/json' or resp.text[:2] == '{"'):
3434 )
3535 if form.is_valid():
3636 client = _openid_consumer(request)
37 provider = OpenIDProvider(request)
38 realm = provider.get_settings().get(
39 'REALM',
40 request.build_absolute_uri('/'))
3741 try:
3842 auth_request = client.begin(form.cleaned_data['openid'])
3943 if QUERY_EMAIL:
5761 auth_request.addExtension(ax)
5862 callback_url = reverse(callback)
5963 SocialLogin.stash_state(request)
60 # https://github.com/pennersr/django-allauth/issues/1523
61 auth_request.return_to_args['next'] = \
62 form.cleaned_data.get('next', '/')
64 # Fix for issues 1523 and 2072 (github django-allauth)
65 if 'next' in form.cleaned_data and form.cleaned_data['next']:
66 auth_request.return_to_args['next'] = \
67 form.cleaned_data['next']
6368 redirect_url = auth_request.redirectURL(
64 request.build_absolute_uri('/'),
69 realm,
6570 request.build_absolute_uri(callback_url))
6671 return HttpResponseRedirect(redirect_url)
6772 # UnicodeDecodeError:
0 """
1 Provider for Patreon
2 """
3 from allauth.socialaccount.providers.base import ProviderAccount
4 from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider
5
6
7 class VimeoOAuth2Account(ProviderAccount):
8 pass
9
10
11 class VimeoOAuth2Provider(OAuth2Provider):
12 id = 'vimeo_oauth2'
13 name = 'Vimeo'
14 account_class = VimeoOAuth2Account
15
16 def get_default_scope(self):
17 return ['public', 'private']
18
19 def extract_uid(self, data):
20 return data.get('uri').split('/')[-1]
21
22 def extract_common_fields(self, data):
23 return {
24 'fullname': data.get('name'),
25 }
26
27
28 provider_classes = [VimeoOAuth2Provider]
0 from allauth.socialaccount.tests import OAuth2TestsMixin
1 from allauth.tests import MockedResponse, TestCase
2
3 from .provider import VimeoOAuth2Provider
4
5
6 class VimeoOAuth2Tests(OAuth2TestsMixin, TestCase):
7 provider_id = VimeoOAuth2Provider.id
8
9 def get_mocked_response(self):
10 return MockedResponse(200, """{
11 "uri": "/users/12345",
12 "name": "AllAuth",
13 "link": "https://vimeo.com/user12345",
14 "created_time": "2012-06-04T00:02:16+00:00",
15 "pictures": {
16 "uri": null,
17 "active": false,
18 "type": "default",
19 "sizes": [{
20 "width": 30,
21 "height": 30,
22 "link": "https://i.vimeocdn.com/portrait/defaults-blue_30x30.png"
23 }],
24 "resource_key": "1234567890abcdef"
25 },
26 "resource_key": "1234567890abcdef",
27 "account": "pro"
28 }""") # noqa
0 """URLs for Patreon Provider"""
1
2 from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns
3
4 from .provider import VimeoOAuth2Provider
5
6
7 urlpatterns = default_urlpatterns(VimeoOAuth2Provider)
0 """
1 Views for PatreonProvider
2 https://www.patreon.com/platform/documentation/oauth
3 """
4
5 import requests
6
7 from allauth.socialaccount.providers.oauth2.views import (
8 OAuth2Adapter,
9 OAuth2CallbackView,
10 OAuth2LoginView,
11 )
12
13 from .provider import VimeoOAuth2Provider
14
15
16 class VimeoOAuth2Adapter(OAuth2Adapter):
17 provider_id = VimeoOAuth2Provider.id
18 access_token_url = 'https://api.vimeo.com/oauth/access_token'
19 authorize_url = 'https://api.vimeo.com/oauth/authorize'
20 profile_url = 'https://api.vimeo.com/me/'
21
22 def complete_login(self, request, app, token, **kwargs):
23 resp = requests.get(self.profile_url,
24 headers={'Authorization': 'Bearer ' + token.token})
25 extra_data = resp.json()
26 return self.get_provider().sociallogin_from_response(request,
27 extra_data)
28
29
30 oauth2_login = OAuth2LoginView.adapter_view(VimeoOAuth2Adapter)
31 oauth2_callback = OAuth2CallbackView.adapter_view(VimeoOAuth2Adapter)
1111 <div>
1212 <strong>Messages:</strong>
1313 <ul>
14 {% for message in messages %}
15 <li>{{message}}</li>
16 {% endfor %}
14 {% for message in messages %}
15 <li>{{message}}</li>
16 {% endfor %}
1717 </ul>
1818 </div>
1919 {% endif %}
2121 <div>
2222 <strong>Menu:</strong>
2323 <ul>
24 {% if user.is_authenticated %}
25 <li><a href="{% url 'account_email' %}">Change E-mail</a></li>
26 <li><a href="{% url 'account_logout' %}">Sign Out</a></li>
27 {% else %}
28 <li><a href="{% url 'account_login' %}">Sign In</a></li>
29 <li><a href="{% url 'account_signup' %}">Sign Up</a></li>
30 {% endif %}
24 {% if user.is_authenticated %}
25 <li><a href="{% url 'account_email' %}">Change E-mail</a></li>
26 <li><a href="{% url 'account_logout' %}">Sign Out</a></li>
27 {% else %}
28 <li><a href="{% url 'account_login' %}">Sign In</a></li>
29 <li><a href="{% url 'account_signup' %}">Sign Up</a></li>
30 {% endif %}
3131 </ul>
3232 </div>
3333 {% block content %}
00 Metadata-Version: 1.1
11 Name: django-allauth
2 Version: 0.36.0
2 Version: 0.38.0
33 Summary: Integrated set of Django applications addressing authentication, registration, account management as well as 3rd party (social) account authentication.
44 Home-page: http://github.com/pennersr/django-allauth
55 Author: Raymond Penners
109109 Classifier: Framework :: Django
110110 Classifier: Framework :: Django :: 1.11
111111 Classifier: Framework :: Django :: 2.0
112 Classifier: Framework :: Django :: 2.1
3939 allauth/locale/ar/LC_MESSAGES/django.po
4040 allauth/locale/cs/LC_MESSAGES/django.mo
4141 allauth/locale/cs/LC_MESSAGES/django.po
42 allauth/locale/da/LC_MESSAGES/django.mo
43 allauth/locale/da/LC_MESSAGES/django.po
4244 allauth/locale/de/LC_MESSAGES/django.mo
4345 allauth/locale/de/LC_MESSAGES/django.po
4446 allauth/locale/el/LC_MESSAGES/django.mo
4749 allauth/locale/en/LC_MESSAGES/django.po
4850 allauth/locale/es/LC_MESSAGES/django.mo
4951 allauth/locale/es/LC_MESSAGES/django.po
52 allauth/locale/eu/LC_MESSAGES/django.mo
53 allauth/locale/eu/LC_MESSAGES/django.po
5054 allauth/locale/fa/LC_MESSAGES/django.mo
5155 allauth/locale/fa/LC_MESSAGES/django.po
5256 allauth/locale/fi/LC_MESSAGES/django.mo
120124 allauth/socialaccount/migrations/__init__.py
121125 allauth/socialaccount/providers/__init__.py
122126 allauth/socialaccount/providers/base.py
127 allauth/socialaccount/providers/agave/__init__.py
128 allauth/socialaccount/providers/agave/provider.py
129 allauth/socialaccount/providers/agave/tests.py
130 allauth/socialaccount/providers/agave/urls.py
131 allauth/socialaccount/providers/agave/views.py
123132 allauth/socialaccount/providers/amazon/__init__.py
124133 allauth/socialaccount/providers/amazon/provider.py
125134 allauth/socialaccount/providers/amazon/tests.py
189198 allauth/socialaccount/providers/box/tests.py
190199 allauth/socialaccount/providers/box/urls.py
191200 allauth/socialaccount/providers/box/views.py
201 allauth/socialaccount/providers/cern/__init__.py
202 allauth/socialaccount/providers/cern/provider.py
203 allauth/socialaccount/providers/cern/tests.py
204 allauth/socialaccount/providers/cern/urls.py
205 allauth/socialaccount/providers/cern/views.py
192206 allauth/socialaccount/providers/coinbase/__init__.py
193207 allauth/socialaccount/providers/coinbase/provider.py
194208 allauth/socialaccount/providers/coinbase/tests.py
216230 allauth/socialaccount/providers/discord/tests.py
217231 allauth/socialaccount/providers/discord/urls.py
218232 allauth/socialaccount/providers/discord/views.py
233 allauth/socialaccount/providers/disqus/__init__.py
234 allauth/socialaccount/providers/disqus/provider.py
235 allauth/socialaccount/providers/disqus/tests.py
236 allauth/socialaccount/providers/disqus/urls.py
237 allauth/socialaccount/providers/disqus/views.py
219238 allauth/socialaccount/providers/douban/__init__.py
220239 allauth/socialaccount/providers/douban/provider.py
221240 allauth/socialaccount/providers/douban/tests.py
309328 allauth/socialaccount/providers/gitlab/tests.py
310329 allauth/socialaccount/providers/gitlab/urls.py
311330 allauth/socialaccount/providers/gitlab/views.py
331 allauth/socialaccount/providers/globus/__init__.py
332 allauth/socialaccount/providers/globus/provider.py
333 allauth/socialaccount/providers/globus/tests.py
334 allauth/socialaccount/providers/globus/urls.py
335 allauth/socialaccount/providers/globus/views.py
312336 allauth/socialaccount/providers/google/__init__.py
313337 allauth/socialaccount/providers/google/provider.py
314338 allauth/socialaccount/providers/google/tests.py
520544 allauth/socialaccount/providers/vimeo/tests.py
521545 allauth/socialaccount/providers/vimeo/urls.py
522546 allauth/socialaccount/providers/vimeo/views.py
547 allauth/socialaccount/providers/vimeo_oauth2/__init__.py
548 allauth/socialaccount/providers/vimeo_oauth2/models.py
549 allauth/socialaccount/providers/vimeo_oauth2/provider.py
550 allauth/socialaccount/providers/vimeo_oauth2/test.py
551 allauth/socialaccount/providers/vimeo_oauth2/urls.py
552 allauth/socialaccount/providers/vimeo_oauth2/views.py
523553 allauth/socialaccount/providers/vk/__init__.py
524554 allauth/socialaccount/providers/vk/provider.py
525555 allauth/socialaccount/providers/vk/tests.py
611641 docs/configuration.rst
612642 docs/decorators.rst
613643 docs/faq.rst
644 docs/forms.rst
614645 docs/index.rst
615646 docs/installation.rst
616647 docs/overview.rst
129129 confirmation) can be altered by providing your own
130130 templates. Templates are named as follows::
131131
132 account/email/email_confirmation_signup_subject.txt
133 account/email/email_confirmation_signup_message.txt
134
132135 account/email/email_confirmation_subject.txt
133136 account/email/email_confirmation_message.txt
134137
135138 In case you want to include an HTML representation, add an HTML
136139 template as follows::
137140
141 account/email/email_confirmation_signup_message.html
142
138143 account/email/email_confirmation_message.html
139144
140145 The project does not contain any HTML email templates out of the box.
129129 ACCOUNT_LOGOUT_ON_PASSWORD_CHANGE (=False)
130130 Determines whether or not the user is automatically logged out after
131131 changing or setting their password. See documentation for
132 `Django's session invalidation on password change <https://docs.djangoproject.com/en/1.8/topics/auth/default/#session-invalidation-on-password-change>`_.
132 `Django's session invalidation on password change <https://docs.djangoproject.com/en/stable/topics/auth/default/#session-invalidation-on-password-change>`_.
133133
134134 ACCOUNT_LOGIN_ON_PASSWORD_RESET (=False)
135135 By changing this setting to ``True``, users will automatically be logged in
0 Forms
1 =====
2
3 The following forms can be overridden as needed.
4
5 - Add extra fields for extra required information
6 - Override save to add extra functionality on save
7
8 Overriding Save
9 ---------------
10
11 If you decide to add fields to a form, you will need to
12 manually save the custom fields data.
13
14 ACCOUNT_FORMS
15 =============
16
17 Default Settings::
18
19 ACCOUNT_FORMS = {
20 'login': 'allauth.account.forms.LoginForm',
21 'signup': 'allauth.account.forms.SignupForm',
22 'add_email': 'allauth.account.forms.AddEmailForm',
23 'change_password': 'allauth.account.forms.ChangePasswordForm',
24 'set_password': 'allauth.account.forms.SetPasswordForm',
25 'reset_password': 'allauth.account.forms.ResetPasswordForm',
26 'reset_password_from_key': 'allauth.account.forms.ResetPasswordKeyForm',
27 }
28
29 login (``allauth.account.forms.LoginForm``)
30 -------------------------------------------
31
32 Used on `account_login <views.html#login-account-login>`__ view.
33
34 ``save`` is not called, you need to override ``login``
35 ::
36
37 from allauth.account.forms import LoginForm
38 class MyCustomLoginForm(LoginForm):
39
40 def login(self, *args, **kwargs):
41
42 # Add your own processing here.
43
44 # You must return the original result.
45 return super(MyCustomLoginForm, self).login(*args, **kwargs)
46
47 You have access to the following:
48
49 - ``self.user`` is the User object that is logging in.
50
51 ``settings.py``::
52
53 ACCOUNT_FORMS = {'login': 'mysite.forms.MyCustomLoginForm'}
54
55 signup (``allauth.account.forms.SignupForm``)
56 ---------------------------------------------
57
58 Used on `account_signup <views.html#signup-account-signup>`__ view.
59
60 ::
61
62 from allauth.account.forms import SignupForm
63 class MyCustomSignupForm(SignupForm):
64
65 def save(self, request):
66
67 # Ensure you call the parent classes save.
68 # .save() returns a User object.
69 user = super(MyCustomSignupForm, self).save(request)
70
71 # Add your own processing here.
72
73 # You must return the original result.
74 return user
75
76 ``settings.py``::
77
78 ACCOUNT_FORMS = {'signup': 'mysite.forms.MyCustomSignupForm'}
79
80 add_email (``allauth.account.forms.AddEmailForm``)
81 --------------------------------------------------
82
83 Used on `account_email <views.html#e-mails-management-account-email>`__ view.
84
85 ::
86
87 from allauth.account.forms import AddEmailForm
88 class MyCustomAddEmailForm(AddEmailForm):
89
90 def save(self):
91
92 # Ensure you call the parent classes save.
93 # .save() returns a allauth.account.models.EmailAddress object.
94 email_address_obj = super(MyCustomAddEmailForm, self).save()
95
96 # Add your own processing here.
97
98 # You must return the original result.
99 return email_address_obj
100
101 You have access to the following:
102
103 - ``self.user`` is the User object that is logged in.
104
105 ``settings.py``::
106
107 ACCOUNT_FORMS = {'add_email': 'mysite.forms.MyCustomAddEmailForm'}
108
109 change_password (``allauth.account.forms.ChangePasswordForm``)
110 --------------------------------------------------------------
111
112 Used on `account_change_password <views.html#password-management>`__ view.
113
114 ::
115
116 from allauth.account.forms import ChangePasswordForm
117 class MyCustomChangePasswordForm(ChangePasswordForm):
118
119 def save(self):
120
121 # Ensure you call the parent classes save
122 # .save() does not return anything
123 super(MyCustomChangePasswordForm, self).save()
124
125 # Add your own processing here.
126
127 You have access to the following:
128
129 - ``self.user`` is the User object that is logged in.
130
131 ``settings.py``::
132
133 ACCOUNT_FORMS = {'change_password': 'mysite.forms.MyCustomChangePasswordForm'}
134
135 set_password (``allauth.account.forms.SetPasswordForm``)
136 --------------------------------------------------------
137
138 Used on `account_set_password <views.html#password-management>`__ view.
139
140 ::
141
142 from allauth.account.forms import SetPasswordForm
143 class MyCustomSetPasswordForm(SetPasswordForm):
144
145 def save(self):
146
147 # Ensure you call the parent classes save
148 # .save() does not return anything
149 super(MyCustomSetPasswordForm, self).save()
150
151 # Add your own processing here.
152
153 You have access to the following:
154
155 - ``self.user`` is the User object that is logged in.
156
157 ``settings.py``::
158
159 ACCOUNT_FORMS = {'set_password': 'mysite.forms.MyCustomSetPasswordForm'}
160
161 reset_password (``allauth.account.forms.ResetPasswordForm``)
162 ------------------------------------------------------------
163
164 Used on `account_reset_password <views.html#password-reset-account-reset-password>`__ view.
165
166 ::
167
168 from allauth.account.forms import ResetPasswordForm
169 class MyCustomSetPasswordForm(ResetPasswordForm):
170
171 def save(self):
172
173 # Ensure you call the parent classes save
174 # .save() returns a string containing the email address supplied
175 email_address = super(MyCustomResetPasswordForm, self).save()
176
177 # Add your own processing here.
178
179 # Ensure you return the original result
180 return email_address
181
182 You have access to the following:
183
184 - ``self.users`` is a list of all possible User objects with matching email address
185
186 ``settings.py``::
187
188 ACCOUNT_FORMS = {'reset_password': 'mysite.forms.MyCustomResetPasswordForm'}
189
190 reset_password_from_key (``allauth.account.forms.ResetPasswordKeyForm``)
191 ------------------------------------------------------------------------
192
193 Used on `account_reset_password <views.html#password-reset-account-reset-password>`__ view.
194
195 ::
196
197 from allauth.account.forms import ResetPasswordKeyForm
198 class MyCustomResetPasswordKeyForm(ResetPasswordKeyForm):
199
200 def save(self):
201
202 # Add your own processing here.
203
204 # Ensure you call the parent classes save
205 # .save() does not return anything
206 super(MyCustomResetPasswordKeyForm, self).save()
207
208 You have access to the following:
209
210 - ``self.user`` is the User object
211
212 ``settings.py``::
213
214 ACCOUNT_FORMS = {'reset_password_from_key': 'mysite.forms.MyCustomResetPasswordKeyForm'}
215
216 SOCIALACCOUNT_FORMS
217 ===================
218
219 Default Settings::
220
221 SOCIALACCOUNT_FORMS = {
222 'login': 'allauth.socialaccount.forms.DisconnectForm',
223 'signup': 'allauth.socialaccount.forms.SignupForm',
224 }
225
226 signup (``allauth.socialaccount.forms.SignupForm``)
227 ---------------------------------------------------
228
229 Used on socialaccount_signup view used when someone initially signs up
230 with a social account and needs to create an account.
231
232 ::
233
234 from allauth.socialaccount.forms import SignupForm
235 class MyCustomSocialSignupForm(SignupForm):
236
237 def save(self):
238
239 # Ensure you call the parent classes save.
240 # .save() returns a User object.
241 user = super(MyCustomSocialSignupForm, self).save()
242
243 # Add your own processing here.
244
245 # You must return the original result.
246 return user
247
248 You have access to the following:
249
250 - ``self.socialaccount``
251
252 ``settings.py``::
253
254 SOCIALACCOUNT_FORMS = {'signup': 'mysite.forms.MyCustomSocialSignupForm'}
255
256 disconnect (``allauth.socialaccount.forms.DisconnectForm``)
257 -----------------------------------------------------------
258
259 Used on socialaccount_connections view, used when removing a social account.
260
261 ::
262
263 from allauth.socialaccount.forms import DisconnectForm
264 class MyCustomSocialDisconnectForm(DisconnectForm):
265
266 def save(self):
267
268 # Add your own processing here if you do need access to the
269 # socialaccount being deleted.
270
271 # Ensure you call the parent classes save.
272 # .save() does not return anything
273 super(MyCustomSocialDisconnectForm, self).save()
274
275 # Add your own processing here if you don't need access to the
276 # socialaccount being deleted.
277
278 You have access to the following:
279
280 - ``self.request`` is the request object
281 - ``self.accounts`` is a list containing all of the users SocialAccount objects.
282 - ``self.cleaned_data['account']`` contains the socialaccount being deleted. .save()
283 issues the delete so if you need access to the socialaccount beforehand, move your
284 code before .save()
285
286 ``settings.py``::
287
288 SOCIALACCOUNT_FORMS = {'disconnect': 'mysite.forms.MyCustomSocialDisconnectForm'}
1414 providers
1515 signals
1616 views
17 forms
1718 templates
1819 decorators
1920 advanced
4040 ...
4141 # The following apps are required:
4242 'django.contrib.auth',
43 'django.contrib.messages',
4344 'django.contrib.sites',
4445
4546 'allauth',
4647 'allauth.account',
4748 'allauth.socialaccount',
4849 # ... include the providers you want to enable:
50 'allauth.socialaccount.providers.agave',
4951 'allauth.socialaccount.providers.amazon',
5052 'allauth.socialaccount.providers.angellist',
5153 'allauth.socialaccount.providers.asana',
5658 'allauth.socialaccount.providers.bitbucket',
5759 'allauth.socialaccount.providers.bitbucket_oauth2',
5860 'allauth.socialaccount.providers.bitly',
61 'allauth.socialaccount.providers.cern',
5962 'allauth.socialaccount.providers.coinbase',
6063 'allauth.socialaccount.providers.dataporten',
6164 'allauth.socialaccount.providers.daum',
6265 'allauth.socialaccount.providers.digitalocean',
6366 'allauth.socialaccount.providers.discord',
67 'allauth.socialaccount.providers.disqus',
6468 'allauth.socialaccount.providers.douban',
6569 'allauth.socialaccount.providers.draugiem',
6670 'allauth.socialaccount.providers.dropbox',
108112 'allauth.socialaccount.providers.twitter',
109113 'allauth.socialaccount.providers.untappd',
110114 'allauth.socialaccount.providers.vimeo',
115 'allauth.socialaccount.providers.vimeo_oauth2',
111116 'allauth.socialaccount.providers.vk',
112117 'allauth.socialaccount.providers.weibo',
113118 'allauth.socialaccount.providers.weixin',
33 Requirements
44 ------------
55
6 - Python 2.7, 3.3, 3.4, or 3.5
7
8 - Django (1.10+)
6 - Python 2.7, 3.3, 3.4, 3.5 or 3.6
7
8 - Django (1.11+)
99
1010 - python-openid or python3-openid (depending on your Python version)
1111
3636
3737 - 500px
3838
39 - AgaveAPI (OAuth2)
40
3941 - Amazon (OAuth2)
4042
4143 - AngelList (OAuth2)
6062
6163 - Box (OAuth2)
6264
65 - CERN (OAuth2)
66
6367 - Dataporten (OAuth2)
6468
6569 - Daum (OAuth2)
6670
6771 - Douban (OAuth2)
6872
73 - Disqus (OAuth2)
74
6975 - Doximity (OAuth2)
7076
7177 - Dropbox (OAuth, OAuth2)
9298
9399 - GitLab (OAuth2)
94100
101 - Globus (OAuth2)
102
95103 - Google (OAuth2)
96104
97105 - Hubic (OAuth2)
158166
159167 - Untappd (OAuth2)
160168
161 - Vimeo (OAuth)
169 - Vimeo (OAuth, OAuth2)
162170
163171 - VK (OAuth2)
164172
4242 Development callback URL
4343 http://localhost:8000/accounts/500px/login/callback/
4444
45
46 AgaveAPI
47 --------
48
49 Account Signup
50 https://public.agaveapi.co/create_account
51
52 App registration
53 Run ``client-create`` from the cli: https://bitbucket.org/agaveapi/cli/overview
54
55 Development callback URL
56 http://localhost:8000/accounts/agave/login/callback/
57 *May require https url, even for localhost*
4558
4659 Amazon
4760 ------
177190 http://localhost:8000/accounts/box/login/callback/
178191
179192
193 CERN
194 ----
195 App registration (get your key and secret here)
196 https://sso-management.web.cern.ch/OAuth/RegisterOAuthClient.aspx
197
198 CERN OAuth2 Documentation
199 https://espace.cern.ch/authentication/CERN%20Authentication/OAuth.aspx
200
201
180202 Dataporten
181203 ----------
182
183204 App registration (get your key and secret here)
184205 https://docs.dataporten.no/docs/gettingstarted/
185206
643664 }
644665
645666
667 Globus
668 ------
669
670 Registering an application:
671 https://developers.globus.org/
672
673 By default, you will have access to the openid, profile, and offline_access
674 scopes. With the offline_access scope, the API will provide you with a
675 refresh token. For additional scopes, see the Globus API docs:
676 https://docs.globus.org/api/auth/reference/
677
678 .. code-block:: python
679
680 SOCIALACCOUNT_PROVIDERS = {
681 'globus': {
682 'SCOPE': [
683 'openid',
684 'profile',
685 'email',
686 'urn:globus:auth:scope:transfer.api.globus.org:all'
687 ]
688 }
689 }
690
691
692
646693 Google
647694 ------
648695
755802 SOCIALACCOUNT_PROVIDERS = {
756803 'linkedin': {
757804 'SCOPE': [
758 'r_emailaddress',
805 'r_basicprofile',
806 'r_emailaddress'
759807 ],
760808 'PROFILE_FIELDS': [
761809 'id',
782830 fetching the access token::
783831
784832 missing required parameters, includes an invalid parameter value, parameter more then once. : Unable to retrieve access token : authorization code not found
833
834 If you are using tokens originating from the mobile SDK, you will need to specify
835 additional headers:
836
837 .. code-block:: python
838
839 SOCIALACCOUNT_PROVIDERS = {
840 'linkedin': {
841 'HEADERS': {
842 'x-li-src': 'msdk'
843 }
844 }
845 }
785846
786847 App registration (get your key and secret here)
787848 https://www.linkedin.com/secure/developer?newapp=
13741435 https://developer.vimeo.com/apps
13751436
13761437 Development callback URL
1377 http://localhost:8000
1378
1438 http://localhost:8000/a
1439
1440 Vimeo (OAuth 2)
1441 -----
1442
1443 App registration (get your key and secret here)
1444 https://developer.vimeo.com/apps
1445
1446 Development callback URL
1447 http://localhost:8000/accounts/vimeo_oauth2/login/callback/
13791448
13801449 VK
13811450 --
147147 'Framework :: Django',
148148 'Framework :: Django :: 1.11',
149149 'Framework :: Django :: 2.0',
150 'Framework :: Django :: 2.1',
150151 ],
151152 packages=find_packages(exclude=['example']),
152153 package_data=package_data,
4949 'allauth',
5050 'allauth.account',
5151 'allauth.socialaccount',
52 'allauth.socialaccount.providers.agave',
5253 'allauth.socialaccount.providers.amazon',
5354 'allauth.socialaccount.providers.angellist',
5455 'allauth.socialaccount.providers.asana',
6263 'allauth.socialaccount.providers.bitbucket_oauth2',
6364 'allauth.socialaccount.providers.bitly',
6465 'allauth.socialaccount.providers.box',
66 'allauth.socialaccount.providers.cern',
6567 'allauth.socialaccount.providers.coinbase',
6668 'allauth.socialaccount.providers.dataporten',
6769 'allauth.socialaccount.providers.daum',
6870 'allauth.socialaccount.providers.digitalocean',
6971 'allauth.socialaccount.providers.discord',
72 'allauth.socialaccount.providers.disqus',
7073 'allauth.socialaccount.providers.douban',
7174 'allauth.socialaccount.providers.doximity',
7275 'allauth.socialaccount.providers.draugiem',
8487 'allauth.socialaccount.providers.fxa',
8588 'allauth.socialaccount.providers.github',
8689 'allauth.socialaccount.providers.gitlab',
90 'allauth.socialaccount.providers.globus',
8791 'allauth.socialaccount.providers.google',
8892 'allauth.socialaccount.providers.hubic',
8993 'allauth.socialaccount.providers.instagram',
121125 'allauth.socialaccount.providers.twitter',
122126 'allauth.socialaccount.providers.untappd',
123127 'allauth.socialaccount.providers.vimeo',
128 'allauth.socialaccount.providers.vimeo_oauth2',
124129 'allauth.socialaccount.providers.vk',
125130 'allauth.socialaccount.providers.weibo',
126131 'allauth.socialaccount.providers.weixin',