New upstream version 0.42.0+ds
Pierre-Elliott Bécue
3 years ago
27 | 27 | Biel Massot |
28 | 28 | Björn Andersson |
29 | 29 | Bojan Mihelac |
30 | Bruno Alla | |
30 | 31 | Chris Beaven |
31 | 32 | Chris Davis |
32 | 33 | Christian Carter |
55 | 56 | Guilhem Saurel |
56 | 57 | Guillaume Vincent |
57 | 58 | Guoyu Hao |
59 | Haesung Park | |
58 | 60 | Hatem Nassrat |
59 | 61 | Hyunwoo Shim |
62 | Ignacio Ocampo | |
60 | 63 | J. Erm |
61 | 64 | J. Fernando Sánchez |
62 | 65 | Jack Shedd |
73 | 76 | Jihoon Park |
74 | 77 | Jiyoon Ha |
75 | 78 | Joe Vanderstelt |
79 | Joel Fernandes | |
76 | 80 | John Bazik |
77 | 81 | John Whitlock |
78 | 82 | Jonas Aule |
98 | 102 | Markus Kaiserswerth |
99 | 103 | Markus Thielen |
100 | 104 | Martin Bächtold |
105 | Matt Nishi-Broach | |
101 | 106 | Mauro Stettler |
102 | 107 | Morgante Pell |
103 | 108 | Nariman Gharib |
109 | Nathan Strobbe | |
104 | 110 | Niklas A Emanuelsson |
105 | 111 | Patrick Paul |
106 | 112 | Paulo Eduardo Neves |
124 | 130 | Sanghyeok Lee |
125 | 131 | Seizan Shimazaki |
126 | 132 | Serafeim Papastefanos |
133 | Sergey Silaev | |
127 | 134 | Shane Rice |
128 | 135 | Stuart Ross |
129 | 136 | Terry Jones |
137 | 144 | Victor Semionov |
138 | 145 | Volodymyr Yatsyk |
139 | 146 | Vuong Nguyen |
147 | Vlad Dmitrievich | |
140 | 148 | Wendy Edwards |
141 | 149 | Will Gordon |
142 | 150 | Will Ross |
143 | 151 | William Li |
144 | 152 | Yaroslav Muravsky |
145 | 153 | Yuri Kriachko |
154 | Youcef Mammar |
0 | 0.42.0 (2020-05-24) | |
1 | ******************* | |
2 | ||
3 | Note worthy changes | |
4 | ------------------- | |
5 | ||
6 | - New providers: EDX, Yandex, Mixer. | |
7 | ||
8 | - Fixed Twitch ``get_avatar_url()`` method to use the profile picture retrieved | |
9 | by new user details endpoint introduced in version 0.40.0. | |
10 | ||
11 | - The Facebook API version now defaults to v7.0. | |
12 | ||
13 | ||
0 | 14 | 0.41.0 (2019-12-18) |
1 | 15 | ******************* |
2 | 16 | |
15 | 29 | - You can now store OAuth credentials directly in your |
16 | 30 | ``settings.SOCIALACCOUNT_PROVIDERS`` settings instead of storing them in the |
17 | 31 | database using a ``SocialApp`` record. |
32 | ||
33 | - Adding Keycloak Provider | |
18 | 34 | |
19 | 35 | |
20 | 36 | Backwards incompatible changes |
0 | 0 | Metadata-Version: 1.1 |
1 | 1 | Name: django-allauth |
2 | Version: 0.41.0 | |
2 | Version: 0.42.0 | |
3 | 3 | Summary: Integrated set of Django applications addressing authentication, registration, account management as well as 3rd party (social) account authentication. |
4 | 4 | Home-page: http://github.com/pennersr/django-allauth |
5 | 5 | Author: Raymond Penners |
7 | 7 | |
8 | 8 | """ |
9 | 9 | |
10 | VERSION = (0, 41, 0, 'final', 0) | |
10 | VERSION = (0, 42, 0, 'final', 0) | |
11 | 11 | |
12 | 12 | __title__ = 'django-allauth' |
13 | 13 | __version_info__ = VERSION |
15 | 15 | VERSION[3], VERSION[4] or '') if VERSION[3] != 'final' else '') |
16 | 16 | __author__ = 'Raymond Penners' |
17 | 17 | __license__ = 'MIT' |
18 | __copyright__ = 'Copyright 2010-2019 Raymond Penners and contributors' | |
18 | __copyright__ = 'Copyright 2010-2020 Raymond Penners and contributors' |
411 | 411 | 'first_name', 'last_name', 'email']) |
412 | 412 | |
413 | 413 | def is_safe_url(self, url): |
414 | from django.utils.http import is_safe_url | |
415 | return is_safe_url(url, allowed_hosts=None) | |
414 | try: | |
415 | from django.utils.http import url_has_allowed_host_and_scheme | |
416 | except ImportError: | |
417 | from django.utils.http import \ | |
418 | is_safe_url as url_has_allowed_host_and_scheme | |
419 | ||
420 | return url_has_allowed_host_and_scheme(url, allowed_hosts=None) | |
416 | 421 | |
417 | 422 | def get_email_confirmation_url(self, request, emailconfirmation): |
418 | 423 | """Constructs the email confirmation (activation) url. |
6 | 6 | msgstr "" |
7 | 7 | "Project-Id-Version: 0.1\n" |
8 | 8 | "Report-Msgid-Bugs-To: \n" |
9 | "POT-Creation-Date: 2019-12-18 11:53-0600\n" | |
9 | "POT-Creation-Date: 2020-05-24 13:46-0500\n" | |
10 | 10 | "PO-Revision-Date: 2016-01-19 19:32+0100\n" |
11 | 11 | "Last-Translator: David D Lowe <daviddlowe.flimm@gmail.com>\n" |
12 | 12 | "Language-Team: Arabic\n" |
24 | 24 | |
25 | 25 | #: account/adapter.py:49 |
26 | 26 | msgid "Too many failed login attempts. Try again later." |
27 | msgstr "" | |
27 | msgstr "تجاوزت الحد المسموح لمحاولة تسجيل الدخول, حاول في وقت لاحق" | |
28 | 28 | |
29 | 29 | #: account/adapter.py:51 |
30 | 30 | msgid "A user is already registered with this e-mail address." |
31 | msgstr "هنالك مستخدم مسجل سابقا مع نفس عنوان البريد الاكتروني." | |
31 | msgstr "هنالك مستخدم مسجل سابقا مع نفس عنوان البريد الالكتروني." | |
32 | 32 | |
33 | 33 | #: account/adapter.py:294 |
34 | 34 | #, python-brace-format |
49 | 49 | |
50 | 50 | #: account/forms.py:92 |
51 | 51 | msgid "Remember Me" |
52 | msgstr "ذكرني" | |
52 | msgstr "تذكرني" | |
53 | 53 | |
54 | 54 | #: account/forms.py:98 |
55 | 55 | msgid "This account is currently inactive." |
80 | 80 | |
81 | 81 | #: account/forms.py:130 |
82 | 82 | msgid "Username or e-mail" |
83 | msgstr "اسم المستخدم أو البريج الالكتروني" | |
83 | msgstr "اسم المستخدم أو البريد الالكتروني" | |
84 | 84 | |
85 | 85 | #: account/forms.py:133 |
86 | 86 | msgctxt "field label" |
88 | 88 | msgstr "تسجيل الدخول" |
89 | 89 | |
90 | 90 | #: account/forms.py:292 |
91 | #, fuzzy | |
92 | #| msgid "E-mail (optional)" | |
93 | 91 | msgid "E-mail (again)" |
94 | msgstr "البريد الالكتروني )اختياري(" | |
92 | msgstr "البريد الالكتروني (مجددا)" | |
95 | 93 | |
96 | 94 | #: account/forms.py:296 |
97 | #, fuzzy | |
98 | #| msgid "email confirmation" | |
99 | 95 | msgid "E-mail address confirmation" |
100 | 96 | msgstr "تأكيد البريد الإلكتروني" |
101 | 97 | |
104 | 100 | msgstr "البريد الالكتروني )اختياري(" |
105 | 101 | |
106 | 102 | #: account/forms.py:345 |
107 | #, fuzzy | |
108 | #| msgid "You must type the same password each time." | |
109 | 103 | msgid "You must type the same email each time." |
110 | msgstr "يجب عليك كتابة نفس كلمة المرور في كل مرة." | |
104 | msgstr "يجب عليك كتابة نفس البريد الالكتروني في كل مرة." | |
111 | 105 | |
112 | 106 | #: account/forms.py:368 account/forms.py:477 |
113 | 107 | msgid "Password (again)" |
143 | 137 | |
144 | 138 | #: account/forms.py:568 |
145 | 139 | msgid "The password reset token was invalid." |
146 | msgstr "" | |
140 | msgstr "خطأ في شهادة اعادة تعيين كلمة المرور." | |
147 | 141 | |
148 | 142 | #: account/models.py:21 |
149 | 143 | msgid "user" |
175 | 169 | |
176 | 170 | #: account/models.py:82 |
177 | 171 | msgid "sent" |
178 | msgstr "مبعوث" | |
172 | msgstr "تم ارساله" | |
179 | 173 | |
180 | 174 | #: account/models.py:83 socialaccount/models.py:55 |
181 | 175 | msgid "key" |
208 | 202 | |
209 | 203 | #: socialaccount/apps.py:7 |
210 | 204 | msgid "Social Accounts" |
211 | msgstr "الحسابات الاجتماعية" | |
205 | msgstr "حسابات التواصل الاجتماعية" | |
212 | 206 | |
213 | 207 | #: socialaccount/models.py:42 socialaccount/models.py:76 |
214 | 208 | msgid "provider" |
240 | 234 | |
241 | 235 | #: socialaccount/models.py:66 |
242 | 236 | msgid "social application" |
243 | msgstr "" | |
237 | msgstr "تطبيق اجتماعي" | |
244 | 238 | |
245 | 239 | #: socialaccount/models.py:67 |
246 | 240 | msgid "social applications" |
247 | msgstr "" | |
241 | msgstr "تطبيقات اجتماعية" | |
248 | 242 | |
249 | 243 | #: socialaccount/models.py:95 |
250 | 244 | msgid "uid" |
252 | 246 | |
253 | 247 | #: socialaccount/models.py:97 |
254 | 248 | msgid "last login" |
255 | msgstr "" | |
249 | msgstr "أخر دخول" | |
256 | 250 | |
257 | 251 | #: socialaccount/models.py:99 |
258 | 252 | msgid "date joined" |
259 | msgstr "" | |
253 | msgstr "تاريخ الانضمام" | |
260 | 254 | |
261 | 255 | #: socialaccount/models.py:101 |
262 | 256 | msgid "extra data" |
263 | msgstr "" | |
257 | msgstr "بيانات اضافية" | |
264 | 258 | |
265 | 259 | #: socialaccount/models.py:105 |
266 | 260 | msgid "social account" |
267 | msgstr "" | |
261 | msgstr "حساب تواصل اجتماعي" | |
268 | 262 | |
269 | 263 | #: socialaccount/models.py:106 |
270 | 264 | msgid "social accounts" |
271 | msgstr "" | |
265 | msgstr "حسابات تواصل اجتماعي" | |
272 | 266 | |
273 | 267 | #: socialaccount/models.py:131 |
274 | 268 | msgid "token" |
288 | 282 | |
289 | 283 | #: socialaccount/models.py:140 |
290 | 284 | msgid "expires at" |
291 | msgstr "" | |
285 | msgstr "ينتهي في" | |
292 | 286 | |
293 | 287 | #: socialaccount/models.py:144 |
294 | 288 | msgid "social application token" |
300 | 294 | |
301 | 295 | #: socialaccount/providers/douban/views.py:36 |
302 | 296 | msgid "Invalid profile data" |
303 | msgstr "" | |
297 | msgstr "معلومات بروفايل غير صالحة" | |
304 | 298 | |
305 | 299 | #: socialaccount/providers/oauth/client.py:78 |
306 | 300 | #, python-format |
336 | 330 | msgid "This account is inactive." |
337 | 331 | msgstr "هذا الحساب غير نشط" |
338 | 332 | |
339 | #: templates/account/email.html:5 | |
340 | msgid "Account" | |
341 | msgstr "حساب" | |
342 | ||
343 | #: templates/account/email.html:8 | |
333 | #: templates/account/email.html:5 templates/account/email.html:8 | |
344 | 334 | msgid "E-mail Addresses" |
345 | 335 | msgstr "عناوين البريد الالكتروني" |
346 | 336 | |
366 | 356 | |
367 | 357 | #: templates/account/email.html:35 |
368 | 358 | msgid "Re-send Verification" |
369 | msgstr "ابعث رسالة التحقيق مرة أخرى" | |
359 | msgstr "اعادة ارسال رسالة التأكيد" | |
370 | 360 | |
371 | 361 | #: templates/account/email.html:36 templates/socialaccount/connections.html:35 |
372 | 362 | msgid "Remove" |
381 | 371 | "You currently do not have any e-mail address set up. You should really add " |
382 | 372 | "an e-mail address so you can receive notifications, reset your password, etc." |
383 | 373 | msgstr "" |
384 | "أنت حاليا ليس لديك أي عنوان البريد الإلكتروني. يجب أن تضيف عنوان البريد " | |
385 | "الإلكتروني حتى تتمكن من تلقي الإخطارات، إعادة تعيين كلمة المرور الخاصة بك، " | |
386 | "الخ" | |
374 | "ليس لديك أي عنوان البريد الإلكتروني. يجب أن تضيف عنوان البريدالإلكتروني حتى " | |
375 | "تتمكن من تلقي الاشعارات, إعادة تعيين كلمة المرور الخاصة بك، الخ" | |
387 | 376 | |
388 | 377 | #: templates/account/email.html:48 |
389 | 378 | msgid "Add E-mail Address" |
390 | msgstr "أضف عنوان البريد الاكتريني" | |
379 | msgstr "أضف عنوان البريد الالكتروني" | |
391 | 380 | |
392 | 381 | #: templates/account/email.html:53 |
393 | 382 | msgid "Add E-mail" |
395 | 384 | |
396 | 385 | #: templates/account/email.html:62 |
397 | 386 | msgid "Do you really want to remove the selected e-mail address?" |
398 | msgstr "هل تريد حقا ان تحذف عنوان البريد الاكتروني المختار؟" | |
387 | msgstr "هل تريد حقا ان تحذف عنوان البريد الالكتروني المحدد؟" | |
399 | 388 | |
400 | 389 | #: templates/account/email/email_confirmation_message.txt:1 |
401 | #, fuzzy, python-format | |
402 | #| msgid "" | |
403 | #| "User %(user_display)s at %(site_name)s has given this as an email " | |
404 | #| "address.\n" | |
405 | #| "\n" | |
406 | #| "To confirm this is correct, go to %(activate_url)s\n" | |
390 | #, python-format | |
407 | 391 | msgid "" |
408 | 392 | "Hello from %(site_name)s!\n" |
409 | 393 | "\n" |
412 | 396 | "\n" |
413 | 397 | "To confirm this is correct, go to %(activate_url)s\n" |
414 | 398 | msgstr "" |
415 | "المستخدم %(user_display)s في الموقع %(site_name)s أعطى هذا كعنوان بريد " | |
416 | "إلكتروني.\n" | |
417 | "\n" | |
418 | "لتأكيد هذه المعلومات صحيحة، انتقل إلى %(activate_url)s\n" | |
399 | "مرحبا من %(site_name)s!\n" | |
400 | "\n" | |
401 | "تتلقى هذه الرسالة بسبب أن المستخدم %(user_display)s قام باضافة بريدك " | |
402 | "الالكترني لحسابه في الموقع.\n" | |
403 | "\n" | |
404 | "لتأكيد صحة هذا الاجراء, اضغط على الرابط %(activate_url)s\n" | |
419 | 405 | |
420 | 406 | #: templates/account/email/email_confirmation_message.txt:7 |
421 | 407 | #, python-format |
423 | 409 | "Thank you from %(site_name)s!\n" |
424 | 410 | "%(site_domain)s" |
425 | 411 | msgstr "" |
412 | "شكرا لك من فريق %(site_name)s!\n" | |
413 | "%(site_domain)s" | |
426 | 414 | |
427 | 415 | #: templates/account/email/email_confirmation_subject.txt:3 |
428 | #, fuzzy | |
429 | #| msgid "Confirm E-mail Address" | |
430 | 416 | msgid "Please Confirm Your E-mail Address" |
431 | msgstr "قم بتحقيق عنوان البريد الاكتروني" | |
417 | msgstr "قم بتأكيد عنوان البريد الالكتروني" | |
432 | 418 | |
433 | 419 | #: templates/account/email/password_reset_key_message.txt:1 |
434 | #, fuzzy, python-format | |
435 | #| msgid "" | |
436 | #| "You're receiving this e-mail because you or someone else has requested a " | |
437 | #| "password for your user account at %(site_domain)s.\n" | |
438 | #| "It can be safely ignored if you did not request a password reset. Click " | |
439 | #| "the link below to reset your password." | |
420 | #, python-format | |
440 | 421 | msgid "" |
441 | 422 | "Hello from %(site_name)s!\n" |
442 | 423 | "\n" |
445 | 426 | "It can be safely ignored if you did not request a password reset. Click the " |
446 | 427 | "link below to reset your password." |
447 | 428 | msgstr "" |
448 | "تلقيت هذا البريد الإلكتروني لأنك )أو أي شخص آخر( قد طلب كلمة مرور لحساب " | |
449 | "المستخدم الخاص بك في%(site_domain)s.\n" | |
450 | "يمكن تجاهل هذه الرسالة بأمان إذا كنت لم تطلب إعادة تعيين كلمة مرور. انقر فوق " | |
451 | "الارتباط الموجود أدناه لإعادة تعيين كلمة المرور الخاصة بك." | |
429 | "مرحبا من %(site_name)s!\n" | |
430 | "\n" | |
431 | "أنت تتلقى هذه الرسالة بسبب طلبك أو طلب شخص أخرالحصول على كلمة المرور الخاصة " | |
432 | "بك.\n" | |
433 | "اذا لم تقم بطلب كلمة مرور يمكنك تجاهل هذه الريالة. اضغط على الرابط بالاسفل " | |
434 | "لاعادة تعيين كلمة المرور." | |
452 | 435 | |
453 | 436 | #: templates/account/email/password_reset_key_message.txt:8 |
454 | 437 | #, python-format |
461 | 444 | "Thank you for using %(site_name)s!\n" |
462 | 445 | "%(site_domain)s" |
463 | 446 | msgstr "" |
447 | "شكرا لاستخدامك %(site_name)s!\n" | |
448 | "%(site_domain)s" | |
464 | 449 | |
465 | 450 | #: templates/account/email/password_reset_key_subject.txt:3 |
466 | 451 | msgid "Password Reset E-mail" |
469 | 454 | #: templates/account/email_confirm.html:6 |
470 | 455 | #: templates/account/email_confirm.html:10 |
471 | 456 | msgid "Confirm E-mail Address" |
472 | msgstr "قم بتحقيق عنوان البريد الاكتروني" | |
457 | msgstr "قم بتحقيق عنوان البريد الالكتروني" | |
473 | 458 | |
474 | 459 | #: templates/account/email_confirm.html:16 |
475 | 460 | #, python-format |
554 | 539 | #: templates/account/messages/email_deleted.txt:2 |
555 | 540 | #, python-format |
556 | 541 | msgid "Removed e-mail address %(email)s." |
557 | msgstr "قد أزلنا عنوان البريد الاكتروني %(email)s." | |
542 | msgstr "قد أزلنا عنوان البريد الالكتروني %(email)s." | |
558 | 543 | |
559 | 544 | #: templates/account/messages/logged_in.txt:4 |
560 | 545 | #, python-format |
596 | 581 | #: templates/account/password_reset_done.html:6 |
597 | 582 | #: templates/account/password_reset_done.html:9 |
598 | 583 | msgid "Password Reset" |
599 | msgstr "إعادة ضبط كلمة المرور" | |
584 | msgstr "إعادة تعيين كلمة المرور" | |
600 | 585 | |
601 | 586 | #: templates/account/password_reset.html:15 |
602 | 587 | msgid "" |
767 | 752 | #: templates/socialaccount/login_cancelled.html:5 |
768 | 753 | #: templates/socialaccount/login_cancelled.html:9 |
769 | 754 | msgid "Login Cancelled" |
770 | msgstr "الدخول تم إلغاؤه." | |
755 | msgstr "تم الغاء تسجيل الدخول" | |
771 | 756 | |
772 | 757 | #: templates/socialaccount/login_cancelled.html:13 |
773 | 758 | #, python-format |
782 | 767 | |
783 | 768 | #: templates/socialaccount/messages/account_connected.txt:2 |
784 | 769 | msgid "The social account has been connected." |
785 | msgstr "قد تم ربط الحساب الاجتماعي." | |
770 | msgstr "قد تم ربط حساب التواصل الاجتماعي." | |
786 | 771 | |
787 | 772 | #: templates/socialaccount/messages/account_connected_other.txt:2 |
788 | 773 | msgid "The social account is already connected to a different account." |
789 | msgstr "الحساب الاجتماعي متصل مسبقاً إلى حساب مختلف." | |
774 | msgstr "حساب التواصل الاجتماعي متصل مسبقاً إلى حساب مختلف." | |
790 | 775 | |
791 | 776 | #: templates/socialaccount/messages/account_disconnected.txt:2 |
792 | 777 | msgid "The social account has been disconnected." |
793 | msgstr "تم قطع الاتصال بالحساب الاجتماعي." | |
778 | msgstr "تم قطع الاتصال بحساب التواصل الاجتماعي." | |
794 | 779 | |
795 | 780 | #: templates/socialaccount/signup.html:10 |
796 | 781 | #, python-format |
801 | 786 | "أنت على وشك استخدام حسابك من %(provider_name)s لتسجيل الدخول إلى " |
802 | 787 | "%(site_name)s. وكخطوة أخيرة، يرجى ملء النموذج التالي:" |
803 | 788 | |
789 | #~ msgid "Account" | |
790 | #~ msgstr "حساب" | |
791 | ||
804 | 792 | #~ msgid "The login and/or password you specified are not correct." |
805 | 793 | #~ msgstr "تسجيل الدخول و / أو كلمة المرور الذي حددته غير صحيحة." |
806 | 794 | |
811 | 799 | #~ msgstr "اسم المستخدم مسجل مسبقا. الرجاء اختيار اسم اخر." |
812 | 800 | |
813 | 801 | #, fuzzy |
814 | #~| msgid "Sign In" | |
815 | 802 | #~ msgid "Shopify Sign In" |
816 | #~ msgstr "تسجيل الدخول" | |
803 | #~ msgstr "تسجيل الدخول Shopify" | |
817 | 804 | |
818 | 805 | #~ msgid "" |
819 | 806 | #~ "You have confirmed that <a href=\"mailto:%(email)s\">%(email)s</a> is an " |
826 | 813 | #~ msgstr "شكرا لاستخدام موقعنا!" |
827 | 814 | |
828 | 815 | #~ msgid "Confirmation e-mail sent to %(email)s" |
829 | #~ msgstr "דואל אישור נשלח אל %(email)s" | |
816 | #~ msgstr "ارسلت رسالة التأكيد الى بريدك الالكتروني %(email)s" | |
830 | 817 | |
831 | 818 | #~ msgid "Delete Password" |
832 | #~ msgstr "מחיקת סיסמא" | |
819 | #~ msgstr "احذف كلمة المرور" | |
833 | 820 | |
834 | 821 | #~ msgid "" |
835 | 822 | #~ "You may delete your password since you are currently logged in using " |
836 | 823 | #~ "OpenID." |
837 | #~ msgstr "אתה רשאי למחוק את סיסמאתך כיוון שהנך מחובר באמצעות OpenID" | |
824 | #~ msgstr "بامكانك حذف كلمة المرور بما انك قمت بتسجيل الدخول بواسطة OpenID" | |
838 | 825 | |
839 | 826 | #~ msgid "delete my password" |
840 | #~ msgstr "מחק סיסמא" | |
827 | #~ msgstr "احذف كلمة المرور الخاصة بي" | |
841 | 828 | |
842 | 829 | #~ msgid "Password Deleted" |
843 | #~ msgstr "הסיסמא נמחקה" | |
830 | #~ msgstr "تم حذف كلمة المرور" | |
844 | 831 | |
845 | 832 | #~ msgid "Your password has been deleted." |
846 | #~ msgstr "סיסמתך נמחקה מהמערכת." | |
833 | #~ msgstr "تم حذف كلمة المرور الخاصة بك." |
7 | 7 | msgstr "" |
8 | 8 | "Project-Id-Version: 0.35\n" |
9 | 9 | "Report-Msgid-Bugs-To: \n" |
10 | "POT-Creation-Date: 2019-12-18 11:53-0600\n" | |
10 | "POT-Creation-Date: 2020-05-24 13:46-0500\n" | |
11 | 11 | "PO-Revision-Date: 2018-04-17 16:52+0200\n" |
12 | 12 | "Last-Translator: Beda Kosata <beda.kosata@gmail.com>\n" |
13 | 13 | "Language-Team: Czech <>\n" |
330 | 330 | msgid "This account is inactive." |
331 | 331 | msgstr "Tento účet není aktivní." |
332 | 332 | |
333 | #: templates/account/email.html:5 | |
334 | msgid "Account" | |
335 | msgstr "Účet" | |
336 | ||
337 | #: templates/account/email.html:8 | |
333 | #: templates/account/email.html:5 templates/account/email.html:8 | |
338 | 334 | msgid "E-mail Addresses" |
339 | 335 | msgstr "E-mailové adresy" |
340 | 336 | |
792 | 788 | "Chystáte se použít vaš %(provider_name)s účtu k přihlášení na naše stránky \n" |
793 | 789 | "%(site_name)s. Jako poslední krok, prosím, vyplňte následující formulář:" |
794 | 790 | |
791 | #~ msgid "Account" | |
792 | #~ msgstr "Účet" | |
793 | ||
795 | 794 | #~| msgid "The password reset token was invalid." |
796 | 795 | #~ msgid "The provided password is not valid." |
797 | 796 | #~ msgstr "Použité heslo není platné." |
6 | 6 | msgstr "" |
7 | 7 | "Project-Id-Version: \n" |
8 | 8 | "Report-Msgid-Bugs-To: \n" |
9 | "POT-Creation-Date: 2019-12-18 11:53-0600\n" | |
9 | "POT-Creation-Date: 2020-05-24 13:46-0500\n" | |
10 | 10 | "PO-Revision-Date: 2018-09-03 16:04+0200\n" |
11 | 11 | "Last-Translator: b'Tuk Bredsdorff <tukodeb@gmail.com>'\n" |
12 | 12 | "Language-Team: \n" |
329 | 329 | msgid "This account is inactive." |
330 | 330 | msgstr "Denne konto er inaktiv." |
331 | 331 | |
332 | #: templates/account/email.html:5 | |
333 | msgid "Account" | |
334 | msgstr "Konto" | |
335 | ||
336 | #: templates/account/email.html:8 | |
332 | #: templates/account/email.html:5 templates/account/email.html:8 | |
337 | 333 | msgid "E-mail Addresses" |
338 | 334 | msgstr "E-mail adresser" |
339 | 335 | |
791 | 787 | msgstr "" |
792 | 788 | "Du er ved at bruge din %(provider_name)s -konto til at logge ind i\n" |
793 | 789 | "%(site_name)s. Som et sidste skridt, udfyld venligst denne formular:" |
790 | ||
791 | #~ msgid "Account" | |
792 | #~ msgstr "Konto" |
7 | 7 | msgstr "" |
8 | 8 | "Project-Id-Version: django-allauth\n" |
9 | 9 | "Report-Msgid-Bugs-To: \n" |
10 | "POT-Creation-Date: 2019-12-18 11:53-0600\n" | |
10 | "POT-Creation-Date: 2020-05-24 13:46-0500\n" | |
11 | 11 | "PO-Revision-Date: 2019-08-07 12:13+0200\n" |
12 | 12 | "Last-Translator: Jannis Vajen <jvajen@gmail.com>\n" |
13 | 13 | "Language-Team: German (http://www.transifex.com/projects/p/django-allauth/" |
333 | 333 | msgid "This account is inactive." |
334 | 334 | msgstr "Dieses Konto ist inaktiv." |
335 | 335 | |
336 | #: templates/account/email.html:5 | |
337 | msgid "Account" | |
338 | msgstr "Konto" | |
339 | ||
340 | #: templates/account/email.html:8 | |
336 | #: templates/account/email.html:5 templates/account/email.html:8 | |
341 | 337 | msgid "E-mail Addresses" |
342 | 338 | msgstr "E-Mail-Adressen" |
343 | 339 | |
805 | 801 | "%(site_name)s anzumelden. Zum Abschluss bitte das folgende Formular " |
806 | 802 | "ausfüllen:" |
807 | 803 | |
804 | #~ msgid "Account" | |
805 | #~ msgstr "Konto" | |
806 | ||
808 | 807 | #~ msgid "The login and/or password you specified are not correct." |
809 | 808 | #~ msgstr "Die Anmeldedaten sind leider falsch." |
810 | 809 |
7 | 7 | msgstr "" |
8 | 8 | "Project-Id-Version: PACKAGE VERSION\n" |
9 | 9 | "Report-Msgid-Bugs-To: \n" |
10 | "POT-Creation-Date: 2019-12-18 11:53-0600\n" | |
10 | "POT-Creation-Date: 2020-05-24 13:46-0500\n" | |
11 | 11 | "PO-Revision-Date: 2014-08-12 00:29+0200\n" |
12 | 12 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
13 | 13 | "Language-Team: LANGUAGE <LL@li.org>\n" |
335 | 335 | msgid "This account is inactive." |
336 | 336 | msgstr "Αυτός ο λογαριασμός είναι ανενεργός." |
337 | 337 | |
338 | #: templates/account/email.html:5 | |
339 | msgid "Account" | |
340 | msgstr "Λογαριασμός" | |
341 | ||
342 | #: templates/account/email.html:8 | |
338 | #: templates/account/email.html:5 templates/account/email.html:8 | |
343 | 339 | msgid "E-mail Addresses" |
344 | 340 | msgstr "Διεύθυνση e-mail" |
345 | 341 | |
810 | 806 | "Πρόκειται να χρησιμοποιήσετε τον %(provider_name)s λογαριασμό σας για να " |
811 | 807 | "συνδεθείτε στην σελίδα\n" |
812 | 808 | "%(site_name)s. Ως τελικό βήμα, παρακαλούμε συμπληρώστε την παρακάτω φόρμα:" |
809 | ||
810 | #~ msgid "Account" | |
811 | #~ msgstr "Λογαριασμός" |
7 | 7 | msgstr "" |
8 | 8 | "Project-Id-Version: PACKAGE VERSION\n" |
9 | 9 | "Report-Msgid-Bugs-To: \n" |
10 | "POT-Creation-Date: 2019-12-18 11:53-0600\n" | |
10 | "POT-Creation-Date: 2020-05-24 13:46-0500\n" | |
11 | 11 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
12 | 12 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
13 | 13 | "Language-Team: LANGUAGE <LL@li.org>\n" |
326 | 326 | msgid "This account is inactive." |
327 | 327 | msgstr "" |
328 | 328 | |
329 | #: templates/account/email.html:5 | |
330 | msgid "Account" | |
331 | msgstr "" | |
332 | ||
333 | #: templates/account/email.html:8 | |
329 | #: templates/account/email.html:5 templates/account/email.html:8 | |
334 | 330 | msgid "E-mail Addresses" |
335 | 331 | msgstr "" |
336 | 332 |
6 | 6 | msgstr "" |
7 | 7 | "Project-Id-Version: django-allauth\n" |
8 | 8 | "Report-Msgid-Bugs-To: \n" |
9 | "POT-Creation-Date: 2019-12-18 11:53-0600\n" | |
9 | "POT-Creation-Date: 2020-05-24 13:46-0500\n" | |
10 | 10 | "PO-Revision-Date: 2018-02-14 17:46-0600\n" |
11 | 11 | "Last-Translator: Jannis \n" |
12 | 12 | "Language-Team: Spanish (http://www.transifex.com/projects/p/django-allauth/" |
333 | 333 | msgid "This account is inactive." |
334 | 334 | msgstr "Esta cuenta está desactivada." |
335 | 335 | |
336 | #: templates/account/email.html:5 | |
337 | msgid "Account" | |
338 | msgstr "Cuenta" | |
339 | ||
340 | #: templates/account/email.html:8 | |
336 | #: templates/account/email.html:5 templates/account/email.html:8 | |
341 | 337 | msgid "E-mail Addresses" |
342 | 338 | msgstr "Direcciones de correo electrónico" |
343 | 339 | |
779 | 775 | "accounts. If this was a mistake, please proceed to <a href=\"%(login_url)s" |
780 | 776 | "\">sign in</a>." |
781 | 777 | msgstr "" |
782 | "Has decidido cancelar el inicio de sesión a nuestro sitio usando las " | |
783 | "siguientes cuentas. Si esto fue un error, <a href=\"%(login_url)s\">inicie " | |
784 | "sesión</a>." | |
778 | "Has decidido cancelar el inicio de sesión a nuestro sitio usando una de tus " | |
779 | "cuentas. Si esto fue un error, <a href=\"%(login_url)s\">inicie sesión</a>." | |
785 | 780 | |
786 | 781 | #: templates/socialaccount/messages/account_connected.txt:2 |
787 | 782 | msgid "The social account has been connected." |
803 | 798 | msgstr "" |
804 | 799 | "Estas a punto de utilizar tu cuenta %(provider_name)s para acceder a " |
805 | 800 | "%(site_name)s. Como paso final, por favor completa el siguiente formulario:" |
801 | ||
802 | #~ msgid "Account" | |
803 | #~ msgstr "Cuenta" | |
806 | 804 | |
807 | 805 | #~ msgid "The login and/or password you specified are not correct." |
808 | 806 | #~ msgstr "" |
6 | 6 | msgstr "" |
7 | 7 | "Project-Id-Version: django-allauth\n" |
8 | 8 | "Report-Msgid-Bugs-To: \n" |
9 | "POT-Creation-Date: 2019-12-18 11:53-0600\n" | |
9 | "POT-Creation-Date: 2020-05-24 13:46-0500\n" | |
10 | 10 | "PO-Revision-Date: 2018-08-29 08:16+0200\n" |
11 | 11 | "Last-Translator: Eneko Illarramendi <eneko@illarra.com>\n" |
12 | 12 | "Language-Team: Basque <translate@tropela.eus>\n" |
331 | 331 | msgid "This account is inactive." |
332 | 332 | msgstr "Kontu hau ez dago aktiboa." |
333 | 333 | |
334 | #: templates/account/email.html:5 | |
335 | msgid "Account" | |
336 | msgstr "Kontua" | |
337 | ||
338 | #: templates/account/email.html:8 | |
334 | #: templates/account/email.html:5 templates/account/email.html:8 | |
339 | 335 | msgid "E-mail Addresses" |
340 | 336 | msgstr "Helbide elektronikoak" |
341 | 337 | |
800 | 796 | "Zure %(provider_name)s kontua erabiltzear zaude %(site_name)s\n" |
801 | 797 | "webgunean saioa hasteko. Azken pausu bezala, mesedez osa ezazu\n" |
802 | 798 | "formulario hau:" |
799 | ||
800 | #~ msgid "Account" | |
801 | #~ msgstr "Kontua" |
5 | 5 | msgstr "" |
6 | 6 | "Project-Id-Version: \n" |
7 | 7 | "Report-Msgid-Bugs-To: \n" |
8 | "POT-Creation-Date: 2019-12-18 11:53-0600\n" | |
8 | "POT-Creation-Date: 2020-05-24 13:46-0500\n" | |
9 | 9 | "PO-Revision-Date: 2015-09-14 12:40-0000\n" |
10 | 10 | "Last-Translator: NARIMAN GHARIB <NARIMAN.GH@GMAIL.COM>\n" |
11 | 11 | "Language-Team: \n" |
338 | 338 | msgid "This account is inactive." |
339 | 339 | msgstr "این حساب کاربری غیرفعال است." |
340 | 340 | |
341 | #: templates/account/email.html:5 | |
342 | msgid "Account" | |
343 | msgstr "حساب کاربری" | |
344 | ||
345 | #: templates/account/email.html:8 | |
341 | #: templates/account/email.html:5 templates/account/email.html:8 | |
346 | 342 | msgid "E-mail Addresses" |
347 | 343 | msgstr "آدرسهای ایمیل" |
348 | 344 | |
818 | 814 | "%(site_name)s. شوید. برای مراحل آخر لطفا در ادامه فرمهای مورد نظر را تکمیل " |
819 | 815 | "فرمایید." |
820 | 816 | |
817 | #~ msgid "Account" | |
818 | #~ msgstr "حساب کاربری" | |
819 | ||
821 | 820 | #~ msgid "The login and/or password you specified are not correct." |
822 | 821 | #~ msgstr "نام کاربری یا رمز عبور صحیح نمیباشد." |
823 | 822 |
7 | 7 | msgstr "" |
8 | 8 | "Project-Id-Version: PACKAGE VERSION\n" |
9 | 9 | "Report-Msgid-Bugs-To: \n" |
10 | "POT-Creation-Date: 2019-12-18 11:53-0600\n" | |
10 | "POT-Creation-Date: 2020-05-24 13:46-0500\n" | |
11 | 11 | "PO-Revision-Date: 2015-08-13 15:17+0300\n" |
12 | 12 | "Last-Translator: Anonymous User <seppo.erviala@iki.fi>\n" |
13 | 13 | "Language-Team: LANGUAGE <LL@li.org>\n" |
337 | 337 | msgid "This account is inactive." |
338 | 338 | msgstr "Tämä tili ei ole käytössä." |
339 | 339 | |
340 | #: templates/account/email.html:5 | |
341 | msgid "Account" | |
342 | msgstr "Tili" | |
343 | ||
344 | #: templates/account/email.html:8 | |
340 | #: templates/account/email.html:5 templates/account/email.html:8 | |
345 | 341 | msgid "E-mail Addresses" |
346 | 342 | msgstr "Sähköpostiosoitteet" |
347 | 343 | |
812 | 808 | "Olet aikeissa käyttää %(provider_name)s-tiliäsi kirjautuaksesi palveluun\n" |
813 | 809 | "%(site_name)s. Täytä vielä seuraava lomake:" |
814 | 810 | |
811 | #~ msgid "Account" | |
812 | #~ msgstr "Tili" | |
813 | ||
815 | 814 | #~ msgid "The login and/or password you specified are not correct." |
816 | 815 | #~ msgstr "Kirjautumistiedot eivät ole oikein." |
817 | 816 |
9 | 9 | msgstr "" |
10 | 10 | "Project-Id-Version: django-allauth\n" |
11 | 11 | "Report-Msgid-Bugs-To: \n" |
12 | "POT-Creation-Date: 2019-12-18 11:53-0600\n" | |
12 | "POT-Creation-Date: 2020-05-24 13:46-0500\n" | |
13 | 13 | "PO-Revision-Date: 2019-08-12 15:14+0200\n" |
14 | 14 | "Last-Translator: Gilou <contact+dev@gilouweb.com>\n" |
15 | 15 | "Language-Team: français <>\n" |
333 | 333 | msgid "This account is inactive." |
334 | 334 | msgstr "Ce compte est inactif." |
335 | 335 | |
336 | #: templates/account/email.html:5 | |
337 | msgid "Account" | |
338 | msgstr "Compte" | |
339 | ||
340 | #: templates/account/email.html:8 | |
336 | #: templates/account/email.html:5 templates/account/email.html:8 | |
341 | 337 | msgid "E-mail Addresses" |
342 | 338 | msgstr "Adresses e-mail" |
343 | 339 | |
405 | 401 | "To confirm this is correct, go to %(activate_url)s\n" |
406 | 402 | msgstr "" |
407 | 403 | "Bonjour, c'est %(site_name)s !\n" |
408 | "Vous recevez cet e-mail car l'utilisateur %(user_display)s l'a indiquée pour " | |
409 | "se connecter à son compte.\n" | |
404 | "Vous recevez cet e-mail car l'utilisateur %(user_display)s a indiqué votre " | |
405 | "adresse pour se connecter à son compte.\n" | |
410 | 406 | "\n" |
411 | 407 | "Pour confirmer que vous en êtes bien le propriétaire, allez à " |
412 | 408 | "%(activate_url)s\n" |
806 | 802 | "au site %(site_name)s. Merci de compléter le formulaire suivant pour " |
807 | 803 | "confirmer la connexion." |
808 | 804 | |
805 | #~ msgid "Account" | |
806 | #~ msgstr "Compte" | |
807 | ||
809 | 808 | #~ msgid "The login and/or password you specified are not correct." |
810 | 809 | #~ msgstr "L'identifiant ou le mot de passe sont incorrects." |
811 | 810 |
6 | 6 | msgstr "" |
7 | 7 | "Project-Id-Version: 0.1\n" |
8 | 8 | "Report-Msgid-Bugs-To: \n" |
9 | "POT-Creation-Date: 2019-12-18 11:53-0600\n" | |
9 | "POT-Creation-Date: 2020-05-24 13:46-0500\n" | |
10 | 10 | "PO-Revision-Date: 2017-08-26 16:11+0300\n" |
11 | 11 | "Last-Translator: Udi Oron <udioron@gmail.com>\n" |
12 | 12 | "Language-Team: Hebrew\n" |
329 | 329 | msgid "This account is inactive." |
330 | 330 | msgstr "חשבון זה אינו פעיל." |
331 | 331 | |
332 | #: templates/account/email.html:5 | |
333 | msgid "Account" | |
334 | msgstr "חשבון" | |
335 | ||
336 | #: templates/account/email.html:8 | |
332 | #: templates/account/email.html:5 templates/account/email.html:8 | |
337 | 333 | msgid "E-mail Addresses" |
338 | 334 | msgstr "כתובות אימייל" |
339 | 335 | |
780 | 776 | "אתה עומד להשתמש בחשבון %(provider_name)s שלך כדי\n" |
781 | 777 | "להתחבר ל%(site_name)s. לסיום, אנא מלא את הטופס הבא:" |
782 | 778 | |
779 | #~ msgid "Account" | |
780 | #~ msgstr "חשבון" | |
781 | ||
783 | 782 | #~ msgid "The login and/or password you specified are not correct." |
784 | 783 | #~ msgstr "שם המשתמש ו/או הסיסמא אינם נכונים" |
785 | 784 |
9 | 9 | msgstr "" |
10 | 10 | "Project-Id-Version: PACKAGE VERSION\n" |
11 | 11 | "Report-Msgid-Bugs-To: \n" |
12 | "POT-Creation-Date: 2019-12-18 11:53-0600\n" | |
12 | "POT-Creation-Date: 2020-05-24 13:46-0500\n" | |
13 | 13 | "PO-Revision-Date: 2014-08-12 00:31+0200\n" |
14 | 14 | "Last-Translator: <goran.cetusic@gmail.com>\n" |
15 | 15 | "Language-Team: Bojan Mihelac <bmihelac@mihelac.org>\n" |
340 | 340 | msgid "This account is inactive." |
341 | 341 | msgstr "Ovaj korisnički račun je neaktivan." |
342 | 342 | |
343 | #: templates/account/email.html:5 | |
344 | msgid "Account" | |
345 | msgstr "Korisnički račun" | |
346 | ||
347 | #: templates/account/email.html:8 | |
343 | #: templates/account/email.html:5 templates/account/email.html:8 | |
348 | 344 | msgid "E-mail Addresses" |
349 | 345 | msgstr "E-mail adrese" |
350 | 346 | |
816 | 812 | "stranicu %(site_name)s. Kao posljednji korak, molimo vas ispunite sljedeći " |
817 | 813 | "obrazac:" |
818 | 814 | |
815 | #~ msgid "Account" | |
816 | #~ msgstr "Korisnički račun" | |
817 | ||
819 | 818 | #~ msgid "The login and/or password you specified are not correct." |
820 | 819 | #~ msgstr "Korisničko ime i/ili zaporka nisu ispravni." |
821 | 820 |
6 | 6 | msgstr "" |
7 | 7 | "Project-Id-Version: \n" |
8 | 8 | "Report-Msgid-Bugs-To: \n" |
9 | "POT-Creation-Date: 2019-12-18 11:53-0600\n" | |
9 | "POT-Creation-Date: 2020-05-24 13:46-0500\n" | |
10 | 10 | "PO-Revision-Date: 2015-05-08 22:42+0100\n" |
11 | 11 | "Last-Translator: Tamás Makó <tom@greenplug.hu>\n" |
12 | 12 | "Language-Team: \n" |
334 | 334 | msgid "This account is inactive." |
335 | 335 | msgstr "A felhasználó nem aktív." |
336 | 336 | |
337 | #: templates/account/email.html:5 | |
338 | msgid "Account" | |
339 | msgstr "Felhasználó" | |
340 | ||
341 | #: templates/account/email.html:8 | |
337 | #: templates/account/email.html:5 templates/account/email.html:8 | |
342 | 338 | msgid "E-mail Addresses" |
343 | 339 | msgstr "Email címek" |
344 | 340 | |
803 | 799 | "bejelentkezés\n" |
804 | 800 | "Utolsó lépésként kérlek töltsd ki az alábbi adatlapot:" |
805 | 801 | |
802 | #~ msgid "Account" | |
803 | #~ msgstr "Felhasználó" | |
804 | ||
806 | 805 | #~ msgid "The login and/or password you specified are not correct." |
807 | 806 | #~ msgstr "A megadott bejelentkezési azonosító vagy a jelszó hibás." |
808 | 807 |
9 | 9 | msgstr "" |
10 | 10 | "Project-Id-Version: django-allauth\n" |
11 | 11 | "Report-Msgid-Bugs-To: \n" |
12 | "POT-Creation-Date: 2019-12-18 11:53-0600\n" | |
12 | "POT-Creation-Date: 2020-05-24 13:46-0500\n" | |
13 | 13 | "PO-Revision-Date: 2019-09-30 00:03+0200\n" |
14 | 14 | "Last-Translator: Sandro <sandro@e-den.it>\n" |
15 | 15 | "Language: it\n" |
331 | 331 | msgid "This account is inactive." |
332 | 332 | msgstr "Questo account non è attivo." |
333 | 333 | |
334 | #: templates/account/email.html:5 | |
335 | msgid "Account" | |
336 | msgstr "Account" | |
337 | ||
338 | #: templates/account/email.html:8 | |
334 | #: templates/account/email.html:5 templates/account/email.html:8 | |
339 | 335 | msgid "E-mail Addresses" |
340 | 336 | msgstr "Indirizzi e-mail" |
341 | 337 | |
796 | 792 | "%(site_name)s. Come ultima operazione ti chiediamo di riempire il form qui " |
797 | 793 | "sotto:" |
798 | 794 | |
795 | #~ msgid "Account" | |
796 | #~ msgstr "Account" | |
797 | ||
799 | 798 | #~ msgid "The login and/or password you specified are not correct." |
800 | 799 | #~ msgstr "Il login e/o la password che hai usato non sono corretti." |
801 | 800 |
7 | 7 | msgstr "" |
8 | 8 | "Project-Id-Version: PACKAGE VERSION\n" |
9 | 9 | "Report-Msgid-Bugs-To: \n" |
10 | "POT-Creation-Date: 2019-12-18 11:53-0600\n" | |
10 | "POT-Creation-Date: 2020-05-24 13:46-0500\n" | |
11 | 11 | "PO-Revision-Date: 2014-08-12 00:32+0200\n" |
12 | 12 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
13 | 13 | "Language-Team: LANGUAGE <LL@li.org>\n" |
337 | 337 | msgid "This account is inactive." |
338 | 338 | msgstr "このアカウントは無効です。" |
339 | 339 | |
340 | #: templates/account/email.html:5 | |
341 | msgid "Account" | |
342 | msgstr "アカウント" | |
343 | ||
344 | #: templates/account/email.html:8 | |
340 | #: templates/account/email.html:5 templates/account/email.html:8 | |
345 | 341 | msgid "E-mail Addresses" |
346 | 342 | msgstr "メールアドレス" |
347 | 343 | |
803 | 799 | "す。\n" |
804 | 800 | "ユーザー登録のために、以下のフォームに記入してください。" |
805 | 801 | |
802 | #~ msgid "Account" | |
803 | #~ msgstr "アカウント" | |
804 | ||
806 | 805 | #~ msgid "The login and/or password you specified are not correct." |
807 | 806 | #~ msgstr "入力されたログインIDもしくはパスワードが正しくありません。" |
808 | 807 |
7 | 7 | msgstr "" |
8 | 8 | "Project-Id-Version: PACKAGE VERSION\n" |
9 | 9 | "Report-Msgid-Bugs-To: \n" |
10 | "POT-Creation-Date: 2019-12-18 11:53-0600\n" | |
10 | "POT-Creation-Date: 2020-05-24 13:46-0500\n" | |
11 | 11 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
12 | 12 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
13 | 13 | "Language-Team: LANGUAGE <LL@li.org>\n" |
329 | 329 | msgid "This account is inactive." |
330 | 330 | msgstr "해당 계정은 비활성화된 상태입니다." |
331 | 331 | |
332 | #: templates/account/email.html:5 | |
333 | msgid "Account" | |
334 | msgstr "계정" | |
335 | ||
336 | #: templates/account/email.html:8 | |
332 | #: templates/account/email.html:5 templates/account/email.html:8 | |
337 | 333 | msgid "E-mail Addresses" |
338 | 334 | msgstr "이메일 계정" |
339 | 335 | |
777 | 773 | "%(provider_name)s 의 계정을 이용하여 %(site_name)s 으로 로그인하려 합니다.\n" |
778 | 774 | "마지막으로 다음 폼을 작성해주세요:" |
779 | 775 | |
776 | #~ msgid "Account" | |
777 | #~ msgstr "계정" | |
778 | ||
780 | 779 | #~ msgid "The login and/or password you specified are not correct." |
781 | 780 | #~ msgstr "로그인 또는 비밀번호가 올바르지 않습니다." |
782 | 781 |
6 | 6 | msgstr "" |
7 | 7 | "Project-Id-Version: PACKAGE VERSION\n" |
8 | 8 | "Report-Msgid-Bugs-To: \n" |
9 | "POT-Creation-Date: 2019-12-18 11:53-0600\n" | |
9 | "POT-Creation-Date: 2020-05-24 13:46-0500\n" | |
10 | 10 | "PO-Revision-Date: 2016-07-20 22:24+0600\n" |
11 | 11 | "Last-Translator: Murat Jumashev <jumasheff at gmail dot com>\n" |
12 | 12 | "Language-Team: LANGUAGE <LL@li.org>\n" |
334 | 334 | msgid "This account is inactive." |
335 | 335 | msgstr "Бул эсеп активдүү эмес." |
336 | 336 | |
337 | #: templates/account/email.html:5 | |
338 | msgid "Account" | |
339 | msgstr "Эсеп" | |
340 | ||
341 | #: templates/account/email.html:8 | |
337 | #: templates/account/email.html:5 templates/account/email.html:8 | |
342 | 338 | msgid "E-mail Addresses" |
343 | 339 | msgstr "Эмейл даректер" |
344 | 340 | |
811 | 807 | "сайтына кирейин деп турасыз. Акыркы кадам катары кийинки калыпты\n" |
812 | 808 | "толтуруп коюңузду суранабыз :" |
813 | 809 | |
810 | #~ msgid "Account" | |
811 | #~ msgstr "Эсеп" | |
812 | ||
814 | 813 | #~ msgid "The login and/or password you specified are not correct." |
815 | 814 | #~ msgstr "Сиз берген логин жана/же купуя туура эмес." |
816 | 815 |
7 | 7 | msgstr "" |
8 | 8 | "Project-Id-Version: PACKAGE VERSION\n" |
9 | 9 | "Report-Msgid-Bugs-To: \n" |
10 | "POT-Creation-Date: 2019-12-18 11:53-0600\n" | |
10 | "POT-Creation-Date: 2020-05-24 13:46-0500\n" | |
11 | 11 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
12 | 12 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
13 | 13 | "Language-Team: LANGUAGE <LL@li.org>\n" |
338 | 338 | msgid "This account is inactive." |
339 | 339 | msgstr "Ši paskyra neaktyvi." |
340 | 340 | |
341 | #: templates/account/email.html:5 | |
342 | msgid "Account" | |
343 | msgstr "Paskyra" | |
344 | ||
345 | #: templates/account/email.html:8 | |
341 | #: templates/account/email.html:5 templates/account/email.html:8 | |
346 | 342 | msgid "E-mail Addresses" |
347 | 343 | msgstr "El. pašto adresai" |
348 | 344 | |
820 | 816 | "Jūs beveik prisijungėte prie %(site_name)s naudodami %(provider_name)s\n" |
821 | 817 | "paskyrą. Liko paskutinis žingsnis, užpildyti sekančią formą:" |
822 | 818 | |
819 | #~ msgid "Account" | |
820 | #~ msgstr "Paskyra" | |
821 | ||
823 | 822 | #~ msgid "The login and/or password you specified are not correct." |
824 | 823 | #~ msgstr "Pateiktas prisijungimo vardas ir/arba slaptažodis yra neteisingi." |
825 | 824 |
7 | 7 | msgstr "" |
8 | 8 | "Project-Id-Version: PACKAGE VERSION\n" |
9 | 9 | "Report-Msgid-Bugs-To: \n" |
10 | "POT-Creation-Date: 2019-12-18 11:53-0600\n" | |
10 | "POT-Creation-Date: 2020-05-24 13:46-0500\n" | |
11 | 11 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
12 | 12 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
13 | 13 | "Language-Team: LANGUAGE <LL@li.org>\n" |
338 | 338 | msgid "This account is inactive." |
339 | 339 | msgstr "Šis konts ir neaktīvs." |
340 | 340 | |
341 | #: templates/account/email.html:5 | |
342 | msgid "Account" | |
343 | msgstr "Konts" | |
344 | ||
345 | #: templates/account/email.html:8 | |
341 | #: templates/account/email.html:5 templates/account/email.html:8 | |
346 | 342 | msgid "E-mail Addresses" |
347 | 343 | msgstr "E-pasta adreses" |
348 | 344 | |
818 | 814 | "Jūs izmantosiet savu %(provider_name)s kontu, lai ieietu\n" |
819 | 815 | "%(site_name)s. Kā pēdējo soli, lūdzu aizpildiet sekojošo formu:" |
820 | 816 | |
817 | #~ msgid "Account" | |
818 | #~ msgstr "Konts" | |
819 | ||
821 | 820 | #~ msgid "The login and/or password you specified are not correct." |
822 | 821 | #~ msgstr "Nepareiza pieteikšanās informācija un/vai parole." |
823 | 822 |
7 | 7 | msgstr "" |
8 | 8 | "Project-Id-Version: django-allauth\n" |
9 | 9 | "Report-Msgid-Bugs-To: \n" |
10 | "POT-Creation-Date: 2019-12-18 11:53-0600\n" | |
10 | "POT-Creation-Date: 2020-05-24 13:46-0500\n" | |
11 | 11 | "PO-Revision-Date: 2016-07-25 15:18+0200\n" |
12 | 12 | "Last-Translator: pennersr <raymond.penners@intenct.nl>\n" |
13 | 13 | "Language-Team: Dutch (http://www.transifex.com/projects/p/django-allauth/" |
336 | 336 | msgid "This account is inactive." |
337 | 337 | msgstr "Dit account is niet actief" |
338 | 338 | |
339 | #: templates/account/email.html:5 | |
340 | msgid "Account" | |
341 | msgstr "Account" | |
342 | ||
343 | #: templates/account/email.html:8 | |
339 | #: templates/account/email.html:5 templates/account/email.html:8 | |
344 | 340 | msgid "E-mail Addresses" |
345 | 341 | msgstr "E-mailadressen" |
346 | 342 | |
814 | 810 | "Om bij %(site_name)s in te kunnen loggen via %(provider_name)s hebben we de " |
815 | 811 | "volgende gegevens nodig:" |
816 | 812 | |
813 | #~ msgid "Account" | |
814 | #~ msgstr "Account" | |
815 | ||
817 | 816 | #~ msgid "The login and/or password you specified are not correct." |
818 | 817 | #~ msgstr "Je login en wachtwoord komen niet overeen." |
819 | 818 |
7 | 7 | msgstr "" |
8 | 8 | "Project-Id-Version: PACKAGE VERSION\n" |
9 | 9 | "Report-Msgid-Bugs-To: \n" |
10 | "POT-Creation-Date: 2019-12-18 11:53-0600\n" | |
10 | "POT-Creation-Date: 2020-05-24 13:46-0500\n" | |
11 | 11 | "PO-Revision-Date: 2019-12-18 18:56+0100\n" |
12 | 12 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
13 | 13 | "Language-Team: LANGUAGE <LL@li.org>\n" |
328 | 328 | msgid "This account is inactive." |
329 | 329 | msgstr "Denne kontoen er inaktiv." |
330 | 330 | |
331 | #: templates/account/email.html:5 | |
332 | msgid "Account" | |
333 | msgstr "Konto" | |
334 | ||
335 | #: templates/account/email.html:8 | |
331 | #: templates/account/email.html:5 templates/account/email.html:8 | |
336 | 332 | msgid "E-mail Addresses" |
337 | 333 | msgstr "E-postadresser" |
338 | 334 | |
494 | 490 | "for a %(site_name)s account and sign in below:" |
495 | 491 | msgstr "" |
496 | 492 | "Vennligst logg in med en\n" |
497 | "av dine eksisterende tredjeparts kontoer på %(site_name)s. Eller, <a href=\"%(signup_url)s\">registrer deg</a>\n" | |
493 | "av dine eksisterende tredjeparts kontoer på %(site_name)s. Eller, <a href=" | |
494 | "\"%(signup_url)s\">registrer deg</a>\n" | |
498 | 495 | "og logg inn nedenfor:" |
499 | 496 | |
500 | 497 | #: templates/account/login.html:25 |
789 | 786 | msgstr "" |
790 | 787 | "Du er på vei til å bruke din %(provider_name)s konto for å logge inn på\n" |
791 | 788 | "%(site_name)s. Som et siste steg, vennligst fullfør følgende skjema:" |
789 | ||
790 | #~ msgid "Account" | |
791 | #~ msgstr "Konto" |
5 | 5 | msgstr "" |
6 | 6 | "Project-Id-Version: \n" |
7 | 7 | "Report-Msgid-Bugs-To: \n" |
8 | "POT-Creation-Date: 2019-12-18 11:53-0600\n" | |
8 | "POT-Creation-Date: 2020-05-24 13:46-0500\n" | |
9 | 9 | "PO-Revision-Date: 2018-10-04 02:18+0200\n" |
10 | 10 | "Last-Translator: Adam Dobrawy <naczelnik@jawnosc.tk>\n" |
11 | 11 | "Language-Team: \n" |
327 | 327 | msgid "This account is inactive." |
328 | 328 | msgstr "To konto jest nieaktywne." |
329 | 329 | |
330 | #: templates/account/email.html:5 | |
331 | msgid "Account" | |
332 | msgstr "Konto" | |
333 | ||
334 | #: templates/account/email.html:8 | |
330 | #: templates/account/email.html:5 templates/account/email.html:8 | |
335 | 331 | msgid "E-mail Addresses" |
336 | 332 | msgstr "Adresy e-mail" |
337 | 333 | |
563 | 559 | |
564 | 560 | #: templates/account/messages/primary_email_set.txt:2 |
565 | 561 | msgid "Primary e-mail address set." |
566 | msgstr "Ustaw podstawowy adres e-mail." | |
562 | msgstr "Podstawowy adres e-mail został ustawiony." | |
567 | 563 | |
568 | 564 | #: templates/account/messages/unverified_primary_email.txt:2 |
569 | 565 | msgid "Your primary e-mail address must be verified." |
793 | 789 | "Masz zamiar użyć konta %(provider_name)s do zalogowania się w \n" |
794 | 790 | "%(site_name)s. Jako ostatni krok, proszę wypełnij formularz:" |
795 | 791 | |
792 | #~ msgid "Account" | |
793 | #~ msgstr "Konto" | |
794 | ||
796 | 795 | #~ msgid "The login and/or password you specified are not correct." |
797 | 796 | #~ msgstr "Login i/lub hasło, które podałeś, są niepoprawne." |
798 | 797 |
10 | 10 | msgstr "" |
11 | 11 | "Project-Id-Version: django-allauth\n" |
12 | 12 | "Report-Msgid-Bugs-To: \n" |
13 | "POT-Creation-Date: 2019-12-18 11:53-0600\n" | |
13 | "POT-Creation-Date: 2020-05-24 13:46-0500\n" | |
14 | 14 | "PO-Revision-Date: 2014-12-01 01:20+0000\n" |
15 | 15 | "Last-Translator: cacarrara <caiocarrara@gmail.com>\n" |
16 | 16 | "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/" |
339 | 339 | msgid "This account is inactive." |
340 | 340 | msgstr "A sua conta está inativa." |
341 | 341 | |
342 | #: templates/account/email.html:5 | |
343 | msgid "Account" | |
344 | msgstr "Conta" | |
345 | ||
346 | #: templates/account/email.html:8 | |
342 | #: templates/account/email.html:5 templates/account/email.html:8 | |
347 | 343 | msgid "E-mail Addresses" |
348 | 344 | msgstr "Endereços de E-mail" |
349 | 345 | |
808 | 804 | "Você está prestes a usar sua conta do %(provider_name)s para acessar o\n" |
809 | 805 | "%(site_name)s. Como etapa final, por favor preencha o seguinte formulário:" |
810 | 806 | |
807 | #~ msgid "Account" | |
808 | #~ msgstr "Conta" | |
809 | ||
811 | 810 | #~ msgid "The login and/or password you specified are not correct." |
812 | 811 | #~ msgstr "O nome de usuário e/ou senha especificados não estão corretos." |
813 | 812 |
6 | 6 | msgstr "" |
7 | 7 | "Project-Id-Version: django-allauth\n" |
8 | 8 | "Report-Msgid-Bugs-To: \n" |
9 | "POT-Creation-Date: 2019-12-18 11:53-0600\n" | |
9 | "POT-Creation-Date: 2020-05-24 13:46-0500\n" | |
10 | 10 | "PO-Revision-Date: 2019-02-26 19:48+0100\n" |
11 | 11 | "Last-Translator: Jannis \n" |
12 | 12 | "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/" |
331 | 331 | msgid "This account is inactive." |
332 | 332 | msgstr "A sua conta foi desactivada." |
333 | 333 | |
334 | #: templates/account/email.html:5 | |
335 | msgid "Account" | |
336 | msgstr "Conta" | |
337 | ||
338 | #: templates/account/email.html:8 | |
334 | #: templates/account/email.html:5 templates/account/email.html:8 | |
339 | 335 | msgid "E-mail Addresses" |
340 | 336 | msgstr "Endereços de E-mail" |
341 | 337 | |
791 | 787 | "Está prestes a usar a sua conta no %(provider_name)s para entrar no " |
792 | 788 | "%(site_name)s. Como um passo final, por favor complete o seguinte formulário:" |
793 | 789 | |
790 | #~ msgid "Account" | |
791 | #~ msgstr "Conta" | |
792 | ||
794 | 793 | #~ msgid "The login and/or password you specified are not correct." |
795 | 794 | #~ msgstr "O login e/ou password que especificou não estão corretos" |
796 | 795 |
6 | 6 | msgstr "" |
7 | 7 | "Project-Id-Version: \n" |
8 | 8 | "Report-Msgid-Bugs-To: \n" |
9 | "POT-Creation-Date: 2019-12-18 11:53-0600\n" | |
9 | "POT-Creation-Date: 2020-05-24 13:46-0500\n" | |
10 | 10 | "PO-Revision-Date: 2017-04-05 22:48+0300\n" |
11 | 11 | "Last-Translator: \n" |
12 | 12 | "Language-Team: \n" |
328 | 328 | msgid "This account is inactive." |
329 | 329 | msgstr "Этот аккаунт неактивен." |
330 | 330 | |
331 | #: templates/account/email.html:5 | |
332 | msgid "Account" | |
333 | msgstr "Аккаунт" | |
334 | ||
335 | #: templates/account/email.html:8 | |
331 | #: templates/account/email.html:5 templates/account/email.html:8 | |
336 | 332 | msgid "E-mail Addresses" |
337 | 333 | msgstr "E-mail адреса" |
338 | 334 | |
785 | 781 | "Вы используете %(provider_name)s для авторизации на \n" |
786 | 782 | "%(site_name)s. Чтобы завершить, заполните следующую форму:" |
787 | 783 | |
784 | #~ msgid "Account" | |
785 | #~ msgstr "Аккаунт" | |
786 | ||
788 | 787 | #~ msgid "The login and/or password you specified are not correct." |
789 | 788 | #~ msgstr "Логин и/или пароль не верны." |
790 | 789 |
6 | 6 | msgstr "" |
7 | 7 | "Project-Id-Version: \n" |
8 | 8 | "Report-Msgid-Bugs-To: \n" |
9 | "POT-Creation-Date: 2019-12-18 11:53-0600\n" | |
9 | "POT-Creation-Date: 2020-05-24 13:46-0500\n" | |
10 | 10 | "PO-Revision-Date: 2017-04-26 12:48+0200\n" |
11 | 11 | "Last-Translator: Tomas Babej <tomasbabej@gmail.com>\n" |
12 | 12 | "Language-Team: \n" |
332 | 332 | msgid "This account is inactive." |
333 | 333 | msgstr "Tento účet je neaktívny." |
334 | 334 | |
335 | #: templates/account/email.html:5 | |
336 | msgid "Account" | |
337 | msgstr "Účet" | |
338 | ||
339 | #: templates/account/email.html:8 | |
335 | #: templates/account/email.html:5 templates/account/email.html:8 | |
340 | 336 | msgid "E-mail Addresses" |
341 | 337 | msgstr "E-mailová adresa" |
342 | 338 | |
806 | 802 | "Chystáte sa použiť váš %(provider_name)s účet na prihlásenie do\n" |
807 | 803 | "%(site_name)s. Ako posledný krok vyplňte nasledujúci formulár:" |
808 | 804 | |
805 | #~ msgid "Account" | |
806 | #~ msgstr "Účet" | |
807 | ||
809 | 808 | #~ msgid "The login and/or password you specified are not correct." |
810 | 809 | #~ msgstr "Uvedený login alebo heslo nie je správne." |
7 | 7 | msgstr "" |
8 | 8 | "Project-Id-Version: PACKAGE VERSION\n" |
9 | 9 | "Report-Msgid-Bugs-To: \n" |
10 | "POT-Creation-Date: 2019-12-18 11:53-0600\n" | |
10 | "POT-Creation-Date: 2020-05-24 13:46-0500\n" | |
11 | 11 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
12 | 12 | "Last-Translator: Nikola Vulovic <nivukiki@gmail.com>\n" |
13 | 13 | "Language-Team: NONE\n" |
331 | 331 | msgid "This account is inactive." |
332 | 332 | msgstr "Овај налог је неактиван." |
333 | 333 | |
334 | #: templates/account/email.html:5 | |
335 | msgid "Account" | |
336 | msgstr "Рачун" | |
337 | ||
338 | #: templates/account/email.html:8 | |
334 | #: templates/account/email.html:5 templates/account/email.html:8 | |
339 | 335 | msgid "E-mail Addresses" |
340 | 336 | msgstr "Адресе е-поште" |
341 | 337 | |
800 | 796 | msgstr "" |
801 | 797 | "Управо користите свој рачун код %(provider_name)s да бисте се пријавили на\n" |
802 | 798 | "%(site_name)s. Као последњи корак, молимо попуните следећи образац:" |
799 | ||
800 | #~ msgid "Account" | |
801 | #~ msgstr "Рачун" |
7 | 7 | msgstr "" |
8 | 8 | "Project-Id-Version: PACKAGE VERSION\n" |
9 | 9 | "Report-Msgid-Bugs-To: \n" |
10 | "POT-Creation-Date: 2019-12-18 11:53-0600\n" | |
10 | "POT-Creation-Date: 2020-05-24 13:46-0500\n" | |
11 | 11 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
12 | 12 | "Last-Translator: Nikola Vulovic <nivukiki@gmail.com>\n" |
13 | 13 | "Language-Team: NONE\n" |
331 | 331 | msgid "This account is inactive." |
332 | 332 | msgstr "Ovaj nalog je neaktivan." |
333 | 333 | |
334 | #: templates/account/email.html:5 | |
335 | msgid "Account" | |
336 | msgstr "Račun" | |
337 | ||
338 | #: templates/account/email.html:8 | |
334 | #: templates/account/email.html:5 templates/account/email.html:8 | |
339 | 335 | msgid "E-mail Addresses" |
340 | 336 | msgstr "Adrese e-pošte" |
341 | 337 | |
800 | 796 | msgstr "" |
801 | 797 | "Upravo koristite svoj račun kod %(provider_name)s da biste se prijavili na\n" |
802 | 798 | "%(site_name)s. Kao poslednji korak, molimo popunite sledeći obrazac:" |
799 | ||
800 | #~ msgid "Account" | |
801 | #~ msgstr "Račun" |
6 | 6 | msgstr "" |
7 | 7 | "Project-Id-Version: django-allauth\n" |
8 | 8 | "Report-Msgid-Bugs-To: \n" |
9 | "POT-Creation-Date: 2019-12-18 11:53-0600\n" | |
9 | "POT-Creation-Date: 2020-05-24 13:46-0500\n" | |
10 | 10 | "PO-Revision-Date: 2014-08-12 00:35+0200\n" |
11 | 11 | "Last-Translator: Jannis \n" |
12 | 12 | "Language-Team: Swedish (http://www.transifex.com/projects/p/django-allauth/" |
339 | 339 | msgid "This account is inactive." |
340 | 340 | msgstr "Detta konto är inaktivt." |
341 | 341 | |
342 | #: templates/account/email.html:5 | |
343 | msgid "Account" | |
344 | msgstr "Konto" | |
345 | ||
346 | #: templates/account/email.html:8 | |
342 | #: templates/account/email.html:5 templates/account/email.html:8 | |
347 | 343 | msgid "E-mail Addresses" |
348 | 344 | msgstr "Epost-adresser" |
349 | 345 | |
807 | 803 | "Du håller på att logga in via ditt konto på %(provider_name)s på \n" |
808 | 804 | "%(site_name)s. Fyll i följande formulär för att slutföra inloggningen:" |
809 | 805 | |
806 | #~ msgid "Account" | |
807 | #~ msgstr "Konto" | |
808 | ||
810 | 809 | #~ msgid "The login and/or password you specified are not correct." |
811 | 810 | #~ msgstr "Inloggningen och/eller lösenordet är felaktigt." |
812 | 811 |
9 | 9 | msgstr "" |
10 | 10 | "Project-Id-Version: django-allauth\n" |
11 | 11 | "Report-Msgid-Bugs-To: \n" |
12 | "POT-Creation-Date: 2019-12-18 11:53-0600\n" | |
12 | "POT-Creation-Date: 2020-05-24 13:46-0500\n" | |
13 | 13 | "PO-Revision-Date: 2015-06-26 13:09+0700\n" |
14 | 14 | "Last-Translator: Nattaphoom Chaipreecha <attomos@gmail.com>\n" |
15 | 15 | "Language-Team: Thai <LL@li.org>\n" |
335 | 335 | msgid "This account is inactive." |
336 | 336 | msgstr "บัญชีนี้ไม่มีการใช้งาน" |
337 | 337 | |
338 | #: templates/account/email.html:5 | |
339 | msgid "Account" | |
340 | msgstr "บัญชี" | |
341 | ||
342 | #: templates/account/email.html:8 | |
338 | #: templates/account/email.html:5 templates/account/email.html:8 | |
343 | 339 | msgid "E-mail Addresses" |
344 | 340 | msgstr "อีเมล" |
345 | 341 | |
802 | 798 | "คุณกำลังจะทำการใช้บัญชี %(provider_name)s ของคุณ ในการเข้าสู่ระบบของ\n" |
803 | 799 | "%(site_name)s. ในขั้นตอนสุดท้าย กรุณากรอกฟอร์มข้างล่าง:" |
804 | 800 | |
801 | #~ msgid "Account" | |
802 | #~ msgstr "บัญชี" | |
803 | ||
805 | 804 | #~ msgid "The login and/or password you specified are not correct." |
806 | 805 | #~ msgstr "การลงชื่เข้าใช้และ/หรือรหัสผ่านที่ระบุมาไม่ถูกต้อง" |
807 | 806 |
7 | 7 | msgstr "" |
8 | 8 | "Project-Id-Version: django-allauth\n" |
9 | 9 | "Report-Msgid-Bugs-To: \n" |
10 | "POT-Creation-Date: 2019-12-18 11:53-0600\n" | |
10 | "POT-Creation-Date: 2020-05-24 13:46-0500\n" | |
11 | 11 | "PO-Revision-Date: 2014-08-12 00:35+0200\n" |
12 | 12 | "Last-Translator: Jannis \n" |
13 | 13 | "Language-Team: Turkish (http://www.transifex.com/projects/p/django-allauth/" |
342 | 342 | msgid "This account is inactive." |
343 | 343 | msgstr "Bu hesap etkin değil." |
344 | 344 | |
345 | #: templates/account/email.html:5 | |
346 | msgid "Account" | |
347 | msgstr "Hesap" | |
348 | ||
349 | #: templates/account/email.html:8 | |
345 | #: templates/account/email.html:5 templates/account/email.html:8 | |
350 | 346 | msgid "E-mail Addresses" |
351 | 347 | msgstr "E-posta Adresleri" |
352 | 348 | |
810 | 806 | "%(site_name)s sitesine giriş yapmak için %(provider_name)s hesabınızı " |
811 | 807 | "kullanmak üzeresiniz. Son bir adım olarak, lütfen şu formu doldurun:" |
812 | 808 | |
809 | #~ msgid "Account" | |
810 | #~ msgstr "Hesap" | |
811 | ||
813 | 812 | #~ msgid "The login and/or password you specified are not correct." |
814 | 813 | #~ msgstr "Girdiğiniz giriş bilgisi ve/veya parola doğru değil." |
815 | 814 |
7 | 7 | msgstr "" |
8 | 8 | "Project-Id-Version: PACKAGE VERSION\n" |
9 | 9 | "Report-Msgid-Bugs-To: \n" |
10 | "POT-Creation-Date: 2019-12-18 11:53-0600\n" | |
10 | "POT-Creation-Date: 2020-05-24 13:46-0500\n" | |
11 | 11 | "PO-Revision-Date: 2014-08-12 00:36+0200\n" |
12 | 12 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
13 | 13 | "Language-Team: LANGUAGE <LL@li.org>\n" |
333 | 333 | msgid "This account is inactive." |
334 | 334 | msgstr "Даний акаунт неактивний" |
335 | 335 | |
336 | #: templates/account/email.html:5 | |
337 | msgid "Account" | |
338 | msgstr "Акаунт" | |
339 | ||
340 | #: templates/account/email.html:8 | |
336 | #: templates/account/email.html:5 templates/account/email.html:8 | |
341 | 337 | msgid "E-mail Addresses" |
342 | 338 | msgstr "E-mail адреса" |
343 | 339 | |
816 | 812 | "Ви використовуєте Ваш %(provider_name)s акаунт для авторизації на\n" |
817 | 813 | "%(site_name)s. Для завершення, будь ласка, заповніть наступну форму:" |
818 | 814 | |
815 | #~ msgid "Account" | |
816 | #~ msgstr "Акаунт" | |
817 | ||
819 | 818 | #~ msgid "The login and/or password you specified are not correct." |
820 | 819 | #~ msgstr "Введений login і/або пароль є некоректними." |
821 | 820 |
6 | 6 | msgstr "" |
7 | 7 | "Project-Id-Version: django-allauth\n" |
8 | 8 | "Report-Msgid-Bugs-To: \n" |
9 | "POT-Creation-Date: 2019-12-18 11:53-0600\n" | |
9 | "POT-Creation-Date: 2020-05-24 13:46-0500\n" | |
10 | 10 | "PO-Revision-Date: 2014-08-12 00:36+0200\n" |
11 | 11 | "Last-Translator: jresins <jresins@gmail.com>\n" |
12 | 12 | "Language-Team: LANGUAGE <LL@li.org>\n" |
337 | 337 | msgid "This account is inactive." |
338 | 338 | msgstr "此账号未激活" |
339 | 339 | |
340 | #: templates/account/email.html:5 | |
341 | msgid "Account" | |
342 | msgstr "账号" | |
343 | ||
344 | #: templates/account/email.html:8 | |
340 | #: templates/account/email.html:5 templates/account/email.html:8 | |
345 | 341 | msgid "E-mail Addresses" |
346 | 342 | msgstr "E-mail地址" |
347 | 343 | |
791 | 787 | msgstr "" |
792 | 788 | "您将使用您的%(provider_name)s账号登录\n" |
793 | 789 | "%(site_name)s。作为最后一步,请完成以下表单:" |
790 | ||
791 | #~ msgid "Account" | |
792 | #~ msgstr "账号" | |
794 | 793 | |
795 | 794 | #~ msgid "The login and/or password you specified are not correct." |
796 | 795 | #~ msgstr "您提供的账号或密码错误" |
7 | 7 | msgstr "" |
8 | 8 | "Project-Id-Version: PACKAGE VERSION\n" |
9 | 9 | "Report-Msgid-Bugs-To: \n" |
10 | "POT-Creation-Date: 2019-12-18 11:53-0600\n" | |
10 | "POT-Creation-Date: 2020-05-24 13:46-0500\n" | |
11 | 11 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
12 | 12 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
13 | 13 | "Language-Team: LANGUAGE <LL@li.org>\n" |
339 | 339 | msgid "This account is inactive." |
340 | 340 | msgstr "此账号未激活" |
341 | 341 | |
342 | #: templates/account/email.html:5 | |
343 | msgid "Account" | |
344 | msgstr "账号" | |
345 | ||
346 | #: templates/account/email.html:8 | |
342 | #: templates/account/email.html:5 templates/account/email.html:8 | |
347 | 343 | msgid "E-mail Addresses" |
348 | 344 | msgstr "E-mail地址" |
349 | 345 | |
792 | 788 | msgstr "" |
793 | 789 | "您将使用您的%(provider_name)s账号登录\n" |
794 | 790 | "%(site_name)s。作为最后一步,请完成以下表单:" |
791 | ||
792 | #~ msgid "Account" | |
793 | #~ msgstr "账号" | |
795 | 794 | |
796 | 795 | #~ msgid "The login and/or password you specified are not correct." |
797 | 796 | #~ msgstr "您提供的账号或密码错误" |
7 | 7 | msgstr "" |
8 | 8 | "Project-Id-Version: PACKAGE VERSION\n" |
9 | 9 | "Report-Msgid-Bugs-To: \n" |
10 | "POT-Creation-Date: 2019-12-18 11:53-0600\n" | |
10 | "POT-Creation-Date: 2020-05-24 13:46-0500\n" | |
11 | 11 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
12 | 12 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
13 | 13 | "Language-Team: LANGUAGE <LL@li.org>\n" |
335 | 335 | msgid "This account is inactive." |
336 | 336 | msgstr "這個帳號未啟用" |
337 | 337 | |
338 | #: templates/account/email.html:5 | |
339 | msgid "Account" | |
340 | msgstr "帳號" | |
341 | ||
342 | #: templates/account/email.html:8 | |
338 | #: templates/account/email.html:5 templates/account/email.html:8 | |
343 | 339 | msgid "E-mail Addresses" |
344 | 340 | msgstr "電子郵件地址" |
345 | 341 | |
792 | 788 | msgstr "" |
793 | 789 | "您將使用 %(provider_name)s 這個帳號登入\n" |
794 | 790 | " %(site_name)s 這個網站。最後一步,請填完下列表單:" |
791 | ||
792 | #~ msgid "Account" | |
793 | #~ msgstr "帳號" | |
795 | 794 | |
796 | 795 | #~ msgid "The login and/or password you specified are not correct." |
797 | 796 | #~ msgstr "您提供的帳號或密碼不正確。" |
5 | 5 | msgstr "" |
6 | 6 | "Project-Id-Version: django-allauth\n" |
7 | 7 | "Report-Msgid-Bugs-To: \n" |
8 | "POT-Creation-Date: 2019-12-18 11:53-0600\n" | |
8 | "POT-Creation-Date: 2020-05-24 13:46-0500\n" | |
9 | 9 | "PO-Revision-Date: 2014-08-12 00:36+0200\n" |
10 | 10 | "Last-Translator: jresins <jresins@gmail.com>\n" |
11 | 11 | "Language-Team: Chinese (Traditional)\n" |
332 | 332 | msgid "This account is inactive." |
333 | 333 | msgstr "這個帳號未啟用" |
334 | 334 | |
335 | #: templates/account/email.html:5 | |
336 | msgid "Account" | |
337 | msgstr "帳號" | |
338 | ||
339 | #: templates/account/email.html:8 | |
335 | #: templates/account/email.html:5 templates/account/email.html:8 | |
340 | 336 | msgid "E-mail Addresses" |
341 | 337 | msgstr "電子郵件地址" |
342 | 338 | |
789 | 785 | msgstr "" |
790 | 786 | "您將使用 %(provider_name)s 這個帳號登入\n" |
791 | 787 | " %(site_name)s 這個網站。最後一步,請填完下列表單:" |
788 | ||
789 | #~ msgid "Account" | |
790 | #~ msgstr "帳號" | |
792 | 791 | |
793 | 792 | #~ msgid "The login and/or password you specified are not correct." |
794 | 793 | #~ msgstr "您提供的帳號或密碼不正確。" |
9 | 9 | """Simple JSON field that stores python structures as JSON strings |
10 | 10 | on database. |
11 | 11 | """ |
12 | if django.VERSION < (2, 0): | |
12 | if django.VERSION < (3, 0): | |
13 | 13 | def from_db_value(self, value, expression, connection, context): |
14 | 14 | return self.to_python(value) |
15 | 15 | else: |
12 | 12 | provider_id = AmazonProvider.id |
13 | 13 | access_token_url = 'https://api.amazon.com/auth/o2/token' |
14 | 14 | authorize_url = 'http://www.amazon.com/ap/oa' |
15 | profile_url = 'https://www.amazon.com/ap/user/profile' | |
15 | profile_url = 'https://api.amazon.com/user/profile' | |
16 | 16 | supports_state = False |
17 | 17 | redirect_uri_protocol = 'https' |
18 | 18 |
9 | 9 | |
10 | 10 | class DiscordOAuth2Adapter(OAuth2Adapter): |
11 | 11 | provider_id = DiscordProvider.id |
12 | access_token_url = 'https://discordapp.com/api/oauth2/token' | |
13 | authorize_url = 'https://discordapp.com/api/oauth2/authorize' | |
14 | profile_url = 'https://discordapp.com/api/users/@me' | |
12 | access_token_url = 'https://discord.com/api/oauth2/token' | |
13 | authorize_url = 'https://discord.com/api/oauth2/authorize' | |
14 | profile_url = 'https://discord.com/api/users/@me' | |
15 | 15 | |
16 | 16 | def complete_login(self, request, app, token, **kwargs): |
17 | 17 | headers = { |
0 | from allauth.socialaccount.providers.base import ProviderAccount | |
1 | from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider | |
2 | ||
3 | ||
4 | class EdxAccount(ProviderAccount): | |
5 | def get_profile_url(self): | |
6 | if self.account.extra_data['profile_image']['has_image']: | |
7 | return self.account.extra_data['image_url_full'] | |
8 | ||
9 | ||
10 | class EdxProvider(OAuth2Provider): | |
11 | id = 'edx' | |
12 | name = 'Edx' | |
13 | account_class = EdxAccount | |
14 | ||
15 | def get_default_scope(self): | |
16 | return ['profile'] | |
17 | ||
18 | def extract_uid(self, data): | |
19 | """Extract uid ('id') and ensure it's a str.""" | |
20 | return str(data['username']) | |
21 | ||
22 | def extract_common_fields(self, data): | |
23 | return dict( | |
24 | email=data.get('email'), | |
25 | username=data.get('username'), | |
26 | name=data.get('name'), | |
27 | user_id=data.get('user_id'), | |
28 | ) | |
29 | ||
30 | ||
31 | provider_classes = [EdxProvider] |
0 | from allauth.socialaccount.tests import OAuth2TestsMixin | |
1 | from allauth.tests import MockedResponse, TestCase | |
2 | ||
3 | from .provider import EdxProvider | |
4 | ||
5 | ||
6 | class EdxTests(OAuth2TestsMixin, TestCase): | |
7 | provider_id = EdxProvider.id | |
8 | ||
9 | def get_mocked_response(self): | |
10 | print(self) | |
11 | return MockedResponse(200, """{ | |
12 | "username":"krzysztof", | |
13 | "bio":null, | |
14 | "requires_parental_consent":true, | |
15 | "language_proficiencies":[ | |
16 | ||
17 | ], | |
18 | "name":"Krzysztof Hoffmann", | |
19 | "country":null, | |
20 | "social_links":[ | |
21 | ||
22 | ], | |
23 | "is_active":true, | |
24 | "profile_image":{ | |
25 | "image_url_small":"http://draft.navoica.pl/static/images/profiles/default_30.png", | |
26 | "image_url_full":"http://draft.navoica.pl/static/images/profiles/default_500.png", | |
27 | "image_url_large":"http://draft.navoica.pl/static/images/profiles/default_120.png", | |
28 | "image_url_medium":"http://draft.navoica.pl/static/images/profiles/default_50.png", | |
29 | "has_image":false | |
30 | }, | |
31 | "extended_profile":[ | |
32 | ||
33 | ], | |
34 | "year_of_birth":null, | |
35 | "level_of_education":null, | |
36 | "goals":"", | |
37 | "accomplishments_shared":false, | |
38 | "gender":null, | |
39 | "date_joined":"2019-09-21T07:48:31Z", | |
40 | "mailing_address":"", | |
41 | "email":"krzysztof.hoffmann@opi.org.pl", | |
42 | "account_privacy":"private" | |
43 | }""") |
0 | from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns | |
1 | ||
2 | from .provider import EdxProvider | |
3 | ||
4 | ||
5 | urlpatterns = default_urlpatterns(EdxProvider) |
0 | import requests | |
1 | ||
2 | from allauth.socialaccount import app_settings | |
3 | from allauth.socialaccount.providers.oauth2.views import ( | |
4 | OAuth2Adapter, | |
5 | OAuth2CallbackView, | |
6 | OAuth2LoginView, | |
7 | ) | |
8 | ||
9 | from .provider import EdxProvider | |
10 | ||
11 | ||
12 | class EdxOAuth2Adapter(OAuth2Adapter): | |
13 | provider_id = EdxProvider.id | |
14 | provider_default_url = 'https://edx.org' | |
15 | ||
16 | settings = app_settings.PROVIDERS.get(provider_id, {}) | |
17 | provider_base_url = settings.get('EDX_URL', provider_default_url) | |
18 | ||
19 | access_token_url = '{0}/oauth2/access_token'.format(provider_base_url) | |
20 | authorize_url = '{0}/oauth2/authorize/'.format(provider_base_url) | |
21 | profile_url = '{0}/api/user/v1/me'.format(provider_base_url) | |
22 | account_url = '{0}/api/user/v1/accounts/{1}' | |
23 | supports_state = False | |
24 | redirect_uri_protocol = 'https' | |
25 | ||
26 | def complete_login(self, request, app, token, **kwargs): | |
27 | response = requests.get( | |
28 | self.profile_url, | |
29 | params={'access_token': token}) | |
30 | extra_data = response.json() | |
31 | ||
32 | if extra_data.get('email', None) is None: | |
33 | response = requests.get( | |
34 | self.account_url.format(self.provider_base_url, | |
35 | extra_data['username']), | |
36 | params={'access_token': token}) | |
37 | extra_data = response.json() | |
38 | ||
39 | return self.get_provider().sociallogin_from_response( | |
40 | request, | |
41 | extra_data) | |
42 | ||
43 | ||
44 | oauth2_login = OAuth2LoginView.adapter_view(EdxOAuth2Adapter) | |
45 | oauth2_callback = OAuth2CallbackView.adapter_view(EdxOAuth2Adapter) |
23 | 23 | |
24 | 24 | |
25 | 25 | GRAPH_API_VERSION = getattr(settings, 'SOCIALACCOUNT_PROVIDERS', {}).get( |
26 | 'facebook', {}).get('VERSION', 'v2.12') | |
26 | 'facebook', {}).get('VERSION', 'v7.0') | |
27 | 27 | GRAPH_API_URL = 'https://graph.facebook.com/' + GRAPH_API_VERSION |
28 | 28 | |
29 | 29 | NONCE_SESSION_KEY = 'allauth_facebook_nonce' |
71 | 71 | js = "allauth.facebook.login(%s, %s, %s, %s)" % ( |
72 | 72 | next, action, process, scope) |
73 | 73 | ret = "javascript:%s" % (urlquote(js),) |
74 | else: | |
75 | assert method == 'oauth2' | |
74 | elif method == 'oauth2': | |
76 | 75 | ret = super(FacebookProvider, self).get_login_url(request, |
77 | 76 | **kwargs) |
77 | else: | |
78 | raise RuntimeError('Invalid method specified: %s' % method) | |
78 | 79 | return ret |
79 | 80 | |
80 | 81 | def _get_locale_callable(self): |
81 | 82 | settings = self.get_settings() |
82 | f = settings.get('LOCALE_FUNC') | |
83 | if f: | |
84 | f = import_callable(f) | |
85 | else: | |
86 | f = get_default_locale_callable() | |
87 | return f | |
83 | func = settings.get('LOCALE_FUNC') | |
84 | return import_callable(func) if func else get_default_locale_callable() | |
88 | 85 | |
89 | 86 | def get_locale_for_request(self, request): |
90 | 87 | if not self._locale_callable_cache: |
25 | 25 | emails_url = '{0}/user/emails'.format(api_url) |
26 | 26 | |
27 | 27 | def complete_login(self, request, app, token, **kwargs): |
28 | params = {'access_token': token.token} | |
29 | resp = requests.get(self.profile_url, params=params) | |
28 | headers = {'Authorization': 'token {}'.format(token.token)} | |
29 | resp = requests.get(self.profile_url, headers=headers) | |
30 | 30 | resp.raise_for_status() |
31 | 31 | extra_data = resp.json() |
32 | 32 | if app_settings.QUERY_EMAIL and not extra_data.get('email'): |
33 | extra_data['email'] = self.get_email(token) | |
33 | extra_data['email'] = self.get_email(headers) | |
34 | 34 | return self.get_provider().sociallogin_from_response( |
35 | 35 | request, extra_data |
36 | 36 | ) |
37 | 37 | |
38 | def get_email(self, token): | |
38 | def get_email(self, headers): | |
39 | 39 | email = None |
40 | params = {'access_token': token.token} | |
41 | resp = requests.get(self.emails_url, params=params) | |
40 | resp = requests.get(self.emails_url, headers=headers) | |
42 | 41 | resp.raise_for_status() |
43 | 42 | emails = resp.json() |
44 | 43 | if resp.status_code == 200 and emails: |
7 | 7 | |
8 | 8 | def get_profile_url(self): |
9 | 9 | return self.PROFILE_URL + self.account.extra_data.get('username') |
10 | ||
11 | def get_avatar_url(self): | |
12 | return self.account.extra_data.get('profile_picture') | |
13 | 10 | |
14 | 11 | def to_str(self): |
15 | 12 | dflt = super(InstagramAccount, self).to_str() |
22 | 19 | account_class = InstagramAccount |
23 | 20 | |
24 | 21 | def extract_extra_data(self, data): |
25 | return data.get('data', {}) | |
22 | return data | |
26 | 23 | |
27 | 24 | def get_default_scope(self): |
28 | 25 | return ['basic'] |
29 | 26 | |
30 | 27 | def extract_uid(self, data): |
31 | return str(data['data']['id']) | |
28 | return str(data['id']) | |
32 | 29 | |
33 | 30 | def extract_common_fields(self, data): |
34 | return dict(username=data['data'].get('username'), | |
35 | name=data['data'].get('full_name')) | |
31 | return dict(username=data.get('username')) | |
36 | 32 | |
37 | 33 | |
38 | 34 | provider_classes = [InstagramProvider] |
9 | 9 | def get_mocked_response(self): |
10 | 10 | return MockedResponse(200, """ |
11 | 11 | { |
12 | "meta": { | |
13 | "code": 200 | |
14 | }, | |
15 | "data": { | |
16 | 12 | "username": "georgewhewell", |
17 | 13 | "bio": "", |
18 | 14 | "website": "", |
25 | 21 | "follows": 104 |
26 | 22 | }, |
27 | 23 | "id": "11428116" |
28 | } | |
29 | 24 | }""") # noqa |
12 | 12 | provider_id = InstagramProvider.id |
13 | 13 | access_token_url = 'https://api.instagram.com/oauth/access_token' |
14 | 14 | authorize_url = 'https://api.instagram.com/oauth/authorize' |
15 | profile_url = 'https://api.instagram.com/v1/users/self' | |
15 | profile_url = 'https://graph.instagram.com/me' | |
16 | 16 | |
17 | 17 | def complete_login(self, request, app, token, **kwargs): |
18 | 18 | resp = requests.get(self.profile_url, |
19 | params={'access_token': token.token}) | |
19 | params={'access_token': token.token, | |
20 | 'fields': ['id', 'username']}) | |
20 | 21 | resp.raise_for_status() |
21 | 22 | extra_data = resp.json() |
22 | 23 | return self.get_provider().sociallogin_from_response(request, |
17 | 17 | def complete_login(self, request, app, token, **kwargs): |
18 | 18 | headers = {'Authorization': 'Bearer {0}'.format(token.token)} |
19 | 19 | resp = requests.get(self.profile_url, headers=headers) |
20 | resp.raise_for_status() | |
20 | 21 | extra_data = resp.json() |
21 | 22 | return self.get_provider().sociallogin_from_response(request, |
22 | 23 | extra_data) |
0 | # -*- coding: utf-8 -*- | |
1 | from allauth.socialaccount.providers.base import ProviderAccount | |
2 | from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider | |
3 | ||
4 | ||
5 | class KeycloakAccount(ProviderAccount): | |
6 | ||
7 | def get_avatar_url(self): | |
8 | return self.account.extra_data.get('picture') | |
9 | ||
10 | def to_str(self): | |
11 | dflt = super(KeycloakAccount, self).to_str() | |
12 | return self.account.extra_data.get('name', dflt) | |
13 | ||
14 | ||
15 | class KeycloakProvider(OAuth2Provider): | |
16 | id = 'keycloak' | |
17 | name = 'Keycloak' | |
18 | account_class = KeycloakAccount | |
19 | ||
20 | def get_default_scope(self): | |
21 | return ['openid', 'profile', 'email'] | |
22 | ||
23 | def extract_uid(self, data): | |
24 | return str(data['id']) | |
25 | ||
26 | def extract_common_fields(self, data): | |
27 | return dict( | |
28 | email=data.get('email'), | |
29 | username=data.get('username'), | |
30 | name=data.get('name'), | |
31 | user_id=data.get('user_id'), | |
32 | picture=data.get('picture'), | |
33 | ) | |
34 | ||
35 | ||
36 | provider_classes = [KeycloakProvider] |
0 | # -*- coding: utf-8 -*- | |
1 | from allauth.socialaccount.providers.keycloak.provider import KeycloakProvider | |
2 | from allauth.socialaccount.tests import OAuth2TestsMixin | |
3 | from allauth.tests import MockedResponse, TestCase | |
4 | ||
5 | ||
6 | class KeycloakTests(OAuth2TestsMixin, TestCase): | |
7 | provider_id = KeycloakProvider.id | |
8 | ||
9 | def get_mocked_response(self): | |
10 | return MockedResponse(200, """ | |
11 | { | |
12 | "picture": "https://secure.gravatar.com/avatar/123", | |
13 | "email": "mr.bob@your.Keycloak.server.example.com", | |
14 | "id": 2, | |
15 | "sub": 2, | |
16 | "identities": [], | |
17 | "name": "Mr Bob" | |
18 | } | |
19 | """) |
0 | # -*- coding: utf-8 -*- | |
1 | from allauth.socialaccount.providers.keycloak.provider import KeycloakProvider | |
2 | from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns | |
3 | ||
4 | ||
5 | urlpatterns = default_urlpatterns(KeycloakProvider) |
0 | # -*- coding: utf-8 -*- | |
1 | import requests | |
2 | ||
3 | from allauth.socialaccount import app_settings | |
4 | from allauth.socialaccount.providers.keycloak.provider import KeycloakProvider | |
5 | from allauth.socialaccount.providers.oauth2.views import ( | |
6 | OAuth2Adapter, | |
7 | OAuth2CallbackView, | |
8 | OAuth2LoginView, | |
9 | ) | |
10 | ||
11 | ||
12 | class KeycloakOAuth2Adapter(OAuth2Adapter): | |
13 | provider_id = KeycloakProvider.id | |
14 | supports_state = True | |
15 | ||
16 | settings = app_settings.PROVIDERS.get(provider_id, {}) | |
17 | provider_base_url = '{0}/realms/{1}'.format( | |
18 | settings.get("KEYCLOAK_URL"), settings.get("KEYCLOAK_REALM")) | |
19 | ||
20 | access_token_url = '{0}/protocol/openid-connect/token' \ | |
21 | .format(provider_base_url) | |
22 | authorize_url = '{0}/protocol/openid-connect/auth' \ | |
23 | .format(provider_base_url) | |
24 | profile_url = '{0}/protocol/openid-connect/userinfo' \ | |
25 | .format(provider_base_url) | |
26 | ||
27 | def complete_login(self, request, app, token, response): | |
28 | response = requests.post(self.profile_url, headers={ | |
29 | 'Authorization': 'Bearer ' + str(token) | |
30 | }) | |
31 | response.raise_for_status() | |
32 | extra_data = response.json() | |
33 | extra_data['id'] = extra_data['sub'] | |
34 | del extra_data['sub'] | |
35 | ||
36 | return self.get_provider().sociallogin_from_response( | |
37 | request, | |
38 | extra_data | |
39 | ) | |
40 | ||
41 | ||
42 | oauth2_login = OAuth2LoginView.adapter_view(KeycloakOAuth2Adapter) | |
43 | oauth2_callback = OAuth2CallbackView.adapter_view(KeycloakOAuth2Adapter) |
7 | 7 | |
8 | 8 | def to_str(self): |
9 | 9 | name = self.account.extra_data.get('displayName') |
10 | if name.strip() != '': | |
10 | if name and name.strip() != '': | |
11 | 11 | return name |
12 | 12 | return super(MicrosoftGraphAccount, self).to_str() |
13 | 13 |
0 | from allauth.socialaccount.providers.base import ProviderAccount | |
1 | from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider | |
2 | ||
3 | ||
4 | class MixerAccount(ProviderAccount): | |
5 | def _get_token(self): | |
6 | return self.account.extra_data.get('channel', {}).get('token') | |
7 | ||
8 | def get_profile_url(self): | |
9 | return 'https://mixer.com/' + self._get_token() | |
10 | ||
11 | def get_avatar_url(self): | |
12 | return self.account.extra_data.get('avatarUrl') | |
13 | ||
14 | def to_str(self): | |
15 | return self._get_token() | |
16 | ||
17 | ||
18 | class MixerProvider(OAuth2Provider): | |
19 | id = 'mixer' | |
20 | name = 'Mixer' | |
21 | account_class = MixerAccount | |
22 | ||
23 | def get_default_scope(self): | |
24 | return ['user:details:self'] | |
25 | ||
26 | def extract_uid(self, data): | |
27 | return str(data['id']) | |
28 | ||
29 | def extract_common_fields(self, data): | |
30 | return { | |
31 | 'username': data.get('username'), | |
32 | 'email': data.get('email'), | |
33 | } | |
34 | ||
35 | ||
36 | provider_classes = [MixerProvider] |
0 | from allauth.socialaccount.tests import OAuth2TestsMixin | |
1 | from allauth.tests import MockedResponse, TestCase | |
2 | ||
3 | from .provider import MixerProvider | |
4 | ||
5 | ||
6 | class MixerTests(OAuth2TestsMixin, TestCase): | |
7 | provider_id = MixerProvider.id | |
8 | ||
9 | def get_mocked_response(self): | |
10 | return MockedResponse(200, """ | |
11 | { | |
12 | "avatarUrl": "https://uploads.mixer.com/avatar/2evg7cnb.jpg", | |
13 | "id": 101052282, | |
14 | "bio": "Ninja is the one of the world's most popular gamers.", | |
15 | "channel": { | |
16 | "id": 90571077, | |
17 | "audience": "teen", | |
18 | "token": "ninja", | |
19 | "viewersCurrent": 0, | |
20 | "viewersTotal": 43349053, | |
21 | "numFollowers": 2840127, | |
22 | "name": "TEM TEM TIME", | |
23 | "online": false, | |
24 | "languageId": "en" | |
25 | }, | |
26 | "createdAt": "2019-08-01T16:45:00.000Z", | |
27 | "deleatedAt": null, | |
28 | "experience": 401922, | |
29 | "frontendVersion": null, | |
30 | "groups": [ | |
31 | {"id": 1, "name": "User"}, | |
32 | {"id": 19, "name": "Partner"}, | |
33 | {"id": 12, "name": "Pro"} | |
34 | ], | |
35 | "level": 103, | |
36 | "primaryTeam": null, | |
37 | "social": { | |
38 | "facebook": "https://www.facebook.com/NinjaTB" | |
39 | }, | |
40 | "sparks": 7874598, | |
41 | "updatedAt": "2020-01-06T19:26:43.640Z", | |
42 | "username": "Ninja", | |
43 | "verified": true | |
44 | }""") |
0 | from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns | |
1 | ||
2 | from .provider import MixerProvider | |
3 | ||
4 | ||
5 | urlpatterns = default_urlpatterns(MixerProvider) |
0 | import requests | |
1 | ||
2 | from allauth.socialaccount.providers.oauth2.views import ( | |
3 | OAuth2Adapter, | |
4 | OAuth2CallbackView, | |
5 | OAuth2LoginView, | |
6 | ) | |
7 | ||
8 | from .provider import MixerProvider | |
9 | ||
10 | ||
11 | class MixerOAuth2Adapter(OAuth2Adapter): | |
12 | provider_id = MixerProvider.id | |
13 | access_token_url = 'https://mixer.com/api/v1/oauth/token' | |
14 | authorize_url = 'https://mixer.com/oauth/authorize' | |
15 | profile_url = 'https://mixer.com/api/v1/users/current' | |
16 | ||
17 | def complete_login(self, request, app, token, **kwargs): | |
18 | headers = {'Authorization': 'Bearer {}'.format(token.token)} | |
19 | response = requests.get(self.profile_url, headers=headers) | |
20 | response.raise_for_status() | |
21 | ||
22 | data = response.json() | |
23 | ||
24 | return self.get_provider().sociallogin_from_response( | |
25 | request, data | |
26 | ) | |
27 | ||
28 | ||
29 | oauth2_login = OAuth2LoginView.adapter_view(MixerOAuth2Adapter) | |
30 | oauth2_callback = OAuth2CallbackView.adapter_view(MixerOAuth2Adapter) |
17 | 17 | def complete_login(self, request, app, token, **kwargs): |
18 | 18 | headers = {'Authorization': 'Bearer {0}'.format(token.token)} |
19 | 19 | resp = requests.get(self.profile_url, headers=headers) |
20 | resp.raise_for_status() | |
20 | 21 | extra_data = resp.json().get('response') |
21 | 22 | return self.get_provider().sociallogin_from_response(request, |
22 | 23 | extra_data) |
24 | 24 | request, extra_data) |
25 | 25 | |
26 | 26 | def get_user_info(self, token, user_id): |
27 | headers = {'Authorization': 'Bearer {0}'.format(self.server)} | |
27 | headers = {'Authorization': 'Bearer {0}'.format(token)} | |
28 | 28 | resp = requests.get(self.profile_url + user_id, headers=headers) |
29 | 29 | resp.raise_for_status() |
30 | 30 | data = ET.fromstring(resp.content.decode())[1] |
3 | 3 | |
4 | 4 | class OdnoklassnikiAccount(ProviderAccount): |
5 | 5 | def get_profile_url(self): |
6 | return self.account.extra_data.get('link') | |
6 | return 'https://ok.ru/profile/' + self.account.extra_data['uid'] | |
7 | 7 | |
8 | 8 | def get_avatar_url(self): |
9 | 9 | ret = None |
6 | 6 | return 'http://twitch.tv/' + self.account.extra_data.get('login') |
7 | 7 | |
8 | 8 | def get_avatar_url(self): |
9 | return self.account.extra_data.get('logo') | |
9 | # We're using `logo` as a failback for legacy profiles retrieved | |
10 | # with the old https://api.twitch.tv/kraken/user endpoint. | |
11 | logo = self.account.extra_data.get('logo') | |
12 | return self.account.extra_data.get('profile_image_url', logo) | |
10 | 13 | |
11 | 14 | def to_str(self): |
12 | 15 | dflt = super(TwitchAccount, self).to_str() |
0 | from django.test.client import RequestFactory | |
1 | from django.urls import reverse | |
2 | ||
0 | 3 | from allauth.socialaccount.models import SocialToken |
1 | 4 | from allauth.socialaccount.providers.oauth2.client import OAuth2Error |
2 | 5 | from allauth.socialaccount.tests import OAuth2TestsMixin |
4 | 7 | |
5 | 8 | from .provider import TwitchProvider |
6 | 9 | from .views import TwitchOAuth2Adapter |
7 | ||
8 | ||
9 | class MockObject(object): | |
10 | pass | |
11 | 10 | |
12 | 11 | |
13 | 12 | class TwitchTests(OAuth2TestsMixin, TestCase): |
85 | 84 | we can check that the specific erros are raised before |
86 | 85 | they are caught and rendered to generic error HTML |
87 | 86 | """ |
88 | request = MockObject() | |
89 | app = MockObject() | |
87 | request = RequestFactory().get( | |
88 | reverse(self.provider.id + '_login'), | |
89 | {'process': 'login'}, | |
90 | ) | |
91 | adapter = TwitchOAuth2Adapter(request) | |
92 | app = adapter.get_provider().get_app(request) | |
90 | 93 | token = SocialToken(token='this-is-my-fake-token') |
91 | 94 | |
92 | 95 | with mocked_response(resp_mock): |
16 | 16 | profile_url = 'https://api.twitch.tv/helix/users' |
17 | 17 | |
18 | 18 | def complete_login(self, request, app, token, **kwargs): |
19 | headers = {'Authorization': 'Bearer {}'.format(token.token)} | |
19 | headers = { | |
20 | 'Authorization': 'Bearer {}'.format(token.token), | |
21 | 'Client-ID': app.client_id, | |
22 | } | |
20 | 23 | response = requests.get(self.profile_url, headers=headers) |
21 | 24 | |
22 | 25 | data = response.json() |
0 | 0 | import requests |
1 | 1 | |
2 | from allauth.socialaccount import app_settings | |
2 | 3 | from allauth.socialaccount.providers.oauth2.client import ( |
3 | 4 | OAuth2Client, |
4 | 5 | OAuth2Error, |
5 | 6 | ) |
7 | ||
8 | from .provider import UntappdProvider | |
6 | 9 | |
7 | 10 | |
8 | 11 | class UntappdOAuth2Client(OAuth2Client): |
25 | 28 | if self.access_token_method == 'GET': |
26 | 29 | params = data |
27 | 30 | data = None |
31 | # Allow custom User Agent to comply with Untappd API | |
32 | settings = app_settings.PROVIDERS.get(UntappdProvider.id, {}) | |
33 | headers = { | |
34 | 'User-Agent': settings.get('USER_AGENT', 'django-allauth')} | |
28 | 35 | # TODO: Proper exception handling |
29 | 36 | resp = requests.request(self.access_token_method, |
30 | 37 | url, |
31 | 38 | params=params, |
32 | data=data) | |
39 | data=data, | |
40 | headers=headers) | |
33 | 41 | access_token = None |
34 | 42 | if resp.status_code == 200: |
35 | 43 | access_token = resp.json()['response'] |
4 | 4 | |
5 | 5 | class VKAccount(ProviderAccount): |
6 | 6 | def get_profile_url(self): |
7 | return 'https://vk.com/id%s' % self.account.extra_data.get('uid') | |
7 | return 'https://vk.com/id%s' % self.account.extra_data.get('id') | |
8 | 8 | |
9 | 9 | def get_avatar_url(self): |
10 | 10 | ret = None |
0 | from allauth.account.models import EmailAddress | |
1 | from allauth.socialaccount import app_settings | |
2 | from allauth.socialaccount.providers.base import ProviderAccount | |
3 | from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider | |
4 | ||
5 | ||
6 | class YandexAccout(ProviderAccount): | |
7 | def to_str(self): | |
8 | first_name = self.account.extra_data.get("first_name", "") | |
9 | last_name = self.account.extra_data.get("last_name", "") | |
10 | name = " ".join([first_name, last_name]).strip() | |
11 | return name or super(YandexAccout, self).to_str() | |
12 | ||
13 | ||
14 | class YandexProvider(OAuth2Provider): | |
15 | id = "yandex" | |
16 | name = "Yandex" | |
17 | account_class = YandexAccout | |
18 | ||
19 | def get_default_scope(self): | |
20 | scope = ["login:info"] | |
21 | if app_settings.QUERY_EMAIL: | |
22 | scope.append("login:email") | |
23 | return scope | |
24 | ||
25 | def extract_uid(self, data): | |
26 | return str(data["id"]) | |
27 | ||
28 | def get_user_email(self, data): | |
29 | email = data.get("default_email") | |
30 | if not email: | |
31 | emails = data.get("emails") | |
32 | email = emails[0] if emails else "" | |
33 | return email | |
34 | ||
35 | def extract_common_fields(self, data): | |
36 | email = self.get_user_email(data) | |
37 | return dict( | |
38 | email=email, | |
39 | last_name=data.get("last_name"), | |
40 | username=data.get("display_name"), | |
41 | first_name=data.get("first_name"), | |
42 | ) | |
43 | ||
44 | def extract_email_addresses(self, data): | |
45 | ret = [] | |
46 | email = self.get_user_email(data) | |
47 | if email: | |
48 | ret.append(EmailAddress(email=email, verified=True, primary=True)) | |
49 | return ret | |
50 | ||
51 | ||
52 | provider_classes = [YandexProvider] |
0 | from __future__ import absolute_import | |
1 | ||
2 | from allauth.socialaccount.tests import OAuth2TestsMixin | |
3 | from allauth.tests import MockedResponse, TestCase | |
4 | ||
5 | from .provider import YandexProvider | |
6 | ||
7 | ||
8 | class YandexTests(OAuth2TestsMixin, TestCase): | |
9 | provider_id = YandexProvider.id | |
10 | ||
11 | yandex_data = """ | |
12 | { | |
13 | "login": "vasya", | |
14 | "old_social_login": "uid-mmzxrnry", | |
15 | "default_email": "test@yandex.ru", | |
16 | "id": "1000034426", | |
17 | "client_id": "4760187d81bc4b7799476b42b5103713", | |
18 | "emails": [ | |
19 | "test@yandex.ru", | |
20 | "other-test@yandex.ru" | |
21 | ], | |
22 | "openid_identities": [ | |
23 | "http://openid.yandex.ru/vasya/", | |
24 | "http://vasya.ya.ru/" | |
25 | ] | |
26 | }""" | |
27 | ||
28 | def get_mocked_response(self, data=None): | |
29 | if data is None: | |
30 | data = self.yandex_data | |
31 | return MockedResponse(200, data) | |
32 | ||
33 | def get_login_response_json(self, with_refresh_token=True): | |
34 | return """ | |
35 | { | |
36 | "access_token":"testac", | |
37 | "refresh_token":"1:GN686QVt0mmakDd9:A4pYuW9LGk0_UnlrMIWklk", | |
38 | "token_type":"bearer", | |
39 | "expires_in":124234123534 | |
40 | }""" |
0 | from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns | |
1 | ||
2 | from .provider import YandexProvider | |
3 | ||
4 | ||
5 | urlpatterns = default_urlpatterns(YandexProvider) |
0 | import requests | |
1 | ||
2 | from allauth.socialaccount.providers.oauth2.views import ( | |
3 | OAuth2Adapter, | |
4 | OAuth2CallbackView, | |
5 | OAuth2LoginView, | |
6 | ) | |
7 | ||
8 | from .provider import YandexProvider | |
9 | ||
10 | ||
11 | class YandexAuth2Adapter(OAuth2Adapter): | |
12 | provider_id = YandexProvider.id | |
13 | access_token_url = "https://oauth.yandex.ru/token" | |
14 | authorize_url = "https://oauth.yandex.com/authorize" | |
15 | profile_url = "https://login.yandex.ru/info" | |
16 | ||
17 | def complete_login(self, request, app, token, **kwargs): | |
18 | resp = requests.get( | |
19 | self.profile_url, | |
20 | params={"oauth_token": token.token, "format": "json"}, | |
21 | ) | |
22 | resp.raise_for_status() | |
23 | extra_data = resp.json() | |
24 | return self.get_provider().sociallogin_from_response( | |
25 | request, extra_data | |
26 | ) | |
27 | ||
28 | ||
29 | oauth2_login = OAuth2LoginView.adapter_view(YandexAuth2Adapter) | |
30 | oauth2_callback = OAuth2CallbackView.adapter_view(YandexAuth2Adapter) |
1 | 1 | |
2 | 2 | {% load i18n %} |
3 | 3 | |
4 | {% block head_title %}{% trans "Account" %}{% endblock %} | |
4 | {% block head_title %}{% trans "E-mail Addresses" %}{% endblock %} | |
5 | 5 | |
6 | 6 | {% block content %} |
7 | 7 | <h1>{% trans "E-mail Addresses" %}</h1> |
4 | 4 | import requests |
5 | 5 | from datetime import date, datetime |
6 | 6 | |
7 | import django | |
7 | 8 | from django.core.files.base import ContentFile |
8 | 9 | from django.db import models |
9 | 10 | from django.test import RequestFactory, TestCase |
92 | 93 | class SomeField(models.Field): |
93 | 94 | def get_prep_value(self, value): |
94 | 95 | return 'somevalue' |
95 | ||
96 | def from_db_value(self, value, expression, connection, context): | |
97 | return some_value | |
96 | if django.VERSION < (3, 0): | |
97 | def from_db_value( | |
98 | self, value, expression, connection, context | |
99 | ): | |
100 | return some_value | |
101 | else: | |
102 | def from_db_value(self, value, expression, connection): | |
103 | return some_value | |
98 | 104 | |
99 | 105 | class SomeModel(models.Model): |
100 | 106 | dt = models.DateTimeField() |
7 | 7 | from collections import OrderedDict |
8 | 8 | from urllib.parse import urlsplit |
9 | 9 | |
10 | import django | |
10 | 11 | from django.contrib.auth import get_user_model |
11 | 12 | from django.contrib.sites.models import Site |
12 | 13 | from django.core.exceptions import FieldDoesNotExist, ImproperlyConfigured |
218 | 219 | try: |
219 | 220 | # This is quite an ugly hack, but will cover most |
220 | 221 | # use cases... |
221 | v = f.from_db_value(v, None, None, None) | |
222 | # The signature of `from_db_value` changed in Django 3 | |
223 | # https://docs.djangoproject.com/en/3.0/releases/3.0/#features-removed-in-3-0 | |
224 | if django.VERSION < (3, 0): | |
225 | v = f.from_db_value(v, None, None, None) | |
226 | else: | |
227 | v = f.from_db_value(v, None, None) | |
222 | 228 | except Exception: |
223 | 229 | raise ImproperlyConfigured( |
224 | 230 | "Unable to auto serialize field '{}', custom" |
0 | 0 | Metadata-Version: 1.1 |
1 | 1 | Name: django-allauth |
2 | Version: 0.41.0 | |
2 | Version: 0.42.0 | |
3 | 3 | Summary: Integrated set of Django applications addressing authentication, registration, account management as well as 3rd party (social) account authentication. |
4 | 4 | Home-page: http://github.com/pennersr/django-allauth |
5 | 5 | Author: Raymond Penners |
275 | 275 | allauth/socialaccount/providers/edmodo/tests.py |
276 | 276 | allauth/socialaccount/providers/edmodo/urls.py |
277 | 277 | allauth/socialaccount/providers/edmodo/views.py |
278 | allauth/socialaccount/providers/edx/__init__.py | |
279 | allauth/socialaccount/providers/edx/provider.py | |
280 | allauth/socialaccount/providers/edx/tests.py | |
281 | allauth/socialaccount/providers/edx/urls.py | |
282 | allauth/socialaccount/providers/edx/views.py | |
278 | 283 | allauth/socialaccount/providers/eventbrite/__init__.py |
279 | 284 | allauth/socialaccount/providers/eventbrite/provider.py |
280 | 285 | allauth/socialaccount/providers/eventbrite/tests.py |
373 | 378 | allauth/socialaccount/providers/kakao/tests.py |
374 | 379 | allauth/socialaccount/providers/kakao/urls.py |
375 | 380 | allauth/socialaccount/providers/kakao/views.py |
381 | allauth/socialaccount/providers/keycloak/__init__.py | |
382 | allauth/socialaccount/providers/keycloak/provider.py | |
383 | allauth/socialaccount/providers/keycloak/tests.py | |
384 | allauth/socialaccount/providers/keycloak/urls.py | |
385 | allauth/socialaccount/providers/keycloak/views.py | |
376 | 386 | allauth/socialaccount/providers/line/__init__.py |
377 | 387 | allauth/socialaccount/providers/line/models.py |
378 | 388 | allauth/socialaccount/providers/line/provider.py |
411 | 421 | allauth/socialaccount/providers/microsoft/tests.py |
412 | 422 | allauth/socialaccount/providers/microsoft/urls.py |
413 | 423 | allauth/socialaccount/providers/microsoft/views.py |
424 | allauth/socialaccount/providers/mixer/__init__.py | |
425 | allauth/socialaccount/providers/mixer/provider.py | |
426 | allauth/socialaccount/providers/mixer/tests.py | |
427 | allauth/socialaccount/providers/mixer/urls.py | |
428 | allauth/socialaccount/providers/mixer/views.py | |
414 | 429 | allauth/socialaccount/providers/naver/__init__.py |
415 | 430 | allauth/socialaccount/providers/naver/models.py |
416 | 431 | allauth/socialaccount/providers/naver/provider.py |
626 | 641 | allauth/socialaccount/providers/yahoo/tests.py |
627 | 642 | allauth/socialaccount/providers/yahoo/urls.py |
628 | 643 | allauth/socialaccount/providers/yahoo/views.py |
644 | allauth/socialaccount/providers/yandex/__init__.py | |
645 | allauth/socialaccount/providers/yandex/provider.py | |
646 | allauth/socialaccount/providers/yandex/tests.py | |
647 | allauth/socialaccount/providers/yandex/urls.py | |
648 | allauth/socialaccount/providers/yandex/views.py | |
629 | 649 | allauth/socialaccount/providers/ynab/__init__.py |
630 | 650 | allauth/socialaccount/providers/ynab/provider.py |
631 | 651 | allauth/socialaccount/providers/ynab/tests.py |
79 | 79 | |
80 | 80 | - ``allauth.socialaccount.adapter.DefaultSocialAccountAdapter``: |
81 | 81 | |
82 | - ``is_open_for_signup(self, request)``: The default function | |
82 | - ``is_open_for_signup(self, request, socialaccount)``: The default function | |
83 | 83 | returns that is the same as ``ACCOUNT_ADAPTER`` in ``settings.py``. |
84 | 84 | You can override this method by returning ``True``/``False`` |
85 | 85 | if you want to enable/disable socialaccount signup. |
16 | 16 | |
17 | 17 | Here are a few third party resources to help you get started: |
18 | 18 | |
19 | - https://dev.to/gajesh/the-complete-django-allauth-guide-la3 | |
19 | 20 | - https://www.youtube.com/watch?v=2QLAc7RJ99s |
20 | 21 | - https://speakerdeck.com/tedtieken/signing-up-and-signing-in-users-in-django-with-django-allauth |
21 | 22 | - https://stackoverflow.com/questions/tagged/django-allauth |
22 | 23 | - http://www.sarahhagstrom.com/2013/09/the-missing-django-allauth-tutorial/ |
23 | 24 | - https://github.com/aellerton/demo-allauth-bootstrap |
24 | - https://medium.com/@gajeshbhat/django-allauth-setup-and-configuration-tutorial-63417bba339c | |
25 | - https://medium.com/@gajeshbhat/extending-and-customizing-django-allauth-eed206623a1a | |
26 | - https://medium.com/@gajeshbhat/django-allauth-social-login-tutorial-ad021c24d666 | |
27 | 25 | |
28 | 26 | I think I found a security issue... now what? |
29 | 27 | ********************************************* |
26 | 26 | }, |
27 | 27 | ] |
28 | 28 | |
29 | AUTHENTICATION_BACKENDS = ( | |
29 | AUTHENTICATION_BACKENDS = [ | |
30 | 30 | ... |
31 | 31 | # Needed to login by username in Django admin, regardless of `allauth` |
32 | 32 | 'django.contrib.auth.backends.ModelBackend', |
34 | 34 | # `allauth` specific authentication methods, such as login by e-mail |
35 | 35 | 'allauth.account.auth_backends.AuthenticationBackend', |
36 | 36 | ... |
37 | ) | |
37 | ] | |
38 | 38 | |
39 | INSTALLED_APPS = ( | |
39 | INSTALLED_APPS = [ | |
40 | 40 | ... |
41 | 41 | # The following apps are required: |
42 | 42 | 'django.contrib.auth', |
70 | 70 | 'allauth.socialaccount.providers.dropbox', |
71 | 71 | 'allauth.socialaccount.providers.dwolla', |
72 | 72 | 'allauth.socialaccount.providers.edmodo', |
73 | 'allauth.socialaccount.providers.edx', | |
73 | 74 | 'allauth.socialaccount.providers.eveonline', |
74 | 75 | 'allauth.socialaccount.providers.evernote', |
75 | 76 | 'allauth.socialaccount.providers.exist', |
86 | 87 | 'allauth.socialaccount.providers.instagram', |
87 | 88 | 'allauth.socialaccount.providers.jupyterhub', |
88 | 89 | 'allauth.socialaccount.providers.kakao', |
90 | 'allauth.socialaccount.providers.keycloak', | |
89 | 91 | 'allauth.socialaccount.providers.line', |
90 | 92 | 'allauth.socialaccount.providers.linkedin', |
91 | 93 | 'allauth.socialaccount.providers.linkedin_oauth2', |
93 | 95 | 'allauth.socialaccount.providers.mailchimp', |
94 | 96 | 'allauth.socialaccount.providers.meetup', |
95 | 97 | 'allauth.socialaccount.providers.microsoft', |
98 | 'allauth.socialaccount.providers.mixer', | |
96 | 99 | 'allauth.socialaccount.providers.naver', |
97 | 100 | 'allauth.socialaccount.providers.nextcloud', |
98 | 101 | 'allauth.socialaccount.providers.odnoklassniki', |
127 | 130 | 'allauth.socialaccount.providers.weixin', |
128 | 131 | 'allauth.socialaccount.providers.windowslive', |
129 | 132 | 'allauth.socialaccount.providers.xing', |
133 | 'allauth.socialaccount.providers.yandex', | |
130 | 134 | 'allauth.socialaccount.providers.ynab', |
131 | 135 | ... |
132 | ) | |
136 | ] | |
133 | 137 | |
134 | 138 | SITE_ID = 1 |
135 | 139 | |
151 | 155 | |
152 | 156 | urlpatterns = [ |
153 | 157 | ... |
154 | url(r'^accounts/', include('allauth.urls')), | |
158 | path('accounts/', include('allauth.urls')), | |
155 | 159 | ... |
156 | 160 | ] |
157 | 161 |
82 | 82 | |
83 | 83 | - Edmodo (OAuth2) |
84 | 84 | |
85 | - Edx (open.edx.org) (OAuth2) | |
86 | ||
85 | 87 | - Eve Online (OAuth2) |
86 | 88 | |
87 | 89 | - Eventbrite (OAuth2) |
114 | 116 | |
115 | 117 | - Kakao (OAuth2) |
116 | 118 | |
119 | - Keycloak (OAuth2) | |
120 | ||
117 | 121 | - Line (OAuth2) |
118 | 122 | |
119 | 123 | - LinkedIn (OAuth, OAuth2) |
126 | 130 | |
127 | 131 | - Microsoft (Graph) (OAuth2) |
128 | 132 | |
133 | - Mixer (OAuth2) | |
134 | ||
129 | 135 | - NextCloud (OAuth2) |
130 | 136 | |
131 | 137 | - Naver (OAuth2) |
195 | 201 | - Xing (OAuth) |
196 | 202 | |
197 | 203 | - Yahoo (OAuth2) |
204 | ||
205 | - Yandex (OAuth2) | |
198 | 206 | |
199 | 207 | - YNAB (OAuth2) |
200 | 208 |
402 | 402 | } |
403 | 403 | |
404 | 404 | |
405 | Edx | |
406 | ------ | |
407 | ||
408 | Open Edx OAuth2 documentation | |
409 | https://course-catalog-api-guide.readthedocs.io/en/latest/authentication/ | |
410 | ||
411 | It is necessary to set ``EDX_URL`` to your open edx installation. If no ``EDX_URL`` | |
412 | value is set, the Edx provider will use ``https://edx.org`` which does not work: | |
413 | ||
414 | .. code-block:: python | |
415 | ||
416 | SOCIALACCOUNT_PROVIDERS = { | |
417 | 'edx': { | |
418 | 'EDX_URL': "https://openedx.local", | |
419 | } | |
420 | } | |
421 | ||
405 | 422 | Eve Online |
406 | 423 | ---------- |
407 | 424 | |
515 | 532 | 'facebook': { |
516 | 533 | 'METHOD': 'oauth2', |
517 | 534 | 'SDK_URL': '//connect.facebook.net/{locale}/sdk.js', |
518 | 'SCOPE': ['email', 'public_profile', 'user_friends'], | |
535 | 'SCOPE': ['email', 'public_profile'], | |
519 | 536 | 'AUTH_PARAMS': {'auth_type': 'reauthenticate'}, |
520 | 537 | 'INIT_PARAMS': {'cookie': True}, |
521 | 538 | 'FIELDS': [ |
534 | 551 | 'EXCHANGE_TOKEN': True, |
535 | 552 | 'LOCALE_FUNC': 'path.to.callable', |
536 | 553 | 'VERIFIED_EMAIL': False, |
537 | 'VERSION': 'v2.12', | |
554 | 'VERSION': 'v7.0', | |
538 | 555 | } |
539 | 556 | } |
540 | 557 | |
552 | 569 | SCOPE: |
553 | 570 | By default, the ``email`` scope is required depending on whether or not |
554 | 571 | ``SOCIALACCOUNT_QUERY_EMAIL`` is enabled. |
555 | Apps using permissions beyond ``email``, ``public_profile`` and ``user_friends`` | |
572 | Apps using permissions beyond ``email`` and ``public_profile`` | |
556 | 573 | require review by Facebook. |
557 | 574 | See `Permissions with Facebook Login <https://developers.facebook.com/docs/facebook-login/permissions>`_ |
558 | 575 | for more information. |
602 | 619 | risk. |
603 | 620 | |
604 | 621 | VERSION: |
605 | The Facebook Graph API version to use. The default is ``v2.12``. | |
622 | The Facebook Graph API version to use. The default is ``v7.0``. | |
606 | 623 | |
607 | 624 | App registration (get your key and secret here) |
608 | 625 | A key and secret key can be obtained by |
881 | 898 | Development callback URL |
882 | 899 | http://localhost:8000/accounts/kakao/login/callback/ |
883 | 900 | |
901 | Keycloak | |
902 | -------- | |
903 | ||
904 | Creating and Registering the Client | |
905 | https://www.keycloak.org/docs/latest/getting_started/index.html#creating-and-registering-the-client | |
906 | ||
907 | Development callback URL | |
908 | http://localhost:8000/accounts/keycloak/login/callback/ | |
909 | ||
910 | The following Keycloak settings are available. | |
911 | ||
912 | KEYCLOAK_URL: | |
913 | The url of your hosted keycloak server, it must end with ``/auth``. For | |
914 | example, you can use: ``https://your.keycloak.server/auth`` | |
915 | ||
916 | KEYCLOAK_REAML: | |
917 | The name of the ``realm`` you want to use. | |
918 | ||
919 | Example: | |
920 | ||
921 | .. code-block:: python | |
922 | ||
923 | SOCIALACCOUNT_PROVIDERS = { | |
924 | 'keycloak': { | |
925 | 'KEYCLOAK_URL': 'https://keycloak.custom/auth', | |
926 | 'KEYCLOAK_REALM': 'master' | |
927 | } | |
928 | } | |
884 | 929 | |
885 | 930 | Line |
886 | 931 | ---- |
1047 | 1092 | } |
1048 | 1093 | |
1049 | 1094 | |
1095 | Mixer | |
1096 | ----- | |
1097 | ||
1098 | API documentation | |
1099 | https://dev.mixer.com/guides/core/introduction | |
1100 | ||
1101 | App registration (get your key and secret here) | |
1102 | https://mixer.com/lab/oauth | |
1103 | ||
1104 | Development callback URL | |
1105 | http://localhost:8000/accounts/mixer/login/callback/ | |
1106 | ||
1107 | You can change scopes for Mixer using the ``SCOPE`` parameter. For example, to add the ability to edit your mixer profile, you'd use: | |
1108 | ||
1109 | .. code-block:: python | |
1110 | ||
1111 | SOCIALACCOUNT_PROVIDERS = { | |
1112 | 'mixer': { | |
1113 | 'SCOPE': [ | |
1114 | 'user:details:self', | |
1115 | 'user:update:self', | |
1116 | ] | |
1117 | } | |
1118 | } | |
1119 | ||
1120 | The default scope list is ``['user:details:self']``, which is required to get your email address from Mixer. The full list of scopes is available at https://dev.mixer.com/reference/oauth/scopes | |
1121 | ||
1050 | 1122 | Naver |
1051 | 1123 | ----- |
1052 | 1124 | |
1683 | 1755 | * Secret key: "Client Secret" from Untappd |
1684 | 1756 | * Sites: choose your site |
1685 | 1757 | |
1758 | In addition, you should override your user agent to comply with Untappd's API | |
1759 | rules, and specify something in the format | |
1760 | ``<platform>:<app ID>:<version string>``. Otherwise, | |
1761 | you will risk additional rate limiting in your application. | |
1762 | ||
1763 | .. code-block:: python | |
1764 | ||
1765 | SOCIALACCOUNT_PROVIDERS = { | |
1766 | 'untappd': { | |
1767 | 'USER_AGENT': 'django:myappid:1.0', | |
1768 | } | |
1769 | } | |
1770 | ||
1771 | ||
1686 | 1772 | |
1687 | 1773 | Telegram |
1688 | 1774 | -------- |
1794 | 1880 | Register your OAuth2 app below and enter the resultant client id and secret into admin |
1795 | 1881 | https://developer.yahoo.com/apps/create/ |
1796 | 1882 | |
1883 | ||
1884 | Yandex | |
1885 | ------ | |
1886 | ||
1887 | App registration (get key and secret here) | |
1888 | https://oauth.yandex.com/client/new | |
1889 | ||
1890 | Development callback URL | |
1891 | https://oauth.yandex.com/verification_code | |
1892 | ||
1893 | Yandex OAuth app has many different access rights for its services. For the basic access level, | |
1894 | you just need to a choose "Yandex.Passport API" section and check "Access to email address" and | |
1895 | "Access to username, first name and surname, gender". Everything else is optional. | |
1896 | ||
1897 | ||
1797 | 1898 | YNAB |
1798 | 1899 | ------ |
1799 | 1900 |
9 | 9 | |
10 | 10 | |
11 | 11 | - ``allauth.account.signals.user_logged_in(request, user)`` |
12 | ||
13 | Sent when a user logs in. | |
12 | Sent when a user logs in. | |
14 | 13 | |
15 | 14 | - ``allauth.account.signals.user_logged_out(request, user)`` |
16 | ||
17 | Sent when a user logs out. | |
15 | Sent when a user logs out. | |
18 | 16 | |
19 | 17 | - ``allauth.account.signals.user_signed_up(request, user)`` |
20 | ||
21 | Sent when a user signs up for an account. This signal is | |
22 | typically followed by a ``user_logged_in``, unless e-mail verification | |
23 | prohibits the user to log in. | |
18 | Sent when a user signs up for an account. This signal is | |
19 | typically followed by a ``user_logged_in``, unless e-mail verification | |
20 | prohibits the user to log in. | |
24 | 21 | |
25 | 22 | - ``allauth.account.signals.password_set(request, user)`` |
26 | ||
27 | Sent when a password has been successfully set for the first time. | |
23 | Sent when a password has been successfully set for the first time. | |
28 | 24 | |
29 | 25 | - ``allauth.account.signals.password_changed(request, user)`` |
30 | ||
31 | Sent when a password has been successfully changed. | |
26 | Sent when a password has been successfully changed. | |
32 | 27 | |
33 | 28 | - ``allauth.account.signals.password_reset(request, user)`` |
34 | ||
35 | Sent when a password has been successfully reset. | |
29 | Sent when a password has been successfully reset. | |
36 | 30 | |
37 | 31 | - ``allauth.account.signals.email_confirmed(request, email_address)`` |
38 | ||
39 | Sent after the email address in the db was updated and set to confirmed. | |
32 | Sent after the email address in the db was updated and set to confirmed. | |
40 | 33 | |
41 | 34 | - ``allauth.account.signals.email_confirmation_sent(request, confirmation, signup)`` |
42 | ||
43 | Sent right after the email confirmation is sent. | |
35 | Sent right after the email confirmation is sent. | |
44 | 36 | |
45 | 37 | - ``allauth.account.signals.email_changed(request, user, from_email_address, to_email_address)`` |
46 | ||
47 | Sent when a primary email address has been changed. | |
38 | Sent when a primary email address has been changed. | |
48 | 39 | |
49 | 40 | - ``allauth.account.signals.email_added(request, user, email_address)`` |
50 | ||
51 | Sent when a new email address has been added. | |
41 | Sent when a new email address has been added. | |
52 | 42 | |
53 | 43 | - ``allauth.account.signals.email_removed(request, user, email_address)`` |
54 | ||
55 | Sent when an email address has been deleted. | |
44 | Sent when an email address has been deleted. | |
56 | 45 | |
57 | 46 | |
58 | 47 | allauth.socialaccount |
59 | 48 | --------------------- |
60 | 49 | |
61 | 50 | - ``allauth.socialaccount.signals.pre_social_login(request, sociallogin)`` |
62 | ||
63 | Sent after a user successfully authenticates via a social provider, | |
64 | but before the login is fully processed. This signal is emitted as | |
65 | part of the social login and/or signup process, as well as when | |
66 | connecting additional social accounts to an existing account. Access | |
67 | tokens and profile information, if applicable for the provider, is | |
68 | provided. | |
51 | Sent after a user successfully authenticates via a social provider, | |
52 | but before the login is fully processed. This signal is emitted as | |
53 | part of the social login and/or signup process, as well as when | |
54 | connecting additional social accounts to an existing account. Access | |
55 | tokens and profile information, if applicable for the provider, is | |
56 | provided. | |
69 | 57 | |
70 | 58 | - ``allauth.socialaccount.signals.social_account_added(request, sociallogin)`` |
71 | ||
72 | Sent after a user connects a social account to a their local account. | |
59 | Sent after a user connects a social account to a their local account. | |
73 | 60 | |
74 | 61 | - ``allauth.socialaccount.signals.social_account_updated(request, sociallogin)`` |
75 | ||
76 | Sent after a social account has been updated. This happens when a user | |
77 | logs in using an already connected social account, or completes a `connect` | |
78 | flow for an already connected social account. Useful if you need to | |
79 | unpack extra data for social accounts as they are updated. | |
62 | Sent after a social account has been updated. This happens when a user | |
63 | logs in using an already connected social account, or completes a `connect` | |
64 | flow for an already connected social account. Useful if you need to | |
65 | unpack extra data for social accounts as they are updated. | |
80 | 66 | |
81 | 67 | - ``allauth.socialaccount.signals.social_account_removed(request, socialaccount)`` |
82 | ||
83 | Sent after a user disconnects a social account from their local | |
84 | account. | |
68 | Sent after a user disconnects a social account from their local | |
69 | account. |
77 | 77 | 'allauth.socialaccount.providers.dropbox', |
78 | 78 | 'allauth.socialaccount.providers.dwolla', |
79 | 79 | 'allauth.socialaccount.providers.edmodo', |
80 | 'allauth.socialaccount.providers.edx', | |
80 | 81 | 'allauth.socialaccount.providers.eveonline', |
81 | 82 | 'allauth.socialaccount.providers.evernote', |
82 | 83 | 'allauth.socialaccount.providers.eventbrite', |
95 | 96 | 'allauth.socialaccount.providers.instagram', |
96 | 97 | 'allauth.socialaccount.providers.jupyterhub', |
97 | 98 | 'allauth.socialaccount.providers.kakao', |
99 | 'allauth.socialaccount.providers.keycloak', | |
98 | 100 | 'allauth.socialaccount.providers.line', |
99 | 101 | 'allauth.socialaccount.providers.linkedin', |
100 | 102 | 'allauth.socialaccount.providers.linkedin_oauth2', |
102 | 104 | 'allauth.socialaccount.providers.mailru', |
103 | 105 | 'allauth.socialaccount.providers.meetup', |
104 | 106 | 'allauth.socialaccount.providers.microsoft', |
107 | 'allauth.socialaccount.providers.mixer', | |
105 | 108 | 'allauth.socialaccount.providers.naver', |
106 | 109 | 'allauth.socialaccount.providers.nextcloud', |
107 | 110 | 'allauth.socialaccount.providers.odnoklassniki', |
140 | 143 | 'allauth.socialaccount.providers.windowslive', |
141 | 144 | 'allauth.socialaccount.providers.xing', |
142 | 145 | 'allauth.socialaccount.providers.yahoo', |
146 | 'allauth.socialaccount.providers.yandex', | |
143 | 147 | 'allauth.socialaccount.providers.ynab', |
144 | 148 | ) |
145 | 149 |