django-allauth-0.35.0/0000755000076500000240000000000013235133533015451 5ustar pennersrstaff00000000000000django-allauth-0.35.0/PKG-INFO0000644000076500000240000001105213235133533016545 0ustar pennersrstaff00000000000000Metadata-Version: 1.1 Name: django-allauth Version: 0.35.0 Summary: Integrated set of Django applications addressing authentication, registration, account management as well as 3rd party (social) account authentication. Home-page: http://github.com/pennersr/django-allauth Author: Raymond Penners Author-email: raymond.penners@intenct.nl License: UNKNOWN Description: ========================== Welcome to django-allauth! ========================== .. image:: https://badge.fury.io/py/django-allauth.svg :target: http://badge.fury.io/py/django-allauth .. image:: https://travis-ci.org/pennersr/django-allauth.svg :target: http://travis-ci.org/pennersr/django-allauth .. image:: https://img.shields.io/pypi/v/django-allauth.svg :target: https://pypi.python.org/pypi/django-allauth .. image:: https://coveralls.io/repos/pennersr/django-allauth/badge.svg?branch=master :alt: Coverage Status :target: https://coveralls.io/r/pennersr/django-allauth .. image:: https://pennersr.github.io/img/bitcoin-badge.svg :target: https://blockchain.info/address/1AJXuBMPHkaDCNX2rwAy34bGgs7hmrePEr .. image:: https://img.shields.io/badge/code%20style-pep8-green.svg :target: https://www.python.org/dev/peps/pep-0008/ .. image:: https://img.shields.io/badge/code_style-standard-brightgreen.svg :target: http://standardjs.com Integrated set of Django applications addressing authentication, registration, account management as well as 3rd party (social) account authentication. Home page http://www.intenct.nl/projects/django-allauth/ Source code http://github.com/pennersr/django-allauth Mailinglist http://groups.google.com/group/django-allauth Documentation https://django-allauth.readthedocs.io/en/latest/ Stack Overflow http://stackoverflow.com/questions/tagged/django-allauth Rationale ========= Most existing Django apps that address the problem of social authentication focus on just that. You typically need to integrate another app in order to support authentication via a local account. This approach separates the worlds of local and social authentication. However, there are common scenarios to be dealt with in both worlds. For example, an e-mail address passed along by an OpenID provider is not guaranteed to be verified. So, before hooking an OpenID account up to a local account the e-mail address must be verified. So, e-mail verification needs to be present in both worlds. Integrating both worlds is quite a tedious process. It is definitely not a matter of simply adding one social authentication app, and one local account registration app to your ``INSTALLED_APPS`` list. This is the reason this project got started -- to offer a fully integrated authentication app that allows for both local and social authentication, with flows that just work. Commercial Support ================== This project is sponsored by IntenCT_. If you require assistance on your project(s), please contact us: info@intenct.nl. .. _IntenCT: http://www.intenct.info Cross-Selling ============= If you like this, you may also like: - django-trackstats: https://github.com/pennersr/django-trackstats - netwell: https://github.com/pennersr/netwell Keywords: django auth account social openid twitter facebook oauth registration Platform: UNKNOWN Classifier: Development Status :: 4 - Beta Classifier: Intended Audience :: Developers Classifier: Topic :: Software Development :: Libraries :: Python Modules Classifier: Environment :: Web Environment Classifier: Topic :: Internet Classifier: License :: OSI Approved :: MIT License Classifier: Operating System :: OS Independent Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 2.7 Classifier: Programming Language :: Python :: 3.4 Classifier: Programming Language :: Python :: 3.5 Classifier: Programming Language :: Python :: 3.6 Classifier: Framework :: Django Classifier: Framework :: Django :: 1.11 Classifier: Framework :: Django :: 2.0 django-allauth-0.35.0/LICENSE0000644000076500000240000000212013032144645016452 0ustar pennersrstaff00000000000000The MIT License (MIT) Copyright (c) 2010-2017 Raymond Penners and contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. django-allauth-0.35.0/django_allauth.egg-info/0000755000076500000240000000000013235133533022117 5ustar pennersrstaff00000000000000django-allauth-0.35.0/django_allauth.egg-info/PKG-INFO0000644000076500000240000001105213235133511023207 0ustar pennersrstaff00000000000000Metadata-Version: 1.1 Name: django-allauth Version: 0.35.0 Summary: Integrated set of Django applications addressing authentication, registration, account management as well as 3rd party (social) account authentication. Home-page: http://github.com/pennersr/django-allauth Author: Raymond Penners Author-email: raymond.penners@intenct.nl License: UNKNOWN Description: ========================== Welcome to django-allauth! ========================== .. image:: https://badge.fury.io/py/django-allauth.svg :target: http://badge.fury.io/py/django-allauth .. image:: https://travis-ci.org/pennersr/django-allauth.svg :target: http://travis-ci.org/pennersr/django-allauth .. image:: https://img.shields.io/pypi/v/django-allauth.svg :target: https://pypi.python.org/pypi/django-allauth .. image:: https://coveralls.io/repos/pennersr/django-allauth/badge.svg?branch=master :alt: Coverage Status :target: https://coveralls.io/r/pennersr/django-allauth .. image:: https://pennersr.github.io/img/bitcoin-badge.svg :target: https://blockchain.info/address/1AJXuBMPHkaDCNX2rwAy34bGgs7hmrePEr .. image:: https://img.shields.io/badge/code%20style-pep8-green.svg :target: https://www.python.org/dev/peps/pep-0008/ .. image:: https://img.shields.io/badge/code_style-standard-brightgreen.svg :target: http://standardjs.com Integrated set of Django applications addressing authentication, registration, account management as well as 3rd party (social) account authentication. Home page http://www.intenct.nl/projects/django-allauth/ Source code http://github.com/pennersr/django-allauth Mailinglist http://groups.google.com/group/django-allauth Documentation https://django-allauth.readthedocs.io/en/latest/ Stack Overflow http://stackoverflow.com/questions/tagged/django-allauth Rationale ========= Most existing Django apps that address the problem of social authentication focus on just that. You typically need to integrate another app in order to support authentication via a local account. This approach separates the worlds of local and social authentication. However, there are common scenarios to be dealt with in both worlds. For example, an e-mail address passed along by an OpenID provider is not guaranteed to be verified. So, before hooking an OpenID account up to a local account the e-mail address must be verified. So, e-mail verification needs to be present in both worlds. Integrating both worlds is quite a tedious process. It is definitely not a matter of simply adding one social authentication app, and one local account registration app to your ``INSTALLED_APPS`` list. This is the reason this project got started -- to offer a fully integrated authentication app that allows for both local and social authentication, with flows that just work. Commercial Support ================== This project is sponsored by IntenCT_. If you require assistance on your project(s), please contact us: info@intenct.nl. .. _IntenCT: http://www.intenct.info Cross-Selling ============= If you like this, you may also like: - django-trackstats: https://github.com/pennersr/django-trackstats - netwell: https://github.com/pennersr/netwell Keywords: django auth account social openid twitter facebook oauth registration Platform: UNKNOWN Classifier: Development Status :: 4 - Beta Classifier: Intended Audience :: Developers Classifier: Topic :: Software Development :: Libraries :: Python Modules Classifier: Environment :: Web Environment Classifier: Topic :: Internet Classifier: License :: OSI Approved :: MIT License Classifier: Operating System :: OS Independent Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 2.7 Classifier: Programming Language :: Python :: 3.4 Classifier: Programming Language :: Python :: 3.5 Classifier: Programming Language :: Python :: 3.6 Classifier: Framework :: Django Classifier: Framework :: Django :: 1.11 Classifier: Framework :: Django :: 2.0 django-allauth-0.35.0/django_allauth.egg-info/SOURCES.txt0000644000076500000240000007003413235133532024006 0ustar pennersrstaff00000000000000AUTHORS ChangeLog.rst LICENSE MANIFEST.in README.rst setup.py test_settings.py allauth/__init__.py allauth/app_settings.py allauth/compat.py allauth/exceptions.py allauth/models.py allauth/tests.py allauth/urls.py allauth/utils.py allauth/account/__init__.py allauth/account/adapter.py allauth/account/admin.py allauth/account/app_settings.py allauth/account/apps.py allauth/account/auth_backends.py allauth/account/decorators.py allauth/account/forms.py allauth/account/managers.py allauth/account/models.py allauth/account/signals.py allauth/account/tests.py allauth/account/urls.py allauth/account/utils.py allauth/account/views.py allauth/account/management/__init__.py allauth/account/management/commands/__init__.py allauth/account/management/commands/account_unsetmultipleprimaryemails.py allauth/account/migrations/0001_initial.py allauth/account/migrations/0002_email_max_length.py allauth/account/migrations/__init__.py allauth/account/templatetags/__init__.py allauth/account/templatetags/account.py allauth/locale/ar/LC_MESSAGES/django.mo allauth/locale/ar/LC_MESSAGES/django.po allauth/locale/cs/LC_MESSAGES/django.mo allauth/locale/cs/LC_MESSAGES/django.po allauth/locale/de/LC_MESSAGES/django.mo allauth/locale/de/LC_MESSAGES/django.po allauth/locale/el/LC_MESSAGES/django.mo allauth/locale/el/LC_MESSAGES/django.po allauth/locale/en/LC_MESSAGES/django.mo allauth/locale/en/LC_MESSAGES/django.po allauth/locale/es/LC_MESSAGES/django.mo allauth/locale/es/LC_MESSAGES/django.po allauth/locale/fa/LC_MESSAGES/django.mo allauth/locale/fa/LC_MESSAGES/django.po allauth/locale/fi/LC_MESSAGES/django.mo allauth/locale/fi/LC_MESSAGES/django.po allauth/locale/fr/LC_MESSAGES/django.mo allauth/locale/fr/LC_MESSAGES/django.po allauth/locale/he/LC_MESSAGES/django.mo allauth/locale/he/LC_MESSAGES/django.po allauth/locale/hr/LC_MESSAGES/django.mo allauth/locale/hr/LC_MESSAGES/django.po allauth/locale/hu/LC_MESSAGES/django.mo allauth/locale/hu/LC_MESSAGES/django.po allauth/locale/it/LC_MESSAGES/django.mo allauth/locale/it/LC_MESSAGES/django.po allauth/locale/ja/LC_MESSAGES/django.mo allauth/locale/ja/LC_MESSAGES/django.po allauth/locale/ko/LC_MESSAGES/django.mo allauth/locale/ko/LC_MESSAGES/django.po allauth/locale/ky/LC_MESSAGES/django.mo allauth/locale/ky/LC_MESSAGES/django.po allauth/locale/lt/LC_MESSAGES/django.mo allauth/locale/lt/LC_MESSAGES/django.po allauth/locale/lv/LC_MESSAGES/django.mo allauth/locale/lv/LC_MESSAGES/django.po allauth/locale/nl/LC_MESSAGES/django.mo allauth/locale/nl/LC_MESSAGES/django.po allauth/locale/no/LC_MESSAGES/django.mo allauth/locale/no/LC_MESSAGES/django.po allauth/locale/pl/LC_MESSAGES/django.mo allauth/locale/pl/LC_MESSAGES/django.po allauth/locale/pt_BR/LC_MESSAGES/django.mo allauth/locale/pt_BR/LC_MESSAGES/django.po allauth/locale/pt_PT/LC_MESSAGES/django.mo allauth/locale/pt_PT/LC_MESSAGES/django.po allauth/locale/ru/LC_MESSAGES/django.mo allauth/locale/ru/LC_MESSAGES/django.po allauth/locale/sk/LC_MESSAGES/django.mo allauth/locale/sk/LC_MESSAGES/django.po allauth/locale/sv/LC_MESSAGES/django.mo allauth/locale/sv/LC_MESSAGES/django.po allauth/locale/th/LC_MESSAGES/django.mo allauth/locale/th/LC_MESSAGES/django.po allauth/locale/tr/LC_MESSAGES/django.mo allauth/locale/tr/LC_MESSAGES/django.po allauth/locale/uk/LC_MESSAGES/django.mo allauth/locale/uk/LC_MESSAGES/django.po allauth/locale/zh_CN/LC_MESSAGES/django.mo allauth/locale/zh_CN/LC_MESSAGES/django.po allauth/locale/zh_Hans/LC_MESSAGES/django.mo allauth/locale/zh_Hans/LC_MESSAGES/django.po allauth/locale/zh_Hant/LC_MESSAGES/django.mo allauth/locale/zh_Hant/LC_MESSAGES/django.po allauth/locale/zh_TW/LC_MESSAGES/django.mo allauth/locale/zh_TW/LC_MESSAGES/django.po allauth/socialaccount/__init__.py allauth/socialaccount/adapter.py allauth/socialaccount/admin.py allauth/socialaccount/app_settings.py allauth/socialaccount/apps.py allauth/socialaccount/fields.py allauth/socialaccount/forms.py allauth/socialaccount/helpers.py allauth/socialaccount/models.py allauth/socialaccount/signals.py allauth/socialaccount/tests.py allauth/socialaccount/urls.py allauth/socialaccount/views.py allauth/socialaccount/migrations/0001_initial.py allauth/socialaccount/migrations/0002_token_max_lengths.py allauth/socialaccount/migrations/0003_extra_data_default_dict.py allauth/socialaccount/migrations/__init__.py allauth/socialaccount/providers/__init__.py allauth/socialaccount/providers/base.py allauth/socialaccount/providers/amazon/__init__.py allauth/socialaccount/providers/amazon/provider.py allauth/socialaccount/providers/amazon/tests.py allauth/socialaccount/providers/amazon/urls.py allauth/socialaccount/providers/amazon/views.py allauth/socialaccount/providers/angellist/__init__.py allauth/socialaccount/providers/angellist/provider.py allauth/socialaccount/providers/angellist/tests.py allauth/socialaccount/providers/angellist/urls.py allauth/socialaccount/providers/angellist/views.py allauth/socialaccount/providers/asana/__init__.py allauth/socialaccount/providers/asana/models.py allauth/socialaccount/providers/asana/provider.py allauth/socialaccount/providers/asana/tests.py allauth/socialaccount/providers/asana/urls.py allauth/socialaccount/providers/asana/views.py allauth/socialaccount/providers/auth0/__init__.py allauth/socialaccount/providers/auth0/provider.py allauth/socialaccount/providers/auth0/tests.py allauth/socialaccount/providers/auth0/urls.py allauth/socialaccount/providers/auth0/views.py allauth/socialaccount/providers/authentiq/__init__.py allauth/socialaccount/providers/authentiq/provider.py allauth/socialaccount/providers/authentiq/tests.py allauth/socialaccount/providers/authentiq/urls.py allauth/socialaccount/providers/authentiq/views.py allauth/socialaccount/providers/azure/__init__.py allauth/socialaccount/providers/azure/models.py allauth/socialaccount/providers/azure/provider.py allauth/socialaccount/providers/azure/tests.py allauth/socialaccount/providers/azure/urls.py allauth/socialaccount/providers/azure/views.py allauth/socialaccount/providers/baidu/__init__.py allauth/socialaccount/providers/baidu/provider.py allauth/socialaccount/providers/baidu/tests.py allauth/socialaccount/providers/baidu/urls.py allauth/socialaccount/providers/baidu/views.py allauth/socialaccount/providers/basecamp/__init__.py allauth/socialaccount/providers/basecamp/provider.py allauth/socialaccount/providers/basecamp/tests.py allauth/socialaccount/providers/basecamp/urls.py allauth/socialaccount/providers/basecamp/views.py allauth/socialaccount/providers/battlenet/__init__.py allauth/socialaccount/providers/battlenet/models.py allauth/socialaccount/providers/battlenet/provider.py allauth/socialaccount/providers/battlenet/tests.py allauth/socialaccount/providers/battlenet/urls.py allauth/socialaccount/providers/battlenet/validators.py allauth/socialaccount/providers/battlenet/views.py allauth/socialaccount/providers/bitbucket/__init__.py allauth/socialaccount/providers/bitbucket/provider.py allauth/socialaccount/providers/bitbucket/tests.py allauth/socialaccount/providers/bitbucket/urls.py allauth/socialaccount/providers/bitbucket/views.py allauth/socialaccount/providers/bitbucket_oauth2/__init__.py allauth/socialaccount/providers/bitbucket_oauth2/provider.py allauth/socialaccount/providers/bitbucket_oauth2/tests.py allauth/socialaccount/providers/bitbucket_oauth2/urls.py allauth/socialaccount/providers/bitbucket_oauth2/views.py allauth/socialaccount/providers/bitly/__init__.py allauth/socialaccount/providers/bitly/provider.py allauth/socialaccount/providers/bitly/tests.py allauth/socialaccount/providers/bitly/urls.py allauth/socialaccount/providers/bitly/views.py allauth/socialaccount/providers/box/__init__.py allauth/socialaccount/providers/box/provider.py allauth/socialaccount/providers/box/tests.py allauth/socialaccount/providers/box/urls.py allauth/socialaccount/providers/box/views.py allauth/socialaccount/providers/coinbase/__init__.py allauth/socialaccount/providers/coinbase/provider.py allauth/socialaccount/providers/coinbase/tests.py allauth/socialaccount/providers/coinbase/urls.py allauth/socialaccount/providers/coinbase/views.py allauth/socialaccount/providers/dataporten/__init__.py allauth/socialaccount/providers/dataporten/models.py allauth/socialaccount/providers/dataporten/provider.py allauth/socialaccount/providers/dataporten/tests.py allauth/socialaccount/providers/dataporten/urls.py allauth/socialaccount/providers/dataporten/views.py allauth/socialaccount/providers/daum/__init__.py allauth/socialaccount/providers/daum/models.py allauth/socialaccount/providers/daum/provider.py allauth/socialaccount/providers/daum/tests.py allauth/socialaccount/providers/daum/urls.py allauth/socialaccount/providers/daum/views.py allauth/socialaccount/providers/digitalocean/__init__.py allauth/socialaccount/providers/digitalocean/provider.py allauth/socialaccount/providers/digitalocean/tests.py allauth/socialaccount/providers/digitalocean/urls.py allauth/socialaccount/providers/digitalocean/views.py allauth/socialaccount/providers/discord/__init__.py allauth/socialaccount/providers/discord/provider.py allauth/socialaccount/providers/discord/tests.py allauth/socialaccount/providers/discord/urls.py allauth/socialaccount/providers/discord/views.py allauth/socialaccount/providers/douban/__init__.py allauth/socialaccount/providers/douban/provider.py allauth/socialaccount/providers/douban/tests.py allauth/socialaccount/providers/douban/urls.py allauth/socialaccount/providers/douban/views.py allauth/socialaccount/providers/doximity/__init__.py allauth/socialaccount/providers/doximity/provider.py allauth/socialaccount/providers/doximity/tests.py allauth/socialaccount/providers/doximity/urls.py allauth/socialaccount/providers/doximity/views.py allauth/socialaccount/providers/draugiem/__init__.py allauth/socialaccount/providers/draugiem/provider.py allauth/socialaccount/providers/draugiem/tests.py allauth/socialaccount/providers/draugiem/urls.py allauth/socialaccount/providers/draugiem/views.py allauth/socialaccount/providers/dropbox/__init__.py allauth/socialaccount/providers/dropbox/provider.py allauth/socialaccount/providers/dropbox/tests.py allauth/socialaccount/providers/dropbox/urls.py allauth/socialaccount/providers/dropbox/views.py allauth/socialaccount/providers/dwolla/__init__.py allauth/socialaccount/providers/dwolla/models.py allauth/socialaccount/providers/dwolla/provider.py allauth/socialaccount/providers/dwolla/test.py allauth/socialaccount/providers/dwolla/urls.py allauth/socialaccount/providers/dwolla/views.py allauth/socialaccount/providers/edmodo/__init__.py allauth/socialaccount/providers/edmodo/provider.py allauth/socialaccount/providers/edmodo/tests.py allauth/socialaccount/providers/edmodo/urls.py allauth/socialaccount/providers/edmodo/views.py allauth/socialaccount/providers/eventbrite/__init__.py allauth/socialaccount/providers/eventbrite/provider.py allauth/socialaccount/providers/eventbrite/tests.py allauth/socialaccount/providers/eventbrite/urls.py allauth/socialaccount/providers/eventbrite/views.py allauth/socialaccount/providers/eveonline/__init__.py allauth/socialaccount/providers/eveonline/provider.py allauth/socialaccount/providers/eveonline/tests.py allauth/socialaccount/providers/eveonline/urls.py allauth/socialaccount/providers/eveonline/views.py allauth/socialaccount/providers/evernote/__init__.py allauth/socialaccount/providers/evernote/provider.py allauth/socialaccount/providers/evernote/tests.py allauth/socialaccount/providers/evernote/urls.py allauth/socialaccount/providers/evernote/views.py allauth/socialaccount/providers/facebook/__init__.py allauth/socialaccount/providers/facebook/forms.py allauth/socialaccount/providers/facebook/locale.py allauth/socialaccount/providers/facebook/provider.py allauth/socialaccount/providers/facebook/tests.py allauth/socialaccount/providers/facebook/urls.py allauth/socialaccount/providers/facebook/views.py allauth/socialaccount/providers/facebook/data/FacebookLocales.xml allauth/socialaccount/providers/facebook/static/facebook/js/fbconnect.js allauth/socialaccount/providers/facebook/templates/facebook/fbconnect.html allauth/socialaccount/providers/feedly/__init__.py allauth/socialaccount/providers/feedly/provider.py allauth/socialaccount/providers/feedly/tests.py allauth/socialaccount/providers/feedly/urls.py allauth/socialaccount/providers/feedly/views.py allauth/socialaccount/providers/fivehundredpx/__init__.py allauth/socialaccount/providers/fivehundredpx/models.py allauth/socialaccount/providers/fivehundredpx/provider.py allauth/socialaccount/providers/fivehundredpx/tests.py allauth/socialaccount/providers/fivehundredpx/urls.py allauth/socialaccount/providers/fivehundredpx/views.py allauth/socialaccount/providers/flickr/__init__.py allauth/socialaccount/providers/flickr/provider.py allauth/socialaccount/providers/flickr/tests.py allauth/socialaccount/providers/flickr/urls.py allauth/socialaccount/providers/flickr/views.py allauth/socialaccount/providers/foursquare/__init__.py allauth/socialaccount/providers/foursquare/provider.py allauth/socialaccount/providers/foursquare/tests.py allauth/socialaccount/providers/foursquare/urls.py allauth/socialaccount/providers/foursquare/views.py allauth/socialaccount/providers/fxa/__init__.py allauth/socialaccount/providers/fxa/models.py allauth/socialaccount/providers/fxa/provider.py allauth/socialaccount/providers/fxa/tests.py allauth/socialaccount/providers/fxa/urls.py allauth/socialaccount/providers/fxa/views.py allauth/socialaccount/providers/github/__init__.py allauth/socialaccount/providers/github/provider.py allauth/socialaccount/providers/github/tests.py allauth/socialaccount/providers/github/urls.py allauth/socialaccount/providers/github/views.py allauth/socialaccount/providers/gitlab/__init__.py allauth/socialaccount/providers/gitlab/provider.py allauth/socialaccount/providers/gitlab/tests.py allauth/socialaccount/providers/gitlab/urls.py allauth/socialaccount/providers/gitlab/views.py allauth/socialaccount/providers/google/__init__.py allauth/socialaccount/providers/google/provider.py allauth/socialaccount/providers/google/tests.py allauth/socialaccount/providers/google/urls.py allauth/socialaccount/providers/google/views.py allauth/socialaccount/providers/hubic/__init__.py allauth/socialaccount/providers/hubic/provider.py allauth/socialaccount/providers/hubic/tests.py allauth/socialaccount/providers/hubic/urls.py allauth/socialaccount/providers/hubic/views.py allauth/socialaccount/providers/instagram/__init__.py allauth/socialaccount/providers/instagram/provider.py allauth/socialaccount/providers/instagram/tests.py allauth/socialaccount/providers/instagram/urls.py allauth/socialaccount/providers/instagram/views.py allauth/socialaccount/providers/kakao/__init__.py allauth/socialaccount/providers/kakao/models.py allauth/socialaccount/providers/kakao/provider.py allauth/socialaccount/providers/kakao/tests.py allauth/socialaccount/providers/kakao/urls.py allauth/socialaccount/providers/kakao/views.py allauth/socialaccount/providers/line/__init__.py allauth/socialaccount/providers/line/models.py allauth/socialaccount/providers/line/provider.py allauth/socialaccount/providers/line/tests.py allauth/socialaccount/providers/line/urls.py allauth/socialaccount/providers/line/views.py allauth/socialaccount/providers/linkedin/__init__.py allauth/socialaccount/providers/linkedin/provider.py allauth/socialaccount/providers/linkedin/tests.py allauth/socialaccount/providers/linkedin/urls.py allauth/socialaccount/providers/linkedin/views.py allauth/socialaccount/providers/linkedin_oauth2/__init__.py allauth/socialaccount/providers/linkedin_oauth2/provider.py allauth/socialaccount/providers/linkedin_oauth2/tests.py allauth/socialaccount/providers/linkedin_oauth2/urls.py allauth/socialaccount/providers/linkedin_oauth2/views.py allauth/socialaccount/providers/mailchimp/__init__.py allauth/socialaccount/providers/mailchimp/provider.py allauth/socialaccount/providers/mailchimp/tests.py allauth/socialaccount/providers/mailchimp/urls.py allauth/socialaccount/providers/mailchimp/views.py allauth/socialaccount/providers/mailru/__init__.py allauth/socialaccount/providers/mailru/provider.py allauth/socialaccount/providers/mailru/tests.py allauth/socialaccount/providers/mailru/urls.py allauth/socialaccount/providers/mailru/views.py allauth/socialaccount/providers/meetup/__init__.py allauth/socialaccount/providers/meetup/models.py allauth/socialaccount/providers/meetup/provider.py allauth/socialaccount/providers/meetup/tests.py allauth/socialaccount/providers/meetup/urls.py allauth/socialaccount/providers/meetup/views.py allauth/socialaccount/providers/microsoft/__init__.py allauth/socialaccount/providers/microsoft/models.py allauth/socialaccount/providers/microsoft/provider.py allauth/socialaccount/providers/microsoft/tests.py allauth/socialaccount/providers/microsoft/urls.py allauth/socialaccount/providers/microsoft/views.py allauth/socialaccount/providers/naver/__init__.py allauth/socialaccount/providers/naver/models.py allauth/socialaccount/providers/naver/provider.py allauth/socialaccount/providers/naver/tests.py allauth/socialaccount/providers/naver/urls.py allauth/socialaccount/providers/naver/views.py allauth/socialaccount/providers/oauth/__init__.py allauth/socialaccount/providers/oauth/client.py allauth/socialaccount/providers/oauth/provider.py allauth/socialaccount/providers/oauth/urls.py allauth/socialaccount/providers/oauth/views.py allauth/socialaccount/providers/oauth2/__init__.py allauth/socialaccount/providers/oauth2/client.py allauth/socialaccount/providers/oauth2/provider.py allauth/socialaccount/providers/oauth2/urls.py allauth/socialaccount/providers/oauth2/views.py allauth/socialaccount/providers/odnoklassniki/__init__.py allauth/socialaccount/providers/odnoklassniki/provider.py allauth/socialaccount/providers/odnoklassniki/tests.py allauth/socialaccount/providers/odnoklassniki/urls.py allauth/socialaccount/providers/odnoklassniki/views.py allauth/socialaccount/providers/openid/__init__.py allauth/socialaccount/providers/openid/admin.py allauth/socialaccount/providers/openid/forms.py allauth/socialaccount/providers/openid/models.py allauth/socialaccount/providers/openid/provider.py allauth/socialaccount/providers/openid/tests.py allauth/socialaccount/providers/openid/urls.py allauth/socialaccount/providers/openid/utils.py allauth/socialaccount/providers/openid/views.py allauth/socialaccount/providers/openid/migrations/0001_initial.py allauth/socialaccount/providers/openid/migrations/__init__.py allauth/socialaccount/providers/orcid/__init__.py allauth/socialaccount/providers/orcid/provider.py allauth/socialaccount/providers/orcid/tests.py allauth/socialaccount/providers/orcid/urls.py allauth/socialaccount/providers/orcid/views.py allauth/socialaccount/providers/patreon/__init__.py allauth/socialaccount/providers/patreon/models.py allauth/socialaccount/providers/patreon/provider.py allauth/socialaccount/providers/patreon/test.py allauth/socialaccount/providers/patreon/urls.py allauth/socialaccount/providers/patreon/views.py allauth/socialaccount/providers/paypal/__init__.py allauth/socialaccount/providers/paypal/provider.py allauth/socialaccount/providers/paypal/tests.py allauth/socialaccount/providers/paypal/urls.py allauth/socialaccount/providers/paypal/views.py allauth/socialaccount/providers/persona/__init__.py allauth/socialaccount/providers/persona/models.py allauth/socialaccount/providers/persona/provider.py allauth/socialaccount/providers/persona/tests.py allauth/socialaccount/providers/persona/urls.py allauth/socialaccount/providers/persona/views.py allauth/socialaccount/providers/persona/templates/persona/auth.html allauth/socialaccount/providers/pinterest/__init__.py allauth/socialaccount/providers/pinterest/provider.py allauth/socialaccount/providers/pinterest/tests.py allauth/socialaccount/providers/pinterest/urls.py allauth/socialaccount/providers/pinterest/views.py allauth/socialaccount/providers/reddit/__init__.py allauth/socialaccount/providers/reddit/provider.py allauth/socialaccount/providers/reddit/tests.py allauth/socialaccount/providers/reddit/urls.py allauth/socialaccount/providers/reddit/views.py allauth/socialaccount/providers/robinhood/__init__.py allauth/socialaccount/providers/robinhood/provider.py allauth/socialaccount/providers/robinhood/tests.py allauth/socialaccount/providers/robinhood/urls.py allauth/socialaccount/providers/robinhood/views.py allauth/socialaccount/providers/salesforce/__init__.py allauth/socialaccount/providers/salesforce/provider.py allauth/socialaccount/providers/salesforce/tests.py allauth/socialaccount/providers/salesforce/urls.py allauth/socialaccount/providers/salesforce/views.py allauth/socialaccount/providers/shopify/__init__.py allauth/socialaccount/providers/shopify/provider.py allauth/socialaccount/providers/shopify/tests.py allauth/socialaccount/providers/shopify/urls.py allauth/socialaccount/providers/shopify/views.py allauth/socialaccount/providers/slack/__init__.py allauth/socialaccount/providers/slack/models.py allauth/socialaccount/providers/slack/provider.py allauth/socialaccount/providers/slack/tests.py allauth/socialaccount/providers/slack/urls.py allauth/socialaccount/providers/slack/views.py allauth/socialaccount/providers/soundcloud/__init__.py allauth/socialaccount/providers/soundcloud/provider.py allauth/socialaccount/providers/soundcloud/tests.py allauth/socialaccount/providers/soundcloud/urls.py allauth/socialaccount/providers/soundcloud/views.py allauth/socialaccount/providers/spotify/__init__.py allauth/socialaccount/providers/spotify/provider.py allauth/socialaccount/providers/spotify/tests.py allauth/socialaccount/providers/spotify/urls.py allauth/socialaccount/providers/spotify/views.py allauth/socialaccount/providers/stackexchange/__init__.py allauth/socialaccount/providers/stackexchange/provider.py allauth/socialaccount/providers/stackexchange/tests.py allauth/socialaccount/providers/stackexchange/urls.py allauth/socialaccount/providers/stackexchange/views.py allauth/socialaccount/providers/stripe/__init__.py allauth/socialaccount/providers/stripe/provider.py allauth/socialaccount/providers/stripe/tests.py allauth/socialaccount/providers/stripe/urls.py allauth/socialaccount/providers/stripe/views.py allauth/socialaccount/providers/trello/__init__.py allauth/socialaccount/providers/trello/provider.py allauth/socialaccount/providers/trello/tests.py allauth/socialaccount/providers/trello/urls.py allauth/socialaccount/providers/trello/views.py allauth/socialaccount/providers/tumblr/__init__.py allauth/socialaccount/providers/tumblr/provider.py allauth/socialaccount/providers/tumblr/tests.py allauth/socialaccount/providers/tumblr/urls.py allauth/socialaccount/providers/tumblr/views.py allauth/socialaccount/providers/twentythreeandme/__init__.py allauth/socialaccount/providers/twentythreeandme/provider.py allauth/socialaccount/providers/twentythreeandme/tests.py allauth/socialaccount/providers/twentythreeandme/urls.py allauth/socialaccount/providers/twentythreeandme/views.py allauth/socialaccount/providers/twitch/__init__.py allauth/socialaccount/providers/twitch/provider.py allauth/socialaccount/providers/twitch/tests.py allauth/socialaccount/providers/twitch/urls.py allauth/socialaccount/providers/twitch/views.py allauth/socialaccount/providers/twitter/__init__.py allauth/socialaccount/providers/twitter/provider.py allauth/socialaccount/providers/twitter/tests.py allauth/socialaccount/providers/twitter/urls.py allauth/socialaccount/providers/twitter/views.py allauth/socialaccount/providers/untappd/__init__.py allauth/socialaccount/providers/untappd/client.py allauth/socialaccount/providers/untappd/provider.py allauth/socialaccount/providers/untappd/tests.py allauth/socialaccount/providers/untappd/urls.py allauth/socialaccount/providers/untappd/views.py allauth/socialaccount/providers/vimeo/__init__.py allauth/socialaccount/providers/vimeo/provider.py allauth/socialaccount/providers/vimeo/tests.py allauth/socialaccount/providers/vimeo/urls.py allauth/socialaccount/providers/vimeo/views.py allauth/socialaccount/providers/vk/__init__.py allauth/socialaccount/providers/vk/provider.py allauth/socialaccount/providers/vk/tests.py allauth/socialaccount/providers/vk/urls.py allauth/socialaccount/providers/vk/views.py allauth/socialaccount/providers/weibo/__init__.py allauth/socialaccount/providers/weibo/provider.py allauth/socialaccount/providers/weibo/tests.py allauth/socialaccount/providers/weibo/urls.py allauth/socialaccount/providers/weibo/views.py allauth/socialaccount/providers/weixin/__init__.py allauth/socialaccount/providers/weixin/client.py allauth/socialaccount/providers/weixin/provider.py allauth/socialaccount/providers/weixin/tests.py allauth/socialaccount/providers/weixin/urls.py allauth/socialaccount/providers/weixin/views.py allauth/socialaccount/providers/windowslive/__init__.py allauth/socialaccount/providers/windowslive/provider.py allauth/socialaccount/providers/windowslive/tests.py allauth/socialaccount/providers/windowslive/urls.py allauth/socialaccount/providers/windowslive/views.py allauth/socialaccount/providers/xing/__init__.py allauth/socialaccount/providers/xing/provider.py allauth/socialaccount/providers/xing/tests.py allauth/socialaccount/providers/xing/urls.py allauth/socialaccount/providers/xing/views.py allauth/socialaccount/providers/yahoo/__init__.py allauth/socialaccount/providers/yahoo/models.py allauth/socialaccount/providers/yahoo/provider.py allauth/socialaccount/providers/yahoo/tests.py allauth/socialaccount/providers/yahoo/urls.py allauth/socialaccount/providers/yahoo/views.py allauth/socialaccount/templatetags/__init__.py allauth/socialaccount/templatetags/socialaccount.py allauth/templates/base.html allauth/templates/account/account_inactive.html allauth/templates/account/base.html allauth/templates/account/email.html allauth/templates/account/email_confirm.html allauth/templates/account/login.html allauth/templates/account/logout.html allauth/templates/account/password_change.html allauth/templates/account/password_reset.html allauth/templates/account/password_reset_done.html allauth/templates/account/password_reset_from_key.html allauth/templates/account/password_reset_from_key_done.html allauth/templates/account/password_set.html allauth/templates/account/signup.html allauth/templates/account/signup_closed.html allauth/templates/account/verification_sent.html allauth/templates/account/verified_email_required.html allauth/templates/account/email/email_confirmation_message.txt allauth/templates/account/email/email_confirmation_signup_message.txt allauth/templates/account/email/email_confirmation_signup_subject.txt allauth/templates/account/email/email_confirmation_subject.txt allauth/templates/account/email/password_reset_key_message.txt allauth/templates/account/email/password_reset_key_subject.txt allauth/templates/account/messages/cannot_delete_primary_email.txt allauth/templates/account/messages/email_confirmation_sent.txt allauth/templates/account/messages/email_confirmed.txt allauth/templates/account/messages/email_deleted.txt allauth/templates/account/messages/logged_in.txt allauth/templates/account/messages/logged_out.txt allauth/templates/account/messages/password_changed.txt allauth/templates/account/messages/password_set.txt allauth/templates/account/messages/primary_email_set.txt allauth/templates/account/messages/unverified_primary_email.txt allauth/templates/account/snippets/already_logged_in.html allauth/templates/openid/base.html allauth/templates/openid/login.html allauth/templates/socialaccount/authentication_error.html allauth/templates/socialaccount/base.html allauth/templates/socialaccount/connections.html allauth/templates/socialaccount/login_cancelled.html allauth/templates/socialaccount/signup.html allauth/templates/socialaccount/messages/account_connected.txt allauth/templates/socialaccount/messages/account_connected_other.txt allauth/templates/socialaccount/messages/account_disconnected.txt allauth/templates/socialaccount/snippets/login_extra.html allauth/templates/socialaccount/snippets/provider_list.html django_allauth.egg-info/PKG-INFO django_allauth.egg-info/SOURCES.txt django_allauth.egg-info/dependency_links.txt django_allauth.egg-info/requires.txt django_allauth.egg-info/top_level.txt docs/Makefile docs/advanced.rst docs/conf.py docs/configuration.rst docs/decorators.rst docs/faq.rst docs/index.rst docs/installation.rst docs/overview.rst docs/providers.rst docs/release-notes.rst docs/signals.rst docs/support.rst docs/templates.rst docs/views.rstdjango-allauth-0.35.0/django_allauth.egg-info/requires.txt0000644000076500000240000000011213235133511024505 0ustar pennersrstaff00000000000000Django >= 1.11 python-openid >= 2.2.5 requests-oauthlib >= 0.3.0 requests django-allauth-0.35.0/django_allauth.egg-info/top_level.txt0000644000076500000240000000001013235133511024634 0ustar pennersrstaff00000000000000allauth django-allauth-0.35.0/django_allauth.egg-info/dependency_links.txt0000644000076500000240000000000113235133511026161 0ustar pennersrstaff00000000000000 django-allauth-0.35.0/AUTHORS0000644000076500000240000000356313235130412016521 0ustar pennersrstaff00000000000000django-allauth was started by Raymond Penners ( or @pennersr) in October 2010, inspired by and partly based on existing projects such as Pinax (account app), Django-Socialauth, django-socialregistration. Contributors ============ Aaron van Derlip Abhishek Kumar Jaiswal Adam McKerlie Agustin Perez Paladini Ahmet Emre Aladağ Aldiantoro Nugroho Alexander Gaevsky Anna Sirota Andrean Franc Andrey Balandin Andrey Akolpakov Andy Matthews Ani Vera Aron Griffis Basil Shubin Ben Timby Benjamin Jorand Björn Andersson Bojan Mihelac Chris Beaven Chris Davis Christian Carter Christopher Grebs Daniel Eriksson Daniel Widerin David Ascher David Evans David Friedman Egor Poderyagin Eran Rundstein Eric Delord Fabio Caritas Barrionuevo da Luz Facundo Gaich Fred Palmer Fábio Santos George Whewell Griffith Rees Guillaume Vincent Guoyu Hao Hatem Nassrat J. Erm J. Fernando Sánchez Jack Shedd Jakob Gerhard Martinussen James Rivett-Carnac James Thompson Jannis Leidel Jannis Vajen Jeff Triplett Jerome Leclanche Joe Vanderstelt John Bazik John Whitlock Jonas Aule JoonHwan Kim Josh Owen Josh Wright Joshua Sorenson Julen Ruiz Aizpuru Justin Michalicek Justin Pogrob Koichi Harakawa Lee Semel Luis Diego García Luiz Guilherme Pais dos Santos Luke Burden Luke Crouch Maksim Rukomoynikov Marcin Skarbek Marcin Spoczynski Marco Fucci Marjori Pomarole Markus Kaiserswerth Markus Thielen Martin Bächtold Mauro Stettler Morgante Pell Nariman Gharib Niklas A Emanuelsson Patrick Paul Paulo Eduardo Neves Peter Bittner Peter Rowlands Rabi Alam Radek Czajka Rense VanderHoek Robert Balfre Roberto Novaes Rod Xavier Bondoc Roman Tomjak Roumen Antonov Ryan Verner Sam Solomon Sanghyeok Lee Seizan Shimazaki Serafeim Papastefanos Shane Rice Stuart Ross Terry Jones Tomas Babej Tomas Marcik Udi Oron Vuong Nguyen Volodymyr Yatsyk Wendy Edwards Will Ross William Li Yuri Kriachko Yaroslav Muravsky django-allauth-0.35.0/allauth/0000755000076500000240000000000013235133532017102 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/app_settings.py0000644000076500000240000000036113117447114022157 0ustar pennersrstaff00000000000000from django.conf import settings SOCIALACCOUNT_ENABLED = 'allauth.socialaccount' in settings.INSTALLED_APPS LOGIN_REDIRECT_URL = getattr(settings, 'LOGIN_REDIRECT_URL', '/') USER_MODEL = getattr(settings, 'AUTH_USER_MODEL', 'auth.User') django-allauth-0.35.0/allauth/locale/0000755000076500000240000000000013235133532020341 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/sk/0000755000076500000240000000000013235133532020756 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/sk/LC_MESSAGES/0000755000076500000240000000000013235133532022543 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/sk/LC_MESSAGES/django.mo0000644000076500000240000003560113235132043024343 0ustar pennersrstaff00000000000000 / 7 \A 6 -  0 9DWIowL1~" &9*dkzp_J289+ei y ' %.?N-d"lB\"6Ya} ! %#B2f-A6 @@%&@)g?;# 1?K<I0 #4,at}2r\yP:NH"k ) '> *f $ ,  -!/! ?!I! Q!]! l!z!!! ! !!! !!!!! " "" "0"C"\"v"" """"."B"G!$Ni$h$6!%&X%%%%%%% %I%~2&=&(&'' @' K' Y'c'(''5'''((+(=(P(nb(k(F=))9)<)* *7* K*W*3k*.*.* *+"+ (+6+E+#]++"+)+y+Oh,,*h- -3--- -2.6.G.W. f.q.. ..3.*.5"/'X/,/O/?/~=0%0 01D#1:h1)11819"2\2T2F33 z33J3!344 ,4?74uw44U55Ep6=6v68k77v8888$8.890:9 k9y9 9999999 ::#:):1:H:]: c: m:{: ::::::;;;;; ?;M;*V;;k6xiJI CHvl/(0c\{P+f$E~U'hODGy?`M|K7Q@X]jdZT*R4<Wp& a_Yo w)9B2Nt58:}[g-Sn=sqez.u !ALr>3" #b %F,V^1m"oauth_token" (OAuth1) or access token (OAuth2)"oauth_token_secret" (OAuth1) or refresh token (OAuth2)Note: you can still change your e-mail address.A user is already registered with this e-mail address.API secret, client secret, or consumer secretAccountAccount ConnectionsAccount InactiveAccountsAdd E-mailAdd E-mail AddressAdd a 3rd Party AccountAlready have an account? Then please sign in.An account already exists with this e-mail address. Please sign in to that account first, then connect your %s account.An error occurred while attempting to login via your social network account.App ID, or consumer keyAre you sure you want to sign out?Bad TokenChange PasswordConfirmConfirm E-mail AddressConfirmation e-mail sent to %(email)s.Current PasswordDo you really want to remove the selected e-mail address?E-mailE-mail (again)E-mail (optional)E-mail AddressesE-mail addressE-mail address confirmationForgot Password?Forgotten your password? Enter your e-mail address below, and we'll send you an e-mail allowing you to reset it.If you have not created an account yet, then please sign up first.In case you forgot, your username is %(username)s.Invalid profile dataInvalid response while obtaining access token from "%s".Invalid response while obtaining request token from "%s".KeyLogin CancelledMake PrimaryNew PasswordNew Password (again)No access to private resources at "%s".No access token saved for "%s".No request token saved for "%s".NoteOpenID Sign InPasswordPassword (again)Password ResetPassword Reset E-mailPassword must be a minimum of {0} characters.Password successfully changed.Password successfully set.Please Confirm Your E-mail AddressPlease confirm that %(email)s is an e-mail address for user %(user_display)s.Please contact us if you have any trouble resetting your password.Please sign in with one of your existing third party accounts. Or, sign up for a %(site_name)s account and sign in below:Please type your current password.PrimaryPrimary e-mail address set.Re-send VerificationRemember MeRemoveRemoved e-mail address %(email)s.Reset My PasswordSet PasswordSign InSign OutSign UpSign Up ClosedSignupSocial AccountsSocial Network Login FailureSuccessfully signed in as %(name)s.Thank you for using %(site_name)s! %(site_domain)sThank you from %(site_name)s! %(site_domain)sThe e-mail address and/or password you specified are not correct.The e-mail address is not assigned to any user accountThe following e-mail addresses are associated with your account:The password reset link was invalid, possibly because it has already been used. Please request a new password reset.The password reset token was invalid.The social account has been connected.The social account has been disconnected.The social account is already connected to a different account.The username and/or password you specified are not correct.This account is currently inactive.This account is inactive.This e-mail address is already associated with another account.This e-mail address is already associated with this account.This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request.This part of the site requires us to verify that you are who you claim to be. For this purpose, we require that you verify ownership of your e-mail address. Too many failed login attempts. Try again later.UnverifiedUsernameUsername can not be used. Please use other username.Username or e-mailVerifiedVerify Your E-mail AddressWarning:We are sorry, but the sign up is currently closed.We have sent an e-mail to you for verification. Please click on the link inside this e-mail. Please contact us if you do not receive it within a few minutes.We have sent an e-mail to you for verification. Follow the link provided to finalize the signup process. Please contact us if you do not receive it within a few minutes.We have sent you an e-mail. Please contact us if you do not receive it within a few minutes.You are about to use your %(provider_name)s account to login to %(site_name)s. As a final step, please complete the following form:You can sign in to your account using any of the following third party accounts:You cannot remove your primary e-mail address (%(email)s).You currently do not have any e-mail address set up. You should really add an e-mail address so you can receive notifications, reset your password, etc.You currently have no social network accounts connected to this account.You decided to cancel logging in to our site using one of your existing accounts. If this was a mistake, please proceed to sign in.You have confirmed %(email)s.You have signed out.You must type the same email each time.You must type the same password each time.Your account has no password set up.Your account has no verified e-mail address.Your password is now changed.Your primary e-mail address must be verified.change passwordclient idcreateddate joinede-mail addressemail addressemail addressesemail confirmationemail confirmationsexpires atextra datafield labelLoginkeylast loginnameorprimaryprovidersecret keysentsocial accountsocial accountssocial applicationsocial application tokensocial application tokenssocial applicationstokentoken secretuiduserverifiedyou are already logged in as %(user_display)s.Project-Id-Version: Report-Msgid-Bugs-To: POT-Creation-Date: 2018-02-02 12:55-0600 PO-Revision-Date: 2017-04-26 12:48+0200 Last-Translator: Tomas Babej Language-Team: Language: sk MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Generator: Poedit 2.0.1 "Oauth_token" (Podpora protokolu OAuth1) alebo prístup tokenu (OAuth2)"Oauth_token_secret" (Podpora protokolu OAuth1) alebo token obnovenie (OAuth2)Poznámka: stále môžete zmeniť svoju e-mailovú adresu.Používateľ s touto e-mailovou adresou už existuje.Kľúč API, klienta alebo zákazníkaÚčetPripojenia účtuÚčet neaktívnyÚčtyPridať e-mailPridať e-mailovú adresuPridaj účetUž ste sa zaregistrovali? Tak sa prihláste.Účet s touto e-mailovou adresou už existuje. Prosím, prihláste sa najprv na tento účet a potom pripojte svoj %s účet.Pri prihlasovaní pomocou sociálnej siete sa vyskytla chyba.ID aplikácie alebo zákaznícky kľúčSte si istý, že sa chcete odhlásiť?Zlý tokenZmeniť hesloPotvrdiťPotvrdiť e-mailovú adresuOverovací e-mail poslaný na %(email)s.Súčasné hesloNaozaj chcete odstrániť vybranú e-mailovú adresu?E-mailE-mail (znova)E-mail (nepovinné)E-mailová adresaE-mailová adresaPotvrdenie e-mailuZabudnuté heslo?Zabudli ste heslo? Vložte nižšie svoju e-mailovú adresu a čoskoro vám pošlemee-mail na obnovenie hesla.Ak ešte nemáte vytvorený účet, tak potom sa prosím najprv zaregistrujte.Ak ste náhodou zabudli, vaše používateľské meno je %(username)s.Nesprávne profilové údajeNeplatná odozva pri získavaní prístupu tokenu z "%s".Neplatná odozva pri získavaní požiadavky tokenu z "%s".KľúčPrihlásenie zrušenéVytvoriť primárnyNové hesloNové heslo (znovu)Žiadny prístup do privátneho úložiska na "%s".Žiadny uložený prístupový token pre "%s".Žiadna uložená požiadavka tokenu pre "%s".PoznámkaPrihlásiť pomocou OpenIDHesloHeslo (znovu)Obnoviť hesloE-mail pre obnovu heslaHeslo musí mať aspoň {0} znakov.Zmena hesla prebehla úspešne.)Nastavenie hesla bolo úspešné.Potvrďte prosím svoju e-mailovú adresuProsím potvrďte, že %(email)s je e-mailová adresa pre používateľa %(user_display)s.Prosím, kontaktujte nás, ak máte nejaký problém s obnovením svojho hesla.Prosím prihláste sa s jedným z vašich existujúcich účtov iných služieb. Alebo sa zaregistrujte na %(site_name)s a prihláste sa nižšie:Prosím, napíšte svoje súčasné heslo.PrimárnyPrimárna e-mailová adresa bola úspešne zadaná.Preposlať overenieZapamätať si maOdstrániťE-mailová adresa %(email)s úpešne odstránená.Obnov moje hesloNastaviť hesloPrihlásiť saOdhlásiťZaregistrovaťRegistrácia uzavretáRegistráciaÚčty na sociálnych sieťachPrihlasovanie pomocou sociálnej siete neúspešnéÚspešne ste sa prihlásili ako %(name)s.Ďakujeme za využitie %(site_name)s! %(site_domain)sVďaka z %(site_name)s! %(site_domain)sUvedený e-mail alebo heslo nie je správne.Táto e-mailová adresa nie je pridelená k žiadnemu používateľskému kontuNasledujúce e-mailové adresy sú prepojené s vašim účtom:Odkaz na obnovu heslo je neplatný, pravdepodobne už bol použitý. Nové obnovenie hesla.Token na obnovu hesla bol nesprávny.Sociálny účet bol pripojený.Sociálny účet bol odpojený.Tento sociálny účet už bol pripojený k inému používateľovi.Uvedené užívateľské meno alebo heslo nie je správne.Tento účet nie je momentálne aktívny.Tento účet je neaktívny.Táto e-mailová adresa je už spojená s iným účtom.Táto e-mailová adresa je už spojená s týmto účtom.Odkaz na potvrdenie e-mailu je neplatný alebo vypršal. Zaslať novú žiadosť o overovací e-mail.Na prezeranie nasledujúceho obsahu je potrebné overenie vašej e-mailovej adresy. Príliš veľa neúspešných pokusov o prihlásenie. Skúste neskôr.NeoverenýUžívateľské menoUžívateľské meno nemôže byť použité. Prosím, použite iné meno.Užívateľské meno alebo e-mailOverenýPotvrďte e-mailovú adresuVarovanie:Ospravedlňujeme sa, ale registrácia je momentálne uzavretá.Bol vám zaslaný e-mail s overovacím odkazom. Ak ste v priebehu pár minút žiaden neobdržali, kontaktujte nás.Bol vám zaslaný overovací e-mail. Pre dokončenie registrácie použite overovací odkaz. Ak ste v priebehu pár minút žiaden neobdržali, kontaktujte nás.Odoslali sme vám e-mail. Prosím kontaktujte nás ak ste ho nedostalido pár minút.Chystáte sa použiť váš %(provider_name)s účet na prihlásenie do %(site_name)s. Ako posledný krok vyplňte nasledujúci formulár:Môžete sa prihlásiť pomocou niektorého z nasledujúcich účtov:Primárna e-mailová adresa sa nedá odstrániť (%(email)s).Momentálne nemáte nastavený žiaden e-mail, kvôli čomu nemôžete dostávať upozornenia, obnovovať heslo, atď.Momentálne nemáte pripojený žiaden sociálny účet.Rozhodli ste sa zrušiť prihlasovanie sa na našu stránku použitím jedného z vašich existujúcich účtov. Ak se chceli vykonať inú operáciu, pokračujte na prihlásiť sa.%(email)s potvrdené.Odhlásili ste sa.Heslá sa nezhodujú.Heslá sa nezhodujú.Váš účet nemá nastavené heslo.Váš účet nemá overenú e-mailovú adresu.Tvoje heslo bolo zmenené.Primárna e-mailová adresa musí byť overená.zmeniť hesloidentifikátor klientavytvorenýdáum pripojeniae-mailová adresae-mailová adresae-mailové adresypotvrdenie e-mailupotvrdenia e-mailuvyexpirujeďalšie údajeLoginkľúčposledné prihlásenieužívateľské menoaleboprimárnyposkytovateľtajný kľúčodoslanésociálny účetsociálne účtysociálna aplikáciatoken sociálnej aplikácietokeny sociálnej aplikáciesociálne aplikácietokenheslo prístupového tokenuuidpoužívateľoverenýuž ste prihlásený ako %(user_display)s.django-allauth-0.35.0/allauth/locale/sk/LC_MESSAGES/django.po0000644000076500000240000006050213235132036024346 0ustar pennersrstaff00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-02-02 12:55-0600\n" "PO-Revision-Date: 2017-04-26 12:48+0200\n" "Last-Translator: Tomas Babej \n" "Language-Team: \n" "Language: sk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 2.0.1\n" #: account/adapter.py:45 msgid "Username can not be used. Please use other username." msgstr "Užívateľské meno nemôže byť použité. Prosím, použite iné meno." #: account/adapter.py:49 msgid "Too many failed login attempts. Try again later." msgstr "Príliš veľa neúspešných pokusov o prihlásenie. Skúste neskôr." #: account/adapter.py:51 msgid "A user is already registered with this e-mail address." msgstr "Používateľ s touto e-mailovou adresou už existuje." #: account/adapter.py:288 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "Heslo musí mať aspoň {0} znakov." #: account/apps.py:7 msgid "Accounts" msgstr "Účty" #: account/forms.py:61 account/forms.py:398 msgid "You must type the same password each time." msgstr "Heslá sa nezhodujú." #: account/forms.py:91 account/forms.py:365 account/forms.py:476 msgid "Password" msgstr "Heslo" #: account/forms.py:92 msgid "Remember Me" msgstr "Zapamätať si ma" #: account/forms.py:98 msgid "This account is currently inactive." msgstr "Tento účet nie je momentálne aktívny." #: account/forms.py:101 msgid "The e-mail address and/or password you specified are not correct." msgstr "Uvedený e-mail alebo heslo nie je správne." #: account/forms.py:104 msgid "The username and/or password you specified are not correct." msgstr "Uvedené užívateľské meno alebo heslo nie je správne." #: account/forms.py:113 account/forms.py:268 account/forms.py:426 #: account/forms.py:495 msgid "E-mail address" msgstr "E-mailová adresa" #: account/forms.py:115 account/forms.py:301 account/forms.py:421 #: account/forms.py:490 msgid "E-mail" msgstr "E-mail" #: account/forms.py:120 account/forms.py:123 account/forms.py:260 #: account/forms.py:264 msgid "Username" msgstr "Užívateľské meno" #: account/forms.py:130 msgid "Username or e-mail" msgstr "Užívateľské meno alebo e-mail" #: account/forms.py:133 msgctxt "field label" msgid "Login" msgstr "Login" #: account/forms.py:292 msgid "E-mail (again)" msgstr "E-mail (znova)" #: account/forms.py:296 msgid "E-mail address confirmation" msgstr "Potvrdenie e-mailu" #: account/forms.py:304 msgid "E-mail (optional)" msgstr "E-mail (nepovinné)" #: account/forms.py:345 msgid "You must type the same email each time." msgstr "Heslá sa nezhodujú." #: account/forms.py:368 account/forms.py:477 msgid "Password (again)" msgstr "Heslo (znovu)" #: account/forms.py:432 msgid "This e-mail address is already associated with this account." msgstr "Táto e-mailová adresa je už spojená s týmto účtom." #: account/forms.py:434 msgid "This e-mail address is already associated with another account." msgstr "Táto e-mailová adresa je už spojená s iným účtom." #: account/forms.py:456 msgid "Current Password" msgstr "Súčasné heslo" #: account/forms.py:457 account/forms.py:546 msgid "New Password" msgstr "Nové heslo" #: account/forms.py:458 account/forms.py:547 msgid "New Password (again)" msgstr "Nové heslo (znovu)" #: account/forms.py:466 msgid "Please type your current password." msgstr "Prosím, napíšte svoje súčasné heslo." #: account/forms.py:504 msgid "The e-mail address is not assigned to any user account" msgstr "" "Táto e-mailová adresa nie je pridelená k žiadnemu používateľskému kontu" #: account/forms.py:568 msgid "The password reset token was invalid." msgstr "Token na obnovu hesla bol nesprávny." #: account/models.py:23 msgid "user" msgstr "používateľ" #: account/models.py:27 account/models.py:81 msgid "e-mail address" msgstr "e-mailová adresa" #: account/models.py:28 msgid "verified" msgstr "overený" #: account/models.py:29 msgid "primary" msgstr "primárny" #: account/models.py:34 msgid "email address" msgstr "e-mailová adresa" #: account/models.py:35 msgid "email addresses" msgstr "e-mailové adresy" #: account/models.py:83 msgid "created" msgstr "vytvorený" #: account/models.py:85 msgid "sent" msgstr "odoslané" #: account/models.py:86 socialaccount/models.py:55 msgid "key" msgstr "kľúč" #: account/models.py:91 msgid "email confirmation" msgstr "potvrdenie e-mailu" #: account/models.py:92 msgid "email confirmations" msgstr "potvrdenia e-mailu" #: socialaccount/adapter.py:26 #, python-format msgid "" "An account already exists with this e-mail address. Please sign in to that " "account first, then connect your %s account." msgstr "" "Účet s touto e-mailovou adresou už existuje. Prosím, prihláste sa najprv na " "tento účet a potom pripojte svoj %s účet." #: socialaccount/adapter.py:131 msgid "Your account has no password set up." msgstr "Váš účet nemá nastavené heslo." #: socialaccount/adapter.py:138 msgid "Your account has no verified e-mail address." msgstr "Váš účet nemá overenú e-mailovú adresu." #: socialaccount/apps.py:7 msgid "Social Accounts" msgstr "Účty na sociálnych sieťach" #: socialaccount/models.py:43 socialaccount/models.py:77 msgid "provider" msgstr "poskytovateľ" #: socialaccount/models.py:46 msgid "name" msgstr "užívateľské meno" #: socialaccount/models.py:48 msgid "client id" msgstr "identifikátor klienta" #: socialaccount/models.py:50 msgid "App ID, or consumer key" msgstr "ID aplikácie alebo zákaznícky kľúč" #: socialaccount/models.py:51 msgid "secret key" msgstr "tajný kľúč" #: socialaccount/models.py:53 msgid "API secret, client secret, or consumer secret" msgstr "Kľúč API, klienta alebo zákazníka" #: socialaccount/models.py:58 msgid "Key" msgstr "Kľúč" #: socialaccount/models.py:66 msgid "social application" msgstr "sociálna aplikácia" #: socialaccount/models.py:67 msgid "social applications" msgstr "sociálne aplikácie" #: socialaccount/models.py:96 msgid "uid" msgstr "uid" #: socialaccount/models.py:98 msgid "last login" msgstr "posledné prihlásenie" #: socialaccount/models.py:100 msgid "date joined" msgstr "dáum pripojenia" #: socialaccount/models.py:102 msgid "extra data" msgstr "ďalšie údaje" #: socialaccount/models.py:106 msgid "social account" msgstr "sociálny účet" #: socialaccount/models.py:107 msgid "social accounts" msgstr "sociálne účty" #: socialaccount/models.py:133 msgid "token" msgstr "token" #: socialaccount/models.py:135 msgid "\"oauth_token\" (OAuth1) or access token (OAuth2)" msgstr "" "\"Oauth_token\" (Podpora protokolu OAuth1) alebo prístup tokenu (OAuth2)" #: socialaccount/models.py:138 msgid "token secret" msgstr "heslo prístupového tokenu" #: socialaccount/models.py:140 msgid "\"oauth_token_secret\" (OAuth1) or refresh token (OAuth2)" msgstr "" "\"Oauth_token_secret\" (Podpora protokolu OAuth1) alebo token obnovenie " "(OAuth2)" #: socialaccount/models.py:142 msgid "expires at" msgstr "vyexpiruje" #: socialaccount/models.py:146 msgid "social application token" msgstr "token sociálnej aplikácie" #: socialaccount/models.py:147 msgid "social application tokens" msgstr "tokeny sociálnej aplikácie" #: socialaccount/providers/douban/views.py:36 msgid "Invalid profile data" msgstr "Nesprávne profilové údaje" #: socialaccount/providers/oauth/client.py:78 #, python-format msgid "Invalid response while obtaining request token from \"%s\"." msgstr "Neplatná odozva pri získavaní požiadavky tokenu z \"%s\"." #: socialaccount/providers/oauth/client.py:109 #, python-format msgid "Invalid response while obtaining access token from \"%s\"." msgstr "Neplatná odozva pri získavaní prístupu tokenu z \"%s\"." #: socialaccount/providers/oauth/client.py:128 #, python-format msgid "No request token saved for \"%s\"." msgstr "Žiadna uložená požiadavka tokenu pre \"%s\"." #: socialaccount/providers/oauth/client.py:177 #, python-format msgid "No access token saved for \"%s\"." msgstr "Žiadny uložený prístupový token pre \"%s\"." #: socialaccount/providers/oauth/client.py:197 #, python-format msgid "No access to private resources at \"%s\"." msgstr "Žiadny prístup do privátneho úložiska na \"%s\"." #: templates/account/account_inactive.html:5 #: templates/account/account_inactive.html:8 msgid "Account Inactive" msgstr "Účet neaktívny" #: templates/account/account_inactive.html:10 msgid "This account is inactive." msgstr "Tento účet je neaktívny." #: templates/account/email.html:5 msgid "Account" msgstr "Účet" #: templates/account/email.html:8 msgid "E-mail Addresses" msgstr "E-mailová adresa" #: templates/account/email.html:10 msgid "The following e-mail addresses are associated with your account:" msgstr "Nasledujúce e-mailové adresy sú prepojené s vašim účtom:" #: templates/account/email.html:24 msgid "Verified" msgstr "Overený" #: templates/account/email.html:26 msgid "Unverified" msgstr "Neoverený" #: templates/account/email.html:28 msgid "Primary" msgstr "Primárny" #: templates/account/email.html:34 msgid "Make Primary" msgstr "Vytvoriť primárny" #: templates/account/email.html:35 msgid "Re-send Verification" msgstr "Preposlať overenie" #: templates/account/email.html:36 templates/socialaccount/connections.html:35 msgid "Remove" msgstr "Odstrániť" #: templates/account/email.html:43 msgid "Warning:" msgstr "Varovanie:" #: templates/account/email.html:43 msgid "" "You currently do not have any e-mail address set up. You should really add " "an e-mail address so you can receive notifications, reset your password, etc." msgstr "" "Momentálne nemáte nastavený žiaden e-mail, kvôli čomu nemôžete dostávať " "upozornenia, obnovovať heslo, atď." #: templates/account/email.html:48 msgid "Add E-mail Address" msgstr "Pridať e-mailovú adresu" #: templates/account/email.html:53 msgid "Add E-mail" msgstr "Pridať e-mail" #: templates/account/email.html:62 msgid "Do you really want to remove the selected e-mail address?" msgstr "Naozaj chcete odstrániť vybranú e-mailovú adresu?" #: templates/account/email/email_confirmation_message.txt:1 #, fuzzy, python-format #| msgid "" #| "Hello from %(site_name)s!\n" #| "\n" #| "You're receiving this e-mail because user %(user_display)s at " #| "%(site_domain)s has given yours as an e-mail address to connect their " #| "account.\n" #| "\n" #| "To confirm this is correct, go to %(activate_url)s\n" msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because user %(user_display)s has given yours " "as an e-mail address to connect their account.\n" "\n" "To confirm this is correct, go to %(activate_url)s\n" msgstr "" "Zdravíme z %(site_name)s!\n" "\n" "Tento e-mail ste dostali, pretože používateľ %(user_display)s na " "%(site_domain)s zadal túto e-mailovú adresu na prepojenie s jeho účtom.\n" "\n" "Pre potvrdenie nasledujte %(activate_url)s\n" #: templates/account/email/email_confirmation_message.txt:7 #, python-format msgid "" "Thank you from %(site_name)s!\n" "%(site_domain)s" msgstr "" "Vďaka z %(site_name)s!\n" "%(site_domain)s" #: templates/account/email/email_confirmation_subject.txt:3 msgid "Please Confirm Your E-mail Address" msgstr "Potvrďte prosím svoju e-mailovú adresu" #: templates/account/email/password_reset_key_message.txt:1 #, fuzzy, python-format #| msgid "" #| "Hello from %(site_name)s!\n" #| "\n" #| "You're receiving this e-mail because you or someone else has requested a " #| "password for your user account at %(site_domain)s.\n" #| "It can be safely ignored if you did not request a password reset. Click " #| "the link below to reset your password." msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because you or someone else has requested a " "password for your user account.\n" "It can be safely ignored if you did not request a password reset. Click the " "link below to reset your password." msgstr "" "Zdravíme z %(site_name)s!\n" "\n" "Toto je žiadosť o heslo pre užívateľský účet na %(site_domain)s.\n" "Ak ste nežiadali o obnovu hesla, správu môžete pokojne ignorovať. Odkaz " "nižšie obnoví heslo." #: templates/account/email/password_reset_key_message.txt:8 #, python-format msgid "In case you forgot, your username is %(username)s." msgstr "Ak ste náhodou zabudli, vaše používateľské meno je %(username)s." #: templates/account/email/password_reset_key_message.txt:10 #, python-format msgid "" "Thank you for using %(site_name)s!\n" "%(site_domain)s" msgstr "" "Ďakujeme za využitie %(site_name)s!\n" "%(site_domain)s" #: templates/account/email/password_reset_key_subject.txt:3 msgid "Password Reset E-mail" msgstr "E-mail pre obnovu hesla" #: templates/account/email_confirm.html:6 #: templates/account/email_confirm.html:10 msgid "Confirm E-mail Address" msgstr "Potvrdiť e-mailovú adresu" #: templates/account/email_confirm.html:16 #, python-format msgid "" "Please confirm that %(email)s is an e-mail " "address for user %(user_display)s." msgstr "" "Prosím potvrďte, že %(email)s je e-mailová " "adresa pre používateľa %(user_display)s." #: templates/account/email_confirm.html:20 msgid "Confirm" msgstr "Potvrdiť" #: templates/account/email_confirm.html:27 #, python-format msgid "" "This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request." msgstr "" "Odkaz na potvrdenie e-mailu je neplatný alebo vypršal. Zaslať novú žiadosť o overovací e-mail." #: templates/account/login.html:6 templates/account/login.html:10 #: templates/account/login.html:43 msgid "Sign In" msgstr "Prihlásiť sa" #: templates/account/login.html:15 #, python-format msgid "" "Please sign in with one\n" "of your existing third party accounts. Or, sign " "up\n" "for a %(site_name)s account and sign in below:" msgstr "" "Prosím prihláste sa s jedným\n" "z vašich existujúcich účtov iných služieb. Alebo sa zaregistrujte\n" "na %(site_name)s a prihláste sa nižšie:" #: templates/account/login.html:25 msgid "or" msgstr "alebo" #: templates/account/login.html:32 #, python-format msgid "" "If you have not created an account yet, then please\n" "sign up first." msgstr "" "Ak ešte nemáte vytvorený účet, tak potom sa prosím\n" "najprv zaregistrujte." #: templates/account/login.html:42 msgid "Forgot Password?" msgstr "Zabudnuté heslo?" #: templates/account/logout.html:5 templates/account/logout.html:8 #: templates/account/logout.html:17 msgid "Sign Out" msgstr "Odhlásiť" #: templates/account/logout.html:10 msgid "Are you sure you want to sign out?" msgstr "Ste si istý, že sa chcete odhlásiť?" #: templates/account/messages/cannot_delete_primary_email.txt:2 #, python-format msgid "You cannot remove your primary e-mail address (%(email)s)." msgstr "Primárna e-mailová adresa sa nedá odstrániť (%(email)s)." #: templates/account/messages/email_confirmation_sent.txt:2 #, python-format msgid "Confirmation e-mail sent to %(email)s." msgstr "Overovací e-mail poslaný na %(email)s." #: templates/account/messages/email_confirmed.txt:2 #, python-format msgid "You have confirmed %(email)s." msgstr "%(email)s potvrdené." #: templates/account/messages/email_deleted.txt:2 #, python-format msgid "Removed e-mail address %(email)s." msgstr "E-mailová adresa %(email)s úpešne odstránená." #: templates/account/messages/logged_in.txt:4 #, python-format msgid "Successfully signed in as %(name)s." msgstr "Úspešne ste sa prihlásili ako %(name)s." #: templates/account/messages/logged_out.txt:2 msgid "You have signed out." msgstr "Odhlásili ste sa." #: templates/account/messages/password_changed.txt:2 msgid "Password successfully changed." msgstr "Zmena hesla prebehla úspešne." #: templates/account/messages/password_set.txt:2 msgid "Password successfully set." msgstr ")Nastavenie hesla bolo úspešné." #: templates/account/messages/primary_email_set.txt:2 msgid "Primary e-mail address set." msgstr "Primárna e-mailová adresa bola úspešne zadaná." #: templates/account/messages/unverified_primary_email.txt:2 msgid "Your primary e-mail address must be verified." msgstr "Primárna e-mailová adresa musí byť overená." #: templates/account/password_change.html:5 #: templates/account/password_change.html:8 #: templates/account/password_change.html:13 #: templates/account/password_reset_from_key.html:4 #: templates/account/password_reset_from_key.html:7 #: templates/account/password_reset_from_key_done.html:4 #: templates/account/password_reset_from_key_done.html:7 msgid "Change Password" msgstr "Zmeniť heslo" #: templates/account/password_reset.html:6 #: templates/account/password_reset.html:10 #: templates/account/password_reset_done.html:6 #: templates/account/password_reset_done.html:9 msgid "Password Reset" msgstr "Obnoviť heslo" #: templates/account/password_reset.html:15 msgid "" "Forgotten your password? Enter your e-mail address below, and we'll send you " "an e-mail allowing you to reset it." msgstr "" "Zabudli ste heslo? Vložte nižšie svoju e-mailovú adresu a čoskoro vám " "pošlemee-mail na obnovenie hesla." #: templates/account/password_reset.html:20 msgid "Reset My Password" msgstr "Obnov moje heslo" #: templates/account/password_reset.html:23 msgid "Please contact us if you have any trouble resetting your password." msgstr "" "Prosím, kontaktujte nás, ak máte nejaký problém s obnovením svojho hesla." #: templates/account/password_reset_done.html:15 msgid "" "We have sent you an e-mail. Please contact us if you do not receive it " "within a few minutes." msgstr "" "Odoslali sme vám e-mail. Prosím kontaktujte nás ak ste ho nedostalido pár " "minút." #: templates/account/password_reset_from_key.html:7 msgid "Bad Token" msgstr "Zlý token" #: templates/account/password_reset_from_key.html:11 #, python-format msgid "" "The password reset link was invalid, possibly because it has already been " "used. Please request a new password reset." msgstr "" "Odkaz na obnovu heslo je neplatný, pravdepodobne už bol použitý. Nové obnovenie hesla." #: templates/account/password_reset_from_key.html:17 msgid "change password" msgstr "zmeniť heslo" #: templates/account/password_reset_from_key.html:20 #: templates/account/password_reset_from_key_done.html:8 msgid "Your password is now changed." msgstr "Tvoje heslo bolo zmenené." #: templates/account/password_set.html:5 templates/account/password_set.html:8 #: templates/account/password_set.html:13 msgid "Set Password" msgstr "Nastaviť heslo" #: templates/account/signup.html:5 templates/socialaccount/signup.html:5 msgid "Signup" msgstr "Registrácia" #: templates/account/signup.html:8 templates/account/signup.html:18 #: templates/socialaccount/signup.html:8 templates/socialaccount/signup.html:19 msgid "Sign Up" msgstr "Zaregistrovať" #: templates/account/signup.html:10 #, python-format msgid "" "Already have an account? Then please sign in." msgstr "" "Už ste sa zaregistrovali? Tak sa prihláste." #: templates/account/signup_closed.html:5 #: templates/account/signup_closed.html:8 msgid "Sign Up Closed" msgstr "Registrácia uzavretá" #: templates/account/signup_closed.html:10 msgid "We are sorry, but the sign up is currently closed." msgstr "Ospravedlňujeme sa, ale registrácia je momentálne uzavretá." #: templates/account/snippets/already_logged_in.html:5 msgid "Note" msgstr "Poznámka" #: templates/account/snippets/already_logged_in.html:5 #, python-format msgid "you are already logged in as %(user_display)s." msgstr "už ste prihlásený ako %(user_display)s." #: templates/account/verification_sent.html:5 #: templates/account/verification_sent.html:8 #: templates/account/verified_email_required.html:5 #: templates/account/verified_email_required.html:8 msgid "Verify Your E-mail Address" msgstr "Potvrďte e-mailovú adresu" #: templates/account/verification_sent.html:10 msgid "" "We have sent an e-mail to you for verification. Follow the link provided to " "finalize the signup process. Please contact us if you do not receive it " "within a few minutes." msgstr "" "Bol vám zaslaný overovací e-mail. Pre dokončenie registrácie použite " "overovací odkaz. Ak ste v priebehu pár minút žiaden neobdržali, kontaktujte " "nás." #: templates/account/verified_email_required.html:12 msgid "" "This part of the site requires us to verify that\n" "you are who you claim to be. For this purpose, we require that you\n" "verify ownership of your e-mail address. " msgstr "" "Na prezeranie nasledujúceho obsahu je potrebné overenie vašej e-mailovej " "adresy. " #: templates/account/verified_email_required.html:16 msgid "" "We have sent an e-mail to you for\n" "verification. Please click on the link inside this e-mail. Please\n" "contact us if you do not receive it within a few minutes." msgstr "" "Bol vám zaslaný e-mail s overovacím odkazom. Ak ste v priebehu pár minút " "žiaden neobdržali, kontaktujte nás." #: templates/account/verified_email_required.html:20 #, python-format msgid "" "Note: you can still change your e-" "mail address." msgstr "" "Poznámka: stále môžete zmeniť " "svoju e-mailovú adresu." #: templates/openid/login.html:9 msgid "OpenID Sign In" msgstr "Prihlásiť pomocou OpenID" #: templates/socialaccount/authentication_error.html:5 #: templates/socialaccount/authentication_error.html:8 msgid "Social Network Login Failure" msgstr "Prihlasovanie pomocou sociálnej siete neúspešné" #: templates/socialaccount/authentication_error.html:10 msgid "" "An error occurred while attempting to login via your social network account." msgstr "Pri prihlasovaní pomocou sociálnej siete sa vyskytla chyba." #: templates/socialaccount/connections.html:5 #: templates/socialaccount/connections.html:8 msgid "Account Connections" msgstr "Pripojenia účtu" #: templates/socialaccount/connections.html:11 msgid "" "You can sign in to your account using any of the following third party " "accounts:" msgstr "Môžete sa prihlásiť pomocou niektorého z nasledujúcich účtov:" #: templates/socialaccount/connections.html:43 msgid "" "You currently have no social network accounts connected to this account." msgstr "Momentálne nemáte pripojený žiaden sociálny účet." #: templates/socialaccount/connections.html:46 msgid "Add a 3rd Party Account" msgstr "Pridaj účet" #: templates/socialaccount/login_cancelled.html:5 #: templates/socialaccount/login_cancelled.html:9 msgid "Login Cancelled" msgstr "Prihlásenie zrušené" #: templates/socialaccount/login_cancelled.html:13 #, python-format msgid "" "You decided to cancel logging in to our site using one of your existing " "accounts. If this was a mistake, please proceed to sign in." msgstr "" "Rozhodli ste sa zrušiť prihlasovanie sa na našu stránku použitím jedného z " "vašich existujúcich účtov. Ak se chceli vykonať inú operáciu, pokračujte na " "prihlásiť sa." #: templates/socialaccount/messages/account_connected.txt:2 msgid "The social account has been connected." msgstr "Sociálny účet bol pripojený." #: templates/socialaccount/messages/account_connected_other.txt:2 msgid "The social account is already connected to a different account." msgstr "Tento sociálny účet už bol pripojený k inému používateľovi." #: templates/socialaccount/messages/account_disconnected.txt:2 msgid "The social account has been disconnected." msgstr "Sociálny účet bol odpojený." #: templates/socialaccount/signup.html:10 #, python-format msgid "" "You are about to use your %(provider_name)s account to login to\n" "%(site_name)s. As a final step, please complete the following form:" msgstr "" "Chystáte sa použiť váš %(provider_name)s účet na prihlásenie do\n" "%(site_name)s. Ako posledný krok vyplňte nasledujúci formulár:" #~ msgid "The login and/or password you specified are not correct." #~ msgstr "Uvedený login alebo heslo nie je správne." django-allauth-0.35.0/allauth/locale/pl/0000755000076500000240000000000013235133532020754 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/pl/LC_MESSAGES/0000755000076500000240000000000013235133532022541 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/pl/LC_MESSAGES/django.mo0000644000076500000240000003603013235132042024335 0ustar pennersrstaff00000000000000| / 7 \1 6 -     )4GI_wL!n" & 9T[j|p_:289@D T an'  )-?m"lB7z"4<X my! #2A-tA6@\%&)B?l;# ?&<f$0 4<OXs2|M\TP:)dHF ' *A $l ,  -  ! !$! ,!8! G!U!e!x! ! !!! !!!!! !!!! ""7"Q"e" k"x"|""."E"0#80$`i$E$"%3%9%K%\% b%o%%J%r%OX&&+& & & ''<0' m'3{'''' ' ''(((Y(= )AH)5)))) ))-*(>* g******#*4*(+C+^+}~+L+I,!, ,--%-S-b-)h-- -- ----...!H.;j.).=.>/6M//-0-B0.p0D0:01>15X1311k]2C2 33A13s3 333;344f56_6;6%7N7!8 88/8.$9S90s9 969 9 : :: 2: ?: K:Y:s:::::::: :::; ;!;9;"U;$x;;; ;; ; ;-;:j5whIH BGuk.'/b[zO*eD}T&gNCFx>_L{J6P?W\icYS)Q3;Vo% `^Xn v(8A1Ms479|Zf,Rm<rpd~y-t !@Kq=2" #a $E+U]0l"oauth_token" (OAuth1) or access token (OAuth2)"oauth_token_secret" (OAuth1) or refresh token (OAuth2)Note: you can still change your e-mail address.A user is already registered with this e-mail address.API secret, client secret, or consumer secretAccountAccount ConnectionsAccount InactiveAccountsAdd E-mailAdd E-mail AddressAdd a 3rd Party AccountAlready have an account? Then please sign in.An account already exists with this e-mail address. Please sign in to that account first, then connect your %s account.An error occurred while attempting to login via your social network account.App ID, or consumer keyAre you sure you want to sign out?Bad TokenChange PasswordConfirmConfirm E-mail AddressConfirmation e-mail sent to %(email)s.Current PasswordDo you really want to remove the selected e-mail address?E-mailE-mail (again)E-mail (optional)E-mail AddressesE-mail addressE-mail address confirmationForgot Password?Forgotten your password? Enter your e-mail address below, and we'll send you an e-mail allowing you to reset it.If you have not created an account yet, then please sign up first.In case you forgot, your username is %(username)s.Invalid response while obtaining access token from "%s".Invalid response while obtaining request token from "%s".KeyLogin CancelledMake PrimaryNew PasswordNew Password (again)No access to private resources at "%s".No access token saved for "%s".No request token saved for "%s".NoteOpenID Sign InPasswordPassword (again)Password ResetPassword Reset E-mailPassword must be a minimum of {0} characters.Password successfully changed.Password successfully set.Please Confirm Your E-mail AddressPlease confirm that %(email)s is an e-mail address for user %(user_display)s.Please contact us if you have any trouble resetting your password.Please sign in with one of your existing third party accounts. Or, sign up for a %(site_name)s account and sign in below:Please type your current password.PrimaryPrimary e-mail address set.Re-send VerificationRemember MeRemoveRemoved e-mail address %(email)s.Reset My PasswordSet PasswordSign InSign OutSign UpSign Up ClosedSignupSocial AccountsSocial Network Login FailureSuccessfully signed in as %(name)s.Thank you for using %(site_name)s! %(site_domain)sThank you from %(site_name)s! %(site_domain)sThe e-mail address and/or password you specified are not correct.The e-mail address is not assigned to any user accountThe following e-mail addresses are associated with your account:The password reset link was invalid, possibly because it has already been used. Please request a new password reset.The password reset token was invalid.The social account has been connected.The social account has been disconnected.The social account is already connected to a different account.The username and/or password you specified are not correct.This account is currently inactive.This account is inactive.This e-mail address is already associated with another account.This e-mail address is already associated with this account.This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request.This part of the site requires us to verify that you are who you claim to be. For this purpose, we require that you verify ownership of your e-mail address. Too many failed login attempts. Try again later.UnverifiedUsernameUsername can not be used. Please use other username.Username or e-mailVerifiedVerify Your E-mail AddressWarning:We are sorry, but the sign up is currently closed.We have sent an e-mail to you for verification. Please click on the link inside this e-mail. Please contact us if you do not receive it within a few minutes.We have sent an e-mail to you for verification. Follow the link provided to finalize the signup process. Please contact us if you do not receive it within a few minutes.We have sent you an e-mail. Please contact us if you do not receive it within a few minutes.You are about to use your %(provider_name)s account to login to %(site_name)s. As a final step, please complete the following form:You can sign in to your account using any of the following third party accounts:You cannot remove your primary e-mail address (%(email)s).You currently do not have any e-mail address set up. You should really add an e-mail address so you can receive notifications, reset your password, etc.You currently have no social network accounts connected to this account.You decided to cancel logging in to our site using one of your existing accounts. If this was a mistake, please proceed to sign in.You have confirmed %(email)s.You have signed out.You must type the same email each time.You must type the same password each time.Your account has no password set up.Your account has no verified e-mail address.Your password is now changed.Your primary e-mail address must be verified.change passwordclient idcreateddate joinede-mail addressemail addressemail addressesemail confirmationemail confirmationsexpires atextra datafield labelLoginkeylast loginnameorprimaryprovidersecret keysentsocial accountsocial accountssocial applicationsocial application tokensocial application tokenssocial applicationstokentoken secretuiduserverifiedyou are already logged in as %(user_display)s.Project-Id-Version: Report-Msgid-Bugs-To: POT-Creation-Date: 2018-02-02 12:55-0600 PO-Revision-Date: 2016-12-05 10:43+0100 Last-Translator: Adam Dobrawy Language-Team: Language: pl MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Generator: Poedit 1.8.7.1 "oauth_token" (OAuth1) lub access token (OAuth2)"oauth_token_secret" (OAuth1) lub refresh token (OAuth2)Uwaga: możesz ciągle zmienić Twój adres e-mail.W systemie jest już zarejestrowany użytkownik o tym adresie e-mail.Klucz prywatny API/klienta/dbiorcyKontoPołączone kontaKonto nieaktywneKontaDodaj e-mailDodaj adres e-mailDodaj konto zewnętrzneMasz już konto? Jeżeli tak, to zaloguj się.Istnieje już konto dla tego adresu e-mail. Zaloguj się wpierw na to konto, a następnie połącz swoje konto %s.Wystąpił błąd podczas próby logowania za pomocą konta społecznościowegoID aplikacji lub klucz odbiorcyJesteś pewny, że chcesz się wylogować ?Zły kluczZmień hasłoPotwierdźPotwierdź adres e-mailE-mail z potwierdzeniem został wysłany na adres %(email)s.Obecne hasłoCzy naprawdę chcesz usunąć wybrany adres e-mail?E-mailE-mail (ponownie)E-mail (opcjonalnie)Adresy e-mailAdres e-mailPowierdzenie adresu emailZapomniałeś hasła?Zapomniałeś swojego hasła? Wpisz swój adres e-mail poniżej, a my wyślemy Tobie wiadomość, dzięki której dokonasz jego zmiany.Jeżeli nie masz jeszcze konta, to proszę zarejestruj się.Gdybyś zapomniał, Twoja nazwa użytkownika to %(username)s.Błędna odpowiedź podczas pobierania tokena autoryzacji z "%s".Błędna odpowiedź podczas pobierania tokena z "%s".KluczLogowanie anulowaneUczyń podstawowymNowe hasłoNowe hasło (ponownie)Brak dostępu do prywatnych zasobów na "%s".Brak zapisanego tokena autoryzacji "%s".Brak tokena zapisanego dla "%s".UwagaZaloguj przez OpenIDHasłoHasło (ponownie)Resetowanie hasłaE-mail z łączem do zmiany hasła.Hasło musi składać się minimalnie z {0} znaków.Hasło zostało zmienione.Hasło zostało ustawione.Proszę potwierdź adres e-mailProszę potwierdź, że adres %(email)s jest adresem e-mail dla użytkownika %(user_display)s.Skontaktuj się z nami, jeśli masz problem ze zresetowaniem swojego hasła.Proszę zaloguj się jednym z Twoich zewnętrznych kont. Lub zarejestruj się w %(site_name)s i zaloguj poniżej:Proszę wpisz swoje obecne hasłoPodstawowyUstaw podstawowy adres e-mail.Prześlij ponownie wiadomość weryfikacyjnąPamiętaj mnieUsuńAdres e-mail %(email)s został usunięty.Zresetuj moje hasłoUstaw hasłoZalogujWyloguj sięZarejestuj sięRejestracja zamkniętaZarejestruj sięKonta społecznościoweBłędne logowanie z konta społecznościowegoZalogowałeś się jako %(name)s.Dziękuje za wykorzystywanie %(site_name)s! %(site_domain)sDziekuje z %(site_name)s! %(site_domain)sAdres e-mail i/lub hasło, które podałeś, są niepoprawne.Adres e-mail nie jest powiązany z żadnym kontem użytkownikaPoniższe adresy e-mail są powiązane z Twoim kontem:Łącze resetujące hasło jest niepoprawne, prawdopodobnie już go użyłeś. Zresetuj hasło jeszcze raz.Token resetowania hasła był nieprawidłowy.Konto społecznościowe zostało połączone.Konto społecznościowe zostało rozłączone.To konto społecznościowe zostało już połączone z innym kontem.Użytkownik i/lub hasło które podałeś są niepoprawne.Konto jest obecnie nieaktywne.To konto jest nieaktywne.Ten adres e-mail jest już powiązany z innym kontem.Ten adres e-mail jest już powiązany z tym kontem.Łącze z adresem do zresetowania hasła wygasło lub jest niepoprawne. Musisz wygenerować nowe łącze dla Twojego adresu. .Ta część strony wymaga weryfikacji tego, kim jesteś. Dlatego wymagamy weryfikacji Twojego adresu e-mailZbyt wiele nieudanych prób logowania. Spróbuj ponownie później.Brak weryfikacjiNazwa użytkownikaNie możesz użyć tej nazwy użytkownika. Proszę wybierz inną.Nazwa użytkownika lub e-mailZweryfikowanyZweryfikuj swój adres e-mailUwaga:Przepraszamy, ale w tej chwili rejestracja jest zamknięta.Wysłaliśmy Tobie wiadomość e-mail. W celu weryfikacji musisz kliknąć w łącze zawarte w wiadomości. Proszę skontaktuj się z nami, jeśli jej nie otrzymałeś w ciągu paru minut. Przesłaliśmy weryfikacyjny e-mail na adres %(email)s. Kliknij w łącze w wiadomości, aby zakończyć proces rejestracji. Skontaktuj się z nami, jeśli nie otrzymasz jej w ciągu kilku minut.Wysłaliśmy Tobie email. Proszę skontaktuj się z nami, jeśli go nie otrzymasz w ciągu paru minut.Masz zamiar użyć konta %(provider_name)s do zalogowania się w %(site_name)s. Jako ostatni krok, proszę wypełnij formularz:Możesz zalogować się do swojego konta używając dowolnego z poniższych kont zewnętrznych:Nie możesz usunąć postawowego adresu e-mail (%(email)s).Aktualnie nie posiadasz przypisanych do twojego konta adresów e-mail. Powinieneś je dodać, aby otrzymywać informacje administracyjne, wiadomości o zmianie hasła, itd.Nie masz obecnie żadnych kont społecznościowych połączonych z tym kontem.Zdecydowałeś się anulować logowanie przez jedno z istniejących kont. Jeżeli to była pomyłka, proszę przejdź do zaloguj.Potwierdziłeś adres %(email)s.Wylogowałeś się.Musisz wpisać za każdym razem ten sam e-mail.Musisz wpisać za każdym razem to samo hasłoTwoje konto nie posiada hasła.Twoje konto nie ma zweryfikowanego adresu e-mailTwoje hasło zostało zmienione.Twój podstawowy adres e-mail musi być zweryfikowany.zmień hasłoklient IDutworzonoData przyłączeniaadres e-mailadres emailadresy e-mailpowierdzenie adresu emailpotwierdzenia adresów emailwygasaDodatkowe daneLoginkluczData ostatniego logowanianazwalubpodstawowydostawca usługKlucz prywatnywysłanoKonto społecznościoweKonta społecznościoweAplikacja społecznościowaToken aplikacji społecznościowejTokeny aplikacji społecznościowychAplikacje społecznościowetokentoken secretuidużytkownikzweryfikowanyjesteś już zalogowany jako %(user_display)sdjango-allauth-0.35.0/allauth/locale/pl/LC_MESSAGES/django.po0000644000076500000240000006400113235132037024343 0ustar pennersrstaff00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-02-02 12:55-0600\n" "PO-Revision-Date: 2016-12-05 10:43+0100\n" "Last-Translator: Adam Dobrawy \n" "Language-Team: \n" "Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 1.8.7.1\n" #: account/adapter.py:45 msgid "Username can not be used. Please use other username." msgstr "Nie możesz użyć tej nazwy użytkownika. Proszę wybierz inną." #: account/adapter.py:49 msgid "Too many failed login attempts. Try again later." msgstr "Zbyt wiele nieudanych prób logowania. Spróbuj ponownie później." #: account/adapter.py:51 msgid "A user is already registered with this e-mail address." msgstr "W systemie jest już zarejestrowany użytkownik o tym adresie e-mail." #: account/adapter.py:288 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "Hasło musi składać się minimalnie z {0} znaków." #: account/apps.py:7 msgid "Accounts" msgstr "Konta" #: account/forms.py:61 account/forms.py:398 msgid "You must type the same password each time." msgstr "Musisz wpisać za każdym razem to samo hasło" #: account/forms.py:91 account/forms.py:365 account/forms.py:476 msgid "Password" msgstr "Hasło" #: account/forms.py:92 msgid "Remember Me" msgstr "Pamiętaj mnie" #: account/forms.py:98 msgid "This account is currently inactive." msgstr "Konto jest obecnie nieaktywne." #: account/forms.py:101 msgid "The e-mail address and/or password you specified are not correct." msgstr "Adres e-mail i/lub hasło, które podałeś, są niepoprawne." #: account/forms.py:104 msgid "The username and/or password you specified are not correct." msgstr "Użytkownik i/lub hasło które podałeś są niepoprawne." #: account/forms.py:113 account/forms.py:268 account/forms.py:426 #: account/forms.py:495 msgid "E-mail address" msgstr "Adres e-mail" #: account/forms.py:115 account/forms.py:301 account/forms.py:421 #: account/forms.py:490 msgid "E-mail" msgstr "E-mail" #: account/forms.py:120 account/forms.py:123 account/forms.py:260 #: account/forms.py:264 msgid "Username" msgstr "Nazwa użytkownika" #: account/forms.py:130 msgid "Username or e-mail" msgstr "Nazwa użytkownika lub e-mail" #: account/forms.py:133 msgctxt "field label" msgid "Login" msgstr "Login" #: account/forms.py:292 msgid "E-mail (again)" msgstr "E-mail (ponownie)" #: account/forms.py:296 msgid "E-mail address confirmation" msgstr "Powierdzenie adresu email" #: account/forms.py:304 msgid "E-mail (optional)" msgstr "E-mail (opcjonalnie)" #: account/forms.py:345 msgid "You must type the same email each time." msgstr "Musisz wpisać za każdym razem ten sam e-mail." #: account/forms.py:368 account/forms.py:477 msgid "Password (again)" msgstr "Hasło (ponownie)" #: account/forms.py:432 msgid "This e-mail address is already associated with this account." msgstr "Ten adres e-mail jest już powiązany z tym kontem." #: account/forms.py:434 msgid "This e-mail address is already associated with another account." msgstr "Ten adres e-mail jest już powiązany z innym kontem." #: account/forms.py:456 msgid "Current Password" msgstr "Obecne hasło" #: account/forms.py:457 account/forms.py:546 msgid "New Password" msgstr "Nowe hasło" #: account/forms.py:458 account/forms.py:547 msgid "New Password (again)" msgstr "Nowe hasło (ponownie)" #: account/forms.py:466 msgid "Please type your current password." msgstr "Proszę wpisz swoje obecne hasło" #: account/forms.py:504 msgid "The e-mail address is not assigned to any user account" msgstr "Adres e-mail nie jest powiązany z żadnym kontem użytkownika" #: account/forms.py:568 msgid "The password reset token was invalid." msgstr "Token resetowania hasła był nieprawidłowy." #: account/models.py:23 msgid "user" msgstr "użytkownik" #: account/models.py:27 account/models.py:81 msgid "e-mail address" msgstr "adres e-mail" #: account/models.py:28 msgid "verified" msgstr "zweryfikowany" #: account/models.py:29 msgid "primary" msgstr "podstawowy" #: account/models.py:34 msgid "email address" msgstr "adres email" #: account/models.py:35 msgid "email addresses" msgstr "adresy e-mail" #: account/models.py:83 msgid "created" msgstr "utworzono" #: account/models.py:85 msgid "sent" msgstr "wysłano" #: account/models.py:86 socialaccount/models.py:55 msgid "key" msgstr "klucz" #: account/models.py:91 msgid "email confirmation" msgstr "powierdzenie adresu email" #: account/models.py:92 msgid "email confirmations" msgstr "potwierdzenia adresów email" #: socialaccount/adapter.py:26 #, python-format msgid "" "An account already exists with this e-mail address. Please sign in to that " "account first, then connect your %s account." msgstr "" "Istnieje już konto dla tego adresu e-mail. Zaloguj się wpierw na to konto, a " "następnie połącz swoje konto %s." #: socialaccount/adapter.py:131 msgid "Your account has no password set up." msgstr "Twoje konto nie posiada hasła." #: socialaccount/adapter.py:138 msgid "Your account has no verified e-mail address." msgstr "Twoje konto nie ma zweryfikowanego adresu e-mail" #: socialaccount/apps.py:7 msgid "Social Accounts" msgstr "Konta społecznościowe" #: socialaccount/models.py:43 socialaccount/models.py:77 msgid "provider" msgstr "dostawca usług" #: socialaccount/models.py:46 msgid "name" msgstr "nazwa" #: socialaccount/models.py:48 msgid "client id" msgstr "klient ID" #: socialaccount/models.py:50 msgid "App ID, or consumer key" msgstr "ID aplikacji lub klucz odbiorcy" #: socialaccount/models.py:51 msgid "secret key" msgstr "Klucz prywatny" #: socialaccount/models.py:53 msgid "API secret, client secret, or consumer secret" msgstr "Klucz prywatny API/klienta/dbiorcy" #: socialaccount/models.py:58 msgid "Key" msgstr "Klucz" #: socialaccount/models.py:66 msgid "social application" msgstr "Aplikacja społecznościowa" #: socialaccount/models.py:67 msgid "social applications" msgstr "Aplikacje społecznościowe" #: socialaccount/models.py:96 msgid "uid" msgstr "uid" #: socialaccount/models.py:98 msgid "last login" msgstr "Data ostatniego logowania" #: socialaccount/models.py:100 msgid "date joined" msgstr "Data przyłączenia" #: socialaccount/models.py:102 msgid "extra data" msgstr "Dodatkowe dane" #: socialaccount/models.py:106 msgid "social account" msgstr "Konto społecznościowe" #: socialaccount/models.py:107 msgid "social accounts" msgstr "Konta społecznościowe" #: socialaccount/models.py:133 msgid "token" msgstr "token" #: socialaccount/models.py:135 msgid "\"oauth_token\" (OAuth1) or access token (OAuth2)" msgstr "\"oauth_token\" (OAuth1) lub access token (OAuth2)" #: socialaccount/models.py:138 msgid "token secret" msgstr "token secret" #: socialaccount/models.py:140 msgid "\"oauth_token_secret\" (OAuth1) or refresh token (OAuth2)" msgstr "\"oauth_token_secret\" (OAuth1) lub refresh token (OAuth2)" #: socialaccount/models.py:142 msgid "expires at" msgstr "wygasa" #: socialaccount/models.py:146 msgid "social application token" msgstr "Token aplikacji społecznościowej" #: socialaccount/models.py:147 msgid "social application tokens" msgstr "Tokeny aplikacji społecznościowych" #: socialaccount/providers/douban/views.py:36 msgid "Invalid profile data" msgstr "" #: socialaccount/providers/oauth/client.py:78 #, python-format msgid "Invalid response while obtaining request token from \"%s\"." msgstr "Błędna odpowiedź podczas pobierania tokena z \"%s\"." #: socialaccount/providers/oauth/client.py:109 #, python-format msgid "Invalid response while obtaining access token from \"%s\"." msgstr "Błędna odpowiedź podczas pobierania tokena autoryzacji z \"%s\"." #: socialaccount/providers/oauth/client.py:128 #, python-format msgid "No request token saved for \"%s\"." msgstr "Brak tokena zapisanego dla \"%s\"." #: socialaccount/providers/oauth/client.py:177 #, python-format msgid "No access token saved for \"%s\"." msgstr "Brak zapisanego tokena autoryzacji \"%s\"." #: socialaccount/providers/oauth/client.py:197 #, python-format msgid "No access to private resources at \"%s\"." msgstr "Brak dostępu do prywatnych zasobów na \"%s\"." #: templates/account/account_inactive.html:5 #: templates/account/account_inactive.html:8 msgid "Account Inactive" msgstr "Konto nieaktywne" #: templates/account/account_inactive.html:10 msgid "This account is inactive." msgstr "To konto jest nieaktywne." #: templates/account/email.html:5 msgid "Account" msgstr "Konto" #: templates/account/email.html:8 msgid "E-mail Addresses" msgstr "Adresy e-mail" #: templates/account/email.html:10 msgid "The following e-mail addresses are associated with your account:" msgstr "Poniższe adresy e-mail są powiązane z Twoim kontem:" #: templates/account/email.html:24 msgid "Verified" msgstr "Zweryfikowany" #: templates/account/email.html:26 msgid "Unverified" msgstr "Brak weryfikacji" #: templates/account/email.html:28 msgid "Primary" msgstr "Podstawowy" #: templates/account/email.html:34 msgid "Make Primary" msgstr "Uczyń podstawowym" #: templates/account/email.html:35 msgid "Re-send Verification" msgstr "Prześlij ponownie wiadomość weryfikacyjną" #: templates/account/email.html:36 templates/socialaccount/connections.html:35 msgid "Remove" msgstr "Usuń" #: templates/account/email.html:43 msgid "Warning:" msgstr "Uwaga:" #: templates/account/email.html:43 msgid "" "You currently do not have any e-mail address set up. You should really add " "an e-mail address so you can receive notifications, reset your password, etc." msgstr "" "Aktualnie nie posiadasz przypisanych do twojego konta adresów e-mail. " "Powinieneś je dodać, aby otrzymywać informacje administracyjne, wiadomości o " "zmianie hasła, itd." #: templates/account/email.html:48 msgid "Add E-mail Address" msgstr "Dodaj adres e-mail" #: templates/account/email.html:53 msgid "Add E-mail" msgstr "Dodaj e-mail" #: templates/account/email.html:62 msgid "Do you really want to remove the selected e-mail address?" msgstr "Czy naprawdę chcesz usunąć wybrany adres e-mail?" #: templates/account/email/email_confirmation_message.txt:1 #, fuzzy, python-format #| msgid "" #| "Hello from %(site_name)s!\n" #| "\n" #| "You're receiving this e-mail because user %(user_display)s at " #| "%(site_domain)s has given yours as an e-mail address to connect their " #| "account.\n" #| "\n" #| "To confirm this is correct, go to %(activate_url)s\n" msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because user %(user_display)s has given yours " "as an e-mail address to connect their account.\n" "\n" "To confirm this is correct, go to %(activate_url)s\n" msgstr "" "Witam w imieniu%(site_name)s!\n" "\n" "Otrzymujesz ten e-mail ,ponieważ użytkownik %(user_display)s na " "%(site_domain)s podał niniejszy adres e-mail, aby powiązać z swoim kontem.\n" "\n" "Jeżeli to prawda. Kliknij, aby go aktywować %(activate_url)s \n" #: templates/account/email/email_confirmation_message.txt:7 #, python-format msgid "" "Thank you from %(site_name)s!\n" "%(site_domain)s" msgstr "" "Dziekuje z %(site_name)s!\n" "%(site_domain)s" #: templates/account/email/email_confirmation_subject.txt:3 msgid "Please Confirm Your E-mail Address" msgstr "Proszę potwierdź adres e-mail" #: templates/account/email/password_reset_key_message.txt:1 #, fuzzy, python-format #| msgid "" #| "Hello from %(site_name)s!\n" #| "\n" #| "You're receiving this e-mail because you or someone else has requested a " #| "password for your user account at %(site_domain)s.\n" #| "It can be safely ignored if you did not request a password reset. Click " #| "the link below to reset your password." msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because you or someone else has requested a " "password for your user account.\n" "It can be safely ignored if you did not request a password reset. Click the " "link below to reset your password." msgstr "" "Witam z %(site_name)s!\n" "\n" "Otrzymujesz tą wiadomość, ponieważ Ty lub ktoś inny zażądał zresetowania " "hasła do Twojego konta na stronie %(site_domain)s.\n" "Niniejszą wiadomość możesz spokojnie zignorować, jeżeli nie żądałeś " "zresetowania hasła. Kliknij w link poniżej, aby zresetować hasło." #: templates/account/email/password_reset_key_message.txt:8 #, python-format msgid "In case you forgot, your username is %(username)s." msgstr "Gdybyś zapomniał, Twoja nazwa użytkownika to %(username)s." #: templates/account/email/password_reset_key_message.txt:10 #, python-format msgid "" "Thank you for using %(site_name)s!\n" "%(site_domain)s" msgstr "" "Dziękuje za wykorzystywanie %(site_name)s!\n" "%(site_domain)s" #: templates/account/email/password_reset_key_subject.txt:3 msgid "Password Reset E-mail" msgstr "E-mail z łączem do zmiany hasła." #: templates/account/email_confirm.html:6 #: templates/account/email_confirm.html:10 msgid "Confirm E-mail Address" msgstr "Potwierdź adres e-mail" #: templates/account/email_confirm.html:16 #, python-format msgid "" "Please confirm that %(email)s is an e-mail " "address for user %(user_display)s." msgstr "" "Proszę potwierdź, że adres %(email)s jest " "adresem e-mail dla użytkownika %(user_display)s." #: templates/account/email_confirm.html:20 msgid "Confirm" msgstr "Potwierdź" #: templates/account/email_confirm.html:27 #, python-format msgid "" "This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request." msgstr "" "Łącze z adresem do zresetowania hasła wygasło lub jest niepoprawne. Musisz " "wygenerować nowe łącze dla Twojego adresu. ." #: templates/account/login.html:6 templates/account/login.html:10 #: templates/account/login.html:43 msgid "Sign In" msgstr "Zaloguj" #: templates/account/login.html:15 #, python-format msgid "" "Please sign in with one\n" "of your existing third party accounts. Or, sign " "up\n" "for a %(site_name)s account and sign in below:" msgstr "" "Proszę zaloguj się jednym\n" "z Twoich zewnętrznych kont. Lub zarejestruj się \n" "w %(site_name)s i zaloguj poniżej:" #: templates/account/login.html:25 msgid "or" msgstr "lub" #: templates/account/login.html:32 #, python-format msgid "" "If you have not created an account yet, then please\n" "sign up first." msgstr "" "Jeżeli nie masz jeszcze konta, to proszę zarejestruj się." #: templates/account/login.html:42 msgid "Forgot Password?" msgstr "Zapomniałeś hasła?" #: templates/account/logout.html:5 templates/account/logout.html:8 #: templates/account/logout.html:17 msgid "Sign Out" msgstr "Wyloguj się" #: templates/account/logout.html:10 msgid "Are you sure you want to sign out?" msgstr "Jesteś pewny, że chcesz się wylogować ?" #: templates/account/messages/cannot_delete_primary_email.txt:2 #, python-format msgid "You cannot remove your primary e-mail address (%(email)s)." msgstr "Nie możesz usunąć postawowego adresu e-mail (%(email)s)." #: templates/account/messages/email_confirmation_sent.txt:2 #, python-format msgid "Confirmation e-mail sent to %(email)s." msgstr "E-mail z potwierdzeniem został wysłany na adres %(email)s." #: templates/account/messages/email_confirmed.txt:2 #, python-format msgid "You have confirmed %(email)s." msgstr "Potwierdziłeś adres %(email)s." #: templates/account/messages/email_deleted.txt:2 #, python-format msgid "Removed e-mail address %(email)s." msgstr "Adres e-mail %(email)s został usunięty." #: templates/account/messages/logged_in.txt:4 #, python-format msgid "Successfully signed in as %(name)s." msgstr "Zalogowałeś się jako %(name)s." #: templates/account/messages/logged_out.txt:2 msgid "You have signed out." msgstr "Wylogowałeś się." #: templates/account/messages/password_changed.txt:2 msgid "Password successfully changed." msgstr "Hasło zostało zmienione." #: templates/account/messages/password_set.txt:2 msgid "Password successfully set." msgstr "Hasło zostało ustawione." #: templates/account/messages/primary_email_set.txt:2 msgid "Primary e-mail address set." msgstr "Ustaw podstawowy adres e-mail." #: templates/account/messages/unverified_primary_email.txt:2 msgid "Your primary e-mail address must be verified." msgstr "Twój podstawowy adres e-mail musi być zweryfikowany." #: templates/account/password_change.html:5 #: templates/account/password_change.html:8 #: templates/account/password_change.html:13 #: templates/account/password_reset_from_key.html:4 #: templates/account/password_reset_from_key.html:7 #: templates/account/password_reset_from_key_done.html:4 #: templates/account/password_reset_from_key_done.html:7 msgid "Change Password" msgstr "Zmień hasło" #: templates/account/password_reset.html:6 #: templates/account/password_reset.html:10 #: templates/account/password_reset_done.html:6 #: templates/account/password_reset_done.html:9 msgid "Password Reset" msgstr "Resetowanie hasła" #: templates/account/password_reset.html:15 msgid "" "Forgotten your password? Enter your e-mail address below, and we'll send you " "an e-mail allowing you to reset it." msgstr "" "Zapomniałeś swojego hasła? Wpisz swój adres e-mail poniżej, a my wyślemy " "Tobie wiadomość, dzięki której dokonasz jego zmiany." #: templates/account/password_reset.html:20 msgid "Reset My Password" msgstr "Zresetuj moje hasło" #: templates/account/password_reset.html:23 msgid "Please contact us if you have any trouble resetting your password." msgstr "" "Skontaktuj się z nami, jeśli masz problem ze zresetowaniem swojego hasła." #: templates/account/password_reset_done.html:15 msgid "" "We have sent you an e-mail. Please contact us if you do not receive it " "within a few minutes." msgstr "" "Wysłaliśmy Tobie email. Proszę skontaktuj się z nami, jeśli go nie otrzymasz " "w ciągu paru minut." #: templates/account/password_reset_from_key.html:7 msgid "Bad Token" msgstr "Zły klucz" #: templates/account/password_reset_from_key.html:11 #, python-format msgid "" "The password reset link was invalid, possibly because it has already been " "used. Please request a new password reset." msgstr "" "Łącze resetujące hasło jest niepoprawne, prawdopodobnie już go użyłeś. Zresetuj hasło jeszcze raz." #: templates/account/password_reset_from_key.html:17 msgid "change password" msgstr "zmień hasło" #: templates/account/password_reset_from_key.html:20 #: templates/account/password_reset_from_key_done.html:8 msgid "Your password is now changed." msgstr "Twoje hasło zostało zmienione." #: templates/account/password_set.html:5 templates/account/password_set.html:8 #: templates/account/password_set.html:13 msgid "Set Password" msgstr "Ustaw hasło" #: templates/account/signup.html:5 templates/socialaccount/signup.html:5 msgid "Signup" msgstr "Zarejestruj się" #: templates/account/signup.html:8 templates/account/signup.html:18 #: templates/socialaccount/signup.html:8 templates/socialaccount/signup.html:19 msgid "Sign Up" msgstr "Zarejestuj się" #: templates/account/signup.html:10 #, python-format msgid "" "Already have an account? Then please sign in." msgstr "" "Masz już konto? Jeżeli tak, to zaloguj się." #: templates/account/signup_closed.html:5 #: templates/account/signup_closed.html:8 msgid "Sign Up Closed" msgstr "Rejestracja zamknięta" #: templates/account/signup_closed.html:10 msgid "We are sorry, but the sign up is currently closed." msgstr "Przepraszamy, ale w tej chwili rejestracja jest zamknięta." #: templates/account/snippets/already_logged_in.html:5 msgid "Note" msgstr "Uwaga" #: templates/account/snippets/already_logged_in.html:5 #, python-format msgid "you are already logged in as %(user_display)s." msgstr "jesteś już zalogowany jako %(user_display)s" #: templates/account/verification_sent.html:5 #: templates/account/verification_sent.html:8 #: templates/account/verified_email_required.html:5 #: templates/account/verified_email_required.html:8 msgid "Verify Your E-mail Address" msgstr "Zweryfikuj swój adres e-mail" #: templates/account/verification_sent.html:10 msgid "" "We have sent an e-mail to you for verification. Follow the link provided to " "finalize the signup process. Please contact us if you do not receive it " "within a few minutes." msgstr "" "Przesłaliśmy weryfikacyjny e-mail na adres " "%(email)s. Kliknij w łącze w wiadomości, aby zakończyć proces " "rejestracji. Skontaktuj się z nami, jeśli nie otrzymasz jej w ciągu kilku " "minut." #: templates/account/verified_email_required.html:12 msgid "" "This part of the site requires us to verify that\n" "you are who you claim to be. For this purpose, we require that you\n" "verify ownership of your e-mail address. " msgstr "" "Ta część strony wymaga weryfikacji tego, kim jesteś. Dlatego wymagamy " "weryfikacji Twojego adresu e-mail" #: templates/account/verified_email_required.html:16 msgid "" "We have sent an e-mail to you for\n" "verification. Please click on the link inside this e-mail. Please\n" "contact us if you do not receive it within a few minutes." msgstr "" "Wysłaliśmy Tobie wiadomość e-mail.\n" "W celu weryfikacji musisz kliknąć w łącze zawarte w wiadomości. Proszę " "skontaktuj się z nami, jeśli jej nie otrzymałeś w ciągu paru minut. " #: templates/account/verified_email_required.html:20 #, python-format msgid "" "Note: you can still change your e-" "mail address." msgstr "" "Uwaga: możesz ciągle zmienić Twój " "adres e-mail." #: templates/openid/login.html:9 msgid "OpenID Sign In" msgstr "Zaloguj przez OpenID" #: templates/socialaccount/authentication_error.html:5 #: templates/socialaccount/authentication_error.html:8 msgid "Social Network Login Failure" msgstr "Błędne logowanie z konta społecznościowego" #: templates/socialaccount/authentication_error.html:10 msgid "" "An error occurred while attempting to login via your social network account." msgstr "" "Wystąpił błąd podczas próby logowania za pomocą konta społecznościowego" #: templates/socialaccount/connections.html:5 #: templates/socialaccount/connections.html:8 msgid "Account Connections" msgstr "Połączone konta" #: templates/socialaccount/connections.html:11 msgid "" "You can sign in to your account using any of the following third party " "accounts:" msgstr "" "Możesz zalogować się do swojego konta używając dowolnego z poniższych kont " "zewnętrznych:" #: templates/socialaccount/connections.html:43 msgid "" "You currently have no social network accounts connected to this account." msgstr "" "Nie masz obecnie żadnych kont społecznościowych połączonych z tym kontem." #: templates/socialaccount/connections.html:46 msgid "Add a 3rd Party Account" msgstr "Dodaj konto zewnętrzne" #: templates/socialaccount/login_cancelled.html:5 #: templates/socialaccount/login_cancelled.html:9 msgid "Login Cancelled" msgstr "Logowanie anulowane" #: templates/socialaccount/login_cancelled.html:13 #, python-format msgid "" "You decided to cancel logging in to our site using one of your existing " "accounts. If this was a mistake, please proceed to sign in." msgstr "" "Zdecydowałeś się anulować logowanie przez jedno z istniejących kont. Jeżeli " "to była pomyłka, proszę przejdź do zaloguj." #: templates/socialaccount/messages/account_connected.txt:2 msgid "The social account has been connected." msgstr "Konto społecznościowe zostało połączone." #: templates/socialaccount/messages/account_connected_other.txt:2 msgid "The social account is already connected to a different account." msgstr "To konto społecznościowe zostało już połączone z innym kontem." #: templates/socialaccount/messages/account_disconnected.txt:2 msgid "The social account has been disconnected." msgstr "Konto społecznościowe zostało rozłączone." #: templates/socialaccount/signup.html:10 #, python-format msgid "" "You are about to use your %(provider_name)s account to login to\n" "%(site_name)s. As a final step, please complete the following form:" msgstr "" "Masz zamiar użyć konta %(provider_name)s do zalogowania się w \n" "%(site_name)s. Jako ostatni krok, proszę wypełnij formularz:" #~ msgid "The login and/or password you specified are not correct." #~ msgstr "Login i/lub hasło, które podałeś, są niepoprawne." #~ msgid "Usernames can only contain letters, digits and @/./+/-/_." #~ msgstr "" #~ "Nazwa użytkownika może zawierać tylko litery, cyfry oraz znaki @/./+/-/_." #~ msgid "This username is already taken. Please choose another." #~ msgstr "Nazwa użytkownika jest już w użyciu. Proszę wybierz inną." #, fuzzy #~| msgid "Sign In" #~ msgid "Shopify Sign In" #~ msgstr "Zaloguj" #~ msgid "" #~ "You have confirmed that %(email)s is an " #~ "e-mail address for user %(user_display)s." #~ msgstr "" #~ "Potwierdziłeś, że adres %(email)s jest " #~ "adresem e-mail użytkownika %(user_display)s." #~ msgid "Thanks for using our site!" #~ msgstr "Dziękujemy za używanie naszej strony!" #~ msgid "Socialaccount" #~ msgstr "Konta społecznościowe" #~ msgid "Key (Stack Exchange only)" #~ msgstr "Klucz (tylko dla Stack Exchange)" #~ msgid "Confirmation e-mail sent to %(email)s" #~ msgstr "Wiadomość z potwierdzeniem została wysłana na adres %(email)s" #~ msgid "Delete Password" #~ msgstr "Skasuj hasło" #~ msgid "" #~ "You may delete your password since you are currently logged in using " #~ "OpenID." #~ msgstr "Możesz skasować swoje hasło jeśli używasz OpenID." #~ msgid "delete my password" #~ msgstr "skasuj moje hasło" #~ msgid "Password Deleted" #~ msgstr "Hasło Skasowane" #~ msgid "Your password has been deleted." #~ msgstr "Twoje hasło zostało skasowane." django-allauth-0.35.0/allauth/locale/sv/0000755000076500000240000000000013235133532020771 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/sv/LC_MESSAGES/0000755000076500000240000000000013235133532022556 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/sv/LC_MESSAGES/django.mo0000644000076500000240000002545213235132043024361 0ustar pennersrstaff00000000000000jl \ 6n      I LR "    & " 93 m t    p 2( 8[ 9   ' 5 U v {     -  l1B" ( =I!Pr #A6C@z&T){?;#!E?_<] 4DW`{2\UP:>H *$,Cp- #.&Ue?MH9N# )3,`fw w$9D9~ ,%+%Q w / 3 aE M " ! !;! R!`!h!!!!! !! !! "3,"0`"4""0v###9#4$:$T$8n$4$$d% & &@"& c& &&&.&&Rt'J':(M(G(())))*-'*U*,t** ******%+d* C$ `i HDP;^,Ie/NU&[GEM'VO]+8)F.5>B:f<9j!Z6 #3aS1A\gKhT"0W2R J7@X( Q4Lb=?c%-_YNote: you can still change your e-mail address.A user is already registered with this e-mail address.AccountAccount ConnectionsAccount InactiveAdd E-mailAdd E-mail AddressAdd a 3rd Party AccountAlready have an account? Then please sign in.An error occurred while attempting to login via your social network account.Are you sure you want to sign out?Bad TokenChange PasswordConfirmConfirm E-mail AddressConfirmation e-mail sent to %(email)s.Current PasswordDo you really want to remove the selected e-mail address?E-mailE-mail (optional)E-mail AddressesE-mail addressForgot Password?Forgotten your password? Enter your e-mail address below, and we'll send you an e-mail allowing you to reset it.In case you forgot, your username is %(username)s.Invalid response while obtaining access token from "%s".Invalid response while obtaining request token from "%s".Login CancelledMake PrimaryNew PasswordNew Password (again)No access to private resources at "%s".No access token saved for "%s".No request token saved for "%s".NoteOpenID Sign InPasswordPassword (again)Password ResetPassword Reset E-mailPassword must be a minimum of {0} characters.Password successfully changed.Password successfully set.Please confirm that %(email)s is an e-mail address for user %(user_display)s.Please contact us if you have any trouble resetting your password.Please type your current password.PrimaryPrimary e-mail address set.Re-send VerificationRemember MeRemoveRemoved e-mail address %(email)s.Reset My PasswordSet PasswordSign InSign OutSign UpSign Up ClosedSignupSocial Network Login FailureSuccessfully signed in as %(name)s.The e-mail address and/or password you specified are not correct.The e-mail address is not assigned to any user accountThe following e-mail addresses are associated with your account:The password reset link was invalid, possibly because it has already been used. Please request a new password reset.The social account has been connected.The social account has been disconnected.The social account is already connected to a different account.The username and/or password you specified are not correct.This account is currently inactive.This account is inactive.This e-mail address is already associated with another account.This e-mail address is already associated with this account.This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request.This part of the site requires us to verify that you are who you claim to be. For this purpose, we require that you verify ownership of your e-mail address. UnverifiedUsernameUsername can not be used. Please use other username.Username or e-mailVerifiedVerify Your E-mail AddressWarning:We are sorry, but the sign up is currently closed.We have sent an e-mail to you for verification. Please click on the link inside this e-mail. Please contact us if you do not receive it within a few minutes.We have sent you an e-mail. Please contact us if you do not receive it within a few minutes.You can sign in to your account using any of the following third party accounts:You cannot remove your primary e-mail address (%(email)s).You currently do not have any e-mail address set up. You should really add an e-mail address so you can receive notifications, reset your password, etc.You currently have no social network accounts connected to this account.You decided to cancel logging in to our site using one of your existing accounts. If this was a mistake, please proceed to sign in.You have confirmed %(email)s.You have signed out.You must type the same password each time.Your account has no password set up.Your account has no verified e-mail address.Your password is now changed.Your primary e-mail address must be verified.change passwordemail addressemail addressesemail confirmationemail confirmationsfield labelLoginoryou are already logged in as %(user_display)s.Project-Id-Version: django-allauth Report-Msgid-Bugs-To: POT-Creation-Date: 2018-02-02 12:55-0600 PO-Revision-Date: 2014-08-12 00:35+0200 Last-Translator: Jannis Š Language-Team: Swedish (http://www.transifex.com/projects/p/django-allauth/language/sv/) Language: sv MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); Information: du kan fortfarande ändra din epost-adress.En användare är redan registrerad med den här epost-adressenKontoAnslutna tredjeparts-kontonKontot inaktivtLägg till epostLägg till epost-adressLägg till tredjeparts-kontoHar du redan ett konto? Då kan du logga in.Ett fel inträffade vid inloggning via tredjeparts-konto.Är du säker att du vill logga ut?Felaktig nyckelÄndra lösenordVerifieraVerifiera epost-adressVerifierings-mail skickat till %(email)s.Nuvarande lösenordVill du verkligen ta bort den valda epost-adressen?EpostEpost (valfritt)Epost-adresserEpost-adressGlömt lösenordet?Glömt ditt lösenord? Ange din epost-adress nedan så skickar vi ett mail med instruktioner för att återställa det.Ditt användarnamn är %(username)s.Felaktigt svar vid hämtning av access-nyckel från "%s".Felaktigt svar vid hämtning av fråge-nyckel från "%s".Inloggning avbrutenGör primärNytt lösenordNytt lösenord (igen)Ingen access till privata resurser hos "%s".Ingen access-nyckel sparad för "%s".Ingen fråge-nyckel sparad för "%s".InformationInloggning via OpenIDLösenordLösenord (igen)Återställning av lösenordÅterställning av lösenordLösenordet måste vara minst {0} tecken långtLösenordet ändrat.Lösenord skapat.Verifiera att %(email)s är en epost-adress för %(user_display)s.Vänligen kontakta oss om du har problem med att återställa ditt lösenord.Skriv in ditt nuvarande lösenord.PrimärPrimär epost-adress satt.Sänd verifiering igenKom ihåg migTa bortTa bort epost-adress %(email)s.Återställ mitt lösenordSkapa lösenordLogga inLogga utSkapa kontoAnmälan stängdSkapa kontoFel vid tredjeparts-inloggningDu har loggat in som %(name)s.Epost-adressen och/eller lösenordet är felaktigt.Epost-adressen är inte knuten till något kontoFöljande epost-adresser är knutna till ditt konto:Länken för att återställa lösenordet var ogiltig, möjligtvis för att den redan har använts. Begär en ny lösenords-återställning.Tredjeparts-kontot har knutits till ditt kontot.Tredjeparts-kontot har tagits bort.Tredjeparts-kontot är redan knutet till ett annat konto.Användarnamnet och/eller lösenordet är felaktigt.Detta konto är inaktivt.Detta konto är inaktivt.Denna epost-adress är redan knuten till ett annat kontoDenna epost-adress är redan knuten till detta kontoLänken för att verifiera epost-adressen har förfallit eller är ogiltig. Skapa en ny epost-verification.För att få tillgång till denna avdelning måste du verifiera att du är den du säger att du är. Du måste därför bevisa att du angett rätt epost-adress. Ej verifieradAnvändarnamnAnvändarnamnet kan ej användas. Välj ett annat användarnamn.Användarnamn eller epost-adressVerifieradVerifiera din epost-adressVarning:Tyvärr är anmälan stängd för närvarande.Vi har skickat ett mail till dig för verifiering. Klicka på länken inne i detta mail. Kontakta oss om det inte dyker upp inom ett par minuter.Ett mail har nu skickats. Kontakta oss om det inte dyker upp inom ett par minuter.Du kan logga in på ditt konto via något av följande tredjeparts-konton:Du kan inte ta bort din primära epost-adress (%(email)s).Du har inte angett någon epost-adress. Du borde lägga till en epost-adress så du kan få meddelanden, återställa ditt lösenord och liknande.Du har för närvarande inga tredjeparts-konton knutna till ditt konto.Du valde att avbryta inloggningen via ett av dina tredjeparts-konton. Om detta var ett misstag kan du logga in igen.Du har verifierat %(email)s.Du har loggat ut.Du måste ange samma lösenordDitt konto har inget lösenord.Ditt konto har ingen verifierad epost-adress.Ditt lösenord är nu ändrat.Din primära epost-adress måste verifieras.ändra lösenordepost-adressepost-adresserepost-bekräftelseepost-bekräftelserLogga inellerdu är inloggad som %(user_display)s.django-allauth-0.35.0/allauth/locale/sv/LC_MESSAGES/django.po0000644000076500000240000006126013235132037024364 0ustar pennersrstaff00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: msgid "" msgstr "" "Project-Id-Version: django-allauth\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-02-02 12:55-0600\n" "PO-Revision-Date: 2014-08-12 00:35+0200\n" "Last-Translator: Jannis Š\n" "Language-Team: Swedish (http://www.transifex.com/projects/p/django-allauth/" "language/sv/)\n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: account/adapter.py:45 msgid "Username can not be used. Please use other username." msgstr "Användarnamnet kan ej användas. Välj ett annat användarnamn." #: account/adapter.py:49 msgid "Too many failed login attempts. Try again later." msgstr "" #: account/adapter.py:51 msgid "A user is already registered with this e-mail address." msgstr "En användare är redan registrerad med den här epost-adressen" #: account/adapter.py:288 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "Lösenordet måste vara minst {0} tecken långt" #: account/apps.py:7 #, fuzzy msgid "Accounts" msgstr "Konto" #: account/forms.py:61 account/forms.py:398 msgid "You must type the same password each time." msgstr "Du måste ange samma lösenord" #: account/forms.py:91 account/forms.py:365 account/forms.py:476 msgid "Password" msgstr "Lösenord" #: account/forms.py:92 msgid "Remember Me" msgstr "Kom ihåg mig" #: account/forms.py:98 msgid "This account is currently inactive." msgstr "Detta konto är inaktivt." #: account/forms.py:101 msgid "The e-mail address and/or password you specified are not correct." msgstr "Epost-adressen och/eller lösenordet är felaktigt." #: account/forms.py:104 msgid "The username and/or password you specified are not correct." msgstr "Användarnamnet och/eller lösenordet är felaktigt." #: account/forms.py:113 account/forms.py:268 account/forms.py:426 #: account/forms.py:495 msgid "E-mail address" msgstr "Epost-adress" #: account/forms.py:115 account/forms.py:301 account/forms.py:421 #: account/forms.py:490 msgid "E-mail" msgstr "Epost" #: account/forms.py:120 account/forms.py:123 account/forms.py:260 #: account/forms.py:264 msgid "Username" msgstr "Användarnamn" #: account/forms.py:130 msgid "Username or e-mail" msgstr "Användarnamn eller epost-adress" #: account/forms.py:133 msgctxt "field label" msgid "Login" msgstr "Logga in" #: account/forms.py:292 #, fuzzy #| msgid "E-mail (optional)" msgid "E-mail (again)" msgstr "Epost (valfritt)" #: account/forms.py:296 #, fuzzy #| msgid "email confirmation" msgid "E-mail address confirmation" msgstr "epost-bekräftelse" #: account/forms.py:304 msgid "E-mail (optional)" msgstr "Epost (valfritt)" #: account/forms.py:345 #, fuzzy #| msgid "You must type the same password each time." msgid "You must type the same email each time." msgstr "Du måste ange samma lösenord" #: account/forms.py:368 account/forms.py:477 msgid "Password (again)" msgstr "Lösenord (igen)" #: account/forms.py:432 msgid "This e-mail address is already associated with this account." msgstr "Denna epost-adress är redan knuten till detta konto" #: account/forms.py:434 msgid "This e-mail address is already associated with another account." msgstr "Denna epost-adress är redan knuten till ett annat konto" #: account/forms.py:456 msgid "Current Password" msgstr "Nuvarande lösenord" #: account/forms.py:457 account/forms.py:546 msgid "New Password" msgstr "Nytt lösenord" #: account/forms.py:458 account/forms.py:547 msgid "New Password (again)" msgstr "Nytt lösenord (igen)" #: account/forms.py:466 msgid "Please type your current password." msgstr "Skriv in ditt nuvarande lösenord." #: account/forms.py:504 msgid "The e-mail address is not assigned to any user account" msgstr "Epost-adressen är inte knuten till något konto" #: account/forms.py:568 msgid "The password reset token was invalid." msgstr "" #: account/models.py:23 msgid "user" msgstr "" #: account/models.py:27 account/models.py:81 #, fuzzy msgid "e-mail address" msgstr "epost-adress" #: account/models.py:28 #, fuzzy msgid "verified" msgstr "Ej verifierad" #: account/models.py:29 #, fuzzy msgid "primary" msgstr "Primär" #: account/models.py:34 msgid "email address" msgstr "epost-adress" #: account/models.py:35 msgid "email addresses" msgstr "epost-adresser" #: account/models.py:83 msgid "created" msgstr "" #: account/models.py:85 msgid "sent" msgstr "" #: account/models.py:86 socialaccount/models.py:55 msgid "key" msgstr "" #: account/models.py:91 msgid "email confirmation" msgstr "epost-bekräftelse" #: account/models.py:92 msgid "email confirmations" msgstr "epost-bekräftelser" #: socialaccount/adapter.py:26 #, python-format msgid "" "An account already exists with this e-mail address. Please sign in to that " "account first, then connect your %s account." msgstr "" #: socialaccount/adapter.py:131 msgid "Your account has no password set up." msgstr "Ditt konto har inget lösenord." #: socialaccount/adapter.py:138 msgid "Your account has no verified e-mail address." msgstr "Ditt konto har ingen verifierad epost-adress." #: socialaccount/apps.py:7 #, fuzzy msgid "Social Accounts" msgstr "Konto" #: socialaccount/models.py:43 socialaccount/models.py:77 msgid "provider" msgstr "" #: socialaccount/models.py:46 #, fuzzy msgid "name" msgstr "Användarnamn" #: socialaccount/models.py:48 msgid "client id" msgstr "" #: socialaccount/models.py:50 msgid "App ID, or consumer key" msgstr "" #: socialaccount/models.py:51 msgid "secret key" msgstr "" #: socialaccount/models.py:53 msgid "API secret, client secret, or consumer secret" msgstr "" #: socialaccount/models.py:58 msgid "Key" msgstr "" #: socialaccount/models.py:66 msgid "social application" msgstr "" #: socialaccount/models.py:67 msgid "social applications" msgstr "" #: socialaccount/models.py:96 msgid "uid" msgstr "" #: socialaccount/models.py:98 msgid "last login" msgstr "" #: socialaccount/models.py:100 msgid "date joined" msgstr "" #: socialaccount/models.py:102 msgid "extra data" msgstr "" #: socialaccount/models.py:106 msgid "social account" msgstr "" #: socialaccount/models.py:107 msgid "social accounts" msgstr "" #: socialaccount/models.py:133 msgid "token" msgstr "" #: socialaccount/models.py:135 msgid "\"oauth_token\" (OAuth1) or access token (OAuth2)" msgstr "" #: socialaccount/models.py:138 msgid "token secret" msgstr "" #: socialaccount/models.py:140 msgid "\"oauth_token_secret\" (OAuth1) or refresh token (OAuth2)" msgstr "" #: socialaccount/models.py:142 msgid "expires at" msgstr "" #: socialaccount/models.py:146 msgid "social application token" msgstr "" #: socialaccount/models.py:147 msgid "social application tokens" msgstr "" #: socialaccount/providers/douban/views.py:36 msgid "Invalid profile data" msgstr "" #: socialaccount/providers/oauth/client.py:78 #, python-format msgid "Invalid response while obtaining request token from \"%s\"." msgstr "Felaktigt svar vid hämtning av fråge-nyckel från \"%s\"." #: socialaccount/providers/oauth/client.py:109 #, python-format msgid "Invalid response while obtaining access token from \"%s\"." msgstr "Felaktigt svar vid hämtning av access-nyckel från \"%s\"." #: socialaccount/providers/oauth/client.py:128 #, python-format msgid "No request token saved for \"%s\"." msgstr "Ingen fråge-nyckel sparad för \"%s\"." #: socialaccount/providers/oauth/client.py:177 #, python-format msgid "No access token saved for \"%s\"." msgstr "Ingen access-nyckel sparad för \"%s\"." #: socialaccount/providers/oauth/client.py:197 #, python-format msgid "No access to private resources at \"%s\"." msgstr "Ingen access till privata resurser hos \"%s\"." #: templates/account/account_inactive.html:5 #: templates/account/account_inactive.html:8 msgid "Account Inactive" msgstr "Kontot inaktivt" #: templates/account/account_inactive.html:10 msgid "This account is inactive." msgstr "Detta konto är inaktivt." #: templates/account/email.html:5 msgid "Account" msgstr "Konto" #: templates/account/email.html:8 msgid "E-mail Addresses" msgstr "Epost-adresser" #: templates/account/email.html:10 msgid "The following e-mail addresses are associated with your account:" msgstr "Följande epost-adresser är knutna till ditt konto:" #: templates/account/email.html:24 msgid "Verified" msgstr "Verifierad" #: templates/account/email.html:26 msgid "Unverified" msgstr "Ej verifierad" #: templates/account/email.html:28 msgid "Primary" msgstr "Primär" #: templates/account/email.html:34 msgid "Make Primary" msgstr "Gör primär" #: templates/account/email.html:35 msgid "Re-send Verification" msgstr "Sänd verifiering igen" #: templates/account/email.html:36 templates/socialaccount/connections.html:35 msgid "Remove" msgstr "Ta bort" #: templates/account/email.html:43 msgid "Warning:" msgstr "Varning:" #: templates/account/email.html:43 msgid "" "You currently do not have any e-mail address set up. You should really add " "an e-mail address so you can receive notifications, reset your password, etc." msgstr "" "Du har inte angett någon epost-adress. Du borde lägga till en epost-adress " "så du kan få meddelanden, återställa ditt lösenord och liknande." #: templates/account/email.html:48 msgid "Add E-mail Address" msgstr "Lägg till epost-adress" #: templates/account/email.html:53 msgid "Add E-mail" msgstr "Lägg till epost" #: templates/account/email.html:62 msgid "Do you really want to remove the selected e-mail address?" msgstr "Vill du verkligen ta bort den valda epost-adressen?" #: templates/account/email/email_confirmation_message.txt:1 #, fuzzy, python-format #| msgid "" #| "User %(user_display)s at %(site_name)s has given this as an email " #| "address.\n" #| "\n" #| "To confirm this is correct, go to %(activate_url)s\n" msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because user %(user_display)s has given yours " "as an e-mail address to connect their account.\n" "\n" "To confirm this is correct, go to %(activate_url)s\n" msgstr "" "Användare %(user_display)s på %(site_name)s har angivit detta som sin epost-" "adress.\n" "\n" "Klicka på följande adress för att bekräfta att detta stämmer: " "%(activate_url)s\n" #: templates/account/email/email_confirmation_message.txt:7 #, python-format msgid "" "Thank you from %(site_name)s!\n" "%(site_domain)s" msgstr "" #: templates/account/email/email_confirmation_subject.txt:3 #, fuzzy #| msgid "Confirm E-mail Address" msgid "Please Confirm Your E-mail Address" msgstr "Verifiera epost-adress" #: templates/account/email/password_reset_key_message.txt:1 #, fuzzy, python-format #| msgid "" #| "You're receiving this e-mail because you or someone else has requested a " #| "password for your user account at %(site_domain)s.\n" #| "It can be safely ignored if you did not request a password reset. Click " #| "the link below to reset your password." msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because you or someone else has requested a " "password for your user account.\n" "It can be safely ignored if you did not request a password reset. Click the " "link below to reset your password." msgstr "" "Du har fått detta mail för att du eller någon annan har begärt en " "återställning av ditt lösenord på %(site_domain)s.\n" "Du kan bortse från detta mail om du inte begärt en återställning. Klicka på " "länken nedan för att återställa ditt lösenord." #: templates/account/email/password_reset_key_message.txt:8 #, python-format msgid "In case you forgot, your username is %(username)s." msgstr "Ditt användarnamn är %(username)s." #: templates/account/email/password_reset_key_message.txt:10 #, python-format msgid "" "Thank you for using %(site_name)s!\n" "%(site_domain)s" msgstr "" #: templates/account/email/password_reset_key_subject.txt:3 msgid "Password Reset E-mail" msgstr "Återställning av lösenord" #: templates/account/email_confirm.html:6 #: templates/account/email_confirm.html:10 msgid "Confirm E-mail Address" msgstr "Verifiera epost-adress" #: templates/account/email_confirm.html:16 #, python-format msgid "" "Please confirm that %(email)s is an e-mail " "address for user %(user_display)s." msgstr "" "Verifiera att %(email)s är en epost-adress " "för %(user_display)s." #: templates/account/email_confirm.html:20 msgid "Confirm" msgstr "Verifiera" #: templates/account/email_confirm.html:27 #, python-format msgid "" "This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request." msgstr "" "Länken för att verifiera epost-adressen har förfallit eller är ogiltig. Skapa en ny epost-verification." #: templates/account/login.html:6 templates/account/login.html:10 #: templates/account/login.html:43 msgid "Sign In" msgstr "Logga in" #: templates/account/login.html:15 #, fuzzy, python-format msgid "" "Please sign in with one\n" "of your existing third party accounts. Or, sign " "up\n" "for a %(site_name)s account and sign in below:" msgstr "" "Logga in med ett\n" "av dina befintliga tredjeparts-konton eller skapa " "ett konto \n" "för %(site_name)s och logga in nedan:" #: templates/account/login.html:25 msgid "or" msgstr "eller" #: templates/account/login.html:32 #, fuzzy, python-format msgid "" "If you have not created an account yet, then please\n" "sign up first." msgstr "" "Har du redan ett konto? Då kan du logga in." #: templates/account/login.html:42 msgid "Forgot Password?" msgstr "Glömt lösenordet?" #: templates/account/logout.html:5 templates/account/logout.html:8 #: templates/account/logout.html:17 msgid "Sign Out" msgstr "Logga ut" #: templates/account/logout.html:10 msgid "Are you sure you want to sign out?" msgstr "Är du säker att du vill logga ut?" #: templates/account/messages/cannot_delete_primary_email.txt:2 #, python-format msgid "You cannot remove your primary e-mail address (%(email)s)." msgstr "Du kan inte ta bort din primära epost-adress (%(email)s)." #: templates/account/messages/email_confirmation_sent.txt:2 #, python-format msgid "Confirmation e-mail sent to %(email)s." msgstr "Verifierings-mail skickat till %(email)s." #: templates/account/messages/email_confirmed.txt:2 #, python-format msgid "You have confirmed %(email)s." msgstr "Du har verifierat %(email)s." #: templates/account/messages/email_deleted.txt:2 #, python-format msgid "Removed e-mail address %(email)s." msgstr "Ta bort epost-adress %(email)s." #: templates/account/messages/logged_in.txt:4 #, python-format msgid "Successfully signed in as %(name)s." msgstr "Du har loggat in som %(name)s." #: templates/account/messages/logged_out.txt:2 msgid "You have signed out." msgstr "Du har loggat ut." #: templates/account/messages/password_changed.txt:2 msgid "Password successfully changed." msgstr "Lösenordet ändrat." #: templates/account/messages/password_set.txt:2 msgid "Password successfully set." msgstr "Lösenord skapat." #: templates/account/messages/primary_email_set.txt:2 msgid "Primary e-mail address set." msgstr "Primär epost-adress satt." #: templates/account/messages/unverified_primary_email.txt:2 msgid "Your primary e-mail address must be verified." msgstr "Din primära epost-adress måste verifieras." #: templates/account/password_change.html:5 #: templates/account/password_change.html:8 #: templates/account/password_change.html:13 #: templates/account/password_reset_from_key.html:4 #: templates/account/password_reset_from_key.html:7 #: templates/account/password_reset_from_key_done.html:4 #: templates/account/password_reset_from_key_done.html:7 msgid "Change Password" msgstr "Ändra lösenord" #: templates/account/password_reset.html:6 #: templates/account/password_reset.html:10 #: templates/account/password_reset_done.html:6 #: templates/account/password_reset_done.html:9 msgid "Password Reset" msgstr "Återställning av lösenord" #: templates/account/password_reset.html:15 msgid "" "Forgotten your password? Enter your e-mail address below, and we'll send you " "an e-mail allowing you to reset it." msgstr "" "Glömt ditt lösenord? Ange din epost-adress nedan så skickar vi ett mail med " "instruktioner för att återställa det." #: templates/account/password_reset.html:20 msgid "Reset My Password" msgstr "Återställ mitt lösenord" #: templates/account/password_reset.html:23 msgid "Please contact us if you have any trouble resetting your password." msgstr "" "Vänligen kontakta oss om du har problem med att återställa ditt lösenord." #: templates/account/password_reset_done.html:15 msgid "" "We have sent you an e-mail. Please contact us if you do not receive it " "within a few minutes." msgstr "" "Ett mail har nu skickats. Kontakta oss om det inte dyker upp inom ett par " "minuter." #: templates/account/password_reset_from_key.html:7 msgid "Bad Token" msgstr "Felaktig nyckel" #: templates/account/password_reset_from_key.html:11 #, python-format msgid "" "The password reset link was invalid, possibly because it has already been " "used. Please request a new password reset." msgstr "" "Länken för att återställa lösenordet var ogiltig, möjligtvis för att den " "redan har använts. Begär en ny lösenords-" "återställning." #: templates/account/password_reset_from_key.html:17 msgid "change password" msgstr "ändra lösenord" #: templates/account/password_reset_from_key.html:20 #: templates/account/password_reset_from_key_done.html:8 msgid "Your password is now changed." msgstr "Ditt lösenord är nu ändrat." #: templates/account/password_set.html:5 templates/account/password_set.html:8 #: templates/account/password_set.html:13 msgid "Set Password" msgstr "Skapa lösenord" #: templates/account/signup.html:5 templates/socialaccount/signup.html:5 msgid "Signup" msgstr "Skapa konto" #: templates/account/signup.html:8 templates/account/signup.html:18 #: templates/socialaccount/signup.html:8 templates/socialaccount/signup.html:19 msgid "Sign Up" msgstr "Skapa konto" #: templates/account/signup.html:10 #, python-format msgid "" "Already have an account? Then please sign in." msgstr "" "Har du redan ett konto? Då kan du logga in." #: templates/account/signup_closed.html:5 #: templates/account/signup_closed.html:8 msgid "Sign Up Closed" msgstr "Anmälan stängd" #: templates/account/signup_closed.html:10 msgid "We are sorry, but the sign up is currently closed." msgstr "Tyvärr är anmälan stängd för närvarande." #: templates/account/snippets/already_logged_in.html:5 msgid "Note" msgstr "Information" #: templates/account/snippets/already_logged_in.html:5 #, python-format msgid "you are already logged in as %(user_display)s." msgstr "du är inloggad som %(user_display)s." #: templates/account/verification_sent.html:5 #: templates/account/verification_sent.html:8 #: templates/account/verified_email_required.html:5 #: templates/account/verified_email_required.html:8 msgid "Verify Your E-mail Address" msgstr "Verifiera din epost-adress" #: templates/account/verification_sent.html:10 #, fuzzy msgid "" "We have sent an e-mail to you for verification. Follow the link provided to " "finalize the signup process. Please contact us if you do not receive it " "within a few minutes." msgstr "" "Ett mail för verifiering har skickats till " "%(email)s. Klicka på länken i mailet för att slutföra anmälan. Kontakta " "oss om det inte dyker upp inom ett par minuter." #: templates/account/verified_email_required.html:12 msgid "" "This part of the site requires us to verify that\n" "you are who you claim to be. For this purpose, we require that you\n" "verify ownership of your e-mail address. " msgstr "" "För att få tillgång till denna avdelning måste du verifiera att\n" "du är den du säger att du är. Du måste därför bevisa att du\n" "angett rätt epost-adress. " #: templates/account/verified_email_required.html:16 msgid "" "We have sent an e-mail to you for\n" "verification. Please click on the link inside this e-mail. Please\n" "contact us if you do not receive it within a few minutes." msgstr "" "Vi har skickat ett mail till dig för\n" "verifiering. Klicka på länken inne i detta mail. Kontakta\n" "oss om det inte dyker upp inom ett par minuter." #: templates/account/verified_email_required.html:20 #, python-format msgid "" "Note: you can still change your e-" "mail address." msgstr "" "Information: du kan fortfarande ändra din epost-adress." #: templates/openid/login.html:9 msgid "OpenID Sign In" msgstr "Inloggning via OpenID" #: templates/socialaccount/authentication_error.html:5 #: templates/socialaccount/authentication_error.html:8 msgid "Social Network Login Failure" msgstr "Fel vid tredjeparts-inloggning" #: templates/socialaccount/authentication_error.html:10 msgid "" "An error occurred while attempting to login via your social network account." msgstr "Ett fel inträffade vid inloggning via tredjeparts-konto." #: templates/socialaccount/connections.html:5 #: templates/socialaccount/connections.html:8 msgid "Account Connections" msgstr "Anslutna tredjeparts-konton" #: templates/socialaccount/connections.html:11 msgid "" "You can sign in to your account using any of the following third party " "accounts:" msgstr "" "Du kan logga in på ditt konto via något av följande tredjeparts-konton:" #: templates/socialaccount/connections.html:43 msgid "" "You currently have no social network accounts connected to this account." msgstr "Du har för närvarande inga tredjeparts-konton knutna till ditt konto." #: templates/socialaccount/connections.html:46 msgid "Add a 3rd Party Account" msgstr "Lägg till tredjeparts-konto" #: templates/socialaccount/login_cancelled.html:5 #: templates/socialaccount/login_cancelled.html:9 msgid "Login Cancelled" msgstr "Inloggning avbruten" #: templates/socialaccount/login_cancelled.html:13 #, python-format msgid "" "You decided to cancel logging in to our site using one of your existing " "accounts. If this was a mistake, please proceed to sign in." msgstr "" "Du valde att avbryta inloggningen via ett av dina tredjeparts-konton. Om " "detta var ett misstag kan du logga in igen." #: templates/socialaccount/messages/account_connected.txt:2 msgid "The social account has been connected." msgstr "Tredjeparts-kontot har knutits till ditt kontot." #: templates/socialaccount/messages/account_connected_other.txt:2 msgid "The social account is already connected to a different account." msgstr "Tredjeparts-kontot är redan knutet till ett annat konto." #: templates/socialaccount/messages/account_disconnected.txt:2 msgid "The social account has been disconnected." msgstr "Tredjeparts-kontot har tagits bort." #: templates/socialaccount/signup.html:10 #, fuzzy, python-format msgid "" "You are about to use your %(provider_name)s account to login to\n" "%(site_name)s. As a final step, please complete the following form:" msgstr "" "Du håller på att logga in via ditt konto på %(provider_name)s på \n" "%(site_name)s. Fyll i följande formulär för att slutföra inloggningen:" #~ msgid "The login and/or password you specified are not correct." #~ msgstr "Inloggningen och/eller lösenordet är felaktigt." #~ msgid "Usernames can only contain letters, digits and @/./+/-/_." #~ msgstr "" #~ "Användarnamn kan endast innehålla bokstäver, siffror samt @/./+/-/_." #~ msgid "This username is already taken. Please choose another." #~ msgstr "Användarnamnet är upptaget. Välj ett annat." #, fuzzy #~| msgid "Sign In" #~ msgid "Shopify Sign In" #~ msgstr "Logga in" #~ msgid "" #~ "You have confirmed that %(email)s is an " #~ "e-mail address for user %(user_display)s." #~ msgstr "" #~ "Du har verifierat att %(email)s är en " #~ "epost-adress för %(user_display)s." #~ msgid "Thanks for using our site!" #~ msgstr "Tack för att du använder vår hemsida!" #~ msgid "Confirmation e-mail sent to %(email)s" #~ msgstr "Epost-bekräftelse skickad till %(email)s" #~ msgid "Delete Password" #~ msgstr "Ta bort lösenordet" #~ msgid "" #~ "You may delete your password since you are currently logged in using " #~ "OpenID." #~ msgstr "Du kan ta bort ditt lösenord eftersom du är inloggad via OpenID." #~ msgid "delete my password" #~ msgstr "ta bort mitt lösenord" #~ msgid "Password Deleted" #~ msgstr "Lösenordet borttaget" #~ msgid "Your password has been deleted." #~ msgstr "Ditt lösenord har tagits bort." django-allauth-0.35.0/allauth/locale/he/0000755000076500000240000000000013235133532020735 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/he/LC_MESSAGES/0000755000076500000240000000000013235133532022522 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/he/LC_MESSAGES/django.mo0000644000076500000240000003712613235132043024326 0ustar pennersrstaff000000000000004L \ 6v       I wc L "( K U e m &  9    />Zpk_2, < IVkp- "&lIB" !! 3@HQYho#2-A!6c@%t&)?;+#g?<"0A r}42.\vPW:H|e'*$,=-[      " - 2 5 = B Q a f .o p "D" ""##(# >##_#I##vY$/$%%,%"3%*V%%Q% %%&+&E&"]&&&'D (dN)D))*&*:*W* `* ****M*%#+%I+3o+}+R!,t,/-?-0H-'y---/--. . $. /.:. R.]./{.$.?.)/E:/D/E/ 07001$F1Ak1=1)1"2E82C~223gT444X4!55 W5(b5 5;556n77l8X8N9a9X:< ;];:z;8;*;H<b<E{<<<<<=*=D=^=x= ========= > >,)>BIqTGW7[Q294:'{C<gRHS Dp$,vOy `P>~\uij]d6-Kl@XVJ*5F"(&z|A% !sMc Y=neZ/8w0a.U}ofkt;3r)x?^#NhE+m L_b1Note: you can still change your e-mail address.A user is already registered with this e-mail address.AccountAccount ConnectionsAccount InactiveAccountsAdd E-mailAdd E-mail AddressAdd a 3rd Party AccountAlready have an account? Then please sign in.An account already exists with this e-mail address. Please sign in to that account first, then connect your %s account.An error occurred while attempting to login via your social network account.Are you sure you want to sign out?Bad TokenChange PasswordConfirmConfirm E-mail AddressConfirmation e-mail sent to %(email)s.Current PasswordDo you really want to remove the selected e-mail address?E-mailE-mail (again)E-mail (optional)E-mail AddressesE-mail addressE-mail address confirmationForgot Password?Forgotten your password? Enter your e-mail address below, and we'll send you an e-mail allowing you to reset it.Hello from %(site_name)s! You're receiving this e-mail because user %(user_display)s has given yours as an e-mail address to connect their account. To confirm this is correct, go to %(activate_url)s Hello from %(site_name)s! You're receiving this e-mail because you or someone else has requested a password for your user account. It can be safely ignored if you did not request a password reset. Click the link below to reset your password.If you have not created an account yet, then please sign up first.In case you forgot, your username is %(username)s.Login CancelledMake PrimaryNew PasswordNew Password (again)NoteOpenID Sign InPasswordPassword (again)Password ResetPassword Reset E-mailPassword must be a minimum of {0} characters.Password successfully changed.Password successfully set.Please Confirm Your E-mail AddressPlease confirm that %(email)s is an e-mail address for user %(user_display)s.Please contact us if you have any trouble resetting your password.Please sign in with one of your existing third party accounts. Or, sign up for a %(site_name)s account and sign in below:Please type your current password.PrimaryPrimary e-mail address set.Re-send VerificationRemember MeRemoveRemoved e-mail address %(email)s.Reset My PasswordSet PasswordSign InSign OutSign UpSign Up ClosedSignupSocial AccountsSocial Network Login FailureSuccessfully signed in as %(name)s.Thank you for using %(site_name)s! %(site_domain)sThank you from %(site_name)s! %(site_domain)sThe e-mail address and/or password you specified are not correct.The e-mail address is not assigned to any user accountThe following e-mail addresses are associated with your account:The password reset link was invalid, possibly because it has already been used. Please request a new password reset.The password reset token was invalid.The social account has been connected.The social account has been disconnected.The social account is already connected to a different account.The username and/or password you specified are not correct.This account is currently inactive.This account is inactive.This e-mail address is already associated with another account.This e-mail address is already associated with this account.This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request.This part of the site requires us to verify that you are who you claim to be. For this purpose, we require that you verify ownership of your e-mail address. Too many failed login attempts. Try again later.UnverifiedUsernameUsername can not be used. Please use other username.Username or e-mailVerifiedVerify Your E-mail AddressWarning:We are sorry, but the sign up is currently closed.We have sent an e-mail to you for verification. Please click on the link inside this e-mail. Please contact us if you do not receive it within a few minutes.We have sent an e-mail to you for verification. Follow the link provided to finalize the signup process. Please contact us if you do not receive it within a few minutes.We have sent you an e-mail. Please contact us if you do not receive it within a few minutes.You are about to use your %(provider_name)s account to login to %(site_name)s. As a final step, please complete the following form:You can sign in to your account using any of the following third party accounts:You cannot remove your primary e-mail address (%(email)s).You currently do not have any e-mail address set up. You should really add an e-mail address so you can receive notifications, reset your password, etc.You currently have no social network accounts connected to this account.You decided to cancel logging in to our site using one of your existing accounts. If this was a mistake, please proceed to sign in.You have confirmed %(email)s.You have signed out.You must type the same email each time.You must type the same password each time.Your account has no password set up.Your account has no verified e-mail address.Your password is now changed.Your primary e-mail address must be verified.change passwordcreateddate joinede-mail addressemail addressemail addressesemail confirmationemail confirmationsexpires atfield labelLoginkeylast loginnameorprimarysentsocial accountsocial accountsuserverifiedyou are already logged in as %(user_display)s.Project-Id-Version: 0.1 Report-Msgid-Bugs-To: POT-Creation-Date: 2018-02-02 12:55-0600 PO-Revision-Date: 2017-08-26 16:11+0300 Last-Translator: Udi Oron Language-Team: Hebrew Language: he MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Generator: Poedit 2.0.3 הערה: אתה עדיין יכול לשנות את כתובת האימייל שלך .משתמש אחר כבר רשום עם כתובת אימייל זו.חשבוןקישורים לחשבוןחשבון לא פעילחשבונותהוסף אימיילהוסף כתובת אימיילהוסף חשבון צד שלישינרשמת בעבר? כניסה למערכת.קיים כבר חשבון עם כתובת אימייל זו. אנא התחבר לחשבון זה, ואז קשר את חשבון %s שלך.אירעה שגיאה במהלך ניסיון התחברות באמצעות חשבון הרשת החברתית שלך.האם אתה בטוח שברצונך לצאת?אסימון פגוםהחלפת סיסמהאמתאימות כתובת אימיילמייל אימות נשלח ל %(email)s.סיסמה נוכחיתהאם ברצונך להסיר את כתובות האימייל המסומנות?אימיילאימייל (שוב)אימייל (לא חובה)כתובות אימיילכתובת אימיילאישור כתובת אימיילשכחת סיסמה?שכחת את סיסמתך? הזן את כתובת האימייל שלך כאן, ונשלח לך מייל לאיפוס הסיסמה.שלום מ%(site_name)s. אתה מקבל מייל זה מכיוון שהמשתמש %(user_display)s סיפק את האימייל שלך לקישור של חשבונם. כדי לאמת זאת, לחץ על הקישור %(activate_url)s. שלום מ%(site_name)s! מייל זה נשלח אליך כיוון שאתה או מישהו אחר ביקש סיסמה עבור חשבונך ב %(site_name)s. במידה ולא ביקשת איפוס סיסמה ניתן להתעלם ממייל זה ללא חשש. לחץ על הקישור מטה לאיפוס סיסמתך.אם לא נרשמת לחשבון בעבר, אנא הרשם תחילה.במידת ושכחת, שם המשתמש שלך הוא %(username)s.התחברות בוטלההפוך לראשיסיסמה חדשהסיסמה חדשה (שוב)הערהכניסה באמצעות OpenIDסיסמהסיסמה (שוב)איפוס סיסמהמייל איפוס סיסמההסיסמה חייבת להיות באורך של לפחות {0} תווים.הסיסמה שונתה בהצלחה.הסיסמה נקבעה בהצלחה.אנא אמת את כתובת האימייל שלךאנא אמת ש%(email)s היא כתובת האימייל של המשתמש %(user_display)s.אנא צור איתנו קשר אם אתה מתקשה לאפס את הסיסמה.אנא הכנס עם אחד מהחשבונות הקיימים שלך. או, הרשם לחשבון %(site_name)s והתחבר:אנא הזן את הסיסמה הנוכחית.ראשיכתובת אימייל ראשית הוגדרה.שלח אימייל אימות מחדשזכור אותיהסרכתובת האימייל %(email)s הוסרה.אפס את הסיסמהקביעת סיסמהכניסהיציאההרשמהההרשמה סגורההרשמהחשבונות חברתייםשגיאת התחברות לרשת חברתיתמחובר בהצלחה כ %(name)s.תודה שהשתמשת באתר %(site_name)s! %(site_domain)sתודה מ%(site_name)s! %(site_domain)sכתובת האימייל ו/או הסיסמה אינם נכונים.כתובת אימייל זו אינה משויכת לאף חשבוןכתובות האימייל הבאות משויכות לחשבונך:הקישור לאיפוס הסיסמה אינו תקין, כנראה מכיוון שכבר נעשה בו שימוש. לחץ כאן לבקשת איפוס סיסמה מחדש.אסימון איפוס הסיסמה אינו תקין.החשבון החברתי קושר בהצלחה.חשבון חברתי זה נותק.חשבון חברתי זה כבר מקושר למשתמש אחר.שם המשתמש ו/או הסיסמה אינם נכונים.חשבון זה אינו פעיל כעת.חשבון זה אינו פעיל.כתובת אימייל זו כבר משויכת לחשבון אחר.כתובת אימייל זו כבר משויכת לחשבון זה.קישור זה לאימות כתובת אימייל פג תוקף או שאינו תקין. יש להנפיק בקשה חדשה לאימות כתובת אימייל.חלק זה באתר דורש מאיתנו לוודא כי הנך אכן מי שאתה טוען שאתה. למטרה זו, אנו מבקשים כי תאמת בעלות על כתובת האימייל שלך.יותר מדי ניסיונות התחברות כושלים. אנא נסה שוב מאוחר יותר.לא מאומתשם משתמשלא ניתן להשתמש בשם משתמש זה. אנא בחר שם משתמש אחר.שם משתמש או אימיילמאומתאשר את כתובת הדואל שלךאזהרה:אנו מצטערים, אך ההרשמה סגורה כעת.שלחנו אליך מייל למטרת אימות. אנא ללץ על הקישור בתוך אימייל זה. אנא צור עמנו קשר במידה והמייל לא התקבל תוך מספר דקות.שלחנו אליך מייל למטרת אימות. לחץ על הקישור במייל לסיום תהליך ההרשמה. אנא צור עמנו קשר במידה והמייל לא התקבל תוך מספר דקות.המייל נשלח. אנא צור איתנו קשר אם הוא אינו מתקבל תוך מספר דקות.אתה עומד להשתמש בחשבון %(provider_name)s שלך כדי להתחבר ל%(site_name)s. לסיום, אנא מלא את הטופס הבא:ניתן להתחבר לחשבונך באמצעות כל אחד מחשבונות צד שלישי הבאים:לא ניתן להסיר את כתובת האימייל הראשית שלך (%(email)s).טרם שייכת כתובת אימייל לחשבונך. מומלץ לשייך כתובת אימייל על מנת לקבל התראות, לאפס סיסמה וכו'.לא קיימים חשבונות רשת חברתית המקושרים לחשבון זה כרגע.ביקשת לבטל את ההתחברות לאתר זה באמצעות אחד מחשבונותיך הקיימים. במידה וטעית, אנא המשך להתחברות.כתובת האימייל %(email)s אומתה בהצלחה.התנתקת מהחשבון.יש להזין את אותו האימייל פעמיים.יש להזין את אותה הסיסמה פעמיים.לא נבחרה סיסמה לחשבונך.לא נמצאו כתובות אימייל מאומתות לחשבונך.סיסמתך שונתה.עליך לאמת את כתובת האימייל הראשית שלך.החלפת סיסמהנוצרתאריך הצטרפותכתובת אימיילכתובת אימיילכתובות אימיילאישור באימיילאישורים בדואלפג תוקף בתאריךכניסהמפתחהתחברות אחרונהשםאוראשינשלחחשבון חברתיחשבונות חברתייםמשתמשמאומתהנך מחובר כבר כ%(user_display)s.django-allauth-0.35.0/allauth/locale/he/LC_MESSAGES/django.po0000644000076500000240000006331313235132037024331 0ustar pennersrstaff00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: 0.1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-02-02 12:55-0600\n" "PO-Revision-Date: 2017-08-26 16:11+0300\n" "Last-Translator: Udi Oron \n" "Language-Team: Hebrew\n" "Language: he\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 2.0.3\n" #: account/adapter.py:45 msgid "Username can not be used. Please use other username." msgstr "לא ניתן להשתמש בשם משתמש זה. אנא בחר שם משתמש אחר." #: account/adapter.py:49 msgid "Too many failed login attempts. Try again later." msgstr "יותר מדי ניסיונות התחברות כושלים. אנא נסה שוב מאוחר יותר." #: account/adapter.py:51 msgid "A user is already registered with this e-mail address." msgstr "משתמש אחר כבר רשום עם כתובת אימייל זו." #: account/adapter.py:288 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "הסיסמה חייבת להיות באורך של לפחות {0} תווים." #: account/apps.py:7 msgid "Accounts" msgstr "חשבונות" #: account/forms.py:61 account/forms.py:398 msgid "You must type the same password each time." msgstr "יש להזין את אותה הסיסמה פעמיים." #: account/forms.py:91 account/forms.py:365 account/forms.py:476 msgid "Password" msgstr "סיסמה" #: account/forms.py:92 msgid "Remember Me" msgstr "זכור אותי" #: account/forms.py:98 msgid "This account is currently inactive." msgstr "חשבון זה אינו פעיל כעת." #: account/forms.py:101 msgid "The e-mail address and/or password you specified are not correct." msgstr "כתובת האימייל ו/או הסיסמה אינם נכונים." #: account/forms.py:104 msgid "The username and/or password you specified are not correct." msgstr "שם המשתמש ו/או הסיסמה אינם נכונים." #: account/forms.py:113 account/forms.py:268 account/forms.py:426 #: account/forms.py:495 msgid "E-mail address" msgstr "כתובת אימייל" #: account/forms.py:115 account/forms.py:301 account/forms.py:421 #: account/forms.py:490 msgid "E-mail" msgstr "אימייל" #: account/forms.py:120 account/forms.py:123 account/forms.py:260 #: account/forms.py:264 msgid "Username" msgstr "שם משתמש" #: account/forms.py:130 msgid "Username or e-mail" msgstr "שם משתמש או אימייל" #: account/forms.py:133 msgctxt "field label" msgid "Login" msgstr "כניסה" #: account/forms.py:292 msgid "E-mail (again)" msgstr "אימייל (שוב)" #: account/forms.py:296 msgid "E-mail address confirmation" msgstr "אישור כתובת אימייל" #: account/forms.py:304 msgid "E-mail (optional)" msgstr "אימייל (לא חובה)" #: account/forms.py:345 msgid "You must type the same email each time." msgstr "יש להזין את אותו האימייל פעמיים." #: account/forms.py:368 account/forms.py:477 msgid "Password (again)" msgstr "סיסמה (שוב)" #: account/forms.py:432 msgid "This e-mail address is already associated with this account." msgstr "כתובת אימייל זו כבר משויכת לחשבון זה." #: account/forms.py:434 msgid "This e-mail address is already associated with another account." msgstr "כתובת אימייל זו כבר משויכת לחשבון אחר." #: account/forms.py:456 msgid "Current Password" msgstr "סיסמה נוכחית" #: account/forms.py:457 account/forms.py:546 msgid "New Password" msgstr "סיסמה חדשה" #: account/forms.py:458 account/forms.py:547 msgid "New Password (again)" msgstr "סיסמה חדשה (שוב)" #: account/forms.py:466 msgid "Please type your current password." msgstr "אנא הזן את הסיסמה הנוכחית." #: account/forms.py:504 msgid "The e-mail address is not assigned to any user account" msgstr "כתובת אימייל זו אינה משויכת לאף חשבון" #: account/forms.py:568 msgid "The password reset token was invalid." msgstr "אסימון איפוס הסיסמה אינו תקין." #: account/models.py:23 msgid "user" msgstr "משתמש" #: account/models.py:27 account/models.py:81 msgid "e-mail address" msgstr "כתובת אימייל" #: account/models.py:28 msgid "verified" msgstr "מאומת" #: account/models.py:29 msgid "primary" msgstr "ראשי" #: account/models.py:34 msgid "email address" msgstr "כתובת אימייל" #: account/models.py:35 msgid "email addresses" msgstr "כתובות אימייל" #: account/models.py:83 msgid "created" msgstr "נוצר" #: account/models.py:85 msgid "sent" msgstr "נשלח" #: account/models.py:86 socialaccount/models.py:55 msgid "key" msgstr "מפתח" #: account/models.py:91 msgid "email confirmation" msgstr "אישור באימייל" #: account/models.py:92 msgid "email confirmations" msgstr "אישורים בדואל" #: socialaccount/adapter.py:26 #, python-format msgid "" "An account already exists with this e-mail address. Please sign in to that " "account first, then connect your %s account." msgstr "" "קיים כבר חשבון עם כתובת אימייל זו. אנא התחבר לחשבון זה, ואז קשר את חשבון %s " "שלך." #: socialaccount/adapter.py:131 msgid "Your account has no password set up." msgstr "לא נבחרה סיסמה לחשבונך." #: socialaccount/adapter.py:138 msgid "Your account has no verified e-mail address." msgstr "לא נמצאו כתובות אימייל מאומתות לחשבונך." #: socialaccount/apps.py:7 msgid "Social Accounts" msgstr "חשבונות חברתיים" #: socialaccount/models.py:43 socialaccount/models.py:77 msgid "provider" msgstr "" #: socialaccount/models.py:46 msgid "name" msgstr "שם" #: socialaccount/models.py:48 msgid "client id" msgstr "" #: socialaccount/models.py:50 msgid "App ID, or consumer key" msgstr "" #: socialaccount/models.py:51 msgid "secret key" msgstr "" #: socialaccount/models.py:53 msgid "API secret, client secret, or consumer secret" msgstr "" #: socialaccount/models.py:58 msgid "Key" msgstr "" #: socialaccount/models.py:66 msgid "social application" msgstr "" #: socialaccount/models.py:67 msgid "social applications" msgstr "" #: socialaccount/models.py:96 msgid "uid" msgstr "" #: socialaccount/models.py:98 msgid "last login" msgstr "התחברות אחרונה" #: socialaccount/models.py:100 msgid "date joined" msgstr "תאריך הצטרפות" #: socialaccount/models.py:102 msgid "extra data" msgstr "" #: socialaccount/models.py:106 msgid "social account" msgstr "חשבון חברתי" #: socialaccount/models.py:107 msgid "social accounts" msgstr "חשבונות חברתיים" #: socialaccount/models.py:133 msgid "token" msgstr "" #: socialaccount/models.py:135 msgid "\"oauth_token\" (OAuth1) or access token (OAuth2)" msgstr "" #: socialaccount/models.py:138 msgid "token secret" msgstr "" #: socialaccount/models.py:140 msgid "\"oauth_token_secret\" (OAuth1) or refresh token (OAuth2)" msgstr "" #: socialaccount/models.py:142 msgid "expires at" msgstr "פג תוקף בתאריך" #: socialaccount/models.py:146 msgid "social application token" msgstr "" #: socialaccount/models.py:147 msgid "social application tokens" msgstr "" #: socialaccount/providers/douban/views.py:36 msgid "Invalid profile data" msgstr "" #: socialaccount/providers/oauth/client.py:78 #, python-format msgid "Invalid response while obtaining request token from \"%s\"." msgstr "" #: socialaccount/providers/oauth/client.py:109 #, python-format msgid "Invalid response while obtaining access token from \"%s\"." msgstr "" #: socialaccount/providers/oauth/client.py:128 #, python-format msgid "No request token saved for \"%s\"." msgstr "" #: socialaccount/providers/oauth/client.py:177 #, python-format msgid "No access token saved for \"%s\"." msgstr "" #: socialaccount/providers/oauth/client.py:197 #, python-format msgid "No access to private resources at \"%s\"." msgstr "" #: templates/account/account_inactive.html:5 #: templates/account/account_inactive.html:8 msgid "Account Inactive" msgstr "חשבון לא פעיל" #: templates/account/account_inactive.html:10 msgid "This account is inactive." msgstr "חשבון זה אינו פעיל." #: templates/account/email.html:5 msgid "Account" msgstr "חשבון" #: templates/account/email.html:8 msgid "E-mail Addresses" msgstr "כתובות אימייל" #: templates/account/email.html:10 msgid "The following e-mail addresses are associated with your account:" msgstr "כתובות האימייל הבאות משויכות לחשבונך:" #: templates/account/email.html:24 msgid "Verified" msgstr "מאומת" #: templates/account/email.html:26 msgid "Unverified" msgstr "לא מאומת" #: templates/account/email.html:28 msgid "Primary" msgstr "ראשי" #: templates/account/email.html:34 msgid "Make Primary" msgstr "הפוך לראשי" #: templates/account/email.html:35 msgid "Re-send Verification" msgstr "שלח אימייל אימות מחדש" #: templates/account/email.html:36 templates/socialaccount/connections.html:35 msgid "Remove" msgstr "הסר" #: templates/account/email.html:43 msgid "Warning:" msgstr "אזהרה:" #: templates/account/email.html:43 msgid "" "You currently do not have any e-mail address set up. You should really add " "an e-mail address so you can receive notifications, reset your password, etc." msgstr "" "טרם שייכת כתובת אימייל לחשבונך. מומלץ לשייך כתובת אימייל על מנת לקבל התראות, " "לאפס סיסמה וכו'." #: templates/account/email.html:48 msgid "Add E-mail Address" msgstr "הוסף כתובת אימייל" #: templates/account/email.html:53 msgid "Add E-mail" msgstr "הוסף אימייל" #: templates/account/email.html:62 msgid "Do you really want to remove the selected e-mail address?" msgstr "האם ברצונך להסיר את כתובות האימייל המסומנות?" #: templates/account/email/email_confirmation_message.txt:1 #, python-format msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because user %(user_display)s has given yours " "as an e-mail address to connect their account.\n" "\n" "To confirm this is correct, go to %(activate_url)s\n" msgstr "" "שלום מ%(site_name)s.\n" "\n" "אתה מקבל מייל זה מכיוון שהמשתמש %(user_display)s סיפק את האימייל שלך לקישור " "של חשבונם.\n" "\n" "כדי לאמת זאת, לחץ על הקישור %(activate_url)s.\n" #: templates/account/email/email_confirmation_message.txt:7 #, python-format msgid "" "Thank you from %(site_name)s!\n" "%(site_domain)s" msgstr "" "תודה מ%(site_name)s!\n" "%(site_domain)s" #: templates/account/email/email_confirmation_subject.txt:3 msgid "Please Confirm Your E-mail Address" msgstr "אנא אמת את כתובת האימייל שלך" #: templates/account/email/password_reset_key_message.txt:1 #, python-format msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because you or someone else has requested a " "password for your user account.\n" "It can be safely ignored if you did not request a password reset. Click the " "link below to reset your password." msgstr "" "שלום מ%(site_name)s!\n" "\n" "מייל זה נשלח אליך כיוון שאתה או מישהו אחר ביקש סיסמה עבור חשבונך ב " "%(site_name)s.\n" "במידה ולא ביקשת איפוס סיסמה ניתן להתעלם ממייל זה ללא חשש. לחץ על הקישור מטה " "לאיפוס סיסמתך." #: templates/account/email/password_reset_key_message.txt:8 #, python-format msgid "In case you forgot, your username is %(username)s." msgstr "במידת ושכחת, שם המשתמש שלך הוא %(username)s." #: templates/account/email/password_reset_key_message.txt:10 #, python-format msgid "" "Thank you for using %(site_name)s!\n" "%(site_domain)s" msgstr "" "תודה שהשתמשת באתר %(site_name)s!\n" "%(site_domain)s" #: templates/account/email/password_reset_key_subject.txt:3 msgid "Password Reset E-mail" msgstr "מייל איפוס סיסמה" #: templates/account/email_confirm.html:6 #: templates/account/email_confirm.html:10 msgid "Confirm E-mail Address" msgstr "אימות כתובת אימייל" #: templates/account/email_confirm.html:16 #, python-format msgid "" "Please confirm that %(email)s is an e-mail " "address for user %(user_display)s." msgstr "" "אנא אמת ש%(email)s היא כתובת האימייל של " "המשתמש %(user_display)s." #: templates/account/email_confirm.html:20 msgid "Confirm" msgstr "אמת" #: templates/account/email_confirm.html:27 #, python-format msgid "" "This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request." msgstr "" "קישור זה לאימות כתובת אימייל פג תוקף או שאינו תקין. יש להנפיק בקשה חדשה לאימות כתובת אימייל." #: templates/account/login.html:6 templates/account/login.html:10 #: templates/account/login.html:43 msgid "Sign In" msgstr "כניסה" #: templates/account/login.html:15 #, python-format msgid "" "Please sign in with one\n" "of your existing third party accounts. Or, sign " "up\n" "for a %(site_name)s account and sign in below:" msgstr "" "אנא הכנס עם אחד מהחשבונות הקיימים שלך.\n" "או, הרשם לחשבון %(site_name)s והתחבר:" #: templates/account/login.html:25 msgid "or" msgstr "או" #: templates/account/login.html:32 #, python-format msgid "" "If you have not created an account yet, then please\n" "sign up first." msgstr "" "אם לא נרשמת לחשבון בעבר, אנא הרשם תחילה." #: templates/account/login.html:42 msgid "Forgot Password?" msgstr "שכחת סיסמה?" #: templates/account/logout.html:5 templates/account/logout.html:8 #: templates/account/logout.html:17 msgid "Sign Out" msgstr "יציאה" #: templates/account/logout.html:10 msgid "Are you sure you want to sign out?" msgstr "האם אתה בטוח שברצונך לצאת?" #: templates/account/messages/cannot_delete_primary_email.txt:2 #, python-format msgid "You cannot remove your primary e-mail address (%(email)s)." msgstr "לא ניתן להסיר את כתובת האימייל הראשית שלך (%(email)s)." #: templates/account/messages/email_confirmation_sent.txt:2 #, python-format msgid "Confirmation e-mail sent to %(email)s." msgstr "מייל אימות נשלח ל %(email)s." #: templates/account/messages/email_confirmed.txt:2 #, python-format msgid "You have confirmed %(email)s." msgstr "כתובת האימייל %(email)s אומתה בהצלחה." #: templates/account/messages/email_deleted.txt:2 #, python-format msgid "Removed e-mail address %(email)s." msgstr "כתובת האימייל %(email)s הוסרה." #: templates/account/messages/logged_in.txt:4 #, python-format msgid "Successfully signed in as %(name)s." msgstr "מחובר בהצלחה כ %(name)s." #: templates/account/messages/logged_out.txt:2 msgid "You have signed out." msgstr "התנתקת מהחשבון." #: templates/account/messages/password_changed.txt:2 msgid "Password successfully changed." msgstr "הסיסמה שונתה בהצלחה." #: templates/account/messages/password_set.txt:2 msgid "Password successfully set." msgstr "הסיסמה נקבעה בהצלחה." #: templates/account/messages/primary_email_set.txt:2 msgid "Primary e-mail address set." msgstr "כתובת אימייל ראשית הוגדרה." #: templates/account/messages/unverified_primary_email.txt:2 msgid "Your primary e-mail address must be verified." msgstr "עליך לאמת את כתובת האימייל הראשית שלך." #: templates/account/password_change.html:5 #: templates/account/password_change.html:8 #: templates/account/password_change.html:13 #: templates/account/password_reset_from_key.html:4 #: templates/account/password_reset_from_key.html:7 #: templates/account/password_reset_from_key_done.html:4 #: templates/account/password_reset_from_key_done.html:7 msgid "Change Password" msgstr "החלפת סיסמה" #: templates/account/password_reset.html:6 #: templates/account/password_reset.html:10 #: templates/account/password_reset_done.html:6 #: templates/account/password_reset_done.html:9 msgid "Password Reset" msgstr "איפוס סיסמה" #: templates/account/password_reset.html:15 msgid "" "Forgotten your password? Enter your e-mail address below, and we'll send you " "an e-mail allowing you to reset it." msgstr "" "שכחת את סיסמתך? הזן את כתובת האימייל שלך כאן, ונשלח לך מייל לאיפוס הסיסמה." #: templates/account/password_reset.html:20 msgid "Reset My Password" msgstr "אפס את הסיסמה" #: templates/account/password_reset.html:23 msgid "Please contact us if you have any trouble resetting your password." msgstr "אנא צור איתנו קשר אם אתה מתקשה לאפס את הסיסמה." #: templates/account/password_reset_done.html:15 msgid "" "We have sent you an e-mail. Please contact us if you do not receive it " "within a few minutes." msgstr "המייל נשלח. אנא צור איתנו קשר אם הוא אינו מתקבל תוך מספר דקות." #: templates/account/password_reset_from_key.html:7 msgid "Bad Token" msgstr "אסימון פגום" #: templates/account/password_reset_from_key.html:11 #, python-format msgid "" "The password reset link was invalid, possibly because it has already been " "used. Please request a new password reset." msgstr "" "הקישור לאיפוס הסיסמה אינו תקין, כנראה מכיוון שכבר נעשה בו שימוש. לחץ כאן " "לבקשת איפוס סיסמה מחדש." #: templates/account/password_reset_from_key.html:17 msgid "change password" msgstr "החלפת סיסמה" #: templates/account/password_reset_from_key.html:20 #: templates/account/password_reset_from_key_done.html:8 msgid "Your password is now changed." msgstr "סיסמתך שונתה." #: templates/account/password_set.html:5 templates/account/password_set.html:8 #: templates/account/password_set.html:13 msgid "Set Password" msgstr "קביעת סיסמה" #: templates/account/signup.html:5 templates/socialaccount/signup.html:5 msgid "Signup" msgstr "הרשמה" #: templates/account/signup.html:8 templates/account/signup.html:18 #: templates/socialaccount/signup.html:8 templates/socialaccount/signup.html:19 msgid "Sign Up" msgstr "הרשמה" #: templates/account/signup.html:10 #, python-format msgid "" "Already have an account? Then please sign in." msgstr "נרשמת בעבר? כניסה למערכת." #: templates/account/signup_closed.html:5 #: templates/account/signup_closed.html:8 msgid "Sign Up Closed" msgstr "ההרשמה סגורה" #: templates/account/signup_closed.html:10 msgid "We are sorry, but the sign up is currently closed." msgstr "אנו מצטערים, אך ההרשמה סגורה כעת." #: templates/account/snippets/already_logged_in.html:5 msgid "Note" msgstr "הערה" #: templates/account/snippets/already_logged_in.html:5 #, python-format msgid "you are already logged in as %(user_display)s." msgstr "הנך מחובר כבר כ%(user_display)s." #: templates/account/verification_sent.html:5 #: templates/account/verification_sent.html:8 #: templates/account/verified_email_required.html:5 #: templates/account/verified_email_required.html:8 msgid "Verify Your E-mail Address" msgstr "אשר את כתובת הדואל שלך" #: templates/account/verification_sent.html:10 msgid "" "We have sent an e-mail to you for verification. Follow the link provided to " "finalize the signup process. Please contact us if you do not receive it " "within a few minutes." msgstr "" "שלחנו אליך מייל למטרת אימות. לחץ על הקישור במייל לסיום תהליך ההרשמה. אנא צור " "עמנו קשר במידה והמייל לא התקבל תוך מספר דקות." #: templates/account/verified_email_required.html:12 msgid "" "This part of the site requires us to verify that\n" "you are who you claim to be. For this purpose, we require that you\n" "verify ownership of your e-mail address. " msgstr "" "חלק זה באתר דורש מאיתנו לוודא כי הנך אכן מי שאתה טוען שאתה.\n" "למטרה זו, אנו מבקשים כי תאמת בעלות על כתובת האימייל שלך." #: templates/account/verified_email_required.html:16 msgid "" "We have sent an e-mail to you for\n" "verification. Please click on the link inside this e-mail. Please\n" "contact us if you do not receive it within a few minutes." msgstr "" "שלחנו אליך מייל למטרת אימות.\n" "אנא ללץ על הקישור בתוך אימייל זה.\n" "אנא צור עמנו קשר במידה והמייל לא התקבל תוך מספר דקות." #: templates/account/verified_email_required.html:20 #, python-format msgid "" "Note: you can still change your e-" "mail address." msgstr "" "הערה: אתה עדיין יכול לשנות את " "כתובת האימייל שלך ." #: templates/openid/login.html:9 msgid "OpenID Sign In" msgstr "כניסה באמצעות OpenID" #: templates/socialaccount/authentication_error.html:5 #: templates/socialaccount/authentication_error.html:8 msgid "Social Network Login Failure" msgstr "שגיאת התחברות לרשת חברתית" #: templates/socialaccount/authentication_error.html:10 msgid "" "An error occurred while attempting to login via your social network account." msgstr "אירעה שגיאה במהלך ניסיון התחברות באמצעות חשבון הרשת החברתית שלך." #: templates/socialaccount/connections.html:5 #: templates/socialaccount/connections.html:8 msgid "Account Connections" msgstr "קישורים לחשבון" #: templates/socialaccount/connections.html:11 msgid "" "You can sign in to your account using any of the following third party " "accounts:" msgstr "ניתן להתחבר לחשבונך באמצעות כל אחד מחשבונות צד שלישי הבאים:" #: templates/socialaccount/connections.html:43 msgid "" "You currently have no social network accounts connected to this account." msgstr "לא קיימים חשבונות רשת חברתית המקושרים לחשבון זה כרגע." #: templates/socialaccount/connections.html:46 msgid "Add a 3rd Party Account" msgstr "הוסף חשבון צד שלישי" #: templates/socialaccount/login_cancelled.html:5 #: templates/socialaccount/login_cancelled.html:9 msgid "Login Cancelled" msgstr "התחברות בוטלה" #: templates/socialaccount/login_cancelled.html:13 #, python-format msgid "" "You decided to cancel logging in to our site using one of your existing " "accounts. If this was a mistake, please proceed to sign in." msgstr "" "ביקשת לבטל את ההתחברות לאתר זה באמצעות אחד מחשבונותיך הקיימים. במידה וטעית, " "אנא המשך להתחברות." #: templates/socialaccount/messages/account_connected.txt:2 msgid "The social account has been connected." msgstr "החשבון החברתי קושר בהצלחה." #: templates/socialaccount/messages/account_connected_other.txt:2 msgid "The social account is already connected to a different account." msgstr "חשבון חברתי זה כבר מקושר למשתמש אחר." #: templates/socialaccount/messages/account_disconnected.txt:2 msgid "The social account has been disconnected." msgstr "חשבון חברתי זה נותק." #: templates/socialaccount/signup.html:10 #, python-format msgid "" "You are about to use your %(provider_name)s account to login to\n" "%(site_name)s. As a final step, please complete the following form:" msgstr "" "אתה עומד להשתמש בחשבון %(provider_name)s שלך כדי\n" "להתחבר ל%(site_name)s. לסיום, אנא מלא את הטופס הבא:" #~ msgid "The login and/or password you specified are not correct." #~ msgstr "שם המשתמש ו/או הסיסמא אינם נכונים" #~ msgid "This username is already taken. Please choose another." #~ msgstr "שם משתמש זה כבר תפוס, אנא ציין שם אחר" #, fuzzy #~| msgid "Sign In" #~ msgid "Shopify Sign In" #~ msgstr "כניסה" #~ msgid "" #~ "You have confirmed that %(email)s is an " #~ "e-mail address for user %(user_display)s." #~ msgstr "" #~ "אישרת בהצלחה כי %(email)s הנה כתובת דואר " #~ "אלקטרוני עבור המשתמש %(user_display)s." #~ msgid "Confirmation e-mail sent to %(email)s" #~ msgstr "דואל אישור נשלח אל %(email)s" #~ msgid "Delete Password" #~ msgstr "מחיקת סיסמא" #~ msgid "" #~ "You may delete your password since you are currently logged in using " #~ "OpenID." #~ msgstr "אתה רשאי למחוק את סיסמאתך כיוון שהנך מחובר באמצעות OpenID" #~ msgid "delete my password" #~ msgstr "מחק סיסמא" #~ msgid "Password Deleted" #~ msgstr "הסיסמא נמחקה" #~ msgid "Your password has been deleted." #~ msgstr "סיסמתך נמחקה מהמערכת." django-allauth-0.35.0/allauth/locale/no/0000755000076500000240000000000013235133532020755 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/no/LC_MESSAGES/0000755000076500000240000000000013235133532022542 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/no/LC_MESSAGES/django.mo0000644000076500000240000003720413235132042024342 0ustar pennersrstaff00000000000000 / 7) \a 6 - #+?P YdwIwLQ" &99Jpj4_'289BF V cp'  +-Ao"lB9|"6>Z o{! #2C-vA6@^%&)D?n;#?(<h&0 4 >QZu2~O\VP:+ f H H!!"'"*C"$n",""-" # #&# .#:# I#W#g#z# # ### ##### #### $ $9$S$g$ m$z$~$$.$@$2%@/&ap&=&>'O'U' g'u'}'''I' (S((') *) 8)F)N)+d))6))))* *!*;*jJ**{+`},8,-8+-=d---- ----$".*G.r.x.....#../#&/nJ/G/0!000011161 O1\1e1 m1{1 1 1!1%141'(2:P2.2422+3"3!3748=4#v44>4=4155;G6 6 6A66 66 7/#7S77^88P989 :C::!;;);,;'*<-R<<0< < << < < ===1= E= P=\=e=m=~====== = ====>'>->?>C> J>.U>=m8zkLK EJxn1*2e^}R-h&G9)jQFI{AbO~M#SBZ_lf\V,T6>Yr( ca[q y+;D4Pv7:<]i/Up?usg|0w W!CNt@5$ "%d 'H.X`3o"oauth_token" (OAuth1) or access token (OAuth2)"oauth_token_secret" (OAuth1) or refresh token (OAuth2)Note: you can still change your e-mail address.A user is already registered with this e-mail address.API secret, client secret, or consumer secretAccountAccount ConnectionsAccount InactiveAccountsAdd E-mailAdd E-mail AddressAdd a 3rd Party AccountAlready have an account? Then please sign in.An account already exists with this e-mail address. Please sign in to that account first, then connect your %s account.An error occurred while attempting to login via your social network account.App ID, or consumer keyAre you sure you want to sign out?Bad TokenChange PasswordConfirmConfirm E-mail AddressConfirmation e-mail sent to %(email)s.Current PasswordDo you really want to remove the selected e-mail address?E-mailE-mail (again)E-mail (optional)E-mail AddressesE-mail addressE-mail address confirmationForgot Password?Forgotten your password? Enter your e-mail address below, and we'll send you an e-mail allowing you to reset it.Hello from %(site_name)s! You're receiving this e-mail because user %(user_display)s has given yours as an e-mail address to connect their account. To confirm this is correct, go to %(activate_url)s Hello from %(site_name)s! You're receiving this e-mail because you or someone else has requested a password for your user account. It can be safely ignored if you did not request a password reset. Click the link below to reset your password.If you have not created an account yet, then please sign up first.In case you forgot, your username is %(username)s.Invalid profile dataInvalid response while obtaining access token from "%s".Invalid response while obtaining request token from "%s".KeyLogin CancelledMake PrimaryNew PasswordNew Password (again)No access to private resources at "%s".No access token saved for "%s".No request token saved for "%s".NoteOpenID Sign InPasswordPassword (again)Password ResetPassword Reset E-mailPassword must be a minimum of {0} characters.Password successfully changed.Password successfully set.Please Confirm Your E-mail AddressPlease confirm that %(email)s is an e-mail address for user %(user_display)s.Please contact us if you have any trouble resetting your password.Please sign in with one of your existing third party accounts. Or, sign up for a %(site_name)s account and sign in below:Please type your current password.PrimaryPrimary e-mail address set.Re-send VerificationRemember MeRemoveRemoved e-mail address %(email)s.Reset My PasswordSet PasswordSign InSign OutSign UpSign Up ClosedSignupSocial AccountsSocial Network Login FailureSuccessfully signed in as %(name)s.Thank you for using %(site_name)s! %(site_domain)sThank you from %(site_name)s! %(site_domain)sThe e-mail address and/or password you specified are not correct.The e-mail address is not assigned to any user accountThe following e-mail addresses are associated with your account:The password reset link was invalid, possibly because it has already been used. Please request a new password reset.The password reset token was invalid.The social account has been connected.The social account has been disconnected.The social account is already connected to a different account.The username and/or password you specified are not correct.This account is currently inactive.This account is inactive.This e-mail address is already associated with another account.This e-mail address is already associated with this account.This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request.This part of the site requires us to verify that you are who you claim to be. For this purpose, we require that you verify ownership of your e-mail address. Too many failed login attempts. Try again later.UnverifiedUsernameUsername can not be used. Please use other username.Username or e-mailVerifiedVerify Your E-mail AddressWarning:We are sorry, but the sign up is currently closed.We have sent an e-mail to you for verification. Please click on the link inside this e-mail. Please contact us if you do not receive it within a few minutes.We have sent an e-mail to you for verification. Follow the link provided to finalize the signup process. Please contact us if you do not receive it within a few minutes.We have sent you an e-mail. Please contact us if you do not receive it within a few minutes.You are about to use your %(provider_name)s account to login to %(site_name)s. As a final step, please complete the following form:You can sign in to your account using any of the following third party accounts:You cannot remove your primary e-mail address (%(email)s).You currently do not have any e-mail address set up. You should really add an e-mail address so you can receive notifications, reset your password, etc.You currently have no social network accounts connected to this account.You decided to cancel logging in to our site using one of your existing accounts. If this was a mistake, please proceed to sign in.You have confirmed %(email)s.You have signed out.You must type the same email each time.You must type the same password each time.Your account has no password set up.Your account has no verified e-mail address.Your password is now changed.Your primary e-mail address must be verified.change passwordclient idcreateddate joinede-mail addressemail addressemail addressesemail confirmationemail confirmationsexpires atextra datafield labelLoginkeylast loginnameorprimaryprovidersecret keysentsocial accountsocial accountssocial applicationsocial application tokensocial application tokenssocial applicationstokentoken secretuiduserverifiedyou are already logged in as %(user_display)s.Project-Id-Version: PACKAGE VERSION Report-Msgid-Bugs-To: POT-Creation-Date: 2018-02-02 12:55-0600 PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE Last-Translator: FULL NAME Language-Team: LANGUAGE Language: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit "oauth_token" (OAuth1) eller aksess token (OAuth2)"oauth_token_secret" (OAuth1) eller forfrisknings token (OAuth2)Notat: du kan fremdeles endre din your e-postadresse.En bruker med følgende e-postadresse er allerede registrert.API hemmelighet, klient hemmelighet eller konsumer hemmelighetKontoKontotilkoblingerInaktiv kontoKontoerLegg til e-postLegg til e-postadresseLegg til en tredjeparts kontoHar du allerede en konto? Vennligst logg inn.En konto med denne e-postadressen eksisterer fra før. Vennligst logg inn på den kontoen først, deretter koble til din %s konto.Det skjedde en feil under forsøket på å logge inn via din sosialenettverkskonto.App ID, eller konsumer nøkkelEr du sikker at du ønsker å logge ut?Ugyldig tokenEndre PassordBekreftBekreft E-postadresseBekreftelses e-post er sendt til %(email)s.Nåværende passordEr du sikker på at du vil fjerne valgt e-postadresse?E-postE-post (igjen)E-post (valgfritt)E-postadresserE-postadresseE-postadresse bekreftelseGlemt passord?Glemt ditt passord? Skriv inn din e-postadresse under, og så sender vi deg en e-post for å lage et nytt.Hei fra %(site_name)s! Du mottar denne e-postadressen fordi %(user_display)s har gitt din e-postkonto for å koble til sin brukerkonto. For å bekrefte at dette stemmer, gå til %(activate_url)s Hei fra %(site_name)s! Du mottar denne e-postadressen fordi du eller noen andre har etterspurt et passord for din brukerkonto. Meldingen kan trygt ignoreres om du ikke foretok denne etterspørselen. Klikk på linken under for å gjennopprette ditt passord.Om du enda ikke har laget en konto, vennligst registrer deg først.I tilfelle du glemte, brukernavnet ditt er %(username)s.Ugyldig profil dataUgyldig respons under henting av tilgangstoken fra "%s".Ugyldig respons under henting av etterspørseltoken fra "%s".NøkkelInnlogging kansellertGjør til primærNytt passordNytt passord (igjen)Ingen tilgang til private ressurser på "%s".Ingen tilgangstoken lagret for "%s".Ingen etterspørselstoken lagret for "%s".NotatOpenID innloggingPassordPassord (igjen)Passord gjennopprettelsePassordgjennopprettelse E-postPassordet må være minst {0} tegn.Passordet er endret.Passordet er satt.Vennligst Bekreft Din E-postadresseVennligst bekreft at %(email)s er en e-postadresse for bruker %(user_display)s.Vennligst kontakt oss om du har problemer med passordgjennopprettelsen.Vennligst logg in med en av dine eksisterende tredjeparts kontoer. Eller, registrerdeg for en %(site_name)s konto og logg inn under:Vennligst skriv inn ditt passord.PrimærPrimær e-postadresse er satt.Send verifikasjon på nyttHusk megFjernFjern e-postadressen %(email)s.Gjennoprett mitt passordSett passordLogg innLogg utRegistrer degRegistrering stengtRegistrer degSosialkontoerSosialenettverk innlogging feiletInnlogging som %(name)s. suksessfull.Takk for at du bruker %(site_name)s! %(site_domain)sTakk fra %(site_name)s! %(site_domain)sE-postadressen og/eller passordet du spesifiserte er feil.E-postadressen er ikke gitt til en brukerkontoFølgende e-postadresser er assosiert med din konto:Passordgjennoppretelseslinken er ugyldig, mulig fordi den allerede er brukt. Vennligst etterspør en ny passord gjennopprettelse.Passord gjennoprettelses token var ugyldig.Sosialkontoen har blitt tilknytet.Sosialkontoen er blitt frakoblet.Sosialkontoen er allerede tilknytet til en annen konto.Brukernavnet og/eller passordet du spesifiserte er feil.Denne kontoen er for tiden inaktiv.Denne kontoen er inaktiv.Denne e-postadressen er allerede assosiert med en annen konto.Denne e-postadressen er allerede assosiert med denne kontoen.Denne e-post bekreftelseslinken er utgått eller ugyldig. Vennligst etterspør en ny e-postbekreftelse link.Denne delen av siden krever at du verifiserer at du er den du er. På grunn av dette, må du verifisere ditt eierskap av din e-postadresse. For mange innloggingsforsøk. Vennligst prøv igjen senere.UverifisertBrukernavnBrukernavnet kan ikke brukes. Vennligst bruk et annet brukernavn.Brukernavn eller e-postVerifisertBekreft Din E-postadresseAdvarsel:Beklager, men registrering er for tiden stengt.Vi har send en e-post til deg for verifikasjon. Vennligst klikk på linken i e-posten.Vennligst kontakt oss om du ikke mottar den innen et par minutter.Vi har sendt deg en e-post for verifisering. Følg linken for å fullføre registreringen. Vennligst kontakt oss om du ikke har mottatt den innen et par minutter.Vi har sendt deg en e-post. Vennligst kontakt oss om du ikke mottar den innen et par minutter.Du er på vei til å bruke din %(provider_name)s konto for å logge inn på %(site_name)s. Som et siste steg, vennligst fullfør følgende skjema:Du kan logge inn på din konto ved å bruke en av følgende tredjeparts kontoer:Du kan ikke fjerne en primær e-postadresse (%(email)s).Du har for tiden ingen e-postadresse satt opp. Du burde legge til en e-postadresse slik at du kan motta notifikasjoner, gjennoprette passord ol.Du har for tiden ingen sosialenettverkskontoer tilkoblet din konto.Du bestemt deg for å kansellere innlogging til siden ved å bruke en av dine eksisterende kontoer. Om dette var ved en feil, vennligst fortsett til innloggingen.Du har blitt bekreftet %(email)s.Du har logget ut.Du må skrive inn samme e-post hver gang.Du må skrive det samme passordet hver gang.Kontoen din har ingen passord satt opp.Din konto har ingen verifisert e-postadresse.Ditt passord er endret.Din primære e-postadresse må være verifisert.Endre passordklient idlagetble med datoepostadressee-postadressee-postadressere-post bekreftelsee-post bekreftelserutgår denekstra dataLogg innnøkkelsiste innloggingnavnellerprimærtilbyderhemmelig nøkkelsendtsosialkontososialkontoersosial applikasjonsosial applikasjon tokensosial applikasjon tokenersosial applikasjonertokentoken hemmelighetuidbrukerverifisertdu er allerede logget in som %(user_display)s.django-allauth-0.35.0/allauth/locale/no/LC_MESSAGES/django.po0000644000076500000240000005676613235132037024367 0ustar pennersrstaff00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-02-02 12:55-0600\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: account/adapter.py:45 msgid "Username can not be used. Please use other username." msgstr "Brukernavnet kan ikke brukes. Vennligst bruk et annet brukernavn." #: account/adapter.py:49 msgid "Too many failed login attempts. Try again later." msgstr "For mange innloggingsforsøk. Vennligst prøv igjen senere." #: account/adapter.py:51 msgid "A user is already registered with this e-mail address." msgstr "En bruker med følgende e-postadresse er allerede registrert." #: account/adapter.py:288 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "Passordet må være minst {0} tegn." #: account/apps.py:7 msgid "Accounts" msgstr "Kontoer" #: account/forms.py:61 account/forms.py:398 msgid "You must type the same password each time." msgstr "Du må skrive det samme passordet hver gang." #: account/forms.py:91 account/forms.py:365 account/forms.py:476 msgid "Password" msgstr "Passord" #: account/forms.py:92 msgid "Remember Me" msgstr "Husk meg" #: account/forms.py:98 msgid "This account is currently inactive." msgstr "Denne kontoen er for tiden inaktiv." #: account/forms.py:101 msgid "The e-mail address and/or password you specified are not correct." msgstr "E-postadressen og/eller passordet du spesifiserte er feil." #: account/forms.py:104 msgid "The username and/or password you specified are not correct." msgstr "Brukernavnet og/eller passordet du spesifiserte er feil." #: account/forms.py:113 account/forms.py:268 account/forms.py:426 #: account/forms.py:495 msgid "E-mail address" msgstr "E-postadresse" #: account/forms.py:115 account/forms.py:301 account/forms.py:421 #: account/forms.py:490 msgid "E-mail" msgstr "E-post" #: account/forms.py:120 account/forms.py:123 account/forms.py:260 #: account/forms.py:264 msgid "Username" msgstr "Brukernavn" #: account/forms.py:130 msgid "Username or e-mail" msgstr "Brukernavn eller e-post" #: account/forms.py:133 msgctxt "field label" msgid "Login" msgstr "Logg inn" #: account/forms.py:292 msgid "E-mail (again)" msgstr "E-post (igjen)" #: account/forms.py:296 msgid "E-mail address confirmation" msgstr "E-postadresse bekreftelse" #: account/forms.py:304 msgid "E-mail (optional)" msgstr "E-post (valgfritt)" #: account/forms.py:345 msgid "You must type the same email each time." msgstr "Du må skrive inn samme e-post hver gang." #: account/forms.py:368 account/forms.py:477 msgid "Password (again)" msgstr "Passord (igjen)" #: account/forms.py:432 msgid "This e-mail address is already associated with this account." msgstr "Denne e-postadressen er allerede assosiert med denne kontoen." #: account/forms.py:434 msgid "This e-mail address is already associated with another account." msgstr "Denne e-postadressen er allerede assosiert med en annen konto." #: account/forms.py:456 msgid "Current Password" msgstr "Nåværende passord" #: account/forms.py:457 account/forms.py:546 msgid "New Password" msgstr "Nytt passord" #: account/forms.py:458 account/forms.py:547 msgid "New Password (again)" msgstr "Nytt passord (igjen)" #: account/forms.py:466 msgid "Please type your current password." msgstr "Vennligst skriv inn ditt passord." #: account/forms.py:504 msgid "The e-mail address is not assigned to any user account" msgstr "E-postadressen er ikke gitt til en brukerkonto" #: account/forms.py:568 msgid "The password reset token was invalid." msgstr "Passord gjennoprettelses token var ugyldig." #: account/models.py:23 msgid "user" msgstr "bruker" #: account/models.py:27 account/models.py:81 msgid "e-mail address" msgstr "epostadresse" #: account/models.py:28 msgid "verified" msgstr "verifisert" #: account/models.py:29 msgid "primary" msgstr "primær" #: account/models.py:34 msgid "email address" msgstr "e-postadresse" #: account/models.py:35 msgid "email addresses" msgstr "e-postadresser" #: account/models.py:83 msgid "created" msgstr "laget" #: account/models.py:85 msgid "sent" msgstr "sendt" #: account/models.py:86 socialaccount/models.py:55 msgid "key" msgstr "nøkkel" #: account/models.py:91 msgid "email confirmation" msgstr "e-post bekreftelse" #: account/models.py:92 msgid "email confirmations" msgstr "e-post bekreftelser" #: socialaccount/adapter.py:26 #, python-format msgid "" "An account already exists with this e-mail address. Please sign in to that " "account first, then connect your %s account." msgstr "" "En konto med denne e-postadressen eksisterer fra før. Vennligst logg inn på " "den kontoen først, deretter koble til din %s konto." #: socialaccount/adapter.py:131 msgid "Your account has no password set up." msgstr "Kontoen din har ingen passord satt opp." #: socialaccount/adapter.py:138 msgid "Your account has no verified e-mail address." msgstr "Din konto har ingen verifisert e-postadresse." #: socialaccount/apps.py:7 msgid "Social Accounts" msgstr "Sosialkontoer" #: socialaccount/models.py:43 socialaccount/models.py:77 msgid "provider" msgstr "tilbyder" #: socialaccount/models.py:46 msgid "name" msgstr "navn" #: socialaccount/models.py:48 msgid "client id" msgstr "klient id" #: socialaccount/models.py:50 msgid "App ID, or consumer key" msgstr "App ID, eller konsumer nøkkel" #: socialaccount/models.py:51 msgid "secret key" msgstr "hemmelig nøkkel" #: socialaccount/models.py:53 msgid "API secret, client secret, or consumer secret" msgstr "API hemmelighet, klient hemmelighet eller konsumer hemmelighet" #: socialaccount/models.py:58 msgid "Key" msgstr "Nøkkel" #: socialaccount/models.py:66 msgid "social application" msgstr "sosial applikasjon" #: socialaccount/models.py:67 msgid "social applications" msgstr "sosial applikasjoner" #: socialaccount/models.py:96 msgid "uid" msgstr "uid" #: socialaccount/models.py:98 msgid "last login" msgstr "siste innlogging" #: socialaccount/models.py:100 msgid "date joined" msgstr "ble med dato" #: socialaccount/models.py:102 msgid "extra data" msgstr "ekstra data" #: socialaccount/models.py:106 msgid "social account" msgstr "sosialkonto" #: socialaccount/models.py:107 msgid "social accounts" msgstr "sosialkontoer" #: socialaccount/models.py:133 msgid "token" msgstr "token" #: socialaccount/models.py:135 msgid "\"oauth_token\" (OAuth1) or access token (OAuth2)" msgstr "\"oauth_token\" (OAuth1) eller aksess token (OAuth2)" #: socialaccount/models.py:138 msgid "token secret" msgstr "token hemmelighet" #: socialaccount/models.py:140 msgid "\"oauth_token_secret\" (OAuth1) or refresh token (OAuth2)" msgstr "\"oauth_token_secret\" (OAuth1) eller forfrisknings token (OAuth2)" #: socialaccount/models.py:142 msgid "expires at" msgstr "utgår den" #: socialaccount/models.py:146 msgid "social application token" msgstr "sosial applikasjon token" #: socialaccount/models.py:147 msgid "social application tokens" msgstr "sosial applikasjon tokener" #: socialaccount/providers/douban/views.py:36 msgid "Invalid profile data" msgstr "Ugyldig profil data" #: socialaccount/providers/oauth/client.py:78 #, python-format msgid "Invalid response while obtaining request token from \"%s\"." msgstr "Ugyldig respons under henting av etterspørseltoken fra \"%s\"." #: socialaccount/providers/oauth/client.py:109 #, python-format msgid "Invalid response while obtaining access token from \"%s\"." msgstr "Ugyldig respons under henting av tilgangstoken fra \"%s\"." #: socialaccount/providers/oauth/client.py:128 #, python-format msgid "No request token saved for \"%s\"." msgstr "Ingen etterspørselstoken lagret for \"%s\"." #: socialaccount/providers/oauth/client.py:177 #, python-format msgid "No access token saved for \"%s\"." msgstr "Ingen tilgangstoken lagret for \"%s\"." #: socialaccount/providers/oauth/client.py:197 #, python-format msgid "No access to private resources at \"%s\"." msgstr "Ingen tilgang til private ressurser på \"%s\"." #: templates/account/account_inactive.html:5 #: templates/account/account_inactive.html:8 msgid "Account Inactive" msgstr "Inaktiv konto" #: templates/account/account_inactive.html:10 msgid "This account is inactive." msgstr "Denne kontoen er inaktiv." #: templates/account/email.html:5 msgid "Account" msgstr "Konto" #: templates/account/email.html:8 msgid "E-mail Addresses" msgstr "E-postadresser" #: templates/account/email.html:10 msgid "The following e-mail addresses are associated with your account:" msgstr "Følgende e-postadresser er assosiert med din konto:" #: templates/account/email.html:24 msgid "Verified" msgstr "Verifisert" #: templates/account/email.html:26 msgid "Unverified" msgstr "Uverifisert" #: templates/account/email.html:28 msgid "Primary" msgstr "Primær" #: templates/account/email.html:34 msgid "Make Primary" msgstr "Gjør til primær" #: templates/account/email.html:35 msgid "Re-send Verification" msgstr "Send verifikasjon på nytt" #: templates/account/email.html:36 templates/socialaccount/connections.html:35 msgid "Remove" msgstr "Fjern" #: templates/account/email.html:43 msgid "Warning:" msgstr "Advarsel:" #: templates/account/email.html:43 msgid "" "You currently do not have any e-mail address set up. You should really add " "an e-mail address so you can receive notifications, reset your password, etc." msgstr "" "Du har for tiden ingen e-postadresse satt opp. Du burde legge til en e-" "postadresse slik at du kan motta notifikasjoner, gjennoprette passord ol." #: templates/account/email.html:48 msgid "Add E-mail Address" msgstr "Legg til e-postadresse" #: templates/account/email.html:53 msgid "Add E-mail" msgstr "Legg til e-post" #: templates/account/email.html:62 msgid "Do you really want to remove the selected e-mail address?" msgstr "Er du sikker på at du vil fjerne valgt e-postadresse?" #: templates/account/email/email_confirmation_message.txt:1 #, python-format msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because user %(user_display)s has given yours " "as an e-mail address to connect their account.\n" "\n" "To confirm this is correct, go to %(activate_url)s\n" msgstr "" "Hei fra %(site_name)s!\n" "\n" "Du mottar denne e-postadressen fordi %(user_display)s har gitt din e-" "postkonto for å koble til sin brukerkonto.\n" "\n" "For å bekrefte at dette stemmer, gå til %(activate_url)s\n" #: templates/account/email/email_confirmation_message.txt:7 #, python-format msgid "" "Thank you from %(site_name)s!\n" "%(site_domain)s" msgstr "" "Takk fra %(site_name)s!\n" "%(site_domain)s" #: templates/account/email/email_confirmation_subject.txt:3 msgid "Please Confirm Your E-mail Address" msgstr "Vennligst Bekreft Din E-postadresse" #: templates/account/email/password_reset_key_message.txt:1 #, python-format msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because you or someone else has requested a " "password for your user account.\n" "It can be safely ignored if you did not request a password reset. Click the " "link below to reset your password." msgstr "" "Hei fra %(site_name)s!\n" "\n" "Du mottar denne e-postadressen fordi du eller noen andre har etterspurt et " "passord for din brukerkonto.\n" "Meldingen kan trygt ignoreres om du ikke foretok denne etterspørselen. Klikk " "på linken under for å gjennopprette ditt passord." #: templates/account/email/password_reset_key_message.txt:8 #, python-format msgid "In case you forgot, your username is %(username)s." msgstr "I tilfelle du glemte, brukernavnet ditt er %(username)s." #: templates/account/email/password_reset_key_message.txt:10 #, python-format msgid "" "Thank you for using %(site_name)s!\n" "%(site_domain)s" msgstr "" "Takk for at du bruker %(site_name)s!\n" "%(site_domain)s" #: templates/account/email/password_reset_key_subject.txt:3 msgid "Password Reset E-mail" msgstr "Passordgjennopprettelse E-post" #: templates/account/email_confirm.html:6 #: templates/account/email_confirm.html:10 msgid "Confirm E-mail Address" msgstr "Bekreft E-postadresse" #: templates/account/email_confirm.html:16 #, python-format msgid "" "Please confirm that %(email)s is an e-mail " "address for user %(user_display)s." msgstr "" "Vennligst bekreft at %(email)s er en e-" "postadresse for bruker %(user_display)s." #: templates/account/email_confirm.html:20 msgid "Confirm" msgstr "Bekreft" #: templates/account/email_confirm.html:27 #, python-format msgid "" "This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request." msgstr "" "Denne e-post bekreftelseslinken er utgått eller ugyldig. Vennligst etterspør en ny e-postbekreftelse link." #: templates/account/login.html:6 templates/account/login.html:10 #: templates/account/login.html:43 msgid "Sign In" msgstr "Logg inn" #: templates/account/login.html:15 #, python-format msgid "" "Please sign in with one\n" "of your existing third party accounts. Or, sign " "up\n" "for a %(site_name)s account and sign in below:" msgstr "" "Vennligst logg in med en\n" "av dine eksisterende tredjeparts kontoer. Eller, registrerdeg\n" "for en %(site_name)s konto og logg inn under:" #: templates/account/login.html:25 msgid "or" msgstr "eller" #: templates/account/login.html:32 #, python-format msgid "" "If you have not created an account yet, then please\n" "sign up first." msgstr "" "Om du enda ikke har laget en konto, vennligst\n" "registrer deg først." #: templates/account/login.html:42 msgid "Forgot Password?" msgstr "Glemt passord?" #: templates/account/logout.html:5 templates/account/logout.html:8 #: templates/account/logout.html:17 msgid "Sign Out" msgstr "Logg ut" #: templates/account/logout.html:10 msgid "Are you sure you want to sign out?" msgstr "Er du sikker at du ønsker å logge ut?" #: templates/account/messages/cannot_delete_primary_email.txt:2 #, python-format msgid "You cannot remove your primary e-mail address (%(email)s)." msgstr "Du kan ikke fjerne en primær e-postadresse (%(email)s)." #: templates/account/messages/email_confirmation_sent.txt:2 #, python-format msgid "Confirmation e-mail sent to %(email)s." msgstr "Bekreftelses e-post er sendt til %(email)s." #: templates/account/messages/email_confirmed.txt:2 #, python-format msgid "You have confirmed %(email)s." msgstr "Du har blitt bekreftet %(email)s." #: templates/account/messages/email_deleted.txt:2 #, python-format msgid "Removed e-mail address %(email)s." msgstr "Fjern e-postadressen %(email)s." #: templates/account/messages/logged_in.txt:4 #, python-format msgid "Successfully signed in as %(name)s." msgstr "Innlogging som %(name)s. suksessfull." #: templates/account/messages/logged_out.txt:2 msgid "You have signed out." msgstr "Du har logget ut." #: templates/account/messages/password_changed.txt:2 msgid "Password successfully changed." msgstr "Passordet er endret." #: templates/account/messages/password_set.txt:2 msgid "Password successfully set." msgstr "Passordet er satt." #: templates/account/messages/primary_email_set.txt:2 msgid "Primary e-mail address set." msgstr "Primær e-postadresse er satt." #: templates/account/messages/unverified_primary_email.txt:2 msgid "Your primary e-mail address must be verified." msgstr "Din primære e-postadresse må være verifisert." #: templates/account/password_change.html:5 #: templates/account/password_change.html:8 #: templates/account/password_change.html:13 #: templates/account/password_reset_from_key.html:4 #: templates/account/password_reset_from_key.html:7 #: templates/account/password_reset_from_key_done.html:4 #: templates/account/password_reset_from_key_done.html:7 msgid "Change Password" msgstr "Endre Passord" #: templates/account/password_reset.html:6 #: templates/account/password_reset.html:10 #: templates/account/password_reset_done.html:6 #: templates/account/password_reset_done.html:9 msgid "Password Reset" msgstr "Passord gjennopprettelse" #: templates/account/password_reset.html:15 msgid "" "Forgotten your password? Enter your e-mail address below, and we'll send you " "an e-mail allowing you to reset it." msgstr "" "Glemt ditt passord? Skriv inn din e-postadresse under, og så sender vi deg " "en e-post for å lage et nytt." #: templates/account/password_reset.html:20 msgid "Reset My Password" msgstr "Gjennoprett mitt passord" #: templates/account/password_reset.html:23 msgid "Please contact us if you have any trouble resetting your password." msgstr "" "Vennligst kontakt oss om du har problemer med passordgjennopprettelsen." #: templates/account/password_reset_done.html:15 msgid "" "We have sent you an e-mail. Please contact us if you do not receive it " "within a few minutes." msgstr "" "Vi har sendt deg en e-post. Vennligst kontakt oss om du ikke mottar den " "innen et par minutter." #: templates/account/password_reset_from_key.html:7 msgid "Bad Token" msgstr "Ugyldig token" #: templates/account/password_reset_from_key.html:11 #, python-format msgid "" "The password reset link was invalid, possibly because it has already been " "used. Please request a new password reset." msgstr "" "Passordgjennoppretelseslinken er ugyldig, mulig fordi den allerede er brukt. " "Vennligst etterspør en ny passord " "gjennopprettelse." #: templates/account/password_reset_from_key.html:17 msgid "change password" msgstr "Endre passord" #: templates/account/password_reset_from_key.html:20 #: templates/account/password_reset_from_key_done.html:8 msgid "Your password is now changed." msgstr "Ditt passord er endret." #: templates/account/password_set.html:5 templates/account/password_set.html:8 #: templates/account/password_set.html:13 msgid "Set Password" msgstr "Sett passord" #: templates/account/signup.html:5 templates/socialaccount/signup.html:5 msgid "Signup" msgstr "Registrer deg" #: templates/account/signup.html:8 templates/account/signup.html:18 #: templates/socialaccount/signup.html:8 templates/socialaccount/signup.html:19 msgid "Sign Up" msgstr "Registrer deg" #: templates/account/signup.html:10 #, python-format msgid "" "Already have an account? Then please sign in." msgstr "" "Har du allerede en konto? Vennligst logg inn." #: templates/account/signup_closed.html:5 #: templates/account/signup_closed.html:8 msgid "Sign Up Closed" msgstr "Registrering stengt" #: templates/account/signup_closed.html:10 msgid "We are sorry, but the sign up is currently closed." msgstr "Beklager, men registrering er for tiden stengt." #: templates/account/snippets/already_logged_in.html:5 msgid "Note" msgstr "Notat" #: templates/account/snippets/already_logged_in.html:5 #, python-format msgid "you are already logged in as %(user_display)s." msgstr "du er allerede logget in som %(user_display)s." #: templates/account/verification_sent.html:5 #: templates/account/verification_sent.html:8 #: templates/account/verified_email_required.html:5 #: templates/account/verified_email_required.html:8 msgid "Verify Your E-mail Address" msgstr "Bekreft Din E-postadresse" #: templates/account/verification_sent.html:10 msgid "" "We have sent an e-mail to you for verification. Follow the link provided to " "finalize the signup process. Please contact us if you do not receive it " "within a few minutes." msgstr "" "Vi har sendt deg en e-post for verifisering. Følg linken for å fullføre " "registreringen. Vennligst kontakt oss om du ikke har mottatt den innen et " "par minutter." #: templates/account/verified_email_required.html:12 msgid "" "This part of the site requires us to verify that\n" "you are who you claim to be. For this purpose, we require that you\n" "verify ownership of your e-mail address. " msgstr "" "Denne delen av siden krever at du verifiserer at du er den du er. På grunn " "av dette, må du verifisere ditt eierskap av din e-postadresse. " #: templates/account/verified_email_required.html:16 msgid "" "We have sent an e-mail to you for\n" "verification. Please click on the link inside this e-mail. Please\n" "contact us if you do not receive it within a few minutes." msgstr "" "Vi har send en e-post til deg for\n" "verifikasjon. Vennligst klikk på linken i e-posten.Vennligst kontakt oss om " "du ikke mottar den innen et par minutter." #: templates/account/verified_email_required.html:20 #, python-format msgid "" "Note: you can still change your e-" "mail address." msgstr "" "Notat: du kan fremdeles endre din " "your e-postadresse." #: templates/openid/login.html:9 msgid "OpenID Sign In" msgstr "OpenID innlogging" #: templates/socialaccount/authentication_error.html:5 #: templates/socialaccount/authentication_error.html:8 msgid "Social Network Login Failure" msgstr "Sosialenettverk innlogging feilet" #: templates/socialaccount/authentication_error.html:10 msgid "" "An error occurred while attempting to login via your social network account." msgstr "" "Det skjedde en feil under forsøket på å logge inn via din " "sosialenettverkskonto." #: templates/socialaccount/connections.html:5 #: templates/socialaccount/connections.html:8 msgid "Account Connections" msgstr "Kontotilkoblinger" #: templates/socialaccount/connections.html:11 msgid "" "You can sign in to your account using any of the following third party " "accounts:" msgstr "" "Du kan logge inn på din konto ved å bruke en av følgende tredjeparts kontoer:" #: templates/socialaccount/connections.html:43 msgid "" "You currently have no social network accounts connected to this account." msgstr "Du har for tiden ingen sosialenettverkskontoer tilkoblet din konto." #: templates/socialaccount/connections.html:46 msgid "Add a 3rd Party Account" msgstr "Legg til en tredjeparts konto" #: templates/socialaccount/login_cancelled.html:5 #: templates/socialaccount/login_cancelled.html:9 msgid "Login Cancelled" msgstr "Innlogging kansellert" #: templates/socialaccount/login_cancelled.html:13 #, python-format msgid "" "You decided to cancel logging in to our site using one of your existing " "accounts. If this was a mistake, please proceed to sign in." msgstr "" "Du bestemt deg for å kansellere innlogging til siden ved å bruke en av dine " "eksisterende kontoer. Om dette var ved en feil, vennligst fortsett til innloggingen." #: templates/socialaccount/messages/account_connected.txt:2 msgid "The social account has been connected." msgstr "Sosialkontoen har blitt tilknytet." #: templates/socialaccount/messages/account_connected_other.txt:2 msgid "The social account is already connected to a different account." msgstr "Sosialkontoen er allerede tilknytet til en annen konto." #: templates/socialaccount/messages/account_disconnected.txt:2 msgid "The social account has been disconnected." msgstr "Sosialkontoen er blitt frakoblet." #: templates/socialaccount/signup.html:10 #, python-format msgid "" "You are about to use your %(provider_name)s account to login to\n" "%(site_name)s. As a final step, please complete the following form:" msgstr "" "Du er på vei til å bruke din %(provider_name)s konto for å logge inn på\n" "%(site_name)s. Som et siste steg, vennligst fullfør følgende skjema:" django-allauth-0.35.0/allauth/locale/ky/0000755000076500000240000000000013235133532020764 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/ky/LC_MESSAGES/0000755000076500000240000000000013235133532022551 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/ky/LC_MESSAGES/django.mo0000644000076500000240000004414513235132043024354 0ustar pennersrstaff00000000000000L ` /a 7 \ 6& -]       I wAL" AK[c&z9%p6_28:9s  ' 8Y^mv-"l7B"~ ! !.6?GV]m#2-A6Q@%b&)?;#Uy?<0/ `k4t2\dPE:HjSq*$, -! O _ i q }      ! !!! !!,!1!@!P!c!|!!! !!!!.!l!<k#I##R$O$+%!4%"V%y%% % %Q%2&c&@C'F''' (,(JF((`( )()>)Z),p))q*d*ga+g+ 1,<,\,v,&,N,@-@A--- -%--,.N..5}.3.4./l/1051M1-\1;111/1%2C2 ]2 h2s222!2N2="3U`3:3W3aI4`4 5A65C61y6V6]77`7*7r7i6889s:;4;ZP;+;;A;0<UB<<=>-?3@_@AqAKB7NC#CFCKC\=D-DODE8EME^ExEEEEEEF 8F CFNFhFoFtFFFFF!F#G0)G6ZG)G G.GGGH?%H:bREsBeU% , N ?HaL 'ClwkV8dg&-XA5MY06S9/Q>\!O^7.q;"n}I_G<)PW@t| Dp4=K$xrfyzh(iju#Fm1] 3o[TJZ+v`c*~{2"oauth_token" (OAuth1) or access token (OAuth2)"oauth_token_secret" (OAuth1) or refresh token (OAuth2)Note: you can still change your e-mail address.A user is already registered with this e-mail address.API secret, client secret, or consumer secretAccountAccount ConnectionsAccount InactiveAccountsAdd E-mailAdd E-mail AddressAdd a 3rd Party AccountAlready have an account? Then please sign in.An account already exists with this e-mail address. Please sign in to that account first, then connect your %s account.An error occurred while attempting to login via your social network account.App ID, or consumer keyAre you sure you want to sign out?Bad TokenChange PasswordConfirmConfirm E-mail AddressConfirmation e-mail sent to %(email)s.Current PasswordDo you really want to remove the selected e-mail address?E-mailE-mail (optional)E-mail AddressesE-mail addressForgot Password?Forgotten your password? Enter your e-mail address below, and we'll send you an e-mail allowing you to reset it.If you have not created an account yet, then please sign up first.In case you forgot, your username is %(username)s.Invalid response while obtaining access token from "%s".Invalid response while obtaining request token from "%s".KeyLogin CancelledMake PrimaryNew PasswordNew Password (again)No access to private resources at "%s".No access token saved for "%s".No request token saved for "%s".NoteOpenID Sign InPasswordPassword (again)Password ResetPassword Reset E-mailPassword must be a minimum of {0} characters.Password successfully changed.Password successfully set.Please Confirm Your E-mail AddressPlease confirm that %(email)s is an e-mail address for user %(user_display)s.Please contact us if you have any trouble resetting your password.Please sign in with one of your existing third party accounts. Or, sign up for a %(site_name)s account and sign in below:Please type your current password.PrimaryPrimary e-mail address set.Re-send VerificationRemember MeRemoveRemoved e-mail address %(email)s.Reset My PasswordSet PasswordSign InSign OutSign UpSign Up ClosedSignupSocial AccountsSocial Network Login FailureSuccessfully signed in as %(name)s.Thank you for using %(site_name)s! %(site_domain)sThank you from %(site_name)s! %(site_domain)sThe e-mail address and/or password you specified are not correct.The e-mail address is not assigned to any user accountThe following e-mail addresses are associated with your account:The password reset link was invalid, possibly because it has already been used. Please request a new password reset.The password reset token was invalid.The social account has been connected.The social account has been disconnected.The social account is already connected to a different account.The username and/or password you specified are not correct.This account is currently inactive.This account is inactive.This e-mail address is already associated with another account.This e-mail address is already associated with this account.This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request.This part of the site requires us to verify that you are who you claim to be. For this purpose, we require that you verify ownership of your e-mail address. Too many failed login attempts. Try again later.UnverifiedUsernameUsername can not be used. Please use other username.Username or e-mailVerifiedVerify Your E-mail AddressWarning:We are sorry, but the sign up is currently closed.We have sent an e-mail to you for verification. Please click on the link inside this e-mail. Please contact us if you do not receive it within a few minutes.We have sent an e-mail to you for verification. Follow the link provided to finalize the signup process. Please contact us if you do not receive it within a few minutes.We have sent you an e-mail. Please contact us if you do not receive it within a few minutes.You are about to use your %(provider_name)s account to login to %(site_name)s. As a final step, please complete the following form:You can sign in to your account using any of the following third party accounts:You cannot remove your primary e-mail address (%(email)s).You currently do not have any e-mail address set up. You should really add an e-mail address so you can receive notifications, reset your password, etc.You currently have no social network accounts connected to this account.You decided to cancel logging in to our site using one of your existing accounts. If this was a mistake, please proceed to sign in.You have confirmed %(email)s.You have signed out.You must type the same password each time.Your account has no password set up.Your account has no verified e-mail address.Your password is now changed.Your primary e-mail address must be verified.change passwordclient idcreateddate joinede-mail addressemail addressemail addressesemail confirmationemail confirmationsexpires atextra datafield labelLoginkeylast loginnameorprimaryprovidersecret keysentsocial accountsocial accountssocial applicationsocial application tokensocial application tokenssocial applicationstokentoken secretuiduserverifiedyou are already logged in as %(user_display)s.Project-Id-Version: PACKAGE VERSION Report-Msgid-Bugs-To: POT-Creation-Date: 2018-02-02 12:55-0600 PO-Revision-Date: 2016-07-20 22:24+0600 Last-Translator: Murat Jumashev Language-Team: LANGUAGE Language: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Generator: Poedit 1.5.4 "oauth_token" (OAuth1) же жетки токени (OAuth2)"oauth_token_secret" (OAuth1) же жаңыртуу токени (OAuth2)Эскертүү: эмейл дарегиңизди дагы деле өзгөртсөңүз болот.Мындай эмейл менен катталган колдонуучу бар.API, кардар же керектөөчүнүн жашыруун ачкычыЭсепЭсеп байланыштарыЭсеп активдүү эмесЭсептерЭмейл кошууЭмейл дарек кошуу3-тарап эсеп кошууЭсебиңиз барбы? Анда кириңиз.Бул эмейл менен башка эсеп катталган. Ошол эсеп аркылуу кирип, %s эсебиңизди туташтырып алыңыз.Социалдык тармак эсебиңиз аркылуу кирүүдө ката кетти.Колдонмо ID'си, же керектөөчү ачкычыСиз чыгып жатканыңызды дурустайсызбы?Токен туура эмесКупуяны өзгөртүүЫрастооЭмейл даректи ырастаңызЫрастоо эмейли %(email)s дарегине жөнөтүлдү.Азыркы купуяТандалган эмейл даректи алып салууну дурустайсызбы?ЭмейлЭмейл (милдеттүү эмес)Эмейл даректерЭмейл дарекКупуяңызды унуттуңузбу?Купуяңызды унуттуңузбу? Эмейл дарегиңизди төмөндө жазсаңыз, биз сизге кат жөнөтүп, аны жаңыртканга жардам беребиз.Эгерде сиз эсеп түзө элек болсоңуз, анда биринчи катталыңызЭстей албай жатсаңыз, сиздин колдонуучу атыңыз %(username)s."%s" тарабынан жетки токенин алууда туура эмес жооп келди."%s" тарабынан сурам токенин алууда туура эмес жооп келди.АчкычКирүү токтотулдуНегизги кылууЖаңы купуяЖаңы купуя (кайрадан)"%s" тарабындагы жеке ресурстарга жетки жок."%s" үчүн жетки токени сакталган жок."%s" үчүн сурам токени сакталган жок.ЭскертүүOpenID менен кирүүКупуяКупуя (дагы бир жолу)Купуяны жаңыртууКупуяны жаңыртуу эмейлиКупуя жок дегенде {0} белгиден турушу керек.Купуя ийгиликтүү өзгөртүлдү.Купуя ийгиликтүү орнотулду.Эмейл дарегиңизди ырастаңыз%(email)s деген эмейл дарек %(user_display)s колдонуучусуна таандык экенин ырастаңыз.Купуяны жаңыртууда суроолор пайда болсо, бизге кайрылыңыз.Тышкаркы кызматтарда катталган эсебиңиз аркылуу кириңиз. Же, %(site_name)s сайтына катталып "төмөн жактан кириңиз:Учурдагы купуяңызды жазыңыз.НегизгиНегизги эмейл орнотулду.Дурустоо катын кайрадан жиберүүМени эстеп калАлып салуу%(email)s дарегин алып салдык.Купуямды жаңыртКупуя орнотууКирүүЧыгууКатталууКатталуу жабыкКатталууСоциалдык эсептерСоциалдык тармак аркылуу кирүү ийгиликсиз%(name)s аты менен ийгиликтүү кирдик.%(site_name)s сайтын колдонгонуңузга алкыш! %(site_domain)s%(site_name)s сайтынан алкыш! %(site_domain)sСиз берген эмейл дарек жана/же купуя туура эмес.Эмейл дарек эч бир колдонуучу эсебине байланган эмесТөмөнкү эмейл даректер сиздин эсебиңизге байланган:Купуя жаңыртуу шилтемеси туура эмес экен, ал мурун колдонулса керек. Купуяны жаңыртуу сурамын кайрадан жөнөтүңүз.Купуяны жаңыртуу токени туура эмес.Социалдык эсеп туташтырылды.Социалдык эсеп ажыратылды.Бул социалдык эсеп башка эсепке туташтырылган.Сиз берген колдонуучу аты жана/же купуя туура эмес.Бул эсеп учурда активдүү эмес.Бул эсеп активдүү эмес.Бул эмейл дарек башка бир эсеп менен буга чейин туташтырылган.Бул эмейл дарек ушул эсеп менен буга чейин туташтырылган.Бул эмейлди ырастоо шилтемесинин мөөнөтү өтүп кеткен же ал туура эмес. эмейлди ырастоо сурамын кайрадан жөнөтүңүз.Сайттын бул бөлүгүнө өтүш үчүн сиз чын эле сиз айткан адам экендиңизди такташыбыз керек. Ал үчүн эмейл дарек сизге таандык экенин дурусташыңыз керек.Өтө көп жолу кирүү аракеттери жасалды. Кайрадан аракеттениңиз.Дурустала элекКолдонуучу атыБул атты колдонуу мүмкүн эмес. Башкасын тандаңыз.Колдонуучу аты же эмейлДурусталганЭмейл дарегиңизди дурустап бериңизЭскертүү:Кечирим сурайбых, бирок учурда катталуу жабык.Биз сизге кат жөнөттүк, дурустоо үчүн. Ичинде берилген шилтемени басыңыз. Эгерде кат бир нече мүнөттө келбей калса, бизге кайрылыңыз.Биз эмейлиңизди дурустоо үчүн кат жөнөттүк. Ошондо берилген шилтеме аркылуу өтүп, каттоодон өтүңүз. Кат бир нече мүнөттө келбесе, бизге кайрылыңыз.Биз сизге кат жөнөттүк. Бир нече мүнөттүн ичинде келбей калса бизге кайрылыңыз.Сиз азыр %(provider_name)s эсебиңизди колдонуп, %(site_name)s сайтына кирейин деп турасыз. Акыркы кадам катары кийинки калыпты толтуруп коюңузду суранабыз :Эсебиңизге кийинки үчүнчү тарап эсептердин бирин колдонуп кирсеңиз болот:Негизги эмейл даректи алып салуу мүмкүн эмес (%(email)s).Сизде азыр бир дагы эмейл катталган эмес. Билдирүүлөрдү алуу, купуяны жаңыртуу ж.б. үчүн каттап коюңуз.Азырынча эсебиңизге социалдык тармак эсептер байланган эмес.Эсептериңизин бирөөсүн колдонуп сайтыбызга кирүүдөн баш тарттыңыз. Аны байкабастан кылып алсаңыз, кирүүнү улантсаңыз болот.Сиз %(email)s дарегин ырастадыңыз.Сиз чыгып кеттиңиз.Сиз ошол эле купуяны кайрадан териңиз.Сиздин эсебиңизде купуя орнотулган эмес.Сиздин эсебиңизде дурусталган эмейл даректер жок.Купуяңыз эми өзгөртүлдү.Негизги эмейл дарегиңиз дурусталышы керек.купуяны өзгөртүүкардар id'ситүзүлгөнкошулган күнүэмейл дарекэмейл дарекэмейл даректерэмейл ырастооэмейл ырастоолормөөнөтү аяктайткошумча маалыматЛогиначкычакыркы киришиатыженегизгипровайдержашыруун ачкычжөнөтүлгөнсоциалдык эсепсоциалдык эсептерсоциалдык колдонмосоциалдык колдонмо токенисоциалдык колдонмо токендерисоциалдык колдонмолортокентокендин жашыруун ачкычыuidколдонуучудурусталгансиз %(user_display)s катары кирип турасыз.django-allauth-0.35.0/allauth/locale/ky/LC_MESSAGES/django.po0000644000076500000240000007145313235132037024364 0ustar pennersrstaff00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-02-02 12:55-0600\n" "PO-Revision-Date: 2016-07-20 22:24+0600\n" "Last-Translator: Murat Jumashev \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 1.5.4\n" #: account/adapter.py:45 msgid "Username can not be used. Please use other username." msgstr "Бул атты колдонуу мүмкүн эмес. Башкасын тандаңыз." #: account/adapter.py:49 msgid "Too many failed login attempts. Try again later." msgstr "Өтө көп жолу кирүү аракеттери жасалды. Кайрадан аракеттениңиз." #: account/adapter.py:51 msgid "A user is already registered with this e-mail address." msgstr "Мындай эмейл менен катталган колдонуучу бар." #: account/adapter.py:288 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "Купуя жок дегенде {0} белгиден турушу керек." #: account/apps.py:7 msgid "Accounts" msgstr "Эсептер" #: account/forms.py:61 account/forms.py:398 msgid "You must type the same password each time." msgstr "Сиз ошол эле купуяны кайрадан териңиз." #: account/forms.py:91 account/forms.py:365 account/forms.py:476 msgid "Password" msgstr "Купуя" #: account/forms.py:92 msgid "Remember Me" msgstr "Мени эстеп кал" #: account/forms.py:98 msgid "This account is currently inactive." msgstr "Бул эсеп учурда активдүү эмес." #: account/forms.py:101 msgid "The e-mail address and/or password you specified are not correct." msgstr "Сиз берген эмейл дарек жана/же купуя туура эмес." #: account/forms.py:104 msgid "The username and/or password you specified are not correct." msgstr "Сиз берген колдонуучу аты жана/же купуя туура эмес." #: account/forms.py:113 account/forms.py:268 account/forms.py:426 #: account/forms.py:495 msgid "E-mail address" msgstr "Эмейл дарек" #: account/forms.py:115 account/forms.py:301 account/forms.py:421 #: account/forms.py:490 msgid "E-mail" msgstr "Эмейл" #: account/forms.py:120 account/forms.py:123 account/forms.py:260 #: account/forms.py:264 msgid "Username" msgstr "Колдонуучу аты" #: account/forms.py:130 msgid "Username or e-mail" msgstr "Колдонуучу аты же эмейл" #: account/forms.py:133 msgctxt "field label" msgid "Login" msgstr "Логин" #: account/forms.py:292 #, fuzzy #| msgid "E-mail (optional)" msgid "E-mail (again)" msgstr "Эмейл (милдеттүү эмес)" #: account/forms.py:296 #, fuzzy #| msgid "email confirmation" msgid "E-mail address confirmation" msgstr "эмейл ырастоо" #: account/forms.py:304 msgid "E-mail (optional)" msgstr "Эмейл (милдеттүү эмес)" #: account/forms.py:345 #, fuzzy #| msgid "You must type the same password each time." msgid "You must type the same email each time." msgstr "Сиз ошол эле купуяны кайрадан териңиз." #: account/forms.py:368 account/forms.py:477 msgid "Password (again)" msgstr "Купуя (дагы бир жолу)" #: account/forms.py:432 msgid "This e-mail address is already associated with this account." msgstr "Бул эмейл дарек ушул эсеп менен буга чейин туташтырылган." #: account/forms.py:434 msgid "This e-mail address is already associated with another account." msgstr "Бул эмейл дарек башка бир эсеп менен буга чейин туташтырылган." #: account/forms.py:456 msgid "Current Password" msgstr "Азыркы купуя" #: account/forms.py:457 account/forms.py:546 msgid "New Password" msgstr "Жаңы купуя" #: account/forms.py:458 account/forms.py:547 msgid "New Password (again)" msgstr "Жаңы купуя (кайрадан)" #: account/forms.py:466 msgid "Please type your current password." msgstr "Учурдагы купуяңызды жазыңыз." #: account/forms.py:504 msgid "The e-mail address is not assigned to any user account" msgstr "Эмейл дарек эч бир колдонуучу эсебине байланган эмес" #: account/forms.py:568 msgid "The password reset token was invalid." msgstr "Купуяны жаңыртуу токени туура эмес." #: account/models.py:23 msgid "user" msgstr "колдонуучу" #: account/models.py:27 account/models.py:81 msgid "e-mail address" msgstr "эмейл дарек" #: account/models.py:28 msgid "verified" msgstr "дурусталган" #: account/models.py:29 msgid "primary" msgstr "негизги" #: account/models.py:34 msgid "email address" msgstr "эмейл дарек" #: account/models.py:35 msgid "email addresses" msgstr "эмейл даректер" #: account/models.py:83 msgid "created" msgstr "түзүлгөн" #: account/models.py:85 msgid "sent" msgstr "жөнөтүлгөн" #: account/models.py:86 socialaccount/models.py:55 msgid "key" msgstr "ачкыч" #: account/models.py:91 msgid "email confirmation" msgstr "эмейл ырастоо" #: account/models.py:92 msgid "email confirmations" msgstr "эмейл ырастоолор" #: socialaccount/adapter.py:26 #, python-format msgid "" "An account already exists with this e-mail address. Please sign in to that " "account first, then connect your %s account." msgstr "" "Бул эмейл менен башка эсеп катталган. Ошол эсеп аркылуу кирип, %s эсебиңизди " "туташтырып алыңыз." #: socialaccount/adapter.py:131 msgid "Your account has no password set up." msgstr "Сиздин эсебиңизде купуя орнотулган эмес." #: socialaccount/adapter.py:138 msgid "Your account has no verified e-mail address." msgstr "Сиздин эсебиңизде дурусталган эмейл даректер жок." #: socialaccount/apps.py:7 msgid "Social Accounts" msgstr "Социалдык эсептер" #: socialaccount/models.py:43 socialaccount/models.py:77 msgid "provider" msgstr "провайдер" #: socialaccount/models.py:46 msgid "name" msgstr "аты" #: socialaccount/models.py:48 msgid "client id" msgstr "кардар id'си" #: socialaccount/models.py:50 msgid "App ID, or consumer key" msgstr "Колдонмо ID'си, же керектөөчү ачкычы" #: socialaccount/models.py:51 msgid "secret key" msgstr "жашыруун ачкыч" #: socialaccount/models.py:53 msgid "API secret, client secret, or consumer secret" msgstr "API, кардар же керектөөчүнүн жашыруун ачкычы" #: socialaccount/models.py:58 msgid "Key" msgstr "Ачкыч" #: socialaccount/models.py:66 msgid "social application" msgstr "социалдык колдонмо" #: socialaccount/models.py:67 msgid "social applications" msgstr "социалдык колдонмолор" #: socialaccount/models.py:96 msgid "uid" msgstr "uid" #: socialaccount/models.py:98 msgid "last login" msgstr "акыркы кириши" #: socialaccount/models.py:100 msgid "date joined" msgstr "кошулган күнү" #: socialaccount/models.py:102 msgid "extra data" msgstr "кошумча маалымат" #: socialaccount/models.py:106 msgid "social account" msgstr "социалдык эсеп" #: socialaccount/models.py:107 msgid "social accounts" msgstr "социалдык эсептер" #: socialaccount/models.py:133 msgid "token" msgstr "токен" #: socialaccount/models.py:135 msgid "\"oauth_token\" (OAuth1) or access token (OAuth2)" msgstr "\"oauth_token\" (OAuth1) же жетки токени (OAuth2)" #: socialaccount/models.py:138 msgid "token secret" msgstr "токендин жашыруун ачкычы" #: socialaccount/models.py:140 msgid "\"oauth_token_secret\" (OAuth1) or refresh token (OAuth2)" msgstr "\"oauth_token_secret\" (OAuth1) же жаңыртуу токени (OAuth2)" #: socialaccount/models.py:142 msgid "expires at" msgstr "мөөнөтү аяктайт" #: socialaccount/models.py:146 msgid "social application token" msgstr "социалдык колдонмо токени" #: socialaccount/models.py:147 msgid "social application tokens" msgstr "социалдык колдонмо токендери" #: socialaccount/providers/douban/views.py:36 msgid "Invalid profile data" msgstr "" #: socialaccount/providers/oauth/client.py:78 #, python-format msgid "Invalid response while obtaining request token from \"%s\"." msgstr "\"%s\" тарабынан сурам токенин алууда туура эмес жооп келди." #: socialaccount/providers/oauth/client.py:109 #, python-format msgid "Invalid response while obtaining access token from \"%s\"." msgstr "\"%s\" тарабынан жетки токенин алууда туура эмес жооп келди." #: socialaccount/providers/oauth/client.py:128 #, python-format msgid "No request token saved for \"%s\"." msgstr "\"%s\" үчүн сурам токени сакталган жок." #: socialaccount/providers/oauth/client.py:177 #, python-format msgid "No access token saved for \"%s\"." msgstr "\"%s\" үчүн жетки токени сакталган жок." #: socialaccount/providers/oauth/client.py:197 #, python-format msgid "No access to private resources at \"%s\"." msgstr "\"%s\" тарабындагы жеке ресурстарга жетки жок." #: templates/account/account_inactive.html:5 #: templates/account/account_inactive.html:8 msgid "Account Inactive" msgstr "Эсеп активдүү эмес" #: templates/account/account_inactive.html:10 msgid "This account is inactive." msgstr "Бул эсеп активдүү эмес." #: templates/account/email.html:5 msgid "Account" msgstr "Эсеп" #: templates/account/email.html:8 msgid "E-mail Addresses" msgstr "Эмейл даректер" #: templates/account/email.html:10 msgid "The following e-mail addresses are associated with your account:" msgstr "Төмөнкү эмейл даректер сиздин эсебиңизге байланган:" #: templates/account/email.html:24 msgid "Verified" msgstr "Дурусталган" #: templates/account/email.html:26 msgid "Unverified" msgstr "Дурустала элек" #: templates/account/email.html:28 msgid "Primary" msgstr "Негизги" #: templates/account/email.html:34 msgid "Make Primary" msgstr "Негизги кылуу" #: templates/account/email.html:35 msgid "Re-send Verification" msgstr "Дурустоо катын кайрадан жиберүү" #: templates/account/email.html:36 templates/socialaccount/connections.html:35 msgid "Remove" msgstr "Алып салуу" #: templates/account/email.html:43 msgid "Warning:" msgstr "Эскертүү:" #: templates/account/email.html:43 msgid "" "You currently do not have any e-mail address set up. You should really add " "an e-mail address so you can receive notifications, reset your password, etc." msgstr "" "Сизде азыр бир дагы эмейл катталган эмес. Билдирүүлөрдү алуу, купуяны " "жаңыртуу ж.б. үчүн каттап коюңуз." #: templates/account/email.html:48 msgid "Add E-mail Address" msgstr "Эмейл дарек кошуу" #: templates/account/email.html:53 msgid "Add E-mail" msgstr "Эмейл кошуу" #: templates/account/email.html:62 msgid "Do you really want to remove the selected e-mail address?" msgstr "Тандалган эмейл даректи алып салууну дурустайсызбы?" #: templates/account/email/email_confirmation_message.txt:1 #, fuzzy, python-format #| msgid "" #| "Hello from %(site_name)s!\n" #| "\n" #| "You're receiving this e-mail because user %(user_display)s at " #| "%(site_domain)s has given yours as an e-mail address to connect their " #| "account.\n" #| "\n" #| "To confirm this is correct, go to %(activate_url)s\n" msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because user %(user_display)s has given yours " "as an e-mail address to connect their account.\n" "\n" "To confirm this is correct, go to %(activate_url)s\n" msgstr "" "%(site_name)s сайтынан салам!\n" "\n" "%(user_display)s деген колдонуучу %(site_domain)s деген сайттан сиздин эмейл " "дарегиңизди өзүнүн эсебине туташтырыш үчүн жазгандыктан,\n" "сиз ушул эмейл катты алып жатасыз.\n" "\n" "Бул туура десеңиз, анда %(activate_url)s аркылуу өтүп, ырастаңыз\n" #: templates/account/email/email_confirmation_message.txt:7 #, python-format msgid "" "Thank you from %(site_name)s!\n" "%(site_domain)s" msgstr "" "%(site_name)s сайтынан алкыш!\n" "%(site_domain)s" #: templates/account/email/email_confirmation_subject.txt:3 msgid "Please Confirm Your E-mail Address" msgstr "Эмейл дарегиңизди ырастаңыз" #: templates/account/email/password_reset_key_message.txt:1 #, fuzzy, python-format #| msgid "" #| "Hello from %(site_name)s!\n" #| "\n" #| "You're receiving this e-mail because you or someone else has requested a " #| "password for your user account at %(site_domain)s.\n" #| "It can be safely ignored if you did not request a password reset. Click " #| "the link below to reset your password." msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because you or someone else has requested a " "password for your user account.\n" "It can be safely ignored if you did not request a password reset. Click the " "link below to reset your password." msgstr "" "%(site_name)s сайтынан салам!\n" "\n" "Сиз бул катты %(site_domain)s сайтынан кимдир бирөө эсебиңиздин купуясын " "жаңыртуу сурамын жөнөткөндүктөн алып жататсыз.\n" "Эгерде сурамды сиз жөнөтпөгөн болсоңуз, бул катка көңүл бурбай эле коюңуз. " "Купуяны жаңыртуу үчүн төмөндөгү шилтемени басыңыз." #: templates/account/email/password_reset_key_message.txt:8 #, python-format msgid "In case you forgot, your username is %(username)s." msgstr "Эстей албай жатсаңыз, сиздин колдонуучу атыңыз %(username)s." #: templates/account/email/password_reset_key_message.txt:10 #, python-format msgid "" "Thank you for using %(site_name)s!\n" "%(site_domain)s" msgstr "" "%(site_name)s сайтын колдонгонуңузга алкыш!\n" "%(site_domain)s" #: templates/account/email/password_reset_key_subject.txt:3 msgid "Password Reset E-mail" msgstr "Купуяны жаңыртуу эмейли" #: templates/account/email_confirm.html:6 #: templates/account/email_confirm.html:10 msgid "Confirm E-mail Address" msgstr "Эмейл даректи ырастаңыз" #: templates/account/email_confirm.html:16 #, python-format msgid "" "Please confirm that %(email)s is an e-mail " "address for user %(user_display)s." msgstr "" "%(email)s деген эмейл дарек " "%(user_display)s колдонуучусуна таандык экенин ырастаңыз." #: templates/account/email_confirm.html:20 msgid "Confirm" msgstr "Ырастоо" #: templates/account/email_confirm.html:27 #, python-format msgid "" "This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request." msgstr "" "Бул эмейлди ырастоо шилтемесинин мөөнөтү өтүп кеткен же ал туура эмес. эмейлди ырастоо сурамын кайрадан жөнөтүңүз." #: templates/account/login.html:6 templates/account/login.html:10 #: templates/account/login.html:43 msgid "Sign In" msgstr "Кирүү" #: templates/account/login.html:15 #, python-format msgid "" "Please sign in with one\n" "of your existing third party accounts. Or, sign " "up\n" "for a %(site_name)s account and sign in below:" msgstr "" "Тышкаркы кызматтарда катталган\n" "эсебиңиз аркылуу кириңиз. Же, %(site_name)s \n" "сайтына катталып\n" "\"төмөн жактан кириңиз:" #: templates/account/login.html:25 msgid "or" msgstr "же" #: templates/account/login.html:32 #, python-format msgid "" "If you have not created an account yet, then please\n" "sign up first." msgstr "" "Эгерде сиз эсеп түзө элек болсоңуз, анда\n" "биринчи катталыңыз" #: templates/account/login.html:42 msgid "Forgot Password?" msgstr "Купуяңызды унуттуңузбу?" #: templates/account/logout.html:5 templates/account/logout.html:8 #: templates/account/logout.html:17 msgid "Sign Out" msgstr "Чыгуу" #: templates/account/logout.html:10 msgid "Are you sure you want to sign out?" msgstr "Сиз чыгып жатканыңызды дурустайсызбы?" #: templates/account/messages/cannot_delete_primary_email.txt:2 #, python-format msgid "You cannot remove your primary e-mail address (%(email)s)." msgstr "Негизги эмейл даректи алып салуу мүмкүн эмес (%(email)s)." #: templates/account/messages/email_confirmation_sent.txt:2 #, python-format msgid "Confirmation e-mail sent to %(email)s." msgstr "Ырастоо эмейли %(email)s дарегине жөнөтүлдү." #: templates/account/messages/email_confirmed.txt:2 #, python-format msgid "You have confirmed %(email)s." msgstr "Сиз %(email)s дарегин ырастадыңыз." #: templates/account/messages/email_deleted.txt:2 #, python-format msgid "Removed e-mail address %(email)s." msgstr "%(email)s дарегин алып салдык." #: templates/account/messages/logged_in.txt:4 #, python-format msgid "Successfully signed in as %(name)s." msgstr "%(name)s аты менен ийгиликтүү кирдик." #: templates/account/messages/logged_out.txt:2 msgid "You have signed out." msgstr "Сиз чыгып кеттиңиз." #: templates/account/messages/password_changed.txt:2 msgid "Password successfully changed." msgstr "Купуя ийгиликтүү өзгөртүлдү." #: templates/account/messages/password_set.txt:2 msgid "Password successfully set." msgstr "Купуя ийгиликтүү орнотулду." #: templates/account/messages/primary_email_set.txt:2 msgid "Primary e-mail address set." msgstr "Негизги эмейл орнотулду." #: templates/account/messages/unverified_primary_email.txt:2 msgid "Your primary e-mail address must be verified." msgstr "Негизги эмейл дарегиңиз дурусталышы керек." #: templates/account/password_change.html:5 #: templates/account/password_change.html:8 #: templates/account/password_change.html:13 #: templates/account/password_reset_from_key.html:4 #: templates/account/password_reset_from_key.html:7 #: templates/account/password_reset_from_key_done.html:4 #: templates/account/password_reset_from_key_done.html:7 msgid "Change Password" msgstr "Купуяны өзгөртүү" #: templates/account/password_reset.html:6 #: templates/account/password_reset.html:10 #: templates/account/password_reset_done.html:6 #: templates/account/password_reset_done.html:9 msgid "Password Reset" msgstr "Купуяны жаңыртуу" #: templates/account/password_reset.html:15 msgid "" "Forgotten your password? Enter your e-mail address below, and we'll send you " "an e-mail allowing you to reset it." msgstr "" "Купуяңызды унуттуңузбу? Эмейл дарегиңизди төмөндө жазсаңыз, биз сизге кат " "жөнөтүп, аны жаңыртканга жардам беребиз." #: templates/account/password_reset.html:20 msgid "Reset My Password" msgstr "Купуямды жаңырт" #: templates/account/password_reset.html:23 msgid "Please contact us if you have any trouble resetting your password." msgstr "Купуяны жаңыртууда суроолор пайда болсо, бизге кайрылыңыз." #: templates/account/password_reset_done.html:15 msgid "" "We have sent you an e-mail. Please contact us if you do not receive it " "within a few minutes." msgstr "" "Биз сизге кат жөнөттүк. Бир нече мүнөттүн ичинде келбей калса бизге " "кайрылыңыз." #: templates/account/password_reset_from_key.html:7 msgid "Bad Token" msgstr "Токен туура эмес" #: templates/account/password_reset_from_key.html:11 #, python-format msgid "" "The password reset link was invalid, possibly because it has already been " "used. Please request a new password reset." msgstr "" "Купуя жаңыртуу шилтемеси туура эмес экен, ал мурун колдонулса керек. Купуяны жаңыртуу сурамын кайрадан жөнөтүңүз." #: templates/account/password_reset_from_key.html:17 msgid "change password" msgstr "купуяны өзгөртүү" #: templates/account/password_reset_from_key.html:20 #: templates/account/password_reset_from_key_done.html:8 msgid "Your password is now changed." msgstr "Купуяңыз эми өзгөртүлдү." #: templates/account/password_set.html:5 templates/account/password_set.html:8 #: templates/account/password_set.html:13 msgid "Set Password" msgstr "Купуя орнотуу" #: templates/account/signup.html:5 templates/socialaccount/signup.html:5 msgid "Signup" msgstr "Катталуу" #: templates/account/signup.html:8 templates/account/signup.html:18 #: templates/socialaccount/signup.html:8 templates/socialaccount/signup.html:19 msgid "Sign Up" msgstr "Катталуу" #: templates/account/signup.html:10 #, python-format msgid "" "Already have an account? Then please sign in." msgstr "Эсебиңиз барбы? Анда кириңиз." #: templates/account/signup_closed.html:5 #: templates/account/signup_closed.html:8 msgid "Sign Up Closed" msgstr "Катталуу жабык" #: templates/account/signup_closed.html:10 msgid "We are sorry, but the sign up is currently closed." msgstr "Кечирим сурайбых, бирок учурда катталуу жабык." #: templates/account/snippets/already_logged_in.html:5 msgid "Note" msgstr "Эскертүү" #: templates/account/snippets/already_logged_in.html:5 #, python-format msgid "you are already logged in as %(user_display)s." msgstr "сиз %(user_display)s катары кирип турасыз." #: templates/account/verification_sent.html:5 #: templates/account/verification_sent.html:8 #: templates/account/verified_email_required.html:5 #: templates/account/verified_email_required.html:8 msgid "Verify Your E-mail Address" msgstr "Эмейл дарегиңизди дурустап бериңиз" #: templates/account/verification_sent.html:10 msgid "" "We have sent an e-mail to you for verification. Follow the link provided to " "finalize the signup process. Please contact us if you do not receive it " "within a few minutes." msgstr "" "Биз эмейлиңизди дурустоо үчүн кат жөнөттүк. Ошондо берилген шилтеме аркылуу " "өтүп, каттоодон өтүңүз. Кат бир нече мүнөттө келбесе, бизге кайрылыңыз." #: templates/account/verified_email_required.html:12 msgid "" "This part of the site requires us to verify that\n" "you are who you claim to be. For this purpose, we require that you\n" "verify ownership of your e-mail address. " msgstr "" "Сайттын бул бөлүгүнө өтүш үчүн сиз чын эле сиз айткан \n" "адам экендиңизди такташыбыз керек. Ал үчүн эмейл\n" "дарек сизге таандык экенин дурусташыңыз керек." #: templates/account/verified_email_required.html:16 msgid "" "We have sent an e-mail to you for\n" "verification. Please click on the link inside this e-mail. Please\n" "contact us if you do not receive it within a few minutes." msgstr "" "Биз сизге кат жөнөттүк, дурустоо үчүн.\n" "Ичинде берилген шилтемени басыңыз. Эгерде\n" "кат бир нече мүнөттө келбей калса, бизге кайрылыңыз." #: templates/account/verified_email_required.html:20 #, python-format msgid "" "Note: you can still change your e-" "mail address." msgstr "" "Эскертүү: эмейл дарегиңизди дагы деле өзгөртсөңүз болот." #: templates/openid/login.html:9 msgid "OpenID Sign In" msgstr "OpenID менен кирүү" #: templates/socialaccount/authentication_error.html:5 #: templates/socialaccount/authentication_error.html:8 msgid "Social Network Login Failure" msgstr "Социалдык тармак аркылуу кирүү ийгиликсиз" #: templates/socialaccount/authentication_error.html:10 msgid "" "An error occurred while attempting to login via your social network account." msgstr "Социалдык тармак эсебиңиз аркылуу кирүүдө ката кетти." #: templates/socialaccount/connections.html:5 #: templates/socialaccount/connections.html:8 msgid "Account Connections" msgstr "Эсеп байланыштары" #: templates/socialaccount/connections.html:11 msgid "" "You can sign in to your account using any of the following third party " "accounts:" msgstr "" "Эсебиңизге кийинки үчүнчү тарап эсептердин бирин колдонуп кирсеңиз болот:" #: templates/socialaccount/connections.html:43 msgid "" "You currently have no social network accounts connected to this account." msgstr "Азырынча эсебиңизге социалдык тармак эсептер байланган эмес." #: templates/socialaccount/connections.html:46 msgid "Add a 3rd Party Account" msgstr "3-тарап эсеп кошуу" #: templates/socialaccount/login_cancelled.html:5 #: templates/socialaccount/login_cancelled.html:9 msgid "Login Cancelled" msgstr "Кирүү токтотулду" #: templates/socialaccount/login_cancelled.html:13 #, python-format msgid "" "You decided to cancel logging in to our site using one of your existing " "accounts. If this was a mistake, please proceed to sign in." msgstr "" "Эсептериңизин бирөөсүн колдонуп сайтыбызга кирүүдөн баш тарттыңыз. Аны " "байкабастан кылып алсаңыз, кирүүнү улантсаңыз " "болот." #: templates/socialaccount/messages/account_connected.txt:2 msgid "The social account has been connected." msgstr "Социалдык эсеп туташтырылды." #: templates/socialaccount/messages/account_connected_other.txt:2 msgid "The social account is already connected to a different account." msgstr "Бул социалдык эсеп башка эсепке туташтырылган." #: templates/socialaccount/messages/account_disconnected.txt:2 msgid "The social account has been disconnected." msgstr "Социалдык эсеп ажыратылды." #: templates/socialaccount/signup.html:10 #, python-format msgid "" "You are about to use your %(provider_name)s account to login to\n" "%(site_name)s. As a final step, please complete the following form:" msgstr "" "Сиз азыр %(provider_name)s эсебиңизди колдонуп, %(site_name)s\n" "сайтына кирейин деп турасыз. Акыркы кадам катары кийинки калыпты\n" "толтуруп коюңузду суранабыз :" #~ msgid "The login and/or password you specified are not correct." #~ msgstr "Сиз берген логин жана/же купуя туура эмес." #~ msgid "Usernames can only contain letters, digits and @/./+/-/_." #~ msgstr "" #~ "Колдонуучу аттары тамгалардан, сандардан жана @/./+/-/_ белгилеринен гана " #~ "тура алат." django-allauth-0.35.0/allauth/locale/pt_BR/0000755000076500000240000000000013235133532021347 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/pt_BR/LC_MESSAGES/0000755000076500000240000000000013235133532023134 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/pt_BR/LC_MESSAGES/django.mo0000644000076500000240000003424313235132043024735 0ustar pennersrstaff00000000000000 / 7 \Q 6 -   / @ I T g I w LA" &)9:t{p_/28959 I Vc'x -4blB L"* ?K!Rt #A6U@&f)?;#3W?q<o 4!Vir2g\nP:C~H`*3$^,-  * 9GWj ~    ) C W d h m .v  2`"@"f";;#;w### ####$?,${l$G$0%"N%q% % %%/% %8%.&5&G&\&p&t&p&;l'4'8'((.( E(P('g()(-(((()) -)+N)z))w)N**y*# + .+*8+c+ {++)++ +++++ ,,(,3H,D|,F,D-M-- .18.Aj.'..;.:+/f//00600 0#1,1>31r12V2.353H3B4H4255525$%67J66966 666 7737H7`7 y7 777777 77 77 777 8%8A8 U8c8g8 p8'{8Gk dJB(URgm ifK WPxe0lEDh%1bQAaC M#-Nu2H8nv\rO)|[]{z."4IVF<=5L$^o:9Ywc +>7,/t?6`Zpj @!}3&Ss'~y_qX;*T"oauth_token" (OAuth1) or access token (OAuth2)"oauth_token_secret" (OAuth1) or refresh token (OAuth2)Note: you can still change your e-mail address.A user is already registered with this e-mail address.API secret, client secret, or consumer secretAccountAccount ConnectionsAccount InactiveAccountsAdd E-mailAdd E-mail AddressAdd a 3rd Party AccountAlready have an account? Then please sign in.An account already exists with this e-mail address. Please sign in to that account first, then connect your %s account.An error occurred while attempting to login via your social network account.App ID, or consumer keyAre you sure you want to sign out?Bad TokenChange PasswordConfirmConfirm E-mail AddressConfirmation e-mail sent to %(email)s.Current PasswordDo you really want to remove the selected e-mail address?E-mailE-mail (optional)E-mail AddressesE-mail addressForgot Password?Forgotten your password? Enter your e-mail address below, and we'll send you an e-mail allowing you to reset it.If you have not created an account yet, then please sign up first.In case you forgot, your username is %(username)s.Invalid response while obtaining access token from "%s".Invalid response while obtaining request token from "%s".KeyLogin CancelledMake PrimaryNew PasswordNew Password (again)No access to private resources at "%s".No access token saved for "%s".No request token saved for "%s".NoteOpenID Sign InPasswordPassword (again)Password ResetPassword Reset E-mailPassword must be a minimum of {0} characters.Password successfully changed.Password successfully set.Please confirm that %(email)s is an e-mail address for user %(user_display)s.Please contact us if you have any trouble resetting your password.Please sign in with one of your existing third party accounts. Or, sign up for a %(site_name)s account and sign in below:Please type your current password.PrimaryPrimary e-mail address set.Re-send VerificationRemember MeRemoveRemoved e-mail address %(email)s.Reset My PasswordSet PasswordSign InSign OutSign UpSign Up ClosedSignupSocial AccountsSocial Network Login FailureSuccessfully signed in as %(name)s.The e-mail address and/or password you specified are not correct.The e-mail address is not assigned to any user accountThe following e-mail addresses are associated with your account:The password reset link was invalid, possibly because it has already been used. Please request a new password reset.The social account has been connected.The social account has been disconnected.The social account is already connected to a different account.The username and/or password you specified are not correct.This account is currently inactive.This account is inactive.This e-mail address is already associated with another account.This e-mail address is already associated with this account.This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request.This part of the site requires us to verify that you are who you claim to be. For this purpose, we require that you verify ownership of your e-mail address. UnverifiedUsernameUsername can not be used. Please use other username.Username or e-mailVerifiedVerify Your E-mail AddressWarning:We are sorry, but the sign up is currently closed.We have sent an e-mail to you for verification. Please click on the link inside this e-mail. Please contact us if you do not receive it within a few minutes.We have sent an e-mail to you for verification. Follow the link provided to finalize the signup process. Please contact us if you do not receive it within a few minutes.We have sent you an e-mail. Please contact us if you do not receive it within a few minutes.You are about to use your %(provider_name)s account to login to %(site_name)s. As a final step, please complete the following form:You can sign in to your account using any of the following third party accounts:You cannot remove your primary e-mail address (%(email)s).You currently do not have any e-mail address set up. You should really add an e-mail address so you can receive notifications, reset your password, etc.You currently have no social network accounts connected to this account.You decided to cancel logging in to our site using one of your existing accounts. If this was a mistake, please proceed to sign in.You have confirmed %(email)s.You have signed out.You must type the same password each time.Your account has no password set up.Your account has no verified e-mail address.Your password is now changed.Your primary e-mail address must be verified.change passwordclient idcreateddate joinede-mail addressemail addressemail addressesemail confirmationemail confirmationsexpires atextra datafield labelLoginkeylast loginnameorprimaryprovidersecret keysentsocial accountsocial accountssocial applicationsocial application tokensocial application tokenssocial applicationstoken secretuiduserverifiedyou are already logged in as %(user_display)s.Project-Id-Version: django-allauth Report-Msgid-Bugs-To: POT-Creation-Date: 2018-02-02 12:55-0600 PO-Revision-Date: 2014-12-01 01:20+0000 Last-Translator: cacarrara Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/django-allauth/language/pt_BR/) Language: pt_BR MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n > 1); "oauth_token" (OAuth1) ou token de acesso (OAuth2)"oauth_token_secret" (OAuth1) ou token de atualização (OAuth2)Nota: você ainda pode alterar o seu endereço de e-mail.Um usuário já foi registado com este endereço de e-mail.Segredo de API, segredo de cliente ou segredo de consumidorContaConexões da ContaConta InativaContasAdicionar e-mailAdicionar endereço de e-mailAdicionar uma Conta ExternaJá tem uma conta? Por favor entre.Já existe uma conta com esse endereço de e-mail. Por favor, faça login na conta existente e, em seguida, conecte com %s.Um erro foi encontrado ao tentar entrar com a sua conta de rede social.App ID ou chave de consumidorVocê tem certeza que deseja sair?Problema no TokenAlterar senhaConfirmarConfirmar Endereço de E-mailE-mail de confirmação enviado para %(email)s.senha atualDeseja mesmo remover o endereço de e-mail seleccionado?E-mailE-mail (opcional)Endereços de E-mailEndereço de e-mailEsqueceu a sua senha?Esqueceu a sua senha? Insira o seu endereço de e-mail abaixo, e lhe enviaremos um e-mail permitindo que a redefina.Se você não tiver criado uma conta ainda, então, por favor Cadastre-se primeiro.Caso tenha esquecido, seu nome de usuário é %(username)s.Resposta inválida ao obter token de acesso de "%s".Resposta inválida ao obter token de permissão de "%s".ChaveEntrada CanceladaDefinir como primárioNova SenhaNova Senha (novamente)Sem acesso a recursos privados de "%s".Nenhum token de acesso gravado para "%s".Nenhum token de permissão gravado para "%s".NotaEntrar com OpenIDSenhaSenha (novamente)Redefinição da senhaE-mail de Redefinição de SenhaA senha deve ter no mínimo {0} caracteres.Senha alterada com sucesso.Senha definida com sucesso.Por favor confirme que %(email)s é um endereço de e-mail do usuário %(user_display)s.Por favor, contacte-nos se tiver qualquer problema para redefinir a sua senha.Por favor, entre com uma de suas contas externas. Ou, Cadastre-se em uma nova conta %(site_name)s e entre a seguir:Por favor insira a sua senha atual.PrimárioEndereço primário de e-mail configurado.Re-enviar VerificaçãoLembrar-meRemover%(email)s endereços de e-mail removidos.Redefinir a minha senhaDefinir senhaEntrarSairCadastroNovos cadastros suspensosCadastre-seContas SociaisFalha ao Entrar com Rede SocialLogin realizado com sucesso como usuário %(name)s.O endereço de e-mail e/ou senha especificados não estão corretos.O endereço de e-mail não está associado a nenhuma conta de usuárioOs endereços de e-mail seguintes estão associados com a sua conta:O link para redefinição da senha era inválido, provavelmente por já ter sido usado. Por favor peça uma nova redefinição da senha.A conta social foi conectada.A conta social foi desconectada.A conta social já está conectada a outra conta.O nome de usuário e/ou senha especificados não estão corretos.Esta conta está desativada no momento.A sua conta está inativa.Este endereço de e-mail já foi associado com outra conta.Este endereço de e-mail já foi associado com esta conta.Este link de verificação de e-mail expirou ou é inválido. Por favor peça uma nova verificação de e-mail..Esta parte do site requer que verifiquemos que você é quem diz que é. Para esse fim, pedimos que verifique que é dono do seu endereço de e-mail. Não verificadoNome de usuárioO nome de usuário não pode ser usado. Escolha outro.Nome de usuário ou e-mailVerificadoVerifique o seu endereço de e-mailAviso:Infelizmente novos cadastros não podem ser feitos no momento.Nós enviamos um um e-mail de verificação para você. Por favor clique no link dentro deste e-mail. Contacte-nos se não recebê-lo dentro dos próximos minutos.Enviamos um e-mail para você para verificação. Clique no link fornecido para finalizar o processo de inscrição. Entre em contato conosco se você não recebê-lo dentro de alguns minutos.Um e-mail foi enviado. Por favor contacte-nos se não o receber nos próximos minutos.Você está prestes a usar sua conta do %(provider_name)s para acessar o %(site_name)s. Como etapa final, por favor preencha o seguinte formulário:Pode entrar usando uma das seguintes contas externas:Você não pode remover o seu endereço principal de e-mail (%(email)s).Neste momento não há um endereço de e-mail definido. Você deve adicionar um endereço de e-mail para que possa receber notificações, redefinir a sua senha, etc.No momento não tem nenhuma conta de rede social conectada a esta conta.Você decidiu cancelar a entrada no nosso site usando uma das seguintes contas. Se isto foi um erro, clique para entrar.Confirmou %(email)sVocê saiu do sistema.A mesma senha deve ser escrita em ambos os campos.A sua conta não tem senha definida.A sua conta não tem um endereço de e-mail verificado.A sua senha foi alterada.Seu endereço de e-mail principal precisa ser confirmado.alterar a senhaid do clientecriadodata de adesãoendereço de e-mailendereço de e-mailendereços de e-mailconfirmação de e-mailconfirmações de e-mailexpira emdados extrasLoginchaveúltimo acessonomeouprimárioprovedorChave secretaenviadoconta socialcontas sociaisaplicativo socialtoken de aplicativo socialtokens de aplicativo socialaplicativos sociaistoken secretouidusuárioverificadovocê já entrou como %(user_display)s.django-allauth-0.35.0/allauth/locale/pt_BR/LC_MESSAGES/django.po0000644000076500000240000006231213235132037024741 0ustar pennersrstaff00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # cacarrara , 2014 # Fábio C. Barrionuevo da Luz , 2013-2014 # Rodrigo , 2013 # Rodrigo , 2013-2014 msgid "" msgstr "" "Project-Id-Version: django-allauth\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-02-02 12:55-0600\n" "PO-Revision-Date: 2014-12-01 01:20+0000\n" "Last-Translator: cacarrara \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/" "django-allauth/language/pt_BR/)\n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: account/adapter.py:45 msgid "Username can not be used. Please use other username." msgstr "O nome de usuário não pode ser usado. Escolha outro." #: account/adapter.py:49 msgid "Too many failed login attempts. Try again later." msgstr "" #: account/adapter.py:51 msgid "A user is already registered with this e-mail address." msgstr "Um usuário já foi registado com este endereço de e-mail." #: account/adapter.py:288 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "A senha deve ter no mínimo {0} caracteres." #: account/apps.py:7 msgid "Accounts" msgstr "Contas" #: account/forms.py:61 account/forms.py:398 msgid "You must type the same password each time." msgstr "A mesma senha deve ser escrita em ambos os campos." #: account/forms.py:91 account/forms.py:365 account/forms.py:476 msgid "Password" msgstr "Senha" #: account/forms.py:92 msgid "Remember Me" msgstr "Lembrar-me" #: account/forms.py:98 msgid "This account is currently inactive." msgstr "Esta conta está desativada no momento." #: account/forms.py:101 msgid "The e-mail address and/or password you specified are not correct." msgstr "O endereço de e-mail e/ou senha especificados não estão corretos." #: account/forms.py:104 msgid "The username and/or password you specified are not correct." msgstr "O nome de usuário e/ou senha especificados não estão corretos." #: account/forms.py:113 account/forms.py:268 account/forms.py:426 #: account/forms.py:495 msgid "E-mail address" msgstr "Endereço de e-mail" #: account/forms.py:115 account/forms.py:301 account/forms.py:421 #: account/forms.py:490 msgid "E-mail" msgstr "E-mail" #: account/forms.py:120 account/forms.py:123 account/forms.py:260 #: account/forms.py:264 msgid "Username" msgstr "Nome de usuário" #: account/forms.py:130 msgid "Username or e-mail" msgstr "Nome de usuário ou e-mail" #: account/forms.py:133 msgctxt "field label" msgid "Login" msgstr "Login" #: account/forms.py:292 #, fuzzy #| msgid "E-mail (optional)" msgid "E-mail (again)" msgstr "E-mail (opcional)" #: account/forms.py:296 #, fuzzy #| msgid "email confirmation" msgid "E-mail address confirmation" msgstr "confirmação de e-mail" #: account/forms.py:304 msgid "E-mail (optional)" msgstr "E-mail (opcional)" #: account/forms.py:345 #, fuzzy #| msgid "You must type the same password each time." msgid "You must type the same email each time." msgstr "A mesma senha deve ser escrita em ambos os campos." #: account/forms.py:368 account/forms.py:477 msgid "Password (again)" msgstr "Senha (novamente)" #: account/forms.py:432 msgid "This e-mail address is already associated with this account." msgstr "Este endereço de e-mail já foi associado com esta conta." #: account/forms.py:434 msgid "This e-mail address is already associated with another account." msgstr "Este endereço de e-mail já foi associado com outra conta." #: account/forms.py:456 msgid "Current Password" msgstr "senha atual" #: account/forms.py:457 account/forms.py:546 msgid "New Password" msgstr "Nova Senha" #: account/forms.py:458 account/forms.py:547 msgid "New Password (again)" msgstr "Nova Senha (novamente)" #: account/forms.py:466 msgid "Please type your current password." msgstr "Por favor insira a sua senha atual." #: account/forms.py:504 msgid "The e-mail address is not assigned to any user account" msgstr "O endereço de e-mail não está associado a nenhuma conta de usuário" #: account/forms.py:568 msgid "The password reset token was invalid." msgstr "" #: account/models.py:23 msgid "user" msgstr "usuário" #: account/models.py:27 account/models.py:81 msgid "e-mail address" msgstr "endereço de e-mail" #: account/models.py:28 msgid "verified" msgstr "verificado" #: account/models.py:29 msgid "primary" msgstr "primário" #: account/models.py:34 msgid "email address" msgstr "endereço de e-mail" #: account/models.py:35 msgid "email addresses" msgstr "endereços de e-mail" #: account/models.py:83 msgid "created" msgstr "criado" #: account/models.py:85 msgid "sent" msgstr "enviado" #: account/models.py:86 socialaccount/models.py:55 msgid "key" msgstr "chave" #: account/models.py:91 msgid "email confirmation" msgstr "confirmação de e-mail" #: account/models.py:92 msgid "email confirmations" msgstr "confirmações de e-mail" #: socialaccount/adapter.py:26 #, python-format msgid "" "An account already exists with this e-mail address. Please sign in to that " "account first, then connect your %s account." msgstr "" "Já existe uma conta com esse endereço de e-mail. Por favor, faça login na " "conta existente e, em seguida, conecte com %s." #: socialaccount/adapter.py:131 msgid "Your account has no password set up." msgstr "A sua conta não tem senha definida." #: socialaccount/adapter.py:138 msgid "Your account has no verified e-mail address." msgstr "A sua conta não tem um endereço de e-mail verificado." #: socialaccount/apps.py:7 msgid "Social Accounts" msgstr "Contas Sociais" #: socialaccount/models.py:43 socialaccount/models.py:77 msgid "provider" msgstr "provedor" #: socialaccount/models.py:46 msgid "name" msgstr "nome" #: socialaccount/models.py:48 msgid "client id" msgstr "id do cliente" #: socialaccount/models.py:50 msgid "App ID, or consumer key" msgstr "App ID ou chave de consumidor" #: socialaccount/models.py:51 msgid "secret key" msgstr "Chave secreta" #: socialaccount/models.py:53 msgid "API secret, client secret, or consumer secret" msgstr "Segredo de API, segredo de cliente ou segredo de consumidor" #: socialaccount/models.py:58 msgid "Key" msgstr "Chave" #: socialaccount/models.py:66 msgid "social application" msgstr "aplicativo social" #: socialaccount/models.py:67 msgid "social applications" msgstr "aplicativos sociais" #: socialaccount/models.py:96 msgid "uid" msgstr "uid" #: socialaccount/models.py:98 msgid "last login" msgstr "último acesso" #: socialaccount/models.py:100 msgid "date joined" msgstr "data de adesão" #: socialaccount/models.py:102 msgid "extra data" msgstr "dados extras" #: socialaccount/models.py:106 msgid "social account" msgstr "conta social" #: socialaccount/models.py:107 msgid "social accounts" msgstr "contas sociais" #: socialaccount/models.py:133 msgid "token" msgstr "" #: socialaccount/models.py:135 msgid "\"oauth_token\" (OAuth1) or access token (OAuth2)" msgstr "\"oauth_token\" (OAuth1) ou token de acesso (OAuth2)" #: socialaccount/models.py:138 msgid "token secret" msgstr "token secreto" #: socialaccount/models.py:140 msgid "\"oauth_token_secret\" (OAuth1) or refresh token (OAuth2)" msgstr "\"oauth_token_secret\" (OAuth1) ou token de atualização (OAuth2)" #: socialaccount/models.py:142 msgid "expires at" msgstr "expira em" #: socialaccount/models.py:146 msgid "social application token" msgstr "token de aplicativo social" #: socialaccount/models.py:147 msgid "social application tokens" msgstr "tokens de aplicativo social" #: socialaccount/providers/douban/views.py:36 msgid "Invalid profile data" msgstr "" #: socialaccount/providers/oauth/client.py:78 #, python-format msgid "Invalid response while obtaining request token from \"%s\"." msgstr "Resposta inválida ao obter token de permissão de \"%s\"." #: socialaccount/providers/oauth/client.py:109 #, python-format msgid "Invalid response while obtaining access token from \"%s\"." msgstr "Resposta inválida ao obter token de acesso de \"%s\"." #: socialaccount/providers/oauth/client.py:128 #, python-format msgid "No request token saved for \"%s\"." msgstr "Nenhum token de permissão gravado para \"%s\"." #: socialaccount/providers/oauth/client.py:177 #, python-format msgid "No access token saved for \"%s\"." msgstr "Nenhum token de acesso gravado para \"%s\"." #: socialaccount/providers/oauth/client.py:197 #, python-format msgid "No access to private resources at \"%s\"." msgstr "Sem acesso a recursos privados de \"%s\"." #: templates/account/account_inactive.html:5 #: templates/account/account_inactive.html:8 msgid "Account Inactive" msgstr "Conta Inativa" #: templates/account/account_inactive.html:10 msgid "This account is inactive." msgstr "A sua conta está inativa." #: templates/account/email.html:5 msgid "Account" msgstr "Conta" #: templates/account/email.html:8 msgid "E-mail Addresses" msgstr "Endereços de E-mail" #: templates/account/email.html:10 msgid "The following e-mail addresses are associated with your account:" msgstr "Os endereços de e-mail seguintes estão associados com a sua conta:" #: templates/account/email.html:24 msgid "Verified" msgstr "Verificado" #: templates/account/email.html:26 msgid "Unverified" msgstr "Não verificado" #: templates/account/email.html:28 msgid "Primary" msgstr "Primário" #: templates/account/email.html:34 msgid "Make Primary" msgstr "Definir como primário" #: templates/account/email.html:35 msgid "Re-send Verification" msgstr "Re-enviar Verificação" #: templates/account/email.html:36 templates/socialaccount/connections.html:35 msgid "Remove" msgstr "Remover" #: templates/account/email.html:43 msgid "Warning:" msgstr "Aviso:" #: templates/account/email.html:43 msgid "" "You currently do not have any e-mail address set up. You should really add " "an e-mail address so you can receive notifications, reset your password, etc." msgstr "" "Neste momento não há um endereço de e-mail definido. Você deve adicionar um " "endereço de e-mail para que possa receber notificações, redefinir a sua " "senha, etc." #: templates/account/email.html:48 msgid "Add E-mail Address" msgstr "Adicionar endereço de e-mail" #: templates/account/email.html:53 msgid "Add E-mail" msgstr "Adicionar e-mail" #: templates/account/email.html:62 msgid "Do you really want to remove the selected e-mail address?" msgstr "Deseja mesmo remover o endereço de e-mail seleccionado?" #: templates/account/email/email_confirmation_message.txt:1 #, fuzzy, python-format #| msgid "" #| "User %(user_display)s at %(site_name)s has given this as an email " #| "address.\n" #| "\n" #| "To confirm this is correct, go to %(activate_url)s\n" msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because user %(user_display)s has given yours " "as an e-mail address to connect their account.\n" "\n" "To confirm this is correct, go to %(activate_url)s\n" msgstr "" "O usuário %(user_display)s do %(site_name)s informou este endereço de e-" "mail.\n" "\n" "Para confirmar que isso está correto, vá até %(activate_url)s\n" #: templates/account/email/email_confirmation_message.txt:7 #, python-format msgid "" "Thank you from %(site_name)s!\n" "%(site_domain)s" msgstr "" #: templates/account/email/email_confirmation_subject.txt:3 #, fuzzy #| msgid "Confirm E-mail Address" msgid "Please Confirm Your E-mail Address" msgstr "Confirmar Endereço de E-mail" #: templates/account/email/password_reset_key_message.txt:1 #, fuzzy, python-format #| msgid "" #| "You're receiving this e-mail because you or someone else has requested a " #| "password for your user account at %(site_domain)s.\n" #| "It can be safely ignored if you did not request a password reset. Click " #| "the link below to reset your password." msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because you or someone else has requested a " "password for your user account.\n" "It can be safely ignored if you did not request a password reset. Click the " "link below to reset your password." msgstr "" "Você está recebendo esse e-mail porque você ou alguém tentou requisitar uma " "senha para sua conta de usuário em %(site_domain)s.\n" "Essa mensagem pode ser ignorada sem preocupações se você mesmo fez a " "requisição. Clique no link abaixo para redefinir sua senha. " #: templates/account/email/password_reset_key_message.txt:8 #, python-format msgid "In case you forgot, your username is %(username)s." msgstr "Caso tenha esquecido, seu nome de usuário é %(username)s." #: templates/account/email/password_reset_key_message.txt:10 #, python-format msgid "" "Thank you for using %(site_name)s!\n" "%(site_domain)s" msgstr "" #: templates/account/email/password_reset_key_subject.txt:3 msgid "Password Reset E-mail" msgstr "E-mail de Redefinição de Senha" #: templates/account/email_confirm.html:6 #: templates/account/email_confirm.html:10 msgid "Confirm E-mail Address" msgstr "Confirmar Endereço de E-mail" #: templates/account/email_confirm.html:16 #, python-format msgid "" "Please confirm that %(email)s is an e-mail " "address for user %(user_display)s." msgstr "" "Por favor confirme que %(email)s é um " "endereço de e-mail do usuário %(user_display)s." #: templates/account/email_confirm.html:20 msgid "Confirm" msgstr "Confirmar" #: templates/account/email_confirm.html:27 #, python-format msgid "" "This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request." msgstr "" "Este link de verificação de e-mail expirou ou é inválido. Por favor peça uma nova verificação de e-mail.." #: templates/account/login.html:6 templates/account/login.html:10 #: templates/account/login.html:43 msgid "Sign In" msgstr "Entrar" #: templates/account/login.html:15 #, python-format msgid "" "Please sign in with one\n" "of your existing third party accounts. Or, sign " "up\n" "for a %(site_name)s account and sign in below:" msgstr "" "Por favor, entre com uma\n" "de suas contas externas. Ou, Cadastre-se\n" "em uma nova conta %(site_name)s e entre a seguir:" #: templates/account/login.html:25 msgid "or" msgstr "ou" #: templates/account/login.html:32 #, python-format msgid "" "If you have not created an account yet, then please\n" "sign up first." msgstr "" "Se você não tiver criado uma conta ainda, então, por favor\n" "Cadastre-se primeiro." #: templates/account/login.html:42 msgid "Forgot Password?" msgstr "Esqueceu a sua senha?" #: templates/account/logout.html:5 templates/account/logout.html:8 #: templates/account/logout.html:17 msgid "Sign Out" msgstr "Sair" #: templates/account/logout.html:10 msgid "Are you sure you want to sign out?" msgstr "Você tem certeza que deseja sair?" #: templates/account/messages/cannot_delete_primary_email.txt:2 #, python-format msgid "You cannot remove your primary e-mail address (%(email)s)." msgstr "Você não pode remover o seu endereço principal de e-mail (%(email)s)." #: templates/account/messages/email_confirmation_sent.txt:2 #, python-format msgid "Confirmation e-mail sent to %(email)s." msgstr "E-mail de confirmação enviado para %(email)s." #: templates/account/messages/email_confirmed.txt:2 #, python-format msgid "You have confirmed %(email)s." msgstr "Confirmou %(email)s" #: templates/account/messages/email_deleted.txt:2 #, python-format msgid "Removed e-mail address %(email)s." msgstr "%(email)s endereços de e-mail removidos." #: templates/account/messages/logged_in.txt:4 #, python-format msgid "Successfully signed in as %(name)s." msgstr "Login realizado com sucesso como usuário %(name)s." #: templates/account/messages/logged_out.txt:2 msgid "You have signed out." msgstr "Você saiu do sistema." #: templates/account/messages/password_changed.txt:2 msgid "Password successfully changed." msgstr "Senha alterada com sucesso." #: templates/account/messages/password_set.txt:2 msgid "Password successfully set." msgstr "Senha definida com sucesso." #: templates/account/messages/primary_email_set.txt:2 msgid "Primary e-mail address set." msgstr "Endereço primário de e-mail configurado." #: templates/account/messages/unverified_primary_email.txt:2 msgid "Your primary e-mail address must be verified." msgstr "Seu endereço de e-mail principal precisa ser confirmado." #: templates/account/password_change.html:5 #: templates/account/password_change.html:8 #: templates/account/password_change.html:13 #: templates/account/password_reset_from_key.html:4 #: templates/account/password_reset_from_key.html:7 #: templates/account/password_reset_from_key_done.html:4 #: templates/account/password_reset_from_key_done.html:7 msgid "Change Password" msgstr "Alterar senha" #: templates/account/password_reset.html:6 #: templates/account/password_reset.html:10 #: templates/account/password_reset_done.html:6 #: templates/account/password_reset_done.html:9 msgid "Password Reset" msgstr "Redefinição da senha" #: templates/account/password_reset.html:15 msgid "" "Forgotten your password? Enter your e-mail address below, and we'll send you " "an e-mail allowing you to reset it." msgstr "" "Esqueceu a sua senha? Insira o seu endereço de e-mail abaixo, e lhe " "enviaremos um e-mail permitindo que a redefina." #: templates/account/password_reset.html:20 msgid "Reset My Password" msgstr "Redefinir a minha senha" #: templates/account/password_reset.html:23 msgid "Please contact us if you have any trouble resetting your password." msgstr "" "Por favor, contacte-nos se tiver qualquer problema para redefinir a sua " "senha." #: templates/account/password_reset_done.html:15 msgid "" "We have sent you an e-mail. Please contact us if you do not receive it " "within a few minutes." msgstr "" "Um e-mail foi enviado. Por favor contacte-nos se não o receber nos próximos " "minutos." #: templates/account/password_reset_from_key.html:7 msgid "Bad Token" msgstr "Problema no Token" #: templates/account/password_reset_from_key.html:11 #, python-format msgid "" "The password reset link was invalid, possibly because it has already been " "used. Please request a new password reset." msgstr "" "O link para redefinição da senha era inválido, provavelmente por já ter sido " "usado. Por favor peça uma nova redefinição " "da senha." #: templates/account/password_reset_from_key.html:17 msgid "change password" msgstr "alterar a senha" #: templates/account/password_reset_from_key.html:20 #: templates/account/password_reset_from_key_done.html:8 msgid "Your password is now changed." msgstr "A sua senha foi alterada." #: templates/account/password_set.html:5 templates/account/password_set.html:8 #: templates/account/password_set.html:13 msgid "Set Password" msgstr "Definir senha" #: templates/account/signup.html:5 templates/socialaccount/signup.html:5 msgid "Signup" msgstr "Cadastre-se" #: templates/account/signup.html:8 templates/account/signup.html:18 #: templates/socialaccount/signup.html:8 templates/socialaccount/signup.html:19 msgid "Sign Up" msgstr "Cadastro" #: templates/account/signup.html:10 #, python-format msgid "" "Already have an account? Then please sign in." msgstr "Já tem uma conta? Por favor entre." #: templates/account/signup_closed.html:5 #: templates/account/signup_closed.html:8 msgid "Sign Up Closed" msgstr "Novos cadastros suspensos" #: templates/account/signup_closed.html:10 msgid "We are sorry, but the sign up is currently closed." msgstr "Infelizmente novos cadastros não podem ser feitos no momento." #: templates/account/snippets/already_logged_in.html:5 msgid "Note" msgstr "Nota" #: templates/account/snippets/already_logged_in.html:5 #, python-format msgid "you are already logged in as %(user_display)s." msgstr "você já entrou como %(user_display)s." #: templates/account/verification_sent.html:5 #: templates/account/verification_sent.html:8 #: templates/account/verified_email_required.html:5 #: templates/account/verified_email_required.html:8 msgid "Verify Your E-mail Address" msgstr "Verifique o seu endereço de e-mail" #: templates/account/verification_sent.html:10 msgid "" "We have sent an e-mail to you for verification. Follow the link provided to " "finalize the signup process. Please contact us if you do not receive it " "within a few minutes." msgstr "" "Enviamos um e-mail para você para verificação. Clique no link fornecido para " "finalizar o processo de inscrição. Entre em contato conosco se você não " "recebê-lo dentro de alguns minutos." #: templates/account/verified_email_required.html:12 msgid "" "This part of the site requires us to verify that\n" "you are who you claim to be. For this purpose, we require that you\n" "verify ownership of your e-mail address. " msgstr "" "Esta parte do site requer que verifiquemos\n" "que você é quem diz que é. Para esse fim, pedimos que verifique que\n" "é dono do seu endereço de e-mail. " #: templates/account/verified_email_required.html:16 msgid "" "We have sent an e-mail to you for\n" "verification. Please click on the link inside this e-mail. Please\n" "contact us if you do not receive it within a few minutes." msgstr "" "Nós enviamos um um e-mail de verificação\n" "para você. Por favor clique no link dentro deste e-mail. Contacte-nos\n" "se não recebê-lo dentro dos próximos minutos." #: templates/account/verified_email_required.html:20 #, python-format msgid "" "Note: you can still change your e-" "mail address." msgstr "" "Nota: você ainda pode alterar o " "seu endereço de e-mail." #: templates/openid/login.html:9 msgid "OpenID Sign In" msgstr "Entrar com OpenID" #: templates/socialaccount/authentication_error.html:5 #: templates/socialaccount/authentication_error.html:8 msgid "Social Network Login Failure" msgstr "Falha ao Entrar com Rede Social" #: templates/socialaccount/authentication_error.html:10 msgid "" "An error occurred while attempting to login via your social network account." msgstr "" "Um erro foi encontrado ao tentar entrar com a sua conta de rede social." #: templates/socialaccount/connections.html:5 #: templates/socialaccount/connections.html:8 msgid "Account Connections" msgstr "Conexões da Conta" #: templates/socialaccount/connections.html:11 msgid "" "You can sign in to your account using any of the following third party " "accounts:" msgstr "Pode entrar usando uma das seguintes contas externas:" #: templates/socialaccount/connections.html:43 msgid "" "You currently have no social network accounts connected to this account." msgstr "" "No momento não tem nenhuma conta de rede social conectada a esta conta." #: templates/socialaccount/connections.html:46 msgid "Add a 3rd Party Account" msgstr "Adicionar uma Conta Externa" #: templates/socialaccount/login_cancelled.html:5 #: templates/socialaccount/login_cancelled.html:9 msgid "Login Cancelled" msgstr "Entrada Cancelada" #: templates/socialaccount/login_cancelled.html:13 #, python-format msgid "" "You decided to cancel logging in to our site using one of your existing " "accounts. If this was a mistake, please proceed to sign in." msgstr "" "Você decidiu cancelar a entrada no nosso site usando uma das seguintes " "contas. Se isto foi um erro, clique para entrar." #: templates/socialaccount/messages/account_connected.txt:2 msgid "The social account has been connected." msgstr "A conta social foi conectada." #: templates/socialaccount/messages/account_connected_other.txt:2 msgid "The social account is already connected to a different account." msgstr "A conta social já está conectada a outra conta." #: templates/socialaccount/messages/account_disconnected.txt:2 msgid "The social account has been disconnected." msgstr "A conta social foi desconectada." #: templates/socialaccount/signup.html:10 #, python-format msgid "" "You are about to use your %(provider_name)s account to login to\n" "%(site_name)s. As a final step, please complete the following form:" msgstr "" "Você está prestes a usar sua conta do %(provider_name)s para acessar o\n" "%(site_name)s. Como etapa final, por favor preencha o seguinte formulário:" #~ msgid "The login and/or password you specified are not correct." #~ msgstr "O nome de usuário e/ou senha especificados não estão corretos." #~ msgid "Usernames can only contain letters, digits and @/./+/-/_." #~ msgstr "Nomes de usuários podem conter apenas letras, dígitos e @/./+/-/_." #~ msgid "This username is already taken. Please choose another." #~ msgstr "Este nome de usuário já está em uso. Por favor escolha outro." #, fuzzy #~| msgid "Sign In" #~ msgid "Shopify Sign In" #~ msgstr "Entrar" #~ msgid "" #~ "You have confirmed that %(email)s is an " #~ "e-mail address for user %(user_display)s." #~ msgstr "" #~ "Você confirmou que %(email)s é um " #~ "endereço de e-mail do usuário %(user_display)s." #~ msgid "Thanks for using our site!" #~ msgstr "Obrigado por utilizar nosso site!" django-allauth-0.35.0/allauth/locale/ja/0000755000076500000240000000000013235133532020733 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/ja/LC_MESSAGES/0000755000076500000240000000000013235133532022520 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/ja/LC_MESSAGES/django.mo0000644000076500000240000003472513235132043024326 0ustar pennersrstaff00000000000000x( \) 6       I) Ls "    & C 9T      p _I 2 8 9O _ ly'  %4-JxlBb"$@ Ua!h #A)6k@&|)?; #Im?< #.47l2}\'P:YH-v4*I$t,-"* 9GWj~.dPK-F_o$lT    !!48!m!N!!*!","'B"j""J~#x#{B$-$$$'%8@%Dy%G%& &!&1&P&!i&>&*&<&2'N'(6( (<)A)!`))8))) )**'*C*V*Bl*:*]*]H+N++0,<,T6-W---'.Q9.B..u/ L0V0`f0-0 001 31N=11K2~933Tw4Z4'5Z5L6%7573T7H7?7*8Q<88 888889 19>9 N9 X9b9 u9 9 989K0%!q5\8^W?B2 p._<U>6N@97A;vYkeCTZl&hmxRQi'H1#=OMd+EPoLr [jVbGtD)$: F"n, gcJ`IaX fSw ]*-u3/s(4Note: you can still change your e-mail address.A user is already registered with this e-mail address.AccountAccount ConnectionsAccount InactiveAccountsAdd E-mailAdd E-mail AddressAdd a 3rd Party AccountAlready have an account? Then please sign in.An error occurred while attempting to login via your social network account.Are you sure you want to sign out?Bad TokenChange PasswordConfirmConfirm E-mail AddressConfirmation e-mail sent to %(email)s.Current PasswordDo you really want to remove the selected e-mail address?E-mailE-mail (optional)E-mail AddressesE-mail addressForgot Password?Forgotten your password? Enter your e-mail address below, and we'll send you an e-mail allowing you to reset it.If you have not created an account yet, then please sign up first.In case you forgot, your username is %(username)s.Invalid response while obtaining access token from "%s".Invalid response while obtaining request token from "%s".Login CancelledMake PrimaryNew PasswordNew Password (again)No access to private resources at "%s".No access token saved for "%s".No request token saved for "%s".NoteOpenID Sign InPasswordPassword (again)Password ResetPassword Reset E-mailPassword must be a minimum of {0} characters.Password successfully changed.Password successfully set.Please confirm that %(email)s is an e-mail address for user %(user_display)s.Please contact us if you have any trouble resetting your password.Please sign in with one of your existing third party accounts. Or, sign up for a %(site_name)s account and sign in below:Please type your current password.PrimaryPrimary e-mail address set.Re-send VerificationRemember MeRemoveRemoved e-mail address %(email)s.Reset My PasswordSet PasswordSign InSign OutSign UpSign Up ClosedSignupSocial AccountsSocial Network Login FailureSuccessfully signed in as %(name)s.The e-mail address and/or password you specified are not correct.The e-mail address is not assigned to any user accountThe following e-mail addresses are associated with your account:The password reset link was invalid, possibly because it has already been used. Please request a new password reset.The social account has been connected.The social account has been disconnected.The social account is already connected to a different account.The username and/or password you specified are not correct.This account is currently inactive.This account is inactive.This e-mail address is already associated with another account.This e-mail address is already associated with this account.This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request.This part of the site requires us to verify that you are who you claim to be. For this purpose, we require that you verify ownership of your e-mail address. UnverifiedUsernameUsername can not be used. Please use other username.Username or e-mailVerifiedVerify Your E-mail AddressWarning:We are sorry, but the sign up is currently closed.We have sent an e-mail to you for verification. Please click on the link inside this e-mail. Please contact us if you do not receive it within a few minutes.We have sent an e-mail to you for verification. Follow the link provided to finalize the signup process. Please contact us if you do not receive it within a few minutes.We have sent you an e-mail. Please contact us if you do not receive it within a few minutes.You are about to use your %(provider_name)s account to login to %(site_name)s. As a final step, please complete the following form:You can sign in to your account using any of the following third party accounts:You cannot remove your primary e-mail address (%(email)s).You currently do not have any e-mail address set up. You should really add an e-mail address so you can receive notifications, reset your password, etc.You currently have no social network accounts connected to this account.You decided to cancel logging in to our site using one of your existing accounts. If this was a mistake, please proceed to sign in.You have confirmed %(email)s.You have signed out.You must type the same password each time.Your account has no password set up.Your account has no verified e-mail address.Your password is now changed.Your primary e-mail address must be verified.change passwordcreatede-mail addressemail addressemail addressesemail confirmationemail confirmationsfield labelLoginnameorprimaryprovidersentuserverifiedyou are already logged in as %(user_display)s.Project-Id-Version: PACKAGE VERSION Report-Msgid-Bugs-To: POT-Creation-Date: 2018-02-02 12:55-0600 PO-Revision-Date: 2014-08-12 00:32+0200 Last-Translator: FULL NAME Language-Team: LANGUAGE Language: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; 注意: メールアドレスの変更をしていただくことも可能です。他のユーザーがこのメールアドレスを使用しています。アカウントアカウントリンク無効なアカウントアカウントメールアドレスの登録メールアドレスの登録外部アカウントを追加するすでにアカウントをお持ちであれば、こちらから ログイン してください。ソーシャルネットワークアカウントにログインする際にエラーが発生しました。ログアウトしますか?不正なトークンパスワード変更確認するメールアドレスの確認%(email)s に確認メールを送信しました。現在のパスワード選択されたメールアドレスを削除してもよろしいですか?メールアドレスメールアドレス(オプション)メールアドレスメールアドレスパスワードをお忘れですか?パスワードをお忘れですか?パスワードをリセットするために、メールアドレスを入力してください。アカウントをまだお持ちでなければ、こちらから ユーザー登録 してください。あなたのアカウント(ユーザー名)は %(username)s です。不正なレスポンスが返されたため、 "%s" からアクセストークンを取得できませんでした。不正なレスポンスが返されたため、 "%s" からリクエストトークンを取得できませんでした。ログインはキャンセルされましたメインにする新しいパスワード新しいパスワード(再入力)"%s" の情報にアクセスできませんでした。"%s" のアクセストークンを保存できませんでした。"%s" のリクエストトークンを保存できませんでした。注意OpenID ログインパスワードパスワード(再入力)パスワード再設定パスワード再設定メールパスワードは {0} 文字以上の長さが必要です。パスワードが変更されました。メインのメールアドレスが設定されました。メールアドレス %(email)s がユーザー %(user_display)s さんのものであることを確認してください。パスワードの再設定に問題がある場合はご連絡ください。お持ちの外部アカウントでログインするか、%(site_name)sに ユーザー登録 してログインしてください。現在のパスワードを入力してください。メインメインのメールアドレスが設定されました。確認メールを再送するログインしたままにする削除メールアドレス %(email)s を削除しました。パスワードをリセットパスワード設定ログインログアウトユーザー登録ユーザー登録停止中ユーザー登録外部アカウントソーシャルネットワークログインに失敗しましたユーザー %(name)s としてログインしました。入力されたメールアドレスもしくはパスワードが正しくありません。このメールアドレスで登録されたユーザーアカウントがありません。以下のメールアドレスがアカウントに登録されています:パスワード再設定用のリンクが不正です。すでに使用された可能性があります。もう一度 パスワードの再設定をお試しください。外部アカウントがリンクされました外部アカウントのリンクが解除されました。この外部アカウントは他のアカウントにリンクされています。入力されたユーザー名もしくはパスワードが正しくありません。このアカウントは現在無効です。このアカウントは無効です。このメールアドレスは別のアカウントで使用されています。このメールアドレスはすでに登録されています。メールアドレス確認用のリンクが不正か、期限が切れています。確認用のメールを再送してください。このページにアクセスするためには、本人確認が必要です。 そのために、登録されているメールアドレスがご自身のものであることを確認していただきます。未確認ユーザー名このユーザー名は使用できません。他のユーザー名を選んでください。ユーザー名またはメールアドレス確認済みメールアドレスを確認してください注意:申し訳ありません、現在ユーザー登録を停止しています。確認のためのメールを送信しましたので、記載されたリンクをクリックしてください。 数分以内にメールが届かない場合はご連絡ください。確認のメールを送信しました。メールに記載されたリンクをクリックして、ユーザー登録を完了させてください。数分待っても確認のメールが届かない場合はご連絡ください。パスワード再設定用のメールを送信しました。数分たっても届かない場合はご連絡ください。%(provider_name)s アカウントを使って %(site_name)s にログインしようとしています。 ユーザー登録のために、以下のフォームに記入してください。以下の外部アカウントを使ってログインすることができます:メインのメールアドレス(%(email)s)を削除することはできません。メールアドレスが設定されていません。通知を受け取ったり、パスワードをリセットしたりするためにはメールアドレスを登録する必要があります。あなたのカウントに結びつけられた外部アカウントはありません。既存の外部アカウントを使ったログインはキャンセルされました。 やり直される場合はログインページにお進みください。%(email)s は確認されました。ログアウトしました。同じパスワードを入力してください。アカウントにパスワードを設定する必要があります。確認済みのメールアドレスの登録が必要です。パスワードが変更されました。メインのメールアドレスは確認済みでなければいけません。パスワード変更作成日時メールアドレスメールアドレスメールアドレスメールアドレスの確認メールアドレスの確認ログインユーザー名またはメインプロバイダー送信日時ユーザー確認済み%(user_display)s さんとしてログイン中です。django-allauth-0.35.0/allauth/locale/ja/LC_MESSAGES/django.po0000644000076500000240000006637713235132037024344 0ustar pennersrstaff00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-02-02 12:55-0600\n" "PO-Revision-Date: 2014-08-12 00:32+0200\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" #: account/adapter.py:45 msgid "Username can not be used. Please use other username." msgstr "このユーザー名は使用できません。他のユーザー名を選んでください。" #: account/adapter.py:49 msgid "Too many failed login attempts. Try again later." msgstr "" #: account/adapter.py:51 msgid "A user is already registered with this e-mail address." msgstr "他のユーザーがこのメールアドレスを使用しています。" #: account/adapter.py:288 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "パスワードは {0} 文字以上の長さが必要です。" #: account/apps.py:7 msgid "Accounts" msgstr "アカウント" #: account/forms.py:61 account/forms.py:398 msgid "You must type the same password each time." msgstr "同じパスワードを入力してください。" #: account/forms.py:91 account/forms.py:365 account/forms.py:476 msgid "Password" msgstr "パスワード" #: account/forms.py:92 msgid "Remember Me" msgstr "ログインしたままにする" #: account/forms.py:98 msgid "This account is currently inactive." msgstr "このアカウントは現在無効です。" #: account/forms.py:101 msgid "The e-mail address and/or password you specified are not correct." msgstr "入力されたメールアドレスもしくはパスワードが正しくありません。" #: account/forms.py:104 msgid "The username and/or password you specified are not correct." msgstr "入力されたユーザー名もしくはパスワードが正しくありません。" #: account/forms.py:113 account/forms.py:268 account/forms.py:426 #: account/forms.py:495 msgid "E-mail address" msgstr "メールアドレス" #: account/forms.py:115 account/forms.py:301 account/forms.py:421 #: account/forms.py:490 msgid "E-mail" msgstr "メールアドレス" #: account/forms.py:120 account/forms.py:123 account/forms.py:260 #: account/forms.py:264 msgid "Username" msgstr "ユーザー名" #: account/forms.py:130 msgid "Username or e-mail" msgstr "ユーザー名またはメールアドレス" #: account/forms.py:133 msgctxt "field label" msgid "Login" msgstr "ログイン" #: account/forms.py:292 #, fuzzy #| msgid "E-mail (optional)" msgid "E-mail (again)" msgstr "メールアドレス(オプション)" #: account/forms.py:296 #, fuzzy #| msgid "email confirmation" msgid "E-mail address confirmation" msgstr "メールアドレスの確認" #: account/forms.py:304 msgid "E-mail (optional)" msgstr "メールアドレス(オプション)" #: account/forms.py:345 #, fuzzy #| msgid "You must type the same password each time." msgid "You must type the same email each time." msgstr "同じパスワードを入力してください。" #: account/forms.py:368 account/forms.py:477 msgid "Password (again)" msgstr "パスワード(再入力)" #: account/forms.py:432 msgid "This e-mail address is already associated with this account." msgstr "このメールアドレスはすでに登録されています。" #: account/forms.py:434 msgid "This e-mail address is already associated with another account." msgstr "このメールアドレスは別のアカウントで使用されています。" #: account/forms.py:456 msgid "Current Password" msgstr "現在のパスワード" #: account/forms.py:457 account/forms.py:546 msgid "New Password" msgstr "新しいパスワード" #: account/forms.py:458 account/forms.py:547 msgid "New Password (again)" msgstr "新しいパスワード(再入力)" #: account/forms.py:466 msgid "Please type your current password." msgstr "現在のパスワードを入力してください。" #: account/forms.py:504 msgid "The e-mail address is not assigned to any user account" msgstr "このメールアドレスで登録されたユーザーアカウントがありません。" #: account/forms.py:568 msgid "The password reset token was invalid." msgstr "" #: account/models.py:23 msgid "user" msgstr "ユーザー" #: account/models.py:27 account/models.py:81 msgid "e-mail address" msgstr "メールアドレス" #: account/models.py:28 msgid "verified" msgstr "確認済み" #: account/models.py:29 msgid "primary" msgstr "メイン" #: account/models.py:34 msgid "email address" msgstr "メールアドレス" #: account/models.py:35 msgid "email addresses" msgstr "メールアドレス" #: account/models.py:83 msgid "created" msgstr "作成日時" #: account/models.py:85 msgid "sent" msgstr "送信日時" #: account/models.py:86 socialaccount/models.py:55 msgid "key" msgstr "" #: account/models.py:91 msgid "email confirmation" msgstr "メールアドレスの確認" #: account/models.py:92 msgid "email confirmations" msgstr "メールアドレスの確認" #: socialaccount/adapter.py:26 #, python-format msgid "" "An account already exists with this e-mail address. Please sign in to that " "account first, then connect your %s account." msgstr "" #: socialaccount/adapter.py:131 msgid "Your account has no password set up." msgstr "アカウントにパスワードを設定する必要があります。" #: socialaccount/adapter.py:138 msgid "Your account has no verified e-mail address." msgstr "確認済みのメールアドレスの登録が必要です。" #: socialaccount/apps.py:7 msgid "Social Accounts" msgstr "外部アカウント" #: socialaccount/models.py:43 socialaccount/models.py:77 msgid "provider" msgstr "プロバイダー" #: socialaccount/models.py:46 msgid "name" msgstr "ユーザー名" #: socialaccount/models.py:48 msgid "client id" msgstr "" #: socialaccount/models.py:50 msgid "App ID, or consumer key" msgstr "" #: socialaccount/models.py:51 msgid "secret key" msgstr "" #: socialaccount/models.py:53 msgid "API secret, client secret, or consumer secret" msgstr "" #: socialaccount/models.py:58 msgid "Key" msgstr "" #: socialaccount/models.py:66 msgid "social application" msgstr "" #: socialaccount/models.py:67 msgid "social applications" msgstr "" #: socialaccount/models.py:96 msgid "uid" msgstr "" #: socialaccount/models.py:98 msgid "last login" msgstr "" #: socialaccount/models.py:100 msgid "date joined" msgstr "" #: socialaccount/models.py:102 msgid "extra data" msgstr "" #: socialaccount/models.py:106 msgid "social account" msgstr "" #: socialaccount/models.py:107 msgid "social accounts" msgstr "" #: socialaccount/models.py:133 msgid "token" msgstr "" #: socialaccount/models.py:135 msgid "\"oauth_token\" (OAuth1) or access token (OAuth2)" msgstr "" #: socialaccount/models.py:138 msgid "token secret" msgstr "" #: socialaccount/models.py:140 msgid "\"oauth_token_secret\" (OAuth1) or refresh token (OAuth2)" msgstr "" #: socialaccount/models.py:142 msgid "expires at" msgstr "" #: socialaccount/models.py:146 msgid "social application token" msgstr "" #: socialaccount/models.py:147 msgid "social application tokens" msgstr "" #: socialaccount/providers/douban/views.py:36 msgid "Invalid profile data" msgstr "" #: socialaccount/providers/oauth/client.py:78 #, python-format msgid "Invalid response while obtaining request token from \"%s\"." msgstr "" "不正なレスポンスが返されたため、 \"%s\" からリクエストトークンを取得できませ" "んでした。" #: socialaccount/providers/oauth/client.py:109 #, python-format msgid "Invalid response while obtaining access token from \"%s\"." msgstr "" "不正なレスポンスが返されたため、 \"%s\" からアクセストークンを取得できません" "でした。" #: socialaccount/providers/oauth/client.py:128 #, python-format msgid "No request token saved for \"%s\"." msgstr "\"%s\" のリクエストトークンを保存できませんでした。" #: socialaccount/providers/oauth/client.py:177 #, python-format msgid "No access token saved for \"%s\"." msgstr "\"%s\" のアクセストークンを保存できませんでした。" #: socialaccount/providers/oauth/client.py:197 #, python-format msgid "No access to private resources at \"%s\"." msgstr "\"%s\" の情報にアクセスできませんでした。" #: templates/account/account_inactive.html:5 #: templates/account/account_inactive.html:8 msgid "Account Inactive" msgstr "無効なアカウント" #: templates/account/account_inactive.html:10 msgid "This account is inactive." msgstr "このアカウントは無効です。" #: templates/account/email.html:5 msgid "Account" msgstr "アカウント" #: templates/account/email.html:8 msgid "E-mail Addresses" msgstr "メールアドレス" #: templates/account/email.html:10 msgid "The following e-mail addresses are associated with your account:" msgstr "以下のメールアドレスがアカウントに登録されています:" #: templates/account/email.html:24 msgid "Verified" msgstr "確認済み" #: templates/account/email.html:26 msgid "Unverified" msgstr "未確認" #: templates/account/email.html:28 msgid "Primary" msgstr "メイン" #: templates/account/email.html:34 msgid "Make Primary" msgstr "メインにする" #: templates/account/email.html:35 msgid "Re-send Verification" msgstr "確認メールを再送する" #: templates/account/email.html:36 templates/socialaccount/connections.html:35 msgid "Remove" msgstr "削除" #: templates/account/email.html:43 msgid "Warning:" msgstr "注意:" #: templates/account/email.html:43 msgid "" "You currently do not have any e-mail address set up. You should really add " "an e-mail address so you can receive notifications, reset your password, etc." msgstr "" "メールアドレスが設定されていません。通知を受け取ったり、パスワードをリセット" "したりするためにはメールアドレスを登録する必要があります。" #: templates/account/email.html:48 msgid "Add E-mail Address" msgstr "メールアドレスの登録" #: templates/account/email.html:53 msgid "Add E-mail" msgstr "メールアドレスの登録" #: templates/account/email.html:62 msgid "Do you really want to remove the selected e-mail address?" msgstr "選択されたメールアドレスを削除してもよろしいですか?" #: templates/account/email/email_confirmation_message.txt:1 #, fuzzy, python-format #| msgid "" #| "User %(user_display)s at %(site_name)s has given this as an email " #| "address.\n" #| "\n" #| "To confirm this is correct, go to %(activate_url)s\n" msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because user %(user_display)s has given yours " "as an e-mail address to connect their account.\n" "\n" "To confirm this is correct, go to %(activate_url)s\n" msgstr "" "%(user_display)s さんが %(site_name)s でこのメールアドレスを登録しようとして" "います。問題がなければ、確認のためにこのURLをクリックしてください。\n" "%(activate_url)s\n" #: templates/account/email/email_confirmation_message.txt:7 #, python-format msgid "" "Thank you from %(site_name)s!\n" "%(site_domain)s" msgstr "" #: templates/account/email/email_confirmation_subject.txt:3 #, fuzzy #| msgid "Confirm E-mail Address" msgid "Please Confirm Your E-mail Address" msgstr "メールアドレスの確認" #: templates/account/email/password_reset_key_message.txt:1 #, fuzzy, python-format #| msgid "" #| "You're receiving this e-mail because you or someone else has requested a " #| "password for your user account at %(site_domain)s.\n" #| "It can be safely ignored if you did not request a password reset. Click " #| "the link below to reset your password." msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because you or someone else has requested a " "password for your user account.\n" "It can be safely ignored if you did not request a password reset. Click the " "link below to reset your password." msgstr "" "このメールは、あなた(もしくは別の誰か)が %(site_domain)s でパスワードの再設" "定を行おうとしたために送られました。\n" "パスワードの再設定を要求したのがあなたではない場合、このメールは無視してくだ" "さい。パスワードを再設定するためには、以下のリンクをクリックしてください。" #: templates/account/email/password_reset_key_message.txt:8 #, python-format msgid "In case you forgot, your username is %(username)s." msgstr "あなたのアカウント(ユーザー名)は %(username)s です。" #: templates/account/email/password_reset_key_message.txt:10 #, python-format msgid "" "Thank you for using %(site_name)s!\n" "%(site_domain)s" msgstr "" #: templates/account/email/password_reset_key_subject.txt:3 msgid "Password Reset E-mail" msgstr "パスワード再設定メール" #: templates/account/email_confirm.html:6 #: templates/account/email_confirm.html:10 msgid "Confirm E-mail Address" msgstr "メールアドレスの確認" #: templates/account/email_confirm.html:16 #, python-format msgid "" "Please confirm that %(email)s is an e-mail " "address for user %(user_display)s." msgstr "" "メールアドレス %(email)s がユーザー " "%(user_display)s さんのものであることを確認してください。" #: templates/account/email_confirm.html:20 msgid "Confirm" msgstr "確認する" #: templates/account/email_confirm.html:27 #, python-format msgid "" "This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request." msgstr "" "メールアドレス確認用のリンクが不正か、期限が切れています。確認用のメールを再送してください。" #: templates/account/login.html:6 templates/account/login.html:10 #: templates/account/login.html:43 msgid "Sign In" msgstr "ログイン" #: templates/account/login.html:15 #, python-format msgid "" "Please sign in with one\n" "of your existing third party accounts. Or, sign " "up\n" "for a %(site_name)s account and sign in below:" msgstr "" "お持ちの外部アカウントでログインするか、%(site_name)sに ユーザー登録 してログインしてください。" #: templates/account/login.html:25 msgid "or" msgstr "または" #: templates/account/login.html:32 #, python-format msgid "" "If you have not created an account yet, then please\n" "sign up first." msgstr "" "アカウントをまだお持ちでなければ、こちらから ユー" "ザー登録 してください。" #: templates/account/login.html:42 msgid "Forgot Password?" msgstr "パスワードをお忘れですか?" #: templates/account/logout.html:5 templates/account/logout.html:8 #: templates/account/logout.html:17 msgid "Sign Out" msgstr "ログアウト" #: templates/account/logout.html:10 msgid "Are you sure you want to sign out?" msgstr "ログアウトしますか?" #: templates/account/messages/cannot_delete_primary_email.txt:2 #, python-format msgid "You cannot remove your primary e-mail address (%(email)s)." msgstr "メインのメールアドレス(%(email)s)を削除することはできません。" #: templates/account/messages/email_confirmation_sent.txt:2 #, python-format msgid "Confirmation e-mail sent to %(email)s." msgstr "%(email)s に確認メールを送信しました。" #: templates/account/messages/email_confirmed.txt:2 #, python-format msgid "You have confirmed %(email)s." msgstr "%(email)s は確認されました。" #: templates/account/messages/email_deleted.txt:2 #, python-format msgid "Removed e-mail address %(email)s." msgstr "メールアドレス %(email)s を削除しました。" #: templates/account/messages/logged_in.txt:4 #, python-format msgid "Successfully signed in as %(name)s." msgstr "ユーザー %(name)s としてログインしました。" #: templates/account/messages/logged_out.txt:2 msgid "You have signed out." msgstr "ログアウトしました。" #: templates/account/messages/password_changed.txt:2 msgid "Password successfully changed." msgstr "パスワードが変更されました。" #: templates/account/messages/password_set.txt:2 msgid "Password successfully set." msgstr "メインのメールアドレスが設定されました。" #: templates/account/messages/primary_email_set.txt:2 msgid "Primary e-mail address set." msgstr "メインのメールアドレスが設定されました。" #: templates/account/messages/unverified_primary_email.txt:2 msgid "Your primary e-mail address must be verified." msgstr "メインのメールアドレスは確認済みでなければいけません。" #: templates/account/password_change.html:5 #: templates/account/password_change.html:8 #: templates/account/password_change.html:13 #: templates/account/password_reset_from_key.html:4 #: templates/account/password_reset_from_key.html:7 #: templates/account/password_reset_from_key_done.html:4 #: templates/account/password_reset_from_key_done.html:7 msgid "Change Password" msgstr "パスワード変更" #: templates/account/password_reset.html:6 #: templates/account/password_reset.html:10 #: templates/account/password_reset_done.html:6 #: templates/account/password_reset_done.html:9 msgid "Password Reset" msgstr "パスワード再設定" #: templates/account/password_reset.html:15 msgid "" "Forgotten your password? Enter your e-mail address below, and we'll send you " "an e-mail allowing you to reset it." msgstr "" "パスワードをお忘れですか?パスワードをリセットするために、メールアドレスを入" "力してください。" #: templates/account/password_reset.html:20 msgid "Reset My Password" msgstr "パスワードをリセット" #: templates/account/password_reset.html:23 msgid "Please contact us if you have any trouble resetting your password." msgstr "パスワードの再設定に問題がある場合はご連絡ください。" #: templates/account/password_reset_done.html:15 msgid "" "We have sent you an e-mail. Please contact us if you do not receive it " "within a few minutes." msgstr "" "パスワード再設定用のメールを送信しました。数分たっても届かない場合はご連絡く" "ださい。" #: templates/account/password_reset_from_key.html:7 msgid "Bad Token" msgstr "不正なトークン" #: templates/account/password_reset_from_key.html:11 #, python-format msgid "" "The password reset link was invalid, possibly because it has already been " "used. Please request a new password reset." msgstr "" "パスワード再設定用のリンクが不正です。すでに使用された可能性があります。もう" "一度 パスワードの再設定をお試しくださ" "い。" #: templates/account/password_reset_from_key.html:17 msgid "change password" msgstr "パスワード変更" #: templates/account/password_reset_from_key.html:20 #: templates/account/password_reset_from_key_done.html:8 msgid "Your password is now changed." msgstr "パスワードが変更されました。" #: templates/account/password_set.html:5 templates/account/password_set.html:8 #: templates/account/password_set.html:13 msgid "Set Password" msgstr "パスワード設定" #: templates/account/signup.html:5 templates/socialaccount/signup.html:5 msgid "Signup" msgstr "ユーザー登録" #: templates/account/signup.html:8 templates/account/signup.html:18 #: templates/socialaccount/signup.html:8 templates/socialaccount/signup.html:19 msgid "Sign Up" msgstr "ユーザー登録" #: templates/account/signup.html:10 #, python-format msgid "" "Already have an account? Then please sign in." msgstr "" "すでにアカウントをお持ちであれば、こちらから ログイ" "ン してください。" #: templates/account/signup_closed.html:5 #: templates/account/signup_closed.html:8 msgid "Sign Up Closed" msgstr "ユーザー登録停止中" #: templates/account/signup_closed.html:10 msgid "We are sorry, but the sign up is currently closed." msgstr "申し訳ありません、現在ユーザー登録を停止しています。" #: templates/account/snippets/already_logged_in.html:5 msgid "Note" msgstr "注意" #: templates/account/snippets/already_logged_in.html:5 #, python-format msgid "you are already logged in as %(user_display)s." msgstr "%(user_display)s さんとしてログイン中です。" #: templates/account/verification_sent.html:5 #: templates/account/verification_sent.html:8 #: templates/account/verified_email_required.html:5 #: templates/account/verified_email_required.html:8 msgid "Verify Your E-mail Address" msgstr "メールアドレスを確認してください" #: templates/account/verification_sent.html:10 msgid "" "We have sent an e-mail to you for verification. Follow the link provided to " "finalize the signup process. Please contact us if you do not receive it " "within a few minutes." msgstr "" "確認のメールを送信しました。メールに記載されたリンクをクリックして、ユーザー" "登録を完了させてください。数分待っても確認のメールが届かない場合はご連絡くだ" "さい。" #: templates/account/verified_email_required.html:12 msgid "" "This part of the site requires us to verify that\n" "you are who you claim to be. For this purpose, we require that you\n" "verify ownership of your e-mail address. " msgstr "" "このページにアクセスするためには、本人確認が必要です。\n" "そのために、登録されているメールアドレスがご自身のものであることを確認してい" "ただきます。" #: templates/account/verified_email_required.html:16 msgid "" "We have sent an e-mail to you for\n" "verification. Please click on the link inside this e-mail. Please\n" "contact us if you do not receive it within a few minutes." msgstr "" "確認のためのメールを送信しましたので、記載されたリンクをクリックしてくださ" "い。\n" "数分以内にメールが届かない場合はご連絡ください。" #: templates/account/verified_email_required.html:20 #, python-format msgid "" "Note: you can still change your e-" "mail address." msgstr "" "注意: メールアドレスの変更をし" "ていただくことも可能です。" #: templates/openid/login.html:9 msgid "OpenID Sign In" msgstr "OpenID ログイン" #: templates/socialaccount/authentication_error.html:5 #: templates/socialaccount/authentication_error.html:8 msgid "Social Network Login Failure" msgstr "ソーシャルネットワークログインに失敗しました" #: templates/socialaccount/authentication_error.html:10 msgid "" "An error occurred while attempting to login via your social network account." msgstr "" "ソーシャルネットワークアカウントにログインする際にエラーが発生しました。" #: templates/socialaccount/connections.html:5 #: templates/socialaccount/connections.html:8 msgid "Account Connections" msgstr "アカウントリンク" #: templates/socialaccount/connections.html:11 msgid "" "You can sign in to your account using any of the following third party " "accounts:" msgstr "以下の外部アカウントを使ってログインすることができます:" #: templates/socialaccount/connections.html:43 msgid "" "You currently have no social network accounts connected to this account." msgstr "あなたのカウントに結びつけられた外部アカウントはありません。" #: templates/socialaccount/connections.html:46 msgid "Add a 3rd Party Account" msgstr "外部アカウントを追加する" #: templates/socialaccount/login_cancelled.html:5 #: templates/socialaccount/login_cancelled.html:9 msgid "Login Cancelled" msgstr "ログインはキャンセルされました" #: templates/socialaccount/login_cancelled.html:13 #, python-format msgid "" "You decided to cancel logging in to our site using one of your existing " "accounts. If this was a mistake, please proceed to sign in." msgstr "" "既存の外部アカウントを使ったログインはキャンセルされました。\n" "やり直される場合はログインページにお進みくださ" "い。" #: templates/socialaccount/messages/account_connected.txt:2 msgid "The social account has been connected." msgstr "外部アカウントがリンクされました" #: templates/socialaccount/messages/account_connected_other.txt:2 msgid "The social account is already connected to a different account." msgstr "この外部アカウントは他のアカウントにリンクされています。" #: templates/socialaccount/messages/account_disconnected.txt:2 msgid "The social account has been disconnected." msgstr "外部アカウントのリンクが解除されました。" #: templates/socialaccount/signup.html:10 #, python-format msgid "" "You are about to use your %(provider_name)s account to login to\n" "%(site_name)s. As a final step, please complete the following form:" msgstr "" "%(provider_name)s アカウントを使って %(site_name)s にログインしようとしていま" "す。\n" "ユーザー登録のために、以下のフォームに記入してください。" #~ msgid "The login and/or password you specified are not correct." #~ msgstr "入力されたログインIDもしくはパスワードが正しくありません。" #~ msgid "Usernames can only contain letters, digits and @/./+/-/_." #~ msgstr "ユーザー名には 英数字と 記号[@ . + - _ ] のみが使えます" #~ msgid "This username is already taken. Please choose another." #~ msgstr "" #~ "このユーザー名はすでに使用されています。他のユーザー名を指定してください。" #, fuzzy #~| msgid "Sign In" #~ msgid "Shopify Sign In" #~ msgstr "ログイン" #~ msgid "Thanks for using our site!" #~ msgstr "よろしくお願いいたします。" #~ msgid "" #~ "You have confirmed that %(email)s is an " #~ "e-mail address for user %(user_display)s." #~ msgstr "" #~ "%(email)sがユーザー%(user_display)sさんの" #~ "メールアドレスであることを確認しました。" #~ msgid "Confirmation e-mail sent to %(email)s" #~ msgstr "確認のメールを %(email)s に送信しました" #~ msgid "Delete Password" #~ msgstr "パスワードの削除" #~ msgid "" #~ "You may delete your password since you are currently logged in using " #~ "OpenID." #~ msgstr "" #~ "現在 OpenID を使ってログインしているので、パスワードを削除することができま" #~ "す。" #~ msgid "delete my password" #~ msgstr "パスワードを削除する" #~ msgid "Password Deleted" #~ msgstr "パスワードの削除" #~ msgid "Your password has been deleted." #~ msgstr "パスワードが削除されました。" django-allauth-0.35.0/allauth/locale/el/0000755000076500000240000000000013235133532020741 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/el/LC_MESSAGES/0000755000076500000240000000000013235133532022526 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/el/LC_MESSAGES/django.mo0000644000076500000240000004427113235132042024330 0ustar pennersrstaff00000000000000 / 7 \Q 6 -   / @ I T g I w LA" &)9:t{p_/28959 I Vc'x -4blB L"* ?K!Rt #A6U@&f)?;#3W?q<o 4!Vir2g\nP:C~H`*3$^,-  * 9GWj ~    ) C W d h m .v x /"7N"x"v"-v##)#*#$'$,?$5l$h$ %~&&P&''/'2F'Dy'']'8(?(_(}(,(()r,*X*Y* R+_+ ++"+_+>;,?z,,,,,!-*1-a\---5-"../Kq007081?1X15i1/1#11220&2W2+f242.2V2jM3|3 54IV5O55V|6:6;7yJ7l71889:+:!::A;R;Nb;!;m<A>>?`@ ABB3C"CZD>cDfD1 EO;EE EE%EE F%FBF _FF'FF F!F FGGG (G3G+DG+pG#G-G-G'H DHQHUHdH9HGk dJB(URgm ifK WPxe0lEDh%1bQAaC M#-Nu2H8nv\rO)|[]{z."4IVF<=5L$^o:9Ywc +>7,/t?6`Zpj @!}3&Ss'~y_qX;*T"oauth_token" (OAuth1) or access token (OAuth2)"oauth_token_secret" (OAuth1) or refresh token (OAuth2)Note: you can still change your e-mail address.A user is already registered with this e-mail address.API secret, client secret, or consumer secretAccountAccount ConnectionsAccount InactiveAccountsAdd E-mailAdd E-mail AddressAdd a 3rd Party AccountAlready have an account? Then please sign in.An account already exists with this e-mail address. Please sign in to that account first, then connect your %s account.An error occurred while attempting to login via your social network account.App ID, or consumer keyAre you sure you want to sign out?Bad TokenChange PasswordConfirmConfirm E-mail AddressConfirmation e-mail sent to %(email)s.Current PasswordDo you really want to remove the selected e-mail address?E-mailE-mail (optional)E-mail AddressesE-mail addressForgot Password?Forgotten your password? Enter your e-mail address below, and we'll send you an e-mail allowing you to reset it.If you have not created an account yet, then please sign up first.In case you forgot, your username is %(username)s.Invalid response while obtaining access token from "%s".Invalid response while obtaining request token from "%s".KeyLogin CancelledMake PrimaryNew PasswordNew Password (again)No access to private resources at "%s".No access token saved for "%s".No request token saved for "%s".NoteOpenID Sign InPasswordPassword (again)Password ResetPassword Reset E-mailPassword must be a minimum of {0} characters.Password successfully changed.Password successfully set.Please confirm that %(email)s is an e-mail address for user %(user_display)s.Please contact us if you have any trouble resetting your password.Please sign in with one of your existing third party accounts. Or, sign up for a %(site_name)s account and sign in below:Please type your current password.PrimaryPrimary e-mail address set.Re-send VerificationRemember MeRemoveRemoved e-mail address %(email)s.Reset My PasswordSet PasswordSign InSign OutSign UpSign Up ClosedSignupSocial AccountsSocial Network Login FailureSuccessfully signed in as %(name)s.The e-mail address and/or password you specified are not correct.The e-mail address is not assigned to any user accountThe following e-mail addresses are associated with your account:The password reset link was invalid, possibly because it has already been used. Please request a new password reset.The social account has been connected.The social account has been disconnected.The social account is already connected to a different account.The username and/or password you specified are not correct.This account is currently inactive.This account is inactive.This e-mail address is already associated with another account.This e-mail address is already associated with this account.This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request.This part of the site requires us to verify that you are who you claim to be. For this purpose, we require that you verify ownership of your e-mail address. UnverifiedUsernameUsername can not be used. Please use other username.Username or e-mailVerifiedVerify Your E-mail AddressWarning:We are sorry, but the sign up is currently closed.We have sent an e-mail to you for verification. Please click on the link inside this e-mail. Please contact us if you do not receive it within a few minutes.We have sent an e-mail to you for verification. Follow the link provided to finalize the signup process. Please contact us if you do not receive it within a few minutes.We have sent you an e-mail. Please contact us if you do not receive it within a few minutes.You are about to use your %(provider_name)s account to login to %(site_name)s. As a final step, please complete the following form:You can sign in to your account using any of the following third party accounts:You cannot remove your primary e-mail address (%(email)s).You currently do not have any e-mail address set up. You should really add an e-mail address so you can receive notifications, reset your password, etc.You currently have no social network accounts connected to this account.You decided to cancel logging in to our site using one of your existing accounts. If this was a mistake, please proceed to sign in.You have confirmed %(email)s.You have signed out.You must type the same password each time.Your account has no password set up.Your account has no verified e-mail address.Your password is now changed.Your primary e-mail address must be verified.change passwordclient idcreateddate joinede-mail addressemail addressemail addressesemail confirmationemail confirmationsexpires atextra datafield labelLoginkeylast loginnameorprimaryprovidersecret keysentsocial accountsocial accountssocial applicationsocial application tokensocial application tokenssocial applicationstoken secretuiduserverifiedyou are already logged in as %(user_display)s.Project-Id-Version: Report-Msgid-Bugs-To: POT-Creation-Date: 2018-02-02 12:55-0600 PO-Revision-Date: 2014-08-12 00:29+0200 Last-Translator: FULL NAME Language-Team: LANGUAGE Language: el MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Generator: Poedit 1.6.5 "oauth_token" (OAuth1) ή access token (OAuth2)"oauth_token_secret" (OAuth1) ή refresh token (OAuth2)Σημείωση: μπορείτε νααλλάξετε το e-mail σας.Ένας χρήστης έχει ήδη εγγραφεί με τη συγκεκριμένη διεύθυνση e-mail.API secret, client secret, or consumer secretΛογαριασμόςΣυνδέσεις λογαριασμώνΜη ενεργός λογαριασμόςΛογαριασμοίΠροσθήκη e-mailΠροσθήκη διεύθυνσης e-mailΠροσθέστε ένα λογαριασμό 3ου.Έχετε ήδη κωδικό; Παρακαλούμε συνδεθείτε.Υπάρχει ήδη΄ενας λογαριασμός με αυτή τη διεύθυνση e-mail. Παρακαλούμε συνδεθείτε πρώτα σε αυτό το λογαριασμό και ακολούθως συνδέστε τον %s λογαριασμό.Υπήρξε σφάλμα κατά τη σύνδεση με το λογαριασμό κοινωνικής δικτύωσης.App ID ή consumer keyΕίστε σίγουρος ότι θέλετε να αποσυνδεθείτε;Λάθος token.Αλλαγή κωδικούΕπιβεβαίωσηΕπιβεβαίωση διεύθυνσης e-mailΕπιβεβαιωτικό e-mail στάλθηκε στο %(email)s.Τρέχον κωδικόςΘέλετε να αφαιρέσετε την επιλεγμένη διεύθυνση e-mail;E-mailE-mail (προαιρετικό)Διευθύνσεις e-mailΔιεύθυνση e-mailΞεχάσατε τον κωδικό σας;Ξεχάσατε τον κωδικό σας; Συμπληρώσατε τη διεύθυνση e-mail σας παρακάτω και θα σας στείλουμε ένα e-mail ώστε να τον επαναφέρετε.Αν δεν έχετε δημιουργήσει λογαριασμό πρέπει να εγγραφείτε.Σε περίπτωση που το ξεχάσατε, το όνομα χρήστη σας είναι %(username)s.Λάθος απάντηση κατά τη λήψη του access token από το "%s".Λάθος απάντηση κατά τη λήψη του request token από το "%s".ΚλειδίΑκύρωση σύνδεσηςΝα γίνει πρωτεύωνΝέος κωδικόςΝέος κωδικός (ξανά)Δεν υπάρχει πρόσβαση σε ιδιωτικούς πόρους για το "%s".Δεν αποθηκεύθηκε access token για το "%s".Δεν αποθηκεύθηκε request token για το "%s".ΣημείωσηΣύνδεση με OpenIDΚωδικόςΚωδικός (ξανά)Επαναφορά κωδικούE-mail επαναφοράς κωδικούΟ κωδικός πρέπει να είναι κατ' ελάχιστο {0} χαρακτήρες.Επιτυχής αλλαγή κωδικού.Επιτυχής δημιουργία κωδικού.Παρακαλούμε επιβεβαιώσατε ότι η %(email)s είναι μια διεύθυνση e-mail για το χρήστη %(user_display)s.Παρακαλούμε επικοινωνήστε μαζί μας αν έχετε προβλήματα κατά την επαναφορά του κωδικού σας.Παρακαλούμε συνδεθείτε με έναν από τους λογαριασμούς σας. Ή, εγγραφείτε για ένα λογαριασμό στο %(site_name)s παρακάτω:Παρακαλούμε συμπληρώσατε τον κωδικό σας.ΠρωτεύωνΕνεργοποίηση πρωτεύοντος e-mail.Επαναποστολή της επιβεβαίωσηςΝα με θυμάσαιΑφαίρεσηΗ διεύθυνση %(email)s αφαιρέθηκε.Επαναφορά του κωδικού μουΔημιουργία κωδικούΕίσοδοςΑποσύνδεσηΕγγραφήΟι εγγραφές έχουν κλείσει.ΕγγραφήΚοινωνικοί λογαριασμοίΕσφαλμένη κοινωνική σύνδεσηΕπιτυχής σύνδεση ως %(name)s.Η διεύθυνση e-mail ή/και ο κωδικός δεν είναι σωστά.Η διεύθυνση e-mail δεν έχει συσχετιστεί με κάποιο λογαριασμόΟι επόμενες διευθύνσεις e-mail έχουν συσχετιστεί με το λογαριασμό σας:Η σύνδεση επαναφοράς κωδικού δεν είναι σωστή πιθανότητα επειδή έχει χρησιμοποιηθεί ήδη. Παρακαλούμε αιτηθείτε μια νέα επαναφορά κωδικού.Ο κοινωνικός λογαριασμός έχει συνδεθεί.Ο κοινωνικός λογαριασμός έχει αποσυνδεθεί.Ο κοινωνικός λογαριασμός είναι ήδη συνδεδεμένος σε διαφορετικό λογαριασμό.Το όνομα χρήστη ή/και ο κωδικός δεν είναι σωστά.Ο λογαριασμός δεν είναι ενεργόςΟ λογαριασμός δεν είναι ενεργός.Αυτή η διεύθυνση e-mail έχει ήδη συσχετιστεί με έναν άλλο λογαριασμό.Αυτή η διεύθυνση e-mail έχει ήδη συσχετιστεί με το λογαριασμό.Η σύνδεση επιβεβαίωσης e-mail είναι εσφαλμένη. Παρακαλούμε δημιουργήστε μια νέα.Για πρόσβαση στο συγκεκριμένο τμήμα πρέπει να επιβεβαιώσετε την ταυτότητα σας. Έτσι, θα πρέπει να επιβεβαιώσετε την ιδιοκτησία της διεύθυνσης e-mail σας. Μη επιβεβαιωμένοΌνομα χρήστηΤο όνομα χρήστη δε μπορεί να χρησιμοποιηθεί. Παρακαλούμε χρησιμοποιήστε άλλο όνομα χρήστη.Όνομα χρήστη ή e-mailΕπιβεβαιωμένοΕπιβεβαιώσατε τη διεύθυνση e-mail σας.Προσοχή:Λυπούμαστε αλλά οι εγγραφές έχουν κλείσει.Σαςστείλαμε ένα e-mail για επιβεβαίωση. Παρακαλούμε ακολουθήστε τη σύνδεση που περιέχει. Παρακαλούμε επικοινωνήστε μαζί μας αν δε το λάβετε εντός λίγων λεπτών.Σας έχουμε στείλει ένα e-mail για επιβεβαίωση. Παρακαλούμε ακολουθήστε τη σύνδεση στο e-mail για να ολοκλήρωσετε τη διαδικασία εγγραφής. Παρακαλούμε επικοινωνήστε μαζί μας δε το λάβετε εντός λίγων λεπτών.Σας έχει σταλεί ένα e-mail. Παρακαλούμε επικοινωνήστε μαζί μας αν δε το παραλάβατε εντός λίγων λεπτών.Θα χρησιμοποιήσετε το λογαριασμό σας στο %(provider_name)s για να συνδεθείτε στο %(site_name)s. Σαν τελικό βήμα, παρακαλούμε συμπληρώστε τη φόρμα:Μπορείτε να συνδεθείτε στο λογαριασμό σας χρησιμοποιώντας οποιονδήποτε από τους ακόλουθους λογαρισμούς:Δε μπορείτε να αφαιρέσετε το πρωτεύων e-mail σας (%(email)s).Δεν έχετε προσθέσει διευθύνσεις email. Πρέπει να προσθέσετε μια έτσι ώστε να μπορείτε να λάβετε ειδοποιήσεις, να επαναφέρετε τον κωδικό σας κλπ.Δεν υπάρχουν κοινωνικοί λογαριασμοί συνδεδεμένοι σε αυτό το λογαριασμό.Αποφασίσατε να ακυρώσετε τη σύνδεση στο site μας χρησιμοποιώντας έναν από τους λογαριασμούς σας. Αν αυτό ήταν λάθος παρακαλούμε συνδεθείτε.Έχετε επιβαβαιώσει το %(email)s.Έχετε αποσυνδεθεί.Πρέπει να συμπληρώνετε τον ίδιο κωδικό κάθε φορά.Ο λογαριασμός σας δεν έχει κωδικό.Ο λογαριασμός σας δεν έχει επιβεβαιωμένη διεύθυνση e-mail.Ο κωδικός σας έχει αλλάξει.Το πρωτεύων e-mail σας πρέπει να επιβεβαιωθεί.αλλαγή κωδικούclient idδημιουργήθηκεημερομηνία εγγραφήςδιεύθυνση e-mailδιεύθυνση emailδιευθύνσεις emailεπιβεβαίωση emailεπιβεβαιώσεις emailλήγει στιςεπιπλέον πληροφορίεςΣύνδεσηκλειδίτελευταία σύνδεσηόνομαήπρωτεύωνπάροχοςsecret keyστάλθηκεκοινωνικός λογαριασμόςκοινωνικοί λογαριασμοίκοινωνική εφαρμογήtoken κοινωνικής εφαρμογήςtoken κοινωνικών εφαρμογώνκοινωνικές εφαρμογέςtoken secretuidχρήστηςεπιβεβαιωμένοέχετε ήδη συνδεθεί ως %(user_display)s.django-allauth-0.35.0/allauth/locale/el/LC_MESSAGES/django.po0000644000076500000240000007343413235132037024342 0ustar pennersrstaff00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-02-02 12:55-0600\n" "PO-Revision-Date: 2014-08-12 00:29+0200\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: el\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 1.6.5\n" #: account/adapter.py:45 msgid "Username can not be used. Please use other username." msgstr "" "Το όνομα χρήστη δε μπορεί να χρησιμοποιηθεί. Παρακαλούμε χρησιμοποιήστε άλλο " "όνομα χρήστη." #: account/adapter.py:49 msgid "Too many failed login attempts. Try again later." msgstr "" #: account/adapter.py:51 msgid "A user is already registered with this e-mail address." msgstr "Ένας χρήστης έχει ήδη εγγραφεί με τη συγκεκριμένη διεύθυνση e-mail." #: account/adapter.py:288 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "Ο κωδικός πρέπει να είναι κατ' ελάχιστο {0} χαρακτήρες." #: account/apps.py:7 msgid "Accounts" msgstr "Λογαριασμοί" #: account/forms.py:61 account/forms.py:398 msgid "You must type the same password each time." msgstr "Πρέπει να συμπληρώνετε τον ίδιο κωδικό κάθε φορά." #: account/forms.py:91 account/forms.py:365 account/forms.py:476 msgid "Password" msgstr "Κωδικός" #: account/forms.py:92 msgid "Remember Me" msgstr "Να με θυμάσαι" #: account/forms.py:98 msgid "This account is currently inactive." msgstr "Ο λογαριασμός δεν είναι ενεργός" #: account/forms.py:101 msgid "The e-mail address and/or password you specified are not correct." msgstr "Η διεύθυνση e-mail ή/και ο κωδικός δεν είναι σωστά." #: account/forms.py:104 msgid "The username and/or password you specified are not correct." msgstr "Το όνομα χρήστη ή/και ο κωδικός δεν είναι σωστά." #: account/forms.py:113 account/forms.py:268 account/forms.py:426 #: account/forms.py:495 msgid "E-mail address" msgstr "Διεύθυνση e-mail" #: account/forms.py:115 account/forms.py:301 account/forms.py:421 #: account/forms.py:490 msgid "E-mail" msgstr "E-mail" #: account/forms.py:120 account/forms.py:123 account/forms.py:260 #: account/forms.py:264 msgid "Username" msgstr "Όνομα χρήστη" #: account/forms.py:130 msgid "Username or e-mail" msgstr "Όνομα χρήστη ή e-mail" #: account/forms.py:133 msgctxt "field label" msgid "Login" msgstr "Σύνδεση" #: account/forms.py:292 #, fuzzy #| msgid "E-mail (optional)" msgid "E-mail (again)" msgstr "E-mail (προαιρετικό)" #: account/forms.py:296 #, fuzzy #| msgid "email confirmation" msgid "E-mail address confirmation" msgstr "επιβεβαίωση email" #: account/forms.py:304 msgid "E-mail (optional)" msgstr "E-mail (προαιρετικό)" #: account/forms.py:345 #, fuzzy #| msgid "You must type the same password each time." msgid "You must type the same email each time." msgstr "Πρέπει να συμπληρώνετε τον ίδιο κωδικό κάθε φορά." #: account/forms.py:368 account/forms.py:477 msgid "Password (again)" msgstr "Κωδικός (ξανά)" #: account/forms.py:432 msgid "This e-mail address is already associated with this account." msgstr "Αυτή η διεύθυνση e-mail έχει ήδη συσχετιστεί με το λογαριασμό." #: account/forms.py:434 msgid "This e-mail address is already associated with another account." msgstr "Αυτή η διεύθυνση e-mail έχει ήδη συσχετιστεί με έναν άλλο λογαριασμό." #: account/forms.py:456 msgid "Current Password" msgstr "Τρέχον κωδικός" #: account/forms.py:457 account/forms.py:546 msgid "New Password" msgstr "Νέος κωδικός" #: account/forms.py:458 account/forms.py:547 msgid "New Password (again)" msgstr "Νέος κωδικός (ξανά)" #: account/forms.py:466 msgid "Please type your current password." msgstr "Παρακαλούμε συμπληρώσατε τον κωδικό σας." #: account/forms.py:504 msgid "The e-mail address is not assigned to any user account" msgstr "Η διεύθυνση e-mail δεν έχει συσχετιστεί με κάποιο λογαριασμό" #: account/forms.py:568 msgid "The password reset token was invalid." msgstr "" #: account/models.py:23 msgid "user" msgstr "χρήστης" #: account/models.py:27 account/models.py:81 msgid "e-mail address" msgstr "διεύθυνση e-mail" #: account/models.py:28 msgid "verified" msgstr "επιβεβαιωμένο" #: account/models.py:29 msgid "primary" msgstr "πρωτεύων" #: account/models.py:34 msgid "email address" msgstr "διεύθυνση email" #: account/models.py:35 msgid "email addresses" msgstr "διευθύνσεις email" #: account/models.py:83 msgid "created" msgstr "δημιουργήθηκε" #: account/models.py:85 msgid "sent" msgstr "στάλθηκε" #: account/models.py:86 socialaccount/models.py:55 msgid "key" msgstr "κλειδί" #: account/models.py:91 msgid "email confirmation" msgstr "επιβεβαίωση email" #: account/models.py:92 msgid "email confirmations" msgstr "επιβεβαιώσεις email" #: socialaccount/adapter.py:26 #, python-format msgid "" "An account already exists with this e-mail address. Please sign in to that " "account first, then connect your %s account." msgstr "" "Υπάρχει ήδη΄ενας λογαριασμός με αυτή τη διεύθυνση e-mail. Παρακαλούμε " "συνδεθείτε πρώτα σε αυτό το λογαριασμό και ακολούθως συνδέστε τον %s " "λογαριασμό." #: socialaccount/adapter.py:131 msgid "Your account has no password set up." msgstr "Ο λογαριασμός σας δεν έχει κωδικό." #: socialaccount/adapter.py:138 msgid "Your account has no verified e-mail address." msgstr "Ο λογαριασμός σας δεν έχει επιβεβαιωμένη διεύθυνση e-mail." #: socialaccount/apps.py:7 msgid "Social Accounts" msgstr "Κοινωνικοί λογαριασμοί" #: socialaccount/models.py:43 socialaccount/models.py:77 msgid "provider" msgstr "πάροχος" #: socialaccount/models.py:46 msgid "name" msgstr "όνομα" #: socialaccount/models.py:48 msgid "client id" msgstr "client id" #: socialaccount/models.py:50 msgid "App ID, or consumer key" msgstr "App ID ή consumer key" #: socialaccount/models.py:51 msgid "secret key" msgstr "secret key" #: socialaccount/models.py:53 msgid "API secret, client secret, or consumer secret" msgstr "API secret, client secret, or consumer secret" #: socialaccount/models.py:58 msgid "Key" msgstr "Κλειδί" #: socialaccount/models.py:66 msgid "social application" msgstr "κοινωνική εφαρμογή" #: socialaccount/models.py:67 msgid "social applications" msgstr "κοινωνικές εφαρμογές" #: socialaccount/models.py:96 msgid "uid" msgstr "uid" #: socialaccount/models.py:98 msgid "last login" msgstr "τελευταία σύνδεση" #: socialaccount/models.py:100 msgid "date joined" msgstr "ημερομηνία εγγραφής" #: socialaccount/models.py:102 msgid "extra data" msgstr "επιπλέον πληροφορίες" #: socialaccount/models.py:106 msgid "social account" msgstr "κοινωνικός λογαριασμός" #: socialaccount/models.py:107 msgid "social accounts" msgstr "κοινωνικοί λογαριασμοί" #: socialaccount/models.py:133 msgid "token" msgstr "" #: socialaccount/models.py:135 msgid "\"oauth_token\" (OAuth1) or access token (OAuth2)" msgstr "\"oauth_token\" (OAuth1) ή access token (OAuth2)" #: socialaccount/models.py:138 msgid "token secret" msgstr "token secret" #: socialaccount/models.py:140 msgid "\"oauth_token_secret\" (OAuth1) or refresh token (OAuth2)" msgstr "\"oauth_token_secret\" (OAuth1) ή refresh token (OAuth2)" #: socialaccount/models.py:142 msgid "expires at" msgstr "λήγει στις" #: socialaccount/models.py:146 msgid "social application token" msgstr "token κοινωνικής εφαρμογής" #: socialaccount/models.py:147 msgid "social application tokens" msgstr "token κοινωνικών εφαρμογών" #: socialaccount/providers/douban/views.py:36 msgid "Invalid profile data" msgstr "" #: socialaccount/providers/oauth/client.py:78 #, python-format msgid "Invalid response while obtaining request token from \"%s\"." msgstr "Λάθος απάντηση κατά τη λήψη του request token από το \"%s\"." #: socialaccount/providers/oauth/client.py:109 #, python-format msgid "Invalid response while obtaining access token from \"%s\"." msgstr "Λάθος απάντηση κατά τη λήψη του access token από το \"%s\"." #: socialaccount/providers/oauth/client.py:128 #, python-format msgid "No request token saved for \"%s\"." msgstr "Δεν αποθηκεύθηκε request token για το \"%s\"." #: socialaccount/providers/oauth/client.py:177 #, python-format msgid "No access token saved for \"%s\"." msgstr "Δεν αποθηκεύθηκε access token για το \"%s\"." #: socialaccount/providers/oauth/client.py:197 #, python-format msgid "No access to private resources at \"%s\"." msgstr "Δεν υπάρχει πρόσβαση σε ιδιωτικούς πόρους για το \"%s\"." #: templates/account/account_inactive.html:5 #: templates/account/account_inactive.html:8 msgid "Account Inactive" msgstr "Μη ενεργός λογαριασμός" #: templates/account/account_inactive.html:10 msgid "This account is inactive." msgstr "Ο λογαριασμός δεν είναι ενεργός." #: templates/account/email.html:5 msgid "Account" msgstr "Λογαριασμός" #: templates/account/email.html:8 msgid "E-mail Addresses" msgstr "Διευθύνσεις e-mail" #: templates/account/email.html:10 msgid "The following e-mail addresses are associated with your account:" msgstr "Οι επόμενες διευθύνσεις e-mail έχουν συσχετιστεί με το λογαριασμό σας:" #: templates/account/email.html:24 msgid "Verified" msgstr "Επιβεβαιωμένο" #: templates/account/email.html:26 msgid "Unverified" msgstr "Μη επιβεβαιωμένο" #: templates/account/email.html:28 msgid "Primary" msgstr "Πρωτεύων" #: templates/account/email.html:34 msgid "Make Primary" msgstr "Να γίνει πρωτεύων" #: templates/account/email.html:35 msgid "Re-send Verification" msgstr "Επαναποστολή της επιβεβαίωσης" #: templates/account/email.html:36 templates/socialaccount/connections.html:35 msgid "Remove" msgstr "Αφαίρεση" #: templates/account/email.html:43 msgid "Warning:" msgstr "Προσοχή:" #: templates/account/email.html:43 msgid "" "You currently do not have any e-mail address set up. You should really add " "an e-mail address so you can receive notifications, reset your password, etc." msgstr "" "Δεν έχετε προσθέσει διευθύνσεις email. Πρέπει να προσθέσετε μια έτσι ώστε να " "μπορείτε να λάβετε ειδοποιήσεις, να επαναφέρετε τον κωδικό σας κλπ." #: templates/account/email.html:48 msgid "Add E-mail Address" msgstr "Προσθήκη διεύθυνσης e-mail" #: templates/account/email.html:53 msgid "Add E-mail" msgstr "Προσθήκη e-mail" #: templates/account/email.html:62 msgid "Do you really want to remove the selected e-mail address?" msgstr "Θέλετε να αφαιρέσετε την επιλεγμένη διεύθυνση e-mail;" #: templates/account/email/email_confirmation_message.txt:1 #, fuzzy, python-format #| msgid "" #| "User %(user_display)s at %(site_name)s has given this as an email " #| "address.\n" #| "\n" #| "To confirm this is correct, go to %(activate_url)s\n" msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because user %(user_display)s has given yours " "as an e-mail address to connect their account.\n" "\n" "To confirm this is correct, go to %(activate_url)s\n" msgstr "" "Ο χρήστης %(user_display)s του %(site_name)s έδωση τη συγκεκριμένη ως " "διεύθυνση e-mail.\n" "\n" "Για να το επιβεβαιώσετε, παρακαλούμε επισκευθείτε το%(activate_url)s\n" #: templates/account/email/email_confirmation_message.txt:7 #, python-format msgid "" "Thank you from %(site_name)s!\n" "%(site_domain)s" msgstr "" #: templates/account/email/email_confirmation_subject.txt:3 #, fuzzy #| msgid "Confirm E-mail Address" msgid "Please Confirm Your E-mail Address" msgstr "Επιβεβαίωση διεύθυνσης e-mail" #: templates/account/email/password_reset_key_message.txt:1 #, fuzzy, python-format #| msgid "" #| "You're receiving this e-mail because you or someone else has requested a " #| "password for your user account at %(site_domain)s.\n" #| "It can be safely ignored if you did not request a password reset. Click " #| "the link below to reset your password." msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because you or someone else has requested a " "password for your user account.\n" "It can be safely ignored if you did not request a password reset. Click the " "link below to reset your password." msgstr "" "Λαμβάνετε αυτό το e-mail επειδή εσείς ή κάποιος άλλος αιτήθηκε επαναφορά του " "κωδικού σας για το %(site_domain)s.\n" "Μπορείτε να αγνοήσετε το εν λόγω e-mail αν δε ζητήσατε εσείς την επαναφορά " "του κωδικού. Αν θέλετε να αλλάξετε τον κωδικό σας κάντε κλικ στην παρακάτω " "σύνδεση:" #: templates/account/email/password_reset_key_message.txt:8 #, python-format msgid "In case you forgot, your username is %(username)s." msgstr "Σε περίπτωση που το ξεχάσατε, το όνομα χρήστη σας είναι %(username)s." #: templates/account/email/password_reset_key_message.txt:10 #, python-format msgid "" "Thank you for using %(site_name)s!\n" "%(site_domain)s" msgstr "" #: templates/account/email/password_reset_key_subject.txt:3 msgid "Password Reset E-mail" msgstr "E-mail επαναφοράς κωδικού" #: templates/account/email_confirm.html:6 #: templates/account/email_confirm.html:10 msgid "Confirm E-mail Address" msgstr "Επιβεβαίωση διεύθυνσης e-mail" #: templates/account/email_confirm.html:16 #, python-format msgid "" "Please confirm that %(email)s is an e-mail " "address for user %(user_display)s." msgstr "" "Παρακαλούμε επιβεβαιώσατε ότι η %(email)s " "είναι μια διεύθυνση e-mail για το χρήστη %(user_display)s." #: templates/account/email_confirm.html:20 msgid "Confirm" msgstr "Επιβεβαίωση" #: templates/account/email_confirm.html:27 #, python-format msgid "" "This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request." msgstr "" "Η σύνδεση επιβεβαίωσης e-mail είναι εσφαλμένη. Παρακαλούμε δημιουργήστε μια νέα." #: templates/account/login.html:6 templates/account/login.html:10 #: templates/account/login.html:43 msgid "Sign In" msgstr "Είσοδος" #: templates/account/login.html:15 #, python-format msgid "" "Please sign in with one\n" "of your existing third party accounts. Or, sign " "up\n" "for a %(site_name)s account and sign in below:" msgstr "" "Παρακαλούμε συνδεθείτε με έναν\n" "από τους λογαριασμούς σας. Ή, εγγραφείτε\n" "για ένα λογαριασμό στο %(site_name)s παρακάτω:" #: templates/account/login.html:25 msgid "or" msgstr "ή" #: templates/account/login.html:32 #, python-format msgid "" "If you have not created an account yet, then please\n" "sign up first." msgstr "" "Αν δεν έχετε δημιουργήσει λογαριασμό πρέπει να\n" "εγγραφείτε." #: templates/account/login.html:42 msgid "Forgot Password?" msgstr "Ξεχάσατε τον κωδικό σας;" #: templates/account/logout.html:5 templates/account/logout.html:8 #: templates/account/logout.html:17 msgid "Sign Out" msgstr "Αποσύνδεση" #: templates/account/logout.html:10 msgid "Are you sure you want to sign out?" msgstr "Είστε σίγουρος ότι θέλετε να αποσυνδεθείτε;" #: templates/account/messages/cannot_delete_primary_email.txt:2 #, python-format msgid "You cannot remove your primary e-mail address (%(email)s)." msgstr "Δε μπορείτε να αφαιρέσετε το πρωτεύων e-mail σας (%(email)s)." #: templates/account/messages/email_confirmation_sent.txt:2 #, python-format msgid "Confirmation e-mail sent to %(email)s." msgstr "Επιβεβαιωτικό e-mail στάλθηκε στο %(email)s." #: templates/account/messages/email_confirmed.txt:2 #, python-format msgid "You have confirmed %(email)s." msgstr "Έχετε επιβαβαιώσει το %(email)s." #: templates/account/messages/email_deleted.txt:2 #, python-format msgid "Removed e-mail address %(email)s." msgstr "Η διεύθυνση %(email)s αφαιρέθηκε." #: templates/account/messages/logged_in.txt:4 #, python-format msgid "Successfully signed in as %(name)s." msgstr "Επιτυχής σύνδεση ως %(name)s." #: templates/account/messages/logged_out.txt:2 msgid "You have signed out." msgstr "Έχετε αποσυνδεθεί." #: templates/account/messages/password_changed.txt:2 msgid "Password successfully changed." msgstr "Επιτυχής αλλαγή κωδικού." #: templates/account/messages/password_set.txt:2 msgid "Password successfully set." msgstr "Επιτυχής δημιουργία κωδικού." #: templates/account/messages/primary_email_set.txt:2 msgid "Primary e-mail address set." msgstr "Ενεργοποίηση πρωτεύοντος e-mail." #: templates/account/messages/unverified_primary_email.txt:2 msgid "Your primary e-mail address must be verified." msgstr "Το πρωτεύων e-mail σας πρέπει να επιβεβαιωθεί." #: templates/account/password_change.html:5 #: templates/account/password_change.html:8 #: templates/account/password_change.html:13 #: templates/account/password_reset_from_key.html:4 #: templates/account/password_reset_from_key.html:7 #: templates/account/password_reset_from_key_done.html:4 #: templates/account/password_reset_from_key_done.html:7 msgid "Change Password" msgstr "Αλλαγή κωδικού" #: templates/account/password_reset.html:6 #: templates/account/password_reset.html:10 #: templates/account/password_reset_done.html:6 #: templates/account/password_reset_done.html:9 msgid "Password Reset" msgstr "Επαναφορά κωδικού" #: templates/account/password_reset.html:15 msgid "" "Forgotten your password? Enter your e-mail address below, and we'll send you " "an e-mail allowing you to reset it." msgstr "" "Ξεχάσατε τον κωδικό σας; Συμπληρώσατε τη διεύθυνση e-mail σας παρακάτω και " "θα σας στείλουμε ένα e-mail ώστε να τον επαναφέρετε." #: templates/account/password_reset.html:20 msgid "Reset My Password" msgstr "Επαναφορά του κωδικού μου" #: templates/account/password_reset.html:23 msgid "Please contact us if you have any trouble resetting your password." msgstr "" "Παρακαλούμε επικοινωνήστε μαζί μας αν έχετε προβλήματα κατά την επαναφορά " "του κωδικού σας." #: templates/account/password_reset_done.html:15 msgid "" "We have sent you an e-mail. Please contact us if you do not receive it " "within a few minutes." msgstr "" "Σας έχει σταλεί ένα e-mail. Παρακαλούμε επικοινωνήστε μαζί μας αν δε το " "παραλάβατε εντός λίγων λεπτών." #: templates/account/password_reset_from_key.html:7 msgid "Bad Token" msgstr "Λάθος token." #: templates/account/password_reset_from_key.html:11 #, python-format msgid "" "The password reset link was invalid, possibly because it has already been " "used. Please request a new password reset." msgstr "" "Η σύνδεση επαναφοράς κωδικού δεν είναι σωστή πιθανότητα επειδή έχει " "χρησιμοποιηθεί ήδη. Παρακαλούμε αιτηθείτε μια νέα επαναφορά κωδικού." #: templates/account/password_reset_from_key.html:17 msgid "change password" msgstr "αλλαγή κωδικού" #: templates/account/password_reset_from_key.html:20 #: templates/account/password_reset_from_key_done.html:8 msgid "Your password is now changed." msgstr "Ο κωδικός σας έχει αλλάξει." #: templates/account/password_set.html:5 templates/account/password_set.html:8 #: templates/account/password_set.html:13 msgid "Set Password" msgstr "Δημιουργία κωδικού" #: templates/account/signup.html:5 templates/socialaccount/signup.html:5 msgid "Signup" msgstr "Εγγραφή" #: templates/account/signup.html:8 templates/account/signup.html:18 #: templates/socialaccount/signup.html:8 templates/socialaccount/signup.html:19 msgid "Sign Up" msgstr "Εγγραφή" #: templates/account/signup.html:10 #, python-format msgid "" "Already have an account? Then please sign in." msgstr "" "Έχετε ήδη κωδικό; Παρακαλούμε συνδεθείτε." #: templates/account/signup_closed.html:5 #: templates/account/signup_closed.html:8 msgid "Sign Up Closed" msgstr "Οι εγγραφές έχουν κλείσει." #: templates/account/signup_closed.html:10 msgid "We are sorry, but the sign up is currently closed." msgstr "Λυπούμαστε αλλά οι εγγραφές έχουν κλείσει." #: templates/account/snippets/already_logged_in.html:5 msgid "Note" msgstr "Σημείωση" #: templates/account/snippets/already_logged_in.html:5 #, python-format msgid "you are already logged in as %(user_display)s." msgstr "έχετε ήδη συνδεθεί ως %(user_display)s." #: templates/account/verification_sent.html:5 #: templates/account/verification_sent.html:8 #: templates/account/verified_email_required.html:5 #: templates/account/verified_email_required.html:8 msgid "Verify Your E-mail Address" msgstr "Επιβεβαιώσατε τη διεύθυνση e-mail σας." #: templates/account/verification_sent.html:10 msgid "" "We have sent an e-mail to you for verification. Follow the link provided to " "finalize the signup process. Please contact us if you do not receive it " "within a few minutes." msgstr "" "Σας έχουμε στείλει ένα e-mail για επιβεβαίωση. Παρακαλούμε ακολουθήστε τη " "σύνδεση στο e-mail για να ολοκλήρωσετε τη διαδικασία εγγραφής. Παρακαλούμε " "επικοινωνήστε μαζί μας δε το λάβετε εντός λίγων λεπτών." #: templates/account/verified_email_required.html:12 msgid "" "This part of the site requires us to verify that\n" "you are who you claim to be. For this purpose, we require that you\n" "verify ownership of your e-mail address. " msgstr "" "Για πρόσβαση στο συγκεκριμένο τμήμα πρέπει\n" "να επιβεβαιώσετε την ταυτότητα σας. Έτσι, θα πρέπει να\n" "επιβεβαιώσετε την ιδιοκτησία της διεύθυνσης e-mail σας. " #: templates/account/verified_email_required.html:16 msgid "" "We have sent an e-mail to you for\n" "verification. Please click on the link inside this e-mail. Please\n" "contact us if you do not receive it within a few minutes." msgstr "" "Σαςστείλαμε ένα e-mail\n" "για επιβεβαίωση. Παρακαλούμε ακολουθήστε τη σύνδεση που περιέχει. \n" "Παρακαλούμε επικοινωνήστε μαζί μας αν δε το λάβετε εντός λίγων λεπτών." #: templates/account/verified_email_required.html:20 #, python-format msgid "" "Note: you can still change your e-" "mail address." msgstr "" "Σημείωση: μπορείτε νααλλάξετε το " "e-mail σας." #: templates/openid/login.html:9 msgid "OpenID Sign In" msgstr "Σύνδεση με OpenID" #: templates/socialaccount/authentication_error.html:5 #: templates/socialaccount/authentication_error.html:8 msgid "Social Network Login Failure" msgstr "Εσφαλμένη κοινωνική σύνδεση" #: templates/socialaccount/authentication_error.html:10 msgid "" "An error occurred while attempting to login via your social network account." msgstr "Υπήρξε σφάλμα κατά τη σύνδεση με το λογαριασμό κοινωνικής δικτύωσης." #: templates/socialaccount/connections.html:5 #: templates/socialaccount/connections.html:8 msgid "Account Connections" msgstr "Συνδέσεις λογαριασμών" #: templates/socialaccount/connections.html:11 msgid "" "You can sign in to your account using any of the following third party " "accounts:" msgstr "" "Μπορείτε να συνδεθείτε στο λογαριασμό σας χρησιμοποιώντας οποιονδήποτε από " "τους ακόλουθους λογαρισμούς:" #: templates/socialaccount/connections.html:43 msgid "" "You currently have no social network accounts connected to this account." msgstr "" "Δεν υπάρχουν κοινωνικοί λογαριασμοί συνδεδεμένοι σε αυτό το λογαριασμό." #: templates/socialaccount/connections.html:46 msgid "Add a 3rd Party Account" msgstr "Προσθέστε ένα λογαριασμό 3ου." #: templates/socialaccount/login_cancelled.html:5 #: templates/socialaccount/login_cancelled.html:9 msgid "Login Cancelled" msgstr "Ακύρωση σύνδεσης" #: templates/socialaccount/login_cancelled.html:13 #, python-format msgid "" "You decided to cancel logging in to our site using one of your existing " "accounts. If this was a mistake, please proceed to sign in." msgstr "" "Αποφασίσατε να ακυρώσετε τη σύνδεση στο site μας χρησιμοποιώντας έναν από " "τους λογαριασμούς σας. Αν αυτό ήταν λάθος παρακαλούμε συνδεθείτε." #: templates/socialaccount/messages/account_connected.txt:2 msgid "The social account has been connected." msgstr "Ο κοινωνικός λογαριασμός έχει συνδεθεί." #: templates/socialaccount/messages/account_connected_other.txt:2 msgid "The social account is already connected to a different account." msgstr "" "Ο κοινωνικός λογαριασμός είναι ήδη συνδεδεμένος σε διαφορετικό λογαριασμό." #: templates/socialaccount/messages/account_disconnected.txt:2 msgid "The social account has been disconnected." msgstr "Ο κοινωνικός λογαριασμός έχει αποσυνδεθεί." #: templates/socialaccount/signup.html:10 #, python-format msgid "" "You are about to use your %(provider_name)s account to login to\n" "%(site_name)s. As a final step, please complete the following form:" msgstr "" "Θα χρησιμοποιήσετε το λογαριασμό σας στο %(provider_name)s για να συνδεθείτε " "στο\n" "%(site_name)s. Σαν τελικό βήμα, παρακαλούμε συμπληρώστε τη φόρμα:" #~ msgid "The login and/or password you specified are not correct." #~ msgstr "Το όνομα σύνδεσης ή/και ο κωδικός δεν είναι σωστά." #~ msgid "Usernames can only contain letters, digits and @/./+/-/_." #~ msgstr "" #~ "Τα ονόματα χρήστη μπορούν να περιέχουν μόνο γράμματα, αριθμούς και τους " #~ "χαρακτήρες @/./+/-/_." #~ msgid "This username is already taken. Please choose another." #~ msgstr "" #~ "Το όνομα χρήστη χρησιμοποιείται ήδη. Παρακαλούμε χρησιμοποιήστε άλλο " #~ "όνομα χρήστη." #, fuzzy #~| msgid "Sign In" #~ msgid "Shopify Sign In" #~ msgstr "Είσοδος" #~ msgid "" #~ "You have confirmed that %(email)s is an " #~ "e-mail address for user %(user_display)s." #~ msgstr "" #~ "Έχετε επιβεβαιώσει ότι η %(email)s είναι " #~ "μια διεύθυνση e-mail για το χρήστη %(user_display)s." #~ msgid "Thanks for using our site!" #~ msgstr "Ευχαριστούμε που χρησιμοποιείτε το site μας!" django-allauth-0.35.0/allauth/locale/lv/0000755000076500000240000000000013235133532020762 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/lv/LC_MESSAGES/0000755000076500000240000000000013235133532022547 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/lv/LC_MESSAGES/django.mo0000644000076500000240000003552413235132042024352 0ustar pennersrstaff00000000000000L ` /a 7 \ 6& -]       I wAL" AK[c&z9%p6_28:9s  ' 8Y^mv-"l7B"~ ! !.6?GV]m#2-A6Q@%b&)?;#Uy?<0/ `k4t2\dPE:HjSq*$, -! O _ i q }      ! !!! !!,!1!@!P!c!|!!! !!!!.!!8#=#o$8t$.$$$$% %%5%DT%j%:&?&"X&{&& &&0&&>'M'U'h'x''y'd(Iy(6(<(7);)Q) h)v)$)3)8)!***:*A*S*c*****'*s+G++*y, ,%,,,-" ---B-T-Z-`-o---#-#-5-0#. T.:u.9..0/!//20*70!b00504011Vi222N2/3 K3 Y3z3;33w4r#5~5U6>k66@W77#48X8.n8$808899I9 Z9 e9o99999999:::+:2: 6: @: K: V:a:r::":!::: :; ; ;.%;:bREsBeU% , N ?HaL 'ClwkV8dg&-XA5MY06S9/Q>\!O^7.q;"n}I_G<)PW@t| Dp4=K$xrfyzh(iju#Fm1] 3o[TJZ+v`c*~{2"oauth_token" (OAuth1) or access token (OAuth2)"oauth_token_secret" (OAuth1) or refresh token (OAuth2)Note: you can still change your e-mail address.A user is already registered with this e-mail address.API secret, client secret, or consumer secretAccountAccount ConnectionsAccount InactiveAccountsAdd E-mailAdd E-mail AddressAdd a 3rd Party AccountAlready have an account? Then please sign in.An account already exists with this e-mail address. Please sign in to that account first, then connect your %s account.An error occurred while attempting to login via your social network account.App ID, or consumer keyAre you sure you want to sign out?Bad TokenChange PasswordConfirmConfirm E-mail AddressConfirmation e-mail sent to %(email)s.Current PasswordDo you really want to remove the selected e-mail address?E-mailE-mail (optional)E-mail AddressesE-mail addressForgot Password?Forgotten your password? Enter your e-mail address below, and we'll send you an e-mail allowing you to reset it.If you have not created an account yet, then please sign up first.In case you forgot, your username is %(username)s.Invalid response while obtaining access token from "%s".Invalid response while obtaining request token from "%s".KeyLogin CancelledMake PrimaryNew PasswordNew Password (again)No access to private resources at "%s".No access token saved for "%s".No request token saved for "%s".NoteOpenID Sign InPasswordPassword (again)Password ResetPassword Reset E-mailPassword must be a minimum of {0} characters.Password successfully changed.Password successfully set.Please Confirm Your E-mail AddressPlease confirm that %(email)s is an e-mail address for user %(user_display)s.Please contact us if you have any trouble resetting your password.Please sign in with one of your existing third party accounts. Or, sign up for a %(site_name)s account and sign in below:Please type your current password.PrimaryPrimary e-mail address set.Re-send VerificationRemember MeRemoveRemoved e-mail address %(email)s.Reset My PasswordSet PasswordSign InSign OutSign UpSign Up ClosedSignupSocial AccountsSocial Network Login FailureSuccessfully signed in as %(name)s.Thank you for using %(site_name)s! %(site_domain)sThank you from %(site_name)s! %(site_domain)sThe e-mail address and/or password you specified are not correct.The e-mail address is not assigned to any user accountThe following e-mail addresses are associated with your account:The password reset link was invalid, possibly because it has already been used. Please request a new password reset.The password reset token was invalid.The social account has been connected.The social account has been disconnected.The social account is already connected to a different account.The username and/or password you specified are not correct.This account is currently inactive.This account is inactive.This e-mail address is already associated with another account.This e-mail address is already associated with this account.This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request.This part of the site requires us to verify that you are who you claim to be. For this purpose, we require that you verify ownership of your e-mail address. Too many failed login attempts. Try again later.UnverifiedUsernameUsername can not be used. Please use other username.Username or e-mailVerifiedVerify Your E-mail AddressWarning:We are sorry, but the sign up is currently closed.We have sent an e-mail to you for verification. Please click on the link inside this e-mail. Please contact us if you do not receive it within a few minutes.We have sent an e-mail to you for verification. Follow the link provided to finalize the signup process. Please contact us if you do not receive it within a few minutes.We have sent you an e-mail. Please contact us if you do not receive it within a few minutes.You are about to use your %(provider_name)s account to login to %(site_name)s. As a final step, please complete the following form:You can sign in to your account using any of the following third party accounts:You cannot remove your primary e-mail address (%(email)s).You currently do not have any e-mail address set up. You should really add an e-mail address so you can receive notifications, reset your password, etc.You currently have no social network accounts connected to this account.You decided to cancel logging in to our site using one of your existing accounts. If this was a mistake, please proceed to sign in.You have confirmed %(email)s.You have signed out.You must type the same password each time.Your account has no password set up.Your account has no verified e-mail address.Your password is now changed.Your primary e-mail address must be verified.change passwordclient idcreateddate joinede-mail addressemail addressemail addressesemail confirmationemail confirmationsexpires atextra datafield labelLoginkeylast loginnameorprimaryprovidersecret keysentsocial accountsocial accountssocial applicationsocial application tokensocial application tokenssocial applicationstokentoken secretuiduserverifiedyou are already logged in as %(user_display)s.Project-Id-Version: PACKAGE VERSION Report-Msgid-Bugs-To: POT-Creation-Date: 2018-02-02 12:55-0600 PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE Last-Translator: FULL NAME Language-Team: LANGUAGE Language: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2); "oauth_token" (OAuth1) vai piekļūt marķierim (OAuth2)"oauth_token_secret" (OAuth1) vai atjaunot marķieri (OAuth2)Piezīme: jūs vēljoprojām varat nomainīt jūsu e-pasta adresi.Lietotājs ar šādu e-pasta adresi jau ir reģistrēts.API secret, client secret, vai consumer secretKontsKonta savienojumiNeaktīvs kontsKontiPievienot e-pastuPievienot e-pasta adresiPievienot trešās puses kontuJau ir konts? Tad lūdzu spiedied šeit.Jau eksistē konts ar šo e-pasta adresi. Lūdzu sākumā ieejiet tajā kontā, tad pievienojiet %s kontu.Notikusi kļūme, mēģinot ieiet ar jūsu sociālo kontu.App ID, vai consumer keyVai jūs tiešām vēlaties iziet?Nederīgs marķierisMainīt paroliApstiprinātApstipriniet e-pasta adresiApstiprinājuma e-pasts nosūtīts uz %(email)s.Šobrīdējā paroleVai jūs tiešām vēlaties noņemt izvēlēto e-pasta adresi?E-pastsE-pasts (izvēles)E-pasta adresesE-pasta adreseAizmirsāt paroli?Aizmirsāt savu paroli? Ievadiet zemāk savu e-pasta adresi, un mēs jums nosūtīsim e-pasta vēstuli, lai atjaunotu to.Ja jūs vēl neesat izveidojuši kontu, tad lūdzu piereģistrējaties.Gadījumā ja jūs aizmirsāt, tad jūsu lietotājvārds ir %(username)s.Nederīga atbilde iegūstot pieejas marķieri no "%s".Nederīga atbilde iegūstot pieprasījuma marķieri no "%s".KeyIeiešana pārtrauktaIestatīt kā primāroJaunā paroleJaunā parole (vēlreiz)Nav pieejas privātam resursam "%s".Netika saglabāts pieejas marķieris priekš "%s".Netika saglabāts pieprasījuma marķieris priekš "%s".PiezīmeIeiet ar OpenIDParoleParole (vēlreiz)Atjaunot paroliParoles atjaunošanas e-pastsParolei jābūt vismaz {0} simbolus garai.Parole veiksmīgi nomainīta.Parole veiksmīgi uzstādīta.Lūdzu apstipriniet savu e-pasta adresiLūdzu apstipriniet ka %(email)s e-pasta adrese pieder lietotājam %(user_display)s.Lūdzu sazinieties ar mums, ja jums ir kādas problēmas atjaunojot to.Lūdzu ieejiet iekšā ar vienu no jūsu eksistējošiem trešās puses kontiem. Vai reģistrējieties %(site_name)s kontam un ieejiet zemāk:Lūdzu ievadiet jūsu šobrīdējo paroli.PrimārāPrimārā e-pasta adrese uzstādīta.Pārsūtīt apstiprināšanuAtcerēties maniNoņemtNoņemta e-pasta adrese %(email)s.Atjaunot manu paroliUzstādīt paroliIeietIzietReģistrētiesReģistrācija slēgtaReģistrētiesSociālie kontiSociālā tīkla ieiešanas kļūdaVeiksmīgi iegājuši kā %(name)s.Paldies, ka izmantojat %(site_name)s! %(site_domain)sVisu labu vēlot, %(site_name)s! %(site_domain)sNepareizs e-pasts un/vai parole.E-pasta adrese nav piesaistīta nevienam lietotāja kontamSekojošas e-pasta adreses ir piesaistītas jūsu kontam:Paroles atjaunošanas links ir nederīgs, iespējams, tāpēc ka tas jau ir izmantots. Lūdzu pieprasiet jaunu paroles atjaunošanu.Paroles atjaunošanas marķieris bija nederīgs.Sociālais konts ir piesaistīts.Sociālais konts ir atvienots.Sociālais konts jau ir piesaistīts citam kontam.Nepareizs lietotāja vārds un/vai parole.Šis konts šobrīd ir neaktīvs.Šis konts ir neaktīvs.Šī e-pasta adrese jau ir piesaistīta citam kontam.Šī e-pasta adrese jau ir piesaistīta šim kontam.Šī e-pasta apstiprināšanas saitei ir beidzies derīguma termiņš vai tas ir nederīgs. Lūdzu pieprasiet jaunu e-pasta apstiprināšanas linku.Šī lapas daļa mums nosaka pārbaudīt, ka jūs esat tas, kas jūs apgalvojat esam. Šim mērķim, mēs pieprasām, lai jūs apstipriniet, jūsu e-pasta adreses piederību. Pārāk daudz neveiksmīgi pieslēgšanās mēģinājumi. Mēģiniet vēlreiz vēlāk.NeapstiprinātaLietotājvārdsLietotājvārds nevar tikt izmantots. Lūdzu izvēlietis citu lietotājvārdu.Lietotājvārds vai e-pastsApstiprinātaApstipriniet savu e-pasta adresiBrīdinājums:Mēs atvainojamies, bet reģistrācija šobrīd ir slēgta.Mēs esam jums nosūtījuši e-pastu apstiprināšanai. Lūdzu klikšķiniet uz saites šajā e-pastā. Lūdzu sazinieties ar mums, ja dažu minūšu laikā nesaņemat vēstuli.Jums ir nosūtīts apstiprinājuma e-pasts. Sekojiet saitei, lai pabeigu reģistrācijas procesu. Lūdzu sazinieties ar mums, ja dažu minūšu laikā nesaņemat vēstuli.Mēs jums nosūtījām e-pasta vēstuli. Lūdzu sazinieties ar mums, ja dažu minūšu laikā nesaņemat vēstuli.Jūs izmantosiet savu %(provider_name)s kontu, lai ieietu %(site_name)s. Kā pēdējo soli, lūdzu aizpildiet sekojošo formu:Jūs varat ieiet jūsu kontā izmantojot jebkuru no sekojošiem trešo pušu kontiem:Jūs nevarat noņemt savu primāro e-pasta adresi (%(email)s).Jums pašlaik nav izveidota neviena e-pasta adrese. Jums patiešām vajadzētu pievienot e-pasta adresi, lai jūs varētu saņemt paziņojumus, atiestatīt savu paroli utt.Jūsu kontam šobrīd nav piesaistīts neviens sociālais konts.Jūs nolēmāt pārtraukt ieiešanu mūsu lapa izmantojot vienu no jūsu kontiem. Ja šī ir kļūda, lūdzu dodaties uz ieiet.Jūs esat apstiprinājis %(email)s.Jūs esat izgājuši.Katru reizi jums ir jāievada tā pati parole.Jūsu kontam nav uzstādīta parole.Jūsu kontam nav apstiprinātas e-pasta adreses.Jūsu parole ir nomainīta.Jūsu primārajai e-pasta adresei jābūt apstiprinātai.Nomainīt paroliklienta idizveidotsreģistrācijas datumse-pasta adresee-pasta adresee-pasta adresese-pasta apstiprinājumse-pasta apstiprinājumibeidzaspapildus informācijaIeietatslēgapēdējā pieslēgšanāsvārdsvaiprimārāsniedzējssecret keynosūtītssociālais kontssociālie kontisociālā aplikācijasociālās aplikācijas marķierissociālās aplikācijas marķierisociālās aplikācijastokentoken secretuidlietotājsapstiprinātsjūs jau esat iegājuši kā %(user_display)s.django-allauth-0.35.0/allauth/locale/lv/LC_MESSAGES/django.po0000644000076500000240000006240113235132037024353 0ustar pennersrstaff00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-02-02 12:55-0600\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : " "2);\n" #: account/adapter.py:45 msgid "Username can not be used. Please use other username." msgstr "" "Lietotājvārds nevar tikt izmantots. Lūdzu izvēlietis citu lietotājvārdu." #: account/adapter.py:49 msgid "Too many failed login attempts. Try again later." msgstr "" "Pārāk daudz neveiksmīgi pieslēgšanās mēģinājumi. Mēģiniet vēlreiz vēlāk." #: account/adapter.py:51 msgid "A user is already registered with this e-mail address." msgstr "Lietotājs ar šādu e-pasta adresi jau ir reģistrēts." #: account/adapter.py:288 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "Parolei jābūt vismaz {0} simbolus garai." #: account/apps.py:7 msgid "Accounts" msgstr "Konti" #: account/forms.py:61 account/forms.py:398 msgid "You must type the same password each time." msgstr "Katru reizi jums ir jāievada tā pati parole." #: account/forms.py:91 account/forms.py:365 account/forms.py:476 msgid "Password" msgstr "Parole" #: account/forms.py:92 msgid "Remember Me" msgstr "Atcerēties mani" #: account/forms.py:98 msgid "This account is currently inactive." msgstr "Šis konts šobrīd ir neaktīvs." #: account/forms.py:101 msgid "The e-mail address and/or password you specified are not correct." msgstr "Nepareizs e-pasts un/vai parole." #: account/forms.py:104 msgid "The username and/or password you specified are not correct." msgstr "Nepareizs lietotāja vārds un/vai parole." #: account/forms.py:113 account/forms.py:268 account/forms.py:426 #: account/forms.py:495 msgid "E-mail address" msgstr "E-pasta adrese" #: account/forms.py:115 account/forms.py:301 account/forms.py:421 #: account/forms.py:490 msgid "E-mail" msgstr "E-pasts" #: account/forms.py:120 account/forms.py:123 account/forms.py:260 #: account/forms.py:264 msgid "Username" msgstr "Lietotājvārds" #: account/forms.py:130 msgid "Username or e-mail" msgstr "Lietotājvārds vai e-pasts" #: account/forms.py:133 msgctxt "field label" msgid "Login" msgstr "Ieiet" #: account/forms.py:292 #, fuzzy #| msgid "E-mail (optional)" msgid "E-mail (again)" msgstr "E-pasts (izvēles)" #: account/forms.py:296 #, fuzzy #| msgid "email confirmation" msgid "E-mail address confirmation" msgstr "e-pasta apstiprinājums" #: account/forms.py:304 msgid "E-mail (optional)" msgstr "E-pasts (izvēles)" #: account/forms.py:345 #, fuzzy #| msgid "You must type the same password each time." msgid "You must type the same email each time." msgstr "Katru reizi jums ir jāievada tā pati parole." #: account/forms.py:368 account/forms.py:477 msgid "Password (again)" msgstr "Parole (vēlreiz)" #: account/forms.py:432 msgid "This e-mail address is already associated with this account." msgstr "Šī e-pasta adrese jau ir piesaistīta šim kontam." #: account/forms.py:434 msgid "This e-mail address is already associated with another account." msgstr "Šī e-pasta adrese jau ir piesaistīta citam kontam." #: account/forms.py:456 msgid "Current Password" msgstr "Šobrīdējā parole" #: account/forms.py:457 account/forms.py:546 msgid "New Password" msgstr "Jaunā parole" #: account/forms.py:458 account/forms.py:547 msgid "New Password (again)" msgstr "Jaunā parole (vēlreiz)" #: account/forms.py:466 msgid "Please type your current password." msgstr "Lūdzu ievadiet jūsu šobrīdējo paroli." #: account/forms.py:504 msgid "The e-mail address is not assigned to any user account" msgstr "E-pasta adrese nav piesaistīta nevienam lietotāja kontam" #: account/forms.py:568 msgid "The password reset token was invalid." msgstr "Paroles atjaunošanas marķieris bija nederīgs." #: account/models.py:23 msgid "user" msgstr "lietotājs" #: account/models.py:27 account/models.py:81 msgid "e-mail address" msgstr "e-pasta adrese" #: account/models.py:28 msgid "verified" msgstr "apstiprināts" #: account/models.py:29 msgid "primary" msgstr "primārā" #: account/models.py:34 msgid "email address" msgstr "e-pasta adrese" #: account/models.py:35 msgid "email addresses" msgstr "e-pasta adreses" #: account/models.py:83 msgid "created" msgstr "izveidots" #: account/models.py:85 msgid "sent" msgstr "nosūtīts" #: account/models.py:86 socialaccount/models.py:55 msgid "key" msgstr "atslēga" #: account/models.py:91 msgid "email confirmation" msgstr "e-pasta apstiprinājums" #: account/models.py:92 msgid "email confirmations" msgstr "e-pasta apstiprinājumi" #: socialaccount/adapter.py:26 #, python-format msgid "" "An account already exists with this e-mail address. Please sign in to that " "account first, then connect your %s account." msgstr "" "Jau eksistē konts ar šo e-pasta adresi. Lūdzu sākumā ieejiet tajā kontā, tad " "pievienojiet %s kontu." #: socialaccount/adapter.py:131 msgid "Your account has no password set up." msgstr "Jūsu kontam nav uzstādīta parole." #: socialaccount/adapter.py:138 msgid "Your account has no verified e-mail address." msgstr "Jūsu kontam nav apstiprinātas e-pasta adreses." #: socialaccount/apps.py:7 msgid "Social Accounts" msgstr "Sociālie konti" #: socialaccount/models.py:43 socialaccount/models.py:77 msgid "provider" msgstr "sniedzējs" #: socialaccount/models.py:46 msgid "name" msgstr "vārds" #: socialaccount/models.py:48 msgid "client id" msgstr "klienta id" #: socialaccount/models.py:50 msgid "App ID, or consumer key" msgstr "App ID, vai consumer key" #: socialaccount/models.py:51 msgid "secret key" msgstr "secret key" #: socialaccount/models.py:53 msgid "API secret, client secret, or consumer secret" msgstr "API secret, client secret, vai consumer secret" #: socialaccount/models.py:58 msgid "Key" msgstr "Key" #: socialaccount/models.py:66 msgid "social application" msgstr "sociālā aplikācija" #: socialaccount/models.py:67 msgid "social applications" msgstr "sociālās aplikācijas" #: socialaccount/models.py:96 msgid "uid" msgstr "uid" #: socialaccount/models.py:98 msgid "last login" msgstr "pēdējā pieslēgšanās" #: socialaccount/models.py:100 msgid "date joined" msgstr "reģistrācijas datums" #: socialaccount/models.py:102 msgid "extra data" msgstr "papildus informācija" #: socialaccount/models.py:106 msgid "social account" msgstr "sociālais konts" #: socialaccount/models.py:107 msgid "social accounts" msgstr "sociālie konti" #: socialaccount/models.py:133 msgid "token" msgstr "token" #: socialaccount/models.py:135 msgid "\"oauth_token\" (OAuth1) or access token (OAuth2)" msgstr "\"oauth_token\" (OAuth1) vai piekļūt marķierim (OAuth2)" #: socialaccount/models.py:138 msgid "token secret" msgstr "token secret" #: socialaccount/models.py:140 msgid "\"oauth_token_secret\" (OAuth1) or refresh token (OAuth2)" msgstr "\"oauth_token_secret\" (OAuth1) vai atjaunot marķieri (OAuth2)" #: socialaccount/models.py:142 msgid "expires at" msgstr "beidzas" #: socialaccount/models.py:146 msgid "social application token" msgstr "sociālās aplikācijas marķieris" #: socialaccount/models.py:147 msgid "social application tokens" msgstr "sociālās aplikācijas marķieri" #: socialaccount/providers/douban/views.py:36 msgid "Invalid profile data" msgstr "" #: socialaccount/providers/oauth/client.py:78 #, python-format msgid "Invalid response while obtaining request token from \"%s\"." msgstr "Nederīga atbilde iegūstot pieprasījuma marķieri no \"%s\"." #: socialaccount/providers/oauth/client.py:109 #, python-format msgid "Invalid response while obtaining access token from \"%s\"." msgstr "Nederīga atbilde iegūstot pieejas marķieri no \"%s\"." #: socialaccount/providers/oauth/client.py:128 #, python-format msgid "No request token saved for \"%s\"." msgstr "Netika saglabāts pieprasījuma marķieris priekš \"%s\"." #: socialaccount/providers/oauth/client.py:177 #, python-format msgid "No access token saved for \"%s\"." msgstr "Netika saglabāts pieejas marķieris priekš \"%s\"." #: socialaccount/providers/oauth/client.py:197 #, python-format msgid "No access to private resources at \"%s\"." msgstr "Nav pieejas privātam resursam \"%s\"." #: templates/account/account_inactive.html:5 #: templates/account/account_inactive.html:8 msgid "Account Inactive" msgstr "Neaktīvs konts" #: templates/account/account_inactive.html:10 msgid "This account is inactive." msgstr "Šis konts ir neaktīvs." #: templates/account/email.html:5 msgid "Account" msgstr "Konts" #: templates/account/email.html:8 msgid "E-mail Addresses" msgstr "E-pasta adreses" #: templates/account/email.html:10 msgid "The following e-mail addresses are associated with your account:" msgstr "Sekojošas e-pasta adreses ir piesaistītas jūsu kontam:" #: templates/account/email.html:24 msgid "Verified" msgstr "Apstiprināta" #: templates/account/email.html:26 msgid "Unverified" msgstr "Neapstiprināta" #: templates/account/email.html:28 msgid "Primary" msgstr "Primārā" #: templates/account/email.html:34 msgid "Make Primary" msgstr "Iestatīt kā primāro" #: templates/account/email.html:35 msgid "Re-send Verification" msgstr "Pārsūtīt apstiprināšanu" #: templates/account/email.html:36 templates/socialaccount/connections.html:35 msgid "Remove" msgstr "Noņemt" #: templates/account/email.html:43 msgid "Warning:" msgstr "Brīdinājums:" #: templates/account/email.html:43 msgid "" "You currently do not have any e-mail address set up. You should really add " "an e-mail address so you can receive notifications, reset your password, etc." msgstr "" "Jums pašlaik nav izveidota neviena e-pasta adrese. Jums patiešām vajadzētu " "pievienot e-pasta adresi, lai jūs varētu saņemt paziņojumus, atiestatīt savu " "paroli utt." #: templates/account/email.html:48 msgid "Add E-mail Address" msgstr "Pievienot e-pasta adresi" #: templates/account/email.html:53 msgid "Add E-mail" msgstr "Pievienot e-pastu" #: templates/account/email.html:62 msgid "Do you really want to remove the selected e-mail address?" msgstr "Vai jūs tiešām vēlaties noņemt izvēlēto e-pasta adresi?" #: templates/account/email/email_confirmation_message.txt:1 #, fuzzy, python-format #| msgid "" #| "Hello from %(site_name)s!\n" #| "\n" #| "You're receiving this e-mail because user %(user_display)s at " #| "%(site_domain)s has given yours as an e-mail address to connect their " #| "account.\n" #| "\n" #| "To confirm this is correct, go to %(activate_url)s\n" msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because user %(user_display)s has given yours " "as an e-mail address to connect their account.\n" "\n" "To confirm this is correct, go to %(activate_url)s\n" msgstr "" "Sveiciens no %(site_name)s!\n" "\n" "Jūs saņemat šo e-pasta vēstuli tāpēc, ka lietotājs %(user_display)s lapā " "%(site_domain)s ir iesniedzis šo e-pasta adresi, lai tā tiktu sasaistīta ar " "viņa kontu.\n" "\n" "Lai apstiprinātu, ka viss ir parezi, ejiet uz %(activate_url)s\n" #: templates/account/email/email_confirmation_message.txt:7 #, python-format msgid "" "Thank you from %(site_name)s!\n" "%(site_domain)s" msgstr "" "Visu labu vēlot, %(site_name)s!\n" "%(site_domain)s" #: templates/account/email/email_confirmation_subject.txt:3 msgid "Please Confirm Your E-mail Address" msgstr "Lūdzu apstipriniet savu e-pasta adresi" #: templates/account/email/password_reset_key_message.txt:1 #, fuzzy, python-format #| msgid "" #| "Hello from %(site_name)s!\n" #| "\n" #| "You're receiving this e-mail because you or someone else has requested a " #| "password for your user account at %(site_domain)s.\n" #| "It can be safely ignored if you did not request a password reset. Click " #| "the link below to reset your password." msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because you or someone else has requested a " "password for your user account.\n" "It can be safely ignored if you did not request a password reset. Click the " "link below to reset your password." msgstr "" "Sveiciens no %(site_name)s!\n" "\n" "Jūs saņemat šo e-pasta vēstuli tāpēc, ka jūs vai kāds cits ir pieprasījis " "paroles atjaunošanu jūsu kontam lapā %(site_domain)s.\n" "Jūs varat droši ignorēt šo e-pasta vēstuli, ja jūs nepieprasījat paroles " "atjaunošanu. Spiedied uz linka zemāk, lai atjaunotu jūsu paroli." #: templates/account/email/password_reset_key_message.txt:8 #, python-format msgid "In case you forgot, your username is %(username)s." msgstr "Gadījumā ja jūs aizmirsāt, tad jūsu lietotājvārds ir %(username)s." #: templates/account/email/password_reset_key_message.txt:10 #, python-format msgid "" "Thank you for using %(site_name)s!\n" "%(site_domain)s" msgstr "" "Paldies, ka izmantojat %(site_name)s!\n" "%(site_domain)s" #: templates/account/email/password_reset_key_subject.txt:3 msgid "Password Reset E-mail" msgstr "Paroles atjaunošanas e-pasts" #: templates/account/email_confirm.html:6 #: templates/account/email_confirm.html:10 msgid "Confirm E-mail Address" msgstr "Apstipriniet e-pasta adresi" #: templates/account/email_confirm.html:16 #, python-format msgid "" "Please confirm that %(email)s is an e-mail " "address for user %(user_display)s." msgstr "" "Lūdzu apstipriniet ka %(email)s e-pasta " "adrese pieder lietotājam %(user_display)s." #: templates/account/email_confirm.html:20 msgid "Confirm" msgstr "Apstiprināt" #: templates/account/email_confirm.html:27 #, python-format msgid "" "This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request." msgstr "" "Šī e-pasta apstiprināšanas saitei ir beidzies derīguma termiņš vai tas ir " "nederīgs. Lūdzu pieprasiet jaunu e-pasta " "apstiprināšanas linku." #: templates/account/login.html:6 templates/account/login.html:10 #: templates/account/login.html:43 msgid "Sign In" msgstr "Ieiet" #: templates/account/login.html:15 #, python-format msgid "" "Please sign in with one\n" "of your existing third party accounts. Or, sign " "up\n" "for a %(site_name)s account and sign in below:" msgstr "" "Lūdzu ieejiet iekšā ar vienu\n" "no jūsu eksistējošiem trešās puses kontiem. Vai reģistrējieties\n" "%(site_name)s kontam un ieejiet zemāk:" #: templates/account/login.html:25 msgid "or" msgstr "vai" #: templates/account/login.html:32 #, python-format msgid "" "If you have not created an account yet, then please\n" "sign up first." msgstr "" "Ja jūs vēl neesat izveidojuši kontu, tad lūdzu\n" "piereģistrējaties." #: templates/account/login.html:42 msgid "Forgot Password?" msgstr "Aizmirsāt paroli?" #: templates/account/logout.html:5 templates/account/logout.html:8 #: templates/account/logout.html:17 msgid "Sign Out" msgstr "Iziet" #: templates/account/logout.html:10 msgid "Are you sure you want to sign out?" msgstr "Vai jūs tiešām vēlaties iziet?" #: templates/account/messages/cannot_delete_primary_email.txt:2 #, python-format msgid "You cannot remove your primary e-mail address (%(email)s)." msgstr "Jūs nevarat noņemt savu primāro e-pasta adresi (%(email)s)." #: templates/account/messages/email_confirmation_sent.txt:2 #, python-format msgid "Confirmation e-mail sent to %(email)s." msgstr "Apstiprinājuma e-pasts nosūtīts uz %(email)s." #: templates/account/messages/email_confirmed.txt:2 #, python-format msgid "You have confirmed %(email)s." msgstr "Jūs esat apstiprinājis %(email)s." #: templates/account/messages/email_deleted.txt:2 #, python-format msgid "Removed e-mail address %(email)s." msgstr "Noņemta e-pasta adrese %(email)s." #: templates/account/messages/logged_in.txt:4 #, python-format msgid "Successfully signed in as %(name)s." msgstr "Veiksmīgi iegājuši kā %(name)s." #: templates/account/messages/logged_out.txt:2 msgid "You have signed out." msgstr "Jūs esat izgājuši." #: templates/account/messages/password_changed.txt:2 msgid "Password successfully changed." msgstr "Parole veiksmīgi nomainīta." #: templates/account/messages/password_set.txt:2 msgid "Password successfully set." msgstr "Parole veiksmīgi uzstādīta." #: templates/account/messages/primary_email_set.txt:2 msgid "Primary e-mail address set." msgstr "Primārā e-pasta adrese uzstādīta." #: templates/account/messages/unverified_primary_email.txt:2 msgid "Your primary e-mail address must be verified." msgstr "Jūsu primārajai e-pasta adresei jābūt apstiprinātai." #: templates/account/password_change.html:5 #: templates/account/password_change.html:8 #: templates/account/password_change.html:13 #: templates/account/password_reset_from_key.html:4 #: templates/account/password_reset_from_key.html:7 #: templates/account/password_reset_from_key_done.html:4 #: templates/account/password_reset_from_key_done.html:7 msgid "Change Password" msgstr "Mainīt paroli" #: templates/account/password_reset.html:6 #: templates/account/password_reset.html:10 #: templates/account/password_reset_done.html:6 #: templates/account/password_reset_done.html:9 msgid "Password Reset" msgstr "Atjaunot paroli" #: templates/account/password_reset.html:15 msgid "" "Forgotten your password? Enter your e-mail address below, and we'll send you " "an e-mail allowing you to reset it." msgstr "" "Aizmirsāt savu paroli? Ievadiet zemāk savu e-pasta adresi, un mēs jums " "nosūtīsim e-pasta vēstuli, lai atjaunotu to." #: templates/account/password_reset.html:20 msgid "Reset My Password" msgstr "Atjaunot manu paroli" #: templates/account/password_reset.html:23 msgid "Please contact us if you have any trouble resetting your password." msgstr "Lūdzu sazinieties ar mums, ja jums ir kādas problēmas atjaunojot to." #: templates/account/password_reset_done.html:15 msgid "" "We have sent you an e-mail. Please contact us if you do not receive it " "within a few minutes." msgstr "" "Mēs jums nosūtījām e-pasta vēstuli. Lūdzu sazinieties ar mums, ja dažu " "minūšu laikā nesaņemat vēstuli." #: templates/account/password_reset_from_key.html:7 msgid "Bad Token" msgstr "Nederīgs marķieris" #: templates/account/password_reset_from_key.html:11 #, python-format msgid "" "The password reset link was invalid, possibly because it has already been " "used. Please request a new password reset." msgstr "" "Paroles atjaunošanas links ir nederīgs, iespējams, tāpēc ka tas jau ir " "izmantots. Lūdzu pieprasiet jaunu paroles " "atjaunošanu." #: templates/account/password_reset_from_key.html:17 msgid "change password" msgstr "Nomainīt paroli" #: templates/account/password_reset_from_key.html:20 #: templates/account/password_reset_from_key_done.html:8 msgid "Your password is now changed." msgstr "Jūsu parole ir nomainīta." #: templates/account/password_set.html:5 templates/account/password_set.html:8 #: templates/account/password_set.html:13 msgid "Set Password" msgstr "Uzstādīt paroli" #: templates/account/signup.html:5 templates/socialaccount/signup.html:5 msgid "Signup" msgstr "Reģistrēties" #: templates/account/signup.html:8 templates/account/signup.html:18 #: templates/socialaccount/signup.html:8 templates/socialaccount/signup.html:19 msgid "Sign Up" msgstr "Reģistrēties" #: templates/account/signup.html:10 #, python-format msgid "" "Already have an account? Then please sign in." msgstr "Jau ir konts? Tad lūdzu spiedied šeit." #: templates/account/signup_closed.html:5 #: templates/account/signup_closed.html:8 msgid "Sign Up Closed" msgstr "Reģistrācija slēgta" #: templates/account/signup_closed.html:10 msgid "We are sorry, but the sign up is currently closed." msgstr "Mēs atvainojamies, bet reģistrācija šobrīd ir slēgta." #: templates/account/snippets/already_logged_in.html:5 msgid "Note" msgstr "Piezīme" #: templates/account/snippets/already_logged_in.html:5 #, python-format msgid "you are already logged in as %(user_display)s." msgstr "jūs jau esat iegājuši kā %(user_display)s." #: templates/account/verification_sent.html:5 #: templates/account/verification_sent.html:8 #: templates/account/verified_email_required.html:5 #: templates/account/verified_email_required.html:8 msgid "Verify Your E-mail Address" msgstr "Apstipriniet savu e-pasta adresi" #: templates/account/verification_sent.html:10 msgid "" "We have sent an e-mail to you for verification. Follow the link provided to " "finalize the signup process. Please contact us if you do not receive it " "within a few minutes." msgstr "" "Jums ir nosūtīts apstiprinājuma e-pasts. Sekojiet saitei, lai pabeigu " "reģistrācijas procesu. Lūdzu sazinieties ar mums, ja dažu minūšu laikā " "nesaņemat vēstuli." #: templates/account/verified_email_required.html:12 msgid "" "This part of the site requires us to verify that\n" "you are who you claim to be. For this purpose, we require that you\n" "verify ownership of your e-mail address. " msgstr "" "Šī lapas daļa mums nosaka pārbaudīt, ka\n" "jūs esat tas, kas jūs apgalvojat esam. Šim mērķim, mēs pieprasām, lai jūs\n" "apstipriniet, jūsu e-pasta adreses piederību. " #: templates/account/verified_email_required.html:16 msgid "" "We have sent an e-mail to you for\n" "verification. Please click on the link inside this e-mail. Please\n" "contact us if you do not receive it within a few minutes." msgstr "" "Mēs esam jums nosūtījuši e-pastu\n" "apstiprināšanai. Lūdzu klikšķiniet uz saites šajā e-pastā. Lūdzu\n" "sazinieties ar mums, ja dažu minūšu laikā nesaņemat vēstuli." #: templates/account/verified_email_required.html:20 #, python-format msgid "" "Note: you can still change your e-" "mail address." msgstr "" "Piezīme: jūs vēljoprojām varat nomainīt jūsu e-pasta adresi." #: templates/openid/login.html:9 msgid "OpenID Sign In" msgstr "Ieiet ar OpenID" #: templates/socialaccount/authentication_error.html:5 #: templates/socialaccount/authentication_error.html:8 msgid "Social Network Login Failure" msgstr "Sociālā tīkla ieiešanas kļūda" #: templates/socialaccount/authentication_error.html:10 msgid "" "An error occurred while attempting to login via your social network account." msgstr "Notikusi kļūme, mēģinot ieiet ar jūsu sociālo kontu." #: templates/socialaccount/connections.html:5 #: templates/socialaccount/connections.html:8 msgid "Account Connections" msgstr "Konta savienojumi" #: templates/socialaccount/connections.html:11 msgid "" "You can sign in to your account using any of the following third party " "accounts:" msgstr "" "Jūs varat ieiet jūsu kontā izmantojot jebkuru no sekojošiem trešo pušu " "kontiem:" #: templates/socialaccount/connections.html:43 msgid "" "You currently have no social network accounts connected to this account." msgstr "Jūsu kontam šobrīd nav piesaistīts neviens sociālais konts." #: templates/socialaccount/connections.html:46 msgid "Add a 3rd Party Account" msgstr "Pievienot trešās puses kontu" #: templates/socialaccount/login_cancelled.html:5 #: templates/socialaccount/login_cancelled.html:9 msgid "Login Cancelled" msgstr "Ieiešana pārtraukta" #: templates/socialaccount/login_cancelled.html:13 #, python-format msgid "" "You decided to cancel logging in to our site using one of your existing " "accounts. If this was a mistake, please proceed to sign in." msgstr "" "Jūs nolēmāt pārtraukt ieiešanu mūsu lapa izmantojot vienu no jūsu kontiem. " "Ja šī ir kļūda, lūdzu dodaties uz ieiet." #: templates/socialaccount/messages/account_connected.txt:2 msgid "The social account has been connected." msgstr "Sociālais konts ir piesaistīts." #: templates/socialaccount/messages/account_connected_other.txt:2 msgid "The social account is already connected to a different account." msgstr "Sociālais konts jau ir piesaistīts citam kontam." #: templates/socialaccount/messages/account_disconnected.txt:2 msgid "The social account has been disconnected." msgstr "Sociālais konts ir atvienots." #: templates/socialaccount/signup.html:10 #, python-format msgid "" "You are about to use your %(provider_name)s account to login to\n" "%(site_name)s. As a final step, please complete the following form:" msgstr "" "Jūs izmantosiet savu %(provider_name)s kontu, lai ieietu\n" "%(site_name)s. Kā pēdējo soli, lūdzu aizpildiet sekojošo formu:" #~ msgid "The login and/or password you specified are not correct." #~ msgstr "Nepareiza pieteikšanās informācija un/vai parole." #~ msgid "Usernames can only contain letters, digits and @/./+/-/_." #~ msgstr "Lietotājvārds var saturēt tikai burtus, ciparus un @/./+/-/_." #~ msgid "This username is already taken. Please choose another." #~ msgstr "Šis lietotājvārds jau ir aizņemts. Lūdzu izvēlaties citu." #~ msgid "Shopify Sign In" #~ msgstr "Ieiet ar Shopify" django-allauth-0.35.0/allauth/locale/it/0000755000076500000240000000000013235133532020755 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/it/LC_MESSAGES/0000755000076500000240000000000013235133532022542 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/it/LC_MESSAGES/django.mo0000644000076500000240000003162613235132043024345 0ustar pennersrstaff00000000000000v| \ 6N      I w2 L "  $ 4 < &S z 9      p _ 2 89L  ' .3BK\k-lBV"0S[w ! #,AP6@ &)?;4#p?<+ JU4^2\NP/:HT=[*p$,- 9IQ `n~.}B(ks(?4 W $!7!H!_!h!:!!=!""("9"J"`"M"EF#7#7##$$.$,J$)w$,$$$$$%$%3A%u%!%l%?$&d&*& '%!'G' \'f'#n'''' ' '' '(,(CG(3(:((,))<*<=*(z**<*;*9++,,D,, ,!, -8*-c- .N./e/B0|W0D01811!1.!22P2272222233(3:3@3G3I3R3Z3 a3)l3GFS #E1`]H(a.! -<XB,Wq O;0=8MCUl)@V4D&m[i:*he2nKd6LZf^_75 u gsRp$?AcYj3JkIvro"%N/bP'> QtT9+\Note: you can still change your e-mail address.A user is already registered with this e-mail address.AccountAccount ConnectionsAccount InactiveAdd E-mailAdd E-mail AddressAdd a 3rd Party AccountAlready have an account? Then please sign in.An account already exists with this e-mail address. Please sign in to that account first, then connect your %s account.An error occurred while attempting to login via your social network account.Are you sure you want to sign out?Bad TokenChange PasswordConfirmConfirm E-mail AddressConfirmation e-mail sent to %(email)s.Current PasswordDo you really want to remove the selected e-mail address?E-mailE-mail (optional)E-mail AddressesE-mail addressForgot Password?Forgotten your password? Enter your e-mail address below, and we'll send you an e-mail allowing you to reset it.If you have not created an account yet, then please sign up first.In case you forgot, your username is %(username)s.Invalid response while obtaining access token from "%s".Invalid response while obtaining request token from "%s".Login CancelledMake PrimaryNew PasswordNew Password (again)No access to private resources at "%s".No access token saved for "%s".No request token saved for "%s".NoteOpenID Sign InPasswordPassword (again)Password ResetPassword Reset E-mailPassword must be a minimum of {0} characters.Password successfully changed.Password successfully set.Please confirm that %(email)s is an e-mail address for user %(user_display)s.Please contact us if you have any trouble resetting your password.Please sign in with one of your existing third party accounts. Or, sign up for a %(site_name)s account and sign in below:Please type your current password.PrimaryPrimary e-mail address set.Re-send VerificationRemember MeRemoveRemoved e-mail address %(email)s.Reset My PasswordSet PasswordSign InSign OutSign UpSign Up ClosedSignupSocial Network Login FailureSuccessfully signed in as %(name)s.The e-mail address and/or password you specified are not correct.The e-mail address is not assigned to any user accountThe following e-mail addresses are associated with your account:The password reset link was invalid, possibly because it has already been used. Please request a new password reset.The social account has been connected.The social account has been disconnected.The social account is already connected to a different account.The username and/or password you specified are not correct.This account is currently inactive.This account is inactive.This e-mail address is already associated with another account.This e-mail address is already associated with this account.This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request.This part of the site requires us to verify that you are who you claim to be. For this purpose, we require that you verify ownership of your e-mail address. UnverifiedUsernameUsername can not be used. Please use other username.Username or e-mailVerifiedVerify Your E-mail AddressWarning:We are sorry, but the sign up is currently closed.We have sent an e-mail to you for verification. Please click on the link inside this e-mail. Please contact us if you do not receive it within a few minutes.We have sent an e-mail to you for verification. Follow the link provided to finalize the signup process. Please contact us if you do not receive it within a few minutes.We have sent you an e-mail. Please contact us if you do not receive it within a few minutes.You are about to use your %(provider_name)s account to login to %(site_name)s. As a final step, please complete the following form:You can sign in to your account using any of the following third party accounts:You cannot remove your primary e-mail address (%(email)s).You currently do not have any e-mail address set up. You should really add an e-mail address so you can receive notifications, reset your password, etc.You currently have no social network accounts connected to this account.You decided to cancel logging in to our site using one of your existing accounts. If this was a mistake, please proceed to sign in.You have confirmed %(email)s.You have signed out.You must type the same password each time.Your account has no password set up.Your account has no verified e-mail address.Your password is now changed.Your primary e-mail address must be verified.change passwordcreatede-mail addressemail addressemail addressesemail confirmationemail confirmationsfield labelLoginkeyorprimarysentuserverifiedyou are already logged in as %(user_display)s.Project-Id-Version: django-allauth Report-Msgid-Bugs-To: POT-Creation-Date: 2018-02-02 12:55-0600 PO-Revision-Date: 2014-08-12 00:31+0200 Last-Translator: joke2k Language-Team: Italian (http://www.transifex.com/projects/p/django-allauth/language/it/) Language: it MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); Nota:Puoi cambiarein ogni momento l'indirizzo e-mail usato per la registrazione.Un altro utente si è già registrato con questo indirizzo e-mail.AccountConnessioni all'accountAccount non attivoAggiungi e-mailAggiungi un Indirizzo e-mailAggiungi un account di un Social NetworkHai già un account valido? Accedi.Esiste già un account con questo indirizzo e-mail. Per favore entra con quell'account, e successivamente connetti il tuo account %s.C'è stato un errore mentre hai provato a collegarti con il tuo account Social Network.Sei sicuro di volerti disconnettere?Token non validoCambia la tua PasswordConfermaConferma l'Indirizzo E-MailAbbiamo inviato una conferma a questo indirizzo %(email)s.Password attualeSei sicuro di voler rimuovere l'indirizzo e-mail selezionato?E-mailE-mail (opzionale)Indirizzi e-mailIndirizzo e-mailPassword dimenticata?Hai dimenticato la tua password? Inserisci qui sotto l'indirizzo e-mail con cui ti sei registrato, ti invieremo una mail con un link per re-impostarla.Se non hai ancora creato un account, RegistratiNel caso tu lo abbia dimenticato, il tuo nome utente é %(username)s.Risposta non valida alla richiesta di un token da "%s".Risposta non valida alla richiesta di un token da "%s".Accesso annullatoRendi PrincipaleNuova passwordNuova password (nuovamente)Nessuna accesso alle risorse private a "%s".Nessun token di accesso salvato per "%s".Nessuna richiesta di token salvata per "%s".NotaAccesso con OpenIDPasswordPassword (nuovamente)Re-imposta la PasswordE-Mail per re-impostare la password La password deve essere lunga almeno {0} caratteri.Password cambiata con successo.Password impostata correttamente.Conferma che %(email)s è un indirizzo e-mail per l'utente %(user_display)s.Se hai qualche problema a re-impostare la password, contattaci!Per favore, loggati con uno dei tuoi account sociali. O, registra un account per %(site_name)s e loggati.Per favore digita la tua password attuale.PrincipaleIndirizzo e-mail principale definito.Re-invia la VerificaRicordamiRimuoviIndirizzo E-Mail rimosso %(email)s.Re-imposta la mia PasswordImposta una passwordAccediDisconnettiRegistrazioneRegistrazioni ChiuseRegistratiAccesso Social fallitoTi sei collegato con successo come %(name)s.L'indirizzo e-mail e/o la password che hai usato non sono corretti.L'indirizzo e-mail non è assegnato a nessun utenzaI seguenti indirizzi e-mail sono associati al tuo account:Il link di re-impostazione della password non è valido, probabilmente è già stato usato. Inoltra una nuova richiesta di re-impostazione della password.L'account Social Network è stato collegato.Social Account scollegato.Questo Social Account è già collegato ad un altro account.Lo username e/o la password che hai usato non sono corretti.Questo account non è attualmente attivoQuesto account non è attivoQuesto indirizzo e-mail è gia associato a un altro account.Questo indirizzo e-mail è già associato a questo account.Questo link di conferma e-mail è scaduto o non è valido. Ti chiediamo di ripetere la richiesta di conferma via e-mail.Per utilizzare questa parte del sito dobbiamo verificare che sei veramente chi dici di essere. Sarà sufficiente dimostrare che hai effettivamente accesso al tuo indirizzo e-mail.Non verificatoUsernameQuesto username non può essere usato. Per favore scegline un altro.Username o e-mailVerificatoVerifica il tuo indirizzo E-Mail.Attenzione:Spiacenti, le registrazioni sono per il momento sospese.Ti abbiamo inviato un messaggio e-mail di verifica. Clicca sul link contenuto nella mail. Se non dovessi ricevere il messaggio entro qualche minuto, contattaci. Grazie Ti abbiamo inviato una e-mail con un Link inserito all'interno. Per completare il procedimento di verifica clicca sul Link. Contattaci se non ricevi la mail entro qualche minuto.Ti abbiamo spedito una mail. Contattaci se non la ricevi entro qualche minuto.Stai per usare il tuo account su %(provider_name)s per effettuare il login su %(site_name)s. Come ultima operazione ti chiediamo di riempire il form qui sotto:Puoi collegarti al tuo account utilizzando uno dei seguenti servizi di autenticazione Social Network:Non puoi eliminare il tuo indirizzo e-mail principale (%(email)s).Non hai ancora indicato nessun indirizzo e-mail. Devi inserirne uno se vuoi ricevere notifiche, recuperare la password, ecc.Non hai account di nessun Social Network collegato a questo account.Hai deciso di cancellare l'accesso a questo sito usando uno dei tuoi account attivi. Se è stato un errore, ripeti l'Accesso.Hai appena confermato questo indirizzo e-mail %(email)s.Ti sei scollegato.Devi digitare la stessa password.Il tuo account non ha ancora nessuna password.Non hai ancora verificato il tuo indirizzo e-mail.Password cambiata.Dobbiamo verificare il tuo indirizzo e-mail principale.cambia passwordcreatoindirizzo e-mailindirizzo emailindirizzi emailemail di confermaemail di confermaLoginchiaveoprimarioinviatoutenteverificatoSei già collegato come %(user_display)s.django-allauth-0.35.0/allauth/locale/it/LC_MESSAGES/django.po0000644000076500000240000006144113235132037024351 0ustar pennersrstaff00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # guglielmo , 2014 # joke2k , 2014 # puntosit , 2014 msgid "" msgstr "" "Project-Id-Version: django-allauth\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-02-02 12:55-0600\n" "PO-Revision-Date: 2014-08-12 00:31+0200\n" "Last-Translator: joke2k \n" "Language-Team: Italian (http://www.transifex.com/projects/p/django-allauth/" "language/it/)\n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: account/adapter.py:45 msgid "Username can not be used. Please use other username." msgstr "Questo username non può essere usato. Per favore scegline un altro." #: account/adapter.py:49 msgid "Too many failed login attempts. Try again later." msgstr "" #: account/adapter.py:51 msgid "A user is already registered with this e-mail address." msgstr "Un altro utente si è già registrato con questo indirizzo e-mail." #: account/adapter.py:288 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "La password deve essere lunga almeno {0} caratteri." #: account/apps.py:7 #, fuzzy msgid "Accounts" msgstr "Account" #: account/forms.py:61 account/forms.py:398 msgid "You must type the same password each time." msgstr "Devi digitare la stessa password." #: account/forms.py:91 account/forms.py:365 account/forms.py:476 msgid "Password" msgstr "Password" #: account/forms.py:92 msgid "Remember Me" msgstr "Ricordami" #: account/forms.py:98 msgid "This account is currently inactive." msgstr "Questo account non è attualmente attivo" #: account/forms.py:101 msgid "The e-mail address and/or password you specified are not correct." msgstr "L'indirizzo e-mail e/o la password che hai usato non sono corretti." #: account/forms.py:104 msgid "The username and/or password you specified are not correct." msgstr "Lo username e/o la password che hai usato non sono corretti." #: account/forms.py:113 account/forms.py:268 account/forms.py:426 #: account/forms.py:495 msgid "E-mail address" msgstr "Indirizzo e-mail" #: account/forms.py:115 account/forms.py:301 account/forms.py:421 #: account/forms.py:490 msgid "E-mail" msgstr "E-mail" #: account/forms.py:120 account/forms.py:123 account/forms.py:260 #: account/forms.py:264 msgid "Username" msgstr "Username" #: account/forms.py:130 msgid "Username or e-mail" msgstr "Username o e-mail" #: account/forms.py:133 msgctxt "field label" msgid "Login" msgstr "Login" #: account/forms.py:292 #, fuzzy #| msgid "E-mail (optional)" msgid "E-mail (again)" msgstr "E-mail (opzionale)" #: account/forms.py:296 #, fuzzy #| msgid "email confirmation" msgid "E-mail address confirmation" msgstr "email di conferma" #: account/forms.py:304 msgid "E-mail (optional)" msgstr "E-mail (opzionale)" #: account/forms.py:345 #, fuzzy #| msgid "You must type the same password each time." msgid "You must type the same email each time." msgstr "Devi digitare la stessa password." #: account/forms.py:368 account/forms.py:477 msgid "Password (again)" msgstr "Password (nuovamente)" #: account/forms.py:432 msgid "This e-mail address is already associated with this account." msgstr "Questo indirizzo e-mail è già associato a questo account." #: account/forms.py:434 msgid "This e-mail address is already associated with another account." msgstr "Questo indirizzo e-mail è gia associato a un altro account." #: account/forms.py:456 msgid "Current Password" msgstr "Password attuale" #: account/forms.py:457 account/forms.py:546 msgid "New Password" msgstr "Nuova password" #: account/forms.py:458 account/forms.py:547 msgid "New Password (again)" msgstr "Nuova password (nuovamente)" #: account/forms.py:466 msgid "Please type your current password." msgstr "Per favore digita la tua password attuale." #: account/forms.py:504 msgid "The e-mail address is not assigned to any user account" msgstr "L'indirizzo e-mail non è assegnato a nessun utenza" #: account/forms.py:568 msgid "The password reset token was invalid." msgstr "" #: account/models.py:23 msgid "user" msgstr "utente" #: account/models.py:27 account/models.py:81 msgid "e-mail address" msgstr "indirizzo e-mail" #: account/models.py:28 msgid "verified" msgstr "verificato" #: account/models.py:29 msgid "primary" msgstr "primario" #: account/models.py:34 msgid "email address" msgstr "indirizzo email" #: account/models.py:35 msgid "email addresses" msgstr "indirizzi email" #: account/models.py:83 msgid "created" msgstr "creato" #: account/models.py:85 msgid "sent" msgstr "inviato" #: account/models.py:86 socialaccount/models.py:55 msgid "key" msgstr "chiave" #: account/models.py:91 msgid "email confirmation" msgstr "email di conferma" #: account/models.py:92 msgid "email confirmations" msgstr "email di conferma" #: socialaccount/adapter.py:26 #, python-format msgid "" "An account already exists with this e-mail address. Please sign in to that " "account first, then connect your %s account." msgstr "" "Esiste già un account con questo indirizzo e-mail. Per favore entra con " "quell'account, e successivamente connetti il tuo account %s." #: socialaccount/adapter.py:131 msgid "Your account has no password set up." msgstr "Il tuo account non ha ancora nessuna password." #: socialaccount/adapter.py:138 msgid "Your account has no verified e-mail address." msgstr "Non hai ancora verificato il tuo indirizzo e-mail." #: socialaccount/apps.py:7 #, fuzzy msgid "Social Accounts" msgstr "Account" #: socialaccount/models.py:43 socialaccount/models.py:77 msgid "provider" msgstr "" #: socialaccount/models.py:46 #, fuzzy msgid "name" msgstr "Username" #: socialaccount/models.py:48 msgid "client id" msgstr "" #: socialaccount/models.py:50 msgid "App ID, or consumer key" msgstr "" #: socialaccount/models.py:51 msgid "secret key" msgstr "" #: socialaccount/models.py:53 msgid "API secret, client secret, or consumer secret" msgstr "" #: socialaccount/models.py:58 #, fuzzy msgid "Key" msgstr "chiave" #: socialaccount/models.py:66 msgid "social application" msgstr "" #: socialaccount/models.py:67 msgid "social applications" msgstr "" #: socialaccount/models.py:96 msgid "uid" msgstr "" #: socialaccount/models.py:98 msgid "last login" msgstr "" #: socialaccount/models.py:100 msgid "date joined" msgstr "" #: socialaccount/models.py:102 msgid "extra data" msgstr "" #: socialaccount/models.py:106 msgid "social account" msgstr "" #: socialaccount/models.py:107 msgid "social accounts" msgstr "" #: socialaccount/models.py:133 msgid "token" msgstr "" #: socialaccount/models.py:135 msgid "\"oauth_token\" (OAuth1) or access token (OAuth2)" msgstr "" #: socialaccount/models.py:138 msgid "token secret" msgstr "" #: socialaccount/models.py:140 msgid "\"oauth_token_secret\" (OAuth1) or refresh token (OAuth2)" msgstr "" #: socialaccount/models.py:142 msgid "expires at" msgstr "" #: socialaccount/models.py:146 msgid "social application token" msgstr "" #: socialaccount/models.py:147 msgid "social application tokens" msgstr "" #: socialaccount/providers/douban/views.py:36 msgid "Invalid profile data" msgstr "" #: socialaccount/providers/oauth/client.py:78 #, python-format msgid "Invalid response while obtaining request token from \"%s\"." msgstr "Risposta non valida alla richiesta di un token da \"%s\"." #: socialaccount/providers/oauth/client.py:109 #, python-format msgid "Invalid response while obtaining access token from \"%s\"." msgstr "Risposta non valida alla richiesta di un token da \"%s\"." #: socialaccount/providers/oauth/client.py:128 #, python-format msgid "No request token saved for \"%s\"." msgstr "Nessuna richiesta di token salvata per \"%s\"." #: socialaccount/providers/oauth/client.py:177 #, python-format msgid "No access token saved for \"%s\"." msgstr "Nessun token di accesso salvato per \"%s\"." #: socialaccount/providers/oauth/client.py:197 #, python-format msgid "No access to private resources at \"%s\"." msgstr "Nessuna accesso alle risorse private a \"%s\"." #: templates/account/account_inactive.html:5 #: templates/account/account_inactive.html:8 msgid "Account Inactive" msgstr "Account non attivo" #: templates/account/account_inactive.html:10 msgid "This account is inactive." msgstr "Questo account non è attivo" #: templates/account/email.html:5 msgid "Account" msgstr "Account" #: templates/account/email.html:8 msgid "E-mail Addresses" msgstr "Indirizzi e-mail" #: templates/account/email.html:10 msgid "The following e-mail addresses are associated with your account:" msgstr "I seguenti indirizzi e-mail sono associati al tuo account:" #: templates/account/email.html:24 msgid "Verified" msgstr "Verificato" #: templates/account/email.html:26 msgid "Unverified" msgstr "Non verificato" #: templates/account/email.html:28 msgid "Primary" msgstr "Principale" #: templates/account/email.html:34 msgid "Make Primary" msgstr "Rendi Principale" #: templates/account/email.html:35 msgid "Re-send Verification" msgstr "Re-invia la Verifica" #: templates/account/email.html:36 templates/socialaccount/connections.html:35 msgid "Remove" msgstr "Rimuovi" #: templates/account/email.html:43 msgid "Warning:" msgstr "Attenzione:" #: templates/account/email.html:43 msgid "" "You currently do not have any e-mail address set up. You should really add " "an e-mail address so you can receive notifications, reset your password, etc." msgstr "" "Non hai ancora indicato nessun indirizzo e-mail. Devi inserirne uno se vuoi " "ricevere notifiche, recuperare la password, ecc." #: templates/account/email.html:48 msgid "Add E-mail Address" msgstr "Aggiungi un Indirizzo e-mail" #: templates/account/email.html:53 msgid "Add E-mail" msgstr "Aggiungi e-mail" #: templates/account/email.html:62 msgid "Do you really want to remove the selected e-mail address?" msgstr "Sei sicuro di voler rimuovere l'indirizzo e-mail selezionato?" #: templates/account/email/email_confirmation_message.txt:1 #, fuzzy, python-format #| msgid "" #| "User %(user_display)s at %(site_name)s has given this as an email " #| "address.\n" #| "\n" #| "To confirm this is correct, go to %(activate_url)s\n" msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because user %(user_display)s has given yours " "as an e-mail address to connect their account.\n" "\n" "To confirm this is correct, go to %(activate_url)s\n" msgstr "" "L'Utente %(user_display)s di %(site_name)s ha registrato questo indirizzo e-" "mail.\n" "Per confermare, clicca qui %(activate_url)s\n" #: templates/account/email/email_confirmation_message.txt:7 #, python-format msgid "" "Thank you from %(site_name)s!\n" "%(site_domain)s" msgstr "" #: templates/account/email/email_confirmation_subject.txt:3 #, fuzzy #| msgid "Confirm E-mail Address" msgid "Please Confirm Your E-mail Address" msgstr "Conferma l'Indirizzo E-Mail" #: templates/account/email/password_reset_key_message.txt:1 #, fuzzy, python-format #| msgid "" #| "You're receiving this e-mail because you or someone else has requested a " #| "password for your user account at %(site_domain)s.\n" #| "It can be safely ignored if you did not request a password reset. Click " #| "the link below to reset your password." msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because you or someone else has requested a " "password for your user account.\n" "It can be safely ignored if you did not request a password reset. Click the " "link below to reset your password." msgstr "" "Hai ricevuto questa mail perché hai richiesto la password per il tuo account " "utente di %(site_domain)s.\n" "Se non hai richiesto tu il reset della password, ignora questa mail, " "altrimenti clicca sul link qui sotto per fare il reset della password." #: templates/account/email/password_reset_key_message.txt:8 #, python-format msgid "In case you forgot, your username is %(username)s." msgstr "Nel caso tu lo abbia dimenticato, il tuo nome utente é %(username)s." #: templates/account/email/password_reset_key_message.txt:10 #, python-format msgid "" "Thank you for using %(site_name)s!\n" "%(site_domain)s" msgstr "" #: templates/account/email/password_reset_key_subject.txt:3 msgid "Password Reset E-mail" msgstr "E-Mail per re-impostare la password " #: templates/account/email_confirm.html:6 #: templates/account/email_confirm.html:10 msgid "Confirm E-mail Address" msgstr "Conferma l'Indirizzo E-Mail" #: templates/account/email_confirm.html:16 #, python-format msgid "" "Please confirm that %(email)s is an e-mail " "address for user %(user_display)s." msgstr "" "Conferma che %(email)s è un indirizzo e-" "mail per l'utente %(user_display)s." #: templates/account/email_confirm.html:20 msgid "Confirm" msgstr "Conferma" #: templates/account/email_confirm.html:27 #, python-format msgid "" "This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request." msgstr "" "Questo link di conferma e-mail è scaduto o non è valido. Ti chiediamo di ripetere la richiesta di conferma via e-mail." #: templates/account/login.html:6 templates/account/login.html:10 #: templates/account/login.html:43 msgid "Sign In" msgstr "Accedi" #: templates/account/login.html:15 #, python-format msgid "" "Please sign in with one\n" "of your existing third party accounts. Or, sign " "up\n" "for a %(site_name)s account and sign in below:" msgstr "" "Per favore, loggati con uno\n" "dei tuoi account sociali. O, registra\n" "un account per %(site_name)s e loggati." #: templates/account/login.html:25 msgid "or" msgstr "o" #: templates/account/login.html:32 #, python-format msgid "" "If you have not created an account yet, then please\n" "sign up first." msgstr "" "Se non hai ancora creato un account, \n" "Registrati" #: templates/account/login.html:42 msgid "Forgot Password?" msgstr "Password dimenticata?" #: templates/account/logout.html:5 templates/account/logout.html:8 #: templates/account/logout.html:17 msgid "Sign Out" msgstr "Disconnetti" #: templates/account/logout.html:10 msgid "Are you sure you want to sign out?" msgstr "Sei sicuro di volerti disconnettere?" #: templates/account/messages/cannot_delete_primary_email.txt:2 #, python-format msgid "You cannot remove your primary e-mail address (%(email)s)." msgstr "Non puoi eliminare il tuo indirizzo e-mail principale (%(email)s)." #: templates/account/messages/email_confirmation_sent.txt:2 #, python-format msgid "Confirmation e-mail sent to %(email)s." msgstr "Abbiamo inviato una conferma a questo indirizzo %(email)s." #: templates/account/messages/email_confirmed.txt:2 #, python-format msgid "You have confirmed %(email)s." msgstr "Hai appena confermato questo indirizzo e-mail %(email)s." #: templates/account/messages/email_deleted.txt:2 #, python-format msgid "Removed e-mail address %(email)s." msgstr "Indirizzo E-Mail rimosso %(email)s." #: templates/account/messages/logged_in.txt:4 #, python-format msgid "Successfully signed in as %(name)s." msgstr "Ti sei collegato con successo come %(name)s." #: templates/account/messages/logged_out.txt:2 msgid "You have signed out." msgstr "Ti sei scollegato." #: templates/account/messages/password_changed.txt:2 msgid "Password successfully changed." msgstr "Password cambiata con successo." #: templates/account/messages/password_set.txt:2 msgid "Password successfully set." msgstr "Password impostata correttamente." #: templates/account/messages/primary_email_set.txt:2 msgid "Primary e-mail address set." msgstr "Indirizzo e-mail principale definito." #: templates/account/messages/unverified_primary_email.txt:2 msgid "Your primary e-mail address must be verified." msgstr "Dobbiamo verificare il tuo indirizzo e-mail principale." #: templates/account/password_change.html:5 #: templates/account/password_change.html:8 #: templates/account/password_change.html:13 #: templates/account/password_reset_from_key.html:4 #: templates/account/password_reset_from_key.html:7 #: templates/account/password_reset_from_key_done.html:4 #: templates/account/password_reset_from_key_done.html:7 msgid "Change Password" msgstr "Cambia la tua Password" #: templates/account/password_reset.html:6 #: templates/account/password_reset.html:10 #: templates/account/password_reset_done.html:6 #: templates/account/password_reset_done.html:9 msgid "Password Reset" msgstr "Re-imposta la Password" #: templates/account/password_reset.html:15 msgid "" "Forgotten your password? Enter your e-mail address below, and we'll send you " "an e-mail allowing you to reset it." msgstr "" "Hai dimenticato la tua password? Inserisci qui sotto l'indirizzo e-mail con " "cui ti sei registrato, ti invieremo una mail con un link per re-impostarla." #: templates/account/password_reset.html:20 msgid "Reset My Password" msgstr "Re-imposta la mia Password" #: templates/account/password_reset.html:23 msgid "Please contact us if you have any trouble resetting your password." msgstr "Se hai qualche problema a re-impostare la password, contattaci!" #: templates/account/password_reset_done.html:15 msgid "" "We have sent you an e-mail. Please contact us if you do not receive it " "within a few minutes." msgstr "" "Ti abbiamo spedito una mail. Contattaci se non la ricevi entro qualche " "minuto." #: templates/account/password_reset_from_key.html:7 msgid "Bad Token" msgstr "Token non valido" #: templates/account/password_reset_from_key.html:11 #, python-format msgid "" "The password reset link was invalid, possibly because it has already been " "used. Please request a new password reset." msgstr "" "Il link di re-impostazione della password non è valido, probabilmente è già " "stato usato. Inoltra una nuova richiesta di " "re-impostazione della password." #: templates/account/password_reset_from_key.html:17 msgid "change password" msgstr "cambia password" #: templates/account/password_reset_from_key.html:20 #: templates/account/password_reset_from_key_done.html:8 msgid "Your password is now changed." msgstr "Password cambiata." #: templates/account/password_set.html:5 templates/account/password_set.html:8 #: templates/account/password_set.html:13 msgid "Set Password" msgstr "Imposta una password" #: templates/account/signup.html:5 templates/socialaccount/signup.html:5 msgid "Signup" msgstr "Registrati" #: templates/account/signup.html:8 templates/account/signup.html:18 #: templates/socialaccount/signup.html:8 templates/socialaccount/signup.html:19 msgid "Sign Up" msgstr "Registrazione" #: templates/account/signup.html:10 #, python-format msgid "" "Already have an account? Then please sign in." msgstr "Hai già un account valido? Accedi." #: templates/account/signup_closed.html:5 #: templates/account/signup_closed.html:8 msgid "Sign Up Closed" msgstr "Registrazioni Chiuse" #: templates/account/signup_closed.html:10 msgid "We are sorry, but the sign up is currently closed." msgstr "Spiacenti, le registrazioni sono per il momento sospese." #: templates/account/snippets/already_logged_in.html:5 msgid "Note" msgstr "Nota" #: templates/account/snippets/already_logged_in.html:5 #, python-format msgid "you are already logged in as %(user_display)s." msgstr "Sei già collegato come %(user_display)s." #: templates/account/verification_sent.html:5 #: templates/account/verification_sent.html:8 #: templates/account/verified_email_required.html:5 #: templates/account/verified_email_required.html:8 msgid "Verify Your E-mail Address" msgstr "Verifica il tuo indirizzo E-Mail." #: templates/account/verification_sent.html:10 msgid "" "We have sent an e-mail to you for verification. Follow the link provided to " "finalize the signup process. Please contact us if you do not receive it " "within a few minutes." msgstr "" "Ti abbiamo inviato una e-mail con un Link inserito all'interno. Per " "completare il procedimento di verifica clicca sul Link. Contattaci se non " "ricevi la mail entro qualche minuto." #: templates/account/verified_email_required.html:12 msgid "" "This part of the site requires us to verify that\n" "you are who you claim to be. For this purpose, we require that you\n" "verify ownership of your e-mail address. " msgstr "" "Per utilizzare questa parte del sito dobbiamo verificare\n" "che sei veramente chi dici di essere. Sarà sufficiente\n" "dimostrare che hai effettivamente accesso al tuo indirizzo e-mail." #: templates/account/verified_email_required.html:16 msgid "" "We have sent an e-mail to you for\n" "verification. Please click on the link inside this e-mail. Please\n" "contact us if you do not receive it within a few minutes." msgstr "" "Ti abbiamo inviato un messaggio e-mail di verifica.\n" "Clicca sul link contenuto nella mail.\n" "Se non dovessi ricevere il messaggio entro qualche minuto, contattaci.\n" "Grazie " #: templates/account/verified_email_required.html:20 #, python-format msgid "" "Note: you can still change your e-" "mail address." msgstr "" "Nota:Puoi cambiarein ogni momento " "l'indirizzo e-mail usato per la registrazione." #: templates/openid/login.html:9 msgid "OpenID Sign In" msgstr "Accesso con OpenID" #: templates/socialaccount/authentication_error.html:5 #: templates/socialaccount/authentication_error.html:8 msgid "Social Network Login Failure" msgstr "Accesso Social fallito" #: templates/socialaccount/authentication_error.html:10 msgid "" "An error occurred while attempting to login via your social network account." msgstr "" "C'è stato un errore mentre hai provato a collegarti con il tuo account " "Social Network." #: templates/socialaccount/connections.html:5 #: templates/socialaccount/connections.html:8 msgid "Account Connections" msgstr "Connessioni all'account" #: templates/socialaccount/connections.html:11 msgid "" "You can sign in to your account using any of the following third party " "accounts:" msgstr "" "Puoi collegarti al tuo account utilizzando uno dei seguenti servizi di " "autenticazione Social Network:" #: templates/socialaccount/connections.html:43 msgid "" "You currently have no social network accounts connected to this account." msgstr "Non hai account di nessun Social Network collegato a questo account." #: templates/socialaccount/connections.html:46 msgid "Add a 3rd Party Account" msgstr "Aggiungi un account di un Social Network" #: templates/socialaccount/login_cancelled.html:5 #: templates/socialaccount/login_cancelled.html:9 msgid "Login Cancelled" msgstr "Accesso annullato" #: templates/socialaccount/login_cancelled.html:13 #, python-format msgid "" "You decided to cancel logging in to our site using one of your existing " "accounts. If this was a mistake, please proceed to sign in." msgstr "" "Hai deciso di cancellare l'accesso a questo sito usando uno dei tuoi account " "attivi. Se è stato un errore, ripeti l'Accesso." #: templates/socialaccount/messages/account_connected.txt:2 msgid "The social account has been connected." msgstr "L'account Social Network è stato collegato." #: templates/socialaccount/messages/account_connected_other.txt:2 msgid "The social account is already connected to a different account." msgstr "Questo Social Account è già collegato ad un altro account." #: templates/socialaccount/messages/account_disconnected.txt:2 msgid "The social account has been disconnected." msgstr "Social Account scollegato." #: templates/socialaccount/signup.html:10 #, python-format msgid "" "You are about to use your %(provider_name)s account to login to\n" "%(site_name)s. As a final step, please complete the following form:" msgstr "" "Stai per usare il tuo account su %(provider_name)s per effettuare il login " "su\n" "%(site_name)s. Come ultima operazione ti chiediamo di riempire il form qui " "sotto:" #~ msgid "The login and/or password you specified are not correct." #~ msgstr "Il login e/o la password che hai usato non sono corretti." #~ msgid "Usernames can only contain letters, digits and @/./+/-/_." #~ msgstr "Gli username possono contenere solo lettere, cifre e @/./+/-/_." #~ msgid "This username is already taken. Please choose another." #~ msgstr "Questo username è già in uso. Per favore scegline un altro." #, fuzzy #~| msgid "Sign In" #~ msgid "Shopify Sign In" #~ msgstr "Accedi" #~ msgid "" #~ "You have confirmed that %(email)s is an " #~ "e-mail address for user %(user_display)s." #~ msgstr "" #~ "Hai appena confermato che %(email)s è un " #~ "indirizzo e-mail valido per l'utente %(user_display)s." #~ msgid "Thanks for using our site!" #~ msgstr "Grazie per aver utilizzato questo Sito!" django-allauth-0.35.0/allauth/locale/zh_TW/0000755000076500000240000000000013235133532021374 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/zh_TW/LC_MESSAGES/0000755000076500000240000000000013235133532023161 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/zh_TW/LC_MESSAGES/django.mo0000644000076500000240000003012613235132042024755 0ustar pennersrstaff000000000000004L \ 6v -       / IG w L V "n     9 .?Np__208c9  'A a-"l=B"4 IU\ n{#A6=@t?N;#?<H 4 $2-`\P:VH*s1*F$q,- ) 1 =K[n    -G[_d.mG`3E-y ; jP <  ! )! 3!@!G! Z!-g!!!!!!!Cw"5"8"9*#d#h#x# ## ## # $ $$&$ 9$F$)_$$$m$<#%`% |%*%% %%% %%%&&& &+&&D&3k&3&-&'?'0'(!(07(-h((j) ))9)) )* !*$+*P**f+?+@8,y,<,v8----!-!.61.h.3. . . . ... // // 9/F/M/Q/d/k/ o/ y/ / / / ///// 0 0 03"0BpjO0EQ8UL9o5x:*4C<`|MFN i$/nJ1 ZK~>yVmabz]7'}d@RPl(6D"+)u A%kHG\ S=f^T&cr2 -vg_hw;,q{?X#ItW.es!Y[3Note: you can still change your e-mail address.A user is already registered with this e-mail address.API secret, client secret, or consumer secretAccountAccount ConnectionsAccount InactiveAccountsAdd E-mailAdd E-mail AddressAdd a 3rd Party AccountAlready have an account? Then please sign in.An account already exists with this e-mail address. Please sign in to that account first, then connect your %s account.An error occurred while attempting to login via your social network account.App ID, or consumer keyAre you sure you want to sign out?Bad TokenChange PasswordConfirmConfirm E-mail AddressCurrent PasswordDo you really want to remove the selected e-mail address?E-mailE-mail (optional)E-mail AddressesE-mail addressForgot Password?Forgotten your password? Enter your e-mail address below, and we'll send you an e-mail allowing you to reset it.If you have not created an account yet, then please sign up first.In case you forgot, your username is %(username)s.Invalid response while obtaining access token from "%s".Invalid response while obtaining request token from "%s".KeyLogin CancelledMake PrimaryNew PasswordNew Password (again)No access to private resources at "%s".No access token saved for "%s".No request token saved for "%s".NoteOpenID Sign InPasswordPassword (again)Password ResetPassword Reset E-mailPassword must be a minimum of {0} characters.Password successfully changed.Password successfully set.Please confirm that %(email)s is an e-mail address for user %(user_display)s.Please contact us if you have any trouble resetting your password.Please type your current password.PrimaryPrimary e-mail address set.Re-send VerificationRemember MeRemoveReset My PasswordSet PasswordSign InSign OutSign UpSign Up ClosedSignupSocial AccountsSocial Network Login FailureSuccessfully signed in as %(name)s.The e-mail address and/or password you specified are not correct.The e-mail address is not assigned to any user accountThe following e-mail addresses are associated with your account:The password reset link was invalid, possibly because it has already been used. Please request a new password reset.The social account is already connected to a different account.The username and/or password you specified are not correct.This account is currently inactive.This account is inactive.This e-mail address is already associated with another account.This e-mail address is already associated with this account.This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request.This part of the site requires us to verify that you are who you claim to be. For this purpose, we require that you verify ownership of your e-mail address. UnverifiedUsernameUsername can not be used. Please use other username.Username or e-mailVerifiedVerify Your E-mail AddressWarning:We are sorry, but the sign up is currently closed.We have sent an e-mail to you for verification. Please click on the link inside this e-mail. Please contact us if you do not receive it within a few minutes.We have sent an e-mail to you for verification. Follow the link provided to finalize the signup process. Please contact us if you do not receive it within a few minutes.We have sent you an e-mail. Please contact us if you do not receive it within a few minutes.You can sign in to your account using any of the following third party accounts:You cannot remove your primary e-mail address (%(email)s).You currently do not have any e-mail address set up. You should really add an e-mail address so you can receive notifications, reset your password, etc.You currently have no social network accounts connected to this account.You decided to cancel logging in to our site using one of your existing accounts. If this was a mistake, please proceed to sign in.You have confirmed %(email)s.You have signed out.You must type the same password each time.Your account has no password set up.Your account has no verified e-mail address.Your password is now changed.Your primary e-mail address must be verified.change passwordclient idcreateddate joinedemail addressemail addressesemail confirmationemail confirmationsexpires atextra datafield labelLoginkeylast loginnameorprimaryprovidersecret keysentsocial accountsocial accountssocial applicationsocial application tokensocial application tokenssocial applicationsuiduserverifiedyou are already logged in as %(user_display)s.Project-Id-Version: django-allauth Report-Msgid-Bugs-To: POT-Creation-Date: 2018-02-02 12:55-0600 PO-Revision-Date: 2014-08-12 00:36+0200 Last-Translator: jresins Language-Team: Chinese (Traditional) Language: zh_TW MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 注意: 您仍能修改您的電子郵件地址 .已經有人使用這一個電子郵件註冊了。API secret, client secret, or consumer secret帳號帳號連結帳號未啟用帳號增加電子郵件增加電子郵件增加一個第三方帳號已有帳號了嗎?請登入.已經有一個帳號與此電子郵件連結了,請先登入該帳號,然後連接你的 %s 帳號。當嘗試用您的社群網路帳號登入時發生錯誤。App ID, or consumer key您確定要登出嗎?Bad Token修改密碼確認確認電子郵件目前密碼您真的要移除所選擇電子郵件嗎?E-mailE-mail (可不填)電子郵件地址電子郵件地址忘記密碼了?忘記您的密碼了嗎? 請在下方輸入您的電子郵件,我們會發送一封電子郵件給您,以便重新設定您的密碼。若你沒有帳號,請先 註冊 。提醒您,您的使用者名稱是 %(username)s 。Invalid response while obtaining access token from "%s".Invalid response while obtaining request token from "%s".Key登入取消了設為主要的新密碼新密碼 (再一次)無權訪問私有資源 "%s"。No access token saved for "%s".No request token saved for "%s".注意OpenID 登入密碼密碼 (再一次)密碼重設密碼重設電子郵件密碼長度至少要有 {0} 個字元。密碼修改完成。密碼設定完成。請確認%(email)s是否是使用者 %(user_display)s 的電子郵件地址。如果在重設密碼時碰到問題,請與我們聯絡。請輸入您目前的密碼主要的已設定好主要的電子郵件地址。重寄驗証信記住我移除重設我的密碼設定密碼登入登出註冊註冊未開放註冊社群帳號社群網路登入失敗成功以 %(name)s..的身份登入。您提供的電子郵件地址或密碼不正確。還沒有其他帳號使用這個電子郵件地址下列電子郵件已與你的帳號連結:密碼重設連結已失效,可能是因為該連結已經被人用過了,請重新申請重設密碼。這個社群網站帳號已經與另一個帳號連結過了。您提供的使用者名稱或密碼不正確。此帳號目前沒有啟用。這個帳號未啟用此電子郵件已經與別的帳號連結了。此電子郵件已與這個帳號連結了。電子郵件確認連結已經過期或失效了,請點擊 以要求發送新的電子郵件確認信。此網站的這部分功能需要驗證您的身份, 因此我們需要確認您的電子郵件地址。未驗證使用者名稱無法使用此使用者名稱,請使用其他名稱。使用者名稱或電子郵件已驗證驗證您的電子郵件地址警告:很抱歉,目前不開放註冊。我們剛剛寄了一封電子郵件確認信給您, 請點擊郵件中的連結。您在數分鐘內尚無法收到郵件,請與我們聯絡。我們剛剛寄了一封電子郵件確認信給您,請點擊郵件中的連結以完成註冊流程。若您在數分鐘內尚無法收到郵件,請與我們聯絡。我們已經寄了一封電子郵件給您,如果數分鐘內您沒有收到,請與我們聯絡。您可以使用下列任何第三方帳號登入您的帳號:您不能移除您的主要的電子郵件地址 (%(email)s) 。您尚未設定任何電子郵件。建議您最好設定一個電子郵件,以便您接收通知或重新設定密碼等等。您目前沒有任何社群網路帳號與此帳號連結。您決定不繼續登入這一個網站。若這是一個失誤,請由此重新登入。您以確認電子郵件地址 %(email)s 。 您已登出。每次輸入的密碼必須相同您的帳號沒有設置密碼。您的帳號下沒有驗證過的電子郵件地址。您的密碼已變更。您的主要電子郵件位址必須被驗證過。修改密碼client id以建立加入日期電子郵件地址電子郵件地址電子郵件確認電子郵件確認過期日額外資料登入key最後一次登入名稱或主要的提供者secret key已送出社群帳號社群帳號社群應用程式社群應用程式 Token社群應用程式 Token社群應用程式uid使用者已驗證您已經以 %(user_display)s 的身份登入了。django-allauth-0.35.0/allauth/locale/zh_TW/LC_MESSAGES/django.po0000644000076500000240000006746413235132037025003 0ustar pennersrstaff00000000000000# Copyright (C) 2014 # This file is distributed under the same license as the django-allauth package. # Kirby Wu , 2014 # msgid "" msgstr "" "Project-Id-Version: django-allauth\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-02-02 12:55-0600\n" "PO-Revision-Date: 2014-08-12 00:36+0200\n" "Last-Translator: jresins \n" "Language-Team: Chinese (Traditional)\n" "Language: zh_TW\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: account/adapter.py:45 msgid "Username can not be used. Please use other username." msgstr "無法使用此使用者名稱,請使用其他名稱。" #: account/adapter.py:49 msgid "Too many failed login attempts. Try again later." msgstr "" #: account/adapter.py:51 msgid "A user is already registered with this e-mail address." msgstr "已經有人使用這一個電子郵件註冊了。" #: account/adapter.py:288 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "密碼長度至少要有 {0} 個字元。" #: account/apps.py:7 msgid "Accounts" msgstr "帳號" #: account/forms.py:61 account/forms.py:398 msgid "You must type the same password each time." msgstr "每次輸入的密碼必須相同" #: account/forms.py:91 account/forms.py:365 account/forms.py:476 msgid "Password" msgstr "密碼" #: account/forms.py:92 msgid "Remember Me" msgstr "記住我" #: account/forms.py:98 msgid "This account is currently inactive." msgstr "此帳號目前沒有啟用。" #: account/forms.py:101 msgid "The e-mail address and/or password you specified are not correct." msgstr "您提供的電子郵件地址或密碼不正確。" #: account/forms.py:104 msgid "The username and/or password you specified are not correct." msgstr "您提供的使用者名稱或密碼不正確。" #: account/forms.py:113 account/forms.py:268 account/forms.py:426 #: account/forms.py:495 msgid "E-mail address" msgstr "電子郵件地址" #: account/forms.py:115 account/forms.py:301 account/forms.py:421 #: account/forms.py:490 msgid "E-mail" msgstr "E-mail" #: account/forms.py:120 account/forms.py:123 account/forms.py:260 #: account/forms.py:264 msgid "Username" msgstr "使用者名稱" #: account/forms.py:130 msgid "Username or e-mail" msgstr "使用者名稱或電子郵件" #: account/forms.py:133 msgctxt "field label" msgid "Login" msgstr "登入" #: account/forms.py:292 #, fuzzy #| msgid "E-mail (optional)" msgid "E-mail (again)" msgstr "E-mail (可不填)" #: account/forms.py:296 #, fuzzy #| msgid "email confirmation" msgid "E-mail address confirmation" msgstr "電子郵件確認" #: account/forms.py:304 msgid "E-mail (optional)" msgstr "E-mail (可不填)" #: account/forms.py:345 #, fuzzy #| msgid "You must type the same password each time." msgid "You must type the same email each time." msgstr "每次輸入的密碼必須相同" #: account/forms.py:368 account/forms.py:477 msgid "Password (again)" msgstr "密碼 (再一次)" #: account/forms.py:432 msgid "This e-mail address is already associated with this account." msgstr "此電子郵件已與這個帳號連結了。" #: account/forms.py:434 msgid "This e-mail address is already associated with another account." msgstr "此電子郵件已經與別的帳號連結了。" #: account/forms.py:456 msgid "Current Password" msgstr "目前密碼" #: account/forms.py:457 account/forms.py:546 msgid "New Password" msgstr "新密碼" #: account/forms.py:458 account/forms.py:547 msgid "New Password (again)" msgstr "新密碼 (再一次)" #: account/forms.py:466 msgid "Please type your current password." msgstr "請輸入您目前的密碼" #: account/forms.py:504 msgid "The e-mail address is not assigned to any user account" msgstr "還沒有其他帳號使用這個電子郵件地址" #: account/forms.py:568 msgid "The password reset token was invalid." msgstr "" #: account/models.py:23 msgid "user" msgstr "使用者" #: account/models.py:27 account/models.py:81 #, fuzzy msgid "e-mail address" msgstr "電子郵件地址" #: account/models.py:28 msgid "verified" msgstr "已驗證" #: account/models.py:29 msgid "primary" msgstr "主要的" #: account/models.py:34 msgid "email address" msgstr "電子郵件地址" #: account/models.py:35 msgid "email addresses" msgstr "電子郵件地址" #: account/models.py:83 msgid "created" msgstr "以建立" #: account/models.py:85 msgid "sent" msgstr "已送出" #: account/models.py:86 socialaccount/models.py:55 msgid "key" msgstr "key" #: account/models.py:91 msgid "email confirmation" msgstr "電子郵件確認" #: account/models.py:92 msgid "email confirmations" msgstr "電子郵件確認" #: socialaccount/adapter.py:26 #, python-format msgid "" "An account already exists with this e-mail address. Please sign in to that " "account first, then connect your %s account." msgstr "" "已經有一個帳號與此電子郵件連結了,請先登入該帳號,然後連接你的 %s 帳號。" #: socialaccount/adapter.py:131 msgid "Your account has no password set up." msgstr "您的帳號沒有設置密碼。" #: socialaccount/adapter.py:138 msgid "Your account has no verified e-mail address." msgstr "您的帳號下沒有驗證過的電子郵件地址。" #: socialaccount/apps.py:7 msgid "Social Accounts" msgstr "社群帳號" #: socialaccount/models.py:43 socialaccount/models.py:77 msgid "provider" msgstr "提供者" #: socialaccount/models.py:46 msgid "name" msgstr "名稱" #: socialaccount/models.py:48 msgid "client id" msgstr "client id" #: socialaccount/models.py:50 msgid "App ID, or consumer key" msgstr "App ID, or consumer key" #: socialaccount/models.py:51 msgid "secret key" msgstr "secret key" #: socialaccount/models.py:53 msgid "API secret, client secret, or consumer secret" msgstr "API secret, client secret, or consumer secret" #: socialaccount/models.py:58 msgid "Key" msgstr "Key" #: socialaccount/models.py:66 msgid "social application" msgstr "社群應用程式" #: socialaccount/models.py:67 msgid "social applications" msgstr "社群應用程式" #: socialaccount/models.py:96 msgid "uid" msgstr "uid" #: socialaccount/models.py:98 msgid "last login" msgstr "最後一次登入" #: socialaccount/models.py:100 msgid "date joined" msgstr "加入日期" #: socialaccount/models.py:102 msgid "extra data" msgstr "額外資料" #: socialaccount/models.py:106 msgid "social account" msgstr "社群帳號" #: socialaccount/models.py:107 msgid "social accounts" msgstr "社群帳號" #: socialaccount/models.py:133 msgid "token" msgstr "" #: socialaccount/models.py:135 msgid "\"oauth_token\" (OAuth1) or access token (OAuth2)" msgstr "" #: socialaccount/models.py:138 msgid "token secret" msgstr "" #: socialaccount/models.py:140 msgid "\"oauth_token_secret\" (OAuth1) or refresh token (OAuth2)" msgstr "" #: socialaccount/models.py:142 msgid "expires at" msgstr "過期日" #: socialaccount/models.py:146 msgid "social application token" msgstr "社群應用程式 Token" #: socialaccount/models.py:147 msgid "social application tokens" msgstr "社群應用程式 Token" #: socialaccount/providers/douban/views.py:36 msgid "Invalid profile data" msgstr "" #: socialaccount/providers/oauth/client.py:78 #, python-format msgid "Invalid response while obtaining request token from \"%s\"." msgstr "Invalid response while obtaining request token from \"%s\"." #: socialaccount/providers/oauth/client.py:109 #, python-format msgid "Invalid response while obtaining access token from \"%s\"." msgstr "Invalid response while obtaining access token from \"%s\"." #: socialaccount/providers/oauth/client.py:128 #, python-format msgid "No request token saved for \"%s\"." msgstr "No request token saved for \"%s\"." #: socialaccount/providers/oauth/client.py:177 #, python-format msgid "No access token saved for \"%s\"." msgstr "No access token saved for \"%s\"." #: socialaccount/providers/oauth/client.py:197 #, python-format msgid "No access to private resources at \"%s\"." msgstr "無權訪問私有資源 \"%s\"。" #: templates/account/account_inactive.html:5 #: templates/account/account_inactive.html:8 msgid "Account Inactive" msgstr "帳號未啟用" #: templates/account/account_inactive.html:10 msgid "This account is inactive." msgstr "這個帳號未啟用" #: templates/account/email.html:5 msgid "Account" msgstr "帳號" #: templates/account/email.html:8 msgid "E-mail Addresses" msgstr "電子郵件地址" #: templates/account/email.html:10 msgid "The following e-mail addresses are associated with your account:" msgstr "下列電子郵件已與你的帳號連結:" #: templates/account/email.html:24 msgid "Verified" msgstr "已驗證" #: templates/account/email.html:26 msgid "Unverified" msgstr "未驗證" #: templates/account/email.html:28 msgid "Primary" msgstr "主要的" #: templates/account/email.html:34 msgid "Make Primary" msgstr "設為主要的" #: templates/account/email.html:35 msgid "Re-send Verification" msgstr "重寄驗証信" #: templates/account/email.html:36 templates/socialaccount/connections.html:35 msgid "Remove" msgstr "移除" #: templates/account/email.html:43 msgid "Warning:" msgstr "警告:" #: templates/account/email.html:43 msgid "" "You currently do not have any e-mail address set up. You should really add " "an e-mail address so you can receive notifications, reset your password, etc." msgstr "" "您尚未設定任何電子郵件。建議您最好設定一個電子郵件,以便您接收通知或重新設定" "密碼等等。" #: templates/account/email.html:48 msgid "Add E-mail Address" msgstr "增加電子郵件" #: templates/account/email.html:53 msgid "Add E-mail" msgstr "增加電子郵件" #: templates/account/email.html:62 msgid "Do you really want to remove the selected e-mail address?" msgstr "您真的要移除所選擇電子郵件嗎?" #: templates/account/email/email_confirmation_message.txt:1 #, fuzzy, python-format #| msgid "" #| "User %(user_display)s at %(site_name)s has given this as an email " #| "address.\n" #| "\n" #| "To confirm this is correct, go to %(activate_url)s\n" msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because user %(user_display)s has given yours " "as an e-mail address to connect their account.\n" "\n" "To confirm this is correct, go to %(activate_url)s\n" msgstr "" "網站%(site_name)s上的使用者%(user_display)s將此設為他的電子郵件地址。\n" "\n" "為了確認這是正確的,請開啟這個連結: %(activate_url)s\n" #: templates/account/email/email_confirmation_message.txt:7 #, python-format msgid "" "Thank you from %(site_name)s!\n" "%(site_domain)s" msgstr "" #: templates/account/email/email_confirmation_subject.txt:3 #, fuzzy #| msgid "Confirm E-mail Address" msgid "Please Confirm Your E-mail Address" msgstr "確認電子郵件" #: templates/account/email/password_reset_key_message.txt:1 #, fuzzy, python-format #| msgid "" #| "You're receiving this e-mail because you or someone else has requested a " #| "password for your user account at %(site_domain)s.\n" #| "It can be safely ignored if you did not request a password reset. Click " #| "the link below to reset your password." msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because you or someone else has requested a " "password for your user account.\n" "It can be safely ignored if you did not request a password reset. Click the " "link below to reset your password." msgstr "" "您會收到這封信是因為您或是某人在 %(site_domain)s 這個網站上要求重設您帳號的密" "碼。\n" "若您沒有要求我們重設密碼,請您直接忽略這封信。若要重設您的密碼,請點擊下面的" "連結。" #: templates/account/email/password_reset_key_message.txt:8 #, python-format msgid "In case you forgot, your username is %(username)s." msgstr "提醒您,您的使用者名稱是 %(username)s 。" #: templates/account/email/password_reset_key_message.txt:10 #, python-format msgid "" "Thank you for using %(site_name)s!\n" "%(site_domain)s" msgstr "" #: templates/account/email/password_reset_key_subject.txt:3 msgid "Password Reset E-mail" msgstr "密碼重設電子郵件" #: templates/account/email_confirm.html:6 #: templates/account/email_confirm.html:10 msgid "Confirm E-mail Address" msgstr "確認電子郵件" #: templates/account/email_confirm.html:16 #, python-format msgid "" "Please confirm that %(email)s is an e-mail " "address for user %(user_display)s." msgstr "" "請確認%(email)s是否是使用者 " "%(user_display)s 的電子郵件地址。" #: templates/account/email_confirm.html:20 msgid "Confirm" msgstr "確認" #: templates/account/email_confirm.html:27 #, python-format msgid "" "This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request." msgstr "" "電子郵件確認連結已經過期或失效了,請點擊 以要求發" "送新的電子郵件確認信。" #: templates/account/login.html:6 templates/account/login.html:10 #: templates/account/login.html:43 msgid "Sign In" msgstr "登入" #: templates/account/login.html:15 #, fuzzy, python-format msgid "" "Please sign in with one\n" "of your existing third party accounts. Or, sign " "up\n" "for a %(site_name)s account and sign in below:" msgstr "" "請用您的第三方帳號登入。\n" "或者註冊 \n" "一個 %(site_name)s帳號後登入:" #: templates/account/login.html:25 msgid "or" msgstr "或" #: templates/account/login.html:32 #, python-format msgid "" "If you have not created an account yet, then please\n" "sign up first." msgstr "" "若你沒有帳號,請先\n" "註冊 。" #: templates/account/login.html:42 msgid "Forgot Password?" msgstr "忘記密碼了?" #: templates/account/logout.html:5 templates/account/logout.html:8 #: templates/account/logout.html:17 msgid "Sign Out" msgstr "登出" #: templates/account/logout.html:10 msgid "Are you sure you want to sign out?" msgstr "您確定要登出嗎?" #: templates/account/messages/cannot_delete_primary_email.txt:2 #, python-format msgid "You cannot remove your primary e-mail address (%(email)s)." msgstr "您不能移除您的主要的電子郵件地址 (%(email)s) 。" #: templates/account/messages/email_confirmation_sent.txt:2 #, fuzzy, python-format msgid "Confirmation e-mail sent to %(email)s." msgstr "確認信已發至 %(email)s 。" #: templates/account/messages/email_confirmed.txt:2 #, python-format msgid "You have confirmed %(email)s." msgstr "您以確認電子郵件地址 %(email)s 。 " #: templates/account/messages/email_deleted.txt:2 #, fuzzy, python-format msgid "Removed e-mail address %(email)s." msgstr "電子郵件地址 %(email)s 已刪除。" #: templates/account/messages/logged_in.txt:4 #, python-format msgid "Successfully signed in as %(name)s." msgstr "成功以 %(name)s..的身份登入。" #: templates/account/messages/logged_out.txt:2 msgid "You have signed out." msgstr "您已登出。" #: templates/account/messages/password_changed.txt:2 msgid "Password successfully changed." msgstr "密碼修改完成。" #: templates/account/messages/password_set.txt:2 msgid "Password successfully set." msgstr "密碼設定完成。" #: templates/account/messages/primary_email_set.txt:2 msgid "Primary e-mail address set." msgstr "已設定好主要的電子郵件地址。" #: templates/account/messages/unverified_primary_email.txt:2 msgid "Your primary e-mail address must be verified." msgstr "您的主要電子郵件位址必須被驗證過。" #: templates/account/password_change.html:5 #: templates/account/password_change.html:8 #: templates/account/password_change.html:13 #: templates/account/password_reset_from_key.html:4 #: templates/account/password_reset_from_key.html:7 #: templates/account/password_reset_from_key_done.html:4 #: templates/account/password_reset_from_key_done.html:7 msgid "Change Password" msgstr "修改密碼" #: templates/account/password_reset.html:6 #: templates/account/password_reset.html:10 #: templates/account/password_reset_done.html:6 #: templates/account/password_reset_done.html:9 msgid "Password Reset" msgstr "密碼重設" #: templates/account/password_reset.html:15 msgid "" "Forgotten your password? Enter your e-mail address below, and we'll send you " "an e-mail allowing you to reset it." msgstr "" "忘記您的密碼了嗎? 請在下方輸入您的電子郵件,我們會發送一封電子郵件給您,以便" "重新設定您的密碼。" #: templates/account/password_reset.html:20 msgid "Reset My Password" msgstr "重設我的密碼" #: templates/account/password_reset.html:23 msgid "Please contact us if you have any trouble resetting your password." msgstr "如果在重設密碼時碰到問題,請與我們聯絡。" #: templates/account/password_reset_done.html:15 msgid "" "We have sent you an e-mail. Please contact us if you do not receive it " "within a few minutes." msgstr "我們已經寄了一封電子郵件給您,如果數分鐘內您沒有收到,請與我們聯絡。" #: templates/account/password_reset_from_key.html:7 msgid "Bad Token" msgstr "Bad Token" #: templates/account/password_reset_from_key.html:11 #, python-format msgid "" "The password reset link was invalid, possibly because it has already been " "used. Please request a new password reset." msgstr "" "密碼重設連結已失效,可能是因為該連結已經被人用過了,請重新申請重設密碼。" #: templates/account/password_reset_from_key.html:17 msgid "change password" msgstr "修改密碼" #: templates/account/password_reset_from_key.html:20 #: templates/account/password_reset_from_key_done.html:8 msgid "Your password is now changed." msgstr "您的密碼已變更。" #: templates/account/password_set.html:5 templates/account/password_set.html:8 #: templates/account/password_set.html:13 msgid "Set Password" msgstr "設定密碼" #: templates/account/signup.html:5 templates/socialaccount/signup.html:5 msgid "Signup" msgstr "註冊" #: templates/account/signup.html:8 templates/account/signup.html:18 #: templates/socialaccount/signup.html:8 templates/socialaccount/signup.html:19 msgid "Sign Up" msgstr "註冊" #: templates/account/signup.html:10 #, python-format msgid "" "Already have an account? Then please sign in." msgstr "已有帳號了嗎?請登入." #: templates/account/signup_closed.html:5 #: templates/account/signup_closed.html:8 msgid "Sign Up Closed" msgstr "註冊未開放" #: templates/account/signup_closed.html:10 msgid "We are sorry, but the sign up is currently closed." msgstr "很抱歉,目前不開放註冊。" #: templates/account/snippets/already_logged_in.html:5 msgid "Note" msgstr "注意" #: templates/account/snippets/already_logged_in.html:5 #, python-format msgid "you are already logged in as %(user_display)s." msgstr "您已經以 %(user_display)s 的身份登入了。" #: templates/account/verification_sent.html:5 #: templates/account/verification_sent.html:8 #: templates/account/verified_email_required.html:5 #: templates/account/verified_email_required.html:8 msgid "Verify Your E-mail Address" msgstr "驗證您的電子郵件地址" #: templates/account/verification_sent.html:10 msgid "" "We have sent an e-mail to you for verification. Follow the link provided to " "finalize the signup process. Please contact us if you do not receive it " "within a few minutes." msgstr "" "我們剛剛寄了一封電子郵件確認信給您,請點擊郵件中的連結以完成註冊流程。若您在" "數分鐘內尚無法收到郵件,請與我們聯絡。" #: templates/account/verified_email_required.html:12 msgid "" "This part of the site requires us to verify that\n" "you are who you claim to be. For this purpose, we require that you\n" "verify ownership of your e-mail address. " msgstr "" "此網站的這部分功能需要驗證您的身份,\n" "因此我們需要確認您的電子郵件地址。" #: templates/account/verified_email_required.html:16 msgid "" "We have sent an e-mail to you for\n" "verification. Please click on the link inside this e-mail. Please\n" "contact us if you do not receive it within a few minutes." msgstr "" "我們剛剛寄了一封電子郵件確認信給您,\n" "請點擊郵件中的連結。您在數分鐘內尚無法收到郵件,請與我們聯絡。" #: templates/account/verified_email_required.html:20 #, python-format msgid "" "Note: you can still change your e-" "mail address." msgstr "" "注意: 您仍能修改您的電子郵件地址 " "." #: templates/openid/login.html:9 msgid "OpenID Sign In" msgstr "OpenID 登入" #: templates/socialaccount/authentication_error.html:5 #: templates/socialaccount/authentication_error.html:8 msgid "Social Network Login Failure" msgstr "社群網路登入失敗" #: templates/socialaccount/authentication_error.html:10 msgid "" "An error occurred while attempting to login via your social network account." msgstr "當嘗試用您的社群網路帳號登入時發生錯誤。" #: templates/socialaccount/connections.html:5 #: templates/socialaccount/connections.html:8 msgid "Account Connections" msgstr "帳號連結" #: templates/socialaccount/connections.html:11 msgid "" "You can sign in to your account using any of the following third party " "accounts:" msgstr "您可以使用下列任何第三方帳號登入您的帳號:" #: templates/socialaccount/connections.html:43 msgid "" "You currently have no social network accounts connected to this account." msgstr "您目前沒有任何社群網路帳號與此帳號連結。" #: templates/socialaccount/connections.html:46 msgid "Add a 3rd Party Account" msgstr "增加一個第三方帳號" #: templates/socialaccount/login_cancelled.html:5 #: templates/socialaccount/login_cancelled.html:9 msgid "Login Cancelled" msgstr "登入取消了" #: templates/socialaccount/login_cancelled.html:13 #, python-format msgid "" "You decided to cancel logging in to our site using one of your existing " "accounts. If this was a mistake, please proceed to sign in." msgstr "" "您決定不繼續登入這一個網站。若這是一個失誤,請由此" "重新登入。" #: templates/socialaccount/messages/account_connected.txt:2 #, fuzzy msgid "The social account has been connected." msgstr "社群網站帳號已連結。" #: templates/socialaccount/messages/account_connected_other.txt:2 msgid "The social account is already connected to a different account." msgstr "這個社群網站帳號已經與另一個帳號連結過了。" #: templates/socialaccount/messages/account_disconnected.txt:2 #, fuzzy msgid "The social account has been disconnected." msgstr "社群網站帳號已斷開連結。" #: templates/socialaccount/signup.html:10 #, fuzzy, python-format msgid "" "You are about to use your %(provider_name)s account to login to\n" "%(site_name)s. As a final step, please complete the following form:" msgstr "" "您將使用 %(provider_name)s 這個帳號登入\n" " %(site_name)s 這個網站。最後一步,請填完下列表單:" #~ msgid "The login and/or password you specified are not correct." #~ msgstr "您提供的帳號或密碼不正確。" #~ msgid "Usernames can only contain letters, digits and @/./+/-/_." #~ msgstr "使用者名稱只能包含字母,數字及 @/./+/-/_." #~ msgid "This username is already taken. Please choose another." #~ msgstr "這個使用者名稱已經有人用了,請換一個。" #, fuzzy #~| msgid "Sign In" #~ msgid "Shopify Sign In" #~ msgstr "登入" #~ msgid "" #~ "You have confirmed that %(email)s is an " #~ "e-mail address for user %(user_display)s." #~ msgstr "" #~ "您以確認%(email)s是使用者%(user_display)s" #~ "的電子郵件地址。" #~ msgid "Thanks for using our site!" #~ msgstr "感謝您使用我們的網站!" #~ msgid "Confirmation e-mail sent to %(email)s" #~ msgstr "确认e-mail已发往 %(email)s" #~ msgid "Delete Password" #~ msgstr "删除密码" #~ msgid "" #~ "You may delete your password since you are currently logged in using " #~ "OpenID." #~ msgstr "您当前使用OpenID登录,因此您可以删除你的密码。" #~ msgid "delete my password" #~ msgstr "删除我的密码" #~ msgid "Password Deleted" #~ msgstr "密码已删除" #~ msgid "Your password has been deleted." #~ msgstr "您的密码已被删除。" #~ msgid "Your e-mail address has already been verified" #~ msgstr "Je e-mail adres is al geverifieerd" #~ msgid "" #~ "If you have any trouble resetting your password, contact us at %(CONTACT_EMAIL)s." #~ msgstr "" #~ "Als je problemen hebt je wachtwoord opnieuw in te stellen, neem dan " #~ "contact op met %(CONTACT_EMAIL)s." #~ msgid "Invalid confirmation key." #~ msgstr "Ongeldige bevestigingssleutel." #~ msgid "OpenID" #~ msgstr "OpenID" #~ msgid "Already have an account?" #~ msgstr "Heb je al een account?" #~ msgid "Sign in" #~ msgstr "Aanmelden" #~ msgid "Language" #~ msgstr "Taal" #~ msgid "Pinax can be used in your preferred language." #~ msgstr "Deze site kan in jouw voorkeurstaal gebruikt worden." #~ msgid "Change my language" #~ msgstr "Verander mijn taal" #~ msgid "Timezone" #~ msgstr "Tijdzone" #, fuzzy #~ msgid "" #~ "You're receiving this e-mail because you requested a password reset\n" #~ "for your user account at Pinax.\n" #~ "\n" #~ "Your new password is: %(new_password)s\n" #~ "\n" #~ "Your username, in case you've forgotten: %(username)s\n" #~ "\n" #~ "You should log in as soon as possible and change your password.\n" #~ "\n" #~ "Thanks for using our site!\n" #~ msgstr "" #~ "Je ontvangt deze mail omdat er een verzoek is ingelegd om het wachtwoord\n" #~ "behorende bij je %(site_name)s account opnieuw in te stellen.\n" #~ "\n" #~ "Je nieuwe wachtwoord is: %(new_password)s\n" #~ "\n" #~ "Je gebruikersnaam, voor het geval je die vergeten bent, is: %(username)s\n" #~ "\n" #~ "Je moet zo snel mogelijk inloggen en bovenstaand wachtwoord veranderen.\n" #~ "\n" #~ "Bedankt voor het gebruik van onze site!\n" #~ msgid "If checked you will stay logged in for 3 weeks" #~ msgstr "Bij 'Onthouden' blijf je ingelogd gedurende 3 weken" #~ msgid "Timezone successfully updated." #~ msgstr "Tijdzone gewijzigd." #~ msgid "Language successfully updated." #~ msgstr "Taal gewijzigd." #~ msgid "E-Mail Addresses" #~ msgstr "E-mail adressen" #~ msgid "None" #~ msgstr "Geen" #~ msgid "add" #~ msgstr "Voeg toe" #~ msgid "Log In" #~ msgstr "Inloggen" #~ msgid "Log in" #~ msgstr "Inloggen" #~ msgid "Logout" #~ msgstr "Afmelden" #~ msgid "" #~ "When you receive the new password, you should log in and change it as soon as possible." #~ msgstr "" #~ "Zodra je het nieuwe wachtwoord ontvangen hebt moet je zo snel mogelijk inloggen en het wachtwoord wijzigen." #~ msgid "You are already logged in." #~ msgstr "Je bent al ingelogd." #~ msgid "" #~ "By clicking \"Sign Up\", you are indicating that you have read and agree " #~ "to the Terms of Use and Privacy Policy." #~ msgstr "" #~ "Door te registreren geef je aan dat je de gebruiksvoorwaarden en de privacy " #~ "policy gelezen hebt en ermee akkoord gaat." #~ msgid "" #~ "If you have any trouble creating your account, contact us at %(contact_email)s." #~ msgstr "" #~ "Als je problemen hebt om een account aan te maken, neem dan contact op " #~ "met %(contact_email)s." #~ msgid "Log in »" #~ msgstr "Inloggen" django-allauth-0.35.0/allauth/locale/cs/0000755000076500000240000000000013235133532020746 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/cs/LC_MESSAGES/0000755000076500000240000000000013235133532022533 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/cs/LC_MESSAGES/django.mo0000644000076500000240000002667313235132042024343 0ustar pennersrstaff00000000000000l|0 \1 6      I( wr L "7 Z d t | &  9    / > pO 2 8 9, f v  '  "+<K-alB6"y !  )1:BQX#uA6@S%&)9;c#?<Z0y 4*23f\Pa:Ho*$,-=k {.i1PWi{GM'  ()Eo4|O) / F R -f . ,  ! !&!A!-X!!!!!r!Q="(" "!"" # #+#G#]#l# {####1#'#*$+G$9s$$$.%'S%%{%8%$%%1&0N&y&&E' ''J' C( d(!n( (8((])E)>:*y*LH++&,@,],$v,.,,8, ---?-Q-e-z--5-f +!E% bk IFN<`-Jg0PW']HSO(XMQ_,9*G/6?C;h=:U"\7 $4c 2B^iLjV#1Y3TK8AZl) R5Dd>@e&.a[Note: you can still change your e-mail address.A user is already registered with this e-mail address.AccountAccount ConnectionsAccount InactiveAdd E-mailAdd E-mail AddressAdd a 3rd Party AccountAlready have an account? Then please sign in.An account already exists with this e-mail address. Please sign in to that account first, then connect your %s account.An error occurred while attempting to login via your social network account.Are you sure you want to sign out?Bad TokenChange PasswordConfirmConfirm E-mail AddressConfirmation e-mail sent to %(email)s.Current PasswordDo you really want to remove the selected e-mail address?E-mailE-mail (optional)E-mail AddressesE-mail addressForgot Password?Forgotten your password? Enter your e-mail address below, and we'll send you an e-mail allowing you to reset it.In case you forgot, your username is %(username)s.Invalid response while obtaining access token from "%s".Invalid response while obtaining request token from "%s".Login CancelledMake PrimaryNew PasswordNew Password (again)No access to private resources at "%s".No access token saved for "%s".No request token saved for "%s".NoteOpenID Sign InPasswordPassword (again)Password ResetPassword Reset E-mailPassword must be a minimum of {0} characters.Password successfully changed.Password successfully set.Please confirm that %(email)s is an e-mail address for user %(user_display)s.Please contact us if you have any trouble resetting your password.Please type your current password.PrimaryPrimary e-mail address set.Re-send VerificationRemember MeRemoveRemoved e-mail address %(email)s.Reset My PasswordSet PasswordSign InSign OutSign UpSign Up ClosedSignupSocial Network Login FailureSuccessfully signed in as %(name)s.The e-mail address and/or password you specified are not correct.The e-mail address is not assigned to any user accountThe following e-mail addresses are associated with your account:The password reset link was invalid, possibly because it has already been used. Please request a new password reset.The password reset token was invalid.The social account has been connected.The social account has been disconnected.The username and/or password you specified are not correct.This account is currently inactive.This account is inactive.This e-mail address is already associated with another account.This e-mail address is already associated with this account.This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request.This part of the site requires us to verify that you are who you claim to be. For this purpose, we require that you verify ownership of your e-mail address. Too many failed login attempts. Try again later.UnverifiedUsernameUsername can not be used. Please use other username.Username or e-mailVerifiedVerify Your E-mail AddressWarning:We are sorry, but the sign up is currently closed.We have sent an e-mail to you for verification. Please click on the link inside this e-mail. Please contact us if you do not receive it within a few minutes.We have sent you an e-mail. Please contact us if you do not receive it within a few minutes.You can sign in to your account using any of the following third party accounts:You cannot remove your primary e-mail address (%(email)s).You currently do not have any e-mail address set up. You should really add an e-mail address so you can receive notifications, reset your password, etc.You currently have no social network accounts connected to this account.You decided to cancel logging in to our site using one of your existing accounts. If this was a mistake, please proceed to sign in.You have confirmed %(email)s.You have signed out.You must type the same password each time.Your account has no password set up.Your account has no verified e-mail address.Your password is now changed.Your primary e-mail address must be verified.change passwordemail addressemail addressesemail confirmationemail confirmationsfield labelLoginoryou are already logged in as %(user_display)s.Project-Id-Version: PACKAGE VERSION Report-Msgid-Bugs-To: POT-Creation-Date: 2018-02-02 12:55-0600 PO-Revision-Date: 2014-08-12 00:28+0200 Last-Translator: Tomas Marcik , 2013 Language-Team: Dolnex Technologies s.r.o. Language: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2; Poznámka: stále můžete změnit vaši e-mailovou adresu..Uživatel s tímto e-mailem je již registrován.ÚčetPropojení účtuNeaktivní účetPřidat e-mailPřidat e-mailovou adresuPřidejte další účetMáte již účet? Přihlašte se, prosím.Účet s touto e-mailovou adresou již existuje. Prosím přihlaste se nejdříve pod tímto účtem a potom připojte svůj %s účet.Nastala chyba při přihlašování pomocí vašeho účtu sociální sítě.Jste si jisti, že se chcete odhlásit?Chyba serveruZměnit hesloPotvrditPotvrzení e-mailové adresyOvěření e-mailu posláno na %(email)s.Současné hesloOpravdu chcete odstranit zvolené e-mailové adresy?E-mailE-mail (nepovinné)E-mailové adresyE-mailová adresaZapomenuté heslo?Zapomněli jste heslo? Zadejte prosím svoji e-mailovou adresu a do e-mailové schránky Vám přijde návod na jeho obnovu.Pro případ, že byste zapomněli, vaše uživatelské jméno je %(username)s.Chyba připojení: "%s".Chyba při odesílání požadavku: "%s".Přihlášení zrušenoZvolit jako primárníNové hesloNové heslo (znovu)Není přístup k privátním zdrojům: "%s".Není uloženo žádné připojení pro: "%s".Není uložen žádný požadavek pro: "%s".PoznámkaPřihlášeníí OpenIDHesloHeslo (znovu)Vyžádání nového heslaE-mail pro reset heslaHeslo musí obsahovat minimálně {0} znaků.Heslo bylo úspěšně změněno.Heslo bylo úspěšně nastaveno.Prosím, potvrďte, že %(email)s je e-mailová adresa uživatele %(user_display)s.Prosím, kontaktujte nás, pokud máte jakékoliv potíže s resetováním hesla.Prosím, zadejte svoje současné heslo.PrimárníPrimární e-mail byla nastavena.Znovu zaslat oveřovací e-mailZapamatovatOdstranitE-mailová adresa %(email)s byla odebrána.Vyžádat nové hesloNastavit helsoPřihlásit seOdhlásit seZaregistrovat seRegistrace je uzavřenaZaregistrovat sePřihlášení pomocí sociální sítě selhalo.Úspěšně přihlášen jako %(name)s.Zadaný e-mail nebo heslo není správné.E-mail není přiřazen k žádnému účtuK vašemu účtu jsou přiřazeny tyto e-mailové adresy:Odkaz pro změnu hesla není platný, protože již byl použit. Prosím, zažádejte si o nové.Token pro reset hesla není platný.Účet sociální sítě byl připojen.Účet sociální sítě byl odpojen.Zadané uživatelské jméno nebo heslo není správné.Účet je v tuto chvíli neaktivní.Tento účet není aktivní.Tento e-mail je již přiřazen k jinému účtu.Tento e-mail je již k tomuto účtu přiřazen.Tento ověřovací odkaz již vypršel nebo není správný. Prosím, zažádejte si o nový.Tato část stránek vyžaduje ověření, že jste ten, kdo tvrdíte. K těmto účelům požadujeme ověření vlastnictví vaší e-mailové adresy.Příliš mnoho pokusů o přihlášení. Zkuste to prosím později.NeověřenoUživatelské jménoToto uživatelské jméno nemůže být zvoleno. Prosím, zvolte si jiné.Uživatelské jméno nebo e-mailOvěřenoOvěřte svoji e-mailovou adresu.Varování:Omlouváme se, ale registrace je momentálně uzavřena.Zaslali jsme na vaši e-mailovou adresu ověřovací e-mail. Prosím, klikněte na odkaz uvnitř e-mailu. Neváhejte nás kontaktovat v případě, pokud e-mail nedostanete do několika minut.Zaslali jsme vám e-mail. Prosím, kontaktujte nás, pokud ho nedostanete do několika minut.Můžete se přihlásit pomocí jakéhokoliv následujícího účtu:Nemůžete odstranit primární e-mailovou adresu (%(email)s).V současné chvíli nemáte nastaveny žádné e-mailové adresy. Prosím, uložte si k účtu alespoň jeden e-mail, abyste moli dostávat upozornění nebo mohli použít funkci zapomenutého hesla apod.V současné chvíli nemáte připojeny žádné účty sociálních sítí.Rozhodli jste se zrušit přihlašování jednoho z vašich účtů. Pokud je to omylem, následujte přihlášení.Ověřili jste %(email)s.Právě jste byl odhlášen.Hesla se musí shodovat.Váš účet nemá nastavené heslo.Váš účet nemá žádný ověřený e-mail.Vaše heslo bylo změněno.Vaše primární e-mailová adresa musí být ověřena.změnit hesloe-mailová adresae-mailové adresyPotvrzovací e-mailOvěřovací e-mailyLoginnebomomentálně jste přihlášen jako %(user_display)s.django-allauth-0.35.0/allauth/locale/cs/LC_MESSAGES/django.po0000644000076500000240000006245113235132037024344 0ustar pennersrstaff00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Tomas Marcik , 2013. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-02-02 12:55-0600\n" "PO-Revision-Date: 2014-08-12 00:28+0200\n" "Last-Translator: Tomas Marcik , 2013\n" "Language-Team: Dolnex Technologies s.r.o. \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" #: account/adapter.py:45 msgid "Username can not be used. Please use other username." msgstr "Toto uživatelské jméno nemůže být zvoleno. Prosím, zvolte si jiné." #: account/adapter.py:49 msgid "Too many failed login attempts. Try again later." msgstr "Příliš mnoho pokusů o přihlášení. Zkuste to prosím později." #: account/adapter.py:51 msgid "A user is already registered with this e-mail address." msgstr "Uživatel s tímto e-mailem je již registrován." #: account/adapter.py:288 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "Heslo musí obsahovat minimálně {0} znaků." #: account/apps.py:7 #, fuzzy msgid "Accounts" msgstr "Účet" #: account/forms.py:61 account/forms.py:398 msgid "You must type the same password each time." msgstr "Hesla se musí shodovat." #: account/forms.py:91 account/forms.py:365 account/forms.py:476 msgid "Password" msgstr "Heslo" #: account/forms.py:92 msgid "Remember Me" msgstr "Zapamatovat" #: account/forms.py:98 msgid "This account is currently inactive." msgstr "Účet je v tuto chvíli neaktivní." #: account/forms.py:101 msgid "The e-mail address and/or password you specified are not correct." msgstr "Zadaný e-mail nebo heslo není správné." #: account/forms.py:104 msgid "The username and/or password you specified are not correct." msgstr "Zadané uživatelské jméno nebo heslo není správné." #: account/forms.py:113 account/forms.py:268 account/forms.py:426 #: account/forms.py:495 msgid "E-mail address" msgstr "E-mailová adresa" #: account/forms.py:115 account/forms.py:301 account/forms.py:421 #: account/forms.py:490 msgid "E-mail" msgstr "E-mail" #: account/forms.py:120 account/forms.py:123 account/forms.py:260 #: account/forms.py:264 msgid "Username" msgstr "Uživatelské jméno" #: account/forms.py:130 msgid "Username or e-mail" msgstr "Uživatelské jméno nebo e-mail" #: account/forms.py:133 msgctxt "field label" msgid "Login" msgstr "Login" #: account/forms.py:292 #, fuzzy #| msgid "E-mail (optional)" msgid "E-mail (again)" msgstr "E-mail (nepovinné)" #: account/forms.py:296 #, fuzzy #| msgid "email confirmation" msgid "E-mail address confirmation" msgstr "Potrvzovací e-mail" #: account/forms.py:304 msgid "E-mail (optional)" msgstr "E-mail (nepovinné)" #: account/forms.py:345 #, fuzzy #| msgid "You must type the same password each time." msgid "You must type the same email each time." msgstr "Hesla se musí shodovat." #: account/forms.py:368 account/forms.py:477 msgid "Password (again)" msgstr "Heslo (znovu)" #: account/forms.py:432 msgid "This e-mail address is already associated with this account." msgstr "Tento e-mail je již k tomuto účtu přiřazen." #: account/forms.py:434 msgid "This e-mail address is already associated with another account." msgstr "Tento e-mail je již přiřazen k jinému účtu." #: account/forms.py:456 msgid "Current Password" msgstr "Současné heslo" #: account/forms.py:457 account/forms.py:546 msgid "New Password" msgstr "Nové heslo" #: account/forms.py:458 account/forms.py:547 msgid "New Password (again)" msgstr "Nové heslo (znovu)" #: account/forms.py:466 msgid "Please type your current password." msgstr "Prosím, zadejte svoje současné heslo." #: account/forms.py:504 msgid "The e-mail address is not assigned to any user account" msgstr "E-mail není přiřazen k žádnému účtu" #: account/forms.py:568 msgid "The password reset token was invalid." msgstr "Token pro reset hesla není platný." #: account/models.py:23 msgid "user" msgstr "" #: account/models.py:27 account/models.py:81 #, fuzzy msgid "e-mail address" msgstr "e-mailová adresa" #: account/models.py:28 #, fuzzy msgid "verified" msgstr "Neověřeno" #: account/models.py:29 #, fuzzy msgid "primary" msgstr "Primární" #: account/models.py:34 msgid "email address" msgstr "e-mailová adresa" #: account/models.py:35 msgid "email addresses" msgstr "e-mailové adresy" #: account/models.py:83 msgid "created" msgstr "" #: account/models.py:85 msgid "sent" msgstr "" #: account/models.py:86 socialaccount/models.py:55 msgid "key" msgstr "" #: account/models.py:91 msgid "email confirmation" msgstr "Potvrzovací e-mail" #: account/models.py:92 msgid "email confirmations" msgstr "Ověřovací e-maily" #: socialaccount/adapter.py:26 #, python-format msgid "" "An account already exists with this e-mail address. Please sign in to that " "account first, then connect your %s account." msgstr "" "Účet s touto e-mailovou adresou již existuje. Prosím přihlaste se nejdříve " "pod tímto účtem a potom připojte svůj %s účet." #: socialaccount/adapter.py:131 msgid "Your account has no password set up." msgstr "Váš účet nemá nastavené heslo." #: socialaccount/adapter.py:138 msgid "Your account has no verified e-mail address." msgstr "Váš účet nemá žádný ověřený e-mail." #: socialaccount/apps.py:7 #, fuzzy msgid "Social Accounts" msgstr "Účet" #: socialaccount/models.py:43 socialaccount/models.py:77 msgid "provider" msgstr "" #: socialaccount/models.py:46 #, fuzzy msgid "name" msgstr "Uživatelské jméno" #: socialaccount/models.py:48 msgid "client id" msgstr "" #: socialaccount/models.py:50 msgid "App ID, or consumer key" msgstr "" #: socialaccount/models.py:51 msgid "secret key" msgstr "" #: socialaccount/models.py:53 msgid "API secret, client secret, or consumer secret" msgstr "" #: socialaccount/models.py:58 msgid "Key" msgstr "" #: socialaccount/models.py:66 msgid "social application" msgstr "" #: socialaccount/models.py:67 msgid "social applications" msgstr "" #: socialaccount/models.py:96 msgid "uid" msgstr "" #: socialaccount/models.py:98 msgid "last login" msgstr "" #: socialaccount/models.py:100 msgid "date joined" msgstr "" #: socialaccount/models.py:102 msgid "extra data" msgstr "" #: socialaccount/models.py:106 msgid "social account" msgstr "" #: socialaccount/models.py:107 msgid "social accounts" msgstr "" #: socialaccount/models.py:133 msgid "token" msgstr "" #: socialaccount/models.py:135 msgid "\"oauth_token\" (OAuth1) or access token (OAuth2)" msgstr "" #: socialaccount/models.py:138 msgid "token secret" msgstr "" #: socialaccount/models.py:140 msgid "\"oauth_token_secret\" (OAuth1) or refresh token (OAuth2)" msgstr "" #: socialaccount/models.py:142 msgid "expires at" msgstr "" #: socialaccount/models.py:146 msgid "social application token" msgstr "" #: socialaccount/models.py:147 msgid "social application tokens" msgstr "" #: socialaccount/providers/douban/views.py:36 msgid "Invalid profile data" msgstr "" #: socialaccount/providers/oauth/client.py:78 #, python-format msgid "Invalid response while obtaining request token from \"%s\"." msgstr "Chyba při odesílání požadavku: \"%s\"." #: socialaccount/providers/oauth/client.py:109 #, python-format msgid "Invalid response while obtaining access token from \"%s\"." msgstr "Chyba připojení: \"%s\"." #: socialaccount/providers/oauth/client.py:128 #, python-format msgid "No request token saved for \"%s\"." msgstr "Není uložen žádný požadavek pro: \"%s\"." #: socialaccount/providers/oauth/client.py:177 #, python-format msgid "No access token saved for \"%s\"." msgstr "Není uloženo žádné připojení pro: \"%s\"." #: socialaccount/providers/oauth/client.py:197 #, python-format msgid "No access to private resources at \"%s\"." msgstr "Není přístup k privátním zdrojům: \"%s\"." #: templates/account/account_inactive.html:5 #: templates/account/account_inactive.html:8 msgid "Account Inactive" msgstr "Neaktivní účet" #: templates/account/account_inactive.html:10 msgid "This account is inactive." msgstr "Tento účet není aktivní." #: templates/account/email.html:5 msgid "Account" msgstr "Účet" #: templates/account/email.html:8 msgid "E-mail Addresses" msgstr "E-mailové adresy" #: templates/account/email.html:10 msgid "The following e-mail addresses are associated with your account:" msgstr "K vašemu účtu jsou přiřazeny tyto e-mailové adresy:" #: templates/account/email.html:24 msgid "Verified" msgstr "Ověřeno" #: templates/account/email.html:26 msgid "Unverified" msgstr "Neověřeno" #: templates/account/email.html:28 msgid "Primary" msgstr "Primární" #: templates/account/email.html:34 msgid "Make Primary" msgstr "Zvolit jako primární" #: templates/account/email.html:35 msgid "Re-send Verification" msgstr "Znovu zaslat oveřovací e-mail" #: templates/account/email.html:36 templates/socialaccount/connections.html:35 msgid "Remove" msgstr "Odstranit" #: templates/account/email.html:43 msgid "Warning:" msgstr "Varování:" #: templates/account/email.html:43 msgid "" "You currently do not have any e-mail address set up. You should really add " "an e-mail address so you can receive notifications, reset your password, etc." msgstr "" "V současné chvíli nemáte nastaveny žádné e-mailové adresy. Prosím, uložte si " "k účtu alespoň jeden e-mail, abyste moli dostávat upozornění nebo mohli " "použít funkci zapomenutého hesla apod." #: templates/account/email.html:48 msgid "Add E-mail Address" msgstr "Přidat e-mailovou adresu" #: templates/account/email.html:53 msgid "Add E-mail" msgstr "Přidat e-mail" #: templates/account/email.html:62 msgid "Do you really want to remove the selected e-mail address?" msgstr "Opravdu chcete odstranit zvolené e-mailové adresy?" #: templates/account/email/email_confirmation_message.txt:1 #, fuzzy, python-format #| msgid "" #| "User %(user_display)s at %(site_name)s has given this as an email " #| "address.\n" #| "\n" #| "To confirm this is correct, go to %(activate_url)s\n" msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because user %(user_display)s has given yours " "as an e-mail address to connect their account.\n" "\n" "To confirm this is correct, go to %(activate_url)s\n" msgstr "" "Uživatel %(user_display)s na stránce %(site_name)s zadal tuto e-mailovou " "adresu.\n" "\n" "Pro potvrzení následujte adresu %(activate_url)s\n" #: templates/account/email/email_confirmation_message.txt:7 #, python-format msgid "" "Thank you from %(site_name)s!\n" "%(site_domain)s" msgstr "" #: templates/account/email/email_confirmation_subject.txt:3 #, fuzzy #| msgid "Confirm E-mail Address" msgid "Please Confirm Your E-mail Address" msgstr "Potvrzení e-mailové adresy" #: templates/account/email/password_reset_key_message.txt:1 #, fuzzy, python-format #| msgid "" #| "You're receiving this e-mail because you or someone else has requested a " #| "password for your user account at %(site_domain)s.\n" #| "It can be safely ignored if you did not request a password reset. Click " #| "the link below to reset your password." msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because you or someone else has requested a " "password for your user account.\n" "It can be safely ignored if you did not request a password reset. Click the " "link below to reset your password." msgstr "" "Tento e-mail jste dostali protože vy nebo někdo jiný zažádal o změnu hesla " "uživatelského účtu na stránce %(site_domain)s.\n" "Pokud jste to nebyli vy, můžete tento e-mail ignorovat. Pokud ano, klikněte " "na odkaz níže pro změnu vašeho hesla." #: templates/account/email/password_reset_key_message.txt:8 #, python-format msgid "In case you forgot, your username is %(username)s." msgstr "" "Pro případ, že byste zapomněli, vaše uživatelské jméno je %(username)s." #: templates/account/email/password_reset_key_message.txt:10 #, python-format msgid "" "Thank you for using %(site_name)s!\n" "%(site_domain)s" msgstr "" #: templates/account/email/password_reset_key_subject.txt:3 msgid "Password Reset E-mail" msgstr "E-mail pro reset hesla" #: templates/account/email_confirm.html:6 #: templates/account/email_confirm.html:10 msgid "Confirm E-mail Address" msgstr "Potvrzení e-mailové adresy" #: templates/account/email_confirm.html:16 #, python-format msgid "" "Please confirm that %(email)s is an e-mail " "address for user %(user_display)s." msgstr "" "Prosím, potvrďte, že %(email)s je e-mailová " "adresa uživatele %(user_display)s." #: templates/account/email_confirm.html:20 msgid "Confirm" msgstr "Potvrdit" #: templates/account/email_confirm.html:27 #, python-format msgid "" "This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request." msgstr "" "Tento ověřovací odkaz již vypršel nebo není správný. Prosím, zažádejte si o nový." #: templates/account/login.html:6 templates/account/login.html:10 #: templates/account/login.html:43 msgid "Sign In" msgstr "Přihlásit se" #: templates/account/login.html:15 #, fuzzy, python-format msgid "" "Please sign in with one\n" "of your existing third party accounts. Or, sign " "up\n" "for a %(site_name)s account and sign in below:" msgstr "" "Přihlašte se výběrem jednoho poskytovatele. Nebo se zaregistruje na stránky %(site_name)s a přihlašte se níže:" #: templates/account/login.html:25 msgid "or" msgstr "nebo" #: templates/account/login.html:32 #, fuzzy, python-format msgid "" "If you have not created an account yet, then please\n" "sign up first." msgstr "Máte již účet? Přihlašte se, prosím." #: templates/account/login.html:42 msgid "Forgot Password?" msgstr "Zapomenuté heslo?" #: templates/account/logout.html:5 templates/account/logout.html:8 #: templates/account/logout.html:17 msgid "Sign Out" msgstr "Odhlásit se" #: templates/account/logout.html:10 msgid "Are you sure you want to sign out?" msgstr "Jste si jisti, že se chcete odhlásit?" #: templates/account/messages/cannot_delete_primary_email.txt:2 #, python-format msgid "You cannot remove your primary e-mail address (%(email)s)." msgstr "Nemůžete odstranit primární e-mailovou adresu (%(email)s)." #: templates/account/messages/email_confirmation_sent.txt:2 #, python-format msgid "Confirmation e-mail sent to %(email)s." msgstr "Ověření e-mailu posláno na %(email)s." #: templates/account/messages/email_confirmed.txt:2 #, python-format msgid "You have confirmed %(email)s." msgstr "Ověřili jste %(email)s." #: templates/account/messages/email_deleted.txt:2 #, python-format msgid "Removed e-mail address %(email)s." msgstr "E-mailová adresa %(email)s byla odebrána." #: templates/account/messages/logged_in.txt:4 #, python-format msgid "Successfully signed in as %(name)s." msgstr "Úspěšně přihlášen jako %(name)s." #: templates/account/messages/logged_out.txt:2 msgid "You have signed out." msgstr "Právě jste byl odhlášen." #: templates/account/messages/password_changed.txt:2 msgid "Password successfully changed." msgstr "Heslo bylo úspěšně změněno." #: templates/account/messages/password_set.txt:2 msgid "Password successfully set." msgstr "Heslo bylo úspěšně nastaveno." #: templates/account/messages/primary_email_set.txt:2 msgid "Primary e-mail address set." msgstr "Primární e-mail byla nastavena." #: templates/account/messages/unverified_primary_email.txt:2 msgid "Your primary e-mail address must be verified." msgstr "Vaše primární e-mailová adresa musí být ověřena." #: templates/account/password_change.html:5 #: templates/account/password_change.html:8 #: templates/account/password_change.html:13 #: templates/account/password_reset_from_key.html:4 #: templates/account/password_reset_from_key.html:7 #: templates/account/password_reset_from_key_done.html:4 #: templates/account/password_reset_from_key_done.html:7 msgid "Change Password" msgstr "Změnit heslo" #: templates/account/password_reset.html:6 #: templates/account/password_reset.html:10 #: templates/account/password_reset_done.html:6 #: templates/account/password_reset_done.html:9 msgid "Password Reset" msgstr "Vyžádání nového hesla" #: templates/account/password_reset.html:15 msgid "" "Forgotten your password? Enter your e-mail address below, and we'll send you " "an e-mail allowing you to reset it." msgstr "" "Zapomněli jste heslo? Zadejte prosím svoji e-mailovou adresu a do e-mailové " "schránky Vám přijde návod na jeho obnovu." #: templates/account/password_reset.html:20 msgid "Reset My Password" msgstr "Vyžádat nové heslo" #: templates/account/password_reset.html:23 msgid "Please contact us if you have any trouble resetting your password." msgstr "" "Prosím, kontaktujte nás, pokud máte jakékoliv potíže s resetováním hesla." #: templates/account/password_reset_done.html:15 msgid "" "We have sent you an e-mail. Please contact us if you do not receive it " "within a few minutes." msgstr "" "Zaslali jsme vám e-mail. Prosím, kontaktujte nás, pokud ho nedostanete do " "několika minut." #: templates/account/password_reset_from_key.html:7 msgid "Bad Token" msgstr "Chyba serveru" #: templates/account/password_reset_from_key.html:11 #, python-format msgid "" "The password reset link was invalid, possibly because it has already been " "used. Please request a new password reset." msgstr "" "Odkaz pro změnu hesla není platný, protože již byl použit. Prosím, zažádejte si o nové." #: templates/account/password_reset_from_key.html:17 msgid "change password" msgstr "změnit heslo" #: templates/account/password_reset_from_key.html:20 #: templates/account/password_reset_from_key_done.html:8 msgid "Your password is now changed." msgstr "Vaše heslo bylo změněno." #: templates/account/password_set.html:5 templates/account/password_set.html:8 #: templates/account/password_set.html:13 msgid "Set Password" msgstr "Nastavit helso" #: templates/account/signup.html:5 templates/socialaccount/signup.html:5 msgid "Signup" msgstr "Zaregistrovat se" #: templates/account/signup.html:8 templates/account/signup.html:18 #: templates/socialaccount/signup.html:8 templates/socialaccount/signup.html:19 msgid "Sign Up" msgstr "Zaregistrovat se" #: templates/account/signup.html:10 #, python-format msgid "" "Already have an account? Then please sign in." msgstr "Máte již účet? Přihlašte se, prosím." #: templates/account/signup_closed.html:5 #: templates/account/signup_closed.html:8 msgid "Sign Up Closed" msgstr "Registrace je uzavřena" #: templates/account/signup_closed.html:10 msgid "We are sorry, but the sign up is currently closed." msgstr "Omlouváme se, ale registrace je momentálně uzavřena." #: templates/account/snippets/already_logged_in.html:5 msgid "Note" msgstr "Poznámka" #: templates/account/snippets/already_logged_in.html:5 #, python-format msgid "you are already logged in as %(user_display)s." msgstr "momentálně jste přihlášen jako %(user_display)s." #: templates/account/verification_sent.html:5 #: templates/account/verification_sent.html:8 #: templates/account/verified_email_required.html:5 #: templates/account/verified_email_required.html:8 msgid "Verify Your E-mail Address" msgstr "Ověřte svoji e-mailovou adresu." #: templates/account/verification_sent.html:10 #, fuzzy msgid "" "We have sent an e-mail to you for verification. Follow the link provided to " "finalize the signup process. Please contact us if you do not receive it " "within a few minutes." msgstr "" "Byl Vám zaslán ověřovací e-mail na adresu " "%(email)s. Následujte odkaz v e-mailu pro dokončení registračního " "procesu. Neváhejte nás kontaktovat v případě, pokud e-mail nedostanete do " "několika minut." #: templates/account/verified_email_required.html:12 msgid "" "This part of the site requires us to verify that\n" "you are who you claim to be. For this purpose, we require that you\n" "verify ownership of your e-mail address. " msgstr "" "Tato část stránek vyžaduje ověření,\n" "že jste ten, kdo tvrdíte. K těmto účelům požadujeme\n" "ověření vlastnictví vaší e-mailové adresy." #: templates/account/verified_email_required.html:16 msgid "" "We have sent an e-mail to you for\n" "verification. Please click on the link inside this e-mail. Please\n" "contact us if you do not receive it within a few minutes." msgstr "" "Zaslali jsme na vaši e-mailovou adresu\n" "ověřovací e-mail. Prosím, klikněte na odkaz uvnitř e-mailu.\n" "Neváhejte nás kontaktovat v případě, pokud e-mail nedostanete do několika " "minut." #: templates/account/verified_email_required.html:20 #, python-format msgid "" "Note: you can still change your e-" "mail address." msgstr "" "Poznámka: stále můžete změnit " "vaši e-mailovou adresu.." #: templates/openid/login.html:9 msgid "OpenID Sign In" msgstr "Přihlášeníí OpenID" #: templates/socialaccount/authentication_error.html:5 #: templates/socialaccount/authentication_error.html:8 msgid "Social Network Login Failure" msgstr "Přihlášení pomocí sociální sítě selhalo." #: templates/socialaccount/authentication_error.html:10 msgid "" "An error occurred while attempting to login via your social network account." msgstr "Nastala chyba při přihlašování pomocí vašeho účtu sociální sítě." #: templates/socialaccount/connections.html:5 #: templates/socialaccount/connections.html:8 msgid "Account Connections" msgstr "Propojení účtu" #: templates/socialaccount/connections.html:11 msgid "" "You can sign in to your account using any of the following third party " "accounts:" msgstr "Můžete se přihlásit pomocí jakéhokoliv následujícího účtu:" #: templates/socialaccount/connections.html:43 msgid "" "You currently have no social network accounts connected to this account." msgstr "V současné chvíli nemáte připojeny žádné účty sociálních sítí." #: templates/socialaccount/connections.html:46 msgid "Add a 3rd Party Account" msgstr "Přidejte další účet" #: templates/socialaccount/login_cancelled.html:5 #: templates/socialaccount/login_cancelled.html:9 msgid "Login Cancelled" msgstr "Přihlášení zrušeno" #: templates/socialaccount/login_cancelled.html:13 #, python-format msgid "" "You decided to cancel logging in to our site using one of your existing " "accounts. If this was a mistake, please proceed to sign in." msgstr "" "Rozhodli jste se zrušit přihlašování jednoho z vašich účtů. Pokud je to " "omylem, následujte přihlášení." #: templates/socialaccount/messages/account_connected.txt:2 msgid "The social account has been connected." msgstr "Účet sociální sítě byl připojen." #: templates/socialaccount/messages/account_connected_other.txt:2 #, fuzzy msgid "The social account is already connected to a different account." msgstr "Účet sociální sítě byl připojen." #: templates/socialaccount/messages/account_disconnected.txt:2 msgid "The social account has been disconnected." msgstr "Účet sociální sítě byl odpojen." #: templates/socialaccount/signup.html:10 #, fuzzy, python-format msgid "" "You are about to use your %(provider_name)s account to login to\n" "%(site_name)s. As a final step, please complete the following form:" msgstr "" "Nyní jste zažádali o přihlášení vašeho %(provider_name)s účtu na naše " "stránky %(site_name)s. Jako poslední krok, prosím, vyplňte tento formulář:" #~ msgid "The login and/or password you specified are not correct." #~ msgstr "Zadané přihlašovací údaje nejsou správné." #~ msgid "Usernames can only contain letters, digits and @/./+/-/_." #~ msgstr "" #~ "Uživatelské jméno může obsahovat pouze písmena, číslice a znaky @/./+/-/_." #~ msgid "This username is already taken. Please choose another." #~ msgstr "Toto uživatelské jméno je již zvoleno. Prosím, vyberte si jiné." #, fuzzy #~| msgid "Sign In" #~ msgid "Shopify Sign In" #~ msgstr "Přihlásit se" #~ msgid "" #~ "You have confirmed that %(email)s is an " #~ "e-mail address for user %(user_display)s." #~ msgstr "" #~ "Potvrdili jste e-mailovou adresu %(email)s uživateli %(user_display)s." #~ msgid "Thanks for using our site!" #~ msgstr "Děkujeme za využívání našich stránek!" #~ msgid "Confirmation e-mail sent to %(email)s" #~ msgstr "Ověřovací e-mail byl zaslán: %(email)s" #~ msgid "Delete Password" #~ msgstr "Smazat heslo" #~ msgid "" #~ "You may delete your password since you are currently logged in using " #~ "OpenID." #~ msgstr "Můžete si smazat heslo, protože používáte jiné způsoby přihlášení." #~ msgid "delete my password" #~ msgstr "Odstanit moje heslo" #~ msgid "Password Deleted" #~ msgstr "Heslo bylo odstraněno" #~ msgid "Your password has been deleted." #~ msgstr "Vaše heslo bylo smazáno." django-allauth-0.35.0/allauth/locale/pt_PT/0000755000076500000240000000000013235133532021367 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/pt_PT/LC_MESSAGES/0000755000076500000240000000000013235133532023154 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/pt_PT/LC_MESSAGES/django.mo0000644000076500000240000002462213235132042024754 0ustar pennersrstaff00000000000000b,<H\I6  ( I@ L "    3 9D ~     p 29 8l 9   ' F f       -  ' lB B "  2>E Wdlu}A6@[&)?E;#?<?| 4$\PpH R*%$P,u '.*Y_=_?GT% 8&_fx}B=48*'I)q- #'3K##yTA+   - 4 9 A I Oi H D!G!" ""1C"Nu"'""; #:E## $$$F$% %%#0%T%[%X%5U&&E;'' ((7/(,g(7(!(())/)G)`)g)'j)CSJ'-a;5. L &E"G4 9 Q0bK`FOZ\)/^!3*28,WHXY_DV[T+6]M#N RI?=B@ U7A:%$(<1P>Note: you can still change your e-mail address.A user is already registered with this e-mail address.AccountAccount ConnectionsAccount InactiveAdd E-mailAdd E-mail AddressAdd a 3rd Party AccountAlready have an account? Then please sign in.An error occurred while attempting to login via your social network account.Are you sure you want to sign out?Bad TokenChange PasswordConfirmConfirm E-mail AddressCurrent PasswordDo you really want to remove the selected e-mail address?E-mailE-mail (optional)E-mail AddressesE-mail addressForgot Password?Forgotten your password? Enter your e-mail address below, and we'll send you an e-mail allowing you to reset it.In case you forgot, your username is %(username)s.Invalid response while obtaining access token from "%s".Invalid response while obtaining request token from "%s".Login CancelledMake PrimaryNew PasswordNew Password (again)No access to private resources at "%s".No access token saved for "%s".No request token saved for "%s".NoteOpenID Sign InPasswordPassword (again)Password ResetPassword Reset E-mailPassword must be a minimum of {0} characters.Password successfully changed.Password successfully set.Please confirm that %(email)s is an e-mail address for user %(user_display)s.Please contact us if you have any trouble resetting your password.Please type your current password.PrimaryRe-send VerificationRemember MeRemoveReset My PasswordSet PasswordSign InSign OutSign UpSignupSocial Network Login FailureThe e-mail address and/or password you specified are not correct.The e-mail address is not assigned to any user accountThe following e-mail addresses are associated with your account:The password reset link was invalid, possibly because it has already been used. Please request a new password reset.The social account has been connected.The social account has been disconnected.The social account is already connected to a different account.The username and/or password you specified are not correct.This account is currently inactive.This account is inactive.This e-mail address is already associated with another account.This e-mail address is already associated with this account.This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request.This part of the site requires us to verify that you are who you claim to be. For this purpose, we require that you verify ownership of your e-mail address. UnverifiedUsernameUsername can not be used. Please use other username.Username or e-mailVerifiedVerify Your E-mail AddressWarning:We have sent an e-mail to you for verification. Please click on the link inside this e-mail. Please contact us if you do not receive it within a few minutes.We have sent you an e-mail. Please contact us if you do not receive it within a few minutes.You can sign in to your account using any of the following third party accounts:You currently do not have any e-mail address set up. You should really add an e-mail address so you can receive notifications, reset your password, etc.You currently have no social network accounts connected to this account.You decided to cancel logging in to our site using one of your existing accounts. If this was a mistake, please proceed to sign in.You have confirmed %(email)s.You have signed out.You must type the same password each time.Your account has no password set up.Your account has no verified e-mail address.Your password is now changed.change passwordemail addressemail addressesemail confirmationemail confirmationsfield labelLoginoryou are already logged in as %(user_display)s.Project-Id-Version: django-allauth Report-Msgid-Bugs-To: POT-Creation-Date: 2018-02-02 12:55-0600 PO-Revision-Date: 2014-08-12 00:33+0200 Last-Translator: Jannis Š Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/django-allauth/language/pt_PT/) Language: pt_PT MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); Nota: ainda pode alterar o seuendereço de e-mail.Um utilizador já foi registado com este endereço de e-mail.ContaLigações da ContaConta DesactivadaAdicionar e-mailAdicionar endereço de e-mailAdicionar uma Conta ExternaJá tem uma conta? Por favor entre.Um erro foi encontrado ao tentar entrar com a sua conta de rede social.Você tem certeza de que deseja sair?Problema no TokenAlterar palavra-passeConfirmarConfirmar Endereço de E-mailPalavra-passe atualDeseja mesmo remover o endereço de e-mail seleccionado?E-mailE-mail (opcional)Endereços de E-mailEndereço de e-mailEsqueceu a sua palavra-passe?Esqueceu a sua palavra-passe? Insira o seu endereço de e-mail abaixo, e enviar-lhe-emos um e-mail permitindo que a redefina.Caso se tenha esquecido, o seu nome de utilizador é %(username)s.Resposta inválida ao obter token de acesso de "%s".Resposta inválida ao obter token de permissão de "%s".Entrada CanceladaDefinir como primárioNova Palavra-passeNova Palavra-passe (novamente)Sem acesso a recursos privados de "%s".Nenhum token de acesso gravado para "%s".Nenhum token de permissão gravado para "%s".NotaEntrar com OpenIDPalavra-passePalavra-passe (novamente)Redefinição da palavra-passeE-mail de Redefinição de PasswordA palavra-passe deve ter no mínimo {0} caracteres.Palavra-passe alterada com sucesso.Palavra-passe definida com sucesso.Por favor confirme que %(email)s é um endereço de e-mail do utilizador %(user_display)s.Por favor contacte-nos se tiver quaisquer problemas a redefinir a sua palavra-passe.Por favor insira a sua palavra-passe atual.PrimárioRe-enviar VerificaçãoLembrar-meRemoverRedefinir a minha palavra-passeDefinir palavra-passeEntrarSairRegistoRegistoFalha ao Entrar com Rede SocialO endereço de e-mail e/ou palavra-passe que especificou não estão correctos.O endereço de e-mail não está associado a nenhuma conta de utilizadorOs endereços de e-mail seguintes estão associados com a sua conta:O link para redefinição da palavra-passe era inválido, provávelmente por já ter sido usado. Por favor peça uma nova redefinição da palavra-passe.A conta social foi conectada.A conta social foi disconectada.A conta social já está conectada a outra conta.O nome de utilizador e/ou palavra-passe que especificou não estão correctos.Esta conta está de momento desactivadaA sua conta foi desactivada.Este endereço de e-mail já foi associado com outra conta.Este endereço de e-mail já foi associado com esta conta.Este link de verificação de e-mail expirou ou é inválido. Por favor peça uma nova verificação de e-mail..Esta parte do site requer que verifiquemos que é quem diz que é. Para esse fim, pedimos que verifique que é dono do seu endereço de e-mail. Não verificadoNome de utilizadorNome de utilizador não pode ser utilizado. Por favor, use outro nome.Nome de utilizador ou e-mailVerificadoVerifique o seu endereço de e-mailAviso:Enviámos-lhe um e-mail para verificação. Por favor clique no link dentro deste e-mail. Por favor contacte-nos se não o receber dentro dos próximos minutos.Enviámos-lhe um e-mail. Por favor contacte-nos se não o receber nos próximos minutos.Pode entrar usando uma das seguintes contas externas:Neste momento não tem um endereço de e-mail definido. Devia mesmo adicionar um endereço de e-mail para que possa receber notificações, redefinir a sua palavra-passe, etc.De momento não tem nenhuma conta de rede social ligada a esta conta.Você decidiu cancelar a entrada no nosso site usando uma das seguintes contas. Se isto foi um erro, entre.Confirmou %(email)sTerminou sessão.Deve escrever a mesma palavra-passe em ambos os campos.A sua conta não tem palavra-passe definida.A sua conta não tem um endereço de e-mail verificado.A sua palavra-passe foi alterada.alterar a palavra-passeendereço de e-mailendereços de e-mailconfirmação de e-mailconfirmações de e-mailEntrarouvocê já entrou como %(user_display)s.django-allauth-0.35.0/allauth/locale/pt_PT/LC_MESSAGES/django.po0000644000076500000240000006122313235132037024761 0ustar pennersrstaff00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: msgid "" msgstr "" "Project-Id-Version: django-allauth\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-02-02 12:55-0600\n" "PO-Revision-Date: 2014-08-12 00:33+0200\n" "Last-Translator: Jannis Š\n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/" "django-allauth/language/pt_PT/)\n" "Language: pt_PT\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: account/adapter.py:45 msgid "Username can not be used. Please use other username." msgstr "Nome de utilizador não pode ser utilizado. Por favor, use outro nome." #: account/adapter.py:49 msgid "Too many failed login attempts. Try again later." msgstr "" #: account/adapter.py:51 msgid "A user is already registered with this e-mail address." msgstr "Um utilizador já foi registado com este endereço de e-mail." #: account/adapter.py:288 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "A palavra-passe deve ter no mínimo {0} caracteres." #: account/apps.py:7 #, fuzzy msgid "Accounts" msgstr "Conta" #: account/forms.py:61 account/forms.py:398 msgid "You must type the same password each time." msgstr "Deve escrever a mesma palavra-passe em ambos os campos." #: account/forms.py:91 account/forms.py:365 account/forms.py:476 msgid "Password" msgstr "Palavra-passe" #: account/forms.py:92 msgid "Remember Me" msgstr "Lembrar-me" #: account/forms.py:98 msgid "This account is currently inactive." msgstr "Esta conta está de momento desactivada" #: account/forms.py:101 msgid "The e-mail address and/or password you specified are not correct." msgstr "" "O endereço de e-mail e/ou palavra-passe que especificou não estão correctos." #: account/forms.py:104 msgid "The username and/or password you specified are not correct." msgstr "" "O nome de utilizador e/ou palavra-passe que especificou não estão correctos." #: account/forms.py:113 account/forms.py:268 account/forms.py:426 #: account/forms.py:495 msgid "E-mail address" msgstr "Endereço de e-mail" #: account/forms.py:115 account/forms.py:301 account/forms.py:421 #: account/forms.py:490 msgid "E-mail" msgstr "E-mail" #: account/forms.py:120 account/forms.py:123 account/forms.py:260 #: account/forms.py:264 msgid "Username" msgstr "Nome de utilizador" #: account/forms.py:130 msgid "Username or e-mail" msgstr "Nome de utilizador ou e-mail" #: account/forms.py:133 msgctxt "field label" msgid "Login" msgstr "Entrar" #: account/forms.py:292 #, fuzzy #| msgid "E-mail (optional)" msgid "E-mail (again)" msgstr "E-mail (opcional)" #: account/forms.py:296 #, fuzzy #| msgid "email confirmation" msgid "E-mail address confirmation" msgstr "confirmação de e-mail" #: account/forms.py:304 msgid "E-mail (optional)" msgstr "E-mail (opcional)" #: account/forms.py:345 #, fuzzy #| msgid "You must type the same password each time." msgid "You must type the same email each time." msgstr "Deve escrever a mesma palavra-passe em ambos os campos." #: account/forms.py:368 account/forms.py:477 msgid "Password (again)" msgstr "Palavra-passe (novamente)" #: account/forms.py:432 msgid "This e-mail address is already associated with this account." msgstr "Este endereço de e-mail já foi associado com esta conta." #: account/forms.py:434 msgid "This e-mail address is already associated with another account." msgstr "Este endereço de e-mail já foi associado com outra conta." #: account/forms.py:456 msgid "Current Password" msgstr "Palavra-passe atual" #: account/forms.py:457 account/forms.py:546 msgid "New Password" msgstr "Nova Palavra-passe" #: account/forms.py:458 account/forms.py:547 msgid "New Password (again)" msgstr "Nova Palavra-passe (novamente)" #: account/forms.py:466 msgid "Please type your current password." msgstr "Por favor insira a sua palavra-passe atual." #: account/forms.py:504 msgid "The e-mail address is not assigned to any user account" msgstr "O endereço de e-mail não está associado a nenhuma conta de utilizador" #: account/forms.py:568 msgid "The password reset token was invalid." msgstr "" #: account/models.py:23 msgid "user" msgstr "" #: account/models.py:27 account/models.py:81 #, fuzzy msgid "e-mail address" msgstr "endereço de e-mail" #: account/models.py:28 #, fuzzy msgid "verified" msgstr "Não verificado" #: account/models.py:29 #, fuzzy msgid "primary" msgstr "Primário" #: account/models.py:34 msgid "email address" msgstr "endereço de e-mail" #: account/models.py:35 msgid "email addresses" msgstr "endereços de e-mail" #: account/models.py:83 msgid "created" msgstr "" #: account/models.py:85 msgid "sent" msgstr "" #: account/models.py:86 socialaccount/models.py:55 msgid "key" msgstr "" #: account/models.py:91 msgid "email confirmation" msgstr "confirmação de e-mail" #: account/models.py:92 msgid "email confirmations" msgstr "confirmações de e-mail" #: socialaccount/adapter.py:26 #, python-format msgid "" "An account already exists with this e-mail address. Please sign in to that " "account first, then connect your %s account." msgstr "" #: socialaccount/adapter.py:131 msgid "Your account has no password set up." msgstr "A sua conta não tem palavra-passe definida." #: socialaccount/adapter.py:138 msgid "Your account has no verified e-mail address." msgstr "A sua conta não tem um endereço de e-mail verificado." #: socialaccount/apps.py:7 #, fuzzy msgid "Social Accounts" msgstr "Conta" #: socialaccount/models.py:43 socialaccount/models.py:77 msgid "provider" msgstr "" #: socialaccount/models.py:46 #, fuzzy msgid "name" msgstr "Nome de utilizador" #: socialaccount/models.py:48 msgid "client id" msgstr "" #: socialaccount/models.py:50 msgid "App ID, or consumer key" msgstr "" #: socialaccount/models.py:51 msgid "secret key" msgstr "" #: socialaccount/models.py:53 msgid "API secret, client secret, or consumer secret" msgstr "" #: socialaccount/models.py:58 msgid "Key" msgstr "" #: socialaccount/models.py:66 msgid "social application" msgstr "" #: socialaccount/models.py:67 msgid "social applications" msgstr "" #: socialaccount/models.py:96 msgid "uid" msgstr "" #: socialaccount/models.py:98 msgid "last login" msgstr "" #: socialaccount/models.py:100 msgid "date joined" msgstr "" #: socialaccount/models.py:102 msgid "extra data" msgstr "" #: socialaccount/models.py:106 msgid "social account" msgstr "" #: socialaccount/models.py:107 msgid "social accounts" msgstr "" #: socialaccount/models.py:133 msgid "token" msgstr "" #: socialaccount/models.py:135 msgid "\"oauth_token\" (OAuth1) or access token (OAuth2)" msgstr "" #: socialaccount/models.py:138 msgid "token secret" msgstr "" #: socialaccount/models.py:140 msgid "\"oauth_token_secret\" (OAuth1) or refresh token (OAuth2)" msgstr "" #: socialaccount/models.py:142 msgid "expires at" msgstr "" #: socialaccount/models.py:146 msgid "social application token" msgstr "" #: socialaccount/models.py:147 msgid "social application tokens" msgstr "" #: socialaccount/providers/douban/views.py:36 msgid "Invalid profile data" msgstr "" #: socialaccount/providers/oauth/client.py:78 #, python-format msgid "Invalid response while obtaining request token from \"%s\"." msgstr "Resposta inválida ao obter token de permissão de \"%s\"." #: socialaccount/providers/oauth/client.py:109 #, python-format msgid "Invalid response while obtaining access token from \"%s\"." msgstr "Resposta inválida ao obter token de acesso de \"%s\"." #: socialaccount/providers/oauth/client.py:128 #, python-format msgid "No request token saved for \"%s\"." msgstr "Nenhum token de permissão gravado para \"%s\"." #: socialaccount/providers/oauth/client.py:177 #, python-format msgid "No access token saved for \"%s\"." msgstr "Nenhum token de acesso gravado para \"%s\"." #: socialaccount/providers/oauth/client.py:197 #, python-format msgid "No access to private resources at \"%s\"." msgstr "Sem acesso a recursos privados de \"%s\"." #: templates/account/account_inactive.html:5 #: templates/account/account_inactive.html:8 msgid "Account Inactive" msgstr "Conta Desactivada" #: templates/account/account_inactive.html:10 msgid "This account is inactive." msgstr "A sua conta foi desactivada." #: templates/account/email.html:5 msgid "Account" msgstr "Conta" #: templates/account/email.html:8 msgid "E-mail Addresses" msgstr "Endereços de E-mail" #: templates/account/email.html:10 msgid "The following e-mail addresses are associated with your account:" msgstr "Os endereços de e-mail seguintes estão associados com a sua conta:" #: templates/account/email.html:24 msgid "Verified" msgstr "Verificado" #: templates/account/email.html:26 msgid "Unverified" msgstr "Não verificado" #: templates/account/email.html:28 msgid "Primary" msgstr "Primário" #: templates/account/email.html:34 msgid "Make Primary" msgstr "Definir como primário" #: templates/account/email.html:35 msgid "Re-send Verification" msgstr "Re-enviar Verificação" #: templates/account/email.html:36 templates/socialaccount/connections.html:35 msgid "Remove" msgstr "Remover" #: templates/account/email.html:43 msgid "Warning:" msgstr "Aviso:" #: templates/account/email.html:43 msgid "" "You currently do not have any e-mail address set up. You should really add " "an e-mail address so you can receive notifications, reset your password, etc." msgstr "" "Neste momento não tem um endereço de e-mail definido. Devia mesmo adicionar " "um endereço de e-mail para que possa receber notificações, redefinir a sua " "palavra-passe, etc." #: templates/account/email.html:48 msgid "Add E-mail Address" msgstr "Adicionar endereço de e-mail" #: templates/account/email.html:53 msgid "Add E-mail" msgstr "Adicionar e-mail" #: templates/account/email.html:62 msgid "Do you really want to remove the selected e-mail address?" msgstr "Deseja mesmo remover o endereço de e-mail seleccionado?" #: templates/account/email/email_confirmation_message.txt:1 #, fuzzy, python-format #| msgid "" #| "User %(user_display)s at %(site_name)s has given this as an email " #| "address.\n" #| "\n" #| "To confirm this is correct, go to %(activate_url)s\n" msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because user %(user_display)s has given yours " "as an e-mail address to connect their account.\n" "\n" "To confirm this is correct, go to %(activate_url)s\n" msgstr "" "O utilizador %(user_display)s do %(site_name)s deu este endereço de e-mail.\n" "\n" "Para confirmar que isto é correcto, vá a %(activate_url)s\n" #: templates/account/email/email_confirmation_message.txt:7 #, python-format msgid "" "Thank you from %(site_name)s!\n" "%(site_domain)s" msgstr "" #: templates/account/email/email_confirmation_subject.txt:3 #, fuzzy #| msgid "Confirm E-mail Address" msgid "Please Confirm Your E-mail Address" msgstr "Confirmar Endereço de E-mail" #: templates/account/email/password_reset_key_message.txt:1 #, fuzzy, python-format #| msgid "" #| "You're receiving this e-mail because you or someone else has requested a " #| "password for your user account at %(site_domain)s.\n" #| "It can be safely ignored if you did not request a password reset. Click " #| "the link below to reset your password." msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because you or someone else has requested a " "password for your user account.\n" "It can be safely ignored if you did not request a password reset. Click the " "link below to reset your password." msgstr "" "Está a receber este e-mail porque você ou outra pessoa pediu uma nova " "palavra-passe para a sua conta no %(site_domain)s.\n" "Se não pediu uma redefinição de palavra-passe, ignore este e-mail. Clique no " "link abaixo para redefinir a sua password." #: templates/account/email/password_reset_key_message.txt:8 #, python-format msgid "In case you forgot, your username is %(username)s." msgstr "Caso se tenha esquecido, o seu nome de utilizador é %(username)s." #: templates/account/email/password_reset_key_message.txt:10 #, python-format msgid "" "Thank you for using %(site_name)s!\n" "%(site_domain)s" msgstr "" #: templates/account/email/password_reset_key_subject.txt:3 msgid "Password Reset E-mail" msgstr "E-mail de Redefinição de Password" #: templates/account/email_confirm.html:6 #: templates/account/email_confirm.html:10 msgid "Confirm E-mail Address" msgstr "Confirmar Endereço de E-mail" #: templates/account/email_confirm.html:16 #, python-format msgid "" "Please confirm that %(email)s is an e-mail " "address for user %(user_display)s." msgstr "" "Por favor confirme que %(email)s é um " "endereço de e-mail do utilizador %(user_display)s." #: templates/account/email_confirm.html:20 msgid "Confirm" msgstr "Confirmar" #: templates/account/email_confirm.html:27 #, python-format msgid "" "This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request." msgstr "" "Este link de verificação de e-mail expirou ou é inválido. Por favor peça uma nova verificação de e-mail.." #: templates/account/login.html:6 templates/account/login.html:10 #: templates/account/login.html:43 msgid "Sign In" msgstr "Entrar" #: templates/account/login.html:15 #, python-format msgid "" "Please sign in with one\n" "of your existing third party accounts. Or, sign " "up\n" "for a %(site_name)s account and sign in below:" msgstr "" #: templates/account/login.html:25 msgid "or" msgstr "ou" #: templates/account/login.html:32 #, fuzzy, python-format msgid "" "If you have not created an account yet, then please\n" "sign up first." msgstr "Já tem uma conta? Por favor entre." #: templates/account/login.html:42 msgid "Forgot Password?" msgstr "Esqueceu a sua palavra-passe?" #: templates/account/logout.html:5 templates/account/logout.html:8 #: templates/account/logout.html:17 msgid "Sign Out" msgstr "Sair" #: templates/account/logout.html:10 msgid "Are you sure you want to sign out?" msgstr "Você tem certeza de que deseja sair?" #: templates/account/messages/cannot_delete_primary_email.txt:2 #, python-format msgid "You cannot remove your primary e-mail address (%(email)s)." msgstr "" #: templates/account/messages/email_confirmation_sent.txt:2 #, python-format msgid "Confirmation e-mail sent to %(email)s." msgstr "" #: templates/account/messages/email_confirmed.txt:2 #, python-format msgid "You have confirmed %(email)s." msgstr "Confirmou %(email)s" #: templates/account/messages/email_deleted.txt:2 #, python-format msgid "Removed e-mail address %(email)s." msgstr "" #: templates/account/messages/logged_in.txt:4 #, python-format msgid "Successfully signed in as %(name)s." msgstr "" #: templates/account/messages/logged_out.txt:2 msgid "You have signed out." msgstr "Terminou sessão." #: templates/account/messages/password_changed.txt:2 msgid "Password successfully changed." msgstr "Palavra-passe alterada com sucesso." #: templates/account/messages/password_set.txt:2 msgid "Password successfully set." msgstr "Palavra-passe definida com sucesso." #: templates/account/messages/primary_email_set.txt:2 msgid "Primary e-mail address set." msgstr "" #: templates/account/messages/unverified_primary_email.txt:2 msgid "Your primary e-mail address must be verified." msgstr "" #: templates/account/password_change.html:5 #: templates/account/password_change.html:8 #: templates/account/password_change.html:13 #: templates/account/password_reset_from_key.html:4 #: templates/account/password_reset_from_key.html:7 #: templates/account/password_reset_from_key_done.html:4 #: templates/account/password_reset_from_key_done.html:7 msgid "Change Password" msgstr "Alterar palavra-passe" #: templates/account/password_reset.html:6 #: templates/account/password_reset.html:10 #: templates/account/password_reset_done.html:6 #: templates/account/password_reset_done.html:9 msgid "Password Reset" msgstr "Redefinição da palavra-passe" #: templates/account/password_reset.html:15 msgid "" "Forgotten your password? Enter your e-mail address below, and we'll send you " "an e-mail allowing you to reset it." msgstr "" "Esqueceu a sua palavra-passe? Insira o seu endereço de e-mail abaixo, e " "enviar-lhe-emos um e-mail permitindo que a redefina." #: templates/account/password_reset.html:20 msgid "Reset My Password" msgstr "Redefinir a minha palavra-passe" #: templates/account/password_reset.html:23 msgid "Please contact us if you have any trouble resetting your password." msgstr "" "Por favor contacte-nos se tiver quaisquer problemas a redefinir a sua " "palavra-passe." #: templates/account/password_reset_done.html:15 msgid "" "We have sent you an e-mail. Please contact us if you do not receive it " "within a few minutes." msgstr "" "Enviámos-lhe um e-mail. Por favor contacte-nos se não o receber nos próximos " "minutos." #: templates/account/password_reset_from_key.html:7 msgid "Bad Token" msgstr "Problema no Token" #: templates/account/password_reset_from_key.html:11 #, python-format msgid "" "The password reset link was invalid, possibly because it has already been " "used. Please request a new password reset." msgstr "" "O link para redefinição da palavra-passe era inválido, provávelmente por já " "ter sido usado. Por favor peça uma nova " "redefinição da palavra-passe." #: templates/account/password_reset_from_key.html:17 msgid "change password" msgstr "alterar a palavra-passe" #: templates/account/password_reset_from_key.html:20 #: templates/account/password_reset_from_key_done.html:8 msgid "Your password is now changed." msgstr "A sua palavra-passe foi alterada." #: templates/account/password_set.html:5 templates/account/password_set.html:8 #: templates/account/password_set.html:13 msgid "Set Password" msgstr "Definir palavra-passe" #: templates/account/signup.html:5 templates/socialaccount/signup.html:5 msgid "Signup" msgstr "Registo" #: templates/account/signup.html:8 templates/account/signup.html:18 #: templates/socialaccount/signup.html:8 templates/socialaccount/signup.html:19 msgid "Sign Up" msgstr "Registo" #: templates/account/signup.html:10 #, python-format msgid "" "Already have an account? Then please sign in." msgstr "Já tem uma conta? Por favor entre." #: templates/account/signup_closed.html:5 #: templates/account/signup_closed.html:8 msgid "Sign Up Closed" msgstr "" #: templates/account/signup_closed.html:10 msgid "We are sorry, but the sign up is currently closed." msgstr "" #: templates/account/snippets/already_logged_in.html:5 msgid "Note" msgstr "Nota" #: templates/account/snippets/already_logged_in.html:5 #, python-format msgid "you are already logged in as %(user_display)s." msgstr "você já entrou como %(user_display)s." #: templates/account/verification_sent.html:5 #: templates/account/verification_sent.html:8 #: templates/account/verified_email_required.html:5 #: templates/account/verified_email_required.html:8 msgid "Verify Your E-mail Address" msgstr "Verifique o seu endereço de e-mail" #: templates/account/verification_sent.html:10 #, fuzzy msgid "" "We have sent an e-mail to you for verification. Follow the link provided to " "finalize the signup process. Please contact us if you do not receive it " "within a few minutes." msgstr "" "Enviámos um e-mail para %(email)s para " "verificação. Siga o link no mesmo para finalizar o registo. Por favor " "contacte-nos se não o receber nos próximos minutos." #: templates/account/verified_email_required.html:12 msgid "" "This part of the site requires us to verify that\n" "you are who you claim to be. For this purpose, we require that you\n" "verify ownership of your e-mail address. " msgstr "" "Esta parte do site requer que verifiquemos que é quem diz que é. Para esse " "fim, pedimos que verifique que é dono do seu endereço de e-mail. " #: templates/account/verified_email_required.html:16 msgid "" "We have sent an e-mail to you for\n" "verification. Please click on the link inside this e-mail. Please\n" "contact us if you do not receive it within a few minutes." msgstr "" "Enviámos-lhe um e-mail para verificação. Por favor clique no link dentro " "deste e-mail. Por favor contacte-nos se não o receber dentro dos próximos " "minutos." #: templates/account/verified_email_required.html:20 #, python-format msgid "" "Note: you can still change your e-" "mail address." msgstr "" "Nota: ainda pode alterar o " "seuendereço de e-mail." #: templates/openid/login.html:9 msgid "OpenID Sign In" msgstr "Entrar com OpenID" #: templates/socialaccount/authentication_error.html:5 #: templates/socialaccount/authentication_error.html:8 msgid "Social Network Login Failure" msgstr "Falha ao Entrar com Rede Social" #: templates/socialaccount/authentication_error.html:10 msgid "" "An error occurred while attempting to login via your social network account." msgstr "" "Um erro foi encontrado ao tentar entrar com a sua conta de rede social." #: templates/socialaccount/connections.html:5 #: templates/socialaccount/connections.html:8 msgid "Account Connections" msgstr "Ligações da Conta" #: templates/socialaccount/connections.html:11 msgid "" "You can sign in to your account using any of the following third party " "accounts:" msgstr "Pode entrar usando uma das seguintes contas externas:" #: templates/socialaccount/connections.html:43 msgid "" "You currently have no social network accounts connected to this account." msgstr "De momento não tem nenhuma conta de rede social ligada a esta conta." #: templates/socialaccount/connections.html:46 msgid "Add a 3rd Party Account" msgstr "Adicionar uma Conta Externa" #: templates/socialaccount/login_cancelled.html:5 #: templates/socialaccount/login_cancelled.html:9 msgid "Login Cancelled" msgstr "Entrada Cancelada" #: templates/socialaccount/login_cancelled.html:13 #, python-format msgid "" "You decided to cancel logging in to our site using one of your existing " "accounts. If this was a mistake, please proceed to sign in." msgstr "" "Você decidiu cancelar a entrada no nosso site usando uma das seguintes " "contas. Se isto foi um erro, entre." #: templates/socialaccount/messages/account_connected.txt:2 msgid "The social account has been connected." msgstr "A conta social foi conectada." #: templates/socialaccount/messages/account_connected_other.txt:2 msgid "The social account is already connected to a different account." msgstr "A conta social já está conectada a outra conta." #: templates/socialaccount/messages/account_disconnected.txt:2 msgid "The social account has been disconnected." msgstr "A conta social foi disconectada." #: templates/socialaccount/signup.html:10 #, fuzzy, python-format msgid "" "You are about to use your %(provider_name)s account to login to\n" "%(site_name)s. As a final step, please complete the following form:" msgstr "" "Está prestes a usar a sua conta no %(provider_name)s para entrar no " "%(site_name)s. Como um passo final, por favor complete o seguinte formulário:" #~ msgid "The login and/or password you specified are not correct." #~ msgstr "O login e/ou password que especificou não estão correctos" #~ msgid "Usernames can only contain letters, digits and @/./+/-/_." #~ msgstr "" #~ "Nomes de utilizador podem apenas conter letras, dígitos, e @/./+/-/_." #~ msgid "This username is already taken. Please choose another." #~ msgstr "Este nome de utilizador já está em uso. Por favor escolha outro." #, fuzzy #~| msgid "Sign In" #~ msgid "Shopify Sign In" #~ msgstr "Entrar" #~ msgid "" #~ "You have confirmed that %(email)s is an " #~ "e-mail address for user %(user_display)s." #~ msgstr "" #~ "Confirmou que %(email)s é um endereço de " #~ "e-mail do utilizador %(user_display)s." #~ msgid "Thanks for using our site!" #~ msgstr "Obrigado por usar o nosso site!" #~ msgid "Confirmation e-mail sent to %(email)s" #~ msgstr "E-mail de confirmação enviado para %(email)s" #~ msgid "Delete Password" #~ msgstr "Remover palavra-passe" #~ msgid "" #~ "You may delete your password since you are currently logged in using " #~ "OpenID." #~ msgstr "Pode eliminar a sua palavra-passe já que entrou com OpenID." #~ msgid "delete my password" #~ msgstr "dliminar a minha palavra-passe" #~ msgid "Password Deleted" #~ msgstr "Palavra-passe eliminada" #~ msgid "Your password has been deleted." #~ msgstr "A sua palavra-passe foi eliminada." django-allauth-0.35.0/allauth/locale/zh_Hans/0000755000076500000240000000000013235133532021733 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/zh_Hans/LC_MESSAGES/0000755000076500000240000000000013235133532023520 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/zh_Hans/LC_MESSAGES/django.mo0000644000076500000240000002557613235132042025331 0ustar pennersrstaff00000000000000o ` \a 6    " - @ IX w L "g     9   ' 8 G pX _ 2) 8\ 9   '6 Vw|-l2B" ) >JQ cpx#A6"@Y?3;s#?<-j0 4:2Cv\P:lH@)G*\$,-%5 =K[n.d^B*  ?,dlH 9 CPW j-w  lC].89 C S f p    ! !#!)6!`!v!c!9!*" F"S"l" """ """"""" "-#-D#-r#z#*$*F$q$$*$*$g$^%-% & &6#&Z& m&w& &'&&W']'3O(1(r(9()b)#) *!#*E*3d**'* * * * + + +*+1+5+ 9+C+ J+)T+ +!V% `k FeKU;^-Gf0MT'[ECL(_JN],8*Dl/A>B:g<n9R"Z6 $4ma 2I\hPiS#1W3QH7@dXo)j O5?b=c&.YNote: you can still change your e-mail address.A user is already registered with this e-mail address.AccountAccount ConnectionsAccount InactiveAdd E-mailAdd E-mail AddressAdd a 3rd Party AccountAlready have an account? Then please sign in.An account already exists with this e-mail address. Please sign in to that account first, then connect your %s account.An error occurred while attempting to login via your social network account.Are you sure you want to sign out?Bad TokenChange PasswordConfirmConfirm E-mail AddressCurrent PasswordDo you really want to remove the selected e-mail address?E-mailE-mail (optional)E-mail AddressesE-mail addressForgot Password?Forgotten your password? Enter your e-mail address below, and we'll send you an e-mail allowing you to reset it.If you have not created an account yet, then please sign up first.In case you forgot, your username is %(username)s.Invalid response while obtaining access token from "%s".Invalid response while obtaining request token from "%s".Login CancelledMake PrimaryNew PasswordNew Password (again)No access to private resources at "%s".No access token saved for "%s".No request token saved for "%s".NoteOpenID Sign InPasswordPassword (again)Password ResetPassword Reset E-mailPassword must be a minimum of {0} characters.Password successfully changed.Password successfully set.Please confirm that %(email)s is an e-mail address for user %(user_display)s.Please contact us if you have any trouble resetting your password.Please type your current password.PrimaryPrimary e-mail address set.Re-send VerificationRemember MeRemoveReset My PasswordSet PasswordSign InSign OutSign UpSign Up ClosedSignupSocial Network Login FailureSuccessfully signed in as %(name)s.The e-mail address and/or password you specified are not correct.The e-mail address is not assigned to any user accountThe following e-mail addresses are associated with your account:The password reset link was invalid, possibly because it has already been used. Please request a new password reset.The social account is already connected to a different account.The username and/or password you specified are not correct.This account is currently inactive.This account is inactive.This e-mail address is already associated with another account.This e-mail address is already associated with this account.This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request.This part of the site requires us to verify that you are who you claim to be. For this purpose, we require that you verify ownership of your e-mail address. Too many failed login attempts. Try again later.UnverifiedUsernameUsername can not be used. Please use other username.Username or e-mailVerifiedVerify Your E-mail AddressWarning:We are sorry, but the sign up is currently closed.We have sent an e-mail to you for verification. Please click on the link inside this e-mail. Please contact us if you do not receive it within a few minutes.We have sent an e-mail to you for verification. Follow the link provided to finalize the signup process. Please contact us if you do not receive it within a few minutes.We have sent you an e-mail. Please contact us if you do not receive it within a few minutes.You can sign in to your account using any of the following third party accounts:You cannot remove your primary e-mail address (%(email)s).You currently do not have any e-mail address set up. You should really add an e-mail address so you can receive notifications, reset your password, etc.You currently have no social network accounts connected to this account.You decided to cancel logging in to our site using one of your existing accounts. If this was a mistake, please proceed to sign in.You have confirmed %(email)s.You have signed out.You must type the same password each time.Your account has no password set up.Your account has no verified e-mail address.Your password is now changed.Your primary e-mail address must be verified.change passwordcreatedemail addressemail addressesemail confirmationemail confirmationsfield labelLoginkeyorsentuserverifiedyou are already logged in as %(user_display)s.Project-Id-Version: PACKAGE VERSION Report-Msgid-Bugs-To: POT-Creation-Date: 2018-02-02 12:55-0600 PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE Last-Translator: FULL NAME Language-Team: LANGUAGE Language: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; 注意: 您仍然能够修改您的e-mail地址 .此e-mail地址已被其他用户注册。账号账号链接账号未激活添加E-mail添加E-mail地址添加一个第三方账号已经有一个账号? 请登录.已有一个账号与此e-mail地址关联,请先登录该账号,然后连接你的 %s 账号。当尝试用您的社交网络账号登录时,发生了一个错误。您确定要注销登录吗?Bad Token修改密码确认确认E-mail地址当前密码您真的想移除选定的e-mail地址吗?E-mailE-mail (选填项)E-mail地址E-mail地址忘记密码了?忘记密码?在下面输入您的e-mail地址,我们将给您发送一封e-mail,以便重置密码。如果没有账号,请先 注册 。作为提示,您的用户名是%(username)s.Invalid response while obtaining access token from "%s".Invalid response while obtaining request token from "%s".登录已取消设置首选e-mail新密码新密码(重复)无权访问私有资源 "%s"。No access token saved for "%s".No request token saved for "%s".注意OpenID登录密码密码(重复)密码重置密码重置邮件密码长度不得少于 {0} 个字符。密码修改成功。密码设置成功。请确认%(email)s是否是用户 %(user_display)s的e-mail地址。如在重置密码时遇到问题,请与我们联系。请输入您的当前密码首选e-mail主e-mail地址已设置重发验证e-mail记住我移除重置我的密码设置密码登录注销注册已关闭注册注册社交网络登录失败以 %(name)s..身份成功登录您提供的e-mail地址或密码不正确。此e-mail地址未分配给任何用户账号以下e-mail地址已关联到您的帐号:密码重置链接无效,可能该链接已被使用。请重新申请链接重置。社交账号已连接到另一个账号。您提供的用户名或密码不正确。此账号当前未激活。此账号未激活此e-mail地址已关联到其他账号。此e-mail地址已关联到这个账号。e-mail验证链接失效或无效。请点击 发起新的e-mail验证请求。网站的这部分功能要求验证您的真实身份。 为此,我们需要您确认您是此账号e-mail地址的所有者。登录失败次数过多,请稍后重试。未验证用户名此用户名不能使用,请改用其他用户名。用户名或e-mail已验证验证您的E-mail地址。警告:非常抱歉,当前已关闭注册。我们已经给您发送了一封e-mail验证邮件。 请点击e-mail中的链接。若您在几分钟后仍未收到邮件,请联系我们。我们已向您发了一封验证e-mail。点击e-mail中的链接完成注册流程。如果您在几分钟后仍未收到邮件,请与我们联系。我们已给您发了一封e-mail,如您在几分钟后仍没收到,请与我们联系。您可以用您的以下任何第三方账号登录您不能删除您的主e-mail地址 (%(email)s) 您当前未设置任何邮件地址。您需要设置一个邮件地址,以便接收通知,重置密码等。您当前没有任何社交网络账号与此账号关联您决定取消使用您的已有账号登录我们的网站。如果这是一个失误,请继续登录.您已确认e-mail地址 %(email)s 您已注销登录。每次输入的密码必须相同您的账号未设置密码。您的账号下无任何验证过的e-mail地址。您的密码现已被修改。您的主e-mail地址必须被验证。修改密码已建立e-mail地址e-mail地址e-mail确认e-mail确认账号key或已发送用户已验证您已以 %(user_display)s的身份登录django-allauth-0.35.0/allauth/locale/zh_Hans/LC_MESSAGES/django.po0000644000076500000240000006647113235132037025337 0ustar pennersrstaff00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-02-02 12:55-0600\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" #: account/adapter.py:45 msgid "Username can not be used. Please use other username." msgstr "此用户名不能使用,请改用其他用户名。" #: account/adapter.py:49 msgid "Too many failed login attempts. Try again later." msgstr "登录失败次数过多,请稍后重试。" #: account/adapter.py:51 msgid "A user is already registered with this e-mail address." msgstr "此e-mail地址已被其他用户注册。" #: account/adapter.py:288 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "密码长度不得少于 {0} 个字符。" #: account/apps.py:7 #, fuzzy msgid "Accounts" msgstr "账号" #: account/forms.py:61 account/forms.py:398 msgid "You must type the same password each time." msgstr "每次输入的密码必须相同" #: account/forms.py:91 account/forms.py:365 account/forms.py:476 msgid "Password" msgstr "密码" #: account/forms.py:92 msgid "Remember Me" msgstr "记住我" #: account/forms.py:98 msgid "This account is currently inactive." msgstr "此账号当前未激活。" #: account/forms.py:101 msgid "The e-mail address and/or password you specified are not correct." msgstr "您提供的e-mail地址或密码不正确。" #: account/forms.py:104 msgid "The username and/or password you specified are not correct." msgstr "您提供的用户名或密码不正确。" #: account/forms.py:113 account/forms.py:268 account/forms.py:426 #: account/forms.py:495 msgid "E-mail address" msgstr "E-mail地址" #: account/forms.py:115 account/forms.py:301 account/forms.py:421 #: account/forms.py:490 msgid "E-mail" msgstr "E-mail" #: account/forms.py:120 account/forms.py:123 account/forms.py:260 #: account/forms.py:264 msgid "Username" msgstr "用户名" #: account/forms.py:130 msgid "Username or e-mail" msgstr "用户名或e-mail" #: account/forms.py:133 msgctxt "field label" msgid "Login" msgstr "账号" #: account/forms.py:292 #, fuzzy #| msgid "E-mail (optional)" msgid "E-mail (again)" msgstr "E-mail (选填项)" #: account/forms.py:296 #, fuzzy #| msgid "email confirmation" msgid "E-mail address confirmation" msgstr "e-mail确认" #: account/forms.py:304 msgid "E-mail (optional)" msgstr "E-mail (选填项)" #: account/forms.py:345 #, fuzzy #| msgid "You must type the same password each time." msgid "You must type the same email each time." msgstr "每次输入的密码必须相同" #: account/forms.py:368 account/forms.py:477 msgid "Password (again)" msgstr "密码(重复)" #: account/forms.py:432 msgid "This e-mail address is already associated with this account." msgstr "此e-mail地址已关联到这个账号。" #: account/forms.py:434 msgid "This e-mail address is already associated with another account." msgstr "此e-mail地址已关联到其他账号。" #: account/forms.py:456 msgid "Current Password" msgstr "当前密码" #: account/forms.py:457 account/forms.py:546 msgid "New Password" msgstr "新密码" #: account/forms.py:458 account/forms.py:547 msgid "New Password (again)" msgstr "新密码(重复)" #: account/forms.py:466 msgid "Please type your current password." msgstr "请输入您的当前密码" #: account/forms.py:504 msgid "The e-mail address is not assigned to any user account" msgstr "此e-mail地址未分配给任何用户账号" #: account/forms.py:568 msgid "The password reset token was invalid." msgstr "" #: account/models.py:23 msgid "user" msgstr "用户" #: account/models.py:27 account/models.py:81 #, fuzzy msgid "e-mail address" msgstr "e-mail地址" #: account/models.py:28 msgid "verified" msgstr "已验证" #: account/models.py:29 #, fuzzy msgid "primary" msgstr "首选e-mail" #: account/models.py:34 msgid "email address" msgstr "e-mail地址" #: account/models.py:35 msgid "email addresses" msgstr "e-mail地址" #: account/models.py:83 msgid "created" msgstr "已建立" #: account/models.py:85 msgid "sent" msgstr "已发送" #: account/models.py:86 socialaccount/models.py:55 msgid "key" msgstr "key" #: account/models.py:91 msgid "email confirmation" msgstr "e-mail确认" #: account/models.py:92 msgid "email confirmations" msgstr "e-mail确认" #: socialaccount/adapter.py:26 #, python-format msgid "" "An account already exists with this e-mail address. Please sign in to that " "account first, then connect your %s account." msgstr "已有一个账号与此e-mail地址关联,请先登录该账号,然后连接你的 %s 账号。" #: socialaccount/adapter.py:131 msgid "Your account has no password set up." msgstr "您的账号未设置密码。" #: socialaccount/adapter.py:138 msgid "Your account has no verified e-mail address." msgstr "您的账号下无任何验证过的e-mail地址。" #: socialaccount/apps.py:7 #, fuzzy msgid "Social Accounts" msgstr "账号" #: socialaccount/models.py:43 socialaccount/models.py:77 msgid "provider" msgstr "" #: socialaccount/models.py:46 #, fuzzy msgid "name" msgstr "用户名" #: socialaccount/models.py:48 msgid "client id" msgstr "" #: socialaccount/models.py:50 msgid "App ID, or consumer key" msgstr "" #: socialaccount/models.py:51 msgid "secret key" msgstr "" #: socialaccount/models.py:53 msgid "API secret, client secret, or consumer secret" msgstr "" #: socialaccount/models.py:58 #, fuzzy msgid "Key" msgstr "key" #: socialaccount/models.py:66 msgid "social application" msgstr "" #: socialaccount/models.py:67 msgid "social applications" msgstr "" #: socialaccount/models.py:96 msgid "uid" msgstr "" #: socialaccount/models.py:98 msgid "last login" msgstr "" #: socialaccount/models.py:100 msgid "date joined" msgstr "" #: socialaccount/models.py:102 msgid "extra data" msgstr "" #: socialaccount/models.py:106 msgid "social account" msgstr "" #: socialaccount/models.py:107 msgid "social accounts" msgstr "" #: socialaccount/models.py:133 msgid "token" msgstr "" #: socialaccount/models.py:135 msgid "\"oauth_token\" (OAuth1) or access token (OAuth2)" msgstr "" #: socialaccount/models.py:138 msgid "token secret" msgstr "" #: socialaccount/models.py:140 msgid "\"oauth_token_secret\" (OAuth1) or refresh token (OAuth2)" msgstr "" #: socialaccount/models.py:142 msgid "expires at" msgstr "" #: socialaccount/models.py:146 msgid "social application token" msgstr "" #: socialaccount/models.py:147 msgid "social application tokens" msgstr "" #: socialaccount/providers/douban/views.py:36 msgid "Invalid profile data" msgstr "" #: socialaccount/providers/oauth/client.py:78 #, python-format msgid "Invalid response while obtaining request token from \"%s\"." msgstr "Invalid response while obtaining request token from \"%s\"." #: socialaccount/providers/oauth/client.py:109 #, python-format msgid "Invalid response while obtaining access token from \"%s\"." msgstr "Invalid response while obtaining access token from \"%s\"." #: socialaccount/providers/oauth/client.py:128 #, python-format msgid "No request token saved for \"%s\"." msgstr "No request token saved for \"%s\"." #: socialaccount/providers/oauth/client.py:177 #, python-format msgid "No access token saved for \"%s\"." msgstr "No access token saved for \"%s\"." #: socialaccount/providers/oauth/client.py:197 #, python-format msgid "No access to private resources at \"%s\"." msgstr "无权访问私有资源 \"%s\"。" #: templates/account/account_inactive.html:5 #: templates/account/account_inactive.html:8 msgid "Account Inactive" msgstr "账号未激活" #: templates/account/account_inactive.html:10 msgid "This account is inactive." msgstr "此账号未激活" #: templates/account/email.html:5 msgid "Account" msgstr "账号" #: templates/account/email.html:8 msgid "E-mail Addresses" msgstr "E-mail地址" #: templates/account/email.html:10 msgid "The following e-mail addresses are associated with your account:" msgstr "以下e-mail地址已关联到您的帐号:" #: templates/account/email.html:24 msgid "Verified" msgstr "已验证" #: templates/account/email.html:26 msgid "Unverified" msgstr "未验证" #: templates/account/email.html:28 msgid "Primary" msgstr "首选e-mail" #: templates/account/email.html:34 msgid "Make Primary" msgstr "设置首选e-mail" #: templates/account/email.html:35 msgid "Re-send Verification" msgstr "重发验证e-mail" #: templates/account/email.html:36 templates/socialaccount/connections.html:35 msgid "Remove" msgstr "移除" #: templates/account/email.html:43 msgid "Warning:" msgstr "警告:" #: templates/account/email.html:43 msgid "" "You currently do not have any e-mail address set up. You should really add " "an e-mail address so you can receive notifications, reset your password, etc." msgstr "" "您当前未设置任何邮件地址。您需要设置一个邮件地址,以便接收通知,重置密码等。" #: templates/account/email.html:48 msgid "Add E-mail Address" msgstr "添加E-mail地址" #: templates/account/email.html:53 msgid "Add E-mail" msgstr "添加E-mail" #: templates/account/email.html:62 msgid "Do you really want to remove the selected e-mail address?" msgstr "您真的想移除选定的e-mail地址吗?" #: templates/account/email/email_confirmation_message.txt:1 #, fuzzy, python-format #| msgid "" #| "User %(user_display)s at %(site_name)s has given this as an email " #| "address.\n" #| "\n" #| "To confirm this is correct, go to %(activate_url)s\n" msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because user %(user_display)s has given yours " "as an e-mail address to connect their account.\n" "\n" "To confirm this is correct, go to %(activate_url)s\n" msgstr "" "网站%(site_name)s上的用户%(user_display)s将此设为其e-mail地址。\n" "\n" "为验证这是正确的,请访问%(activate_url)s\n" #: templates/account/email/email_confirmation_message.txt:7 #, python-format msgid "" "Thank you from %(site_name)s!\n" "%(site_domain)s" msgstr "" #: templates/account/email/email_confirmation_subject.txt:3 #, fuzzy #| msgid "Confirm E-mail Address" msgid "Please Confirm Your E-mail Address" msgstr "确认E-mail地址" #: templates/account/email/password_reset_key_message.txt:1 #, fuzzy, python-format #| msgid "" #| "You're receiving this e-mail because you or someone else has requested a " #| "password for your user account at %(site_domain)s.\n" #| "It can be safely ignored if you did not request a password reset. Click " #| "the link below to reset your password." msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because you or someone else has requested a " "password for your user account.\n" "It can be safely ignored if you did not request a password reset. Click the " "link below to reset your password." msgstr "" "您收到此邮件表示您或者他人在网站 %(site_domain)s上为您的账号请求了密码重" "置。\n" "若您未请求密码重置,可以直接忽略此邮件。如要重置密码,请点击下面的链接。" #: templates/account/email/password_reset_key_message.txt:8 #, python-format msgid "In case you forgot, your username is %(username)s." msgstr "作为提示,您的用户名是%(username)s." #: templates/account/email/password_reset_key_message.txt:10 #, python-format msgid "" "Thank you for using %(site_name)s!\n" "%(site_domain)s" msgstr "" #: templates/account/email/password_reset_key_subject.txt:3 msgid "Password Reset E-mail" msgstr "密码重置邮件" #: templates/account/email_confirm.html:6 #: templates/account/email_confirm.html:10 msgid "Confirm E-mail Address" msgstr "确认E-mail地址" #: templates/account/email_confirm.html:16 #, python-format msgid "" "Please confirm that %(email)s is an e-mail " "address for user %(user_display)s." msgstr "" "请确认%(email)s是否是用户 %(user_display)s的" "e-mail地址。" #: templates/account/email_confirm.html:20 msgid "Confirm" msgstr "确认" #: templates/account/email_confirm.html:27 #, python-format msgid "" "This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request." msgstr "" "e-mail验证链接失效或无效。请点击 发起新的e-mail验证" "请求。" #: templates/account/login.html:6 templates/account/login.html:10 #: templates/account/login.html:43 msgid "Sign In" msgstr "登录" #: templates/account/login.html:15 #, fuzzy, python-format msgid "" "Please sign in with one\n" "of your existing third party accounts. Or, sign " "up\n" "for a %(site_name)s account and sign in below:" msgstr "" "请用您的第三方账号登录。\n" "或者注册 \n" "一个 %(site_name)s账号并登录:" #: templates/account/login.html:25 msgid "or" msgstr "或" #: templates/account/login.html:32 #, python-format msgid "" "If you have not created an account yet, then please\n" "sign up first." msgstr "" "如果没有账号,请先\n" "注册 。" #: templates/account/login.html:42 msgid "Forgot Password?" msgstr "忘记密码了?" #: templates/account/logout.html:5 templates/account/logout.html:8 #: templates/account/logout.html:17 msgid "Sign Out" msgstr "注销" #: templates/account/logout.html:10 msgid "Are you sure you want to sign out?" msgstr "您确定要注销登录吗?" #: templates/account/messages/cannot_delete_primary_email.txt:2 #, python-format msgid "You cannot remove your primary e-mail address (%(email)s)." msgstr "您不能删除您的主e-mail地址 (%(email)s) " #: templates/account/messages/email_confirmation_sent.txt:2 #, fuzzy, python-format msgid "Confirmation e-mail sent to %(email)s." msgstr "确认e-mail已发往 %(email)s" #: templates/account/messages/email_confirmed.txt:2 #, python-format msgid "You have confirmed %(email)s." msgstr "您已确认e-mail地址 %(email)s " #: templates/account/messages/email_deleted.txt:2 #, fuzzy, python-format msgid "Removed e-mail address %(email)s." msgstr "e-mail地址 %(email)s 已删除" #: templates/account/messages/logged_in.txt:4 #, python-format msgid "Successfully signed in as %(name)s." msgstr "以 %(name)s..身份成功登录" #: templates/account/messages/logged_out.txt:2 msgid "You have signed out." msgstr "您已注销登录。" #: templates/account/messages/password_changed.txt:2 msgid "Password successfully changed." msgstr "密码修改成功。" #: templates/account/messages/password_set.txt:2 msgid "Password successfully set." msgstr "密码设置成功。" #: templates/account/messages/primary_email_set.txt:2 msgid "Primary e-mail address set." msgstr "主e-mail地址已设置" #: templates/account/messages/unverified_primary_email.txt:2 msgid "Your primary e-mail address must be verified." msgstr "您的主e-mail地址必须被验证。" #: templates/account/password_change.html:5 #: templates/account/password_change.html:8 #: templates/account/password_change.html:13 #: templates/account/password_reset_from_key.html:4 #: templates/account/password_reset_from_key.html:7 #: templates/account/password_reset_from_key_done.html:4 #: templates/account/password_reset_from_key_done.html:7 msgid "Change Password" msgstr "修改密码" #: templates/account/password_reset.html:6 #: templates/account/password_reset.html:10 #: templates/account/password_reset_done.html:6 #: templates/account/password_reset_done.html:9 msgid "Password Reset" msgstr "密码重置" #: templates/account/password_reset.html:15 msgid "" "Forgotten your password? Enter your e-mail address below, and we'll send you " "an e-mail allowing you to reset it." msgstr "" "忘记密码?在下面输入您的e-mail地址,我们将给您发送一封e-mail,以便重置密码。" #: templates/account/password_reset.html:20 msgid "Reset My Password" msgstr "重置我的密码" #: templates/account/password_reset.html:23 msgid "Please contact us if you have any trouble resetting your password." msgstr "如在重置密码时遇到问题,请与我们联系。" #: templates/account/password_reset_done.html:15 msgid "" "We have sent you an e-mail. Please contact us if you do not receive it " "within a few minutes." msgstr "我们已给您发了一封e-mail,如您在几分钟后仍没收到,请与我们联系。" #: templates/account/password_reset_from_key.html:7 msgid "Bad Token" msgstr "Bad Token" #: templates/account/password_reset_from_key.html:11 #, python-format msgid "" "The password reset link was invalid, possibly because it has already been " "used. Please request a new password reset." msgstr "" "密码重置链接无效,可能该链接已被使用。请重新申请链接重置。" #: templates/account/password_reset_from_key.html:17 msgid "change password" msgstr "修改密码" #: templates/account/password_reset_from_key.html:20 #: templates/account/password_reset_from_key_done.html:8 msgid "Your password is now changed." msgstr "您的密码现已被修改。" #: templates/account/password_set.html:5 templates/account/password_set.html:8 #: templates/account/password_set.html:13 msgid "Set Password" msgstr "设置密码" #: templates/account/signup.html:5 templates/socialaccount/signup.html:5 msgid "Signup" msgstr "注册" #: templates/account/signup.html:8 templates/account/signup.html:18 #: templates/socialaccount/signup.html:8 templates/socialaccount/signup.html:19 msgid "Sign Up" msgstr "注册" #: templates/account/signup.html:10 #, python-format msgid "" "Already have an account? Then please sign in." msgstr "已经有一个账号? 请登录." #: templates/account/signup_closed.html:5 #: templates/account/signup_closed.html:8 msgid "Sign Up Closed" msgstr "已关闭注册" #: templates/account/signup_closed.html:10 msgid "We are sorry, but the sign up is currently closed." msgstr "非常抱歉,当前已关闭注册。" #: templates/account/snippets/already_logged_in.html:5 msgid "Note" msgstr "注意" #: templates/account/snippets/already_logged_in.html:5 #, python-format msgid "you are already logged in as %(user_display)s." msgstr "您已以 %(user_display)s的身份登录" #: templates/account/verification_sent.html:5 #: templates/account/verification_sent.html:8 #: templates/account/verified_email_required.html:5 #: templates/account/verified_email_required.html:8 msgid "Verify Your E-mail Address" msgstr "验证您的E-mail地址。" #: templates/account/verification_sent.html:10 msgid "" "We have sent an e-mail to you for verification. Follow the link provided to " "finalize the signup process. Please contact us if you do not receive it " "within a few minutes." msgstr "" "我们已向您发了一封验证e-mail。点击e-mail中的链接完成注册流程。如果您在几分钟" "后仍未收到邮件,请与我们联系。" #: templates/account/verified_email_required.html:12 msgid "" "This part of the site requires us to verify that\n" "you are who you claim to be. For this purpose, we require that you\n" "verify ownership of your e-mail address. " msgstr "" "网站的这部分功能要求验证您的真实身份。\n" "为此,我们需要您确认您是此账号e-mail地址的所有者。" #: templates/account/verified_email_required.html:16 msgid "" "We have sent an e-mail to you for\n" "verification. Please click on the link inside this e-mail. Please\n" "contact us if you do not receive it within a few minutes." msgstr "" "我们已经给您发送了一封e-mail验证邮件。\n" "请点击e-mail中的链接。若您在几分钟后仍未收到邮件,请联系我们。" #: templates/account/verified_email_required.html:20 #, python-format msgid "" "Note: you can still change your e-" "mail address." msgstr "" "注意: 您仍然能够修改您的e-mail地" "址 ." #: templates/openid/login.html:9 msgid "OpenID Sign In" msgstr "OpenID登录" #: templates/socialaccount/authentication_error.html:5 #: templates/socialaccount/authentication_error.html:8 msgid "Social Network Login Failure" msgstr "社交网络登录失败" #: templates/socialaccount/authentication_error.html:10 msgid "" "An error occurred while attempting to login via your social network account." msgstr "当尝试用您的社交网络账号登录时,发生了一个错误。" #: templates/socialaccount/connections.html:5 #: templates/socialaccount/connections.html:8 msgid "Account Connections" msgstr "账号链接" #: templates/socialaccount/connections.html:11 msgid "" "You can sign in to your account using any of the following third party " "accounts:" msgstr "您可以用您的以下任何第三方账号登录" #: templates/socialaccount/connections.html:43 msgid "" "You currently have no social network accounts connected to this account." msgstr "您当前没有任何社交网络账号与此账号关联" #: templates/socialaccount/connections.html:46 msgid "Add a 3rd Party Account" msgstr "添加一个第三方账号" #: templates/socialaccount/login_cancelled.html:5 #: templates/socialaccount/login_cancelled.html:9 msgid "Login Cancelled" msgstr "登录已取消" #: templates/socialaccount/login_cancelled.html:13 #, python-format msgid "" "You decided to cancel logging in to our site using one of your existing " "accounts. If this was a mistake, please proceed to sign in." msgstr "" "您决定取消使用您的已有账号登录我们的网站。如果这是一个失误,请继续登录." #: templates/socialaccount/messages/account_connected.txt:2 #, fuzzy msgid "The social account has been connected." msgstr "社交账号已连接" #: templates/socialaccount/messages/account_connected_other.txt:2 msgid "The social account is already connected to a different account." msgstr "社交账号已连接到另一个账号。" #: templates/socialaccount/messages/account_disconnected.txt:2 #, fuzzy msgid "The social account has been disconnected." msgstr "社交账号已断开连接" #: templates/socialaccount/signup.html:10 #, fuzzy, python-format msgid "" "You are about to use your %(provider_name)s account to login to\n" "%(site_name)s. As a final step, please complete the following form:" msgstr "" "您将使用您的%(provider_name)s账号登录\n" "%(site_name)s。作为最后一步,请完成以下表单:" #~ msgid "The login and/or password you specified are not correct." #~ msgstr "您提供的账号或密码错误" #~ msgid "Usernames can only contain letters, digits and @/./+/-/_." #~ msgstr "用户名只能包含字母,数字和@/./+/-/_." #~ msgid "This username is already taken. Please choose another." #~ msgstr "此用户名已被使用,请选择其他用户名。" #, fuzzy #~| msgid "Sign In" #~ msgid "Shopify Sign In" #~ msgstr "登录" #~ msgid "" #~ "You have confirmed that %(email)s is an " #~ "e-mail address for user %(user_display)s." #~ msgstr "" #~ "您已确认%(email)s是用户%(user_display)s的" #~ "e-mail地址。" #~ msgid "Thanks for using our site!" #~ msgstr "感谢您使用我们的网站!" #~ msgid "Confirmation e-mail sent to %(email)s" #~ msgstr "确认e-mail已发往 %(email)s" #~ msgid "Delete Password" #~ msgstr "删除密码" #~ msgid "" #~ "You may delete your password since you are currently logged in using " #~ "OpenID." #~ msgstr "您当前使用OpenID登录,因此您可以删除你的密码。" #~ msgid "delete my password" #~ msgstr "删除我的密码" #~ msgid "Password Deleted" #~ msgstr "密码已删除" #~ msgid "Your password has been deleted." #~ msgstr "您的密码已被删除。" #~ msgid "Your e-mail address has already been verified" #~ msgstr "Je e-mail adres is al geverifieerd" #~ msgid "" #~ "If you have any trouble resetting your password, contact us at %(CONTACT_EMAIL)s." #~ msgstr "" #~ "Als je problemen hebt je wachtwoord opnieuw in te stellen, neem dan " #~ "contact op met %(CONTACT_EMAIL)s." #~ msgid "Invalid confirmation key." #~ msgstr "Ongeldige bevestigingssleutel." #~ msgid "OpenID" #~ msgstr "OpenID" #~ msgid "Already have an account?" #~ msgstr "Heb je al een account?" #~ msgid "Sign in" #~ msgstr "Aanmelden" #~ msgid "Language" #~ msgstr "Taal" #~ msgid "Pinax can be used in your preferred language." #~ msgstr "Deze site kan in jouw voorkeurstaal gebruikt worden." #~ msgid "Change my language" #~ msgstr "Verander mijn taal" #~ msgid "Timezone" #~ msgstr "Tijdzone" #, fuzzy #~ msgid "" #~ "You're receiving this e-mail because you requested a password reset\n" #~ "for your user account at Pinax.\n" #~ "\n" #~ "Your new password is: %(new_password)s\n" #~ "\n" #~ "Your username, in case you've forgotten: %(username)s\n" #~ "\n" #~ "You should log in as soon as possible and change your password.\n" #~ "\n" #~ "Thanks for using our site!\n" #~ msgstr "" #~ "Je ontvangt deze mail omdat er een verzoek is ingelegd om het wachtwoord\n" #~ "behorende bij je %(site_name)s account opnieuw in te stellen.\n" #~ "\n" #~ "Je nieuwe wachtwoord is: %(new_password)s\n" #~ "\n" #~ "Je gebruikersnaam, voor het geval je die vergeten bent, is: %(username)s\n" #~ "\n" #~ "Je moet zo snel mogelijk inloggen en bovenstaand wachtwoord veranderen.\n" #~ "\n" #~ "Bedankt voor het gebruik van onze site!\n" #~ msgid "If checked you will stay logged in for 3 weeks" #~ msgstr "Bij 'Onthouden' blijf je ingelogd gedurende 3 weken" #~ msgid "Timezone successfully updated." #~ msgstr "Tijdzone gewijzigd." #~ msgid "Language successfully updated." #~ msgstr "Taal gewijzigd." #~ msgid "E-Mail Addresses" #~ msgstr "E-mail adressen" #~ msgid "None" #~ msgstr "Geen" #~ msgid "add" #~ msgstr "Voeg toe" #~ msgid "Log In" #~ msgstr "Inloggen" #~ msgid "Log in" #~ msgstr "Inloggen" #~ msgid "Logout" #~ msgstr "Afmelden" #~ msgid "" #~ "When you receive the new password, you should log in and change it as soon as possible." #~ msgstr "" #~ "Zodra je het nieuwe wachtwoord ontvangen hebt moet je zo snel mogelijk inloggen en het wachtwoord wijzigen." #~ msgid "You are already logged in." #~ msgstr "Je bent al ingelogd." #~ msgid "" #~ "By clicking \"Sign Up\", you are indicating that you have read and agree " #~ "to the Terms of Use and Privacy Policy." #~ msgstr "" #~ "Door te registreren geef je aan dat je de gebruiksvoorwaarden en de privacy " #~ "policy gelezen hebt en ermee akkoord gaat." #~ msgid "" #~ "If you have any trouble creating your account, contact us at %(contact_email)s." #~ msgstr "" #~ "Als je problemen hebt om een account aan te maken, neem dan contact op " #~ "met %(contact_email)s." #~ msgid "Log in »" #~ msgstr "Inloggen" django-allauth-0.35.0/allauth/locale/ru/0000755000076500000240000000000013235133532020767 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/ru/LC_MESSAGES/0000755000076500000240000000000013235133532022554 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/ru/LC_MESSAGES/django.mo0000644000076500000240000004651613235132042024362 0ustar pennersrstaff00000000000000 / 7) \a 6 - #+?P YdwIwLQ" &99Jpj4_'289BF V cp'  +-Ao"lB9|"6>Z o{! #2C-vA6@^%&)D?n;#?(<h&0 4 >QZu2~O\VP:+ f H H!!"'"*C"$n",""-" # #&# .#:# I#W#g#z# # ### ##### #### $ $9$S$g$ m$z$~$$.$"$3%;&yN&c&M,'z'+'!'''"(.#(TR((pj)>)4*!O*q**)*S*"+W>++++++-+(,C,N,,./^d0,0\0XM11'111'2372Fk2F223 3*3G3-_3R3+3) 4D64{4v5z5Jd6606;6-7I7)X7$7!7 7 77%78%38LY8 8i8A199s949_9B:A6;Ix;I;t <G</<+<Z%=U==[>g>e??|?-@L@$c@@`@ @lBuC1DeDQIEEU~FF,GGHGN;HLH_H#7IL[IIIIIJJ*J-=J/kJJ)J JJ:J%K,K3KDKWKsK,K0K)K6L6GL)~L LLLLM/M=m8zkLK EJxn1*2e^}R-h&G9)jQFI{AbO~M#SBZ_lf\V,T6>Yr( ca[q y+;D4Pv7:<]i/Up?usg|0w W!CNt@5$ "%d 'H.X`3o"oauth_token" (OAuth1) or access token (OAuth2)"oauth_token_secret" (OAuth1) or refresh token (OAuth2)Note: you can still change your e-mail address.A user is already registered with this e-mail address.API secret, client secret, or consumer secretAccountAccount ConnectionsAccount InactiveAccountsAdd E-mailAdd E-mail AddressAdd a 3rd Party AccountAlready have an account? Then please sign in.An account already exists with this e-mail address. Please sign in to that account first, then connect your %s account.An error occurred while attempting to login via your social network account.App ID, or consumer keyAre you sure you want to sign out?Bad TokenChange PasswordConfirmConfirm E-mail AddressConfirmation e-mail sent to %(email)s.Current PasswordDo you really want to remove the selected e-mail address?E-mailE-mail (again)E-mail (optional)E-mail AddressesE-mail addressE-mail address confirmationForgot Password?Forgotten your password? Enter your e-mail address below, and we'll send you an e-mail allowing you to reset it.Hello from %(site_name)s! You're receiving this e-mail because user %(user_display)s has given yours as an e-mail address to connect their account. To confirm this is correct, go to %(activate_url)s Hello from %(site_name)s! You're receiving this e-mail because you or someone else has requested a password for your user account. It can be safely ignored if you did not request a password reset. Click the link below to reset your password.If you have not created an account yet, then please sign up first.In case you forgot, your username is %(username)s.Invalid profile dataInvalid response while obtaining access token from "%s".Invalid response while obtaining request token from "%s".KeyLogin CancelledMake PrimaryNew PasswordNew Password (again)No access to private resources at "%s".No access token saved for "%s".No request token saved for "%s".NoteOpenID Sign InPasswordPassword (again)Password ResetPassword Reset E-mailPassword must be a minimum of {0} characters.Password successfully changed.Password successfully set.Please Confirm Your E-mail AddressPlease confirm that %(email)s is an e-mail address for user %(user_display)s.Please contact us if you have any trouble resetting your password.Please sign in with one of your existing third party accounts. Or, sign up for a %(site_name)s account and sign in below:Please type your current password.PrimaryPrimary e-mail address set.Re-send VerificationRemember MeRemoveRemoved e-mail address %(email)s.Reset My PasswordSet PasswordSign InSign OutSign UpSign Up ClosedSignupSocial AccountsSocial Network Login FailureSuccessfully signed in as %(name)s.Thank you for using %(site_name)s! %(site_domain)sThank you from %(site_name)s! %(site_domain)sThe e-mail address and/or password you specified are not correct.The e-mail address is not assigned to any user accountThe following e-mail addresses are associated with your account:The password reset link was invalid, possibly because it has already been used. Please request a new password reset.The password reset token was invalid.The social account has been connected.The social account has been disconnected.The social account is already connected to a different account.The username and/or password you specified are not correct.This account is currently inactive.This account is inactive.This e-mail address is already associated with another account.This e-mail address is already associated with this account.This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request.This part of the site requires us to verify that you are who you claim to be. For this purpose, we require that you verify ownership of your e-mail address. Too many failed login attempts. Try again later.UnverifiedUsernameUsername can not be used. Please use other username.Username or e-mailVerifiedVerify Your E-mail AddressWarning:We are sorry, but the sign up is currently closed.We have sent an e-mail to you for verification. Please click on the link inside this e-mail. Please contact us if you do not receive it within a few minutes.We have sent an e-mail to you for verification. Follow the link provided to finalize the signup process. Please contact us if you do not receive it within a few minutes.We have sent you an e-mail. Please contact us if you do not receive it within a few minutes.You are about to use your %(provider_name)s account to login to %(site_name)s. As a final step, please complete the following form:You can sign in to your account using any of the following third party accounts:You cannot remove your primary e-mail address (%(email)s).You currently do not have any e-mail address set up. You should really add an e-mail address so you can receive notifications, reset your password, etc.You currently have no social network accounts connected to this account.You decided to cancel logging in to our site using one of your existing accounts. If this was a mistake, please proceed to sign in.You have confirmed %(email)s.You have signed out.You must type the same email each time.You must type the same password each time.Your account has no password set up.Your account has no verified e-mail address.Your password is now changed.Your primary e-mail address must be verified.change passwordclient idcreateddate joinede-mail addressemail addressemail addressesemail confirmationemail confirmationsexpires atextra datafield labelLoginkeylast loginnameorprimaryprovidersecret keysentsocial accountsocial accountssocial applicationsocial application tokensocial application tokenssocial applicationstokentoken secretuiduserverifiedyou are already logged in as %(user_display)s.Project-Id-Version: Report-Msgid-Bugs-To: POT-Creation-Date: 2018-02-02 12:55-0600 PO-Revision-Date: 2017-04-05 22:48+0300 Last-Translator: Language-Team: Language: ru MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Generator: Poedit 1.8.7.1 "oauth_token" (OAuth1) или access token (OAuth2)"oauth_token_secret" (OAuth1) или refresh token (OAuth2)Заметка: вы можете сменить свой e-mail адрес.Пользователь с таким e-mail адресом уже зарегистрирован.Секретный ключ API, клиента или потребителяАккаунтПрикрепленные аккаунтыАккаунт неактивенАккаунтыДобавить e-mailДобавить e-mail адресДобавить внешний аккаунтУже зарегистрированы? Войдите.Пользователь с таким e-mail уже зарегистрирован. Чтобы подключить свой %s аккаунт, пожалуйста, авторизуйтесь.Произошла ошибка во время авторизации через социальную сеть.ID приложения или ключ потребителяВы уверены, что хотите выйти?Неправильный ключСменить парольПодтвердитьПодтвердите e-mail адрес.Подтверждение e-mail адреса отправлено на %(email)s.Текущий парольВы действительно хотите удалить этот e-mail адрес?E-mailE-mail (ещё раз)E-mail (опционально)E-mail адресаE-mail адресПодтверждение email адресаЗабыли пароль?Забыли пароль? Введите свой e-mail адрес ниже, и мы вышлем вам письмо для сброса пароля.Вас приветствует %(site_name)s! Вы получили это письмо, потому что пользователь %(user_display)s указал ваш e-mail для подключения к своему аккаунту. Чтобы подтвердить, перейдите по ссылке %(activate_url)s Вас приветствует %(site_name)s! Вы получили это письмо потому, что вы или кто-то иной запросили смену пароля для своего аккаунта. Если это были не вы, просто проигнорируйте это письмо. Иначе перейдите по ссылке для смены пароля.Если у вас ещё нет учётной записи, пожалуйста, сначала зарегистрируйтесь.Если вы вдруг забыли, ваше имя пользователя: %(username)s.Неверные данные профиляНеверный ответ при получении токена доступа от "%s".Неверный ответ во время получения запроса от "%s".КлючАвторизация отмененаСделать основнымНовый парольНовый пароль (ещё раз)Доступ к ресурсам закрыт "%s".Нет сохраненного ключа доступа для "%s".Нет сохраненного ключа запроса для "%s".ЗаметкаВойти с OpenIDПарольПароль (ещё раз)Сброс пароляПисьмо для сброса пароляМинимальное количество символов в пароле: {0}.Пароль успешно изменён.Пароль успешно указан.Пожалуйста подтвердите ваш e-mail адресПожалуйста, подтвердите %(email)s для пользователя %(user_display)s.Свяжитесь с нами, если у вас возникли сложности со сменой пароля.Пожалуйста, войдите с одним из ваших внешних аккаунтов. Или зарегистрируйтесь и авторизуйтесь на сайте %(site_name)s:Пожалуйста, введите свой текущий пароль.ОсновнойВыбран основной e-mail адрес.Отправить подтверждение ещё разЗапомнить меняУдалитьE-mail адрес %(email)s удален.Сбросить мой парольУстановить парольВойтиВыйтиРегистрацияРегистрация закрытаРегистрацияСоциальные аккаунтыОшибка авторизации через социальную сетьВы вошли как %(name)s.Благодарим вас за использование сайта «%(site_name)s!» %(site_domain)sСпасибо от сайта «%(site_name)s!» %(site_domain)sE-mail адрес и/или пароль не верны.Нет пользователя с таким e-mailСледующие e-mail адреса прикреплены к вашему аккаунту:Ссылка на сброс пароля неверна, вероятно, она уже была использована. Для нового сброса пароля перейдите по ссылке.Неправильный код для сброса пароля.Аккаунт социальной сети был прикреплён.Акакаунт социальной сети был откреплен.Аккаунт социальной сети уже прикреплен к другому пользователю.Имя пользователя и/или пароль не верны.Учетная запись неактивна.Этот аккаунт неактивен.Указанный e-mail прикреплен к другому пользователю.Указанный e-mail уже прикреплен к этому аккаунту.Ссылка некорректна или срок её действия истек. Пожалуйста, запросите подтверждение e-mail заново.Эта часть сайта требует подтверждения e-mail адреса.Слишком много попыток входа в систему, попробуйте позже.Не подтвержденИмя пользователяТакое имя пользователя не может быть использовано, выберите другое.Имя пользователя или e-mailПодтвержденПодтвердите ваш e-mailВнимание:Извините, но регистрация в настоящий момент закрыта.Мы отправили вам письмо с подтверждением. Пожалуйста, перейдите по ссылке. Свяжитесь с нами, если вы не получили письмо в течение нескольких минут.Мы отправили вам e-mail с подтверждением. Для завершения процесса регистрации перейдите по указанной ссылке. Если вы не получили наше сообщение в течение нескольких минут, пожалуйста, свяжитесь с нами.Мы отправили вам письмо. Пожалуйста, свяжитесь с нами, если не получили его в течение нескольких минут.Вы используете %(provider_name)s для авторизации на %(site_name)s. Чтобы завершить, заполните следующую форму:Вы можете авторизоваться, используя следующие сервисы:Вы не можете удалить ваш основной e-mail (%(email)s).Сейчас у вас нет прикрепленного e-mail адреса. Рекомендуем добавить, чтобы начать получать уведомления, сброс пароля и прочее.Нет прикрепленных аккаунтов социальных сетей.Вы прервали авторизацию, используя один из ваших аккаутов. Если это было ошибкой, перейдите к авторизации. Адрес %(email)s подтверждён.Вы вышли.Вы должны ввести одинаковый e-mail дважды.Вы должны ввести одинаковый пароль дважды.Для вашего аккаунта не установлен пароль.Нет подтвержденных e-mail адресов для вашего аккаунта.Ваш пароль изменён.Ваш основной e-mail должен быть подтвержден.изменить парольid клиентасозданодата регистрацииe-mail адресemail адресemail адресаподтверждение email адресаподтверждения email адресовистекаетдополнительные данныеВойтиключдата последнего входа в системуимяилиосновнойпровайдерсекретный ключотправленоаккаунт социальной сетиаккаунты социальных сетейсоциальное приложениетокен социального приложениятокены социальных приложенийсоциальные приложениятокенсекретный токенUID пользователяпользовательподтвержденвы уже вошли как %(user_display)s.django-allauth-0.35.0/allauth/locale/ru/LC_MESSAGES/django.po0000644000076500000240000007146513235132037024372 0ustar pennersrstaff00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-02-02 12:55-0600\n" "PO-Revision-Date: 2017-04-05 22:48+0300\n" "Last-Translator: \n" "Language-Team: \n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 1.8.7.1\n" #: account/adapter.py:45 msgid "Username can not be used. Please use other username." msgstr "Такое имя пользователя не может быть использовано, выберите другое." #: account/adapter.py:49 msgid "Too many failed login attempts. Try again later." msgstr "Слишком много попыток входа в систему, попробуйте позже." #: account/adapter.py:51 msgid "A user is already registered with this e-mail address." msgstr "Пользователь с таким e-mail адресом уже зарегистрирован." #: account/adapter.py:288 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "Минимальное количество символов в пароле: {0}." #: account/apps.py:7 msgid "Accounts" msgstr "Аккаунты" #: account/forms.py:61 account/forms.py:398 msgid "You must type the same password each time." msgstr "Вы должны ввести одинаковый пароль дважды." #: account/forms.py:91 account/forms.py:365 account/forms.py:476 msgid "Password" msgstr "Пароль" #: account/forms.py:92 msgid "Remember Me" msgstr "Запомнить меня" #: account/forms.py:98 msgid "This account is currently inactive." msgstr "Учетная запись неактивна." #: account/forms.py:101 msgid "The e-mail address and/or password you specified are not correct." msgstr "E-mail адрес и/или пароль не верны." #: account/forms.py:104 msgid "The username and/or password you specified are not correct." msgstr "Имя пользователя и/или пароль не верны." #: account/forms.py:113 account/forms.py:268 account/forms.py:426 #: account/forms.py:495 msgid "E-mail address" msgstr "E-mail адрес" #: account/forms.py:115 account/forms.py:301 account/forms.py:421 #: account/forms.py:490 msgid "E-mail" msgstr "E-mail" #: account/forms.py:120 account/forms.py:123 account/forms.py:260 #: account/forms.py:264 msgid "Username" msgstr "Имя пользователя" #: account/forms.py:130 msgid "Username or e-mail" msgstr "Имя пользователя или e-mail" #: account/forms.py:133 msgctxt "field label" msgid "Login" msgstr "Войти" #: account/forms.py:292 msgid "E-mail (again)" msgstr "E-mail (ещё раз)" #: account/forms.py:296 msgid "E-mail address confirmation" msgstr "Подтверждение email адреса" #: account/forms.py:304 msgid "E-mail (optional)" msgstr "E-mail (опционально)" #: account/forms.py:345 msgid "You must type the same email each time." msgstr "Вы должны ввести одинаковый e-mail дважды." #: account/forms.py:368 account/forms.py:477 msgid "Password (again)" msgstr "Пароль (ещё раз)" #: account/forms.py:432 msgid "This e-mail address is already associated with this account." msgstr "Указанный e-mail уже прикреплен к этому аккаунту." #: account/forms.py:434 msgid "This e-mail address is already associated with another account." msgstr "Указанный e-mail прикреплен к другому пользователю." #: account/forms.py:456 msgid "Current Password" msgstr "Текущий пароль" #: account/forms.py:457 account/forms.py:546 msgid "New Password" msgstr "Новый пароль" #: account/forms.py:458 account/forms.py:547 msgid "New Password (again)" msgstr "Новый пароль (ещё раз)" #: account/forms.py:466 msgid "Please type your current password." msgstr "Пожалуйста, введите свой текущий пароль." #: account/forms.py:504 msgid "The e-mail address is not assigned to any user account" msgstr "Нет пользователя с таким e-mail" #: account/forms.py:568 msgid "The password reset token was invalid." msgstr "Неправильный код для сброса пароля." #: account/models.py:23 msgid "user" msgstr "пользователь" #: account/models.py:27 account/models.py:81 msgid "e-mail address" msgstr "e-mail адрес" #: account/models.py:28 msgid "verified" msgstr "подтвержден" #: account/models.py:29 msgid "primary" msgstr "основной" #: account/models.py:34 msgid "email address" msgstr "email адрес" #: account/models.py:35 msgid "email addresses" msgstr "email адреса" #: account/models.py:83 msgid "created" msgstr "создано" #: account/models.py:85 msgid "sent" msgstr "отправлено" #: account/models.py:86 socialaccount/models.py:55 msgid "key" msgstr "ключ" #: account/models.py:91 msgid "email confirmation" msgstr "подтверждение email адреса" #: account/models.py:92 msgid "email confirmations" msgstr "подтверждения email адресов" #: socialaccount/adapter.py:26 #, python-format msgid "" "An account already exists with this e-mail address. Please sign in to that " "account first, then connect your %s account." msgstr "" "Пользователь с таким e-mail уже зарегистрирован. Чтобы подключить свой %s " "аккаунт, пожалуйста, авторизуйтесь." #: socialaccount/adapter.py:131 msgid "Your account has no password set up." msgstr "Для вашего аккаунта не установлен пароль." #: socialaccount/adapter.py:138 msgid "Your account has no verified e-mail address." msgstr "Нет подтвержденных e-mail адресов для вашего аккаунта." #: socialaccount/apps.py:7 msgid "Social Accounts" msgstr "Социальные аккаунты" #: socialaccount/models.py:43 socialaccount/models.py:77 msgid "provider" msgstr "провайдер" #: socialaccount/models.py:46 msgid "name" msgstr "имя" #: socialaccount/models.py:48 msgid "client id" msgstr "id клиента" #: socialaccount/models.py:50 msgid "App ID, or consumer key" msgstr "ID приложения или ключ потребителя" #: socialaccount/models.py:51 msgid "secret key" msgstr "секретный ключ" #: socialaccount/models.py:53 msgid "API secret, client secret, or consumer secret" msgstr "Секретный ключ API, клиента или потребителя" #: socialaccount/models.py:58 msgid "Key" msgstr "Ключ" #: socialaccount/models.py:66 msgid "social application" msgstr "социальное приложение" #: socialaccount/models.py:67 msgid "social applications" msgstr "социальные приложения" #: socialaccount/models.py:96 msgid "uid" msgstr "UID пользователя" #: socialaccount/models.py:98 msgid "last login" msgstr "дата последнего входа в систему" #: socialaccount/models.py:100 msgid "date joined" msgstr "дата регистрации" #: socialaccount/models.py:102 msgid "extra data" msgstr "дополнительные данные" #: socialaccount/models.py:106 msgid "social account" msgstr "аккаунт социальной сети" #: socialaccount/models.py:107 msgid "social accounts" msgstr "аккаунты социальных сетей" #: socialaccount/models.py:133 msgid "token" msgstr "токен" #: socialaccount/models.py:135 msgid "\"oauth_token\" (OAuth1) or access token (OAuth2)" msgstr "\"oauth_token\" (OAuth1) или access token (OAuth2)" #: socialaccount/models.py:138 msgid "token secret" msgstr "секретный токен" #: socialaccount/models.py:140 msgid "\"oauth_token_secret\" (OAuth1) or refresh token (OAuth2)" msgstr "\"oauth_token_secret\" (OAuth1) или refresh token (OAuth2)" #: socialaccount/models.py:142 msgid "expires at" msgstr "истекает" #: socialaccount/models.py:146 msgid "social application token" msgstr "токен социального приложения" #: socialaccount/models.py:147 msgid "social application tokens" msgstr "токены социальных приложений" #: socialaccount/providers/douban/views.py:36 msgid "Invalid profile data" msgstr "Неверные данные профиля" #: socialaccount/providers/oauth/client.py:78 #, python-format msgid "Invalid response while obtaining request token from \"%s\"." msgstr "Неверный ответ во время получения запроса от \"%s\"." #: socialaccount/providers/oauth/client.py:109 #, python-format msgid "Invalid response while obtaining access token from \"%s\"." msgstr "Неверный ответ при получении токена доступа от \"%s\"." #: socialaccount/providers/oauth/client.py:128 #, python-format msgid "No request token saved for \"%s\"." msgstr "Нет сохраненного ключа запроса для \"%s\"." #: socialaccount/providers/oauth/client.py:177 #, python-format msgid "No access token saved for \"%s\"." msgstr "Нет сохраненного ключа доступа для \"%s\"." #: socialaccount/providers/oauth/client.py:197 #, python-format msgid "No access to private resources at \"%s\"." msgstr "Доступ к ресурсам закрыт \"%s\"." #: templates/account/account_inactive.html:5 #: templates/account/account_inactive.html:8 msgid "Account Inactive" msgstr "Аккаунт неактивен" #: templates/account/account_inactive.html:10 msgid "This account is inactive." msgstr "Этот аккаунт неактивен." #: templates/account/email.html:5 msgid "Account" msgstr "Аккаунт" #: templates/account/email.html:8 msgid "E-mail Addresses" msgstr "E-mail адреса" #: templates/account/email.html:10 msgid "The following e-mail addresses are associated with your account:" msgstr "Следующие e-mail адреса прикреплены к вашему аккаунту:" #: templates/account/email.html:24 msgid "Verified" msgstr "Подтвержден" #: templates/account/email.html:26 msgid "Unverified" msgstr "Не подтвержден" #: templates/account/email.html:28 msgid "Primary" msgstr "Основной" #: templates/account/email.html:34 msgid "Make Primary" msgstr "Сделать основным" #: templates/account/email.html:35 msgid "Re-send Verification" msgstr "Отправить подтверждение ещё раз" #: templates/account/email.html:36 templates/socialaccount/connections.html:35 msgid "Remove" msgstr "Удалить" #: templates/account/email.html:43 msgid "Warning:" msgstr "Внимание:" #: templates/account/email.html:43 msgid "" "You currently do not have any e-mail address set up. You should really add " "an e-mail address so you can receive notifications, reset your password, etc." msgstr "" "Сейчас у вас нет прикрепленного e-mail адреса. Рекомендуем добавить, чтобы " "начать получать уведомления, сброс пароля и прочее." #: templates/account/email.html:48 msgid "Add E-mail Address" msgstr "Добавить e-mail адрес" #: templates/account/email.html:53 msgid "Add E-mail" msgstr "Добавить e-mail" #: templates/account/email.html:62 msgid "Do you really want to remove the selected e-mail address?" msgstr "Вы действительно хотите удалить этот e-mail адрес?" #: templates/account/email/email_confirmation_message.txt:1 #, python-format msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because user %(user_display)s has given yours " "as an e-mail address to connect their account.\n" "\n" "To confirm this is correct, go to %(activate_url)s\n" msgstr "" "Вас приветствует %(site_name)s!\n" "\n" "Вы получили это письмо, потому что пользователь %(user_display)s указал ваш " "e-mail для подключения к своему аккаунту.\n" "\n" "Чтобы подтвердить, перейдите по ссылке %(activate_url)s\n" #: templates/account/email/email_confirmation_message.txt:7 #, python-format msgid "" "Thank you from %(site_name)s!\n" "%(site_domain)s" msgstr "" "Спасибо от сайта «%(site_name)s!»\n" "%(site_domain)s" #: templates/account/email/email_confirmation_subject.txt:3 msgid "Please Confirm Your E-mail Address" msgstr "Пожалуйста подтвердите ваш e-mail адрес" #: templates/account/email/password_reset_key_message.txt:1 #, python-format msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because you or someone else has requested a " "password for your user account.\n" "It can be safely ignored if you did not request a password reset. Click the " "link below to reset your password." msgstr "" "Вас приветствует %(site_name)s!\n" "\n" "Вы получили это письмо потому, что вы или кто-то иной запросили смену пароля " "для своего аккаунта.\n" "Если это были не вы, просто проигнорируйте это письмо. Иначе перейдите по " "ссылке для смены пароля." #: templates/account/email/password_reset_key_message.txt:8 #, python-format msgid "In case you forgot, your username is %(username)s." msgstr "Если вы вдруг забыли, ваше имя пользователя: %(username)s." #: templates/account/email/password_reset_key_message.txt:10 #, python-format msgid "" "Thank you for using %(site_name)s!\n" "%(site_domain)s" msgstr "" "Благодарим вас за использование сайта «%(site_name)s!»\n" "%(site_domain)s" #: templates/account/email/password_reset_key_subject.txt:3 msgid "Password Reset E-mail" msgstr "Письмо для сброса пароля" #: templates/account/email_confirm.html:6 #: templates/account/email_confirm.html:10 msgid "Confirm E-mail Address" msgstr "Подтвердите e-mail адрес." #: templates/account/email_confirm.html:16 #, python-format msgid "" "Please confirm that %(email)s is an e-mail " "address for user %(user_display)s." msgstr "" "Пожалуйста, подтвердите %(email)s для " "пользователя %(user_display)s." #: templates/account/email_confirm.html:20 msgid "Confirm" msgstr "Подтвердить" #: templates/account/email_confirm.html:27 #, python-format msgid "" "This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request." msgstr "" "Ссылка некорректна или срок её действия истек. Пожалуйста, запросите подтверждение e-mail заново." #: templates/account/login.html:6 templates/account/login.html:10 #: templates/account/login.html:43 msgid "Sign In" msgstr "Войти" #: templates/account/login.html:15 #, python-format msgid "" "Please sign in with one\n" "of your existing third party accounts. Or, sign " "up\n" "for a %(site_name)s account and sign in below:" msgstr "" "Пожалуйста, войдите с одним\n" "из ваших внешних аккаунтов. Или зарегистрируйтесь\n" "и авторизуйтесь на сайте %(site_name)s:" #: templates/account/login.html:25 msgid "or" msgstr "или" #: templates/account/login.html:32 #, python-format msgid "" "If you have not created an account yet, then please\n" "sign up first." msgstr "" "Если у вас ещё нет учётной записи, пожалуйста, сначала зарегистрируйтесь." #: templates/account/login.html:42 msgid "Forgot Password?" msgstr "Забыли пароль?" #: templates/account/logout.html:5 templates/account/logout.html:8 #: templates/account/logout.html:17 msgid "Sign Out" msgstr "Выйти" #: templates/account/logout.html:10 msgid "Are you sure you want to sign out?" msgstr "Вы уверены, что хотите выйти?" #: templates/account/messages/cannot_delete_primary_email.txt:2 #, python-format msgid "You cannot remove your primary e-mail address (%(email)s)." msgstr "Вы не можете удалить ваш основной e-mail (%(email)s)." #: templates/account/messages/email_confirmation_sent.txt:2 #, python-format msgid "Confirmation e-mail sent to %(email)s." msgstr "Подтверждение e-mail адреса отправлено на %(email)s." #: templates/account/messages/email_confirmed.txt:2 #, python-format msgid "You have confirmed %(email)s." msgstr "Адрес %(email)s подтверждён." #: templates/account/messages/email_deleted.txt:2 #, python-format msgid "Removed e-mail address %(email)s." msgstr "E-mail адрес %(email)s удален." #: templates/account/messages/logged_in.txt:4 #, python-format msgid "Successfully signed in as %(name)s." msgstr "Вы вошли как %(name)s." #: templates/account/messages/logged_out.txt:2 msgid "You have signed out." msgstr "Вы вышли." #: templates/account/messages/password_changed.txt:2 msgid "Password successfully changed." msgstr "Пароль успешно изменён." #: templates/account/messages/password_set.txt:2 msgid "Password successfully set." msgstr "Пароль успешно указан." #: templates/account/messages/primary_email_set.txt:2 msgid "Primary e-mail address set." msgstr "Выбран основной e-mail адрес." #: templates/account/messages/unverified_primary_email.txt:2 msgid "Your primary e-mail address must be verified." msgstr "Ваш основной e-mail должен быть подтвержден." #: templates/account/password_change.html:5 #: templates/account/password_change.html:8 #: templates/account/password_change.html:13 #: templates/account/password_reset_from_key.html:4 #: templates/account/password_reset_from_key.html:7 #: templates/account/password_reset_from_key_done.html:4 #: templates/account/password_reset_from_key_done.html:7 msgid "Change Password" msgstr "Сменить пароль" #: templates/account/password_reset.html:6 #: templates/account/password_reset.html:10 #: templates/account/password_reset_done.html:6 #: templates/account/password_reset_done.html:9 msgid "Password Reset" msgstr "Сброс пароля" #: templates/account/password_reset.html:15 msgid "" "Forgotten your password? Enter your e-mail address below, and we'll send you " "an e-mail allowing you to reset it." msgstr "" "Забыли пароль? Введите свой e-mail адрес ниже, и мы вышлем вам письмо для " "сброса пароля." #: templates/account/password_reset.html:20 msgid "Reset My Password" msgstr "Сбросить мой пароль" #: templates/account/password_reset.html:23 msgid "Please contact us if you have any trouble resetting your password." msgstr "Свяжитесь с нами, если у вас возникли сложности со сменой пароля." #: templates/account/password_reset_done.html:15 msgid "" "We have sent you an e-mail. Please contact us if you do not receive it " "within a few minutes." msgstr "" "Мы отправили вам письмо. Пожалуйста, свяжитесь с нами, если не получили его " "в течение нескольких минут." #: templates/account/password_reset_from_key.html:7 msgid "Bad Token" msgstr "Неправильный ключ" #: templates/account/password_reset_from_key.html:11 #, python-format msgid "" "The password reset link was invalid, possibly because it has already been " "used. Please request a new password reset." msgstr "" "Ссылка на сброс пароля неверна, вероятно, она уже была использована. Для " "нового сброса пароля перейдите по ссылке." #: templates/account/password_reset_from_key.html:17 msgid "change password" msgstr "изменить пароль" #: templates/account/password_reset_from_key.html:20 #: templates/account/password_reset_from_key_done.html:8 msgid "Your password is now changed." msgstr "Ваш пароль изменён." #: templates/account/password_set.html:5 templates/account/password_set.html:8 #: templates/account/password_set.html:13 msgid "Set Password" msgstr "Установить пароль" #: templates/account/signup.html:5 templates/socialaccount/signup.html:5 msgid "Signup" msgstr "Регистрация" #: templates/account/signup.html:8 templates/account/signup.html:18 #: templates/socialaccount/signup.html:8 templates/socialaccount/signup.html:19 msgid "Sign Up" msgstr "Регистрация" #: templates/account/signup.html:10 #, python-format msgid "" "Already have an account? Then please sign in." msgstr "Уже зарегистрированы? Войдите." #: templates/account/signup_closed.html:5 #: templates/account/signup_closed.html:8 msgid "Sign Up Closed" msgstr "Регистрация закрыта" #: templates/account/signup_closed.html:10 msgid "We are sorry, but the sign up is currently closed." msgstr "Извините, но регистрация в настоящий момент закрыта." #: templates/account/snippets/already_logged_in.html:5 msgid "Note" msgstr "Заметка" #: templates/account/snippets/already_logged_in.html:5 #, python-format msgid "you are already logged in as %(user_display)s." msgstr "вы уже вошли как %(user_display)s." #: templates/account/verification_sent.html:5 #: templates/account/verification_sent.html:8 #: templates/account/verified_email_required.html:5 #: templates/account/verified_email_required.html:8 msgid "Verify Your E-mail Address" msgstr "Подтвердите ваш e-mail" #: templates/account/verification_sent.html:10 msgid "" "We have sent an e-mail to you for verification. Follow the link provided to " "finalize the signup process. Please contact us if you do not receive it " "within a few minutes." msgstr "" "Мы отправили вам e-mail с подтверждением. Для завершения процесса " "регистрации перейдите по указанной ссылке. Если вы не получили наше " "сообщение в течение нескольких минут, пожалуйста, свяжитесь с нами." #: templates/account/verified_email_required.html:12 msgid "" "This part of the site requires us to verify that\n" "you are who you claim to be. For this purpose, we require that you\n" "verify ownership of your e-mail address. " msgstr "Эта часть сайта требует подтверждения e-mail адреса." #: templates/account/verified_email_required.html:16 msgid "" "We have sent an e-mail to you for\n" "verification. Please click on the link inside this e-mail. Please\n" "contact us if you do not receive it within a few minutes." msgstr "" "Мы отправили вам письмо\n" "с подтверждением. Пожалуйста, перейдите по ссылке.\n" "Свяжитесь с нами, если вы не получили письмо в течение нескольких минут." #: templates/account/verified_email_required.html:20 #, python-format msgid "" "Note: you can still change your e-" "mail address." msgstr "" "Заметка: вы можете сменить свой e-" "mail адрес." #: templates/openid/login.html:9 msgid "OpenID Sign In" msgstr "Войти с OpenID" #: templates/socialaccount/authentication_error.html:5 #: templates/socialaccount/authentication_error.html:8 msgid "Social Network Login Failure" msgstr "Ошибка авторизации через социальную сеть" #: templates/socialaccount/authentication_error.html:10 msgid "" "An error occurred while attempting to login via your social network account." msgstr "Произошла ошибка во время авторизации через социальную сеть." #: templates/socialaccount/connections.html:5 #: templates/socialaccount/connections.html:8 msgid "Account Connections" msgstr "Прикрепленные аккаунты" #: templates/socialaccount/connections.html:11 msgid "" "You can sign in to your account using any of the following third party " "accounts:" msgstr "Вы можете авторизоваться, используя следующие сервисы:" #: templates/socialaccount/connections.html:43 msgid "" "You currently have no social network accounts connected to this account." msgstr "Нет прикрепленных аккаунтов социальных сетей." #: templates/socialaccount/connections.html:46 msgid "Add a 3rd Party Account" msgstr "Добавить внешний аккаунт" #: templates/socialaccount/login_cancelled.html:5 #: templates/socialaccount/login_cancelled.html:9 msgid "Login Cancelled" msgstr "Авторизация отменена" #: templates/socialaccount/login_cancelled.html:13 #, python-format msgid "" "You decided to cancel logging in to our site using one of your existing " "accounts. If this was a mistake, please proceed to sign in." msgstr "" "Вы прервали авторизацию, используя один из ваших аккаутов. Если это было " "ошибкой, перейдите к авторизации. " #: templates/socialaccount/messages/account_connected.txt:2 msgid "The social account has been connected." msgstr "Аккаунт социальной сети был прикреплён." #: templates/socialaccount/messages/account_connected_other.txt:2 msgid "The social account is already connected to a different account." msgstr "Аккаунт социальной сети уже прикреплен к другому пользователю." #: templates/socialaccount/messages/account_disconnected.txt:2 msgid "The social account has been disconnected." msgstr "Акакаунт социальной сети был откреплен." #: templates/socialaccount/signup.html:10 #, python-format msgid "" "You are about to use your %(provider_name)s account to login to\n" "%(site_name)s. As a final step, please complete the following form:" msgstr "" "Вы используете %(provider_name)s для авторизации на \n" "%(site_name)s. Чтобы завершить, заполните следующую форму:" #~ msgid "The login and/or password you specified are not correct." #~ msgstr "Логин и/или пароль не верны." #~ msgid "Usernames can only contain letters, digits and @/./+/-/_." #~ msgstr "Имя пользователя может включать буквы, цифры и @/./+/-/_." #~ msgid "This username is already taken. Please choose another." #~ msgstr "" #~ "Такое имя пользователя уже используется на сайте. Пожалуйста выберите " #~ "другое." #, fuzzy #~| msgid "Sign In" #~ msgid "Shopify Sign In" #~ msgstr "Войти" #~ msgid "" #~ "You have confirmed that %(email)s is an " #~ "e-mail address for user %(user_display)s." #~ msgstr "" #~ "Вы подтвердили адрес %(email)s для " #~ "пользователя %(user_display)s." #~ msgid "Thanks for using our site!" #~ msgstr "Спасибо за использование нашего сайта!" #~ msgid "Confirmation e-mail sent to %(email)s" #~ msgstr "Подтверждение выслано на %(email)s" #~ msgid "Delete Password" #~ msgstr "Удалить пароль" #~ msgid "" #~ "You may delete your password since you are currently logged in using " #~ "OpenID." #~ msgstr "Вы можете удалить свой пароль, при использовании OpenID." #~ msgid "delete my password" #~ msgstr "удалите мой парль" #~ msgid "Password Deleted" #~ msgstr "Пароль удалён" #~ msgid "Your password has been deleted." #~ msgstr "Ваш пароль был удален." django-allauth-0.35.0/allauth/locale/zh_Hant/0000755000076500000240000000000013235133532021734 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/zh_Hant/LC_MESSAGES/0000755000076500000240000000000013235133532023521 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/zh_Hant/LC_MESSAGES/django.mo0000644000076500000240000003016313235132042025316 0ustar pennersrstaff000000000000004L \ 6v -       / IG w L V "n     9 .?Np__208c9  'A a-"l=B"4 IU\ n{#A6=@t?N;#?<H 4 $2-`\P:VH*s1*F$q,- ) 1 =K[n    -G[_d.md`3b-   ;1 jm < !-! F! P!]!d! w!-!!!!!!"C"5"8#9G#### ## ## $'$ .$<$C$ V$c$)|$$$m$<@%}% %*%% %%% &&&&$&4& ;&H&&a&3&3&-&'?'0'(>(0T(-((j7) ))9)) ** >*$H*m*+f+?,@U,,<-vU----! .!,.6N..3. . . . .//&/9/ L/ V/c/j/n/// / / / / / ////0'0 +0 503?0BpjO0EQ8UL9o5x:*4C<`|MFN i$/nJ1 ZK~>yVmabz]7'}d@RPl(6D"+)u A%kHG\ S=f^T&cr2 -vg_hw;,q{?X#ItW.es!Y[3Note: you can still change your e-mail address.A user is already registered with this e-mail address.API secret, client secret, or consumer secretAccountAccount ConnectionsAccount InactiveAccountsAdd E-mailAdd E-mail AddressAdd a 3rd Party AccountAlready have an account? Then please sign in.An account already exists with this e-mail address. Please sign in to that account first, then connect your %s account.An error occurred while attempting to login via your social network account.App ID, or consumer keyAre you sure you want to sign out?Bad TokenChange PasswordConfirmConfirm E-mail AddressCurrent PasswordDo you really want to remove the selected e-mail address?E-mailE-mail (optional)E-mail AddressesE-mail addressForgot Password?Forgotten your password? Enter your e-mail address below, and we'll send you an e-mail allowing you to reset it.If you have not created an account yet, then please sign up first.In case you forgot, your username is %(username)s.Invalid response while obtaining access token from "%s".Invalid response while obtaining request token from "%s".KeyLogin CancelledMake PrimaryNew PasswordNew Password (again)No access to private resources at "%s".No access token saved for "%s".No request token saved for "%s".NoteOpenID Sign InPasswordPassword (again)Password ResetPassword Reset E-mailPassword must be a minimum of {0} characters.Password successfully changed.Password successfully set.Please confirm that %(email)s is an e-mail address for user %(user_display)s.Please contact us if you have any trouble resetting your password.Please type your current password.PrimaryPrimary e-mail address set.Re-send VerificationRemember MeRemoveReset My PasswordSet PasswordSign InSign OutSign UpSign Up ClosedSignupSocial AccountsSocial Network Login FailureSuccessfully signed in as %(name)s.The e-mail address and/or password you specified are not correct.The e-mail address is not assigned to any user accountThe following e-mail addresses are associated with your account:The password reset link was invalid, possibly because it has already been used. Please request a new password reset.The social account is already connected to a different account.The username and/or password you specified are not correct.This account is currently inactive.This account is inactive.This e-mail address is already associated with another account.This e-mail address is already associated with this account.This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request.This part of the site requires us to verify that you are who you claim to be. For this purpose, we require that you verify ownership of your e-mail address. UnverifiedUsernameUsername can not be used. Please use other username.Username or e-mailVerifiedVerify Your E-mail AddressWarning:We are sorry, but the sign up is currently closed.We have sent an e-mail to you for verification. Please click on the link inside this e-mail. Please contact us if you do not receive it within a few minutes.We have sent an e-mail to you for verification. Follow the link provided to finalize the signup process. Please contact us if you do not receive it within a few minutes.We have sent you an e-mail. Please contact us if you do not receive it within a few minutes.You can sign in to your account using any of the following third party accounts:You cannot remove your primary e-mail address (%(email)s).You currently do not have any e-mail address set up. You should really add an e-mail address so you can receive notifications, reset your password, etc.You currently have no social network accounts connected to this account.You decided to cancel logging in to our site using one of your existing accounts. If this was a mistake, please proceed to sign in.You have confirmed %(email)s.You have signed out.You must type the same password each time.Your account has no password set up.Your account has no verified e-mail address.Your password is now changed.Your primary e-mail address must be verified.change passwordclient idcreateddate joinedemail addressemail addressesemail confirmationemail confirmationsexpires atextra datafield labelLoginkeylast loginnameorprimaryprovidersecret keysentsocial accountsocial accountssocial applicationsocial application tokensocial application tokenssocial applicationsuiduserverifiedyou are already logged in as %(user_display)s.Project-Id-Version: PACKAGE VERSION Report-Msgid-Bugs-To: POT-Creation-Date: 2018-02-02 12:55-0600 PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE Last-Translator: FULL NAME Language-Team: LANGUAGE Language: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; 注意: 您仍能修改您的電子郵件地址 .已經有人使用這一個電子郵件註冊了。API secret, client secret, or consumer secret帳號帳號連結帳號未啟用帳號增加電子郵件增加電子郵件增加一個第三方帳號已有帳號了嗎?請登入.已經有一個帳號與此電子郵件連結了,請先登入該帳號,然後連接你的 %s 帳號。當嘗試用您的社群網路帳號登入時發生錯誤。App ID, or consumer key您確定要登出嗎?Bad Token修改密碼確認確認電子郵件目前密碼您真的要移除所選擇電子郵件嗎?E-mailE-mail (可不填)電子郵件地址電子郵件地址忘記密碼了?忘記您的密碼了嗎? 請在下方輸入您的電子郵件,我們會發送一封電子郵件給您,以便重新設定您的密碼。若你沒有帳號,請先 註冊 。提醒您,您的使用者名稱是 %(username)s 。Invalid response while obtaining access token from "%s".Invalid response while obtaining request token from "%s".Key登入取消了設為主要的新密碼新密碼 (再一次)無權訪問私有資源 "%s"。No access token saved for "%s".No request token saved for "%s".注意OpenID 登入密碼密碼 (再一次)密碼重設密碼重設電子郵件密碼長度至少要有 {0} 個字元。密碼修改完成。密碼設定完成。請確認%(email)s是否是使用者 %(user_display)s 的電子郵件地址。如果在重設密碼時碰到問題,請與我們聯絡。請輸入您目前的密碼主要的已設定好主要的電子郵件地址。重寄驗証信記住我移除重設我的密碼設定密碼登入登出註冊註冊未開放註冊社群帳號社群網路登入失敗成功以 %(name)s..的身份登入。您提供的電子郵件地址或密碼不正確。還沒有其他帳號使用這個電子郵件地址下列電子郵件已與你的帳號連結:密碼重設連結已失效,可能是因為該連結已經被人用過了,請重新申請重設密碼。這個社群網站帳號已經與另一個帳號連結過了。您提供的使用者名稱或密碼不正確。此帳號目前沒有啟用。這個帳號未啟用此電子郵件已經與別的帳號連結了。此電子郵件已與這個帳號連結了。電子郵件確認連結已經過期或失效了,請點擊 以要求發送新的電子郵件確認信。此網站的這部分功能需要驗證您的身份, 因此我們需要確認您的電子郵件地址。未驗證使用者名稱無法使用此使用者名稱,請使用其他名稱。使用者名稱或電子郵件已驗證驗證您的電子郵件地址警告:很抱歉,目前不開放註冊。我們剛剛寄了一封電子郵件確認信給您, 請點擊郵件中的連結。您在數分鐘內尚無法收到郵件,請與我們聯絡。我們剛剛寄了一封電子郵件確認信給您,請點擊郵件中的連結以完成註冊流程。若您在數分鐘內尚無法收到郵件,請與我們聯絡。我們已經寄了一封電子郵件給您,如果數分鐘內您沒有收到,請與我們聯絡。您可以使用下列任何第三方帳號登入您的帳號:您不能移除您的主要的電子郵件地址 (%(email)s) 。您尚未設定任何電子郵件。建議您最好設定一個電子郵件,以便您接收通知或重新設定密碼等等。您目前沒有任何社群網路帳號與此帳號連結。您決定不繼續登入這一個網站。若這是一個失誤,請由此重新登入。您以確認電子郵件地址 %(email)s 。 您已登出。每次輸入的密碼必須相同您的帳號沒有設置密碼。您的帳號下沒有驗證過的電子郵件地址。您的密碼已變更。您的主要電子郵件位址必須被驗證過。修改密碼client id以建立加入日期電子郵件地址電子郵件地址電子郵件確認電子郵件確認過期日額外資料登入key最後一次登入名稱或主要的提供者secret key已送出社群帳號社群帳號社群應用程式社群應用程式 Token社群應用程式 Token社群應用程式uid使用者已驗證您已經以 %(user_display)s 的身份登入了。django-allauth-0.35.0/allauth/locale/zh_Hant/LC_MESSAGES/django.po0000644000076500000240000006762213235132037025337 0ustar pennersrstaff00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-02-02 12:55-0600\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" #: account/adapter.py:45 msgid "Username can not be used. Please use other username." msgstr "無法使用此使用者名稱,請使用其他名稱。" #: account/adapter.py:49 msgid "Too many failed login attempts. Try again later." msgstr "" #: account/adapter.py:51 msgid "A user is already registered with this e-mail address." msgstr "已經有人使用這一個電子郵件註冊了。" #: account/adapter.py:288 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "密碼長度至少要有 {0} 個字元。" #: account/apps.py:7 msgid "Accounts" msgstr "帳號" #: account/forms.py:61 account/forms.py:398 msgid "You must type the same password each time." msgstr "每次輸入的密碼必須相同" #: account/forms.py:91 account/forms.py:365 account/forms.py:476 msgid "Password" msgstr "密碼" #: account/forms.py:92 msgid "Remember Me" msgstr "記住我" #: account/forms.py:98 msgid "This account is currently inactive." msgstr "此帳號目前沒有啟用。" #: account/forms.py:101 msgid "The e-mail address and/or password you specified are not correct." msgstr "您提供的電子郵件地址或密碼不正確。" #: account/forms.py:104 msgid "The username and/or password you specified are not correct." msgstr "您提供的使用者名稱或密碼不正確。" #: account/forms.py:113 account/forms.py:268 account/forms.py:426 #: account/forms.py:495 msgid "E-mail address" msgstr "電子郵件地址" #: account/forms.py:115 account/forms.py:301 account/forms.py:421 #: account/forms.py:490 msgid "E-mail" msgstr "E-mail" #: account/forms.py:120 account/forms.py:123 account/forms.py:260 #: account/forms.py:264 msgid "Username" msgstr "使用者名稱" #: account/forms.py:130 msgid "Username or e-mail" msgstr "使用者名稱或電子郵件" #: account/forms.py:133 msgctxt "field label" msgid "Login" msgstr "登入" #: account/forms.py:292 #, fuzzy #| msgid "E-mail (optional)" msgid "E-mail (again)" msgstr "E-mail (可不填)" #: account/forms.py:296 #, fuzzy #| msgid "email confirmation" msgid "E-mail address confirmation" msgstr "電子郵件確認" #: account/forms.py:304 msgid "E-mail (optional)" msgstr "E-mail (可不填)" #: account/forms.py:345 #, fuzzy #| msgid "You must type the same password each time." msgid "You must type the same email each time." msgstr "每次輸入的密碼必須相同" #: account/forms.py:368 account/forms.py:477 msgid "Password (again)" msgstr "密碼 (再一次)" #: account/forms.py:432 msgid "This e-mail address is already associated with this account." msgstr "此電子郵件已與這個帳號連結了。" #: account/forms.py:434 msgid "This e-mail address is already associated with another account." msgstr "此電子郵件已經與別的帳號連結了。" #: account/forms.py:456 msgid "Current Password" msgstr "目前密碼" #: account/forms.py:457 account/forms.py:546 msgid "New Password" msgstr "新密碼" #: account/forms.py:458 account/forms.py:547 msgid "New Password (again)" msgstr "新密碼 (再一次)" #: account/forms.py:466 msgid "Please type your current password." msgstr "請輸入您目前的密碼" #: account/forms.py:504 msgid "The e-mail address is not assigned to any user account" msgstr "還沒有其他帳號使用這個電子郵件地址" #: account/forms.py:568 msgid "The password reset token was invalid." msgstr "" #: account/models.py:23 msgid "user" msgstr "使用者" #: account/models.py:27 account/models.py:81 #, fuzzy msgid "e-mail address" msgstr "電子郵件地址" #: account/models.py:28 msgid "verified" msgstr "已驗證" #: account/models.py:29 msgid "primary" msgstr "主要的" #: account/models.py:34 msgid "email address" msgstr "電子郵件地址" #: account/models.py:35 msgid "email addresses" msgstr "電子郵件地址" #: account/models.py:83 msgid "created" msgstr "以建立" #: account/models.py:85 msgid "sent" msgstr "已送出" #: account/models.py:86 socialaccount/models.py:55 msgid "key" msgstr "key" #: account/models.py:91 msgid "email confirmation" msgstr "電子郵件確認" #: account/models.py:92 msgid "email confirmations" msgstr "電子郵件確認" #: socialaccount/adapter.py:26 #, python-format msgid "" "An account already exists with this e-mail address. Please sign in to that " "account first, then connect your %s account." msgstr "" "已經有一個帳號與此電子郵件連結了,請先登入該帳號,然後連接你的 %s 帳號。" #: socialaccount/adapter.py:131 msgid "Your account has no password set up." msgstr "您的帳號沒有設置密碼。" #: socialaccount/adapter.py:138 msgid "Your account has no verified e-mail address." msgstr "您的帳號下沒有驗證過的電子郵件地址。" #: socialaccount/apps.py:7 msgid "Social Accounts" msgstr "社群帳號" #: socialaccount/models.py:43 socialaccount/models.py:77 msgid "provider" msgstr "提供者" #: socialaccount/models.py:46 msgid "name" msgstr "名稱" #: socialaccount/models.py:48 msgid "client id" msgstr "client id" #: socialaccount/models.py:50 msgid "App ID, or consumer key" msgstr "App ID, or consumer key" #: socialaccount/models.py:51 msgid "secret key" msgstr "secret key" #: socialaccount/models.py:53 msgid "API secret, client secret, or consumer secret" msgstr "API secret, client secret, or consumer secret" #: socialaccount/models.py:58 msgid "Key" msgstr "Key" #: socialaccount/models.py:66 msgid "social application" msgstr "社群應用程式" #: socialaccount/models.py:67 msgid "social applications" msgstr "社群應用程式" #: socialaccount/models.py:96 msgid "uid" msgstr "uid" #: socialaccount/models.py:98 msgid "last login" msgstr "最後一次登入" #: socialaccount/models.py:100 msgid "date joined" msgstr "加入日期" #: socialaccount/models.py:102 msgid "extra data" msgstr "額外資料" #: socialaccount/models.py:106 msgid "social account" msgstr "社群帳號" #: socialaccount/models.py:107 msgid "social accounts" msgstr "社群帳號" #: socialaccount/models.py:133 msgid "token" msgstr "" #: socialaccount/models.py:135 msgid "\"oauth_token\" (OAuth1) or access token (OAuth2)" msgstr "" #: socialaccount/models.py:138 msgid "token secret" msgstr "" #: socialaccount/models.py:140 msgid "\"oauth_token_secret\" (OAuth1) or refresh token (OAuth2)" msgstr "" #: socialaccount/models.py:142 msgid "expires at" msgstr "過期日" #: socialaccount/models.py:146 msgid "social application token" msgstr "社群應用程式 Token" #: socialaccount/models.py:147 msgid "social application tokens" msgstr "社群應用程式 Token" #: socialaccount/providers/douban/views.py:36 msgid "Invalid profile data" msgstr "" #: socialaccount/providers/oauth/client.py:78 #, python-format msgid "Invalid response while obtaining request token from \"%s\"." msgstr "Invalid response while obtaining request token from \"%s\"." #: socialaccount/providers/oauth/client.py:109 #, python-format msgid "Invalid response while obtaining access token from \"%s\"." msgstr "Invalid response while obtaining access token from \"%s\"." #: socialaccount/providers/oauth/client.py:128 #, python-format msgid "No request token saved for \"%s\"." msgstr "No request token saved for \"%s\"." #: socialaccount/providers/oauth/client.py:177 #, python-format msgid "No access token saved for \"%s\"." msgstr "No access token saved for \"%s\"." #: socialaccount/providers/oauth/client.py:197 #, python-format msgid "No access to private resources at \"%s\"." msgstr "無權訪問私有資源 \"%s\"。" #: templates/account/account_inactive.html:5 #: templates/account/account_inactive.html:8 msgid "Account Inactive" msgstr "帳號未啟用" #: templates/account/account_inactive.html:10 msgid "This account is inactive." msgstr "這個帳號未啟用" #: templates/account/email.html:5 msgid "Account" msgstr "帳號" #: templates/account/email.html:8 msgid "E-mail Addresses" msgstr "電子郵件地址" #: templates/account/email.html:10 msgid "The following e-mail addresses are associated with your account:" msgstr "下列電子郵件已與你的帳號連結:" #: templates/account/email.html:24 msgid "Verified" msgstr "已驗證" #: templates/account/email.html:26 msgid "Unverified" msgstr "未驗證" #: templates/account/email.html:28 msgid "Primary" msgstr "主要的" #: templates/account/email.html:34 msgid "Make Primary" msgstr "設為主要的" #: templates/account/email.html:35 msgid "Re-send Verification" msgstr "重寄驗証信" #: templates/account/email.html:36 templates/socialaccount/connections.html:35 msgid "Remove" msgstr "移除" #: templates/account/email.html:43 msgid "Warning:" msgstr "警告:" #: templates/account/email.html:43 msgid "" "You currently do not have any e-mail address set up. You should really add " "an e-mail address so you can receive notifications, reset your password, etc." msgstr "" "您尚未設定任何電子郵件。建議您最好設定一個電子郵件,以便您接收通知或重新設定" "密碼等等。" #: templates/account/email.html:48 msgid "Add E-mail Address" msgstr "增加電子郵件" #: templates/account/email.html:53 msgid "Add E-mail" msgstr "增加電子郵件" #: templates/account/email.html:62 msgid "Do you really want to remove the selected e-mail address?" msgstr "您真的要移除所選擇電子郵件嗎?" #: templates/account/email/email_confirmation_message.txt:1 #, fuzzy, python-format #| msgid "" #| "User %(user_display)s at %(site_name)s has given this as an email " #| "address.\n" #| "\n" #| "To confirm this is correct, go to %(activate_url)s\n" msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because user %(user_display)s has given yours " "as an e-mail address to connect their account.\n" "\n" "To confirm this is correct, go to %(activate_url)s\n" msgstr "" "網站%(site_name)s上的使用者%(user_display)s將此設為他的電子郵件地址。\n" "\n" "為了確認這是正確的,請開啟這個連結: %(activate_url)s\n" #: templates/account/email/email_confirmation_message.txt:7 #, python-format msgid "" "Thank you from %(site_name)s!\n" "%(site_domain)s" msgstr "" #: templates/account/email/email_confirmation_subject.txt:3 #, fuzzy #| msgid "Confirm E-mail Address" msgid "Please Confirm Your E-mail Address" msgstr "確認電子郵件" #: templates/account/email/password_reset_key_message.txt:1 #, fuzzy, python-format #| msgid "" #| "You're receiving this e-mail because you or someone else has requested a " #| "password for your user account at %(site_domain)s.\n" #| "It can be safely ignored if you did not request a password reset. Click " #| "the link below to reset your password." msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because you or someone else has requested a " "password for your user account.\n" "It can be safely ignored if you did not request a password reset. Click the " "link below to reset your password." msgstr "" "您會收到這封信是因為您或是某人在 %(site_domain)s 這個網站上要求重設您帳號的密" "碼。\n" "若您沒有要求我們重設密碼,請您直接忽略這封信。若要重設您的密碼,請點擊下面的" "連結。" #: templates/account/email/password_reset_key_message.txt:8 #, python-format msgid "In case you forgot, your username is %(username)s." msgstr "提醒您,您的使用者名稱是 %(username)s 。" #: templates/account/email/password_reset_key_message.txt:10 #, python-format msgid "" "Thank you for using %(site_name)s!\n" "%(site_domain)s" msgstr "" #: templates/account/email/password_reset_key_subject.txt:3 msgid "Password Reset E-mail" msgstr "密碼重設電子郵件" #: templates/account/email_confirm.html:6 #: templates/account/email_confirm.html:10 msgid "Confirm E-mail Address" msgstr "確認電子郵件" #: templates/account/email_confirm.html:16 #, python-format msgid "" "Please confirm that %(email)s is an e-mail " "address for user %(user_display)s." msgstr "" "請確認%(email)s是否是使用者 " "%(user_display)s 的電子郵件地址。" #: templates/account/email_confirm.html:20 msgid "Confirm" msgstr "確認" #: templates/account/email_confirm.html:27 #, python-format msgid "" "This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request." msgstr "" "電子郵件確認連結已經過期或失效了,請點擊 以要求發" "送新的電子郵件確認信。" #: templates/account/login.html:6 templates/account/login.html:10 #: templates/account/login.html:43 msgid "Sign In" msgstr "登入" #: templates/account/login.html:15 #, fuzzy, python-format msgid "" "Please sign in with one\n" "of your existing third party accounts. Or, sign " "up\n" "for a %(site_name)s account and sign in below:" msgstr "" "請用您的第三方帳號登入。\n" "或者註冊 \n" "一個 %(site_name)s帳號後登入:" #: templates/account/login.html:25 msgid "or" msgstr "或" #: templates/account/login.html:32 #, python-format msgid "" "If you have not created an account yet, then please\n" "sign up first." msgstr "" "若你沒有帳號,請先\n" "註冊 。" #: templates/account/login.html:42 msgid "Forgot Password?" msgstr "忘記密碼了?" #: templates/account/logout.html:5 templates/account/logout.html:8 #: templates/account/logout.html:17 msgid "Sign Out" msgstr "登出" #: templates/account/logout.html:10 msgid "Are you sure you want to sign out?" msgstr "您確定要登出嗎?" #: templates/account/messages/cannot_delete_primary_email.txt:2 #, python-format msgid "You cannot remove your primary e-mail address (%(email)s)." msgstr "您不能移除您的主要的電子郵件地址 (%(email)s) 。" #: templates/account/messages/email_confirmation_sent.txt:2 #, fuzzy, python-format msgid "Confirmation e-mail sent to %(email)s." msgstr "確認信已發至 %(email)s 。" #: templates/account/messages/email_confirmed.txt:2 #, python-format msgid "You have confirmed %(email)s." msgstr "您以確認電子郵件地址 %(email)s 。 " #: templates/account/messages/email_deleted.txt:2 #, fuzzy, python-format msgid "Removed e-mail address %(email)s." msgstr "電子郵件地址 %(email)s 已刪除。" #: templates/account/messages/logged_in.txt:4 #, python-format msgid "Successfully signed in as %(name)s." msgstr "成功以 %(name)s..的身份登入。" #: templates/account/messages/logged_out.txt:2 msgid "You have signed out." msgstr "您已登出。" #: templates/account/messages/password_changed.txt:2 msgid "Password successfully changed." msgstr "密碼修改完成。" #: templates/account/messages/password_set.txt:2 msgid "Password successfully set." msgstr "密碼設定完成。" #: templates/account/messages/primary_email_set.txt:2 msgid "Primary e-mail address set." msgstr "已設定好主要的電子郵件地址。" #: templates/account/messages/unverified_primary_email.txt:2 msgid "Your primary e-mail address must be verified." msgstr "您的主要電子郵件位址必須被驗證過。" #: templates/account/password_change.html:5 #: templates/account/password_change.html:8 #: templates/account/password_change.html:13 #: templates/account/password_reset_from_key.html:4 #: templates/account/password_reset_from_key.html:7 #: templates/account/password_reset_from_key_done.html:4 #: templates/account/password_reset_from_key_done.html:7 msgid "Change Password" msgstr "修改密碼" #: templates/account/password_reset.html:6 #: templates/account/password_reset.html:10 #: templates/account/password_reset_done.html:6 #: templates/account/password_reset_done.html:9 msgid "Password Reset" msgstr "密碼重設" #: templates/account/password_reset.html:15 msgid "" "Forgotten your password? Enter your e-mail address below, and we'll send you " "an e-mail allowing you to reset it." msgstr "" "忘記您的密碼了嗎? 請在下方輸入您的電子郵件,我們會發送一封電子郵件給您,以便" "重新設定您的密碼。" #: templates/account/password_reset.html:20 msgid "Reset My Password" msgstr "重設我的密碼" #: templates/account/password_reset.html:23 msgid "Please contact us if you have any trouble resetting your password." msgstr "如果在重設密碼時碰到問題,請與我們聯絡。" #: templates/account/password_reset_done.html:15 msgid "" "We have sent you an e-mail. Please contact us if you do not receive it " "within a few minutes." msgstr "我們已經寄了一封電子郵件給您,如果數分鐘內您沒有收到,請與我們聯絡。" #: templates/account/password_reset_from_key.html:7 msgid "Bad Token" msgstr "Bad Token" #: templates/account/password_reset_from_key.html:11 #, python-format msgid "" "The password reset link was invalid, possibly because it has already been " "used. Please request a new password reset." msgstr "" "密碼重設連結已失效,可能是因為該連結已經被人用過了,請重新申請重設密碼。" #: templates/account/password_reset_from_key.html:17 msgid "change password" msgstr "修改密碼" #: templates/account/password_reset_from_key.html:20 #: templates/account/password_reset_from_key_done.html:8 msgid "Your password is now changed." msgstr "您的密碼已變更。" #: templates/account/password_set.html:5 templates/account/password_set.html:8 #: templates/account/password_set.html:13 msgid "Set Password" msgstr "設定密碼" #: templates/account/signup.html:5 templates/socialaccount/signup.html:5 msgid "Signup" msgstr "註冊" #: templates/account/signup.html:8 templates/account/signup.html:18 #: templates/socialaccount/signup.html:8 templates/socialaccount/signup.html:19 msgid "Sign Up" msgstr "註冊" #: templates/account/signup.html:10 #, python-format msgid "" "Already have an account? Then please sign in." msgstr "已有帳號了嗎?請登入." #: templates/account/signup_closed.html:5 #: templates/account/signup_closed.html:8 msgid "Sign Up Closed" msgstr "註冊未開放" #: templates/account/signup_closed.html:10 msgid "We are sorry, but the sign up is currently closed." msgstr "很抱歉,目前不開放註冊。" #: templates/account/snippets/already_logged_in.html:5 msgid "Note" msgstr "注意" #: templates/account/snippets/already_logged_in.html:5 #, python-format msgid "you are already logged in as %(user_display)s." msgstr "您已經以 %(user_display)s 的身份登入了。" #: templates/account/verification_sent.html:5 #: templates/account/verification_sent.html:8 #: templates/account/verified_email_required.html:5 #: templates/account/verified_email_required.html:8 msgid "Verify Your E-mail Address" msgstr "驗證您的電子郵件地址" #: templates/account/verification_sent.html:10 msgid "" "We have sent an e-mail to you for verification. Follow the link provided to " "finalize the signup process. Please contact us if you do not receive it " "within a few minutes." msgstr "" "我們剛剛寄了一封電子郵件確認信給您,請點擊郵件中的連結以完成註冊流程。若您在" "數分鐘內尚無法收到郵件,請與我們聯絡。" #: templates/account/verified_email_required.html:12 msgid "" "This part of the site requires us to verify that\n" "you are who you claim to be. For this purpose, we require that you\n" "verify ownership of your e-mail address. " msgstr "" "此網站的這部分功能需要驗證您的身份,\n" "因此我們需要確認您的電子郵件地址。" #: templates/account/verified_email_required.html:16 msgid "" "We have sent an e-mail to you for\n" "verification. Please click on the link inside this e-mail. Please\n" "contact us if you do not receive it within a few minutes." msgstr "" "我們剛剛寄了一封電子郵件確認信給您,\n" "請點擊郵件中的連結。您在數分鐘內尚無法收到郵件,請與我們聯絡。" #: templates/account/verified_email_required.html:20 #, python-format msgid "" "Note: you can still change your e-" "mail address." msgstr "" "注意: 您仍能修改您的電子郵件地址 " "." #: templates/openid/login.html:9 msgid "OpenID Sign In" msgstr "OpenID 登入" #: templates/socialaccount/authentication_error.html:5 #: templates/socialaccount/authentication_error.html:8 msgid "Social Network Login Failure" msgstr "社群網路登入失敗" #: templates/socialaccount/authentication_error.html:10 msgid "" "An error occurred while attempting to login via your social network account." msgstr "當嘗試用您的社群網路帳號登入時發生錯誤。" #: templates/socialaccount/connections.html:5 #: templates/socialaccount/connections.html:8 msgid "Account Connections" msgstr "帳號連結" #: templates/socialaccount/connections.html:11 msgid "" "You can sign in to your account using any of the following third party " "accounts:" msgstr "您可以使用下列任何第三方帳號登入您的帳號:" #: templates/socialaccount/connections.html:43 msgid "" "You currently have no social network accounts connected to this account." msgstr "您目前沒有任何社群網路帳號與此帳號連結。" #: templates/socialaccount/connections.html:46 msgid "Add a 3rd Party Account" msgstr "增加一個第三方帳號" #: templates/socialaccount/login_cancelled.html:5 #: templates/socialaccount/login_cancelled.html:9 msgid "Login Cancelled" msgstr "登入取消了" #: templates/socialaccount/login_cancelled.html:13 #, python-format msgid "" "You decided to cancel logging in to our site using one of your existing " "accounts. If this was a mistake, please proceed to sign in." msgstr "" "您決定不繼續登入這一個網站。若這是一個失誤,請由此" "重新登入。" #: templates/socialaccount/messages/account_connected.txt:2 #, fuzzy msgid "The social account has been connected." msgstr "社群網站帳號已連結。" #: templates/socialaccount/messages/account_connected_other.txt:2 msgid "The social account is already connected to a different account." msgstr "這個社群網站帳號已經與另一個帳號連結過了。" #: templates/socialaccount/messages/account_disconnected.txt:2 #, fuzzy msgid "The social account has been disconnected." msgstr "社群網站帳號已斷開連結。" #: templates/socialaccount/signup.html:10 #, fuzzy, python-format msgid "" "You are about to use your %(provider_name)s account to login to\n" "%(site_name)s. As a final step, please complete the following form:" msgstr "" "您將使用 %(provider_name)s 這個帳號登入\n" " %(site_name)s 這個網站。最後一步,請填完下列表單:" #~ msgid "The login and/or password you specified are not correct." #~ msgstr "您提供的帳號或密碼不正確。" #~ msgid "Usernames can only contain letters, digits and @/./+/-/_." #~ msgstr "使用者名稱只能包含字母,數字及 @/./+/-/_." #~ msgid "This username is already taken. Please choose another." #~ msgstr "這個使用者名稱已經有人用了,請換一個。" #, fuzzy #~| msgid "Sign In" #~ msgid "Shopify Sign In" #~ msgstr "登入" #~ msgid "" #~ "You have confirmed that %(email)s is an " #~ "e-mail address for user %(user_display)s." #~ msgstr "" #~ "您以確認%(email)s是使用者%(user_display)s" #~ "的電子郵件地址。" #~ msgid "Thanks for using our site!" #~ msgstr "感謝您使用我們的網站!" #~ msgid "Confirmation e-mail sent to %(email)s" #~ msgstr "确认e-mail已发往 %(email)s" #~ msgid "Delete Password" #~ msgstr "删除密码" #~ msgid "" #~ "You may delete your password since you are currently logged in using " #~ "OpenID." #~ msgstr "您当前使用OpenID登录,因此您可以删除你的密码。" #~ msgid "delete my password" #~ msgstr "删除我的密码" #~ msgid "Password Deleted" #~ msgstr "密码已删除" #~ msgid "Your password has been deleted." #~ msgstr "您的密码已被删除。" #~ msgid "Your e-mail address has already been verified" #~ msgstr "Je e-mail adres is al geverifieerd" #~ msgid "" #~ "If you have any trouble resetting your password, contact us at %(CONTACT_EMAIL)s." #~ msgstr "" #~ "Als je problemen hebt je wachtwoord opnieuw in te stellen, neem dan " #~ "contact op met %(CONTACT_EMAIL)s." #~ msgid "Invalid confirmation key." #~ msgstr "Ongeldige bevestigingssleutel." #~ msgid "OpenID" #~ msgstr "OpenID" #~ msgid "Already have an account?" #~ msgstr "Heb je al een account?" #~ msgid "Sign in" #~ msgstr "Aanmelden" #~ msgid "Language" #~ msgstr "Taal" #~ msgid "Pinax can be used in your preferred language." #~ msgstr "Deze site kan in jouw voorkeurstaal gebruikt worden." #~ msgid "Change my language" #~ msgstr "Verander mijn taal" #~ msgid "Timezone" #~ msgstr "Tijdzone" #, fuzzy #~ msgid "" #~ "You're receiving this e-mail because you requested a password reset\n" #~ "for your user account at Pinax.\n" #~ "\n" #~ "Your new password is: %(new_password)s\n" #~ "\n" #~ "Your username, in case you've forgotten: %(username)s\n" #~ "\n" #~ "You should log in as soon as possible and change your password.\n" #~ "\n" #~ "Thanks for using our site!\n" #~ msgstr "" #~ "Je ontvangt deze mail omdat er een verzoek is ingelegd om het wachtwoord\n" #~ "behorende bij je %(site_name)s account opnieuw in te stellen.\n" #~ "\n" #~ "Je nieuwe wachtwoord is: %(new_password)s\n" #~ "\n" #~ "Je gebruikersnaam, voor het geval je die vergeten bent, is: %(username)s\n" #~ "\n" #~ "Je moet zo snel mogelijk inloggen en bovenstaand wachtwoord veranderen.\n" #~ "\n" #~ "Bedankt voor het gebruik van onze site!\n" #~ msgid "If checked you will stay logged in for 3 weeks" #~ msgstr "Bij 'Onthouden' blijf je ingelogd gedurende 3 weken" #~ msgid "Timezone successfully updated." #~ msgstr "Tijdzone gewijzigd." #~ msgid "Language successfully updated." #~ msgstr "Taal gewijzigd." #~ msgid "E-Mail Addresses" #~ msgstr "E-mail adressen" #~ msgid "None" #~ msgstr "Geen" #~ msgid "add" #~ msgstr "Voeg toe" #~ msgid "Log In" #~ msgstr "Inloggen" #~ msgid "Log in" #~ msgstr "Inloggen" #~ msgid "Logout" #~ msgstr "Afmelden" #~ msgid "" #~ "When you receive the new password, you should log in and change it as soon as possible." #~ msgstr "" #~ "Zodra je het nieuwe wachtwoord ontvangen hebt moet je zo snel mogelijk inloggen en het wachtwoord wijzigen." #~ msgid "You are already logged in." #~ msgstr "Je bent al ingelogd." #~ msgid "" #~ "By clicking \"Sign Up\", you are indicating that you have read and agree " #~ "to the Terms of Use and Privacy Policy." #~ msgstr "" #~ "Door te registreren geef je aan dat je de gebruiksvoorwaarden en de privacy " #~ "policy gelezen hebt en ermee akkoord gaat." #~ msgid "" #~ "If you have any trouble creating your account, contact us at %(contact_email)s." #~ msgstr "" #~ "Als je problemen hebt om een account aan te maken, neem dan contact op " #~ "met %(contact_email)s." #~ msgid "Log in »" #~ msgstr "Inloggen" django-allauth-0.35.0/allauth/locale/zh_CN/0000755000076500000240000000000013235133532021342 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/zh_CN/LC_MESSAGES/0000755000076500000240000000000013235133532023127 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/zh_CN/LC_MESSAGES/django.mo0000644000076500000240000002631313235132043024727 0ustar pennersrstaff00000000000000v| \ 6N      I w2 L "  $ 4 < S 9d      p _Y 2 8 9%_ o |'  $5D-ZlB/"r  (/#LAp6@*%?;)#e?< 0? p{42,\tP:"]H?*$=,b-   ':N` dor{.F^#*  ? dMH  $18 K-X  lC> . 8 9 $!4! G!Q! g!! !! !!! !")"A"W"cm"9" # '#4#M# `#j#q# ####### #-#-%$-S$z$ $*%*H%s%%*%*%g%`&-& ' '6%'\' o'y' ''''Y(](3Q)1)r)9**d*#*+!%+G+3f++'+ + + + , , , ,, 9,F,M, Q,^, b, l, v, ,, ,),EP "B_\YCDs']- ,9U?+To K8/:mI@Ri(=S2Ar%jf7)da0kG`4HWbZ[e5 u cOL#<>g3Vqn1FhNvl!$J.p^M&;tQ6*XNote: you can still change your e-mail address.A user is already registered with this e-mail address.AccountAccount ConnectionsAccount InactiveAdd E-mailAdd E-mail AddressAdd a 3rd Party AccountAlready have an account? Then please sign in.An account already exists with this e-mail address. Please sign in to that account first, then connect your %s account.An error occurred while attempting to login via your social network account.Are you sure you want to sign out?Bad TokenChange PasswordConfirmConfirm E-mail AddressCurrent PasswordDo you really want to remove the selected e-mail address?E-mailE-mail (optional)E-mail AddressesE-mail addressForgot Password?Forgotten your password? Enter your e-mail address below, and we'll send you an e-mail allowing you to reset it.If you have not created an account yet, then please sign up first.In case you forgot, your username is %(username)s.Invalid response while obtaining access token from "%s".Invalid response while obtaining request token from "%s".Login CancelledMake PrimaryNew PasswordNew Password (again)No access to private resources at "%s".No access token saved for "%s".No request token saved for "%s".NoteOpenID Sign InPasswordPassword (again)Password ResetPassword Reset E-mailPassword must be a minimum of {0} characters.Password successfully changed.Password successfully set.Please confirm that %(email)s is an e-mail address for user %(user_display)s.Please contact us if you have any trouble resetting your password.Please type your current password.PrimaryPrimary e-mail address set.Re-send VerificationRemember MeRemoveReset My PasswordSet PasswordSign InSign OutSign UpSign Up ClosedSignupSocial Network Login FailureSuccessfully signed in as %(name)s.The e-mail address and/or password you specified are not correct.The e-mail address is not assigned to any user accountThe following e-mail addresses are associated with your account:The password reset link was invalid, possibly because it has already been used. Please request a new password reset.The password reset token was invalid.The social account is already connected to a different account.The username and/or password you specified are not correct.This account is currently inactive.This account is inactive.This e-mail address is already associated with another account.This e-mail address is already associated with this account.This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request.This part of the site requires us to verify that you are who you claim to be. For this purpose, we require that you verify ownership of your e-mail address. Too many failed login attempts. Try again later.UnverifiedUsernameUsername can not be used. Please use other username.Username or e-mailVerifiedVerify Your E-mail AddressWarning:We are sorry, but the sign up is currently closed.We have sent an e-mail to you for verification. Please click on the link inside this e-mail. Please contact us if you do not receive it within a few minutes.We have sent an e-mail to you for verification. Follow the link provided to finalize the signup process. Please contact us if you do not receive it within a few minutes.We have sent you an e-mail. Please contact us if you do not receive it within a few minutes.You can sign in to your account using any of the following third party accounts:You cannot remove your primary e-mail address (%(email)s).You currently do not have any e-mail address set up. You should really add an e-mail address so you can receive notifications, reset your password, etc.You currently have no social network accounts connected to this account.You decided to cancel logging in to our site using one of your existing accounts. If this was a mistake, please proceed to sign in.You have confirmed %(email)s.You have signed out.You must type the same password each time.Your account has no password set up.Your account has no verified e-mail address.Your password is now changed.Your primary e-mail address must be verified.change passwordclient idcreateddate joinedemail addressemail addressesemail confirmationemail confirmationsfield labelLoginkeylast loginorprovidersentsocial accountsocial accountsuserverifiedyou are already logged in as %(user_display)s.Project-Id-Version: django-allauth Report-Msgid-Bugs-To: POT-Creation-Date: 2018-02-02 12:55-0600 PO-Revision-Date: 2014-08-12 00:36+0200 Last-Translator: jresins Language-Team: LANGUAGE Language: zh_CN MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 注意: 您仍然能够修改您的e-mail地址 .此e-mail地址已被其他用户注册。账号账号链接账号未激活添加E-mail添加E-mail地址添加一个第三方账号已经有一个账号? 请登录.已有一个账号与此e-mail地址关联,请先登录该账号,然后连接你的 %s 账号。当尝试用您的社交网络账号登录时,发生了一个错误。您确定要注销登录吗?Bad Token修改密码确认确认E-mail地址当前密码您真的想移除选定的e-mail地址吗?E-mailE-mail (选填项)E-mail地址E-mail地址忘记密码了?忘记密码?在下面输入您的e-mail地址,我们将给您发送一封e-mail,以便重置密码。如果没有账号,请先 注册 。作为提示,您的用户名是%(username)s.Invalid response while obtaining access token from "%s".Invalid response while obtaining request token from "%s".登录已取消设置首选e-mail新密码新密码(重复)无权访问私有资源 "%s"。No access token saved for "%s".No request token saved for "%s".注意OpenID登录密码密码(重复)密码重置密码重置邮件密码长度不得少于 {0} 个字符。密码修改成功。密码设置成功。请确认%(email)s是否是用户 %(user_display)s的e-mail地址。如在重置密码时遇到问题,请与我们联系。请输入您的当前密码首选e-mail主e-mail地址已设置重发验证e-mail记住我移除重置我的密码设置密码登录注销注册已关闭注册注册社交网络登录失败以 %(name)s..身份成功登录您提供的e-mail地址或密码不正确。此e-mail地址未分配给任何用户账号以下e-mail地址已关联到您的帐号:密码重置链接无效,可能该链接已被使用。请重新申请链接重置。重设密码的token不合法。社交账号已连接到另一个账号。您提供的用户名或密码不正确。此账号当前未激活。此账号未激活此e-mail地址已关联到其他账号。此e-mail地址已关联到这个账号。e-mail验证链接失效或无效。请点击 发起新的e-mail验证请求。网站的这部分功能要求验证您的真实身份。 为此,我们需要您确认您是此账号e-mail地址的所有者。登录失败次数过多,请稍后重试。未验证用户名此用户名不能使用,请改用其他用户名。用户名或e-mail已验证验证您的E-mail地址。警告:非常抱歉,当前已关闭注册。我们已经给您发送了一封e-mail验证邮件。 请点击e-mail中的链接。若您在几分钟后仍未收到邮件,请联系我们。我们已向您发了一封验证e-mail。点击e-mail中的链接完成注册流程。如果您在几分钟后仍未收到邮件,请与我们联系。我们已给您发了一封e-mail,如您在几分钟后仍没收到,请与我们联系。您可以用您的以下任何第三方账号登录您不能删除您的主e-mail地址 (%(email)s) 您当前未设置任何邮件地址。您需要设置一个邮件地址,以便接收通知,重置密码等。您当前没有任何社交网络账号与此账号关联您决定取消使用您的已有账号登录我们的网站。如果这是一个失误,请继续登录.您已确认e-mail地址 %(email)s 您已注销登录。每次输入的密码必须相同您的账号未设置密码。您的账号下无任何验证过的e-mail地址。您的密码现已被修改。您的主e-mail地址必须被验证。修改密码客户端 id已建立注册日期e-mail地址e-mail地址e-mail确认e-mail确认账号key最后登录或提供商已发送社交账号社交账号用户已验证您已以 %(user_display)s的身份登录django-allauth-0.35.0/allauth/locale/zh_CN/LC_MESSAGES/django.po0000644000076500000240000006651213235132037024742 0ustar pennersrstaff00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: django-allauth\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-02-02 12:55-0600\n" "PO-Revision-Date: 2014-08-12 00:36+0200\n" "Last-Translator: jresins \n" "Language-Team: LANGUAGE \n" "Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: account/adapter.py:45 msgid "Username can not be used. Please use other username." msgstr "此用户名不能使用,请改用其他用户名。" #: account/adapter.py:49 msgid "Too many failed login attempts. Try again later." msgstr "登录失败次数过多,请稍后重试。" #: account/adapter.py:51 msgid "A user is already registered with this e-mail address." msgstr "此e-mail地址已被其他用户注册。" #: account/adapter.py:288 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "密码长度不得少于 {0} 个字符。" #: account/apps.py:7 #, fuzzy msgid "Accounts" msgstr "账号" #: account/forms.py:61 account/forms.py:398 msgid "You must type the same password each time." msgstr "每次输入的密码必须相同" #: account/forms.py:91 account/forms.py:365 account/forms.py:476 msgid "Password" msgstr "密码" #: account/forms.py:92 msgid "Remember Me" msgstr "记住我" #: account/forms.py:98 msgid "This account is currently inactive." msgstr "此账号当前未激活。" #: account/forms.py:101 msgid "The e-mail address and/or password you specified are not correct." msgstr "您提供的e-mail地址或密码不正确。" #: account/forms.py:104 msgid "The username and/or password you specified are not correct." msgstr "您提供的用户名或密码不正确。" #: account/forms.py:113 account/forms.py:268 account/forms.py:426 #: account/forms.py:495 msgid "E-mail address" msgstr "E-mail地址" #: account/forms.py:115 account/forms.py:301 account/forms.py:421 #: account/forms.py:490 msgid "E-mail" msgstr "E-mail" #: account/forms.py:120 account/forms.py:123 account/forms.py:260 #: account/forms.py:264 msgid "Username" msgstr "用户名" #: account/forms.py:130 msgid "Username or e-mail" msgstr "用户名或e-mail" #: account/forms.py:133 msgctxt "field label" msgid "Login" msgstr "账号" #: account/forms.py:292 #, fuzzy #| msgid "E-mail (optional)" msgid "E-mail (again)" msgstr "E-mail (选填项)" #: account/forms.py:296 #, fuzzy #| msgid "email confirmation" msgid "E-mail address confirmation" msgstr "e-mail确认" #: account/forms.py:304 msgid "E-mail (optional)" msgstr "E-mail (选填项)" #: account/forms.py:345 #, fuzzy #| msgid "You must type the same password each time." msgid "You must type the same email each time." msgstr "每次输入的密码必须相同" #: account/forms.py:368 account/forms.py:477 msgid "Password (again)" msgstr "密码(重复)" #: account/forms.py:432 msgid "This e-mail address is already associated with this account." msgstr "此e-mail地址已关联到这个账号。" #: account/forms.py:434 msgid "This e-mail address is already associated with another account." msgstr "此e-mail地址已关联到其他账号。" #: account/forms.py:456 msgid "Current Password" msgstr "当前密码" #: account/forms.py:457 account/forms.py:546 msgid "New Password" msgstr "新密码" #: account/forms.py:458 account/forms.py:547 msgid "New Password (again)" msgstr "新密码(重复)" #: account/forms.py:466 msgid "Please type your current password." msgstr "请输入您的当前密码" #: account/forms.py:504 msgid "The e-mail address is not assigned to any user account" msgstr "此e-mail地址未分配给任何用户账号" #: account/forms.py:568 msgid "The password reset token was invalid." msgstr "重设密码的token不合法。" #: account/models.py:23 msgid "user" msgstr "用户" #: account/models.py:27 account/models.py:81 #, fuzzy msgid "e-mail address" msgstr "e-mail地址" #: account/models.py:28 msgid "verified" msgstr "已验证" #: account/models.py:29 #, fuzzy msgid "primary" msgstr "首选e-mail" #: account/models.py:34 msgid "email address" msgstr "e-mail地址" #: account/models.py:35 msgid "email addresses" msgstr "e-mail地址" #: account/models.py:83 msgid "created" msgstr "已建立" #: account/models.py:85 msgid "sent" msgstr "已发送" #: account/models.py:86 socialaccount/models.py:55 msgid "key" msgstr "key" #: account/models.py:91 msgid "email confirmation" msgstr "e-mail确认" #: account/models.py:92 msgid "email confirmations" msgstr "e-mail确认" #: socialaccount/adapter.py:26 #, python-format msgid "" "An account already exists with this e-mail address. Please sign in to that " "account first, then connect your %s account." msgstr "已有一个账号与此e-mail地址关联,请先登录该账号,然后连接你的 %s 账号。" #: socialaccount/adapter.py:131 msgid "Your account has no password set up." msgstr "您的账号未设置密码。" #: socialaccount/adapter.py:138 msgid "Your account has no verified e-mail address." msgstr "您的账号下无任何验证过的e-mail地址。" #: socialaccount/apps.py:7 #, fuzzy msgid "Social Accounts" msgstr "账号" #: socialaccount/models.py:43 socialaccount/models.py:77 msgid "provider" msgstr "提供商" #: socialaccount/models.py:46 #, fuzzy msgid "name" msgstr "用户名" #: socialaccount/models.py:48 msgid "client id" msgstr "客户端 id" #: socialaccount/models.py:50 msgid "App ID, or consumer key" msgstr "" #: socialaccount/models.py:51 msgid "secret key" msgstr "" #: socialaccount/models.py:53 msgid "API secret, client secret, or consumer secret" msgstr "" #: socialaccount/models.py:58 #, fuzzy msgid "Key" msgstr "key" #: socialaccount/models.py:66 msgid "social application" msgstr "" #: socialaccount/models.py:67 msgid "social applications" msgstr "" #: socialaccount/models.py:96 msgid "uid" msgstr "" #: socialaccount/models.py:98 msgid "last login" msgstr "最后登录" #: socialaccount/models.py:100 msgid "date joined" msgstr "注册日期" #: socialaccount/models.py:102 msgid "extra data" msgstr "" #: socialaccount/models.py:106 msgid "social account" msgstr "社交账号" #: socialaccount/models.py:107 msgid "social accounts" msgstr "社交账号" #: socialaccount/models.py:133 msgid "token" msgstr "" #: socialaccount/models.py:135 msgid "\"oauth_token\" (OAuth1) or access token (OAuth2)" msgstr "" #: socialaccount/models.py:138 msgid "token secret" msgstr "" #: socialaccount/models.py:140 msgid "\"oauth_token_secret\" (OAuth1) or refresh token (OAuth2)" msgstr "" #: socialaccount/models.py:142 msgid "expires at" msgstr "" #: socialaccount/models.py:146 msgid "social application token" msgstr "" #: socialaccount/models.py:147 msgid "social application tokens" msgstr "" #: socialaccount/providers/douban/views.py:36 msgid "Invalid profile data" msgstr "" #: socialaccount/providers/oauth/client.py:78 #, python-format msgid "Invalid response while obtaining request token from \"%s\"." msgstr "Invalid response while obtaining request token from \"%s\"." #: socialaccount/providers/oauth/client.py:109 #, python-format msgid "Invalid response while obtaining access token from \"%s\"." msgstr "Invalid response while obtaining access token from \"%s\"." #: socialaccount/providers/oauth/client.py:128 #, python-format msgid "No request token saved for \"%s\"." msgstr "No request token saved for \"%s\"." #: socialaccount/providers/oauth/client.py:177 #, python-format msgid "No access token saved for \"%s\"." msgstr "No access token saved for \"%s\"." #: socialaccount/providers/oauth/client.py:197 #, python-format msgid "No access to private resources at \"%s\"." msgstr "无权访问私有资源 \"%s\"。" #: templates/account/account_inactive.html:5 #: templates/account/account_inactive.html:8 msgid "Account Inactive" msgstr "账号未激活" #: templates/account/account_inactive.html:10 msgid "This account is inactive." msgstr "此账号未激活" #: templates/account/email.html:5 msgid "Account" msgstr "账号" #: templates/account/email.html:8 msgid "E-mail Addresses" msgstr "E-mail地址" #: templates/account/email.html:10 msgid "The following e-mail addresses are associated with your account:" msgstr "以下e-mail地址已关联到您的帐号:" #: templates/account/email.html:24 msgid "Verified" msgstr "已验证" #: templates/account/email.html:26 msgid "Unverified" msgstr "未验证" #: templates/account/email.html:28 msgid "Primary" msgstr "首选e-mail" #: templates/account/email.html:34 msgid "Make Primary" msgstr "设置首选e-mail" #: templates/account/email.html:35 msgid "Re-send Verification" msgstr "重发验证e-mail" #: templates/account/email.html:36 templates/socialaccount/connections.html:35 msgid "Remove" msgstr "移除" #: templates/account/email.html:43 msgid "Warning:" msgstr "警告:" #: templates/account/email.html:43 msgid "" "You currently do not have any e-mail address set up. You should really add " "an e-mail address so you can receive notifications, reset your password, etc." msgstr "" "您当前未设置任何邮件地址。您需要设置一个邮件地址,以便接收通知,重置密码等。" #: templates/account/email.html:48 msgid "Add E-mail Address" msgstr "添加E-mail地址" #: templates/account/email.html:53 msgid "Add E-mail" msgstr "添加E-mail" #: templates/account/email.html:62 msgid "Do you really want to remove the selected e-mail address?" msgstr "您真的想移除选定的e-mail地址吗?" #: templates/account/email/email_confirmation_message.txt:1 #, fuzzy, python-format #| msgid "" #| "User %(user_display)s at %(site_name)s has given this as an email " #| "address.\n" #| "\n" #| "To confirm this is correct, go to %(activate_url)s\n" msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because user %(user_display)s has given yours " "as an e-mail address to connect their account.\n" "\n" "To confirm this is correct, go to %(activate_url)s\n" msgstr "" "网站%(site_name)s上的用户%(user_display)s将此设为其e-mail地址。\n" "\n" "为验证这是正确的,请访问%(activate_url)s\n" #: templates/account/email/email_confirmation_message.txt:7 #, python-format msgid "" "Thank you from %(site_name)s!\n" "%(site_domain)s" msgstr "" #: templates/account/email/email_confirmation_subject.txt:3 #, fuzzy #| msgid "Confirm E-mail Address" msgid "Please Confirm Your E-mail Address" msgstr "确认E-mail地址" #: templates/account/email/password_reset_key_message.txt:1 #, fuzzy, python-format #| msgid "" #| "You're receiving this e-mail because you or someone else has requested a " #| "password for your user account at %(site_domain)s.\n" #| "It can be safely ignored if you did not request a password reset. Click " #| "the link below to reset your password." msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because you or someone else has requested a " "password for your user account.\n" "It can be safely ignored if you did not request a password reset. Click the " "link below to reset your password." msgstr "" "您收到此邮件表示您或者他人在网站 %(site_domain)s上为您的账号请求了密码重" "置。\n" "若您未请求密码重置,可以直接忽略此邮件。如要重置密码,请点击下面的链接。" #: templates/account/email/password_reset_key_message.txt:8 #, python-format msgid "In case you forgot, your username is %(username)s." msgstr "作为提示,您的用户名是%(username)s." #: templates/account/email/password_reset_key_message.txt:10 #, python-format msgid "" "Thank you for using %(site_name)s!\n" "%(site_domain)s" msgstr "" #: templates/account/email/password_reset_key_subject.txt:3 msgid "Password Reset E-mail" msgstr "密码重置邮件" #: templates/account/email_confirm.html:6 #: templates/account/email_confirm.html:10 msgid "Confirm E-mail Address" msgstr "确认E-mail地址" #: templates/account/email_confirm.html:16 #, python-format msgid "" "Please confirm that %(email)s is an e-mail " "address for user %(user_display)s." msgstr "" "请确认%(email)s是否是用户 %(user_display)s的" "e-mail地址。" #: templates/account/email_confirm.html:20 msgid "Confirm" msgstr "确认" #: templates/account/email_confirm.html:27 #, python-format msgid "" "This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request." msgstr "" "e-mail验证链接失效或无效。请点击 发起新的e-mail验证" "请求。" #: templates/account/login.html:6 templates/account/login.html:10 #: templates/account/login.html:43 msgid "Sign In" msgstr "登录" #: templates/account/login.html:15 #, fuzzy, python-format msgid "" "Please sign in with one\n" "of your existing third party accounts. Or, sign " "up\n" "for a %(site_name)s account and sign in below:" msgstr "" "请用您的第三方账号登录。\n" "或者注册 \n" "一个 %(site_name)s账号并登录:" #: templates/account/login.html:25 msgid "or" msgstr "或" #: templates/account/login.html:32 #, python-format msgid "" "If you have not created an account yet, then please\n" "sign up first." msgstr "" "如果没有账号,请先\n" "注册 。" #: templates/account/login.html:42 msgid "Forgot Password?" msgstr "忘记密码了?" #: templates/account/logout.html:5 templates/account/logout.html:8 #: templates/account/logout.html:17 msgid "Sign Out" msgstr "注销" #: templates/account/logout.html:10 msgid "Are you sure you want to sign out?" msgstr "您确定要注销登录吗?" #: templates/account/messages/cannot_delete_primary_email.txt:2 #, python-format msgid "You cannot remove your primary e-mail address (%(email)s)." msgstr "您不能删除您的主e-mail地址 (%(email)s) " #: templates/account/messages/email_confirmation_sent.txt:2 #, fuzzy, python-format msgid "Confirmation e-mail sent to %(email)s." msgstr "确认e-mail已发往 %(email)s" #: templates/account/messages/email_confirmed.txt:2 #, python-format msgid "You have confirmed %(email)s." msgstr "您已确认e-mail地址 %(email)s " #: templates/account/messages/email_deleted.txt:2 #, fuzzy, python-format msgid "Removed e-mail address %(email)s." msgstr "e-mail地址 %(email)s 已删除" #: templates/account/messages/logged_in.txt:4 #, python-format msgid "Successfully signed in as %(name)s." msgstr "以 %(name)s..身份成功登录" #: templates/account/messages/logged_out.txt:2 msgid "You have signed out." msgstr "您已注销登录。" #: templates/account/messages/password_changed.txt:2 msgid "Password successfully changed." msgstr "密码修改成功。" #: templates/account/messages/password_set.txt:2 msgid "Password successfully set." msgstr "密码设置成功。" #: templates/account/messages/primary_email_set.txt:2 msgid "Primary e-mail address set." msgstr "主e-mail地址已设置" #: templates/account/messages/unverified_primary_email.txt:2 msgid "Your primary e-mail address must be verified." msgstr "您的主e-mail地址必须被验证。" #: templates/account/password_change.html:5 #: templates/account/password_change.html:8 #: templates/account/password_change.html:13 #: templates/account/password_reset_from_key.html:4 #: templates/account/password_reset_from_key.html:7 #: templates/account/password_reset_from_key_done.html:4 #: templates/account/password_reset_from_key_done.html:7 msgid "Change Password" msgstr "修改密码" #: templates/account/password_reset.html:6 #: templates/account/password_reset.html:10 #: templates/account/password_reset_done.html:6 #: templates/account/password_reset_done.html:9 msgid "Password Reset" msgstr "密码重置" #: templates/account/password_reset.html:15 msgid "" "Forgotten your password? Enter your e-mail address below, and we'll send you " "an e-mail allowing you to reset it." msgstr "" "忘记密码?在下面输入您的e-mail地址,我们将给您发送一封e-mail,以便重置密码。" #: templates/account/password_reset.html:20 msgid "Reset My Password" msgstr "重置我的密码" #: templates/account/password_reset.html:23 msgid "Please contact us if you have any trouble resetting your password." msgstr "如在重置密码时遇到问题,请与我们联系。" #: templates/account/password_reset_done.html:15 msgid "" "We have sent you an e-mail. Please contact us if you do not receive it " "within a few minutes." msgstr "我们已给您发了一封e-mail,如您在几分钟后仍没收到,请与我们联系。" #: templates/account/password_reset_from_key.html:7 msgid "Bad Token" msgstr "Bad Token" #: templates/account/password_reset_from_key.html:11 #, python-format msgid "" "The password reset link was invalid, possibly because it has already been " "used. Please request a new password reset." msgstr "" "密码重置链接无效,可能该链接已被使用。请重新申请链接重置。" #: templates/account/password_reset_from_key.html:17 msgid "change password" msgstr "修改密码" #: templates/account/password_reset_from_key.html:20 #: templates/account/password_reset_from_key_done.html:8 msgid "Your password is now changed." msgstr "您的密码现已被修改。" #: templates/account/password_set.html:5 templates/account/password_set.html:8 #: templates/account/password_set.html:13 msgid "Set Password" msgstr "设置密码" #: templates/account/signup.html:5 templates/socialaccount/signup.html:5 msgid "Signup" msgstr "注册" #: templates/account/signup.html:8 templates/account/signup.html:18 #: templates/socialaccount/signup.html:8 templates/socialaccount/signup.html:19 msgid "Sign Up" msgstr "注册" #: templates/account/signup.html:10 #, python-format msgid "" "Already have an account? Then please sign in." msgstr "已经有一个账号? 请登录." #: templates/account/signup_closed.html:5 #: templates/account/signup_closed.html:8 msgid "Sign Up Closed" msgstr "已关闭注册" #: templates/account/signup_closed.html:10 msgid "We are sorry, but the sign up is currently closed." msgstr "非常抱歉,当前已关闭注册。" #: templates/account/snippets/already_logged_in.html:5 msgid "Note" msgstr "注意" #: templates/account/snippets/already_logged_in.html:5 #, python-format msgid "you are already logged in as %(user_display)s." msgstr "您已以 %(user_display)s的身份登录" #: templates/account/verification_sent.html:5 #: templates/account/verification_sent.html:8 #: templates/account/verified_email_required.html:5 #: templates/account/verified_email_required.html:8 msgid "Verify Your E-mail Address" msgstr "验证您的E-mail地址。" #: templates/account/verification_sent.html:10 msgid "" "We have sent an e-mail to you for verification. Follow the link provided to " "finalize the signup process. Please contact us if you do not receive it " "within a few minutes." msgstr "" "我们已向您发了一封验证e-mail。点击e-mail中的链接完成注册流程。如果您在几分钟" "后仍未收到邮件,请与我们联系。" #: templates/account/verified_email_required.html:12 msgid "" "This part of the site requires us to verify that\n" "you are who you claim to be. For this purpose, we require that you\n" "verify ownership of your e-mail address. " msgstr "" "网站的这部分功能要求验证您的真实身份。\n" "为此,我们需要您确认您是此账号e-mail地址的所有者。" #: templates/account/verified_email_required.html:16 msgid "" "We have sent an e-mail to you for\n" "verification. Please click on the link inside this e-mail. Please\n" "contact us if you do not receive it within a few minutes." msgstr "" "我们已经给您发送了一封e-mail验证邮件。\n" "请点击e-mail中的链接。若您在几分钟后仍未收到邮件,请联系我们。" #: templates/account/verified_email_required.html:20 #, python-format msgid "" "Note: you can still change your e-" "mail address." msgstr "" "注意: 您仍然能够修改您的e-mail地" "址 ." #: templates/openid/login.html:9 msgid "OpenID Sign In" msgstr "OpenID登录" #: templates/socialaccount/authentication_error.html:5 #: templates/socialaccount/authentication_error.html:8 msgid "Social Network Login Failure" msgstr "社交网络登录失败" #: templates/socialaccount/authentication_error.html:10 msgid "" "An error occurred while attempting to login via your social network account." msgstr "当尝试用您的社交网络账号登录时,发生了一个错误。" #: templates/socialaccount/connections.html:5 #: templates/socialaccount/connections.html:8 msgid "Account Connections" msgstr "账号链接" #: templates/socialaccount/connections.html:11 msgid "" "You can sign in to your account using any of the following third party " "accounts:" msgstr "您可以用您的以下任何第三方账号登录" #: templates/socialaccount/connections.html:43 msgid "" "You currently have no social network accounts connected to this account." msgstr "您当前没有任何社交网络账号与此账号关联" #: templates/socialaccount/connections.html:46 msgid "Add a 3rd Party Account" msgstr "添加一个第三方账号" #: templates/socialaccount/login_cancelled.html:5 #: templates/socialaccount/login_cancelled.html:9 msgid "Login Cancelled" msgstr "登录已取消" #: templates/socialaccount/login_cancelled.html:13 #, python-format msgid "" "You decided to cancel logging in to our site using one of your existing " "accounts. If this was a mistake, please proceed to sign in." msgstr "" "您决定取消使用您的已有账号登录我们的网站。如果这是一个失误,请继续登录." #: templates/socialaccount/messages/account_connected.txt:2 #, fuzzy msgid "The social account has been connected." msgstr "社交账号已连接" #: templates/socialaccount/messages/account_connected_other.txt:2 msgid "The social account is already connected to a different account." msgstr "社交账号已连接到另一个账号。" #: templates/socialaccount/messages/account_disconnected.txt:2 #, fuzzy msgid "The social account has been disconnected." msgstr "社交账号已断开连接" #: templates/socialaccount/signup.html:10 #, fuzzy, python-format msgid "" "You are about to use your %(provider_name)s account to login to\n" "%(site_name)s. As a final step, please complete the following form:" msgstr "" "您将使用您的%(provider_name)s账号登录\n" "%(site_name)s。作为最后一步,请完成以下表单:" #~ msgid "The login and/or password you specified are not correct." #~ msgstr "您提供的账号或密码错误" #~ msgid "Usernames can only contain letters, digits and @/./+/-/_." #~ msgstr "用户名只能包含字母,数字和@/./+/-/_." #~ msgid "This username is already taken. Please choose another." #~ msgstr "此用户名已被使用,请选择其他用户名。" #, fuzzy #~| msgid "Sign In" #~ msgid "Shopify Sign In" #~ msgstr "登录" #~ msgid "" #~ "You have confirmed that %(email)s is an " #~ "e-mail address for user %(user_display)s." #~ msgstr "" #~ "您已确认%(email)s是用户%(user_display)s的" #~ "e-mail地址。" #~ msgid "Thanks for using our site!" #~ msgstr "感谢您使用我们的网站!" #~ msgid "Confirmation e-mail sent to %(email)s" #~ msgstr "确认e-mail已发往 %(email)s" #~ msgid "Delete Password" #~ msgstr "删除密码" #~ msgid "" #~ "You may delete your password since you are currently logged in using " #~ "OpenID." #~ msgstr "您当前使用OpenID登录,因此您可以删除你的密码。" #~ msgid "delete my password" #~ msgstr "删除我的密码" #~ msgid "Password Deleted" #~ msgstr "密码已删除" #~ msgid "Your password has been deleted." #~ msgstr "您的密码已被删除。" #~ msgid "Your e-mail address has already been verified" #~ msgstr "您的e-mail地址已经认证。" #~ msgid "" #~ "If you have any trouble resetting your password, contact us at %(CONTACT_EMAIL)s." #~ msgstr "" #~ "如果您在重置密码中遇到任何问题,请联系我们%(CONTACT_EMAIL)s." #~ msgid "Invalid confirmation key." #~ msgstr "不合法的确认密匙" #~ msgid "OpenID" #~ msgstr "OpenID" #~ msgid "Already have an account?" #~ msgstr "已经有账户了?" #~ msgid "Sign in" #~ msgstr "注册" #~ msgid "Language" #~ msgstr "语言" #~ msgid "Pinax can be used in your preferred language." #~ msgstr "Pinax可以在您的首选语言中使用。" #~ msgid "Change my language" #~ msgstr "切换我的语言" #~ msgid "Timezone" #~ msgstr "时区" #, fuzzy #~ msgid "" #~ "You're receiving this e-mail because you requested a password reset\n" #~ "for your user account at Pinax.\n" #~ "\n" #~ "Your new password is: %(new_password)s\n" #~ "\n" #~ "Your username, in case you've forgotten: %(username)s\n" #~ "\n" #~ "You should log in as soon as possible and change your password.\n" #~ "\n" #~ "Thanks for using our site!\n" #~ msgstr "" #~ "Je ontvangt deze mail omdat er een verzoek is ingelegd om het wachtwoord\n" #~ "behorende bij je %(site_name)s account opnieuw in te stellen.\n" #~ "\n" #~ "Je nieuwe wachtwoord is: %(new_password)s\n" #~ "\n" #~ "Je gebruikersnaam, voor het geval je die vergeten bent, is: %(username)s\n" #~ "\n" #~ "Je moet zo snel mogelijk inloggen en bovenstaand wachtwoord veranderen.\n" #~ "\n" #~ "Bedankt voor het gebruik van onze site!\n" #~ msgid "If checked you will stay logged in for 3 weeks" #~ msgstr "Bij 'Onthouden' blijf je ingelogd gedurende 3 weken" #~ msgid "Timezone successfully updated." #~ msgstr "Tijdzone gewijzigd." #~ msgid "Language successfully updated." #~ msgstr "Taal gewijzigd." #~ msgid "E-Mail Addresses" #~ msgstr "E-mail adressen" #~ msgid "None" #~ msgstr "Geen" #~ msgid "add" #~ msgstr "Voeg toe" #~ msgid "Log In" #~ msgstr "Inloggen" #~ msgid "Log in" #~ msgstr "Inloggen" #~ msgid "Logout" #~ msgstr "Afmelden" #~ msgid "" #~ "When you receive the new password, you should log in and change it as soon as possible." #~ msgstr "" #~ "Zodra je het nieuwe wachtwoord ontvangen hebt moet je zo snel mogelijk inloggen en het wachtwoord wijzigen." #~ msgid "You are already logged in." #~ msgstr "Je bent al ingelogd." #~ msgid "" #~ "By clicking \"Sign Up\", you are indicating that you have read and agree " #~ "to the Terms of Use and Privacy Policy." #~ msgstr "" #~ "Door te registreren geef je aan dat je de gebruiksvoorwaarden en de privacy " #~ "policy gelezen hebt en ermee akkoord gaat." #~ msgid "" #~ "If you have any trouble creating your account, contact us at %(contact_email)s." #~ msgstr "" #~ "Als je problemen hebt om een account aan te maken, neem dan contact op " #~ "met %(contact_email)s." #~ msgid "Log in »" #~ msgstr "Inloggen" django-allauth-0.35.0/allauth/locale/uk/0000755000076500000240000000000013235133532020760 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/uk/LC_MESSAGES/0000755000076500000240000000000013235133532022545 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/uk/LC_MESSAGES/django.mo0000644000076500000240000004601513235132043024346 0ustar pennersrstaff00000000000000 / 7 \A 6 -  0 9DWIowL1~" &9*dkzp_J289+ei y ' %.?N-d"lB\"6Ya} ! %#B2f-A6 @@%&@)g?;# 1?K<I0 #4,at}2r\yP:NH"k ) '> *f $ ,  -!/! ?!I! Q!]! l!z!!! ! !!! !!!!! " "" "0"C"\"v"" """".""3$;$%]%% }& &!&&& &,'g>''m(P(6D){)))*)D)8*OV***$***.+>+Y+,e,&,k#-[---.0.%H.^n.@.F/U/f/ v///1/O/+@0+l0H0012I 3W32h39333"4&(4O4 k4 x44#44!4V5,^5S5;5V6Fr6V607GA8A8B8`9ao909,:a/:W::];gL<<<<,==3=>E!>dg>[?(ABwB[cC CDkE+nFF`F[GHjGUG# H]-HH)HHHII(I!3" #b %F,V^1m"oauth_token" (OAuth1) or access token (OAuth2)"oauth_token_secret" (OAuth1) or refresh token (OAuth2)Note: you can still change your e-mail address.A user is already registered with this e-mail address.API secret, client secret, or consumer secretAccountAccount ConnectionsAccount InactiveAccountsAdd E-mailAdd E-mail AddressAdd a 3rd Party AccountAlready have an account? Then please sign in.An account already exists with this e-mail address. Please sign in to that account first, then connect your %s account.An error occurred while attempting to login via your social network account.App ID, or consumer keyAre you sure you want to sign out?Bad TokenChange PasswordConfirmConfirm E-mail AddressConfirmation e-mail sent to %(email)s.Current PasswordDo you really want to remove the selected e-mail address?E-mailE-mail (again)E-mail (optional)E-mail AddressesE-mail addressE-mail address confirmationForgot Password?Forgotten your password? Enter your e-mail address below, and we'll send you an e-mail allowing you to reset it.If you have not created an account yet, then please sign up first.In case you forgot, your username is %(username)s.Invalid profile dataInvalid response while obtaining access token from "%s".Invalid response while obtaining request token from "%s".KeyLogin CancelledMake PrimaryNew PasswordNew Password (again)No access to private resources at "%s".No access token saved for "%s".No request token saved for "%s".NoteOpenID Sign InPasswordPassword (again)Password ResetPassword Reset E-mailPassword must be a minimum of {0} characters.Password successfully changed.Password successfully set.Please Confirm Your E-mail AddressPlease confirm that %(email)s is an e-mail address for user %(user_display)s.Please contact us if you have any trouble resetting your password.Please sign in with one of your existing third party accounts. Or, sign up for a %(site_name)s account and sign in below:Please type your current password.PrimaryPrimary e-mail address set.Re-send VerificationRemember MeRemoveRemoved e-mail address %(email)s.Reset My PasswordSet PasswordSign InSign OutSign UpSign Up ClosedSignupSocial AccountsSocial Network Login FailureSuccessfully signed in as %(name)s.Thank you for using %(site_name)s! %(site_domain)sThank you from %(site_name)s! %(site_domain)sThe e-mail address and/or password you specified are not correct.The e-mail address is not assigned to any user accountThe following e-mail addresses are associated with your account:The password reset link was invalid, possibly because it has already been used. Please request a new password reset.The password reset token was invalid.The social account has been connected.The social account has been disconnected.The social account is already connected to a different account.The username and/or password you specified are not correct.This account is currently inactive.This account is inactive.This e-mail address is already associated with another account.This e-mail address is already associated with this account.This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request.This part of the site requires us to verify that you are who you claim to be. For this purpose, we require that you verify ownership of your e-mail address. Too many failed login attempts. Try again later.UnverifiedUsernameUsername can not be used. Please use other username.Username or e-mailVerifiedVerify Your E-mail AddressWarning:We are sorry, but the sign up is currently closed.We have sent an e-mail to you for verification. Please click on the link inside this e-mail. Please contact us if you do not receive it within a few minutes.We have sent an e-mail to you for verification. Follow the link provided to finalize the signup process. Please contact us if you do not receive it within a few minutes.We have sent you an e-mail. Please contact us if you do not receive it within a few minutes.You are about to use your %(provider_name)s account to login to %(site_name)s. As a final step, please complete the following form:You can sign in to your account using any of the following third party accounts:You cannot remove your primary e-mail address (%(email)s).You currently do not have any e-mail address set up. You should really add an e-mail address so you can receive notifications, reset your password, etc.You currently have no social network accounts connected to this account.You decided to cancel logging in to our site using one of your existing accounts. If this was a mistake, please proceed to sign in.You have confirmed %(email)s.You have signed out.You must type the same email each time.You must type the same password each time.Your account has no password set up.Your account has no verified e-mail address.Your password is now changed.Your primary e-mail address must be verified.change passwordclient idcreateddate joinede-mail addressemail addressemail addressesemail confirmationemail confirmationsexpires atextra datafield labelLoginkeylast loginnameorprimaryprovidersecret keysentsocial accountsocial accountssocial applicationsocial application tokensocial application tokenssocial applicationstokentoken secretuiduserverifiedyou are already logged in as %(user_display)s.Project-Id-Version: PACKAGE VERSION Report-Msgid-Bugs-To: POT-Creation-Date: 2018-02-02 12:55-0600 PO-Revision-Date: 2014-08-12 00:36+0200 Last-Translator: FULL NAME Language-Team: LANGUAGE Language: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2); "oauth_token" (OAuth1) або access token (OAuth2)"oauth_token_secret" (OAuth1) або refresh token (OAuth2)Зауважте: Ви все ще можете змінити Вашу e-mail адресу.Користувач з такою e-mail адресою уже зареєстрований.секретний ключ додатку, секретний ключ клієнта або секретний ключ користувачаАкаунтЗ'єднання акаунтаАкаунт неактивнийАкаунтиДодати e-mailДодати e-mail адресуДодати зовнішній акаунтУже зареєстрованні? Будь ласка, увійдіть.Акаунт з такою e-mail адресою уже існує. Будь ласка, спершу увійдіть у цей акаунт, потім приєднайте Ваш %s акаунт.Виникла помилка під час входу за допомогою Вашого акаунту у соц. мережах.ідентифікатор додатку або ключ користувачаВи впевнені, що бажаєте вийти?Поганий токенЗмінити парольПідтвердитиПідтвердити e-mail адресуE-mail підтвердження надіслано на %(email)s.Поточний парольВи дійсно бажаєте видалити дану e-mail адресу?E-mailE-mail (ще раз)E-mail (необов'язковий)E-mail адресаE-mail адресаe-mail адреса підтвердженняЗабули пароль?Забули пароль? Введіть Вашу e-mail адресу у поле і ми надішлемо Вам e-mail, що дозволить відновити пароль.Якщо Ви ще не зареєструвались, будь ласка зареєструйтесь.На випадок, якщо Ви забули Ваше ім'я користувача %(username)s.Невірні дані профілюНевірна відповідь під час отримання токену доступу від "%s".Невірна відповідь під час отримання запиту від "%s"КлючВхід відміненоЗробити основнимНовий парольНовий пароль (ще раз)Немає токену доступу для приватних ресурсів від "%s".Токен доступу не збережений для "%s".Немає збереженого ключа запиту для "%s".ЗауважтеOpenID вхідПарольПароль (ще раз)Відновити парольE-mail для відновлення паролюПароль повинен містити мінімум {0} символів.Пароль успішно змінено.Пароль успішно введено.Будь ласка, підтвердіть Вашу e-mail адресуБудь ласка, підтвердіть, що %(email)s це e-mail адреса для користувача %(user_display)s.Будь ласка, зв'яжіться з нами, якщо у Вас виникли проблеми по відновленню паролю.Будь ласка, увійдіть із одним із Ваших існуючих зовнішніх акаунтів accounts. Або, Зареєструйте %(site_name)s акаунт і Увійдіть:Будь ласка, вкажіть Ваш поточний пароль.ОсновнийОсновну e-mail адресу введено.Надіслати підтвердження ще разЗапам'ятати менеВидалитиE-mail %(email)s видалено.Відновити мій парольВведіть парольУвійтиВийтиЗареєструватисьРеєстрація закритаЗареєструватисьСоціальні акаунтиВхід за допомогою соціальних мереж неуспішний.Успішно увійшли як %(name)s.Дякуємо Вам, що користуєтесь %(site_name)s! %(site_domain)sСпасибі Вам від %(site_name)s! %(site_domain)sВведена e-mail адреса і/або пароль є некоректними.Немає користувача з такою e-mail адресою.Вказаний e-mail уже прикріплений до цього акаунтуПосилання для відновлення паролю некоректне, можливо через те, що посилання уже використане. Будь ласка, зробіть запит на нове відновлення паролю.Токен відновлення паролю був невірним.Акаунт із соц. мереж було приєднано.Акаунт із соц. мереж було від'єднано.Акаунт із соц. мереж уже приєднано до іншого акаунту.Введене ім'я користувача і/або пароль є некоректними.Даний акаунт є неактивним.Даний акаунт неактивнийВказаний e-mail уже прикріплений до іншого користувача.Вказаний e-mail уже прикріплений до цього акаунту.Дане посилання для підтвердження e-mail неактивне або неправильне. Будь ласка, зробіть новий запит для підтвердження e-mail адреси.Дана частина сайту вимає підтвердження e-mail адреси.Занадто багато спроб входу в систему, спробуйте пізніше.НепідтвердженоІм'я користувачаІм'я користувача не може бути використаним. Будь ласка, оберіть інше ім'я користувача.Ім'я користувача або e-mailПідтвердженоПідтвердіть Вашу e-mail адресуПопередження:Перепрошуємо, але реєстрацію закрито.Ми надіслали Вам e-mail для підтвердження. Будь ласка, перейдіть за посилання вказаним у e-mail повідомленні. Будь ласка, зв'яжіться з нами, якщо Ви не отримаєте повідомлення впродовж декількох хвилин.Ми надіслали Вам e-mail для підтвердження. Перейдіть за посиланням для звершення процесу реєстрації. Будь ласка, зв'яжіться з нами, якщо Ви не отримаєте повідомлення впродовж декількох хвилин.Ми надіслали Вам e-mail повідомлення. Будь ласка, зв'яжіться з нами, якщо Ви не отримаєте повідомлення протягом декількох хвилин.Ви використовуєте Ваш %(provider_name)s акаунт для авторизації на %(site_name)s. Для завершення, будь ласка, заповніть наступну форму:Ви можете увійти використовуючи будь-який із зовнішніх акаунтів:Ви можете видалити Вашу основну e-mail адресу (%(email)s).На даний момент у Вас немає збереженої e-mail адреси. Рекомендуємо додати e-mail адресу, для того, щоб отримувати сповіщення, оновлювати паролі та інше.На даний момент Ви не маєте жодного акаунту із соц. мереж приєднаного до даного акаунту.Ви відмінили вхід на наш сайт, використовуючи один з Ваших існуючих акаунтів. Якщо це сталось помилково, будь ласка, увійдіть.E-mail %(email)s підтверджено. Ви вийшли.Ви повинні вводити однакову e-mail адресу кожного разу.Ви повинні вводити однаковий пароль кожного разу.Ваш акаунт не має встановленого паролю.Немає підтвердження по e-mail для Вашого акаунту.Ваш пароль змінено.Ваша основна e-mail адреса повинна бути підтверджена.змінити парольідентифікатор клієнтастворенодата реєстраціїe-mail адресаe-mail адресаe-mail адресаe-mail підтвердженняe-mail підтвердженнязакінчуєтьсядодаткові даніУвійтиключдата останнього входуІм'яабоосновнийпостачальниксекретний ключвідправленоаккаунт соціальної мережіакаунти соціальних мережсоціальний додатоктокен соціального додаткутокени соціальних додатківсоціальні додаткитокенсекретний токенID користувачакористувачпідтвердженоВи уже увійшли як %(user_display)s.django-allauth-0.35.0/allauth/locale/uk/LC_MESSAGES/django.po0000644000076500000240000007361213235132037024357 0ustar pennersrstaff00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-02-02 12:55-0600\n" "PO-Revision-Date: 2014-08-12 00:36+0200\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #: account/adapter.py:45 msgid "Username can not be used. Please use other username." msgstr "" "Ім'я користувача не може бути використаним. Будь ласка, оберіть інше ім'я " "користувача." #: account/adapter.py:49 msgid "Too many failed login attempts. Try again later." msgstr "Занадто багато спроб входу в систему, спробуйте пізніше." #: account/adapter.py:51 msgid "A user is already registered with this e-mail address." msgstr "Користувач з такою e-mail адресою уже зареєстрований." #: account/adapter.py:288 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "Пароль повинен містити мінімум {0} символів." #: account/apps.py:7 msgid "Accounts" msgstr "Акаунти" #: account/forms.py:61 account/forms.py:398 msgid "You must type the same password each time." msgstr "Ви повинні вводити однаковий пароль кожного разу." #: account/forms.py:91 account/forms.py:365 account/forms.py:476 msgid "Password" msgstr "Пароль" #: account/forms.py:92 msgid "Remember Me" msgstr "Запам'ятати мене" #: account/forms.py:98 msgid "This account is currently inactive." msgstr "Даний акаунт є неактивним." #: account/forms.py:101 msgid "The e-mail address and/or password you specified are not correct." msgstr "Введена e-mail адреса і/або пароль є некоректними." #: account/forms.py:104 msgid "The username and/or password you specified are not correct." msgstr "Введене ім'я користувача і/або пароль є некоректними." #: account/forms.py:113 account/forms.py:268 account/forms.py:426 #: account/forms.py:495 msgid "E-mail address" msgstr "E-mail адреса" #: account/forms.py:115 account/forms.py:301 account/forms.py:421 #: account/forms.py:490 msgid "E-mail" msgstr "E-mail" #: account/forms.py:120 account/forms.py:123 account/forms.py:260 #: account/forms.py:264 msgid "Username" msgstr "Ім'я користувача" #: account/forms.py:130 msgid "Username or e-mail" msgstr "Ім'я користувача або e-mail" #: account/forms.py:133 msgctxt "field label" msgid "Login" msgstr "Увійти" #: account/forms.py:292 msgid "E-mail (again)" msgstr "E-mail (ще раз)" #: account/forms.py:296 msgid "E-mail address confirmation" msgstr "e-mail адреса підтвердження" #: account/forms.py:304 msgid "E-mail (optional)" msgstr "E-mail (необов'язковий)" #: account/forms.py:345 msgid "You must type the same email each time." msgstr "Ви повинні вводити однакову e-mail адресу кожного разу." #: account/forms.py:368 account/forms.py:477 msgid "Password (again)" msgstr "Пароль (ще раз)" #: account/forms.py:432 msgid "This e-mail address is already associated with this account." msgstr "Вказаний e-mail уже прикріплений до цього акаунту." #: account/forms.py:434 msgid "This e-mail address is already associated with another account." msgstr "Вказаний e-mail уже прикріплений до іншого користувача." #: account/forms.py:456 msgid "Current Password" msgstr "Поточний пароль" #: account/forms.py:457 account/forms.py:546 msgid "New Password" msgstr "Новий пароль" #: account/forms.py:458 account/forms.py:547 msgid "New Password (again)" msgstr "Новий пароль (ще раз)" #: account/forms.py:466 msgid "Please type your current password." msgstr "Будь ласка, вкажіть Ваш поточний пароль." #: account/forms.py:504 msgid "The e-mail address is not assigned to any user account" msgstr "Немає користувача з такою e-mail адресою." #: account/forms.py:568 msgid "The password reset token was invalid." msgstr "Токен відновлення паролю був невірним." #: account/models.py:23 msgid "user" msgstr "користувач" #: account/models.py:27 account/models.py:81 msgid "e-mail address" msgstr "e-mail адреса" #: account/models.py:28 msgid "verified" msgstr "підтверджено" #: account/models.py:29 msgid "primary" msgstr "основний" #: account/models.py:34 msgid "email address" msgstr "e-mail адреса" #: account/models.py:35 msgid "email addresses" msgstr "e-mail адреса" #: account/models.py:83 msgid "created" msgstr "створено" #: account/models.py:85 msgid "sent" msgstr "відправлено" #: account/models.py:86 socialaccount/models.py:55 msgid "key" msgstr "ключ" #: account/models.py:91 msgid "email confirmation" msgstr "e-mail підтвердження" #: account/models.py:92 msgid "email confirmations" msgstr "e-mail підтвердження" #: socialaccount/adapter.py:26 #, python-format msgid "" "An account already exists with this e-mail address. Please sign in to that " "account first, then connect your %s account." msgstr "" "Акаунт з такою e-mail адресою уже існує. Будь ласка, спершу увійдіть у цей " "акаунт, потім приєднайте Ваш %s акаунт." #: socialaccount/adapter.py:131 msgid "Your account has no password set up." msgstr "Ваш акаунт не має встановленого паролю." #: socialaccount/adapter.py:138 msgid "Your account has no verified e-mail address." msgstr "Немає підтвердження по e-mail для Вашого акаунту." #: socialaccount/apps.py:7 msgid "Social Accounts" msgstr "Соціальні акаунти" #: socialaccount/models.py:43 socialaccount/models.py:77 msgid "provider" msgstr "постачальник" #: socialaccount/models.py:46 msgid "name" msgstr "Ім'я" #: socialaccount/models.py:48 msgid "client id" msgstr "ідентифікатор клієнта" #: socialaccount/models.py:50 msgid "App ID, or consumer key" msgstr "ідентифікатор додатку або ключ користувача" #: socialaccount/models.py:51 msgid "secret key" msgstr "секретний ключ" #: socialaccount/models.py:53 msgid "API secret, client secret, or consumer secret" msgstr "" "секретний ключ додатку, секретний ключ клієнта або секретний ключ користувача" #: socialaccount/models.py:58 msgid "Key" msgstr "Ключ" #: socialaccount/models.py:66 msgid "social application" msgstr "соціальний додаток" #: socialaccount/models.py:67 msgid "social applications" msgstr "соціальні додатки" #: socialaccount/models.py:96 msgid "uid" msgstr "ID користувача" #: socialaccount/models.py:98 msgid "last login" msgstr "дата останнього входу" #: socialaccount/models.py:100 msgid "date joined" msgstr "дата реєстрації" #: socialaccount/models.py:102 msgid "extra data" msgstr "додаткові дані" #: socialaccount/models.py:106 msgid "social account" msgstr "аккаунт соціальної мережі" #: socialaccount/models.py:107 msgid "social accounts" msgstr "акаунти соціальних мереж" #: socialaccount/models.py:133 msgid "token" msgstr "токен" #: socialaccount/models.py:135 msgid "\"oauth_token\" (OAuth1) or access token (OAuth2)" msgstr "\"oauth_token\" (OAuth1) або access token (OAuth2)" #: socialaccount/models.py:138 msgid "token secret" msgstr "секретний токен" #: socialaccount/models.py:140 msgid "\"oauth_token_secret\" (OAuth1) or refresh token (OAuth2)" msgstr "\"oauth_token_secret\" (OAuth1) або refresh token (OAuth2)" #: socialaccount/models.py:142 msgid "expires at" msgstr "закінчується" #: socialaccount/models.py:146 msgid "social application token" msgstr "токен соціального додатку" #: socialaccount/models.py:147 msgid "social application tokens" msgstr "токени соціальних додатків" #: socialaccount/providers/douban/views.py:36 msgid "Invalid profile data" msgstr "Невірні дані профілю" #: socialaccount/providers/oauth/client.py:78 #, python-format msgid "Invalid response while obtaining request token from \"%s\"." msgstr "Невірна відповідь під час отримання запиту від \"%s\"" #: socialaccount/providers/oauth/client.py:109 #, python-format msgid "Invalid response while obtaining access token from \"%s\"." msgstr "Невірна відповідь під час отримання токену доступу від \"%s\"." #: socialaccount/providers/oauth/client.py:128 #, python-format msgid "No request token saved for \"%s\"." msgstr "Немає збереженого ключа запиту для \"%s\"." #: socialaccount/providers/oauth/client.py:177 #, python-format msgid "No access token saved for \"%s\"." msgstr "Токен доступу не збережений для \"%s\"." #: socialaccount/providers/oauth/client.py:197 #, python-format msgid "No access to private resources at \"%s\"." msgstr "Немає токену доступу для приватних ресурсів від \"%s\"." #: templates/account/account_inactive.html:5 #: templates/account/account_inactive.html:8 msgid "Account Inactive" msgstr "Акаунт неактивний" #: templates/account/account_inactive.html:10 msgid "This account is inactive." msgstr "Даний акаунт неактивний" #: templates/account/email.html:5 msgid "Account" msgstr "Акаунт" #: templates/account/email.html:8 msgid "E-mail Addresses" msgstr "E-mail адреса" #: templates/account/email.html:10 msgid "The following e-mail addresses are associated with your account:" msgstr "Вказаний e-mail уже прикріплений до цього акаунту" #: templates/account/email.html:24 msgid "Verified" msgstr "Підтверджено" #: templates/account/email.html:26 msgid "Unverified" msgstr "Непідтверджено" #: templates/account/email.html:28 msgid "Primary" msgstr "Основний" #: templates/account/email.html:34 msgid "Make Primary" msgstr "Зробити основним" #: templates/account/email.html:35 msgid "Re-send Verification" msgstr "Надіслати підтвердження ще раз" #: templates/account/email.html:36 templates/socialaccount/connections.html:35 msgid "Remove" msgstr "Видалити" #: templates/account/email.html:43 msgid "Warning:" msgstr "Попередження:" #: templates/account/email.html:43 msgid "" "You currently do not have any e-mail address set up. You should really add " "an e-mail address so you can receive notifications, reset your password, etc." msgstr "" "На даний момент у Вас немає збереженої e-mail адреси. Рекомендуємо додати e-" "mail адресу, для того, щоб отримувати сповіщення, оновлювати паролі та інше." #: templates/account/email.html:48 msgid "Add E-mail Address" msgstr "Додати e-mail адресу" #: templates/account/email.html:53 msgid "Add E-mail" msgstr "Додати e-mail" #: templates/account/email.html:62 msgid "Do you really want to remove the selected e-mail address?" msgstr "Ви дійсно бажаєте видалити дану e-mail адресу?" #: templates/account/email/email_confirmation_message.txt:1 #, fuzzy, python-format #| msgid "" #| "Hello from %(site_name)s!\n" #| "\n" #| "You're receiving this e-mail because user %(user_display)s at " #| "%(site_domain)s has given yours as an e-mail address to connect their " #| "account.\n" #| "\n" #| "To confirm this is correct, go to %(activate_url)s\n" msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because user %(user_display)s has given yours " "as an e-mail address to connect their account.\n" "\n" "To confirm this is correct, go to %(activate_url)s\n" msgstr "" "Вітання від %(site_name)s!\n" "\n" "Ви отримали дане повідомлення тому, що користувач %(user_display)s на " "%(site_domain)s зареєстрував дану e-mail адресу.\n" "\n" "Для підтвердження, що все правильно, будь ласка, перейдіть за " "%(activate_url)s\n" #: templates/account/email/email_confirmation_message.txt:7 #, python-format msgid "" "Thank you from %(site_name)s!\n" "%(site_domain)s" msgstr "" "Спасибі Вам від %(site_name)s!\n" "%(site_domain)s" #: templates/account/email/email_confirmation_subject.txt:3 msgid "Please Confirm Your E-mail Address" msgstr "Будь ласка, підтвердіть Вашу e-mail адресу" #: templates/account/email/password_reset_key_message.txt:1 #, fuzzy, python-format #| msgid "" #| "Hello from %(site_name)s!\n" #| "\n" #| "You're receiving this e-mail because you or someone else has requested a " #| "password for your user account at %(site_domain)s.\n" #| "It can be safely ignored if you did not request a password reset. Click " #| "the link below to reset your password." msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because you or someone else has requested a " "password for your user account.\n" "It can be safely ignored if you did not request a password reset. Click the " "link below to reset your password." msgstr "" "Вітання від %(site_name)s!\n" "\n" "Ви отримали дане повідомлення, тому що Ви або хтось інший зробили запит на " "пароль для Вашого акаунту користувача на сайті %(site_domain)s.\n" "Дане повідомлення можна проігнорувати, якщо Ви не робили такого запиту. " "Перейдіть за посиланням для відновлення паролю." #: templates/account/email/password_reset_key_message.txt:8 #, python-format msgid "In case you forgot, your username is %(username)s." msgstr "На випадок, якщо Ви забули Ваше ім'я користувача %(username)s." #: templates/account/email/password_reset_key_message.txt:10 #, python-format msgid "" "Thank you for using %(site_name)s!\n" "%(site_domain)s" msgstr "" "Дякуємо Вам, що користуєтесь %(site_name)s!\n" "%(site_domain)s" #: templates/account/email/password_reset_key_subject.txt:3 msgid "Password Reset E-mail" msgstr "E-mail для відновлення паролю" #: templates/account/email_confirm.html:6 #: templates/account/email_confirm.html:10 msgid "Confirm E-mail Address" msgstr "Підтвердити e-mail адресу" #: templates/account/email_confirm.html:16 #, python-format msgid "" "Please confirm that %(email)s is an e-mail " "address for user %(user_display)s." msgstr "" "Будь ласка, підтвердіть, що %(email)s це e-" "mail адреса для користувача %(user_display)s." #: templates/account/email_confirm.html:20 msgid "Confirm" msgstr "Підтвердити" #: templates/account/email_confirm.html:27 #, python-format msgid "" "This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request." msgstr "" "Дане посилання для підтвердження e-mail неактивне або неправильне. Будь " "ласка, зробіть новий запит для підтвердження e-" "mail адреси." #: templates/account/login.html:6 templates/account/login.html:10 #: templates/account/login.html:43 msgid "Sign In" msgstr "Увійти" #: templates/account/login.html:15 #, python-format msgid "" "Please sign in with one\n" "of your existing third party accounts. Or, sign " "up\n" "for a %(site_name)s account and sign in below:" msgstr "" "Будь ласка, увійдіть із одним \n" "із Ваших існуючих зовнішніх акаунтів accounts. Або, Зареєструйте\n" " %(site_name)s акаунт і Увійдіть:" #: templates/account/login.html:25 msgid "or" msgstr "або" #: templates/account/login.html:32 #, python-format msgid "" "If you have not created an account yet, then please\n" "sign up first." msgstr "" "Якщо Ви ще не зареєструвались, будь ласка\n" "зареєструйтесь." #: templates/account/login.html:42 msgid "Forgot Password?" msgstr "Забули пароль?" #: templates/account/logout.html:5 templates/account/logout.html:8 #: templates/account/logout.html:17 msgid "Sign Out" msgstr "Вийти" #: templates/account/logout.html:10 msgid "Are you sure you want to sign out?" msgstr "Ви впевнені, що бажаєте вийти?" #: templates/account/messages/cannot_delete_primary_email.txt:2 #, python-format msgid "You cannot remove your primary e-mail address (%(email)s)." msgstr "Ви можете видалити Вашу основну e-mail адресу (%(email)s)." #: templates/account/messages/email_confirmation_sent.txt:2 #, python-format msgid "Confirmation e-mail sent to %(email)s." msgstr "E-mail підтвердження надіслано на %(email)s." #: templates/account/messages/email_confirmed.txt:2 #, python-format msgid "You have confirmed %(email)s." msgstr "E-mail %(email)s підтверджено. " #: templates/account/messages/email_deleted.txt:2 #, python-format msgid "Removed e-mail address %(email)s." msgstr "E-mail %(email)s видалено." #: templates/account/messages/logged_in.txt:4 #, python-format msgid "Successfully signed in as %(name)s." msgstr "Успішно увійшли як %(name)s." #: templates/account/messages/logged_out.txt:2 msgid "You have signed out." msgstr "Ви вийшли." #: templates/account/messages/password_changed.txt:2 msgid "Password successfully changed." msgstr "Пароль успішно змінено." #: templates/account/messages/password_set.txt:2 msgid "Password successfully set." msgstr "Пароль успішно введено." #: templates/account/messages/primary_email_set.txt:2 msgid "Primary e-mail address set." msgstr "Основну e-mail адресу введено." #: templates/account/messages/unverified_primary_email.txt:2 msgid "Your primary e-mail address must be verified." msgstr "Ваша основна e-mail адреса повинна бути підтверджена." #: templates/account/password_change.html:5 #: templates/account/password_change.html:8 #: templates/account/password_change.html:13 #: templates/account/password_reset_from_key.html:4 #: templates/account/password_reset_from_key.html:7 #: templates/account/password_reset_from_key_done.html:4 #: templates/account/password_reset_from_key_done.html:7 msgid "Change Password" msgstr "Змінити пароль" #: templates/account/password_reset.html:6 #: templates/account/password_reset.html:10 #: templates/account/password_reset_done.html:6 #: templates/account/password_reset_done.html:9 msgid "Password Reset" msgstr "Відновити пароль" #: templates/account/password_reset.html:15 msgid "" "Forgotten your password? Enter your e-mail address below, and we'll send you " "an e-mail allowing you to reset it." msgstr "" "Забули пароль? Введіть Вашу e-mail адресу у поле і ми надішлемо Вам e-mail, " "що дозволить відновити пароль." #: templates/account/password_reset.html:20 msgid "Reset My Password" msgstr "Відновити мій пароль" #: templates/account/password_reset.html:23 msgid "Please contact us if you have any trouble resetting your password." msgstr "" "Будь ласка, зв'яжіться з нами, якщо у Вас виникли проблеми по відновленню " "паролю." #: templates/account/password_reset_done.html:15 msgid "" "We have sent you an e-mail. Please contact us if you do not receive it " "within a few minutes." msgstr "" "Ми надіслали Вам e-mail повідомлення. Будь ласка, зв'яжіться з нами, якщо Ви " "не отримаєте повідомлення протягом декількох хвилин." #: templates/account/password_reset_from_key.html:7 msgid "Bad Token" msgstr "Поганий токен" #: templates/account/password_reset_from_key.html:11 #, python-format msgid "" "The password reset link was invalid, possibly because it has already been " "used. Please request a new password reset." msgstr "" "Посилання для відновлення паролю некоректне, можливо через те, що посилання " "уже використане. Будь ласка, зробіть запит на нове відновлення паролю." #: templates/account/password_reset_from_key.html:17 msgid "change password" msgstr "змінити пароль" #: templates/account/password_reset_from_key.html:20 #: templates/account/password_reset_from_key_done.html:8 msgid "Your password is now changed." msgstr "Ваш пароль змінено." #: templates/account/password_set.html:5 templates/account/password_set.html:8 #: templates/account/password_set.html:13 msgid "Set Password" msgstr "Введіть пароль" #: templates/account/signup.html:5 templates/socialaccount/signup.html:5 msgid "Signup" msgstr "Зареєструватись" #: templates/account/signup.html:8 templates/account/signup.html:18 #: templates/socialaccount/signup.html:8 templates/socialaccount/signup.html:19 msgid "Sign Up" msgstr "Зареєструватись" #: templates/account/signup.html:10 #, python-format msgid "" "Already have an account? Then please sign in." msgstr "" "Уже зареєстрованні? Будь ласка, увійдіть." #: templates/account/signup_closed.html:5 #: templates/account/signup_closed.html:8 msgid "Sign Up Closed" msgstr "Реєстрація закрита" #: templates/account/signup_closed.html:10 msgid "We are sorry, but the sign up is currently closed." msgstr "Перепрошуємо, але реєстрацію закрито." #: templates/account/snippets/already_logged_in.html:5 msgid "Note" msgstr "Зауважте" #: templates/account/snippets/already_logged_in.html:5 #, python-format msgid "you are already logged in as %(user_display)s." msgstr "Ви уже увійшли як %(user_display)s." #: templates/account/verification_sent.html:5 #: templates/account/verification_sent.html:8 #: templates/account/verified_email_required.html:5 #: templates/account/verified_email_required.html:8 msgid "Verify Your E-mail Address" msgstr "Підтвердіть Вашу e-mail адресу" #: templates/account/verification_sent.html:10 msgid "" "We have sent an e-mail to you for verification. Follow the link provided to " "finalize the signup process. Please contact us if you do not receive it " "within a few minutes." msgstr "" "Ми надіслали Вам e-mail для підтвердження. Перейдіть за посиланням для " "звершення процесу реєстрації. Будь ласка, зв'яжіться з нами, якщо Ви не " "отримаєте повідомлення впродовж декількох хвилин." #: templates/account/verified_email_required.html:12 msgid "" "This part of the site requires us to verify that\n" "you are who you claim to be. For this purpose, we require that you\n" "verify ownership of your e-mail address. " msgstr "Дана частина сайту вимає підтвердження e-mail адреси." #: templates/account/verified_email_required.html:16 msgid "" "We have sent an e-mail to you for\n" "verification. Please click on the link inside this e-mail. Please\n" "contact us if you do not receive it within a few minutes." msgstr "" "Ми надіслали Вам e-mail для підтвердження.\n" "Будь ласка, перейдіть за посилання вказаним у e-mail повідомленні. Будь " "ласка,\n" "зв'яжіться з нами, якщо Ви не отримаєте повідомлення впродовж декількох " "хвилин." #: templates/account/verified_email_required.html:20 #, python-format msgid "" "Note: you can still change your e-" "mail address." msgstr "" "Зауважте: Ви все ще можете змінити Вашу e-mail адресу." #: templates/openid/login.html:9 msgid "OpenID Sign In" msgstr "OpenID вхід" #: templates/socialaccount/authentication_error.html:5 #: templates/socialaccount/authentication_error.html:8 msgid "Social Network Login Failure" msgstr "Вхід за допомогою соціальних мереж неуспішний." #: templates/socialaccount/authentication_error.html:10 msgid "" "An error occurred while attempting to login via your social network account." msgstr "" "Виникла помилка під час входу за допомогою Вашого акаунту у соц. мережах." #: templates/socialaccount/connections.html:5 #: templates/socialaccount/connections.html:8 msgid "Account Connections" msgstr "З'єднання акаунта" #: templates/socialaccount/connections.html:11 msgid "" "You can sign in to your account using any of the following third party " "accounts:" msgstr "Ви можете увійти використовуючи будь-який із зовнішніх акаунтів:" #: templates/socialaccount/connections.html:43 msgid "" "You currently have no social network accounts connected to this account." msgstr "" "На даний момент Ви не маєте жодного акаунту із соц. мереж приєднаного до " "даного акаунту." #: templates/socialaccount/connections.html:46 msgid "Add a 3rd Party Account" msgstr "Додати зовнішній акаунт" #: templates/socialaccount/login_cancelled.html:5 #: templates/socialaccount/login_cancelled.html:9 msgid "Login Cancelled" msgstr "Вхід відмінено" #: templates/socialaccount/login_cancelled.html:13 #, python-format msgid "" "You decided to cancel logging in to our site using one of your existing " "accounts. If this was a mistake, please proceed to sign in." msgstr "" "Ви відмінили вхід на наш сайт, використовуючи один з Ваших існуючих " "акаунтів. Якщо це сталось помилково, будь ласка, увійдіть." #: templates/socialaccount/messages/account_connected.txt:2 msgid "The social account has been connected." msgstr "Акаунт із соц. мереж було приєднано." #: templates/socialaccount/messages/account_connected_other.txt:2 msgid "The social account is already connected to a different account." msgstr "Акаунт із соц. мереж уже приєднано до іншого акаунту." #: templates/socialaccount/messages/account_disconnected.txt:2 msgid "The social account has been disconnected." msgstr "Акаунт із соц. мереж було від'єднано." #: templates/socialaccount/signup.html:10 #, python-format msgid "" "You are about to use your %(provider_name)s account to login to\n" "%(site_name)s. As a final step, please complete the following form:" msgstr "" "Ви використовуєте Ваш %(provider_name)s акаунт для авторизації на\n" "%(site_name)s. Для завершення, будь ласка, заповніть наступну форму:" #~ msgid "The login and/or password you specified are not correct." #~ msgstr "Введений login і/або пароль є некоректними." #~ msgid "Usernames can only contain letters, digits and @/./+/-/_." #~ msgstr "" #~ "Ім'я користувача може містити тільки букви, цифри та символи @/./+/-/_." #~ msgid "This username is already taken. Please choose another." #~ msgstr "" #~ "Ім'я користувача уже використовується. Будь ласка, оберіть інше ім'я " #~ "користувача." #, fuzzy #~| msgid "Sign In" #~ msgid "Shopify Sign In" #~ msgstr "Увійти" #~ msgid "" #~ "You have confirmed that %(email)s is an " #~ "e-mail address for user %(user_display)s." #~ msgstr "" #~ "Ви підтвердили, що %(email)s це e-mail " #~ "адреса для користувача %(user_display)s." #~ msgid "Thanks for using our site!" #~ msgstr "Дякуємо за користування нашим сайтом!" django-allauth-0.35.0/allauth/locale/ar/0000755000076500000240000000000013235133532020743 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/ar/LC_MESSAGES/0000755000076500000240000000000013235133532022530 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/ar/LC_MESSAGES/django.mo0000644000076500000240000003735613235132042024340 0ustar pennersrstaff00000000000000t\ \ 6. e m     I w L "    &2 Y 9j      p __ 2   16EN_n-lBY"3V^z !  "#?Ac6@&)?;G#?<> ]h4q2\aPB:HgPn*$,-L\d s.)i#:3K1']7 !/!!!<!H'"$p"^"!">#.U#,#%##$[?%%%%$%6% 1&%>&d&/v&'&O&@'7_'7''U(-(O *]*Tf*2* **E+=H+++++++%,15,6g,s,`-Ys--1.=.Q /^r/-/!/^!0k00122^2>N33N33D 4N4f5l6%77sy88[:\:G_;;O;8<^L<7<P< 4=U=$i=$=.=,=0>@> X>c>j> o>z> > >>>>CO A,\YD#)(7T>'Sn? K6+83IhQ$<R /@!iWe5%da-]jG`1HVbZ[;20 s cqmNl:=_Uf.FgEtok BJ*p^L"9MrP4&XNote: you can still change your e-mail address.A user is already registered with this e-mail address.AccountAccount ConnectionsAccount InactiveAccountsAdd E-mailAdd E-mail AddressAdd a 3rd Party AccountAlready have an account? Then please sign in.An account already exists with this e-mail address. Please sign in to that account first, then connect your %s account.An error occurred while attempting to login via your social network account.Are you sure you want to sign out?Change PasswordConfirmConfirm E-mail AddressConfirmation e-mail sent to %(email)s.Current PasswordDo you really want to remove the selected e-mail address?E-mailE-mail (optional)E-mail AddressesE-mail addressForgot Password?Forgotten your password? Enter your e-mail address below, and we'll send you an e-mail allowing you to reset it.If you have not created an account yet, then please sign up first.In case you forgot, your username is %(username)s.Login CancelledMake PrimaryNew PasswordNew Password (again)NoteOpenID Sign InPasswordPassword (again)Password ResetPassword Reset E-mailPassword must be a minimum of {0} characters.Password successfully changed.Password successfully set.Please confirm that %(email)s is an e-mail address for user %(user_display)s.Please contact us if you have any trouble resetting your password.Please sign in with one of your existing third party accounts. Or, sign up for a %(site_name)s account and sign in below:Please type your current password.PrimaryPrimary e-mail address set.Re-send VerificationRemember MeRemoveRemoved e-mail address %(email)s.Reset My PasswordSet PasswordSign InSign OutSign UpSign Up ClosedSignupSocial AccountsSocial Network Login FailureSuccessfully signed in as %(name)s.The e-mail address and/or password you specified are not correct.The e-mail address is not assigned to any user accountThe following e-mail addresses are associated with your account:The password reset link was invalid, possibly because it has already been used. Please request a new password reset.The social account has been connected.The social account has been disconnected.The social account is already connected to a different account.The username and/or password you specified are not correct.This account is currently inactive.This account is inactive.This e-mail address is already associated with another account.This e-mail address is already associated with this account.This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request.This part of the site requires us to verify that you are who you claim to be. For this purpose, we require that you verify ownership of your e-mail address. UnverifiedUsernameUsername can not be used. Please use other username.Username or e-mailVerifiedVerify Your E-mail AddressWarning:We are sorry, but the sign up is currently closed.We have sent an e-mail to you for verification. Please click on the link inside this e-mail. Please contact us if you do not receive it within a few minutes.We have sent an e-mail to you for verification. Follow the link provided to finalize the signup process. Please contact us if you do not receive it within a few minutes.We have sent you an e-mail. Please contact us if you do not receive it within a few minutes.You are about to use your %(provider_name)s account to login to %(site_name)s. As a final step, please complete the following form:You can sign in to your account using any of the following third party accounts:You cannot remove your primary e-mail address (%(email)s).You currently do not have any e-mail address set up. You should really add an e-mail address so you can receive notifications, reset your password, etc.You currently have no social network accounts connected to this account.You decided to cancel logging in to our site using one of your existing accounts. If this was a mistake, please proceed to sign in.You have confirmed %(email)s.You have signed out.You must type the same password each time.Your account has no password set up.Your account has no verified e-mail address.Your password is now changed.Your primary e-mail address must be verified.change passwordcreatede-mail addressemail addressemail addressesemail confirmationemail confirmationsfield labelLoginkeynameorprimaryprovidersentuserverifiedyou are already logged in as %(user_display)s.Project-Id-Version: 0.1 Report-Msgid-Bugs-To: POT-Creation-Date: 2018-02-02 12:55-0600 PO-Revision-Date: 2016-01-19 19:32+0100 Last-Translator: David D Lowe Language-Team: Arabic Language: ar MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5; X-Generator: Poedit 1.8.6 ملاحظة: مازال يمكنك تغيير عنوان البريد الإلكتروني الخاص بك.هنالك مستخدم مسجل سابقا مع نفس عنوان البريد الاكتروني‪.‬حساباتصالات الحسابحساب غير نشطالحساباتأضف عنوان البريد الالكترونيأضف عنوان البريد الاكترينيإضافة حساب طرف الثالثلديك حساب؟ من فضلك قم بتسجيل الدخول.حساب موجود بالفعل مع هذا عنوان البريد الإلكتروني. يرجى تسجيل الدخول إلى هذا الحساب أولا، ثم ربط حساب %s الخاص بك.حدث خطأ أثناء محاولة تسجيل الدخول عن طريق حساب الشبكة الاجتماعية الخاصة بك.هل تريد حقا ان تسجل خروجك؟غيّر كلمة المرورالتأكيدقم بتحقيق عنوان البريد الاكترونيقد أرسلنا رسالة تأكيد إلى العنوان %(email)s.كلمة المرور الحاليةهل تريد حقا ان تحذف عنوان البريد الاكتروني المختار؟البريد الالكترونيالبريد الالكتروني ‪)‬اختياري‪(‬عناوين البريد الالكترونيعنوان البريد الالكترونيهل نسيت كلمة المرور؟هل نسيت كلمة المرور؟ أدخل عنوان البريد الإلكتروني أدناه، وسوف نرسل لك عن طريق البريد الإلكتروني مما يتيح لك إعادة تعيينها.إذا لم تكن قد أنشأت حسابا حتى الآن، فالرجاء الاشتراك أولا.في حال كنت قد نسيت اسم المستخدم الخاص بك هو %(username)s.الدخول تم إلغاؤه‪.‬اجعله اوليكلمة المرور الجديدةكلمة المرور الجديدة (مرة أخرى)ملاحظةتسجيل الدخول عبر OpenIDكلمة السركلمة السر ‪)‬مرة أخرى‪(‬إعادة ضبط كلمة المرورالبريد الإلكتروني لإعادة تعيين كلمة المروركلمة المرور يجب أن لا تقل عن {0} حروف.تم تغيير كلمة المرور بنجاح‪.‬تم إعداد كلمة المرور بنجاح‪.‬يرجى التأكيد ان %(email)s من إحدى العنوان للمستعمل %(user_display)s.يرجى الاتصال بنا إذا كان لديك أي مشكلة في إعادة تعيين كلمة المرور الخاصة بك.يرجى تسجيل الدخول مع واحد من حسابات طرف ثالث الموجودة لديك‪.‬ كما يمكنك الاشتراك‪‬ للتحصل على حساب في الموقع %(site_name)s ثم تسجيل الدخول بالأسفل‪.‬الرجاء كتابة كلمة المرور الحالية الخاصة بك.أوليتمّ تعيين عنوان البريد الالكتروني الرئيسي‪.‬ابعث رسالة التحقيق مرة أخرىذكرنياحذفقد أزلنا عنوان البريد الاكتروني %(email)s.إعادة تعيين كلمة المرور الخاصة بيتعيين كلمة مرورتسجيل الدخولتسجيل الخروجالاشتراكالاشتراك مغلقالاشتراكالحسابات الاجتماعيةفشل تسجيل الدخول الاجتماعيلقد سجلت الدخول بنجاح يا %(name)s.عنوان البريد الإلكتروني و / أو كلمة المرور الذي حددته غير صحيحة.لم يتم تعيين عنوان البريد الإلكتروني لأي حساب مستخدمترتبط عناوين البريد الإلكتروني التالية مع حسابك:كان رابط إعادة تعيين كلمة المرور غير صالحة، ربما لأنه قد تم استخدامه مسبقا. يرجى طلب كلمة المرور الجديدة.قد تم ربط الحساب الاجتماعي.تم قطع الاتصال بالحساب الاجتماعي.الحساب الاجتماعي متصل مسبقاً إلى حساب مختلف.اسم المستخدم و / أو كلمة المرور الذي حددته غير صحيحة.هذا الحساب غير نشط حاليا.هذا الحساب غير نشطعنوان البريد الإلكتروني هذا مقترن بالفعل بحساب آخر.عنوان البريد الإلكتروني هذا بالفعل المقترنة مع هذا الحساب.هذا الرابط لتأكيد البريد الإلكتروني إنتهت فترة صلاحيته أو إنه غير صالح. يرجى إصدار البريد الإلكتروني طلب تأكيد الجديدة .هذا الجزء من الموقع يتطلب منك تثبيت هويتك. ولهذا الغرض، نطلب لك التحقق من ملكيتك لعنوان البريد الإلكتروني الخاص بك.لم يتم التحقق منهاسم المستخدماسم المستخدم غير مسموح به. الرجاء اختيار اسم اخر‪.‬اسم المستخدم أو البريج الالكترونيتمّ التحقق منهالتحقق من عنوان البريد الإلكتروني الخاص بكتحذير‪:‬نحن آسفون‪:‬ الاشتراك مغلق حاليا‪.‬لقد أرسلنا رسالة بريد إلكتروني لك للتحقق. الرجاء النقر فوق الارتباط داخل هذا البريد الإلكتروني. يرجى الاتصال بنا إذا كنت لا تحصل عليه في غضون دقائق قليلة.لقد أرسلنا رسالة بريد إلكتروني لك للتحقق. اتبع الارتباط المتوفر لإتمام عملية التسجيل. يرجى الاتصال بنا إذا كنت لا تحصل عليه في غضون دقائق قليلة.لقد قمنا بإرسال رسالة اليك عبر البريد الإلكتروني. يرجى الاتصال بنا اذا كنت لا تتلقى في غضون بضع دقائق.أنت على وشك استخدام حسابك من %(provider_name)s لتسجيل الدخول إلى %(site_name)s. وكخطوة أخيرة، يرجى ملء النموذج التالي:يمكنك تسجيل الدخول إلى الحساب الخاص بك باستخدام أي من حسابات الطرف الثالث التالية:لا يمكنك إزالة عنوان البريد الإلكتروني الرئيسي الخاص بك (%(email)s).أنت حاليا ليس لديك أي عنوان البريد الإلكتروني. يجب أن تضيف عنوان البريد الإلكتروني حتى تتمكن من تلقي الإخطارات، إعادة تعيين كلمة المرور الخاصة بك، الخليس لديك حاليا اي شبكة اجتماعية متصلة بهذا الحساب.قد قررت إلغاء تسجيل الدخول إلى الموقع باستخدام أحد الحسابات الموجودة الخاصة بك. إذا كان هذا خطأ، الرجاء المتابعة تسجيل الدخول.قد اكّدت عنوان البريد الالكتروني %(email)s.تم تسجيل خروجك.يجب عليك كتابة نفس كلمة المرور في كل مرة‪.‬حسابك ليس لديه كلمة مرور اقامة.حسابك ليس لديه عنوان البريد الإلكتروني تحققنا منها.تم تغيير كلمة المرور الخاصة بكلا بد من التحقق من صحة البريد الإلكتروني‪.‬تغيير كلمة المرورتمّ إنشاؤهعنوان بريد إلكترونيعنوان بريد الكترونيعناوين البريد الالكترونيتأكيد البريد الإلكترونيتأكيدات البريد الإلكترونيتسجيل الدخولمفتاحاسمأوأوّليمزودمبعوثمستخدمتمّ تحقيقهتم تسجيل دخولك بالفعل يا %(user_display)s.django-allauth-0.35.0/allauth/locale/ar/LC_MESSAGES/django.po0000644000076500000240000007147613235132037024350 0ustar pennersrstaff00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: 0.1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-02-02 12:55-0600\n" "PO-Revision-Date: 2016-01-19 19:32+0100\n" "Last-Translator: David D Lowe \n" "Language-Team: Arabic\n" "Language: ar\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " "&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" "X-Generator: Poedit 1.8.6\n" #: account/adapter.py:45 msgid "Username can not be used. Please use other username." msgstr "اسم المستخدم غير مسموح به. الرجاء اختيار اسم اخر‪.‬" #: account/adapter.py:49 msgid "Too many failed login attempts. Try again later." msgstr "" #: account/adapter.py:51 msgid "A user is already registered with this e-mail address." msgstr "هنالك مستخدم مسجل سابقا مع نفس عنوان البريد الاكتروني‪.‬" #: account/adapter.py:288 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "كلمة المرور يجب أن لا تقل عن {0} حروف." #: account/apps.py:7 msgid "Accounts" msgstr "الحسابات" #: account/forms.py:61 account/forms.py:398 msgid "You must type the same password each time." msgstr "يجب عليك كتابة نفس كلمة المرور في كل مرة‪.‬" #: account/forms.py:91 account/forms.py:365 account/forms.py:476 msgid "Password" msgstr "كلمة السر" #: account/forms.py:92 msgid "Remember Me" msgstr "ذكرني" #: account/forms.py:98 msgid "This account is currently inactive." msgstr "هذا الحساب غير نشط حاليا." #: account/forms.py:101 msgid "The e-mail address and/or password you specified are not correct." msgstr "عنوان البريد الإلكتروني و / أو كلمة المرور الذي حددته غير صحيحة." #: account/forms.py:104 msgid "The username and/or password you specified are not correct." msgstr "اسم المستخدم و / أو كلمة المرور الذي حددته غير صحيحة." #: account/forms.py:113 account/forms.py:268 account/forms.py:426 #: account/forms.py:495 msgid "E-mail address" msgstr "عنوان البريد الالكتروني" #: account/forms.py:115 account/forms.py:301 account/forms.py:421 #: account/forms.py:490 msgid "E-mail" msgstr "البريد الالكتروني" #: account/forms.py:120 account/forms.py:123 account/forms.py:260 #: account/forms.py:264 msgid "Username" msgstr "اسم المستخدم" #: account/forms.py:130 msgid "Username or e-mail" msgstr "اسم المستخدم أو البريج الالكتروني" #: account/forms.py:133 msgctxt "field label" msgid "Login" msgstr "تسجيل الدخول" #: account/forms.py:292 #, fuzzy #| msgid "E-mail (optional)" msgid "E-mail (again)" msgstr "البريد الالكتروني ‪)‬اختياري‪(‬" #: account/forms.py:296 #, fuzzy #| msgid "email confirmation" msgid "E-mail address confirmation" msgstr "تأكيد البريد الإلكتروني" #: account/forms.py:304 msgid "E-mail (optional)" msgstr "البريد الالكتروني ‪)‬اختياري‪(‬" #: account/forms.py:345 #, fuzzy #| msgid "You must type the same password each time." msgid "You must type the same email each time." msgstr "يجب عليك كتابة نفس كلمة المرور في كل مرة‪.‬" #: account/forms.py:368 account/forms.py:477 msgid "Password (again)" msgstr "كلمة السر ‪)‬مرة أخرى‪(‬" #: account/forms.py:432 msgid "This e-mail address is already associated with this account." msgstr "عنوان البريد الإلكتروني هذا بالفعل المقترنة مع هذا الحساب." #: account/forms.py:434 msgid "This e-mail address is already associated with another account." msgstr "عنوان البريد الإلكتروني هذا مقترن بالفعل بحساب آخر." #: account/forms.py:456 msgid "Current Password" msgstr "كلمة المرور الحالية" #: account/forms.py:457 account/forms.py:546 msgid "New Password" msgstr "كلمة المرور الجديدة" #: account/forms.py:458 account/forms.py:547 msgid "New Password (again)" msgstr "كلمة المرور الجديدة (مرة أخرى)" #: account/forms.py:466 msgid "Please type your current password." msgstr "الرجاء كتابة كلمة المرور الحالية الخاصة بك." #: account/forms.py:504 msgid "The e-mail address is not assigned to any user account" msgstr "لم يتم تعيين عنوان البريد الإلكتروني لأي حساب مستخدم" #: account/forms.py:568 msgid "The password reset token was invalid." msgstr "" #: account/models.py:23 msgid "user" msgstr "مستخدم" #: account/models.py:27 account/models.py:81 msgid "e-mail address" msgstr "عنوان بريد إلكتروني" #: account/models.py:28 msgid "verified" msgstr "تمّ تحقيقه" #: account/models.py:29 msgid "primary" msgstr "أوّلي" #: account/models.py:34 msgid "email address" msgstr "عنوان بريد الكتروني" #: account/models.py:35 msgid "email addresses" msgstr "عناوين البريد الالكتروني" #: account/models.py:83 msgid "created" msgstr "تمّ إنشاؤه" #: account/models.py:85 msgid "sent" msgstr "مبعوث" #: account/models.py:86 socialaccount/models.py:55 msgid "key" msgstr "مفتاح" #: account/models.py:91 msgid "email confirmation" msgstr "تأكيد البريد الإلكتروني" #: account/models.py:92 msgid "email confirmations" msgstr "تأكيدات البريد الإلكتروني" #: socialaccount/adapter.py:26 #, python-format msgid "" "An account already exists with this e-mail address. Please sign in to that " "account first, then connect your %s account." msgstr "" "حساب موجود بالفعل مع هذا عنوان البريد الإلكتروني. يرجى تسجيل الدخول إلى هذا " "الحساب أولا، ثم ربط حساب %s الخاص بك." #: socialaccount/adapter.py:131 msgid "Your account has no password set up." msgstr "حسابك ليس لديه كلمة مرور اقامة." #: socialaccount/adapter.py:138 msgid "Your account has no verified e-mail address." msgstr "حسابك ليس لديه عنوان البريد الإلكتروني تحققنا منها." #: socialaccount/apps.py:7 msgid "Social Accounts" msgstr "الحسابات الاجتماعية" #: socialaccount/models.py:43 socialaccount/models.py:77 msgid "provider" msgstr "مزود" #: socialaccount/models.py:46 msgid "name" msgstr "اسم" #: socialaccount/models.py:48 msgid "client id" msgstr "" #: socialaccount/models.py:50 msgid "App ID, or consumer key" msgstr "" #: socialaccount/models.py:51 msgid "secret key" msgstr "" #: socialaccount/models.py:53 msgid "API secret, client secret, or consumer secret" msgstr "" #: socialaccount/models.py:58 msgid "Key" msgstr "" #: socialaccount/models.py:66 msgid "social application" msgstr "" #: socialaccount/models.py:67 msgid "social applications" msgstr "" #: socialaccount/models.py:96 msgid "uid" msgstr "" #: socialaccount/models.py:98 msgid "last login" msgstr "" #: socialaccount/models.py:100 msgid "date joined" msgstr "" #: socialaccount/models.py:102 msgid "extra data" msgstr "" #: socialaccount/models.py:106 msgid "social account" msgstr "" #: socialaccount/models.py:107 msgid "social accounts" msgstr "" #: socialaccount/models.py:133 msgid "token" msgstr "" #: socialaccount/models.py:135 msgid "\"oauth_token\" (OAuth1) or access token (OAuth2)" msgstr "" #: socialaccount/models.py:138 msgid "token secret" msgstr "" #: socialaccount/models.py:140 msgid "\"oauth_token_secret\" (OAuth1) or refresh token (OAuth2)" msgstr "" #: socialaccount/models.py:142 msgid "expires at" msgstr "" #: socialaccount/models.py:146 msgid "social application token" msgstr "" #: socialaccount/models.py:147 msgid "social application tokens" msgstr "" #: socialaccount/providers/douban/views.py:36 msgid "Invalid profile data" msgstr "" #: socialaccount/providers/oauth/client.py:78 #, python-format msgid "Invalid response while obtaining request token from \"%s\"." msgstr "" #: socialaccount/providers/oauth/client.py:109 #, python-format msgid "Invalid response while obtaining access token from \"%s\"." msgstr "" #: socialaccount/providers/oauth/client.py:128 #, python-format msgid "No request token saved for \"%s\"." msgstr "" #: socialaccount/providers/oauth/client.py:177 #, python-format msgid "No access token saved for \"%s\"." msgstr "" #: socialaccount/providers/oauth/client.py:197 #, python-format msgid "No access to private resources at \"%s\"." msgstr "" #: templates/account/account_inactive.html:5 #: templates/account/account_inactive.html:8 msgid "Account Inactive" msgstr "حساب غير نشط" #: templates/account/account_inactive.html:10 msgid "This account is inactive." msgstr "هذا الحساب غير نشط" #: templates/account/email.html:5 msgid "Account" msgstr "حساب" #: templates/account/email.html:8 msgid "E-mail Addresses" msgstr "عناوين البريد الالكتروني" #: templates/account/email.html:10 msgid "The following e-mail addresses are associated with your account:" msgstr "ترتبط عناوين البريد الإلكتروني التالية مع حسابك:" #: templates/account/email.html:24 msgid "Verified" msgstr "تمّ التحقق منه" #: templates/account/email.html:26 msgid "Unverified" msgstr "لم يتم التحقق منه" #: templates/account/email.html:28 msgid "Primary" msgstr "أولي" #: templates/account/email.html:34 msgid "Make Primary" msgstr "اجعله اولي" #: templates/account/email.html:35 msgid "Re-send Verification" msgstr "ابعث رسالة التحقيق مرة أخرى" #: templates/account/email.html:36 templates/socialaccount/connections.html:35 msgid "Remove" msgstr "احذف" #: templates/account/email.html:43 msgid "Warning:" msgstr "تحذير‪:‬" #: templates/account/email.html:43 msgid "" "You currently do not have any e-mail address set up. You should really add " "an e-mail address so you can receive notifications, reset your password, etc." msgstr "" "أنت حاليا ليس لديك أي عنوان البريد الإلكتروني. يجب أن تضيف عنوان البريد " "الإلكتروني حتى تتمكن من تلقي الإخطارات، إعادة تعيين كلمة المرور الخاصة بك، " "الخ" #: templates/account/email.html:48 msgid "Add E-mail Address" msgstr "أضف عنوان البريد الاكتريني" #: templates/account/email.html:53 msgid "Add E-mail" msgstr "أضف عنوان البريد الالكتروني" #: templates/account/email.html:62 msgid "Do you really want to remove the selected e-mail address?" msgstr "هل تريد حقا ان تحذف عنوان البريد الاكتروني المختار؟" #: templates/account/email/email_confirmation_message.txt:1 #, fuzzy, python-format #| msgid "" #| "User %(user_display)s at %(site_name)s has given this as an email " #| "address.\n" #| "\n" #| "To confirm this is correct, go to %(activate_url)s\n" msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because user %(user_display)s has given yours " "as an e-mail address to connect their account.\n" "\n" "To confirm this is correct, go to %(activate_url)s\n" msgstr "" "المستخدم %(user_display)s في الموقع %(site_name)s أعطى هذا كعنوان بريد " "إلكتروني.\n" "‏\n" "لتأكيد هذه المعلومات صحيحة، انتقل إلى %(activate_url)s\n" #: templates/account/email/email_confirmation_message.txt:7 #, python-format msgid "" "Thank you from %(site_name)s!\n" "%(site_domain)s" msgstr "" #: templates/account/email/email_confirmation_subject.txt:3 #, fuzzy #| msgid "Confirm E-mail Address" msgid "Please Confirm Your E-mail Address" msgstr "قم بتحقيق عنوان البريد الاكتروني" #: templates/account/email/password_reset_key_message.txt:1 #, fuzzy, python-format #| msgid "" #| "You're receiving this e-mail because you or someone else has requested a " #| "password for your user account at %(site_domain)s.\n" #| "It can be safely ignored if you did not request a password reset. Click " #| "the link below to reset your password." msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because you or someone else has requested a " "password for your user account.\n" "It can be safely ignored if you did not request a password reset. Click the " "link below to reset your password." msgstr "" "تلقيت هذا البريد الإلكتروني لأنك ‪)‬أو أي شخص آخر‪(‬ قد طلب كلمة مرور لحساب " "المستخدم الخاص بك في%(site_domain)s‪.‬\n" "يمكن تجاهل هذه الرسالة بأمان إذا كنت لم تطلب إعادة تعيين كلمة مرور. انقر فوق " "الارتباط الموجود أدناه لإعادة تعيين كلمة المرور الخاصة بك." #: templates/account/email/password_reset_key_message.txt:8 #, python-format msgid "In case you forgot, your username is %(username)s." msgstr "في حال كنت قد نسيت اسم المستخدم الخاص بك هو %(username)s." #: templates/account/email/password_reset_key_message.txt:10 #, python-format msgid "" "Thank you for using %(site_name)s!\n" "%(site_domain)s" msgstr "" #: templates/account/email/password_reset_key_subject.txt:3 msgid "Password Reset E-mail" msgstr "البريد الإلكتروني لإعادة تعيين كلمة المرور" #: templates/account/email_confirm.html:6 #: templates/account/email_confirm.html:10 msgid "Confirm E-mail Address" msgstr "قم بتحقيق عنوان البريد الاكتروني" #: templates/account/email_confirm.html:16 #, python-format msgid "" "Please confirm that %(email)s is an e-mail " "address for user %(user_display)s." msgstr "" "يرجى التأكيد ان %(email)s من إحدى العنوان " "للمستعمل %(user_display)s." #: templates/account/email_confirm.html:20 msgid "Confirm" msgstr "التأكيد" #: templates/account/email_confirm.html:27 #, python-format msgid "" "This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request." msgstr "" "هذا الرابط لتأكيد البريد الإلكتروني إنتهت فترة صلاحيته أو إنه غير صالح. يرجى " " إصدار البريد الإلكتروني طلب تأكيد الجديدة ." #: templates/account/login.html:6 templates/account/login.html:10 #: templates/account/login.html:43 msgid "Sign In" msgstr "تسجيل الدخول" #: templates/account/login.html:15 #, python-format msgid "" "Please sign in with one\n" "of your existing third party accounts. Or, sign " "up\n" "for a %(site_name)s account and sign in below:" msgstr "" "يرجى تسجيل الدخول مع واحد من حسابات طرف ثالث الموجودة لديك‪.‬ كما يمكنك الاشتراك‪‬ للتحصل على حساب في الموقع %(site_name)s " "ثم تسجيل الدخول بالأسفل‪.‬" #: templates/account/login.html:25 msgid "or" msgstr "أو" #: templates/account/login.html:32 #, python-format msgid "" "If you have not created an account yet, then please\n" "sign up first." msgstr "" "إذا لم تكن قد أنشأت حسابا حتى الآن، فالرجاء الاشتراك أولا." #: templates/account/login.html:42 msgid "Forgot Password?" msgstr "هل نسيت كلمة المرور؟" #: templates/account/logout.html:5 templates/account/logout.html:8 #: templates/account/logout.html:17 msgid "Sign Out" msgstr "تسجيل الخروج" #: templates/account/logout.html:10 msgid "Are you sure you want to sign out?" msgstr "هل تريد حقا ان تسجل خروجك؟" #: templates/account/messages/cannot_delete_primary_email.txt:2 #, python-format msgid "You cannot remove your primary e-mail address (%(email)s)." msgstr "لا يمكنك إزالة عنوان البريد الإلكتروني الرئيسي الخاص بك (%(email)s)." #: templates/account/messages/email_confirmation_sent.txt:2 #, python-format msgid "Confirmation e-mail sent to %(email)s." msgstr "قد أرسلنا رسالة تأكيد إلى العنوان %(email)s." #: templates/account/messages/email_confirmed.txt:2 #, python-format msgid "You have confirmed %(email)s." msgstr "قد اكّدت عنوان البريد الالكتروني %(email)s." #: templates/account/messages/email_deleted.txt:2 #, python-format msgid "Removed e-mail address %(email)s." msgstr "قد أزلنا عنوان البريد الاكتروني %(email)s." #: templates/account/messages/logged_in.txt:4 #, python-format msgid "Successfully signed in as %(name)s." msgstr "لقد سجلت الدخول بنجاح يا %(name)s." #: templates/account/messages/logged_out.txt:2 msgid "You have signed out." msgstr "تم تسجيل خروجك." #: templates/account/messages/password_changed.txt:2 msgid "Password successfully changed." msgstr "تم تغيير كلمة المرور بنجاح‪.‬" #: templates/account/messages/password_set.txt:2 msgid "Password successfully set." msgstr "تم إعداد كلمة المرور بنجاح‪.‬" #: templates/account/messages/primary_email_set.txt:2 msgid "Primary e-mail address set." msgstr "تمّ تعيين عنوان البريد الالكتروني الرئيسي‪.‬" #: templates/account/messages/unverified_primary_email.txt:2 msgid "Your primary e-mail address must be verified." msgstr "لا بد من التحقق من صحة البريد الإلكتروني‪.‬" #: templates/account/password_change.html:5 #: templates/account/password_change.html:8 #: templates/account/password_change.html:13 #: templates/account/password_reset_from_key.html:4 #: templates/account/password_reset_from_key.html:7 #: templates/account/password_reset_from_key_done.html:4 #: templates/account/password_reset_from_key_done.html:7 msgid "Change Password" msgstr "غيّر كلمة المرور" #: templates/account/password_reset.html:6 #: templates/account/password_reset.html:10 #: templates/account/password_reset_done.html:6 #: templates/account/password_reset_done.html:9 msgid "Password Reset" msgstr "إعادة ضبط كلمة المرور" #: templates/account/password_reset.html:15 msgid "" "Forgotten your password? Enter your e-mail address below, and we'll send you " "an e-mail allowing you to reset it." msgstr "" "هل نسيت كلمة المرور؟ أدخل عنوان البريد الإلكتروني أدناه، وسوف نرسل لك عن " "طريق البريد الإلكتروني مما يتيح لك إعادة تعيينها." #: templates/account/password_reset.html:20 msgid "Reset My Password" msgstr "إعادة تعيين كلمة المرور الخاصة بي" #: templates/account/password_reset.html:23 msgid "Please contact us if you have any trouble resetting your password." msgstr "" "يرجى الاتصال بنا إذا كان لديك أي مشكلة في إعادة تعيين كلمة المرور الخاصة بك." #: templates/account/password_reset_done.html:15 msgid "" "We have sent you an e-mail. Please contact us if you do not receive it " "within a few minutes." msgstr "" "لقد قمنا بإرسال رسالة اليك عبر البريد الإلكتروني. يرجى الاتصال بنا اذا كنت " "لا تتلقى في غضون بضع دقائق." #: templates/account/password_reset_from_key.html:7 msgid "Bad Token" msgstr "" #: templates/account/password_reset_from_key.html:11 #, python-format msgid "" "The password reset link was invalid, possibly because it has already been " "used. Please request a new password reset." msgstr "" "كان رابط إعادة تعيين كلمة المرور غير صالحة، ربما لأنه قد تم استخدامه مسبقا. " "يرجى طلب كلمة المرور الجديدة." #: templates/account/password_reset_from_key.html:17 msgid "change password" msgstr "تغيير كلمة المرور" #: templates/account/password_reset_from_key.html:20 #: templates/account/password_reset_from_key_done.html:8 msgid "Your password is now changed." msgstr "تم تغيير كلمة المرور الخاصة بك" #: templates/account/password_set.html:5 templates/account/password_set.html:8 #: templates/account/password_set.html:13 msgid "Set Password" msgstr "تعيين كلمة مرور" #: templates/account/signup.html:5 templates/socialaccount/signup.html:5 msgid "Signup" msgstr "الاشتراك" #: templates/account/signup.html:8 templates/account/signup.html:18 #: templates/socialaccount/signup.html:8 templates/socialaccount/signup.html:19 msgid "Sign Up" msgstr "الاشتراك" #: templates/account/signup.html:10 #, python-format msgid "" "Already have an account? Then please sign in." msgstr "لديك حساب؟ من فضلك قم بتسجيل الدخول." #: templates/account/signup_closed.html:5 #: templates/account/signup_closed.html:8 msgid "Sign Up Closed" msgstr "الاشتراك مغلق" #: templates/account/signup_closed.html:10 msgid "We are sorry, but the sign up is currently closed." msgstr "نحن آسفون‪:‬ الاشتراك مغلق حاليا‪.‬" #: templates/account/snippets/already_logged_in.html:5 msgid "Note" msgstr "ملاحظة" #: templates/account/snippets/already_logged_in.html:5 #, python-format msgid "you are already logged in as %(user_display)s." msgstr "تم تسجيل دخولك بالفعل يا %(user_display)s." #: templates/account/verification_sent.html:5 #: templates/account/verification_sent.html:8 #: templates/account/verified_email_required.html:5 #: templates/account/verified_email_required.html:8 msgid "Verify Your E-mail Address" msgstr "التحقق من عنوان البريد الإلكتروني الخاص بك" #: templates/account/verification_sent.html:10 msgid "" "We have sent an e-mail to you for verification. Follow the link provided to " "finalize the signup process. Please contact us if you do not receive it " "within a few minutes." msgstr "" "لقد أرسلنا رسالة بريد إلكتروني لك للتحقق. اتبع الارتباط المتوفر لإتمام عملية " "التسجيل. يرجى الاتصال بنا إذا كنت لا تحصل عليه في غضون دقائق قليلة." #: templates/account/verified_email_required.html:12 msgid "" "This part of the site requires us to verify that\n" "you are who you claim to be. For this purpose, we require that you\n" "verify ownership of your e-mail address. " msgstr "" "هذا الجزء من الموقع يتطلب منك تثبيت هويتك. ولهذا الغرض، نطلب لك التحقق من " "ملكيتك لعنوان البريد الإلكتروني الخاص بك." #: templates/account/verified_email_required.html:16 msgid "" "We have sent an e-mail to you for\n" "verification. Please click on the link inside this e-mail. Please\n" "contact us if you do not receive it within a few minutes." msgstr "" "لقد أرسلنا رسالة بريد إلكتروني لك للتحقق. الرجاء النقر فوق الارتباط داخل هذا " "البريد الإلكتروني. يرجى الاتصال بنا إذا كنت لا تحصل عليه في غضون دقائق قليلة." #: templates/account/verified_email_required.html:20 #, python-format msgid "" "Note: you can still change your e-" "mail address." msgstr "" "ملاحظة: مازال يمكنك تغيير عنوان " "البريد الإلكتروني الخاص بك." #: templates/openid/login.html:9 msgid "OpenID Sign In" msgstr "تسجيل الدخول عبر OpenID" #: templates/socialaccount/authentication_error.html:5 #: templates/socialaccount/authentication_error.html:8 msgid "Social Network Login Failure" msgstr "فشل تسجيل الدخول الاجتماعي" #: templates/socialaccount/authentication_error.html:10 msgid "" "An error occurred while attempting to login via your social network account." msgstr "" "حدث خطأ أثناء محاولة تسجيل الدخول عن طريق حساب الشبكة الاجتماعية الخاصة بك." #: templates/socialaccount/connections.html:5 #: templates/socialaccount/connections.html:8 msgid "Account Connections" msgstr "اتصالات الحساب" #: templates/socialaccount/connections.html:11 msgid "" "You can sign in to your account using any of the following third party " "accounts:" msgstr "" "يمكنك تسجيل الدخول إلى الحساب الخاص بك باستخدام أي من حسابات الطرف الثالث " "التالية:" #: templates/socialaccount/connections.html:43 msgid "" "You currently have no social network accounts connected to this account." msgstr "ليس لديك حاليا اي شبكة اجتماعية متصلة بهذا الحساب." #: templates/socialaccount/connections.html:46 msgid "Add a 3rd Party Account" msgstr "إضافة حساب طرف الثالث" #: templates/socialaccount/login_cancelled.html:5 #: templates/socialaccount/login_cancelled.html:9 msgid "Login Cancelled" msgstr "الدخول تم إلغاؤه‪.‬" #: templates/socialaccount/login_cancelled.html:13 #, python-format msgid "" "You decided to cancel logging in to our site using one of your existing " "accounts. If this was a mistake, please proceed to sign in." msgstr "" "قد قررت إلغاء تسجيل الدخول إلى الموقع باستخدام أحد الحسابات الموجودة الخاصة " "بك. إذا كان هذا خطأ، الرجاء المتابعة تسجيل الدخول." #: templates/socialaccount/messages/account_connected.txt:2 msgid "The social account has been connected." msgstr "قد تم ربط الحساب الاجتماعي." #: templates/socialaccount/messages/account_connected_other.txt:2 msgid "The social account is already connected to a different account." msgstr "الحساب الاجتماعي متصل مسبقاً إلى حساب مختلف." #: templates/socialaccount/messages/account_disconnected.txt:2 msgid "The social account has been disconnected." msgstr "تم قطع الاتصال بالحساب الاجتماعي." #: templates/socialaccount/signup.html:10 #, python-format msgid "" "You are about to use your %(provider_name)s account to login to\n" "%(site_name)s. As a final step, please complete the following form:" msgstr "" "أنت على وشك استخدام حسابك من %(provider_name)s لتسجيل الدخول إلى " "%(site_name)s. وكخطوة أخيرة، يرجى ملء النموذج التالي:" #~ msgid "The login and/or password you specified are not correct." #~ msgstr "تسجيل الدخول و / أو كلمة المرور الذي حددته غير صحيحة." #~ msgid "Usernames can only contain letters, digits and @/./+/-/_." #~ msgstr "يمكن أن تحتوي أسماء المستخدمين إلا على الحروف، الأرقام و @/‪.‬/-/+/_." #~ msgid "This username is already taken. Please choose another." #~ msgstr "اسم المستخدم مسجل مسبقا. الرجاء اختيار اسم اخر‪.‬" #, fuzzy #~| msgid "Sign In" #~ msgid "Shopify Sign In" #~ msgstr "تسجيل الدخول" #~ msgid "" #~ "You have confirmed that %(email)s is an " #~ "e-mail address for user %(user_display)s." #~ msgstr "" #~ "لقد اكّدت ان %(email)s هو من إحدى عناوين " #~ "للمستعمل %(user_display)s." #~ msgid "Thanks for using our site!" #~ msgstr "شكرا لاستخدام موقعنا!" #~ msgid "Confirmation e-mail sent to %(email)s" #~ msgstr "דואל אישור נשלח אל %(email)s" #~ msgid "Delete Password" #~ msgstr "מחיקת סיסמא" #~ msgid "" #~ "You may delete your password since you are currently logged in using " #~ "OpenID." #~ msgstr "אתה רשאי למחוק את סיסמאתך כיוון שהנך מחובר באמצעות OpenID" #~ msgid "delete my password" #~ msgstr "מחק סיסמא" #~ msgid "Password Deleted" #~ msgstr "הסיסמא נמחקה" #~ msgid "Your password has been deleted." #~ msgstr "סיסמתך נמחקה מהמערכת." django-allauth-0.35.0/allauth/locale/hr/0000755000076500000240000000000013235133532020752 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/hr/LC_MESSAGES/0000755000076500000240000000000013235133532022537 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/hr/LC_MESSAGES/django.mo0000644000076500000240000003227713235132043024345 0ustar pennersrstaff00000000000000w \ 6v       I wc L "( K U e m &  9     / p@ _ 28D9}  ' >_ds|-"l=B" ! '4<EM\cs#A6@-n&).?X;#?<R 4 .27j\P:H*$,$Q-o #(.1`li8 " 3 G [ h | H Ep!(!!!" ">'"f",w""" " ""y"dm#D#:$8R$$$ $$2$+%&4%[%d%u%}%%%)%"%!&0&lN&F&' ''%'" ( .(9("@(c(z((( (( ((0(')*7)Gb)D))#*&*G*,-+0Z+%+B+@+s5,, ;-H-GX-- ---2- ..ex//`~0=01a12&23+)31U363!3+3 4 4 +4 94G4V4e4m4s4w44 4*4M2&"r7^:`YAD4q/a>W@8PB;9C=u[lgEV\m'jewTSk(J3$? QOf,GRpNs ]XdIF*%< H#o-!i0LbKcnZ hUv _+. 51t)6Note: you can still change your e-mail address.A user is already registered with this e-mail address.AccountAccount ConnectionsAccount InactiveAccountsAdd E-mailAdd E-mail AddressAdd a 3rd Party AccountAlready have an account? Then please sign in.An account already exists with this e-mail address. Please sign in to that account first, then connect your %s account.An error occurred while attempting to login via your social network account.Are you sure you want to sign out?Bad TokenChange PasswordConfirmConfirm E-mail AddressConfirmation e-mail sent to %(email)s.Current PasswordDo you really want to remove the selected e-mail address?E-mailE-mail (optional)E-mail AddressesE-mail addressForgot Password?Forgotten your password? Enter your e-mail address below, and we'll send you an e-mail allowing you to reset it.If you have not created an account yet, then please sign up first.In case you forgot, your username is %(username)s.Invalid response while obtaining access token from "%s".Invalid response while obtaining request token from "%s".Login CancelledMake PrimaryNew PasswordNew Password (again)No access to private resources at "%s".No access token saved for "%s".No request token saved for "%s".NoteOpenID Sign InPasswordPassword (again)Password ResetPassword Reset E-mailPassword must be a minimum of {0} characters.Password successfully changed.Password successfully set.Please Confirm Your E-mail AddressPlease confirm that %(email)s is an e-mail address for user %(user_display)s.Please contact us if you have any trouble resetting your password.Please sign in with one of your existing third party accounts. Or, sign up for a %(site_name)s account and sign in below:Please type your current password.PrimaryPrimary e-mail address set.Re-send VerificationRemember MeRemoveRemoved e-mail address %(email)s.Reset My PasswordSet PasswordSign InSign OutSign UpSign Up ClosedSignupSocial AccountsSocial Network Login FailureSuccessfully signed in as %(name)s.The e-mail address and/or password you specified are not correct.The e-mail address is not assigned to any user accountThe following e-mail addresses are associated with your account:The password reset link was invalid, possibly because it has already been used. Please request a new password reset.The social account has been connected.The social account has been disconnected.The social account is already connected to a different account.The username and/or password you specified are not correct.This account is currently inactive.This account is inactive.This e-mail address is already associated with another account.This e-mail address is already associated with this account.This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request.This part of the site requires us to verify that you are who you claim to be. For this purpose, we require that you verify ownership of your e-mail address. UnverifiedUsernameUsername can not be used. Please use other username.Username or e-mailVerifiedVerify Your E-mail AddressWarning:We are sorry, but the sign up is currently closed.We have sent an e-mail to you for verification. Please click on the link inside this e-mail. Please contact us if you do not receive it within a few minutes.We have sent an e-mail to you for verification. Follow the link provided to finalize the signup process. Please contact us if you do not receive it within a few minutes.We have sent you an e-mail. Please contact us if you do not receive it within a few minutes.You are about to use your %(provider_name)s account to login to %(site_name)s. As a final step, please complete the following form:You can sign in to your account using any of the following third party accounts:You cannot remove your primary e-mail address (%(email)s).You currently do not have any e-mail address set up. You should really add an e-mail address so you can receive notifications, reset your password, etc.You currently have no social network accounts connected to this account.You decided to cancel logging in to our site using one of your existing accounts. If this was a mistake, please proceed to sign in.You have confirmed %(email)s.You have signed out.You must type the same password each time.Your account has no password set up.Your account has no verified e-mail address.Your password is now changed.Your primary e-mail address must be verified.change passworde-mail addressemail addressemail addressesemail confirmationemail confirmationsfield labelLoginnameorprimaryuserverifiedyou are already logged in as %(user_display)s.Project-Id-Version: PACKAGE VERSION Report-Msgid-Bugs-To: POT-Creation-Date: 2018-02-02 12:55-0600 PO-Revision-Date: 2014-08-12 00:31+0200 Last-Translator: Language-Team: Bojan Mihelac Language: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2; X-Generator: Poedit 1.5.4 X-Translated-Using: django-rosetta 0.7.2 Napomena: još uvijek možete izmijeniti vašu e-mail adresu.Već postoji korisnik registriran s ovom e-mail adresom.Korisnički računPovezani računiRačun je neaktivanKorisnički računiDodaj e-mailDodaj e-mail adresuDodaj račun društvenih mreža.Već imate korisnički račun? Prijavite se!Korisnički račun s ovom e-mail adresom već postoji. Molimo da se prvo ulogirate pod tim korisničkim računom i spojite svoj %s računDošlo je do greške pri prijavi s vašim računom društvene mreže.Jeste li sigurni da se želite odjaviti?Neispravan tokenPromjena lozinkePotvrdaPotvrdite vašu e-mail adresuE-mail s linkom za potvrdu registracije je poslan na %(email)sTrenutna lozinkaDa li zaista želite ukloniti e-mail adresu?E-mailE-mail (neobavezno)E-mail adreseE-mail adresaZaboravili ste lozinku?Zaboravili ste lozinku? Unesite vašu e-mail adresu i poslati ćemo vam e-mail uz pomoć kojeg ćete promijeniti lozinku.Ukoliko još niste napravili korisnički račun, prvo se registrirajte.Za slučaj da ste zaboravili, vaše korisničko ime je %(username)s.Neispravan odaziv pri dohvatu pristupnog tokena od \"%s\".Neispravan odaziv pri dohvatu tokena zahtjeva od \"%s\".Prijava otkazanaOznači kao primarnuNova lozinkaNova lozinka (ponovno)Nemate pristup zaštičenim sadržajima na \"%s\".Token za pristup za \"%s\" nije pohranjen.Ne postoji pohranjeni token za \"%s\".NapomenaPrijava s OpenIDLozinkaLozinka (ponovno)Resetiranje lozinkeE-mail za resetiranje lozinkeLozinka treba imati najmanje {0} znakova.Lozinka je uspješno promijenjena.Lozinka je uspješno postavljena.Potvrdite vašu e-mail adresuMolimo potvrdite da %(email)s je e-mail adresa za korisnika %(user_display)s.Molimo konktaktirajte nas ukoliko imate problema pri promjeni lozinke.Molimo prijavite se s jednim od vaših postojećih računa društvenih mreža ili se registrirajte za korisnički račun na %(site_name)s i prijavite se.Molimo unesite trenutnu lozinku.PrimarnaPrimarna e-mail adresa je postavljenaPonovno pošalji e-mail za potvrduZapamti meUkloniUklonjena e-mail adresa %(email)s.Resetiraj moju lozinkuPostavljanje lozinkePrijavaOdjavaRegistracijaPrijave zatvoreneRegistracijaKorisnički računiGreška pri prijavi s računom društvene mrežeUspješno ste prijavljeni kao %(name)s.E-mail adresa i/ili lozinka nisu ispravni.Upisana e-mail adresa nije dodijeljena niti jednom korisničkom računuSlijedeće e-mail adrese su povezane sa vašim korisničkim računomLink za poništavanje lozinke je nevažeći, vjerojatno jer je već bio korišten. Molimo vas ponovite zahtjev za resetiranje lozinke.Račun društvene mreže je povezanRačun društvene mreže je isključenKorisnički račun društvene mreže je već povezan s drugim računom.Korisničko ime i/ili lozinka nisu ispravni.Ovaj korisnički račun je privremeno neaktivan.Ovaj korisnički račun je neaktivan.E-mail adresa je već registrirana s drugim korisničkim računom.E-mail adresa je već registrirana s ovim korisničkim računom.Ovaj link za potvrdu je istekao ili je neispravan. Zatražite novi e-mail za potvrdu.Ovaj dio web stranice zahtjeva da potvrdite da jeste tko tvrdite da jeste. Zbog toga je nužno da potvrdite da ste vi vlasnik dane e-mail adrese.NepotvrđenaKorisničko imeNije moguće koristiti upisano korisničko ime. Molimo odaberite drugo.Korisničko ime ili e-mailPotvrđenaPotvrdite vašu e-mail adresuPažnja:Na žalost, registracija je privremeno nedostupna.Poslali smo e-mail na vašu adresu u svrhu potvrde. Molimo kliknite na link unutar e-maila. Molimo kontaktirajte nas ako ga ne primite unutar nekoliko sljedećih minuta.Poslali smo e-mail u svrhu potvrde. Sljedite dani link za završetak postupka registracije. Molimo kontaktirajte nas ukoliko ga ne primite unutar sljedećih nekoliko minuta.Poslali smo vam e-mail. Molimo kontaktirajte nas ako ga ne primite unutar nekoliko sljedećih minuta.Odabrali ste da ćete koristiti vaš %(provider_name)s račun za prijavu u stranicu %(site_name)s. Kao posljednji korak, molimo vas ispunite sljedeći obrazac:Možete se prijaviti u vaš korisnički račun koristeći jedan od sljedećih povezanih računa:Nije moguće ukloniti vašu primarnu e-mail adresu %(email)s Trenutno nemate postavljenu niti jednu e-mail adresu. Postavite e-mail adresu kako biste mogli primati obavijesti, promijeniti lozinku i slično.Trenutno nemate niti jedan račun s društvenih mreža povezan s trenutnim korisničkim računom.Odlučili ste da se ne želite prijaviti na našu stranicu koristeći jedan od vaših postojećih računa s društvenih mreža. Ako je to bila greška, molimo kliknite i prijavite se.Potvrdili ste e-mail adresu %(email)s.Uspješno ste se odjavili.Potrebno je upisati istu lozinku svaki put.Vaš korisnički račun nema postavljenu lozinku.Vaš korisnički račun nema potvrđenu e-mail adresu.Lozinka je uspješno promjenjena.Vaša primarna adresa more biti potvrđena.promjena lozinkee-mail adresaE-mail adresaE-mail adreseE-mail potvrdaE-mail potvrdePrijavanaziviliprimarnakorisnikpotvrđenaveć ste prijavljeni kao %(user_display)s.django-allauth-0.35.0/allauth/locale/hr/LC_MESSAGES/django.po0000644000076500000240000006210713235132037024346 0ustar pennersrstaff00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Bojan Mihelac , 2013-05-22 # Mislav Cimperšak . 2013-07-09 # Goran Cetušić . 2015-11-27 # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-02-02 12:55-0600\n" "PO-Revision-Date: 2014-08-12 00:31+0200\n" "Last-Translator: \n" "Language-Team: Bojan Mihelac \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Generator: Poedit 1.5.4\n" "X-Translated-Using: django-rosetta 0.7.2\n" #: account/adapter.py:45 msgid "Username can not be used. Please use other username." msgstr "Nije moguće koristiti upisano korisničko ime. Molimo odaberite drugo." #: account/adapter.py:49 msgid "Too many failed login attempts. Try again later." msgstr "" #: account/adapter.py:51 msgid "A user is already registered with this e-mail address." msgstr "Već postoji korisnik registriran s ovom e-mail adresom." #: account/adapter.py:288 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "Lozinka treba imati najmanje {0} znakova." #: account/apps.py:7 msgid "Accounts" msgstr "Korisnički računi" #: account/forms.py:61 account/forms.py:398 msgid "You must type the same password each time." msgstr "Potrebno je upisati istu lozinku svaki put." #: account/forms.py:91 account/forms.py:365 account/forms.py:476 msgid "Password" msgstr "Lozinka" #: account/forms.py:92 msgid "Remember Me" msgstr "Zapamti me" #: account/forms.py:98 msgid "This account is currently inactive." msgstr "Ovaj korisnički račun je privremeno neaktivan." #: account/forms.py:101 msgid "The e-mail address and/or password you specified are not correct." msgstr "E-mail adresa i/ili lozinka nisu ispravni." #: account/forms.py:104 msgid "The username and/or password you specified are not correct." msgstr "Korisničko ime i/ili lozinka nisu ispravni." #: account/forms.py:113 account/forms.py:268 account/forms.py:426 #: account/forms.py:495 msgid "E-mail address" msgstr "E-mail adresa" #: account/forms.py:115 account/forms.py:301 account/forms.py:421 #: account/forms.py:490 msgid "E-mail" msgstr "E-mail" #: account/forms.py:120 account/forms.py:123 account/forms.py:260 #: account/forms.py:264 msgid "Username" msgstr "Korisničko ime" #: account/forms.py:130 msgid "Username or e-mail" msgstr "Korisničko ime ili e-mail" #: account/forms.py:133 msgctxt "field label" msgid "Login" msgstr "Prijava" #: account/forms.py:292 #, fuzzy #| msgid "E-mail (optional)" msgid "E-mail (again)" msgstr "E-mail (neobavezno)" #: account/forms.py:296 #, fuzzy #| msgid "email confirmation" msgid "E-mail address confirmation" msgstr "E-mail potvrda" #: account/forms.py:304 msgid "E-mail (optional)" msgstr "E-mail (neobavezno)" #: account/forms.py:345 #, fuzzy #| msgid "You must type the same password each time." msgid "You must type the same email each time." msgstr "Potrebno je upisati istu lozinku svaki put." #: account/forms.py:368 account/forms.py:477 msgid "Password (again)" msgstr "Lozinka (ponovno)" #: account/forms.py:432 msgid "This e-mail address is already associated with this account." msgstr "E-mail adresa je već registrirana s ovim korisničkim računom." #: account/forms.py:434 msgid "This e-mail address is already associated with another account." msgstr "E-mail adresa je već registrirana s drugim korisničkim računom." #: account/forms.py:456 msgid "Current Password" msgstr "Trenutna lozinka" #: account/forms.py:457 account/forms.py:546 msgid "New Password" msgstr "Nova lozinka" #: account/forms.py:458 account/forms.py:547 msgid "New Password (again)" msgstr "Nova lozinka (ponovno)" #: account/forms.py:466 msgid "Please type your current password." msgstr "Molimo unesite trenutnu lozinku." #: account/forms.py:504 msgid "The e-mail address is not assigned to any user account" msgstr "Upisana e-mail adresa nije dodijeljena niti jednom korisničkom računu" #: account/forms.py:568 msgid "The password reset token was invalid." msgstr "" #: account/models.py:23 msgid "user" msgstr "korisnik" #: account/models.py:27 account/models.py:81 msgid "e-mail address" msgstr "e-mail adresa" #: account/models.py:28 msgid "verified" msgstr "potvrđena" #: account/models.py:29 msgid "primary" msgstr "primarna" #: account/models.py:34 msgid "email address" msgstr "E-mail adresa" #: account/models.py:35 msgid "email addresses" msgstr "E-mail adrese" #: account/models.py:83 msgid "created" msgstr "" #: account/models.py:85 msgid "sent" msgstr "" #: account/models.py:86 socialaccount/models.py:55 msgid "key" msgstr "" #: account/models.py:91 msgid "email confirmation" msgstr "E-mail potvrda" #: account/models.py:92 msgid "email confirmations" msgstr "E-mail potvrde" #: socialaccount/adapter.py:26 #, python-format msgid "" "An account already exists with this e-mail address. Please sign in to that " "account first, then connect your %s account." msgstr "" "Korisnički račun s ovom e-mail adresom već postoji. Molimo da se prvo " "ulogirate pod tim korisničkim računom i spojite svoj %s račun" #: socialaccount/adapter.py:131 msgid "Your account has no password set up." msgstr "Vaš korisnički račun nema postavljenu lozinku." #: socialaccount/adapter.py:138 msgid "Your account has no verified e-mail address." msgstr "Vaš korisnički račun nema potvrđenu e-mail adresu." #: socialaccount/apps.py:7 msgid "Social Accounts" msgstr "Korisnički računi" #: socialaccount/models.py:43 socialaccount/models.py:77 msgid "provider" msgstr "" #: socialaccount/models.py:46 msgid "name" msgstr "naziv" #: socialaccount/models.py:48 msgid "client id" msgstr "" #: socialaccount/models.py:50 msgid "App ID, or consumer key" msgstr "" #: socialaccount/models.py:51 msgid "secret key" msgstr "" #: socialaccount/models.py:53 msgid "API secret, client secret, or consumer secret" msgstr "" #: socialaccount/models.py:58 msgid "Key" msgstr "" #: socialaccount/models.py:66 msgid "social application" msgstr "" #: socialaccount/models.py:67 msgid "social applications" msgstr "" #: socialaccount/models.py:96 msgid "uid" msgstr "" #: socialaccount/models.py:98 msgid "last login" msgstr "" #: socialaccount/models.py:100 msgid "date joined" msgstr "" #: socialaccount/models.py:102 msgid "extra data" msgstr "" #: socialaccount/models.py:106 msgid "social account" msgstr "" #: socialaccount/models.py:107 msgid "social accounts" msgstr "" #: socialaccount/models.py:133 msgid "token" msgstr "" #: socialaccount/models.py:135 msgid "\"oauth_token\" (OAuth1) or access token (OAuth2)" msgstr "" #: socialaccount/models.py:138 msgid "token secret" msgstr "" #: socialaccount/models.py:140 msgid "\"oauth_token_secret\" (OAuth1) or refresh token (OAuth2)" msgstr "" #: socialaccount/models.py:142 msgid "expires at" msgstr "" #: socialaccount/models.py:146 msgid "social application token" msgstr "" #: socialaccount/models.py:147 msgid "social application tokens" msgstr "" #: socialaccount/providers/douban/views.py:36 msgid "Invalid profile data" msgstr "" #: socialaccount/providers/oauth/client.py:78 #, python-format msgid "Invalid response while obtaining request token from \"%s\"." msgstr "Neispravan odaziv pri dohvatu tokena zahtjeva od \\\"%s\\\"." #: socialaccount/providers/oauth/client.py:109 #, python-format msgid "Invalid response while obtaining access token from \"%s\"." msgstr "Neispravan odaziv pri dohvatu pristupnog tokena od \\\"%s\\\"." #: socialaccount/providers/oauth/client.py:128 #, python-format msgid "No request token saved for \"%s\"." msgstr "Ne postoji pohranjeni token za \\\"%s\\\"." #: socialaccount/providers/oauth/client.py:177 #, python-format msgid "No access token saved for \"%s\"." msgstr "Token za pristup za \\\"%s\\\" nije pohranjen." #: socialaccount/providers/oauth/client.py:197 #, python-format msgid "No access to private resources at \"%s\"." msgstr "Nemate pristup zaštičenim sadržajima na \\\"%s\\\"." #: templates/account/account_inactive.html:5 #: templates/account/account_inactive.html:8 msgid "Account Inactive" msgstr "Račun je neaktivan" #: templates/account/account_inactive.html:10 msgid "This account is inactive." msgstr "Ovaj korisnički račun je neaktivan." #: templates/account/email.html:5 msgid "Account" msgstr "Korisnički račun" #: templates/account/email.html:8 msgid "E-mail Addresses" msgstr "E-mail adrese" #: templates/account/email.html:10 msgid "The following e-mail addresses are associated with your account:" msgstr "Slijedeće e-mail adrese su povezane sa vašim korisničkim računom" #: templates/account/email.html:24 msgid "Verified" msgstr "Potvrđena" #: templates/account/email.html:26 msgid "Unverified" msgstr "Nepotvrđena" #: templates/account/email.html:28 msgid "Primary" msgstr "Primarna" #: templates/account/email.html:34 msgid "Make Primary" msgstr "Označi kao primarnu" #: templates/account/email.html:35 msgid "Re-send Verification" msgstr "Ponovno pošalji e-mail za potvrdu" #: templates/account/email.html:36 templates/socialaccount/connections.html:35 msgid "Remove" msgstr "Ukloni" #: templates/account/email.html:43 msgid "Warning:" msgstr "Pažnja:" #: templates/account/email.html:43 msgid "" "You currently do not have any e-mail address set up. You should really add " "an e-mail address so you can receive notifications, reset your password, etc." msgstr "" "Trenutno nemate postavljenu niti jednu e-mail adresu. Postavite e-mail " "adresu kako biste mogli primati obavijesti, promijeniti lozinku i slično." #: templates/account/email.html:48 msgid "Add E-mail Address" msgstr "Dodaj e-mail adresu" #: templates/account/email.html:53 msgid "Add E-mail" msgstr "Dodaj e-mail" #: templates/account/email.html:62 msgid "Do you really want to remove the selected e-mail address?" msgstr "Da li zaista želite ukloniti e-mail adresu?" #: templates/account/email/email_confirmation_message.txt:1 #, fuzzy, python-format #| msgid "" #| "Hello from %(site_name)s!\n" #| "\n" #| "You're receiving this e-mail because user %(user_display)s at " #| "%(site_domain)s has given yours as an e-mail address to connect their " #| "account.\n" #| "\n" #| "To confirm this is correct, go to %(activate_url)s\n" msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because user %(user_display)s has given yours " "as an e-mail address to connect their account.\n" "\n" "To confirm this is correct, go to %(activate_url)s\n" msgstr "" "Pozdravi od %(site_name)s!\n" "\n" "Primili ste ovaj e-mail jer je korisnik %(user_display)s na stranici " "%(site_domain)s upisao ovu e-mail adresu kao svoju.\n" "\n" "Za potvrdu, kliknite %(activate_url)s\n" #: templates/account/email/email_confirmation_message.txt:7 #, python-format msgid "" "Thank you from %(site_name)s!\n" "%(site_domain)s" msgstr "" #: templates/account/email/email_confirmation_subject.txt:3 msgid "Please Confirm Your E-mail Address" msgstr "Potvrdite vašu e-mail adresu" #: templates/account/email/password_reset_key_message.txt:1 #, fuzzy, python-format #| msgid "" #| "Hello from %(site_name)s!\n" #| "\n" #| "You're receiving this e-mail because you or someone else has requested a " #| "password for your user account at %(site_domain)s.\n" #| "It can be safely ignored if you did not request a password reset. Click " #| "the link below to reset your password." msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because you or someone else has requested a " "password for your user account.\n" "It can be safely ignored if you did not request a password reset. Click the " "link below to reset your password." msgstr "" "Pozdravi od %(site_name)s!\n" "\n" "Primili ste ovaj e-mail jer ste vi ili netko drugi zatražili lozinku za vaš " "korisnički račun na %(site_domain)s.\n" "Ako niste zatražili resetiranje lozinke, slobodno zanemarite ovaj e-mail. " "Kliknite na sljedeći link za resetiranje lozinke." #: templates/account/email/password_reset_key_message.txt:8 #, python-format msgid "In case you forgot, your username is %(username)s." msgstr "Za slučaj da ste zaboravili, vaše korisničko ime je %(username)s." #: templates/account/email/password_reset_key_message.txt:10 #, python-format msgid "" "Thank you for using %(site_name)s!\n" "%(site_domain)s" msgstr "" #: templates/account/email/password_reset_key_subject.txt:3 msgid "Password Reset E-mail" msgstr "E-mail za resetiranje lozinke" #: templates/account/email_confirm.html:6 #: templates/account/email_confirm.html:10 msgid "Confirm E-mail Address" msgstr "Potvrdite vašu e-mail adresu" #: templates/account/email_confirm.html:16 #, python-format msgid "" "Please confirm that %(email)s is an e-mail " "address for user %(user_display)s." msgstr "" "Molimo potvrdite da %(email)s je e-mail " "adresa za korisnika %(user_display)s." #: templates/account/email_confirm.html:20 msgid "Confirm" msgstr "Potvrda" #: templates/account/email_confirm.html:27 #, python-format msgid "" "This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request." msgstr "" "Ovaj link za potvrdu je istekao ili je neispravan. Zatražite novi e-mail za potvrdu." #: templates/account/login.html:6 templates/account/login.html:10 #: templates/account/login.html:43 msgid "Sign In" msgstr "Prijava" #: templates/account/login.html:15 #, python-format msgid "" "Please sign in with one\n" "of your existing third party accounts. Or, sign " "up\n" "for a %(site_name)s account and sign in below:" msgstr "" "Molimo prijavite se s jednim od vaših postojećih računa društvenih mreža ili " "se registrirajte za korisnički račun na " "%(site_name)s i prijavite se." #: templates/account/login.html:25 msgid "or" msgstr "ili" #: templates/account/login.html:32 #, python-format msgid "" "If you have not created an account yet, then please\n" "sign up first." msgstr "" "Ukoliko još niste napravili korisnički račun, prvo se registrirajte." #: templates/account/login.html:42 msgid "Forgot Password?" msgstr "Zaboravili ste lozinku?" #: templates/account/logout.html:5 templates/account/logout.html:8 #: templates/account/logout.html:17 msgid "Sign Out" msgstr "Odjava" #: templates/account/logout.html:10 msgid "Are you sure you want to sign out?" msgstr "Jeste li sigurni da se želite odjaviti?" #: templates/account/messages/cannot_delete_primary_email.txt:2 #, python-format msgid "You cannot remove your primary e-mail address (%(email)s)." msgstr "Nije moguće ukloniti vašu primarnu e-mail adresu %(email)s " #: templates/account/messages/email_confirmation_sent.txt:2 #, python-format msgid "Confirmation e-mail sent to %(email)s." msgstr "E-mail s linkom za potvrdu registracije je poslan na %(email)s" #: templates/account/messages/email_confirmed.txt:2 #, python-format msgid "You have confirmed %(email)s." msgstr "Potvrdili ste e-mail adresu %(email)s." #: templates/account/messages/email_deleted.txt:2 #, python-format msgid "Removed e-mail address %(email)s." msgstr "Uklonjena e-mail adresa %(email)s." #: templates/account/messages/logged_in.txt:4 #, python-format msgid "Successfully signed in as %(name)s." msgstr "Uspješno ste prijavljeni kao %(name)s." #: templates/account/messages/logged_out.txt:2 msgid "You have signed out." msgstr "Uspješno ste se odjavili." #: templates/account/messages/password_changed.txt:2 msgid "Password successfully changed." msgstr "Lozinka je uspješno promijenjena." #: templates/account/messages/password_set.txt:2 msgid "Password successfully set." msgstr "Lozinka je uspješno postavljena." #: templates/account/messages/primary_email_set.txt:2 msgid "Primary e-mail address set." msgstr "Primarna e-mail adresa je postavljena" #: templates/account/messages/unverified_primary_email.txt:2 msgid "Your primary e-mail address must be verified." msgstr "Vaša primarna adresa more biti potvrđena." #: templates/account/password_change.html:5 #: templates/account/password_change.html:8 #: templates/account/password_change.html:13 #: templates/account/password_reset_from_key.html:4 #: templates/account/password_reset_from_key.html:7 #: templates/account/password_reset_from_key_done.html:4 #: templates/account/password_reset_from_key_done.html:7 msgid "Change Password" msgstr "Promjena lozinke" #: templates/account/password_reset.html:6 #: templates/account/password_reset.html:10 #: templates/account/password_reset_done.html:6 #: templates/account/password_reset_done.html:9 msgid "Password Reset" msgstr "Resetiranje lozinke" #: templates/account/password_reset.html:15 msgid "" "Forgotten your password? Enter your e-mail address below, and we'll send you " "an e-mail allowing you to reset it." msgstr "" "Zaboravili ste lozinku? Unesite vašu e-mail adresu i poslati ćemo vam e-mail " "uz pomoć kojeg ćete promijeniti lozinku." #: templates/account/password_reset.html:20 msgid "Reset My Password" msgstr "Resetiraj moju lozinku" #: templates/account/password_reset.html:23 msgid "Please contact us if you have any trouble resetting your password." msgstr "Molimo konktaktirajte nas ukoliko imate problema pri promjeni lozinke." #: templates/account/password_reset_done.html:15 msgid "" "We have sent you an e-mail. Please contact us if you do not receive it " "within a few minutes." msgstr "" "Poslali smo vam e-mail. Molimo kontaktirajte nas ako ga ne primite unutar " "nekoliko sljedećih minuta." #: templates/account/password_reset_from_key.html:7 msgid "Bad Token" msgstr "Neispravan token" #: templates/account/password_reset_from_key.html:11 #, python-format msgid "" "The password reset link was invalid, possibly because it has already been " "used. Please request a new password reset." msgstr "" "Link za poništavanje lozinke je nevažeći, vjerojatno jer je već bio " "korišten. Molimo vas ponovite zahtjev za " "resetiranje lozinke." #: templates/account/password_reset_from_key.html:17 msgid "change password" msgstr "promjena lozinke" #: templates/account/password_reset_from_key.html:20 #: templates/account/password_reset_from_key_done.html:8 msgid "Your password is now changed." msgstr "Lozinka je uspješno promjenjena." #: templates/account/password_set.html:5 templates/account/password_set.html:8 #: templates/account/password_set.html:13 msgid "Set Password" msgstr "Postavljanje lozinke" #: templates/account/signup.html:5 templates/socialaccount/signup.html:5 msgid "Signup" msgstr "Registracija" #: templates/account/signup.html:8 templates/account/signup.html:18 #: templates/socialaccount/signup.html:8 templates/socialaccount/signup.html:19 msgid "Sign Up" msgstr "Registracija" #: templates/account/signup.html:10 #, python-format msgid "" "Already have an account? Then please sign in." msgstr "" "Već imate korisnički račun? Prijavite se!" #: templates/account/signup_closed.html:5 #: templates/account/signup_closed.html:8 msgid "Sign Up Closed" msgstr "Prijave zatvorene" #: templates/account/signup_closed.html:10 msgid "We are sorry, but the sign up is currently closed." msgstr "Na žalost, registracija je privremeno nedostupna." #: templates/account/snippets/already_logged_in.html:5 msgid "Note" msgstr "Napomena" #: templates/account/snippets/already_logged_in.html:5 #, python-format msgid "you are already logged in as %(user_display)s." msgstr "već ste prijavljeni kao %(user_display)s." #: templates/account/verification_sent.html:5 #: templates/account/verification_sent.html:8 #: templates/account/verified_email_required.html:5 #: templates/account/verified_email_required.html:8 msgid "Verify Your E-mail Address" msgstr "Potvrdite vašu e-mail adresu" #: templates/account/verification_sent.html:10 msgid "" "We have sent an e-mail to you for verification. Follow the link provided to " "finalize the signup process. Please contact us if you do not receive it " "within a few minutes." msgstr "" "Poslali smo e-mail u svrhu potvrde. Sljedite dani link za završetak postupka " "registracije. Molimo kontaktirajte nas ukoliko ga ne primite unutar " "sljedećih nekoliko minuta." #: templates/account/verified_email_required.html:12 msgid "" "This part of the site requires us to verify that\n" "you are who you claim to be. For this purpose, we require that you\n" "verify ownership of your e-mail address. " msgstr "" "Ovaj dio web stranice zahtjeva da potvrdite da jeste tko tvrdite da jeste. " "Zbog toga je nužno da potvrdite da ste vi vlasnik dane e-mail adrese." #: templates/account/verified_email_required.html:16 msgid "" "We have sent an e-mail to you for\n" "verification. Please click on the link inside this e-mail. Please\n" "contact us if you do not receive it within a few minutes." msgstr "" "Poslali smo e-mail na vašu adresu u svrhu potvrde. Molimo kliknite na link " "unutar e-maila.\n" "Molimo kontaktirajte nas ako ga ne primite unutar nekoliko sljedećih minuta." #: templates/account/verified_email_required.html:20 #, python-format msgid "" "Note: you can still change your e-" "mail address." msgstr "" "Napomena: još uvijek možete izmijeniti vašu e-mail adresu." #: templates/openid/login.html:9 msgid "OpenID Sign In" msgstr "Prijava s OpenID" #: templates/socialaccount/authentication_error.html:5 #: templates/socialaccount/authentication_error.html:8 msgid "Social Network Login Failure" msgstr "Greška pri prijavi s računom društvene mreže" #: templates/socialaccount/authentication_error.html:10 msgid "" "An error occurred while attempting to login via your social network account." msgstr "Došlo je do greške pri prijavi s vašim računom društvene mreže." #: templates/socialaccount/connections.html:5 #: templates/socialaccount/connections.html:8 msgid "Account Connections" msgstr "Povezani računi" #: templates/socialaccount/connections.html:11 msgid "" "You can sign in to your account using any of the following third party " "accounts:" msgstr "" "Možete se prijaviti u vaš korisnički račun koristeći jedan od sljedećih " "povezanih računa:" #: templates/socialaccount/connections.html:43 msgid "" "You currently have no social network accounts connected to this account." msgstr "" "Trenutno nemate niti jedan račun s društvenih mreža povezan s trenutnim " "korisničkim računom." #: templates/socialaccount/connections.html:46 msgid "Add a 3rd Party Account" msgstr "Dodaj račun društvenih mreža." #: templates/socialaccount/login_cancelled.html:5 #: templates/socialaccount/login_cancelled.html:9 msgid "Login Cancelled" msgstr "Prijava otkazana" #: templates/socialaccount/login_cancelled.html:13 #, python-format msgid "" "You decided to cancel logging in to our site using one of your existing " "accounts. If this was a mistake, please proceed to sign in." msgstr "" "Odlučili ste da se ne želite prijaviti na našu stranicu koristeći jedan od " "vaših postojećih računa s društvenih mreža. Ako je to bila greška, molimo " "kliknite i prijavite se." #: templates/socialaccount/messages/account_connected.txt:2 msgid "The social account has been connected." msgstr "Račun društvene mreže je povezan" #: templates/socialaccount/messages/account_connected_other.txt:2 msgid "The social account is already connected to a different account." msgstr "Korisnički račun društvene mreže je već povezan s drugim računom." #: templates/socialaccount/messages/account_disconnected.txt:2 msgid "The social account has been disconnected." msgstr "Račun društvene mreže je isključen" #: templates/socialaccount/signup.html:10 #, python-format msgid "" "You are about to use your %(provider_name)s account to login to\n" "%(site_name)s. As a final step, please complete the following form:" msgstr "" "Odabrali ste da ćete koristiti vaš %(provider_name)s račun za prijavu u " "stranicu %(site_name)s. Kao posljednji korak, molimo vas ispunite sljedeći " "obrazac:" #~ msgid "The login and/or password you specified are not correct." #~ msgstr "Korisničko ime i/ili zaporka nisu ispravni." #~ msgid "Usernames can only contain letters, digits and @/./+/-/_." #~ msgstr "Korisničko ime može sadržavati samo slova, brojeve i @/./+/-/_." #~ msgid "This username is already taken. Please choose another." #~ msgstr "" #~ "Korisničko ime je već zauzeto. Molimo izaberite drugo korisničko ime." #, fuzzy #~| msgid "Sign In" #~ msgid "Shopify Sign In" #~ msgstr "Prijava" #~ msgid "" #~ "You have confirmed that %(email)s is an " #~ "e-mail address for user %(user_display)s." #~ msgstr "" #~ "Potvrdili ste da je %(email)s e-mail " #~ "adresa za korisnika %(user_display)s." django-allauth-0.35.0/allauth/locale/hu/0000755000076500000240000000000013235133532020755 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/hu/LC_MESSAGES/0000755000076500000240000000000013235133532022542 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/hu/LC_MESSAGES/django.mo0000644000076500000240000002743613235132043024351 0ustar pennersrstaff00000000000000gT\6 E M a r {   I w Ls "    & C 9T      p _I 2     / 8 I X -n   l BC"@Hd y!  #)AM6@&)?;1#m?<( GR4[2\KP,:}HQ:X*m$,-6H.K?zm;( dr +MKY& > KXg73 *0fEkD ] x       1!"B!e!!["b")" ##,#P#l#{#### # ### $$+4$&`$'$@$9$~*%,%1%G&/P&$&&F&C'rL''k(}(M($( )) 1)0;)l)*`*<+K+7,T,@,t9-2--/-0+.4\..0...,.`>cEM#W&S2!YL(e% 4b^ad 37$69X[Jg-DRN+;A?BI G 1]@\ /.O_V"F5<*=PfZ'U,HKQ8:C)0TNote: you can still change your e-mail address.A user is already registered with this e-mail address.AccountAccount ConnectionsAccount InactiveAccountsAdd E-mailAdd E-mail AddressAdd a 3rd Party AccountAlready have an account? Then please sign in.An account already exists with this e-mail address. Please sign in to that account first, then connect your %s account.An error occurred while attempting to login via your social network account.Are you sure you want to sign out?Bad TokenChange PasswordConfirmConfirm E-mail AddressConfirmation e-mail sent to %(email)s.Current PasswordDo you really want to remove the selected e-mail address?E-mailE-mail (optional)E-mail AddressesE-mail addressForgot Password?Forgotten your password? Enter your e-mail address below, and we'll send you an e-mail allowing you to reset it.If you have not created an account yet, then please sign up first.In case you forgot, your username is %(username)s.Login CancelledMake PrimaryNew PasswordNew Password (again)NoteOpenID Sign InPasswordPassword (again)Password ResetPassword Reset E-mailPassword must be a minimum of {0} characters.Password successfully changed.Password successfully set.Please confirm that %(email)s is an e-mail address for user %(user_display)s.Please contact us if you have any trouble resetting your password.Please sign in with one of your existing third party accounts. Or, sign up for a %(site_name)s account and sign in below:Please type your current password.PrimaryPrimary e-mail address set.Re-send VerificationRemember MeRemoveRemoved e-mail address %(email)s.Reset My PasswordSet PasswordSign InSign OutSign UpSign Up ClosedSignupSocial AccountsSocial Network Login FailureSuccessfully signed in as %(name)s.The e-mail address and/or password you specified are not correct.The e-mail address is not assigned to any user accountThe following e-mail addresses are associated with your account:The password reset link was invalid, possibly because it has already been used. Please request a new password reset.The social account has been connected.The social account has been disconnected.The social account is already connected to a different account.The username and/or password you specified are not correct.This account is currently inactive.This account is inactive.This e-mail address is already associated with another account.This e-mail address is already associated with this account.This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request.This part of the site requires us to verify that you are who you claim to be. For this purpose, we require that you verify ownership of your e-mail address. UnverifiedUsernameUsername can not be used. Please use other username.Username or e-mailVerifiedVerify Your E-mail AddressWarning:We are sorry, but the sign up is currently closed.We have sent an e-mail to you for verification. Please click on the link inside this e-mail. Please contact us if you do not receive it within a few minutes.We have sent an e-mail to you for verification. Follow the link provided to finalize the signup process. Please contact us if you do not receive it within a few minutes.We have sent you an e-mail. Please contact us if you do not receive it within a few minutes.You are about to use your %(provider_name)s account to login to %(site_name)s. As a final step, please complete the following form:You can sign in to your account using any of the following third party accounts:You cannot remove your primary e-mail address (%(email)s).You currently do not have any e-mail address set up. You should really add an e-mail address so you can receive notifications, reset your password, etc.You currently have no social network accounts connected to this account.You decided to cancel logging in to our site using one of your existing accounts. If this was a mistake, please proceed to sign in.You have confirmed %(email)s.You have signed out.You must type the same password each time.Your account has no password set up.Your account has no verified e-mail address.Your password is now changed.Your primary e-mail address must be verified.field labelLoginoryou are already logged in as %(user_display)s.Project-Id-Version: Report-Msgid-Bugs-To: POT-Creation-Date: 2018-02-02 12:55-0600 PO-Revision-Date: 2015-05-08 22:42+0100 Last-Translator: Tamás Makó Language-Team: Language: hu MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Generator: Poedit 1.7.6 Megjegyzés: az email címet még mindig meg tudod változtatni.Egy felhasználó már regisztrált ezzel az email címmel.FelhasználóEgyéb felhasználói fiókokFelhasználó nem aktívFelhasználókÚj emailÚj email címÚj közösségi felhasználó hozzáadásaVan már felhasználód? Akkor itt jelentkezz be!Ezzel az email címmel már létezik egy felhasználó . Először jelentkezz be, majd kapcsold össze a(z) %s felhasználóval.Hiba történt, miközben megpróbáltunk bejelentkezni a közösségi felhasználóddal.Biztosan kijelentkezel?Hibás tokenJelszócsereMegerősítésEmail cím megerősítéseMegerősítő levelet küldtünk a(z) %(email)s címre.Jelenlegi jelszóTényleg törölni akarod a kijelölt email címet?EmailEmail (nem kötelező)Email címekEmailElfelejtett jelszó?Elfelejtetted a jelszavadat? Add meg az email címedet és küldünk egy linket, ahol újat kérhetsz.Ha még nem rendelkezel felhasználóval, akkor először regisztrálnod kell.Ha esetleg nem emlékeznél pontosan, a felhasználód %(username)s.Bejelentkezés leállítvaLegyen elsődlegesÚj jelszóÚj jelszó (ismét)MegjegyzésOpenID bejelentkezésJelszóJelszó (ismét)Új jelszó kéréseJelszó csere emailA jelszónak minimum {0} hosszúnak kell lennnie.Jelszó sikeresen megváltoztatva.Jelszó sikeresen beállítva.Kérlek erősítsd meg, hogy a(z) %(email)s email a(z) %(user_display)s felhasználóhoz tartozik.Kérlek vedd fel velünk a kapcsolatot, ha problémád adódik a jelszó beállításával.Kérlek jelentkezz be az egyik felhasználóddal vagy regisztrálj új %(site_name)s felhasználót és használd azt:Kérlek add meg az aktuális jelszavadat!ElsődlegesElsődleges email cím beállítva.Ellenőrzés újraküldéseEmlékezz rámTöröl%(email)s email cím törölve.Új jelszó kéréseJelszó beállításaBelépésKilépésRegisztrációRegisztráció lezárvaRegisztrációKözösségi FelhasználókKözösségi hálózat bejelentkezési hibaSikeres bejelentkezés, mint %(name)s.A megadott email vagy a jelszó hibás.Az email cím nincs hozzárendelve egyetlen felhasználóhoz semA következő email címek tartoznak a felhasználódhoz:Az új jelszó kérő cím érvénytelen vagy már felhasználták. Itt tudsz újat kérni.A közösségi felhasználó hozzárendelve.A közösségi felhasználó kapcsolat törölve.A közösségi felhasználó már egy másik felhasználóhoz tartozik.A megadott felhasználó vagy a jelszó hibás.A felhasználó jelenleg nem aktív.A felhasználó nem aktív.Ez az email cím már hozzá van rendelve egy másik felhasználóhoz.Ez az email cím már hozzá van rendelve ehhez a felhasználóhoz.Az email visszaigazolás címe már lejárt vagy érvénytelen. Itt kérhetsz újat."Az oldal ezen része megköveteli, hogy ellenőrizzük a felhasználó azonosságát. Ezért most arra kérünk, hogy ellenőrizd a hozzáférésedet az email címedhez. Nem ellenőrzöttFelhasználó azonosítóEz a felhasználói azonosító nem használható. Kérlek válassz másikat!Felhasználó azonosító vagy emailEllenőrzöttEllenőrizd az emailedetFigyelem:Sajnáljuk, de jelenleg nem lehet regisztrálni.Elküldtük az ellenőrző emailt. Az ellenőrzéshez kövesd a benne található címet! Kérlek vedd fel velünk a kapcsolatot, ha az email nem érkezik meg perceken belül!Elküldtük az ellenőrző emailt. A regisztráció befejezéséhez kövesd a benne található linket! Kérlek vedd fel velünk a kapcsolatot, ha az email nem érkezik meg perceken belül!Elküldtük az emailt. Kérlek vedd fel velünk a kapcsolatot, ha nem kapod meg perceken belül.A(z) %(provider_name)s felhasználódat használod a (z) %(site_name)s bejelentkezés Utolsó lépésként kérlek töltsd ki az alábbi adatlapot:Az alábbi felhasználói fiókok bármelyikét használhatod belépéshez:Az elsődleges email cím (%(email)s) nem törölhető.Jelenleg nincs egyetlen email címed sem beállítva. Nagyon fontos lenne, hiszen csak így kaphatsz értesítéseket és így tudod a jelszavadat megváltoztatni.Jelenleg nincs közösségi felhasználó a fiókodhoz rendelve.Ha a bejelntkezési folyamatot véletlenül állítottad le, itt újra megpróbálhatod.A(z) %(email)s cím visszaigazolása megtörtént.Sikeresen kijelentkezés.Ugyanazt a jelszót kell megadni mindannyiszor.A felhasználódnak nincs beállított jelszava.A felhasználódnak nincs ellenőrzött email címe.A jelszavad megváltozott.Az elsődleges email címet ellenőriznunk kell.BejelentkezésvagyMár bejelentkeztél, mint %(user_display)s.django-allauth-0.35.0/allauth/locale/hu/LC_MESSAGES/django.po0000644000076500000240000006035013235132037024347 0ustar pennersrstaff00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-02-02 12:55-0600\n" "PO-Revision-Date: 2015-05-08 22:42+0100\n" "Last-Translator: Tamás Makó \n" "Language-Team: \n" "Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 1.7.6\n" #: account/adapter.py:45 msgid "Username can not be used. Please use other username." msgstr "Ez a felhasználói azonosító nem használható. Kérlek válassz másikat!" #: account/adapter.py:49 msgid "Too many failed login attempts. Try again later." msgstr "" #: account/adapter.py:51 msgid "A user is already registered with this e-mail address." msgstr "Egy felhasználó már regisztrált ezzel az email címmel." #: account/adapter.py:288 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "A jelszónak minimum {0} hosszúnak kell lennnie." #: account/apps.py:7 msgid "Accounts" msgstr "Felhasználók" #: account/forms.py:61 account/forms.py:398 msgid "You must type the same password each time." msgstr "Ugyanazt a jelszót kell megadni mindannyiszor." #: account/forms.py:91 account/forms.py:365 account/forms.py:476 msgid "Password" msgstr "Jelszó" #: account/forms.py:92 msgid "Remember Me" msgstr "Emlékezz rám" #: account/forms.py:98 msgid "This account is currently inactive." msgstr "A felhasználó jelenleg nem aktív." #: account/forms.py:101 msgid "The e-mail address and/or password you specified are not correct." msgstr "A megadott email vagy a jelszó hibás." #: account/forms.py:104 msgid "The username and/or password you specified are not correct." msgstr "A megadott felhasználó vagy a jelszó hibás." #: account/forms.py:113 account/forms.py:268 account/forms.py:426 #: account/forms.py:495 msgid "E-mail address" msgstr "Email" #: account/forms.py:115 account/forms.py:301 account/forms.py:421 #: account/forms.py:490 msgid "E-mail" msgstr "Email" #: account/forms.py:120 account/forms.py:123 account/forms.py:260 #: account/forms.py:264 msgid "Username" msgstr "Felhasználó azonosító" #: account/forms.py:130 msgid "Username or e-mail" msgstr "Felhasználó azonosító vagy email" #: account/forms.py:133 msgctxt "field label" msgid "Login" msgstr "Bejelentkezés" #: account/forms.py:292 #, fuzzy #| msgid "E-mail (optional)" msgid "E-mail (again)" msgstr "Email (nem kötelező)" #: account/forms.py:296 #, fuzzy #| msgid "E-mail address" msgid "E-mail address confirmation" msgstr "Email" #: account/forms.py:304 msgid "E-mail (optional)" msgstr "Email (nem kötelező)" #: account/forms.py:345 #, fuzzy #| msgid "You must type the same password each time." msgid "You must type the same email each time." msgstr "Ugyanazt a jelszót kell megadni mindannyiszor." #: account/forms.py:368 account/forms.py:477 msgid "Password (again)" msgstr "Jelszó (ismét)" #: account/forms.py:432 msgid "This e-mail address is already associated with this account." msgstr "Ez az email cím már hozzá van rendelve ehhez a felhasználóhoz." #: account/forms.py:434 msgid "This e-mail address is already associated with another account." msgstr "Ez az email cím már hozzá van rendelve egy másik felhasználóhoz." #: account/forms.py:456 msgid "Current Password" msgstr "Jelenlegi jelszó" #: account/forms.py:457 account/forms.py:546 msgid "New Password" msgstr "Új jelszó" #: account/forms.py:458 account/forms.py:547 msgid "New Password (again)" msgstr "Új jelszó (ismét)" #: account/forms.py:466 msgid "Please type your current password." msgstr "Kérlek add meg az aktuális jelszavadat!" #: account/forms.py:504 msgid "The e-mail address is not assigned to any user account" msgstr "Az email cím nincs hozzárendelve egyetlen felhasználóhoz sem" #: account/forms.py:568 msgid "The password reset token was invalid." msgstr "" #: account/models.py:23 msgid "user" msgstr "" #: account/models.py:27 account/models.py:81 msgid "e-mail address" msgstr "" #: account/models.py:28 msgid "verified" msgstr "" #: account/models.py:29 msgid "primary" msgstr "" #: account/models.py:34 msgid "email address" msgstr "" #: account/models.py:35 msgid "email addresses" msgstr "" #: account/models.py:83 msgid "created" msgstr "" #: account/models.py:85 msgid "sent" msgstr "" #: account/models.py:86 socialaccount/models.py:55 msgid "key" msgstr "" #: account/models.py:91 msgid "email confirmation" msgstr "" #: account/models.py:92 msgid "email confirmations" msgstr "" #: socialaccount/adapter.py:26 #, python-format msgid "" "An account already exists with this e-mail address. Please sign in to that " "account first, then connect your %s account." msgstr "" "Ezzel az email címmel már létezik egy felhasználó . Először jelentkezz be, " "majd kapcsold össze a(z) %s felhasználóval." #: socialaccount/adapter.py:131 msgid "Your account has no password set up." msgstr "A felhasználódnak nincs beállított jelszava." #: socialaccount/adapter.py:138 msgid "Your account has no verified e-mail address." msgstr "A felhasználódnak nincs ellenőrzött email címe." #: socialaccount/apps.py:7 msgid "Social Accounts" msgstr "Közösségi Felhasználók" #: socialaccount/models.py:43 socialaccount/models.py:77 msgid "provider" msgstr "" #: socialaccount/models.py:46 msgid "name" msgstr "" #: socialaccount/models.py:48 msgid "client id" msgstr "" #: socialaccount/models.py:50 msgid "App ID, or consumer key" msgstr "" #: socialaccount/models.py:51 msgid "secret key" msgstr "" #: socialaccount/models.py:53 msgid "API secret, client secret, or consumer secret" msgstr "" #: socialaccount/models.py:58 msgid "Key" msgstr "" #: socialaccount/models.py:66 msgid "social application" msgstr "" #: socialaccount/models.py:67 msgid "social applications" msgstr "" #: socialaccount/models.py:96 msgid "uid" msgstr "" #: socialaccount/models.py:98 msgid "last login" msgstr "" #: socialaccount/models.py:100 msgid "date joined" msgstr "" #: socialaccount/models.py:102 msgid "extra data" msgstr "" #: socialaccount/models.py:106 msgid "social account" msgstr "" #: socialaccount/models.py:107 msgid "social accounts" msgstr "" #: socialaccount/models.py:133 msgid "token" msgstr "" #: socialaccount/models.py:135 msgid "\"oauth_token\" (OAuth1) or access token (OAuth2)" msgstr "" #: socialaccount/models.py:138 msgid "token secret" msgstr "" #: socialaccount/models.py:140 msgid "\"oauth_token_secret\" (OAuth1) or refresh token (OAuth2)" msgstr "" #: socialaccount/models.py:142 msgid "expires at" msgstr "" #: socialaccount/models.py:146 msgid "social application token" msgstr "" #: socialaccount/models.py:147 msgid "social application tokens" msgstr "" #: socialaccount/providers/douban/views.py:36 msgid "Invalid profile data" msgstr "" #: socialaccount/providers/oauth/client.py:78 #, python-format msgid "Invalid response while obtaining request token from \"%s\"." msgstr "" #: socialaccount/providers/oauth/client.py:109 #, python-format msgid "Invalid response while obtaining access token from \"%s\"." msgstr "" #: socialaccount/providers/oauth/client.py:128 #, python-format msgid "No request token saved for \"%s\"." msgstr "" #: socialaccount/providers/oauth/client.py:177 #, python-format msgid "No access token saved for \"%s\"." msgstr "" #: socialaccount/providers/oauth/client.py:197 #, python-format msgid "No access to private resources at \"%s\"." msgstr "" #: templates/account/account_inactive.html:5 #: templates/account/account_inactive.html:8 msgid "Account Inactive" msgstr "Felhasználó nem aktív" #: templates/account/account_inactive.html:10 msgid "This account is inactive." msgstr "A felhasználó nem aktív." #: templates/account/email.html:5 msgid "Account" msgstr "Felhasználó" #: templates/account/email.html:8 msgid "E-mail Addresses" msgstr "Email címek" #: templates/account/email.html:10 msgid "The following e-mail addresses are associated with your account:" msgstr "A következő email címek tartoznak a felhasználódhoz:" #: templates/account/email.html:24 msgid "Verified" msgstr "Ellenőrzött" #: templates/account/email.html:26 msgid "Unverified" msgstr "Nem ellenőrzött" #: templates/account/email.html:28 msgid "Primary" msgstr "Elsődleges" #: templates/account/email.html:34 msgid "Make Primary" msgstr "Legyen elsődleges" #: templates/account/email.html:35 msgid "Re-send Verification" msgstr "Ellenőrzés újraküldése" #: templates/account/email.html:36 templates/socialaccount/connections.html:35 msgid "Remove" msgstr "Töröl" #: templates/account/email.html:43 msgid "Warning:" msgstr "Figyelem:" #: templates/account/email.html:43 msgid "" "You currently do not have any e-mail address set up. You should really add " "an e-mail address so you can receive notifications, reset your password, etc." msgstr "" "Jelenleg nincs egyetlen email címed sem beállítva. Nagyon fontos lenne, " "hiszen csak így kaphatsz értesítéseket és így tudod a jelszavadat " "megváltoztatni." #: templates/account/email.html:48 msgid "Add E-mail Address" msgstr "Új email cím" #: templates/account/email.html:53 msgid "Add E-mail" msgstr "Új email" #: templates/account/email.html:62 msgid "Do you really want to remove the selected e-mail address?" msgstr "Tényleg törölni akarod a kijelölt email címet?" #: templates/account/email/email_confirmation_message.txt:1 #, fuzzy, python-format #| msgid "" #| "User %(user_display)s at %(site_name)s has given this as an email " #| "address.\n" #| "\n" #| "To confirm this is correct, go to %(activate_url)s\n" msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because user %(user_display)s has given yours " "as an e-mail address to connect their account.\n" "\n" "To confirm this is correct, go to %(activate_url)s\n" msgstr "" "A(z) %(user_display)s felhasználó a(z) %(site_name)s oldalon ezt az email " "címet adta meg.\n" "\n" "Megerősítéshez látogasd meg ezt az oldalt %(activate_url)s\n" #: templates/account/email/email_confirmation_message.txt:7 #, python-format msgid "" "Thank you from %(site_name)s!\n" "%(site_domain)s" msgstr "" #: templates/account/email/email_confirmation_subject.txt:3 #, fuzzy #| msgid "Confirm E-mail Address" msgid "Please Confirm Your E-mail Address" msgstr "Email cím megerősítése" #: templates/account/email/password_reset_key_message.txt:1 #, fuzzy, python-format #| msgid "" #| "You're receiving this e-mail because you or someone else has requested a " #| "password for your user account at %(site_domain)s.\n" #| "It can be safely ignored if you did not request a password reset. Click " #| "the link below to reset your password." msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because you or someone else has requested a " "password for your user account.\n" "It can be safely ignored if you did not request a password reset. Click the " "link below to reset your password." msgstr "" "Azért kaptad ezt a levelet, mert te vagy valaki más jelszócserét kért a(z) " "%(site_domain)s oldalon.\n" "Nyugodtan hagyd levelünket figyelmen kívül, ha nem te kérted. A jelszó " "cseréjéhez kövesd az alábbi linket." #: templates/account/email/password_reset_key_message.txt:8 #, python-format msgid "In case you forgot, your username is %(username)s." msgstr "Ha esetleg nem emlékeznél pontosan, a felhasználód %(username)s." #: templates/account/email/password_reset_key_message.txt:10 #, python-format msgid "" "Thank you for using %(site_name)s!\n" "%(site_domain)s" msgstr "" #: templates/account/email/password_reset_key_subject.txt:3 msgid "Password Reset E-mail" msgstr "Jelszó csere email" #: templates/account/email_confirm.html:6 #: templates/account/email_confirm.html:10 msgid "Confirm E-mail Address" msgstr "Email cím megerősítése" #: templates/account/email_confirm.html:16 #, python-format msgid "" "Please confirm that %(email)s is an e-mail " "address for user %(user_display)s." msgstr "" "Kérlek erősítsd meg, hogy a(z) %(email)s " "email a(z) %(user_display)s felhasználóhoz tartozik." #: templates/account/email_confirm.html:20 msgid "Confirm" msgstr "Megerősítés" #: templates/account/email_confirm.html:27 #, python-format msgid "" "This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request." msgstr "" "Az email visszaigazolás címe már lejárt vagy érvénytelen. Itt kérhetsz újat.\"" #: templates/account/login.html:6 templates/account/login.html:10 #: templates/account/login.html:43 msgid "Sign In" msgstr "Belépés" #: templates/account/login.html:15 #, python-format msgid "" "Please sign in with one\n" "of your existing third party accounts. Or, sign " "up\n" "for a %(site_name)s account and sign in below:" msgstr "" "Kérlek jelentkezz be\n" "az egyik felhasználóddal vagy regisztrálj\n" "új %(site_name)s felhasználót és használd azt:" #: templates/account/login.html:25 msgid "or" msgstr "vagy" #: templates/account/login.html:32 #, python-format msgid "" "If you have not created an account yet, then please\n" "sign up first." msgstr "" "Ha még nem rendelkezel felhasználóval, akkor\n" "először regisztrálnod kell." #: templates/account/login.html:42 msgid "Forgot Password?" msgstr "Elfelejtett jelszó?" #: templates/account/logout.html:5 templates/account/logout.html:8 #: templates/account/logout.html:17 msgid "Sign Out" msgstr "Kilépés" #: templates/account/logout.html:10 msgid "Are you sure you want to sign out?" msgstr "Biztosan kijelentkezel?" #: templates/account/messages/cannot_delete_primary_email.txt:2 #, python-format msgid "You cannot remove your primary e-mail address (%(email)s)." msgstr "Az elsődleges email cím (%(email)s) nem törölhető." #: templates/account/messages/email_confirmation_sent.txt:2 #, python-format msgid "Confirmation e-mail sent to %(email)s." msgstr "Megerősítő levelet küldtünk a(z) %(email)s címre." #: templates/account/messages/email_confirmed.txt:2 #, python-format msgid "You have confirmed %(email)s." msgstr "A(z) %(email)s cím visszaigazolása megtörtént." #: templates/account/messages/email_deleted.txt:2 #, python-format msgid "Removed e-mail address %(email)s." msgstr "%(email)s email cím törölve." #: templates/account/messages/logged_in.txt:4 #, python-format msgid "Successfully signed in as %(name)s." msgstr "Sikeres bejelentkezés, mint %(name)s." #: templates/account/messages/logged_out.txt:2 msgid "You have signed out." msgstr "Sikeresen kijelentkezés." #: templates/account/messages/password_changed.txt:2 msgid "Password successfully changed." msgstr "Jelszó sikeresen megváltoztatva." #: templates/account/messages/password_set.txt:2 msgid "Password successfully set." msgstr "Jelszó sikeresen beállítva." #: templates/account/messages/primary_email_set.txt:2 msgid "Primary e-mail address set." msgstr "Elsődleges email cím beállítva." #: templates/account/messages/unverified_primary_email.txt:2 msgid "Your primary e-mail address must be verified." msgstr "Az elsődleges email címet ellenőriznunk kell." #: templates/account/password_change.html:5 #: templates/account/password_change.html:8 #: templates/account/password_change.html:13 #: templates/account/password_reset_from_key.html:4 #: templates/account/password_reset_from_key.html:7 #: templates/account/password_reset_from_key_done.html:4 #: templates/account/password_reset_from_key_done.html:7 msgid "Change Password" msgstr "Jelszócsere" #: templates/account/password_reset.html:6 #: templates/account/password_reset.html:10 #: templates/account/password_reset_done.html:6 #: templates/account/password_reset_done.html:9 msgid "Password Reset" msgstr "Új jelszó kérése" #: templates/account/password_reset.html:15 msgid "" "Forgotten your password? Enter your e-mail address below, and we'll send you " "an e-mail allowing you to reset it." msgstr "" "Elfelejtetted a jelszavadat? Add meg az email címedet és küldünk egy linket, " "ahol újat kérhetsz." #: templates/account/password_reset.html:20 msgid "Reset My Password" msgstr "Új jelszó kérése" #: templates/account/password_reset.html:23 msgid "Please contact us if you have any trouble resetting your password." msgstr "" "Kérlek vedd fel velünk a kapcsolatot, ha problémád adódik a jelszó " "beállításával." #: templates/account/password_reset_done.html:15 msgid "" "We have sent you an e-mail. Please contact us if you do not receive it " "within a few minutes." msgstr "" "Elküldtük az emailt. Kérlek vedd fel velünk a kapcsolatot, ha nem kapod meg " "perceken belül." #: templates/account/password_reset_from_key.html:7 msgid "Bad Token" msgstr "Hibás token" #: templates/account/password_reset_from_key.html:11 #, python-format msgid "" "The password reset link was invalid, possibly because it has already been " "used. Please request a new password reset." msgstr "" "Az új jelszó kérő cím érvénytelen vagy már felhasználták. Itt tudsz újat kérni." #: templates/account/password_reset_from_key.html:17 msgid "change password" msgstr "" #: templates/account/password_reset_from_key.html:20 #: templates/account/password_reset_from_key_done.html:8 msgid "Your password is now changed." msgstr "A jelszavad megváltozott." #: templates/account/password_set.html:5 templates/account/password_set.html:8 #: templates/account/password_set.html:13 msgid "Set Password" msgstr "Jelszó beállítása" #: templates/account/signup.html:5 templates/socialaccount/signup.html:5 msgid "Signup" msgstr "Regisztráció" #: templates/account/signup.html:8 templates/account/signup.html:18 #: templates/socialaccount/signup.html:8 templates/socialaccount/signup.html:19 msgid "Sign Up" msgstr "Regisztráció" #: templates/account/signup.html:10 #, python-format msgid "" "Already have an account? Then please sign in." msgstr "" "Van már felhasználód? Akkor itt jelentkezz be!" #: templates/account/signup_closed.html:5 #: templates/account/signup_closed.html:8 msgid "Sign Up Closed" msgstr "Regisztráció lezárva" #: templates/account/signup_closed.html:10 msgid "We are sorry, but the sign up is currently closed." msgstr "Sajnáljuk, de jelenleg nem lehet regisztrálni." #: templates/account/snippets/already_logged_in.html:5 msgid "Note" msgstr "Megjegyzés" #: templates/account/snippets/already_logged_in.html:5 #, python-format msgid "you are already logged in as %(user_display)s." msgstr "Már bejelentkeztél, mint %(user_display)s." #: templates/account/verification_sent.html:5 #: templates/account/verification_sent.html:8 #: templates/account/verified_email_required.html:5 #: templates/account/verified_email_required.html:8 msgid "Verify Your E-mail Address" msgstr "Ellenőrizd az emailedet" #: templates/account/verification_sent.html:10 msgid "" "We have sent an e-mail to you for verification. Follow the link provided to " "finalize the signup process. Please contact us if you do not receive it " "within a few minutes." msgstr "" "Elküldtük az ellenőrző emailt. A regisztráció befejezéséhez kövesd a benne " "található linket! Kérlek vedd fel velünk a kapcsolatot, ha az email nem " "érkezik meg perceken belül!" #: templates/account/verified_email_required.html:12 msgid "" "This part of the site requires us to verify that\n" "you are who you claim to be. For this purpose, we require that you\n" "verify ownership of your e-mail address. " msgstr "" "Az oldal ezen része megköveteli, hogy ellenőrizzük\n" "a felhasználó azonosságát. Ezért most arra kérünk, \n" "hogy ellenőrizd a hozzáférésedet az email címedhez. " #: templates/account/verified_email_required.html:16 msgid "" "We have sent an e-mail to you for\n" "verification. Please click on the link inside this e-mail. Please\n" "contact us if you do not receive it within a few minutes." msgstr "" "Elküldtük az ellenőrző emailt.\n" "Az ellenőrzéshez kövesd a benne található címet! Kérlek vedd fel \n" "velünk a kapcsolatot, ha az email nem érkezik meg perceken belül!" #: templates/account/verified_email_required.html:20 #, python-format msgid "" "Note: you can still change your e-" "mail address." msgstr "" "Megjegyzés: az email címet még mindig meg tudod változtatni." #: templates/openid/login.html:9 msgid "OpenID Sign In" msgstr "OpenID bejelentkezés" #: templates/socialaccount/authentication_error.html:5 #: templates/socialaccount/authentication_error.html:8 msgid "Social Network Login Failure" msgstr "Közösségi hálózat bejelentkezési hiba" #: templates/socialaccount/authentication_error.html:10 msgid "" "An error occurred while attempting to login via your social network account." msgstr "" "Hiba történt, miközben megpróbáltunk bejelentkezni a közösségi " "felhasználóddal." #: templates/socialaccount/connections.html:5 #: templates/socialaccount/connections.html:8 msgid "Account Connections" msgstr "Egyéb felhasználói fiókok" #: templates/socialaccount/connections.html:11 msgid "" "You can sign in to your account using any of the following third party " "accounts:" msgstr "Az alábbi felhasználói fiókok bármelyikét használhatod belépéshez:" #: templates/socialaccount/connections.html:43 msgid "" "You currently have no social network accounts connected to this account." msgstr "Jelenleg nincs közösségi felhasználó a fiókodhoz rendelve." #: templates/socialaccount/connections.html:46 msgid "Add a 3rd Party Account" msgstr "Új közösségi felhasználó hozzáadása" #: templates/socialaccount/login_cancelled.html:5 #: templates/socialaccount/login_cancelled.html:9 msgid "Login Cancelled" msgstr "Bejelentkezés leállítva" #: templates/socialaccount/login_cancelled.html:13 #, python-format msgid "" "You decided to cancel logging in to our site using one of your existing " "accounts. If this was a mistake, please proceed to sign in." msgstr "" "Ha a bejelntkezési folyamatot véletlenül állítottad le, itt újra megpróbálhatod." #: templates/socialaccount/messages/account_connected.txt:2 msgid "The social account has been connected." msgstr "A közösségi felhasználó hozzárendelve." #: templates/socialaccount/messages/account_connected_other.txt:2 msgid "The social account is already connected to a different account." msgstr "A közösségi felhasználó már egy másik felhasználóhoz tartozik." #: templates/socialaccount/messages/account_disconnected.txt:2 msgid "The social account has been disconnected." msgstr "A közösségi felhasználó kapcsolat törölve." #: templates/socialaccount/signup.html:10 #, python-format msgid "" "You are about to use your %(provider_name)s account to login to\n" "%(site_name)s. As a final step, please complete the following form:" msgstr "" "A(z) %(provider_name)s felhasználódat használod a (z) %(site_name)s " "bejelentkezés\n" "Utolsó lépésként kérlek töltsd ki az alábbi adatlapot:" #~ msgid "The login and/or password you specified are not correct." #~ msgstr "A megadott bejelentkezési azonosító vagy a jelszó hibás." #~ msgid "Usernames can only contain letters, digits and @/./+/-/_." #~ msgstr "" #~ "A felhasználói azonosítók csak betűket, számokat és a @/./+/-/_ " #~ "karaktereket tartalmazhatnak." #~ msgid "This username is already taken. Please choose another." #~ msgstr "Ez a felhasználói azonosító már foglalt. Kérlek válassz másikat!" #, fuzzy #~| msgid "Sign In" #~ msgid "Shopify Sign In" #~ msgstr "Belépés" #~ msgid "" #~ "You have confirmed that %(email)s is an " #~ "e-mail address for user %(user_display)s." #~ msgstr "" #~ "Sikeresen visszaigazolás. A(z) %(email)s " #~ "email a(z) %(user_display)s felhasználóhoz tartozik." #~ msgid "Thanks for using our site!" #~ msgstr "Köszönjük, hogy az oldalunkat használja!" django-allauth-0.35.0/allauth/locale/nl/0000755000076500000240000000000013235133532020752 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/nl/LC_MESSAGES/0000755000076500000240000000000013235133532022537 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/nl/LC_MESSAGES/django.mo0000644000076500000240000003271413235132042024340 0ustar pennersrstaff00000000000000 \ 6. e m     I w L "    % &< c 9t      p_289Q  ' 38GPap-"lB~"X{ ! !07G#d2-A6+@b%<&b)?;#/S?m<k0  :E4N2\>P:pHD-K'`*$,-#Qai x.%^ 90!j!r!!!!!!C!o%"K"#"## +#6#,K#x#6#### ## $u $R$?$Q)%P{%% %%&%&*D&)o&&& &&&&1&-'L'h'i'U'@((() !) B) L)!V)x)) )) )) )))!*=$*-b*0*&*;*$+,+!+",:>,3y,,,9,3-Q--;...;.)/ B/O/ h/3v//B0x1d|1B1>$2~c2223+332314+C4/o44/44 4 5 5"515I5c5i5q5v5y5 5 5 5)5+-S?tn\X&.pwV%L'O8/PCqD:(JaW Y 7 Rh`Id<$|Kz9suk13^ 4]m>@ iM;E{!lGQN*[Hjf5yx,)Frg2 }Z=0U#v~BTeo6_cbA"Note: you can still change your e-mail address.A user is already registered with this e-mail address.AccountAccount ConnectionsAccount InactiveAccountsAdd E-mailAdd E-mail AddressAdd a 3rd Party AccountAlready have an account? Then please sign in.An account already exists with this e-mail address. Please sign in to that account first, then connect your %s account.An error occurred while attempting to login via your social network account.Are you sure you want to sign out?Bad TokenChange PasswordConfirmConfirm E-mail AddressConfirmation e-mail sent to %(email)s.Current PasswordDo you really want to remove the selected e-mail address?E-mailE-mail (optional)E-mail AddressesE-mail addressE-mail address confirmationForgot Password?Forgotten your password? Enter your e-mail address below, and we'll send you an e-mail allowing you to reset it.If you have not created an account yet, then please sign up first.In case you forgot, your username is %(username)s.Invalid response while obtaining access token from "%s".Invalid response while obtaining request token from "%s".Login CancelledMake PrimaryNew PasswordNew Password (again)No access to private resources at "%s".No access token saved for "%s".No request token saved for "%s".NoteOpenID Sign InPasswordPassword (again)Password ResetPassword Reset E-mailPassword must be a minimum of {0} characters.Password successfully changed.Password successfully set.Please Confirm Your E-mail AddressPlease confirm that %(email)s is an e-mail address for user %(user_display)s.Please contact us if you have any trouble resetting your password.Please sign in with one of your existing third party accounts. Or, sign up for a %(site_name)s account and sign in below:Please type your current password.PrimaryPrimary e-mail address set.Re-send VerificationRemember MeRemoveRemoved e-mail address %(email)s.Reset My PasswordSet PasswordSign InSign OutSign UpSign Up ClosedSignupSocial AccountsSocial Network Login FailureSuccessfully signed in as %(name)s.Thank you for using %(site_name)s! %(site_domain)sThank you from %(site_name)s! %(site_domain)sThe e-mail address and/or password you specified are not correct.The e-mail address is not assigned to any user accountThe following e-mail addresses are associated with your account:The password reset link was invalid, possibly because it has already been used. Please request a new password reset.The password reset token was invalid.The social account has been connected.The social account has been disconnected.The social account is already connected to a different account.The username and/or password you specified are not correct.This account is currently inactive.This account is inactive.This e-mail address is already associated with another account.This e-mail address is already associated with this account.This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request.This part of the site requires us to verify that you are who you claim to be. For this purpose, we require that you verify ownership of your e-mail address. Too many failed login attempts. Try again later.UnverifiedUsernameUsername can not be used. Please use other username.Username or e-mailVerifiedVerify Your E-mail AddressWarning:We are sorry, but the sign up is currently closed.We have sent an e-mail to you for verification. Please click on the link inside this e-mail. Please contact us if you do not receive it within a few minutes.We have sent an e-mail to you for verification. Follow the link provided to finalize the signup process. Please contact us if you do not receive it within a few minutes.We have sent you an e-mail. Please contact us if you do not receive it within a few minutes.You are about to use your %(provider_name)s account to login to %(site_name)s. As a final step, please complete the following form:You can sign in to your account using any of the following third party accounts:You cannot remove your primary e-mail address (%(email)s).You currently do not have any e-mail address set up. You should really add an e-mail address so you can receive notifications, reset your password, etc.You currently have no social network accounts connected to this account.You decided to cancel logging in to our site using one of your existing accounts. If this was a mistake, please proceed to sign in.You have confirmed %(email)s.You have signed out.You must type the same email each time.You must type the same password each time.Your account has no password set up.Your account has no verified e-mail address.Your password is now changed.Your primary e-mail address must be verified.change passwordcreatede-mail addressemail addressemail addressesemail confirmationemail confirmationsfield labelLoginkeynameorprimarysentuserverifiedyou are already logged in as %(user_display)s.Project-Id-Version: django-allauth Report-Msgid-Bugs-To: POT-Creation-Date: 2018-02-02 12:55-0600 PO-Revision-Date: 2016-07-25 15:18+0200 Last-Translator: pennersr Language-Team: Dutch (http://www.transifex.com/projects/p/django-allauth/language/nl/) Language: nl MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); Merk op: je kunt altijd je e-mail adres wijzigen.Er is al een gebruiker geregistreerd met dit e-mailadres.AccountAccount ConnectiesAccount inactiefAccountsE-mail toevoegenVoeg e-mailadres toeVoeg een extern account toeHeb je al een account? Meld je dan aan.Er bestaat al een account met dit e-mailadres. Meld je eerst aan met dit account, verbind daarna je %s account.Er is een fout opgetreden toen we je wilde inloggen via je externe account.Weet je zeker dat je wilt afmelden?Ongeldige sleutelWachtwoord wijzigenBevestigenBevestig e-mailadresBevestigings e-mail verzonden aan %(email)s.Huidig wachtwoordWil je het geselecteerde e-mailadres echt verwijderen?E-mailE-mail (optioneel)E-mailadressenE-mailadresBevestig e-mailadresWachtwoord vergeten?Wachtwoord vergeten? Vul je e-mailadres in en we sturen je een e-mail waarmee je een nieuw wachtwoord kunt instellen.Als je nog geen account hebt registreer je dan eerst.Deze link hoort bij je account met gebruikersnaam %(username)s.Ongeldig antwoord ontvangen tijdens het ophalen van een toegangssleutel van "%s".Ongeldig antwoord ontvangen tijdens het ophalen van een verzoeksleutel van "%s".Aanmelden geannuleerdMaak primairNieuw wachtwoordNieuw wachtwoord (bevestigen)Geen toegang tot prive data bij "%s".Geen toegangssleutel opgeslagen voor "%s".Geen verzoeksleutel opgeslagen voor "%s".NotitieAanmelden via OpenIDWachtwoordWachtwoord (bevestigen)Nieuw wachtwoordNieuw wachtwoordHet wachtwoord moet minimaal {0} tekens bevatten.Wachtwoord wijziging geslaagd.Je wachtwoord is gewijzigd.Bevestig je e-mailadresBevestig dat %(email)s een e-mailadres is voor gebruiker %(user_display)s.Neem a.u.b. contact met ons op als het niet lukt je wachtwoord opnieuw in te stellen.Meld je aan met een van je bestaande externe accounts. Of, registreer voor een %(site_name)s account en meld je hiermee aan:Geef je huidige wachtwoord op.PrimairPrimair e-mailadres ingesteld.Stuur verificatie e-mail opnieuwOnthoudenVerwijderE-mailadres %(email)s verwijderd.Herstel mijn wachtwoordZet wachtwoordAanmeldenAfmeldenRegistrerenRegistratie geslotenRegistrerenSociale accountsAanmelden MisluktJe bent nu ingelogd als %(name)s.Bedankt voor het gebruiken van %(site_name)s! %(site_domain)sBedankt namens %(site_name)s! %(site_domain)sJe e-mailadres en wachtwoord komen niet overeen.Dit e-mailadres is niet bij ons bekendDe volgende e-mailadressen zijn gekoppeld aan jouw account:De link om je wachtwoord opnieuw in te stellen is niet geldig. Mogelijk is deze al een keer gebruikt. Herstel je wachtwoord opnieuw.De wachtwoordherstel-sleutel is niet geldig.Het externe account is gekoppeld.Het externe account is ontkoppeld.Dit externe account is al gekoppeld aan een ander account.Je gebruikersnaam en wachtwoord komen niet overeen.Dit account is niet actiefDit account is niet actiefDit e-mailadres is al geassocieerd met een ander account.Dit e-mailadres is al geassocieerd met dit account.Deze e-mail verificatie link is verlopen of niet geldig. Dien een nieuw e-mail verificatie verzoek in.Voor dit gedeelte van de site is het nodig dat we je identiteit verifiëren. Via een verificatie e-mail kunnen we controleren dat je daadwerkelijk toegang hebt tot het opgegeven e-mailadres.Teveel foutieve inlog pogingen. Probeer het later nogmaals.OngeverifieerdGebruikersnaamDeze gebruikersnaam mag je niet gebruiken, kies een andere.Gebruikersnaam of e-mailGeverifieerdVerifieer je e-mailadresWaarschuwing:Helaas, maar je kunt je momenteel niet registreren.Volg de link in de verificatie e-mail om de controle af te ronden. Neem a.u.b. contact met ons op als je de e-mail niet binnen enkele minuten ontvangt.We hebben een e-mail verstuurd ter verificatie. Volg de link in deze mail om je registratie af te ronden. Neem a.u.b. contact met ons op als je deze e-mail niet binnen enkele minuten ontvangt.We hebben je een e-mail verstuurd. Neem a.u.b. contact met ons op als je deze niet binnen enkele minuten ontvangen hebt.Om bij %(site_name)s in te kunnen loggen via %(provider_name)s hebben we de volgende gegevens nodig:Je kunt jezelf aanmelden met een van de volgende externe accounts:You kunt je primaire e-mailadres (%(email)s) niet verwijderen.Het is raadzaam een e-mailadres toe te voegen zodat je notificaties kunt ontvangen, je wachtwoord opnieuw kunt instellen, enz.Je hebt momenteel geen externe accounts gekoppeld.Je hebt het aanmelden via een extern account geannuleerd. Als dit een vergissing was, meld je dan opnieuw aan.Je hebt het e-mailadres %(email)s bevestigdJe bent afgemeld.Je moet hetzelfde e-mailadres twee keer intoetsen.Je moet hetzelfde wachtwoord twee keer intoetsen.Je account heeft geen wachtwoord ingesteld.Je account heeft geen geverifieerd e-mailadres.Je wachtwoord is gewijzigd.Je primaire e-mailadres moet geverifieerd zijn.Wachtwoord wijzigenaangemaakte-mailadrese-mailadrese-mailadressene-mailadres bevestiginge-mailadres bevestigingenLoginsleutelnaamofPrimairverstuurdgebruikergeverifieerdje bent al ingelogd als %(user_display)s.django-allauth-0.35.0/allauth/locale/nl/LC_MESSAGES/django.po0000644000076500000240000006251313235132040024341 0ustar pennersrstaff00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # pennersr , 2013 msgid "" msgstr "" "Project-Id-Version: django-allauth\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-02-02 12:55-0600\n" "PO-Revision-Date: 2016-07-25 15:18+0200\n" "Last-Translator: pennersr \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/django-allauth/" "language/nl/)\n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: account/adapter.py:45 msgid "Username can not be used. Please use other username." msgstr "Deze gebruikersnaam mag je niet gebruiken, kies een andere." #: account/adapter.py:49 msgid "Too many failed login attempts. Try again later." msgstr "Teveel foutieve inlog pogingen. Probeer het later nogmaals." #: account/adapter.py:51 msgid "A user is already registered with this e-mail address." msgstr "Er is al een gebruiker geregistreerd met dit e-mailadres." #: account/adapter.py:288 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "Het wachtwoord moet minimaal {0} tekens bevatten." #: account/apps.py:7 msgid "Accounts" msgstr "Accounts" #: account/forms.py:61 account/forms.py:398 msgid "You must type the same password each time." msgstr "Je moet hetzelfde wachtwoord twee keer intoetsen." #: account/forms.py:91 account/forms.py:365 account/forms.py:476 msgid "Password" msgstr "Wachtwoord" #: account/forms.py:92 msgid "Remember Me" msgstr "Onthouden" #: account/forms.py:98 msgid "This account is currently inactive." msgstr "Dit account is niet actief" #: account/forms.py:101 msgid "The e-mail address and/or password you specified are not correct." msgstr "Je e-mailadres en wachtwoord komen niet overeen." #: account/forms.py:104 msgid "The username and/or password you specified are not correct." msgstr "Je gebruikersnaam en wachtwoord komen niet overeen." #: account/forms.py:113 account/forms.py:268 account/forms.py:426 #: account/forms.py:495 msgid "E-mail address" msgstr "E-mailadres" #: account/forms.py:115 account/forms.py:301 account/forms.py:421 #: account/forms.py:490 msgid "E-mail" msgstr "E-mail" #: account/forms.py:120 account/forms.py:123 account/forms.py:260 #: account/forms.py:264 msgid "Username" msgstr "Gebruikersnaam" #: account/forms.py:130 msgid "Username or e-mail" msgstr "Gebruikersnaam of e-mail" #: account/forms.py:133 msgctxt "field label" msgid "Login" msgstr "Login" #: account/forms.py:292 #, fuzzy #| msgid "E-mail (optional)" msgid "E-mail (again)" msgstr "E-mail (optioneel)" #: account/forms.py:296 msgid "E-mail address confirmation" msgstr "Bevestig e-mailadres" #: account/forms.py:304 msgid "E-mail (optional)" msgstr "E-mail (optioneel)" #: account/forms.py:345 msgid "You must type the same email each time." msgstr "Je moet hetzelfde e-mailadres twee keer intoetsen." #: account/forms.py:368 account/forms.py:477 msgid "Password (again)" msgstr "Wachtwoord (bevestigen)" #: account/forms.py:432 msgid "This e-mail address is already associated with this account." msgstr "Dit e-mailadres is al geassocieerd met dit account." #: account/forms.py:434 msgid "This e-mail address is already associated with another account." msgstr "Dit e-mailadres is al geassocieerd met een ander account." #: account/forms.py:456 msgid "Current Password" msgstr "Huidig wachtwoord" #: account/forms.py:457 account/forms.py:546 msgid "New Password" msgstr "Nieuw wachtwoord" #: account/forms.py:458 account/forms.py:547 msgid "New Password (again)" msgstr "Nieuw wachtwoord (bevestigen)" #: account/forms.py:466 msgid "Please type your current password." msgstr "Geef je huidige wachtwoord op." #: account/forms.py:504 msgid "The e-mail address is not assigned to any user account" msgstr "Dit e-mailadres is niet bij ons bekend" #: account/forms.py:568 msgid "The password reset token was invalid." msgstr "De wachtwoordherstel-sleutel is niet geldig." #: account/models.py:23 msgid "user" msgstr "gebruiker" #: account/models.py:27 account/models.py:81 msgid "e-mail address" msgstr "e-mailadres" #: account/models.py:28 msgid "verified" msgstr "geverifieerd" #: account/models.py:29 msgid "primary" msgstr "Primair" #: account/models.py:34 msgid "email address" msgstr "e-mailadres" #: account/models.py:35 msgid "email addresses" msgstr "e-mailadressen" #: account/models.py:83 msgid "created" msgstr "aangemaakt" #: account/models.py:85 msgid "sent" msgstr "verstuurd" #: account/models.py:86 socialaccount/models.py:55 msgid "key" msgstr "sleutel" #: account/models.py:91 msgid "email confirmation" msgstr "e-mailadres bevestiging" #: account/models.py:92 msgid "email confirmations" msgstr "e-mailadres bevestigingen" #: socialaccount/adapter.py:26 #, python-format msgid "" "An account already exists with this e-mail address. Please sign in to that " "account first, then connect your %s account." msgstr "" "Er bestaat al een account met dit e-mailadres. Meld je eerst aan met dit " "account, verbind daarna je %s account." #: socialaccount/adapter.py:131 msgid "Your account has no password set up." msgstr "Je account heeft geen wachtwoord ingesteld." #: socialaccount/adapter.py:138 msgid "Your account has no verified e-mail address." msgstr "Je account heeft geen geverifieerd e-mailadres." #: socialaccount/apps.py:7 msgid "Social Accounts" msgstr "Sociale accounts" #: socialaccount/models.py:43 socialaccount/models.py:77 msgid "provider" msgstr "" #: socialaccount/models.py:46 msgid "name" msgstr "naam" #: socialaccount/models.py:48 msgid "client id" msgstr "" #: socialaccount/models.py:50 msgid "App ID, or consumer key" msgstr "" #: socialaccount/models.py:51 msgid "secret key" msgstr "" #: socialaccount/models.py:53 msgid "API secret, client secret, or consumer secret" msgstr "" #: socialaccount/models.py:58 msgid "Key" msgstr "" #: socialaccount/models.py:66 msgid "social application" msgstr "" #: socialaccount/models.py:67 msgid "social applications" msgstr "" #: socialaccount/models.py:96 msgid "uid" msgstr "" #: socialaccount/models.py:98 msgid "last login" msgstr "" #: socialaccount/models.py:100 msgid "date joined" msgstr "" #: socialaccount/models.py:102 msgid "extra data" msgstr "" #: socialaccount/models.py:106 msgid "social account" msgstr "" #: socialaccount/models.py:107 msgid "social accounts" msgstr "" #: socialaccount/models.py:133 msgid "token" msgstr "" #: socialaccount/models.py:135 msgid "\"oauth_token\" (OAuth1) or access token (OAuth2)" msgstr "" #: socialaccount/models.py:138 msgid "token secret" msgstr "" #: socialaccount/models.py:140 msgid "\"oauth_token_secret\" (OAuth1) or refresh token (OAuth2)" msgstr "" #: socialaccount/models.py:142 msgid "expires at" msgstr "" #: socialaccount/models.py:146 msgid "social application token" msgstr "" #: socialaccount/models.py:147 msgid "social application tokens" msgstr "" #: socialaccount/providers/douban/views.py:36 msgid "Invalid profile data" msgstr "" #: socialaccount/providers/oauth/client.py:78 #, python-format msgid "Invalid response while obtaining request token from \"%s\"." msgstr "" "Ongeldig antwoord ontvangen tijdens het ophalen van een verzoeksleutel van " "\"%s\"." #: socialaccount/providers/oauth/client.py:109 #, python-format msgid "Invalid response while obtaining access token from \"%s\"." msgstr "" "Ongeldig antwoord ontvangen tijdens het ophalen van een toegangssleutel van " "\"%s\"." #: socialaccount/providers/oauth/client.py:128 #, python-format msgid "No request token saved for \"%s\"." msgstr "Geen verzoeksleutel opgeslagen voor \"%s\"." #: socialaccount/providers/oauth/client.py:177 #, python-format msgid "No access token saved for \"%s\"." msgstr "Geen toegangssleutel opgeslagen voor \"%s\"." #: socialaccount/providers/oauth/client.py:197 #, python-format msgid "No access to private resources at \"%s\"." msgstr "Geen toegang tot prive data bij \"%s\"." #: templates/account/account_inactive.html:5 #: templates/account/account_inactive.html:8 msgid "Account Inactive" msgstr "Account inactief" #: templates/account/account_inactive.html:10 msgid "This account is inactive." msgstr "Dit account is niet actief" #: templates/account/email.html:5 msgid "Account" msgstr "Account" #: templates/account/email.html:8 msgid "E-mail Addresses" msgstr "E-mailadressen" #: templates/account/email.html:10 msgid "The following e-mail addresses are associated with your account:" msgstr "De volgende e-mailadressen zijn gekoppeld aan jouw account:" #: templates/account/email.html:24 msgid "Verified" msgstr "Geverifieerd" #: templates/account/email.html:26 msgid "Unverified" msgstr "Ongeverifieerd" #: templates/account/email.html:28 msgid "Primary" msgstr "Primair" #: templates/account/email.html:34 msgid "Make Primary" msgstr "Maak primair" #: templates/account/email.html:35 msgid "Re-send Verification" msgstr "Stuur verificatie e-mail opnieuw" #: templates/account/email.html:36 templates/socialaccount/connections.html:35 msgid "Remove" msgstr "Verwijder" #: templates/account/email.html:43 msgid "Warning:" msgstr "Waarschuwing:" #: templates/account/email.html:43 msgid "" "You currently do not have any e-mail address set up. You should really add " "an e-mail address so you can receive notifications, reset your password, etc." msgstr "" "Het is raadzaam een e-mailadres toe te voegen zodat je notificaties kunt " "ontvangen, je wachtwoord opnieuw kunt instellen, enz." #: templates/account/email.html:48 msgid "Add E-mail Address" msgstr "Voeg e-mailadres toe" #: templates/account/email.html:53 msgid "Add E-mail" msgstr "E-mail toevoegen" #: templates/account/email.html:62 msgid "Do you really want to remove the selected e-mail address?" msgstr "Wil je het geselecteerde e-mailadres echt verwijderen?" #: templates/account/email/email_confirmation_message.txt:1 #, fuzzy, python-format #| msgid "" #| "Hello from %(site_name)s!\n" #| "\n" #| "You're receiving this e-mail because user %(user_display)s at " #| "%(site_domain)s has given yours as an e-mail address to connect their " #| "account.\n" #| "\n" #| "To confirm this is correct, go to %(activate_url)s\n" msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because user %(user_display)s has given yours " "as an e-mail address to connect their account.\n" "\n" "To confirm this is correct, go to %(activate_url)s\n" msgstr "" "Hallo van %(site_name)s!,\n" "\n" "Je ontvangt deze e-mail omdat gebruiker %(user_display)s van\n" "%(site_domain)s dit als e-mailadres heeft opgegeven om te koppelen\n" "aan zijn of haar account.\n" "\n" "Om te bevestigen dat dit correct is, bezoek: %(activate_url)s\n" #: templates/account/email/email_confirmation_message.txt:7 #, python-format msgid "" "Thank you from %(site_name)s!\n" "%(site_domain)s" msgstr "" "Bedankt namens %(site_name)s!\n" "%(site_domain)s" #: templates/account/email/email_confirmation_subject.txt:3 msgid "Please Confirm Your E-mail Address" msgstr "Bevestig je e-mailadres" #: templates/account/email/password_reset_key_message.txt:1 #, fuzzy, python-format #| msgid "" #| "Hello from %(site_name)s!\n" #| "\n" #| "You're receiving this e-mail because you or someone else has requested a " #| "password for your user account at %(site_domain)s.\n" #| "It can be safely ignored if you did not request a password reset. Click " #| "the link below to reset your password." msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because you or someone else has requested a " "password for your user account.\n" "It can be safely ignored if you did not request a password reset. Click the " "link below to reset your password." msgstr "" "Hallo van %(site_name)s!\n" "\n" "Je ontvangt deze mail omdat er een verzoek is ingelegd om het\n" "wachtwoord behorende bij je %(site_domain)s account opnieuw in te\n" "stellen. Je kunt deze gerust mail negeren als je dit niet zelf gedaan\n" "hebt. Anders, klik op de volgende link om je wachtwoord opnieuw in te\n" "stellen." #: templates/account/email/password_reset_key_message.txt:8 #, python-format msgid "In case you forgot, your username is %(username)s." msgstr "Deze link hoort bij je account met gebruikersnaam %(username)s." #: templates/account/email/password_reset_key_message.txt:10 #, python-format msgid "" "Thank you for using %(site_name)s!\n" "%(site_domain)s" msgstr "" "Bedankt voor het gebruiken van %(site_name)s!\n" "%(site_domain)s" #: templates/account/email/password_reset_key_subject.txt:3 msgid "Password Reset E-mail" msgstr "Nieuw wachtwoord" #: templates/account/email_confirm.html:6 #: templates/account/email_confirm.html:10 msgid "Confirm E-mail Address" msgstr "Bevestig e-mailadres" #: templates/account/email_confirm.html:16 #, python-format msgid "" "Please confirm that %(email)s is an e-mail " "address for user %(user_display)s." msgstr "" "Bevestig dat %(email)s een e-mailadres is " "voor gebruiker %(user_display)s." #: templates/account/email_confirm.html:20 msgid "Confirm" msgstr "Bevestigen" #: templates/account/email_confirm.html:27 #, python-format msgid "" "This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request." msgstr "" "Deze e-mail verificatie link is verlopen of niet geldig. Dien een\n" "nieuw e-mail verificatie verzoek in." #: templates/account/login.html:6 templates/account/login.html:10 #: templates/account/login.html:43 msgid "Sign In" msgstr "Aanmelden" #: templates/account/login.html:15 #, python-format msgid "" "Please sign in with one\n" "of your existing third party accounts. Or, sign " "up\n" "for a %(site_name)s account and sign in below:" msgstr "" "Meld je aan met een van je bestaande externe accounts. Of, registreer voor een %(site_name)s account en " "meld je hiermee aan:" #: templates/account/login.html:25 msgid "or" msgstr "of" #: templates/account/login.html:32 #, python-format msgid "" "If you have not created an account yet, then please\n" "sign up first." msgstr "" "Als je nog geen account hebt registreer je\n" "dan eerst." #: templates/account/login.html:42 msgid "Forgot Password?" msgstr "Wachtwoord vergeten?" #: templates/account/logout.html:5 templates/account/logout.html:8 #: templates/account/logout.html:17 msgid "Sign Out" msgstr "Afmelden" #: templates/account/logout.html:10 msgid "Are you sure you want to sign out?" msgstr "Weet je zeker dat je wilt afmelden?" #: templates/account/messages/cannot_delete_primary_email.txt:2 #, python-format msgid "You cannot remove your primary e-mail address (%(email)s)." msgstr "You kunt je primaire e-mailadres (%(email)s) niet verwijderen." #: templates/account/messages/email_confirmation_sent.txt:2 #, python-format msgid "Confirmation e-mail sent to %(email)s." msgstr "Bevestigings e-mail verzonden aan %(email)s." #: templates/account/messages/email_confirmed.txt:2 #, python-format msgid "You have confirmed %(email)s." msgstr "Je hebt het e-mailadres %(email)s bevestigd" #: templates/account/messages/email_deleted.txt:2 #, python-format msgid "Removed e-mail address %(email)s." msgstr "E-mailadres %(email)s verwijderd." #: templates/account/messages/logged_in.txt:4 #, python-format msgid "Successfully signed in as %(name)s." msgstr "Je bent nu ingelogd als %(name)s." #: templates/account/messages/logged_out.txt:2 msgid "You have signed out." msgstr "Je bent afgemeld." #: templates/account/messages/password_changed.txt:2 msgid "Password successfully changed." msgstr "Wachtwoord wijziging geslaagd." #: templates/account/messages/password_set.txt:2 msgid "Password successfully set." msgstr "Je wachtwoord is gewijzigd." #: templates/account/messages/primary_email_set.txt:2 msgid "Primary e-mail address set." msgstr "Primair e-mailadres ingesteld." #: templates/account/messages/unverified_primary_email.txt:2 msgid "Your primary e-mail address must be verified." msgstr "Je primaire e-mailadres moet geverifieerd zijn." #: templates/account/password_change.html:5 #: templates/account/password_change.html:8 #: templates/account/password_change.html:13 #: templates/account/password_reset_from_key.html:4 #: templates/account/password_reset_from_key.html:7 #: templates/account/password_reset_from_key_done.html:4 #: templates/account/password_reset_from_key_done.html:7 msgid "Change Password" msgstr "Wachtwoord wijzigen" #: templates/account/password_reset.html:6 #: templates/account/password_reset.html:10 #: templates/account/password_reset_done.html:6 #: templates/account/password_reset_done.html:9 msgid "Password Reset" msgstr "Nieuw wachtwoord" #: templates/account/password_reset.html:15 msgid "" "Forgotten your password? Enter your e-mail address below, and we'll send you " "an e-mail allowing you to reset it." msgstr "" "Wachtwoord vergeten? Vul je e-mailadres in en we sturen je een e-mail " "waarmee je een nieuw wachtwoord kunt instellen." #: templates/account/password_reset.html:20 msgid "Reset My Password" msgstr "Herstel mijn wachtwoord" #: templates/account/password_reset.html:23 msgid "Please contact us if you have any trouble resetting your password." msgstr "" "Neem a.u.b. contact met ons op als het niet lukt je wachtwoord opnieuw in te " "stellen." #: templates/account/password_reset_done.html:15 msgid "" "We have sent you an e-mail. Please contact us if you do not receive it " "within a few minutes." msgstr "" "We hebben je een e-mail verstuurd. Neem a.u.b. contact met ons op als je " "deze niet binnen enkele minuten ontvangen hebt." #: templates/account/password_reset_from_key.html:7 msgid "Bad Token" msgstr "Ongeldige sleutel" #: templates/account/password_reset_from_key.html:11 #, python-format msgid "" "The password reset link was invalid, possibly because it has already been " "used. Please request a new password reset." msgstr "" "De link om je wachtwoord opnieuw in te stellen is niet geldig. Mogelijk is " "deze al een keer gebruikt. Herstel je " "wachtwoord opnieuw." #: templates/account/password_reset_from_key.html:17 msgid "change password" msgstr "Wachtwoord wijzigen" #: templates/account/password_reset_from_key.html:20 #: templates/account/password_reset_from_key_done.html:8 msgid "Your password is now changed." msgstr "Je wachtwoord is gewijzigd." #: templates/account/password_set.html:5 templates/account/password_set.html:8 #: templates/account/password_set.html:13 msgid "Set Password" msgstr "Zet wachtwoord" #: templates/account/signup.html:5 templates/socialaccount/signup.html:5 msgid "Signup" msgstr "Registreren" #: templates/account/signup.html:8 templates/account/signup.html:18 #: templates/socialaccount/signup.html:8 templates/socialaccount/signup.html:19 msgid "Sign Up" msgstr "Registreren" #: templates/account/signup.html:10 #, python-format msgid "" "Already have an account? Then please sign in." msgstr "Heb je al een account? Meld je dan aan." #: templates/account/signup_closed.html:5 #: templates/account/signup_closed.html:8 msgid "Sign Up Closed" msgstr "Registratie gesloten" #: templates/account/signup_closed.html:10 msgid "We are sorry, but the sign up is currently closed." msgstr "Helaas, maar je kunt je momenteel niet registreren." #: templates/account/snippets/already_logged_in.html:5 msgid "Note" msgstr "Notitie" #: templates/account/snippets/already_logged_in.html:5 #, python-format msgid "you are already logged in as %(user_display)s." msgstr "je bent al ingelogd als %(user_display)s." #: templates/account/verification_sent.html:5 #: templates/account/verification_sent.html:8 #: templates/account/verified_email_required.html:5 #: templates/account/verified_email_required.html:8 msgid "Verify Your E-mail Address" msgstr "Verifieer je e-mailadres" #: templates/account/verification_sent.html:10 msgid "" "We have sent an e-mail to you for verification. Follow the link provided to " "finalize the signup process. Please contact us if you do not receive it " "within a few minutes." msgstr "" "We hebben een e-mail verstuurd ter verificatie. Volg de link in deze mail om " "je registratie af te ronden. Neem a.u.b. contact met ons op als je deze e-" "mail niet binnen enkele minuten ontvangt." #: templates/account/verified_email_required.html:12 msgid "" "This part of the site requires us to verify that\n" "you are who you claim to be. For this purpose, we require that you\n" "verify ownership of your e-mail address. " msgstr "" "Voor dit gedeelte van de site is het nodig dat we je identiteit\n" "verifiëren. Via een verificatie e-mail kunnen we controleren dat je\n" "daadwerkelijk toegang hebt tot het opgegeven e-mailadres." #: templates/account/verified_email_required.html:16 msgid "" "We have sent an e-mail to you for\n" "verification. Please click on the link inside this e-mail. Please\n" "contact us if you do not receive it within a few minutes." msgstr "" "Volg de link in de verificatie e-mail om de controle af te ronden. Neem a.u." "b. contact met ons op als je de e-mail niet binnen enkele minuten ontvangt." #: templates/account/verified_email_required.html:20 #, python-format msgid "" "Note: you can still change your e-" "mail address." msgstr "" "Merk op: je kunt altijd je e-mail " "adres wijzigen." #: templates/openid/login.html:9 msgid "OpenID Sign In" msgstr "Aanmelden via OpenID" #: templates/socialaccount/authentication_error.html:5 #: templates/socialaccount/authentication_error.html:8 msgid "Social Network Login Failure" msgstr "Aanmelden Mislukt" #: templates/socialaccount/authentication_error.html:10 msgid "" "An error occurred while attempting to login via your social network account." msgstr "" "Er is een fout opgetreden toen we je wilde inloggen via je externe account." #: templates/socialaccount/connections.html:5 #: templates/socialaccount/connections.html:8 msgid "Account Connections" msgstr "Account Connecties" #: templates/socialaccount/connections.html:11 msgid "" "You can sign in to your account using any of the following third party " "accounts:" msgstr "Je kunt jezelf aanmelden met een van de volgende externe accounts:" #: templates/socialaccount/connections.html:43 msgid "" "You currently have no social network accounts connected to this account." msgstr "Je hebt momenteel geen externe accounts gekoppeld." #: templates/socialaccount/connections.html:46 msgid "Add a 3rd Party Account" msgstr "Voeg een extern account toe" #: templates/socialaccount/login_cancelled.html:5 #: templates/socialaccount/login_cancelled.html:9 msgid "Login Cancelled" msgstr "Aanmelden geannuleerd" #: templates/socialaccount/login_cancelled.html:13 #, python-format msgid "" "You decided to cancel logging in to our site using one of your existing " "accounts. If this was a mistake, please proceed to sign in." msgstr "" "Je hebt het aanmelden via een extern account geannuleerd. Als dit een " "vergissing was, meld je dan opnieuw aan." #: templates/socialaccount/messages/account_connected.txt:2 msgid "The social account has been connected." msgstr "Het externe account is gekoppeld." #: templates/socialaccount/messages/account_connected_other.txt:2 msgid "The social account is already connected to a different account." msgstr "Dit externe account is al gekoppeld aan een ander account." #: templates/socialaccount/messages/account_disconnected.txt:2 msgid "The social account has been disconnected." msgstr "Het externe account is ontkoppeld." #: templates/socialaccount/signup.html:10 #, python-format msgid "" "You are about to use your %(provider_name)s account to login to\n" "%(site_name)s. As a final step, please complete the following form:" msgstr "" "Om bij %(site_name)s in te kunnen loggen via %(provider_name)s hebben we de " "volgende gegevens nodig:" #~ msgid "The login and/or password you specified are not correct." #~ msgstr "Je login en wachtwoord komen niet overeen." #~ msgid "Usernames can only contain letters, digits and @/./+/-/_." #~ msgstr "" #~ "Gebruikersnamen mogen alleen letters, cijfers en @/./+/-/_ bevatten." #~ msgid "This username is already taken. Please choose another." #~ msgstr "Deze gebruikersnaam is al in gebruik. Kies a.u.b. een andere naam." #, fuzzy #~| msgid "Sign In" #~ msgid "Shopify Sign In" #~ msgstr "Aanmelden" #~ msgid "" #~ "You have confirmed that %(email)s is an " #~ "e-mail address for user %(user_display)s." #~ msgstr "" #~ "Je hebt bevestigd dat %(email)s een e-" #~ "mail adres is voor gebruiker %(user_display)s." #~ msgid "Thanks for using our site!" #~ msgstr "Bedankt voor het gebruik van onze site!" #~ msgid "Confirmation e-mail sent to %(email)s" #~ msgstr "Bevestigings e-mail verzonden aan %(email)s" #~ msgid "Delete Password" #~ msgstr "Wis wachtwoord" #~ msgid "" #~ "You may delete your password since you are currently logged in using " #~ "OpenID." #~ msgstr "Je kunt je wachtwoord wissen omdat je via OpenID bent ingelogd." #~ msgid "delete my password" #~ msgstr "Wis mijn wachtwoord" #~ msgid "Password Deleted" #~ msgstr "Wachtwoord gewist" #~ msgid "Your password has been deleted." #~ msgstr "Je wachtwoord is gewist." django-allauth-0.35.0/allauth/locale/de/0000755000076500000240000000000013235133532020731 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/de/LC_MESSAGES/0000755000076500000240000000000013235133532022516 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/de/LC_MESSAGES/django.mo0000644000076500000240000004077213235132043024323 0ustar pennersrstaff00000000000000 / 7) \a 6 - #+?P YdwIwLQ" &99Jpj4_'289BF V cp'  +-Ao"lB9|"6>Z o{! #2C-vA6@^%&)D?n;#?(<h&0 4 >QZu2~O\VP:+ f H H!!"'"*C"$n",""-" # #&# .#:# I#W#g#z# # ### ##### #### $ $9$S$g$ m$z$~$$.$$3|&;&_&<L'4''' '''((W:((T%)z)0))) ))3 *A*@T*******+++,a-N.m.@.@. //'/F/U/(s/(/)/ // 00+0&B06i00'0%0m 1Iz11&}22"2&22 3! 3B3Y3 i3s3 |33 33-3$32 4(<4<e404:45E5%6<46Yq696!7'7CA7<77D8H8 )9 69JB99 999@9::p;.<A<C<<=A=>)>>,>-'?4U?0??4?@ @*@3@C@R@a@q@@ @ @ @ @@ @@@@@AA'A6AHAeAAAAA A A0A=m8zkLK EJxn1*2e^}R-h&G9)jQFI{AbO~M#SBZ_lf\V,T6>Yr( ca[q y+;D4Pv7:<]i/Up?usg|0w W!CNt@5$ "%d 'H.X`3o"oauth_token" (OAuth1) or access token (OAuth2)"oauth_token_secret" (OAuth1) or refresh token (OAuth2)Note: you can still change your e-mail address.A user is already registered with this e-mail address.API secret, client secret, or consumer secretAccountAccount ConnectionsAccount InactiveAccountsAdd E-mailAdd E-mail AddressAdd a 3rd Party AccountAlready have an account? Then please sign in.An account already exists with this e-mail address. Please sign in to that account first, then connect your %s account.An error occurred while attempting to login via your social network account.App ID, or consumer keyAre you sure you want to sign out?Bad TokenChange PasswordConfirmConfirm E-mail AddressConfirmation e-mail sent to %(email)s.Current PasswordDo you really want to remove the selected e-mail address?E-mailE-mail (again)E-mail (optional)E-mail AddressesE-mail addressE-mail address confirmationForgot Password?Forgotten your password? Enter your e-mail address below, and we'll send you an e-mail allowing you to reset it.Hello from %(site_name)s! You're receiving this e-mail because user %(user_display)s has given yours as an e-mail address to connect their account. To confirm this is correct, go to %(activate_url)s Hello from %(site_name)s! You're receiving this e-mail because you or someone else has requested a password for your user account. It can be safely ignored if you did not request a password reset. Click the link below to reset your password.If you have not created an account yet, then please sign up first.In case you forgot, your username is %(username)s.Invalid profile dataInvalid response while obtaining access token from "%s".Invalid response while obtaining request token from "%s".KeyLogin CancelledMake PrimaryNew PasswordNew Password (again)No access to private resources at "%s".No access token saved for "%s".No request token saved for "%s".NoteOpenID Sign InPasswordPassword (again)Password ResetPassword Reset E-mailPassword must be a minimum of {0} characters.Password successfully changed.Password successfully set.Please Confirm Your E-mail AddressPlease confirm that %(email)s is an e-mail address for user %(user_display)s.Please contact us if you have any trouble resetting your password.Please sign in with one of your existing third party accounts. Or, sign up for a %(site_name)s account and sign in below:Please type your current password.PrimaryPrimary e-mail address set.Re-send VerificationRemember MeRemoveRemoved e-mail address %(email)s.Reset My PasswordSet PasswordSign InSign OutSign UpSign Up ClosedSignupSocial AccountsSocial Network Login FailureSuccessfully signed in as %(name)s.Thank you for using %(site_name)s! %(site_domain)sThank you from %(site_name)s! %(site_domain)sThe e-mail address and/or password you specified are not correct.The e-mail address is not assigned to any user accountThe following e-mail addresses are associated with your account:The password reset link was invalid, possibly because it has already been used. Please request a new password reset.The password reset token was invalid.The social account has been connected.The social account has been disconnected.The social account is already connected to a different account.The username and/or password you specified are not correct.This account is currently inactive.This account is inactive.This e-mail address is already associated with another account.This e-mail address is already associated with this account.This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request.This part of the site requires us to verify that you are who you claim to be. For this purpose, we require that you verify ownership of your e-mail address. Too many failed login attempts. Try again later.UnverifiedUsernameUsername can not be used. Please use other username.Username or e-mailVerifiedVerify Your E-mail AddressWarning:We are sorry, but the sign up is currently closed.We have sent an e-mail to you for verification. Please click on the link inside this e-mail. Please contact us if you do not receive it within a few minutes.We have sent an e-mail to you for verification. Follow the link provided to finalize the signup process. Please contact us if you do not receive it within a few minutes.We have sent you an e-mail. Please contact us if you do not receive it within a few minutes.You are about to use your %(provider_name)s account to login to %(site_name)s. As a final step, please complete the following form:You can sign in to your account using any of the following third party accounts:You cannot remove your primary e-mail address (%(email)s).You currently do not have any e-mail address set up. You should really add an e-mail address so you can receive notifications, reset your password, etc.You currently have no social network accounts connected to this account.You decided to cancel logging in to our site using one of your existing accounts. If this was a mistake, please proceed to sign in.You have confirmed %(email)s.You have signed out.You must type the same email each time.You must type the same password each time.Your account has no password set up.Your account has no verified e-mail address.Your password is now changed.Your primary e-mail address must be verified.change passwordclient idcreateddate joinede-mail addressemail addressemail addressesemail confirmationemail confirmationsexpires atextra datafield labelLoginkeylast loginnameorprimaryprovidersecret keysentsocial accountsocial accountssocial applicationsocial application tokensocial application tokenssocial applicationstokentoken secretuiduserverifiedyou are already logged in as %(user_display)s.Project-Id-Version: django-allauth Report-Msgid-Bugs-To: POT-Creation-Date: 2018-02-02 12:55-0600 PO-Revision-Date: 2017-11-04 16:22+0100 Last-Translator: Jannis Vajen Language-Team: German (http://www.transifex.com/projects/p/django-allauth/language/de/) Language: de MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Generator: Poedit 2.0.4 "oauth_token" (OAuth1) oder "access token" (OAuth2)"oauth_token_secret" (OAuth1) oder "refresh token" (OAuth2)Anmerkung: Du kannst Deine E-Mail-Adresse ändern.Es ist bereits jemand mit dieser E-Mail-Adresse registriert.'API secret', 'client secret' oder 'consumer secret'KontoKonto-VerknüpfungenKonto inaktivKontenE-Mail hinzufügenE-Mail-Adresse hinzufügenSoziales Netzwerk hinzufügenDu hast bereits ein Konto bei uns? Dann bitte hier entlang.Es existiert bereits ein Konto mit dieser E-Mail-Adresse. Bitte melde dich zuerst mit diesem Konto an, und verknüpfe es dann mit deinem %s-Konto.Ein Fehler ist aufgetreten; die Anmeldung beim sozialen Netzwerk hat nicht geklappt.App-ID oder 'Consumer key'Bist Du sicher, dass du Dich abmelden möchtest?Falsches TokenPasswort ändernBestätigenE-Mail-Adresse bestätigenBestätigungs-E-Mail wurde an %(email)s verschickt.Aktuelles PasswortMöchtest du wirklich die ausgewählte E-Mail-Adresse entfernen?E-MailE-Mail (wiederholen)E-Mail (optional)E-Mail-AdressenE-Mail-AdresseBestätigung der E-Mail-AdressePasswort vergessen?Passwort vergessen? Gib Deine E-Mail-Adresse unten ein, dann schicken wir Dir einen Link, unter dem Du Dein Passwort zurücksetzen kannst.Hallo von %(site_name)s! Du erhältst diese E-Mail der/die Nutzer/in %(user_display)s deine E-Mail-Adresse als seine/ihre angab, um sie mit seinem/ihrem Konto zu verknüpfen. Um dies zu bestätigen, rufe bitte folgende Adresse auf: %(activate_url)s Hallo von %(site_name)s! Du erhältst diese E-Mail weil du oder jemand anderes die Zurücksetzung des Passwortes für dein Konto gefordert hat. Falls es sich dabei nicht um dich handelt, kann diese Nachricht ignoriert werden. Rufe folgende Adresse auf um dein Passwort zurückzusetzen.Du hast noch kein Konto bei uns? Dann erstelle bitte zunächst eins.Falls Du deinen Anmeldenamen vergessen haben solltest; er lautet %(username)s.Ungültige ProfildatenUngültige Antwort von "%s" als Zugangsschlüssel erbeten wurde.Ungültige Antwort von "%s" als Anfrageschlüssel erbeten wurde.SchlüsselAnmeldung abgebrochenAls primäre Adresse festlegenNeues PasswortNeues Passwort (Wiederholung)Kein Zugriff zu privaten Daten auf "%s".Kein Access-Token gespeichert für "%s".Kein Request-Token gespeichert für "%s".AnmerkungOpenID-AnmeldungPasswortPasswort (Wiederholung)Passwort zurücksetzenE-Mail zum Zurücksetzen des PasswortsDas Passwort muss aus mindestens {0} Zeichen bestehen.Das Passwort wurde geändert.Das Passwort wurde erfolgreich gesetzt.Bitte bestätige deine E-Mail-AdresseBitte bestätige, dass %(email)s eine E-Mail-Adresse von %(user_display)s ist.Bitte kontaktiere uns, wenn das Zurücksetzen des Passworts nicht klappt.Bitte melde Dich mit einem der folgenden Netzwerkkonten an, oder registriere Dich auf %(site_name)s, dann kannst Du Dich unten mit Deinem Konto anmelden:Bitte gib Dein aktuelles Passwort ein.PrimärPrimäre E-Mailadresse festgelegt.Bestätigungs-Mail nochmal verschickenAngemeldet bleibenAusgewählte entfernenE-Mailadresse %(email)s entfernt.Passwort zurücksetzenPasswort setzenAnmeldungAbmeldenRegistrierenRegistrierung geschlossenRegistrierenKontoFehler bei der Anmeldung am sozialen NetzwerkErfolgreich als %(name)s angemeldet.Danke dass du %(site_name)s nutzt! %(site_domain)sDanke von %(site_name)s! %(site_domain)sDie E-Mail-Adresse und/oder das Passwort sind leider falsch.Diese E-Mail-Adresse ist keinem Konto zugeordnetFolgende E-Mail-Adressen sind mit diesem Konto verknüpft:Der Link zum Zurücksetzen des Passworts war ungültig, womöglich wurde dieser Link bereits benutzt. Bitte lass Dein Passwort noch mal zurücksetzen.Das Sicherheits-Token zum Zurücksetzen des Passwortes war ungültig.Konten wurden erfolgreich verknüpft.Die Verknüpfung mit dem sozialen Netzwerk wurde aufgehoben.Das Konto des Drittanbieters ist bereits mit einem anderen Konto dieser Seite verknüpft.Der Anmeldename und/oder das Passwort sind leider falsch.Dieses Konto ist derzeit inaktiv.Dieses Konto ist inaktiv.Diese E-Mail-Adresse wird bereits in einem anderen Konto verwendet.Diese E-Mail-Adresse wird bereits in diesem Konto verwendet.Dieser Bestätigungslink ist leider abgelaufen. Lass Dir bitte eine neue Bestätigungs-Mail schicken.Auf diesem Teil der Webseite möchten wie sichergehen, dass du die Person bist für die du dich ausgibst. Dazu musst du deine E-Mail-Adresse verifizieren. Zu viele gescheiterte Anmeldeversuche. Bitte versuche es später erneut.UnbestätigtAnmeldenameAnmeldename kann nicht verwendet werden. Bitte wähle einen anderen Namen.Anmeldename oder E-MailBestätigtBestätige deine E-Mail-AdresseWarnung:Es tut uns leid, aber die Registrierung ist derzeit geschlossen.Wir haben Dir eine E-Mail geschickt, um Deine Adresse zu verifizieren. Bitte klick auf den Link in der E-Mail. Wenn die E-Mail nicht in ein paar Minuten angekommen ist, gib uns bitte Bescheid.Wir haben dir eine E-Mail geschickt, um deine Adresse zu verifizieren. Bitte folge dem Link in der E-Mail um den Anmeldeprozess abzuschließen. Bitte kontaktiere uns, falls die E-Mail nicht in ein paar Minuten angekommen ist.Wir haben Dir eine E-Mail geschickt. Bitte kontaktiere uns, wenn Du sie nicht in ein paar Minuten erhalten hast.Du verwendest Dein %(provider_name)s-Konto, um Dich bei %(site_name)s anzumelden. Zum Abschluss bitte das folgende Formular ausfüllen:Du kannst Dich bei uns über folgende soziale Netzwerke anmelden:Du kannst deine primäre E-Mail-Adresse (%(email)s) nicht löschen.Du hast derzeit keine E-Mail-Adressen angegeben. Das solltest Du allerdings tun, denn nur so können wir dich benachrichtigen und dein Passwort zurücksetzen.Dein Konto ist derzeit mit keinen sozialen Netzwerken verknüpft.Du hast die Anmeldung abgebrochen. Wenn das nur ein Versehen oder ein Fehler war, folge bitte diesem Link um Dich anzumelden.Du hast die Adresse %(email)s bestätigt.Du hast Dich abgemeldet.Du musst zweimal dasselbe Passwort eingeben.Du musst zweimal das selbe Passwort eingeben.Für dein Konto wurde noch kein Passwort festgelegt.Dein Konto hat keine bestätigte E-Mail-Adresse.Dein Passwort wurde geändert.Deine primäre E-Mailadresse muss bestätigt werden.Passwort ändernClient-IDErstelltRegistrierdatumE-Mail-AdresseE-Mail-AdresseE-Mail-AdressenE-Mail-BestätigungE-Mail-BestätigungenLäuft abWeitere DatenAnmeldungSchlüsselLetzte AnmeldungAnmeldenameoderPrimärAnbieterGeheimer SchlüsselGesendetSoziales KontoSoziale KontenSoziale AnwendungToken für soziale AnwendungTokens für soziale AnwendungenSoziale AnwendungenTokenGeheimes TokenUIDBenutzer/inbestätigtDu bist bereits als %(user_display)s angemeldet.django-allauth-0.35.0/allauth/locale/de/LC_MESSAGES/django.po0000644000076500000240000006242113235132040024316 0ustar pennersrstaff00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # Jannis Vajen, 2013-2014 msgid "" msgstr "" "Project-Id-Version: django-allauth\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-02-02 12:55-0600\n" "PO-Revision-Date: 2017-11-04 16:22+0100\n" "Last-Translator: Jannis Vajen \n" "Language-Team: German (http://www.transifex.com/projects/p/django-allauth/" "language/de/)\n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 2.0.4\n" #: account/adapter.py:45 msgid "Username can not be used. Please use other username." msgstr "" "Anmeldename kann nicht verwendet werden. Bitte wähle einen anderen Namen." #: account/adapter.py:49 msgid "Too many failed login attempts. Try again later." msgstr "" "Zu viele gescheiterte Anmeldeversuche. Bitte versuche es später erneut." #: account/adapter.py:51 msgid "A user is already registered with this e-mail address." msgstr "Es ist bereits jemand mit dieser E-Mail-Adresse registriert." #: account/adapter.py:288 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "Das Passwort muss aus mindestens {0} Zeichen bestehen." #: account/apps.py:7 msgid "Accounts" msgstr "Konten" #: account/forms.py:61 account/forms.py:398 msgid "You must type the same password each time." msgstr "Du musst zweimal das selbe Passwort eingeben." #: account/forms.py:91 account/forms.py:365 account/forms.py:476 msgid "Password" msgstr "Passwort" #: account/forms.py:92 msgid "Remember Me" msgstr "Angemeldet bleiben" #: account/forms.py:98 msgid "This account is currently inactive." msgstr "Dieses Konto ist derzeit inaktiv." #: account/forms.py:101 msgid "The e-mail address and/or password you specified are not correct." msgstr "Die E-Mail-Adresse und/oder das Passwort sind leider falsch." #: account/forms.py:104 msgid "The username and/or password you specified are not correct." msgstr "Der Anmeldename und/oder das Passwort sind leider falsch." #: account/forms.py:113 account/forms.py:268 account/forms.py:426 #: account/forms.py:495 msgid "E-mail address" msgstr "E-Mail-Adresse" #: account/forms.py:115 account/forms.py:301 account/forms.py:421 #: account/forms.py:490 msgid "E-mail" msgstr "E-Mail" #: account/forms.py:120 account/forms.py:123 account/forms.py:260 #: account/forms.py:264 msgid "Username" msgstr "Anmeldename" #: account/forms.py:130 msgid "Username or e-mail" msgstr "Anmeldename oder E-Mail" #: account/forms.py:133 msgctxt "field label" msgid "Login" msgstr "Anmeldung" #: account/forms.py:292 msgid "E-mail (again)" msgstr "E-Mail (wiederholen)" #: account/forms.py:296 msgid "E-mail address confirmation" msgstr "Bestätigung der E-Mail-Adresse" #: account/forms.py:304 msgid "E-mail (optional)" msgstr "E-Mail (optional)" #: account/forms.py:345 msgid "You must type the same email each time." msgstr "Du musst zweimal dasselbe Passwort eingeben." #: account/forms.py:368 account/forms.py:477 msgid "Password (again)" msgstr "Passwort (Wiederholung)" #: account/forms.py:432 msgid "This e-mail address is already associated with this account." msgstr "Diese E-Mail-Adresse wird bereits in diesem Konto verwendet." #: account/forms.py:434 msgid "This e-mail address is already associated with another account." msgstr "Diese E-Mail-Adresse wird bereits in einem anderen Konto verwendet." #: account/forms.py:456 msgid "Current Password" msgstr "Aktuelles Passwort" #: account/forms.py:457 account/forms.py:546 msgid "New Password" msgstr "Neues Passwort" #: account/forms.py:458 account/forms.py:547 msgid "New Password (again)" msgstr "Neues Passwort (Wiederholung)" #: account/forms.py:466 msgid "Please type your current password." msgstr "Bitte gib Dein aktuelles Passwort ein." #: account/forms.py:504 msgid "The e-mail address is not assigned to any user account" msgstr "Diese E-Mail-Adresse ist keinem Konto zugeordnet" #: account/forms.py:568 msgid "The password reset token was invalid." msgstr "Das Sicherheits-Token zum Zurücksetzen des Passwortes war ungültig." #: account/models.py:23 msgid "user" msgstr "Benutzer/in" #: account/models.py:27 account/models.py:81 msgid "e-mail address" msgstr "E-Mail-Adresse" #: account/models.py:28 msgid "verified" msgstr "bestätigt" #: account/models.py:29 msgid "primary" msgstr "Primär" #: account/models.py:34 msgid "email address" msgstr "E-Mail-Adresse" #: account/models.py:35 msgid "email addresses" msgstr "E-Mail-Adressen" #: account/models.py:83 msgid "created" msgstr "Erstellt" #: account/models.py:85 msgid "sent" msgstr "Gesendet" #: account/models.py:86 socialaccount/models.py:55 msgid "key" msgstr "Schlüssel" #: account/models.py:91 msgid "email confirmation" msgstr "E-Mail-Bestätigung" #: account/models.py:92 msgid "email confirmations" msgstr "E-Mail-Bestätigungen" #: socialaccount/adapter.py:26 #, python-format msgid "" "An account already exists with this e-mail address. Please sign in to that " "account first, then connect your %s account." msgstr "" "Es existiert bereits ein Konto mit dieser E-Mail-Adresse. Bitte melde dich " "zuerst mit diesem Konto an, und verknüpfe es dann mit deinem %s-Konto." #: socialaccount/adapter.py:131 msgid "Your account has no password set up." msgstr "Für dein Konto wurde noch kein Passwort festgelegt." #: socialaccount/adapter.py:138 msgid "Your account has no verified e-mail address." msgstr "Dein Konto hat keine bestätigte E-Mail-Adresse." #: socialaccount/apps.py:7 msgid "Social Accounts" msgstr "Konto" #: socialaccount/models.py:43 socialaccount/models.py:77 msgid "provider" msgstr "Anbieter" #: socialaccount/models.py:46 msgid "name" msgstr "Anmeldename" #: socialaccount/models.py:48 msgid "client id" msgstr "Client-ID" #: socialaccount/models.py:50 msgid "App ID, or consumer key" msgstr "App-ID oder 'Consumer key'" #: socialaccount/models.py:51 msgid "secret key" msgstr "Geheimer Schlüssel" #: socialaccount/models.py:53 msgid "API secret, client secret, or consumer secret" msgstr "'API secret', 'client secret' oder 'consumer secret'" #: socialaccount/models.py:58 msgid "Key" msgstr "Schlüssel" #: socialaccount/models.py:66 msgid "social application" msgstr "Soziale Anwendung" #: socialaccount/models.py:67 msgid "social applications" msgstr "Soziale Anwendungen" #: socialaccount/models.py:96 msgid "uid" msgstr "UID" #: socialaccount/models.py:98 msgid "last login" msgstr "Letzte Anmeldung" #: socialaccount/models.py:100 msgid "date joined" msgstr "Registrierdatum" #: socialaccount/models.py:102 msgid "extra data" msgstr "Weitere Daten" #: socialaccount/models.py:106 msgid "social account" msgstr "Soziales Konto" #: socialaccount/models.py:107 msgid "social accounts" msgstr "Soziale Konten" #: socialaccount/models.py:133 msgid "token" msgstr "Token" #: socialaccount/models.py:135 msgid "\"oauth_token\" (OAuth1) or access token (OAuth2)" msgstr "\"oauth_token\" (OAuth1) oder \"access token\" (OAuth2)" #: socialaccount/models.py:138 msgid "token secret" msgstr "Geheimes Token" #: socialaccount/models.py:140 msgid "\"oauth_token_secret\" (OAuth1) or refresh token (OAuth2)" msgstr "\"oauth_token_secret\" (OAuth1) oder \"refresh token\" (OAuth2)" #: socialaccount/models.py:142 msgid "expires at" msgstr "Läuft ab" #: socialaccount/models.py:146 msgid "social application token" msgstr "Token für soziale Anwendung" #: socialaccount/models.py:147 msgid "social application tokens" msgstr "Tokens für soziale Anwendungen" #: socialaccount/providers/douban/views.py:36 msgid "Invalid profile data" msgstr "Ungültige Profildaten" #: socialaccount/providers/oauth/client.py:78 #, python-format msgid "Invalid response while obtaining request token from \"%s\"." msgstr "Ungültige Antwort von \"%s\" als Anfrageschlüssel erbeten wurde." #: socialaccount/providers/oauth/client.py:109 #, python-format msgid "Invalid response while obtaining access token from \"%s\"." msgstr "Ungültige Antwort von \"%s\" als Zugangsschlüssel erbeten wurde." #: socialaccount/providers/oauth/client.py:128 #, python-format msgid "No request token saved for \"%s\"." msgstr "Kein Request-Token gespeichert für \"%s\"." #: socialaccount/providers/oauth/client.py:177 #, python-format msgid "No access token saved for \"%s\"." msgstr "Kein Access-Token gespeichert für \"%s\"." #: socialaccount/providers/oauth/client.py:197 #, python-format msgid "No access to private resources at \"%s\"." msgstr "Kein Zugriff zu privaten Daten auf \"%s\"." #: templates/account/account_inactive.html:5 #: templates/account/account_inactive.html:8 msgid "Account Inactive" msgstr "Konto inaktiv" #: templates/account/account_inactive.html:10 msgid "This account is inactive." msgstr "Dieses Konto ist inaktiv." #: templates/account/email.html:5 msgid "Account" msgstr "Konto" #: templates/account/email.html:8 msgid "E-mail Addresses" msgstr "E-Mail-Adressen" #: templates/account/email.html:10 msgid "The following e-mail addresses are associated with your account:" msgstr "Folgende E-Mail-Adressen sind mit diesem Konto verknüpft:" #: templates/account/email.html:24 msgid "Verified" msgstr "Bestätigt" #: templates/account/email.html:26 msgid "Unverified" msgstr "Unbestätigt" #: templates/account/email.html:28 msgid "Primary" msgstr "Primär" #: templates/account/email.html:34 msgid "Make Primary" msgstr "Als primäre Adresse festlegen" #: templates/account/email.html:35 msgid "Re-send Verification" msgstr "Bestätigungs-Mail nochmal verschicken" #: templates/account/email.html:36 templates/socialaccount/connections.html:35 msgid "Remove" msgstr "Ausgewählte entfernen" #: templates/account/email.html:43 msgid "Warning:" msgstr "Warnung:" #: templates/account/email.html:43 msgid "" "You currently do not have any e-mail address set up. You should really add " "an e-mail address so you can receive notifications, reset your password, etc." msgstr "" "Du hast derzeit keine E-Mail-Adressen angegeben. Das solltest Du allerdings " "tun, denn nur so können wir dich benachrichtigen und dein Passwort " "zurücksetzen." #: templates/account/email.html:48 msgid "Add E-mail Address" msgstr "E-Mail-Adresse hinzufügen" #: templates/account/email.html:53 msgid "Add E-mail" msgstr "E-Mail hinzufügen" #: templates/account/email.html:62 msgid "Do you really want to remove the selected e-mail address?" msgstr "Möchtest du wirklich die ausgewählte E-Mail-Adresse entfernen?" #: templates/account/email/email_confirmation_message.txt:1 #, python-format msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because user %(user_display)s has given yours " "as an e-mail address to connect their account.\n" "\n" "To confirm this is correct, go to %(activate_url)s\n" msgstr "" "Hallo von %(site_name)s!\n" "\n" "Du erhältst diese E-Mail der/die Nutzer/in %(user_display)s deine E-Mail-" "Adresse als seine/ihre angab, um sie mit seinem/ihrem Konto zu verknüpfen.\n" "\n" "Um dies zu bestätigen, rufe bitte folgende Adresse auf: %(activate_url)s\n" #: templates/account/email/email_confirmation_message.txt:7 #, python-format msgid "" "Thank you from %(site_name)s!\n" "%(site_domain)s" msgstr "" "Danke von %(site_name)s!\n" "%(site_domain)s" #: templates/account/email/email_confirmation_subject.txt:3 msgid "Please Confirm Your E-mail Address" msgstr "Bitte bestätige deine E-Mail-Adresse" #: templates/account/email/password_reset_key_message.txt:1 #, python-format msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because you or someone else has requested a " "password for your user account.\n" "It can be safely ignored if you did not request a password reset. Click the " "link below to reset your password." msgstr "" "Hallo von %(site_name)s!\n" "\n" "Du erhältst diese E-Mail weil du oder jemand anderes die Zurücksetzung des " "Passwortes für dein Konto gefordert hat.\n" "Falls es sich dabei nicht um dich handelt, kann diese Nachricht ignoriert " "werden. Rufe folgende Adresse auf um dein Passwort zurückzusetzen." #: templates/account/email/password_reset_key_message.txt:8 #, python-format msgid "In case you forgot, your username is %(username)s." msgstr "" "Falls Du deinen Anmeldenamen vergessen haben solltest; er lautet " "%(username)s." #: templates/account/email/password_reset_key_message.txt:10 #, python-format msgid "" "Thank you for using %(site_name)s!\n" "%(site_domain)s" msgstr "" "Danke dass du %(site_name)s nutzt!\n" "%(site_domain)s" #: templates/account/email/password_reset_key_subject.txt:3 msgid "Password Reset E-mail" msgstr "E-Mail zum Zurücksetzen des Passworts" #: templates/account/email_confirm.html:6 #: templates/account/email_confirm.html:10 msgid "Confirm E-mail Address" msgstr "E-Mail-Adresse bestätigen" #: templates/account/email_confirm.html:16 #, python-format msgid "" "Please confirm that %(email)s is an e-mail " "address for user %(user_display)s." msgstr "" "Bitte bestätige, dass %(email)s eine E-Mail-" "Adresse von %(user_display)s ist." #: templates/account/email_confirm.html:20 msgid "Confirm" msgstr "Bestätigen" #: templates/account/email_confirm.html:27 #, python-format msgid "" "This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request." msgstr "" "Dieser Bestätigungslink ist leider abgelaufen. Lass Dir bitte eine neue Bestätigungs-Mail schicken." #: templates/account/login.html:6 templates/account/login.html:10 #: templates/account/login.html:43 msgid "Sign In" msgstr "Anmeldung" #: templates/account/login.html:15 #, python-format msgid "" "Please sign in with one\n" "of your existing third party accounts. Or, sign " "up\n" "for a %(site_name)s account and sign in below:" msgstr "" "Bitte melde Dich mit einem der folgenden Netzwerkkonten an, oder registriere Dich auf %(site_name)s, dann kannst " "Du Dich unten mit Deinem Konto anmelden:" #: templates/account/login.html:25 msgid "or" msgstr "oder" #: templates/account/login.html:32 #, python-format msgid "" "If you have not created an account yet, then please\n" "sign up first." msgstr "" "Du hast noch kein Konto bei uns? Dann erstelle bitte zunächst eins." #: templates/account/login.html:42 msgid "Forgot Password?" msgstr "Passwort vergessen?" #: templates/account/logout.html:5 templates/account/logout.html:8 #: templates/account/logout.html:17 msgid "Sign Out" msgstr "Abmelden" #: templates/account/logout.html:10 msgid "Are you sure you want to sign out?" msgstr "Bist Du sicher, dass du Dich abmelden möchtest?" #: templates/account/messages/cannot_delete_primary_email.txt:2 #, python-format msgid "You cannot remove your primary e-mail address (%(email)s)." msgstr "Du kannst deine primäre E-Mail-Adresse (%(email)s) nicht löschen." #: templates/account/messages/email_confirmation_sent.txt:2 #, python-format msgid "Confirmation e-mail sent to %(email)s." msgstr "Bestätigungs-E-Mail wurde an %(email)s verschickt." #: templates/account/messages/email_confirmed.txt:2 #, python-format msgid "You have confirmed %(email)s." msgstr "Du hast die Adresse %(email)s bestätigt." #: templates/account/messages/email_deleted.txt:2 #, python-format msgid "Removed e-mail address %(email)s." msgstr "E-Mailadresse %(email)s entfernt." #: templates/account/messages/logged_in.txt:4 #, python-format msgid "Successfully signed in as %(name)s." msgstr "Erfolgreich als %(name)s angemeldet." #: templates/account/messages/logged_out.txt:2 msgid "You have signed out." msgstr "Du hast Dich abgemeldet." #: templates/account/messages/password_changed.txt:2 msgid "Password successfully changed." msgstr "Das Passwort wurde geändert." #: templates/account/messages/password_set.txt:2 msgid "Password successfully set." msgstr "Das Passwort wurde erfolgreich gesetzt." #: templates/account/messages/primary_email_set.txt:2 msgid "Primary e-mail address set." msgstr "Primäre E-Mailadresse festgelegt." #: templates/account/messages/unverified_primary_email.txt:2 msgid "Your primary e-mail address must be verified." msgstr "Deine primäre E-Mailadresse muss bestätigt werden." #: templates/account/password_change.html:5 #: templates/account/password_change.html:8 #: templates/account/password_change.html:13 #: templates/account/password_reset_from_key.html:4 #: templates/account/password_reset_from_key.html:7 #: templates/account/password_reset_from_key_done.html:4 #: templates/account/password_reset_from_key_done.html:7 msgid "Change Password" msgstr "Passwort ändern" #: templates/account/password_reset.html:6 #: templates/account/password_reset.html:10 #: templates/account/password_reset_done.html:6 #: templates/account/password_reset_done.html:9 msgid "Password Reset" msgstr "Passwort zurücksetzen" #: templates/account/password_reset.html:15 msgid "" "Forgotten your password? Enter your e-mail address below, and we'll send you " "an e-mail allowing you to reset it." msgstr "" "Passwort vergessen? Gib Deine E-Mail-Adresse unten ein, dann schicken wir " "Dir einen Link, unter dem Du Dein Passwort zurücksetzen kannst." #: templates/account/password_reset.html:20 msgid "Reset My Password" msgstr "Passwort zurücksetzen" #: templates/account/password_reset.html:23 msgid "Please contact us if you have any trouble resetting your password." msgstr "" "Bitte kontaktiere uns, wenn das Zurücksetzen des Passworts nicht klappt." #: templates/account/password_reset_done.html:15 msgid "" "We have sent you an e-mail. Please contact us if you do not receive it " "within a few minutes." msgstr "" "Wir haben Dir eine E-Mail geschickt. Bitte kontaktiere uns, wenn Du sie " "nicht in ein paar Minuten erhalten hast." #: templates/account/password_reset_from_key.html:7 msgid "Bad Token" msgstr "Falsches Token" #: templates/account/password_reset_from_key.html:11 #, python-format msgid "" "The password reset link was invalid, possibly because it has already been " "used. Please request a new password reset." msgstr "" "Der Link zum Zurücksetzen des Passworts war ungültig, womöglich wurde dieser " "Link bereits benutzt. Bitte lass Dein Passwort noch mal zurücksetzen." #: templates/account/password_reset_from_key.html:17 msgid "change password" msgstr "Passwort ändern" #: templates/account/password_reset_from_key.html:20 #: templates/account/password_reset_from_key_done.html:8 msgid "Your password is now changed." msgstr "Dein Passwort wurde geändert." #: templates/account/password_set.html:5 templates/account/password_set.html:8 #: templates/account/password_set.html:13 msgid "Set Password" msgstr "Passwort setzen" #: templates/account/signup.html:5 templates/socialaccount/signup.html:5 msgid "Signup" msgstr "Registrieren" #: templates/account/signup.html:8 templates/account/signup.html:18 #: templates/socialaccount/signup.html:8 templates/socialaccount/signup.html:19 msgid "Sign Up" msgstr "Registrieren" #: templates/account/signup.html:10 #, python-format msgid "" "Already have an account? Then please sign in." msgstr "" "Du hast bereits ein Konto bei uns? Dann bitte hier " "entlang." #: templates/account/signup_closed.html:5 #: templates/account/signup_closed.html:8 msgid "Sign Up Closed" msgstr "Registrierung geschlossen" #: templates/account/signup_closed.html:10 msgid "We are sorry, but the sign up is currently closed." msgstr "Es tut uns leid, aber die Registrierung ist derzeit geschlossen." #: templates/account/snippets/already_logged_in.html:5 msgid "Note" msgstr "Anmerkung" #: templates/account/snippets/already_logged_in.html:5 #, python-format msgid "you are already logged in as %(user_display)s." msgstr "Du bist bereits als %(user_display)s angemeldet." #: templates/account/verification_sent.html:5 #: templates/account/verification_sent.html:8 #: templates/account/verified_email_required.html:5 #: templates/account/verified_email_required.html:8 msgid "Verify Your E-mail Address" msgstr "Bestätige deine E-Mail-Adresse" #: templates/account/verification_sent.html:10 msgid "" "We have sent an e-mail to you for verification. Follow the link provided to " "finalize the signup process. Please contact us if you do not receive it " "within a few minutes." msgstr "" "Wir haben dir eine E-Mail geschickt, um deine Adresse zu verifizieren. Bitte " "folge dem Link in der E-Mail um den Anmeldeprozess abzuschließen. Bitte " "kontaktiere uns, falls die E-Mail nicht in ein paar Minuten angekommen ist." #: templates/account/verified_email_required.html:12 msgid "" "This part of the site requires us to verify that\n" "you are who you claim to be. For this purpose, we require that you\n" "verify ownership of your e-mail address. " msgstr "" "Auf diesem Teil der Webseite möchten wie sichergehen,\n" "dass du die Person bist für die du dich ausgibst.\n" "Dazu musst du deine E-Mail-Adresse verifizieren. " #: templates/account/verified_email_required.html:16 msgid "" "We have sent an e-mail to you for\n" "verification. Please click on the link inside this e-mail. Please\n" "contact us if you do not receive it within a few minutes." msgstr "" "Wir haben Dir eine E-Mail geschickt, um Deine\n" "Adresse zu verifizieren. Bitte klick auf den Link\n" "in der E-Mail. Wenn die E-Mail nicht in ein paar Minuten\n" "angekommen ist, gib uns bitte Bescheid." #: templates/account/verified_email_required.html:20 #, python-format msgid "" "Note: you can still change your e-" "mail address." msgstr "" "Anmerkung: Du kannst Deine E-Mail-" "Adresse ändern." #: templates/openid/login.html:9 msgid "OpenID Sign In" msgstr "OpenID-Anmeldung" #: templates/socialaccount/authentication_error.html:5 #: templates/socialaccount/authentication_error.html:8 msgid "Social Network Login Failure" msgstr "Fehler bei der Anmeldung am sozialen Netzwerk" #: templates/socialaccount/authentication_error.html:10 msgid "" "An error occurred while attempting to login via your social network account." msgstr "" "Ein Fehler ist aufgetreten; die Anmeldung beim sozialen Netzwerk hat nicht " "geklappt." #: templates/socialaccount/connections.html:5 #: templates/socialaccount/connections.html:8 msgid "Account Connections" msgstr "Konto-Verknüpfungen" #: templates/socialaccount/connections.html:11 msgid "" "You can sign in to your account using any of the following third party " "accounts:" msgstr "Du kannst Dich bei uns über folgende soziale Netzwerke anmelden:" #: templates/socialaccount/connections.html:43 msgid "" "You currently have no social network accounts connected to this account." msgstr "Dein Konto ist derzeit mit keinen sozialen Netzwerken verknüpft." #: templates/socialaccount/connections.html:46 msgid "Add a 3rd Party Account" msgstr "Soziales Netzwerk hinzufügen" #: templates/socialaccount/login_cancelled.html:5 #: templates/socialaccount/login_cancelled.html:9 msgid "Login Cancelled" msgstr "Anmeldung abgebrochen" #: templates/socialaccount/login_cancelled.html:13 #, python-format msgid "" "You decided to cancel logging in to our site using one of your existing " "accounts. If this was a mistake, please proceed to sign in." msgstr "" "Du hast die Anmeldung abgebrochen. Wenn das nur ein Versehen oder ein Fehler " "war, folge bitte diesem Link um Dich " "anzumelden." #: templates/socialaccount/messages/account_connected.txt:2 msgid "The social account has been connected." msgstr "Konten wurden erfolgreich verknüpft." #: templates/socialaccount/messages/account_connected_other.txt:2 msgid "The social account is already connected to a different account." msgstr "" "Das Konto des Drittanbieters ist bereits mit einem anderen Konto dieser " "Seite verknüpft." #: templates/socialaccount/messages/account_disconnected.txt:2 msgid "The social account has been disconnected." msgstr "Die Verknüpfung mit dem sozialen Netzwerk wurde aufgehoben." #: templates/socialaccount/signup.html:10 #, python-format msgid "" "You are about to use your %(provider_name)s account to login to\n" "%(site_name)s. As a final step, please complete the following form:" msgstr "" "Du verwendest Dein %(provider_name)s-Konto, um Dich bei\n" "%(site_name)s anzumelden. Zum Abschluss bitte das folgende Formular " "ausfüllen:" #~ msgid "The login and/or password you specified are not correct." #~ msgstr "Die Anmeldedaten sind leider falsch." #~ msgid "Usernames can only contain letters, digits and @/./+/-/_." #~ msgstr "" #~ "Anmeldenamen dürfen nur Buchstaben und Ziffern und folgende Zeichen " #~ "enthalten: @/./+/-/_." #~ msgid "This username is already taken. Please choose another." #~ msgstr "Der Anmeldename ist bereits vergeben – bitte wähle einen anderen." #, fuzzy #~| msgid "Sign In" #~ msgid "Shopify Sign In" #~ msgstr "Anmeldung" #~ msgid "" #~ "You have confirmed that %(email)s is an " #~ "e-mail address for user %(user_display)s." #~ msgstr "" #~ "Du hast bestätigt, dass %(email)s eine " #~ "gültige Adresse von %(user_display)s ist." #~ msgid "Thanks for using our site!" #~ msgstr "Danke, dass Du unsere Seite nutzt!" django-allauth-0.35.0/allauth/locale/ko/0000755000076500000240000000000013235133532020752 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/ko/LC_MESSAGES/0000755000076500000240000000000013235133532022537 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/ko/LC_MESSAGES/django.mo0000644000076500000240000003341413235132043024337 0ustar pennersrstaff00000000000000 / 7 \Q 6 -   / @ I T g I w LA" &!92lsp_R89%) 9 FS'h -$Rq"B"9 NZ!a #-"AP6@ %&)?;Z#?<Q0 +44i|2z\$P:VH*s'*$,K-i     $/A EPUX` ity.d53 ; Y !5d!G!! !!"" "'8"Y`""MC#(#*##$$8%$^$=r$ $$$$$% %A%Q%S(&T|&&&&''4,'3a'4''' ''( (8=(6v(6($(N )'X))'))))$))* %* /* <*I* ]* j*x***.*;*?-+Lm++;B,'~,.,J,; -5\-1-?-C.VH.^. . /Z/p/ ///>//0qk11Gl282v2Bd3$33.314DK4;4&4+4535 M5 W5e5v5555 5 5 555555 6 6 6 "6 06>6 X6 y666 6 696Fl JA(Sn_ igK 8XQyf0mDCh%15R@bB!N#-Ov2G7ow]sP)}j\^|WM{."4IVE;<L$Hp9Zxd +=,/u>6a[qk ?e~3&Tct' z`rY:*U"oauth_token" (OAuth1) or access token (OAuth2)"oauth_token_secret" (OAuth1) or refresh token (OAuth2)Note: you can still change your e-mail address.A user is already registered with this e-mail address.API secret, client secret, or consumer secretAccountAccount ConnectionsAccount InactiveAccountsAdd E-mailAdd E-mail AddressAdd a 3rd Party AccountAlready have an account? Then please sign in.An account already exists with this e-mail address. Please sign in to that account first, then connect your %s account.An error occurred while attempting to login via your social network account.App ID, or consumer keyAre you sure you want to sign out?Bad TokenChange PasswordConfirm E-mail AddressConfirmation e-mail sent to %(email)s.Current PasswordDo you really want to remove the selected e-mail address?E-mailE-mail (again)E-mail (optional)E-mail AddressesE-mail addressE-mail address confirmationForgot Password?Forgotten your password? Enter your e-mail address below, and we'll send you an e-mail allowing you to reset it.If you have not created an account yet, then please sign up first.Invalid response while obtaining access token from "%s".Invalid response while obtaining request token from "%s".KeyLogin CancelledMake PrimaryNew PasswordNew Password (again)No access to private resources at "%s".No access token saved for "%s".No request token saved for "%s".NoteOpenID Sign InPasswordPassword (again)Password ResetPassword Reset E-mailPassword must be a minimum of {0} characters.Password successfully changed.Password successfully set.Please Confirm Your E-mail AddressPlease contact us if you have any trouble resetting your password.Please type your current password.PrimaryPrimary e-mail address set.Re-send VerificationRemember MeRemoveRemoved e-mail address %(email)s.Reset My PasswordSet PasswordSign InSign OutSign UpSign Up ClosedSignupSocial AccountsSocial Network Login FailureSuccessfully signed in as %(name)s.Thank you from %(site_name)s! %(site_domain)sThe e-mail address and/or password you specified are not correct.The e-mail address is not assigned to any user accountThe following e-mail addresses are associated with your account:The password reset link was invalid, possibly because it has already been used. Please request a new password reset.The password reset token was invalid.The social account has been connected.The social account has been disconnected.The social account is already connected to a different account.The username and/or password you specified are not correct.This account is currently inactive.This account is inactive.This e-mail address is already associated with another account.This e-mail address is already associated with this account.This part of the site requires us to verify that you are who you claim to be. For this purpose, we require that you verify ownership of your e-mail address. Too many failed login attempts. Try again later.UnverifiedUsernameUsername can not be used. Please use other username.Username or e-mailVerifiedVerify Your E-mail AddressWarning:We are sorry, but the sign up is currently closed.We have sent an e-mail to you for verification. Please click on the link inside this e-mail. Please contact us if you do not receive it within a few minutes.We have sent an e-mail to you for verification. Follow the link provided to finalize the signup process. Please contact us if you do not receive it within a few minutes.We have sent you an e-mail. Please contact us if you do not receive it within a few minutes.You are about to use your %(provider_name)s account to login to %(site_name)s. As a final step, please complete the following form:You can sign in to your account using any of the following third party accounts:You cannot remove your primary e-mail address (%(email)s).You currently do not have any e-mail address set up. You should really add an e-mail address so you can receive notifications, reset your password, etc.You currently have no social network accounts connected to this account.You have confirmed %(email)s.You have signed out.You must type the same email each time.You must type the same password each time.Your account has no password set up.Your account has no verified e-mail address.Your password is now changed.Your primary e-mail address must be verified.change passwordclient idcreateddate joinede-mail addressemail addressemail addressesemail confirmationemail confirmationsexpires atextra datafield labelLoginkeylast loginnameorprimaryprovidersecret keysentsocial accountsocial accountssocial applicationsocial application tokensocial application tokenssocial applicationstokenuserverifiedyou are already logged in as %(user_display)s.Project-Id-Version: PACKAGE VERSION Report-Msgid-Bugs-To: POT-Creation-Date: 2018-02-02 12:55-0600 PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE Last-Translator: FULL NAME Language-Team: LANGUAGE Language: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; "oauth_token" (OAuth1) 또는 access token (OAuth2)"oauth_token_secret" (OAuth1) 또는 refresh token (OAuth2)메모: 이메일 변경이 가능합니다.해당 이메일은 이미 사용되고 있습니다.API 비밀 키, 클라이언트 비밀 키, 또는 컨슈머 비밀 키계정계정 연결계정 비활성계정이메일 추가이메일 주소 추가서드파티 계정을 추가하세요.이미 계정이 있으신가요? 바로 로그인 하세요.해당 이메일을 사용중인 계정이 이미 존재합니다. 해당 계정으로 로그인 후에 %s 계정으로 연결하세요.소셜 계정을 통해 로그인 하는 도중 오류가 발생했습니다.앱 아이디 또는 컨슈머 아이디정말로 로그아웃 하시겠습니까?올비르지 않은 토큰비밀번호 변경이메일 확인%(email)s 으로 확인 메일이 전송되었습니다.현재 비밀번호정말로 선택하신 이메일을 제거하시겠습니까?이메일이메일 (확인)이메일 (선택사항)이메일 계정이메일 주소이메일 주소 확인비밀번호를 잊으셨나요?비밀번호를 잊으셨나요? 아래에 당신의 이메일을 입력하시면, 비밀번호 초기화 이메일을 전송해 드리겠습니다.계정이 없다면 회원가입을 진행하세요."%s".로 부터 access 토큰을 받는 도중 잘못된 응답을 받았습니다."%s".로 부터 request 토큰을 받는 도중 잘못된 응답을 받았습니다.키로그인 취소됨주 이메일로 지정새 비밀번호새 비밀번호 (확인)"%s".에 접근하기 위한 권한이 없습니다."%s".을(를) 위한 access 토큰이 없습니다."%s".을(를) 위한 request 토큰이 없습니다.메모OpenID 로그인비밀번호비밀번호 (확인)비밀번호 초기화비밀번호 초기화 이메일비밀번호는 최소 {0}자 이상이어야 합니다.비밀번호가 성공적으로 변경되었습니다.비밀번호가 성공적으로 설정되었습니다.이메일 주소를 확인하세요.비밀번호 초기화에 문제가 있으시면 저희에게 연락주세요.현재 비밀번호를 입력하세요.주주 이메일이 지정되었습니다.인증 재전송아이디 저장제거%(email)s 을 제거하였습니다.비밀번호 초기화비밀번호 설정로그인로그아웃회원가입회원가입 종료회원가입소셜 계정소셜 계정 로그인 실패%(name)s 으로 로그인 되었습니다.감사합니다! %(site_name)s %(site_domain)s이메일 또는 비밀번호가 올바르지 않습니다.해당 이메일을 가지고 있는 사용자가 없습니다.다음 이메일 주소들이 당신의 계정에 등록되어 있습니다.비밀번호 초기화 링크가 올바르지 않습니다. 다시 비밀번호 초기화 하세요.비밀번호 초기화 토큰이 올바르지 않습니다.소셜 계정이 연결되었습니다.소셜 계정 연결이 해제되었습니다.해당 소셜 계정이 이미 다른 계정에 연결되어 있습니다.아이디 또는 비밀번호가 올바르지 않습니다.해당 계정은 현재 비활성화 상태입니다.해당 계정은 비활성화된 상태입니다.해당 이메일은 다른 계정에 등록되어 있습니다.해당 이메일은 이미 이 계정에 등록되어 있습니다.해당 페이지는 이메일 인증이 필요합니다. 이메일을 인증하세요.너무 많은 로그인 실패가 감지되었습니다. 잠시 후에 다시 시도하세요.인증대기아이디해당 아이디는 이미 사용중입니다. 다른 사용자명을 이용해 주세요.아이디 또는 이메일인증완료이메일을 인증하세요경고: 죄송합니다. 회원가입은 현재 종료되었습니다.인증메일을 전송하였습니다. 이메일의 링크를 클릭하시고, 몇 분 후에도 메일이 전송되지 않으면 저희에게 연락주세요.이메일 인증 메일이 전송되었습니다.회원가입 완료를 위해 전송된 메일의 링크를 클릭하세요.몇 분 후에도 메일이 전송되지 않으면 저희에게 연락주세요.이메일이 전송되었습니다. 몇 분 후에도 이메일이 오지 않으면 저희에게 연락주세요.%(provider_name)s 의 계정을 이용하여 %(site_name)s 으로 로그인하려 합니다. 마지막으로 다음 폼을 작성해주세요:다음 서드파티 계정들을 통해 로그인 할 수 있습니다:주 이메일은 제거할 수 없습니다 (%(email)s).등록된 이메일이 없습니다. 알림, 비밀번호 초기화 등을 위해 이메일을 등록해야 합니다.해당 계정에 연결되어있는 소셜 계정이 없습니다.%(email)s 을 확인하였습니다.로그아웃 되었습니다.동일한 이메일을 입력해야 합니다.동일한 비밀번호를 입력해야 합니다.당신의 계정에 비밀번호가 설정되어있지 않습니다.당신의 계정에는 인증된 이메일이 없습니다.비밀번호가 변경되었습니다.주 이메일은 인증이 필요합니다.비밀번호 변경클라이언트 아이디생성됨가입 날짜이메일 주소이메일 주소이메일 주소이메일 확인이메일 확인만료일추가 정보로그인키최종 로그인이름또는주제공자비밀 키전송됨소셜 계정소셜 계정소셜 어플리케이션소셜 어플리케이션 토큰소셜 어플리케이션 토큰소셜 어플리케이션토큰사용자인증완료%(user_display)s 로 이미 로그인 되어있습니다.django-allauth-0.35.0/allauth/locale/ko/LC_MESSAGES/django.po0000644000076500000240000005732013235132040024341 0ustar pennersrstaff00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-02-02 12:55-0600\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" #: account/adapter.py:45 msgid "Username can not be used. Please use other username." msgstr "해당 아이디는 이미 사용중입니다. 다른 사용자명을 이용해 주세요." #: account/adapter.py:49 msgid "Too many failed login attempts. Try again later." msgstr "너무 많은 로그인 실패가 감지되었습니다. 잠시 후에 다시 시도하세요." #: account/adapter.py:51 msgid "A user is already registered with this e-mail address." msgstr "해당 이메일은 이미 사용되고 있습니다." #: account/adapter.py:288 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "비밀번호는 최소 {0}자 이상이어야 합니다." #: account/apps.py:7 msgid "Accounts" msgstr "계정" #: account/forms.py:61 account/forms.py:398 msgid "You must type the same password each time." msgstr "동일한 비밀번호를 입력해야 합니다." #: account/forms.py:91 account/forms.py:365 account/forms.py:476 msgid "Password" msgstr "비밀번호" #: account/forms.py:92 msgid "Remember Me" msgstr "아이디 저장" #: account/forms.py:98 msgid "This account is currently inactive." msgstr "해당 계정은 현재 비활성화 상태입니다." #: account/forms.py:101 msgid "The e-mail address and/or password you specified are not correct." msgstr "이메일 또는 비밀번호가 올바르지 않습니다." #: account/forms.py:104 msgid "The username and/or password you specified are not correct." msgstr "아이디 또는 비밀번호가 올바르지 않습니다." #: account/forms.py:113 account/forms.py:268 account/forms.py:426 #: account/forms.py:495 msgid "E-mail address" msgstr "이메일 주소" #: account/forms.py:115 account/forms.py:301 account/forms.py:421 #: account/forms.py:490 msgid "E-mail" msgstr "이메일" #: account/forms.py:120 account/forms.py:123 account/forms.py:260 #: account/forms.py:264 msgid "Username" msgstr "아이디" #: account/forms.py:130 msgid "Username or e-mail" msgstr "아이디 또는 이메일" #: account/forms.py:133 msgctxt "field label" msgid "Login" msgstr "로그인" #: account/forms.py:292 msgid "E-mail (again)" msgstr "이메일 (확인)" #: account/forms.py:296 msgid "E-mail address confirmation" msgstr "이메일 주소 확인" #: account/forms.py:304 msgid "E-mail (optional)" msgstr "이메일 (선택사항)" #: account/forms.py:345 msgid "You must type the same email each time." msgstr "동일한 이메일을 입력해야 합니다." #: account/forms.py:368 account/forms.py:477 msgid "Password (again)" msgstr "비밀번호 (확인)" #: account/forms.py:432 msgid "This e-mail address is already associated with this account." msgstr "해당 이메일은 이미 이 계정에 등록되어 있습니다." #: account/forms.py:434 msgid "This e-mail address is already associated with another account." msgstr "해당 이메일은 다른 계정에 등록되어 있습니다." #: account/forms.py:456 msgid "Current Password" msgstr "현재 비밀번호" #: account/forms.py:457 account/forms.py:546 msgid "New Password" msgstr "새 비밀번호" #: account/forms.py:458 account/forms.py:547 msgid "New Password (again)" msgstr "새 비밀번호 (확인)" #: account/forms.py:466 msgid "Please type your current password." msgstr "현재 비밀번호를 입력하세요." #: account/forms.py:504 msgid "The e-mail address is not assigned to any user account" msgstr "해당 이메일을 가지고 있는 사용자가 없습니다." #: account/forms.py:568 msgid "The password reset token was invalid." msgstr "비밀번호 초기화 토큰이 올바르지 않습니다." #: account/models.py:23 msgid "user" msgstr "사용자" #: account/models.py:27 account/models.py:81 msgid "e-mail address" msgstr "이메일 주소" #: account/models.py:28 msgid "verified" msgstr "인증완료" #: account/models.py:29 msgid "primary" msgstr "주" #: account/models.py:34 msgid "email address" msgstr "이메일 주소" #: account/models.py:35 msgid "email addresses" msgstr "이메일 주소" #: account/models.py:83 msgid "created" msgstr "생성됨" #: account/models.py:85 msgid "sent" msgstr "전송됨" #: account/models.py:86 socialaccount/models.py:55 msgid "key" msgstr "키" #: account/models.py:91 msgid "email confirmation" msgstr "이메일 확인" #: account/models.py:92 msgid "email confirmations" msgstr "이메일 확인" #: socialaccount/adapter.py:26 #, python-format msgid "" "An account already exists with this e-mail address. Please sign in to that " "account first, then connect your %s account." msgstr "" "해당 이메일을 사용중인 계정이 이미 존재합니다. 해당 계정으로 로그인 후에 %s " "계정으로 연결하세요." #: socialaccount/adapter.py:131 msgid "Your account has no password set up." msgstr "당신의 계정에 비밀번호가 설정되어있지 않습니다." #: socialaccount/adapter.py:138 msgid "Your account has no verified e-mail address." msgstr "당신의 계정에는 인증된 이메일이 없습니다." #: socialaccount/apps.py:7 msgid "Social Accounts" msgstr "소셜 계정" #: socialaccount/models.py:43 socialaccount/models.py:77 msgid "provider" msgstr "제공자" #: socialaccount/models.py:46 msgid "name" msgstr "이름" #: socialaccount/models.py:48 msgid "client id" msgstr "클라이언트 아이디" #: socialaccount/models.py:50 msgid "App ID, or consumer key" msgstr "앱 아이디 또는 컨슈머 아이디" #: socialaccount/models.py:51 msgid "secret key" msgstr "비밀 키" #: socialaccount/models.py:53 msgid "API secret, client secret, or consumer secret" msgstr "API 비밀 키, 클라이언트 비밀 키, 또는 컨슈머 비밀 키" #: socialaccount/models.py:58 msgid "Key" msgstr "키" #: socialaccount/models.py:66 msgid "social application" msgstr "소셜 어플리케이션" #: socialaccount/models.py:67 msgid "social applications" msgstr "소셜 어플리케이션" #: socialaccount/models.py:96 msgid "uid" msgstr "" #: socialaccount/models.py:98 msgid "last login" msgstr "최종 로그인" #: socialaccount/models.py:100 msgid "date joined" msgstr "가입 날짜" #: socialaccount/models.py:102 msgid "extra data" msgstr "추가 정보" #: socialaccount/models.py:106 msgid "social account" msgstr "소셜 계정" #: socialaccount/models.py:107 msgid "social accounts" msgstr "소셜 계정" #: socialaccount/models.py:133 msgid "token" msgstr "토큰" #: socialaccount/models.py:135 msgid "\"oauth_token\" (OAuth1) or access token (OAuth2)" msgstr "\"oauth_token\" (OAuth1) 또는 access token (OAuth2)" #: socialaccount/models.py:138 msgid "token secret" msgstr "" #: socialaccount/models.py:140 msgid "\"oauth_token_secret\" (OAuth1) or refresh token (OAuth2)" msgstr "\"oauth_token_secret\" (OAuth1) 또는 refresh token (OAuth2)" #: socialaccount/models.py:142 msgid "expires at" msgstr "만료일" #: socialaccount/models.py:146 msgid "social application token" msgstr "소셜 어플리케이션 토큰" #: socialaccount/models.py:147 msgid "social application tokens" msgstr "소셜 어플리케이션 토큰" #: socialaccount/providers/douban/views.py:36 msgid "Invalid profile data" msgstr "" #: socialaccount/providers/oauth/client.py:78 #, python-format msgid "Invalid response while obtaining request token from \"%s\"." msgstr "\"%s\".로 부터 request 토큰을 받는 도중 잘못된 응답을 받았습니다." #: socialaccount/providers/oauth/client.py:109 #, python-format msgid "Invalid response while obtaining access token from \"%s\"." msgstr "\"%s\".로 부터 access 토큰을 받는 도중 잘못된 응답을 받았습니다." #: socialaccount/providers/oauth/client.py:128 #, python-format msgid "No request token saved for \"%s\"." msgstr "\"%s\".을(를) 위한 request 토큰이 없습니다." #: socialaccount/providers/oauth/client.py:177 #, python-format msgid "No access token saved for \"%s\"." msgstr "\"%s\".을(를) 위한 access 토큰이 없습니다." #: socialaccount/providers/oauth/client.py:197 #, python-format msgid "No access to private resources at \"%s\"." msgstr "\"%s\".에 접근하기 위한 권한이 없습니다." #: templates/account/account_inactive.html:5 #: templates/account/account_inactive.html:8 msgid "Account Inactive" msgstr "계정 비활성" #: templates/account/account_inactive.html:10 msgid "This account is inactive." msgstr "해당 계정은 비활성화된 상태입니다." #: templates/account/email.html:5 msgid "Account" msgstr "계정" #: templates/account/email.html:8 msgid "E-mail Addresses" msgstr "이메일 계정" #: templates/account/email.html:10 msgid "The following e-mail addresses are associated with your account:" msgstr "다음 이메일 주소들이 당신의 계정에 등록되어 있습니다." #: templates/account/email.html:24 msgid "Verified" msgstr "인증완료" #: templates/account/email.html:26 msgid "Unverified" msgstr "인증대기" #: templates/account/email.html:28 msgid "Primary" msgstr "주" #: templates/account/email.html:34 msgid "Make Primary" msgstr "주 이메일로 지정" #: templates/account/email.html:35 msgid "Re-send Verification" msgstr "인증 재전송" #: templates/account/email.html:36 templates/socialaccount/connections.html:35 msgid "Remove" msgstr "제거" #: templates/account/email.html:43 msgid "Warning:" msgstr "경고: " #: templates/account/email.html:43 msgid "" "You currently do not have any e-mail address set up. You should really add " "an e-mail address so you can receive notifications, reset your password, etc." msgstr "" "등록된 이메일이 없습니다. 알림, 비밀번호 초기화 등을 위해 이메일을 등록해야 " "합니다." #: templates/account/email.html:48 msgid "Add E-mail Address" msgstr "이메일 주소 추가" #: templates/account/email.html:53 msgid "Add E-mail" msgstr "이메일 추가" #: templates/account/email.html:62 msgid "Do you really want to remove the selected e-mail address?" msgstr "정말로 선택하신 이메일을 제거하시겠습니까?" #: templates/account/email/email_confirmation_message.txt:1 #, fuzzy, python-format #| msgid "" #| "Hello from %(site_name)s!\n" #| "\n" #| "You're receiving this e-mail because user %(user_display)s at " #| "%(site_domain)s has given yours as an e-mail address to connect their " #| "account.\n" #| "\n" #| "To confirm this is correct, go to %(activate_url)s\n" msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because user %(user_display)s has given yours " "as an e-mail address to connect their account.\n" "\n" "To confirm this is correct, go to %(activate_url)s\n" msgstr "" "안녕하세요. %(site_name)s 입니다!\n" "\n" "%(user_display)s 에 대해 %(site_domain)s 으로부터 이메일을 인증이 전송되었습" "니다.\n" "\n" "%(activate_url)s 에서 인증을 완료하세요.\n" #: templates/account/email/email_confirmation_message.txt:7 #, python-format msgid "" "Thank you from %(site_name)s!\n" "%(site_domain)s" msgstr "" "감사합니다!\n" "%(site_name)s %(site_domain)s" #: templates/account/email/email_confirmation_subject.txt:3 msgid "Please Confirm Your E-mail Address" msgstr "이메일 주소를 확인하세요." #: templates/account/email/password_reset_key_message.txt:1 #, python-format msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because you or someone else has requested a " "password for your user account.\n" "It can be safely ignored if you did not request a password reset. Click the " "link below to reset your password." msgstr "" #: templates/account/email/password_reset_key_message.txt:8 #, python-format msgid "In case you forgot, your username is %(username)s." msgstr "" #: templates/account/email/password_reset_key_message.txt:10 #, python-format msgid "" "Thank you for using %(site_name)s!\n" "%(site_domain)s" msgstr "" #: templates/account/email/password_reset_key_subject.txt:3 msgid "Password Reset E-mail" msgstr "비밀번호 초기화 이메일" #: templates/account/email_confirm.html:6 #: templates/account/email_confirm.html:10 msgid "Confirm E-mail Address" msgstr "이메일 확인" #: templates/account/email_confirm.html:16 #, python-format msgid "" "Please confirm that %(email)s is an e-mail " "address for user %(user_display)s." msgstr "" #: templates/account/email_confirm.html:20 msgid "Confirm" msgstr "" #: templates/account/email_confirm.html:27 #, python-format msgid "" "This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request." msgstr "" #: templates/account/login.html:6 templates/account/login.html:10 #: templates/account/login.html:43 msgid "Sign In" msgstr "로그인" #: templates/account/login.html:15 #, python-format msgid "" "Please sign in with one\n" "of your existing third party accounts. Or, sign " "up\n" "for a %(site_name)s account and sign in below:" msgstr "" #: templates/account/login.html:25 msgid "or" msgstr "또는" #: templates/account/login.html:32 #, python-format msgid "" "If you have not created an account yet, then please\n" "sign up first." msgstr "" "계정이 없다면\n" "회원가입을 진행하세요." #: templates/account/login.html:42 msgid "Forgot Password?" msgstr "비밀번호를 잊으셨나요?" #: templates/account/logout.html:5 templates/account/logout.html:8 #: templates/account/logout.html:17 msgid "Sign Out" msgstr "로그아웃" #: templates/account/logout.html:10 msgid "Are you sure you want to sign out?" msgstr "정말로 로그아웃 하시겠습니까?" #: templates/account/messages/cannot_delete_primary_email.txt:2 #, python-format msgid "You cannot remove your primary e-mail address (%(email)s)." msgstr "주 이메일은 제거할 수 없습니다 (%(email)s)." #: templates/account/messages/email_confirmation_sent.txt:2 #, python-format msgid "Confirmation e-mail sent to %(email)s." msgstr "%(email)s 으로 확인 메일이 전송되었습니다." #: templates/account/messages/email_confirmed.txt:2 #, python-format msgid "You have confirmed %(email)s." msgstr "%(email)s 을 확인하였습니다." #: templates/account/messages/email_deleted.txt:2 #, python-format msgid "Removed e-mail address %(email)s." msgstr "%(email)s 을 제거하였습니다." #: templates/account/messages/logged_in.txt:4 #, python-format msgid "Successfully signed in as %(name)s." msgstr "%(name)s 으로 로그인 되었습니다." #: templates/account/messages/logged_out.txt:2 msgid "You have signed out." msgstr "로그아웃 되었습니다." #: templates/account/messages/password_changed.txt:2 msgid "Password successfully changed." msgstr "비밀번호가 성공적으로 변경되었습니다." #: templates/account/messages/password_set.txt:2 msgid "Password successfully set." msgstr "비밀번호가 성공적으로 설정되었습니다." #: templates/account/messages/primary_email_set.txt:2 msgid "Primary e-mail address set." msgstr "주 이메일이 지정되었습니다." #: templates/account/messages/unverified_primary_email.txt:2 msgid "Your primary e-mail address must be verified." msgstr "주 이메일은 인증이 필요합니다." #: templates/account/password_change.html:5 #: templates/account/password_change.html:8 #: templates/account/password_change.html:13 #: templates/account/password_reset_from_key.html:4 #: templates/account/password_reset_from_key.html:7 #: templates/account/password_reset_from_key_done.html:4 #: templates/account/password_reset_from_key_done.html:7 msgid "Change Password" msgstr "비밀번호 변경" #: templates/account/password_reset.html:6 #: templates/account/password_reset.html:10 #: templates/account/password_reset_done.html:6 #: templates/account/password_reset_done.html:9 msgid "Password Reset" msgstr "비밀번호 초기화" #: templates/account/password_reset.html:15 msgid "" "Forgotten your password? Enter your e-mail address below, and we'll send you " "an e-mail allowing you to reset it." msgstr "" "비밀번호를 잊으셨나요? 아래에 당신의 이메일을 입력하시면, 비밀번호 초기화 이" "메일을 전송해 드리겠습니다." #: templates/account/password_reset.html:20 msgid "Reset My Password" msgstr "비밀번호 초기화" #: templates/account/password_reset.html:23 msgid "Please contact us if you have any trouble resetting your password." msgstr "비밀번호 초기화에 문제가 있으시면 저희에게 연락주세요." #: templates/account/password_reset_done.html:15 msgid "" "We have sent you an e-mail. Please contact us if you do not receive it " "within a few minutes." msgstr "" "이메일이 전송되었습니다. 몇 분 후에도 이메일이 오지 않으면 저희에게 연락주세" "요." #: templates/account/password_reset_from_key.html:7 msgid "Bad Token" msgstr "올비르지 않은 토큰" #: templates/account/password_reset_from_key.html:11 #, python-format msgid "" "The password reset link was invalid, possibly because it has already been " "used. Please request a new password reset." msgstr "" "비밀번호 초기화 링크가 올바르지 않습니다. 다시 비밀번호 초기화 하세요." #: templates/account/password_reset_from_key.html:17 msgid "change password" msgstr "비밀번호 변경" #: templates/account/password_reset_from_key.html:20 #: templates/account/password_reset_from_key_done.html:8 msgid "Your password is now changed." msgstr "비밀번호가 변경되었습니다." #: templates/account/password_set.html:5 templates/account/password_set.html:8 #: templates/account/password_set.html:13 msgid "Set Password" msgstr "비밀번호 설정" #: templates/account/signup.html:5 templates/socialaccount/signup.html:5 msgid "Signup" msgstr "회원가입" #: templates/account/signup.html:8 templates/account/signup.html:18 #: templates/socialaccount/signup.html:8 templates/socialaccount/signup.html:19 msgid "Sign Up" msgstr "회원가입" #: templates/account/signup.html:10 #, python-format msgid "" "Already have an account? Then please sign in." msgstr "" "이미 계정이 있으신가요? 바로 로그인 하세요." #: templates/account/signup_closed.html:5 #: templates/account/signup_closed.html:8 msgid "Sign Up Closed" msgstr "회원가입 종료" #: templates/account/signup_closed.html:10 msgid "We are sorry, but the sign up is currently closed." msgstr "죄송합니다. 회원가입은 현재 종료되었습니다." #: templates/account/snippets/already_logged_in.html:5 msgid "Note" msgstr "메모" #: templates/account/snippets/already_logged_in.html:5 #, python-format msgid "you are already logged in as %(user_display)s." msgstr "%(user_display)s 로 이미 로그인 되어있습니다." #: templates/account/verification_sent.html:5 #: templates/account/verification_sent.html:8 #: templates/account/verified_email_required.html:5 #: templates/account/verified_email_required.html:8 msgid "Verify Your E-mail Address" msgstr "이메일을 인증하세요" #: templates/account/verification_sent.html:10 msgid "" "We have sent an e-mail to you for verification. Follow the link provided to " "finalize the signup process. Please contact us if you do not receive it " "within a few minutes." msgstr "" "이메일 인증 메일이 전송되었습니다.회원가입 완료를 위해 전송된 메일의 링크를 " "클릭하세요.몇 분 후에도 메일이 전송되지 않으면 저희에게 연락주세요." #: templates/account/verified_email_required.html:12 msgid "" "This part of the site requires us to verify that\n" "you are who you claim to be. For this purpose, we require that you\n" "verify ownership of your e-mail address. " msgstr "" "해당 페이지는 이메일 인증이 필요합니다.\n" "이메일을 인증하세요." #: templates/account/verified_email_required.html:16 msgid "" "We have sent an e-mail to you for\n" "verification. Please click on the link inside this e-mail. Please\n" "contact us if you do not receive it within a few minutes." msgstr "" "인증메일을 전송하였습니다.\n" "이메일의 링크를 클릭하시고,\n" "몇 분 후에도 메일이 전송되지 않으면 저희에게 연락주세요." #: templates/account/verified_email_required.html:20 #, python-format msgid "" "Note: you can still change your e-" "mail address." msgstr "" "메모: 이메일 변경이 가능합니" "다." #: templates/openid/login.html:9 msgid "OpenID Sign In" msgstr "OpenID 로그인" #: templates/socialaccount/authentication_error.html:5 #: templates/socialaccount/authentication_error.html:8 msgid "Social Network Login Failure" msgstr "소셜 계정 로그인 실패" #: templates/socialaccount/authentication_error.html:10 msgid "" "An error occurred while attempting to login via your social network account." msgstr "소셜 계정을 통해 로그인 하는 도중 오류가 발생했습니다." #: templates/socialaccount/connections.html:5 #: templates/socialaccount/connections.html:8 msgid "Account Connections" msgstr "계정 연결" #: templates/socialaccount/connections.html:11 msgid "" "You can sign in to your account using any of the following third party " "accounts:" msgstr "다음 서드파티 계정들을 통해 로그인 할 수 있습니다:" #: templates/socialaccount/connections.html:43 msgid "" "You currently have no social network accounts connected to this account." msgstr "해당 계정에 연결되어있는 소셜 계정이 없습니다." #: templates/socialaccount/connections.html:46 msgid "Add a 3rd Party Account" msgstr "서드파티 계정을 추가하세요." #: templates/socialaccount/login_cancelled.html:5 #: templates/socialaccount/login_cancelled.html:9 msgid "Login Cancelled" msgstr "로그인 취소됨" #: templates/socialaccount/login_cancelled.html:13 #, python-format msgid "" "You decided to cancel logging in to our site using one of your existing " "accounts. If this was a mistake, please proceed to sign in." msgstr "" #: templates/socialaccount/messages/account_connected.txt:2 msgid "The social account has been connected." msgstr "소셜 계정이 연결되었습니다." #: templates/socialaccount/messages/account_connected_other.txt:2 msgid "The social account is already connected to a different account." msgstr "해당 소셜 계정이 이미 다른 계정에 연결되어 있습니다." #: templates/socialaccount/messages/account_disconnected.txt:2 msgid "The social account has been disconnected." msgstr "소셜 계정 연결이 해제되었습니다." #: templates/socialaccount/signup.html:10 #, python-format msgid "" "You are about to use your %(provider_name)s account to login to\n" "%(site_name)s. As a final step, please complete the following form:" msgstr "" "%(provider_name)s 의 계정을 이용하여 %(site_name)s 으로 로그인하려 합니다.\n" "마지막으로 다음 폼을 작성해주세요:" #~ msgid "The login and/or password you specified are not correct." #~ msgstr "로그인 또는 비밀번호가 올바르지 않습니다." #~ msgid "Usernames can only contain letters, digits and @/./+/-/_." #~ msgstr "아이디는 글자, 숫자 및 @/./+/-/_. 으로만 구성되어야 합니다." django-allauth-0.35.0/allauth/locale/fi/0000755000076500000240000000000013235133532020737 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/fi/LC_MESSAGES/0000755000076500000240000000000013235133532022524 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/fi/LC_MESSAGES/django.mo0000644000076500000240000003422413235132043024324 0ustar pennersrstaff00000000000000l \ 6 -M {      I w1 L  " 1;KS&j9p&_28*9c  -3a"lB+n"(0L am!t #25-hA6@P%&)6?`;#?<Z0 40CLg2pA\HP:XH:* $8,]-   !1D X cn    . ? b!,C")p""""""" "D#{a#M# +$!L$n$$$$5$$8% :% G%h%~%%t%W&8r&<&%&'#'8' M'['u'|'''''6'(2(G(mg(E()&) )+)* 9*F*)M*w*** * *)* *+6+/P+<+3+0+;",4^,,$6-#[-1-6-3-%.B.1b.2../L0 [0i0Dy0 0 00 161L1%2o3{q3:3@(4qi4>45,555$5;"6^69{66 666677,7B7[7 d7p77777 777 7778*8C8 G8 S84_8Ck dH>&TQg^ ifeWOx+lA@h#,0P=a?L!(Mu-D4nv\mN I|[]{VKz) /GUB891Jr"Fo6yYwc 5:3'*t;2`Zpj<}E.$Rbs%~ _qX7SNote: you can still change your e-mail address.A user is already registered with this e-mail address.API secret, client secret, or consumer secretAccountAccount ConnectionsAccount InactiveAccountsAdd E-mailAdd E-mail AddressAdd a 3rd Party AccountAlready have an account? Then please sign in.An account already exists with this e-mail address. Please sign in to that account first, then connect your %s account.An error occurred while attempting to login via your social network account.App ID, or consumer keyAre you sure you want to sign out?Bad TokenChange PasswordConfirmConfirm E-mail AddressConfirmation e-mail sent to %(email)s.Current PasswordDo you really want to remove the selected e-mail address?E-mailE-mail (optional)E-mail AddressesE-mail addressForgot Password?Forgotten your password? Enter your e-mail address below, and we'll send you an e-mail allowing you to reset it.If you have not created an account yet, then please sign up first.In case you forgot, your username is %(username)s.Invalid response while obtaining access token from "%s".Invalid response while obtaining request token from "%s".KeyLogin CancelledMake PrimaryNew PasswordNew Password (again)NoteOpenID Sign InPasswordPassword (again)Password ResetPassword Reset E-mailPassword must be a minimum of {0} characters.Password successfully changed.Password successfully set.Please Confirm Your E-mail AddressPlease confirm that %(email)s is an e-mail address for user %(user_display)s.Please contact us if you have any trouble resetting your password.Please sign in with one of your existing third party accounts. Or, sign up for a %(site_name)s account and sign in below:Please type your current password.PrimaryPrimary e-mail address set.Re-send VerificationRemember MeRemoveRemoved e-mail address %(email)s.Reset My PasswordSet PasswordSign InSign OutSign UpSign Up ClosedSignupSocial AccountsSocial Network Login FailureSuccessfully signed in as %(name)s.Thank you for using %(site_name)s! %(site_domain)sThank you from %(site_name)s! %(site_domain)sThe e-mail address and/or password you specified are not correct.The e-mail address is not assigned to any user accountThe following e-mail addresses are associated with your account:The password reset link was invalid, possibly because it has already been used. Please request a new password reset.The password reset token was invalid.The social account has been connected.The social account has been disconnected.The social account is already connected to a different account.The username and/or password you specified are not correct.This account is currently inactive.This account is inactive.This e-mail address is already associated with another account.This e-mail address is already associated with this account.This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request.This part of the site requires us to verify that you are who you claim to be. For this purpose, we require that you verify ownership of your e-mail address. Too many failed login attempts. Try again later.UnverifiedUsernameUsername can not be used. Please use other username.Username or e-mailVerifiedVerify Your E-mail AddressWarning:We are sorry, but the sign up is currently closed.We have sent an e-mail to you for verification. Please click on the link inside this e-mail. Please contact us if you do not receive it within a few minutes.We have sent an e-mail to you for verification. Follow the link provided to finalize the signup process. Please contact us if you do not receive it within a few minutes.We have sent you an e-mail. Please contact us if you do not receive it within a few minutes.You are about to use your %(provider_name)s account to login to %(site_name)s. As a final step, please complete the following form:You can sign in to your account using any of the following third party accounts:You cannot remove your primary e-mail address (%(email)s).You currently do not have any e-mail address set up. You should really add an e-mail address so you can receive notifications, reset your password, etc.You currently have no social network accounts connected to this account.You decided to cancel logging in to our site using one of your existing accounts. If this was a mistake, please proceed to sign in.You have confirmed %(email)s.You have signed out.You must type the same password each time.Your account has no password set up.Your account has no verified e-mail address.Your password is now changed.Your primary e-mail address must be verified.change passwordclient idcreateddate joinede-mail addressemail addressemail addressesemail confirmationemail confirmationsexpires atextra datafield labelLoginkeylast loginnameorprimaryprovidersecret keysentsocial accountsocial accountssocial applicationsocial applicationsuiduserverifiedyou are already logged in as %(user_display)s.Project-Id-Version: PACKAGE VERSION Report-Msgid-Bugs-To: POT-Creation-Date: 2018-02-02 12:55-0600 PO-Revision-Date: 2015-08-13 15:17+0300 Last-Translator: Anonymous User Language-Team: LANGUAGE Language: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Translated-Using: django-rosetta 0.7.6 Huomio: voit edelleen vaihtaa sähköpostiosoitteesi.Tämä sähköpostiosoite on jo käytössä.API:n, asiakkaan tai kuluttajan salaisuusTiliLiitetyt tilitTili poissa käytöstäTiliLisää sähköpostiLisää sähköpostiosoiteLisää kolmannen osapuolen tiliOnko sinulla jo tili? Kirjaudu sisään.Sähköpostiosoite on jo liitetty olemassaolevaan tiliin. Kirjaudu ensin kyseiseen tiliin ja liitä %s-tilisi vasta sitten.Tapahtui virhe yritettäessä kirjautua käyttäen sosiaalisen median tiliä.Sovellus ID tai kuluttajan avainHaluatko varmasti kirjautua ulos?Virheellinen tunnisteVaihda salasanaVahvistaVahvista sähköpostiosoiteVahvistusviesti on lähetetty osoitteeseen %(email)s.Nykyinen salasanaHaluatko varmasti poistaa valitun sähköpostiosoitteen?SähköpostiSähköpostiosoite (valinnainen)SähköpostiosoitteetSähköpostiosoiteSalasana unohtunut?Unohditko salasanasi? Anna sähköpostiosoitteesi ja lähetämme sinulle sähköpostin, jonka avulla voit uusia sen.Jos et ole luonut vielä tiliä, niin rekisteröidy ensin.Muistathan, että käyttäjätunnuksesi on %(username)s.Virhe hankittaessa käyttöoikeustunnistetta palvelusta "%s"Virheellinen vastaus palvelusta "%s".AvainSisäänkirjautuminen keskeytettiinAseta ensisijaiseksiUusi salasanaUusi salasana (uudestaan)HuomioOpenID kirjautuminenSalasanaSalasana (uudestaan)Salasanan uusiminenSalasanan uusimissähköpostiSalasanan tulee olla vähintään {0} merkkiä pitkä.Salasana vaihto onnistui.Salasana asetettiin.Vahvista sähköpostiosoitteesiVahvista, että %(email)s on käyttäjän %(user_display)s sähköpostiosoite.Ota meihin yhteyttä, jos sinulla on ongelmia salasanasi uusimisessa.Kirjaudu sisään käyttäen kirjautumispalvelua tai rekisteröi %(site_name)s-tili ja kirjaudu sisään alla olevalla lomakkeella:Ole hyvä ja anna nykyinen salasanasi.EnsisijainenEnsisijainen sähköpostiosoite asetettiin.Lähetä vahvistus uudelleenMuista minutPoistaPoistettiin sähköpostiosoite %(email)s.Salasanan uusiminenAseta salasanaKirjaudu sisäänKirjaudu ulosRekisteröidyRekisteröityminen on poissa käytöstä.RekisteröidySosiaalisen median tilitSosiaalisen median tilillä kirjautuminen epäonnistuiKirjauduttiin sisään käyttäjänä %(name)s.Kiitos, kun käytät %(site_name)s palvelua! %(site_domain)sKiitokset palvelusta %(site_name)s! %(site_domain)sAnnettu sähköposti tai salasana ei ole oikein.Sähköpostiosoite ei vastaa yhtäkään käyttäjätiliä.Seuraavat sähköpostiosoitteet on liitetty tiliisi:Salasanan uusimislinkki ei toiminut. Tämä voi tapahtua, jos linkki on jo käytetty. Voit kuitenkin uusia salasanan uusimisen.Salasanan uusimistarkiste ei kelpaa.Sosiaalisen median tili liitettiin.Sosiaalisen median tili on poistettu käytöstä.Sosiaalisen median tili on jo liitetty toiseen tiliin.Annettu käyttäjänimi tai salasana ei ole oikein.Tämä tili on poistettu käytöstä.Tämä tili ei ole käytössä.Sähköpostiosoite on jo liitetty toiseen tiliin.Sähköpostiosoite on jo liitetty tähän tilliin.Tämä sähköpostiosoitteen vahvistuslinkki on vanhentunut tai muuten käyttökelvoton. Voit kuitenkin pyytää uuden vahvistuslinkin sähköpostiosoitteellesi.Tämä osa palvelua vaatii, että tiedämme kuka olet. Tämän takia sinun pitää vahvistaa omistavasi ilmoittamasi sähköpostiosoite.Liian monta virheellistä kirjautumisyritystä. Yritä myöhemmin uudelleen.VahvistamatonKäyttäjänimiKäyttäjänimeä ei voi käyttää. Valitse toinen käyttäjänimi.Käyttäjänimi tai sähköpostiVahvistettuVahvista sähköpostiosoitteesiVaroitus:Valitettavasti rekisteröityminen on pois käytöstä.Olemme lähettäneet sinulle sähköpostivahvistuksen. Klikkaa sähköpostissa olevaa linkkiä vahvistaaksesi sähköpostiosoitteesi. Ota meihin yhteyttä, jos et saanut vahvistusviestiä muutaman minuutin sisällä.Lähetimme sinulle sähköpostin vahvistusviestin. Klikkaa sähköpostissa olevaa linkkiä viimeistelläksesi rekisteröitymisprosessin. Ota meihin yhteyttä, jos et saanut vahvistusviestiä muutaman minuutin sisällä.Olemme lähettäneet sinulle sähköpostia. Ota meihin yhteyttä, jos et saa sitä muutaman minuutin sisällä.Olet aikeissa käyttää %(provider_name)s-tiliäsi kirjautuaksesi palveluun %(site_name)s. Täytä vielä seuraava lomake:Voit kirjautua käyttäen seuraavia kirjautumispalveluita:Et voi poistaa ensisijaista sähköpostiosoitettasi (%(email)s).Et ole asettanut sähköpostiosoitetta. Tämä tulisi tehdä, jotta voit saada ilmoituksia, uusia salasanasi jne.Tiliisi ei ole liitetty yhtäkään sosiaalisen median tiliä.Keskeytit sisäänkirjautumisen olemassaolevalle tilillesi. Jos tämä oli vahinko niin kirjaudu sisään.Sähköpostiosoite %(email)s on vahvistettu.Kirjauduit ulos.Salasanojen tulee olla samat.Tilillesi ei ole asetettu salasanaa.Tiliisi ei ole liitetty vahvistettua sähköpostiosoitetta.Salasanasi on nyt vaihdettu.Ensisijaisen sähköpostiosoiteen tulee olla vahvistettu.vaihda salasanaaasiakas idluotuliittymispäivämääräsähköpostiosoitesähköpostiosoitesähköpostiosoitteetsähköpostivarmistussähköpostivarmistuksetvanheneelisätiedotKäyttäjätunnusavainviimeisin sisäänkirjautuminennimitaiensisijainentarjoajasalainen avainlähetettysosiaalisen median tilisosiaalisen median tilitsosiaalinen applikaatiososiaaliset applikaatiotuidkäyttäjävahvistettuolet jo kirjautunut käyttäjänä %(user_display)s.django-allauth-0.35.0/allauth/locale/fi/LC_MESSAGES/django.po0000644000076500000240000006235613235132040024333 0ustar pennersrstaff00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-02-02 12:55-0600\n" "PO-Revision-Date: 2015-08-13 15:17+0300\n" "Last-Translator: Anonymous User \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Translated-Using: django-rosetta 0.7.6\n" #: account/adapter.py:45 msgid "Username can not be used. Please use other username." msgstr "Käyttäjänimeä ei voi käyttää. Valitse toinen käyttäjänimi." #: account/adapter.py:49 msgid "Too many failed login attempts. Try again later." msgstr "" "Liian monta virheellistä kirjautumisyritystä. Yritä myöhemmin uudelleen." #: account/adapter.py:51 msgid "A user is already registered with this e-mail address." msgstr "Tämä sähköpostiosoite on jo käytössä." #: account/adapter.py:288 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "Salasanan tulee olla vähintään {0} merkkiä pitkä." #: account/apps.py:7 msgid "Accounts" msgstr "Tili" #: account/forms.py:61 account/forms.py:398 msgid "You must type the same password each time." msgstr "Salasanojen tulee olla samat." #: account/forms.py:91 account/forms.py:365 account/forms.py:476 msgid "Password" msgstr "Salasana" #: account/forms.py:92 msgid "Remember Me" msgstr "Muista minut" #: account/forms.py:98 msgid "This account is currently inactive." msgstr "Tämä tili on poistettu käytöstä." #: account/forms.py:101 msgid "The e-mail address and/or password you specified are not correct." msgstr "Annettu sähköposti tai salasana ei ole oikein." #: account/forms.py:104 msgid "The username and/or password you specified are not correct." msgstr "Annettu käyttäjänimi tai salasana ei ole oikein." #: account/forms.py:113 account/forms.py:268 account/forms.py:426 #: account/forms.py:495 msgid "E-mail address" msgstr "Sähköpostiosoite" #: account/forms.py:115 account/forms.py:301 account/forms.py:421 #: account/forms.py:490 msgid "E-mail" msgstr "Sähköposti" #: account/forms.py:120 account/forms.py:123 account/forms.py:260 #: account/forms.py:264 msgid "Username" msgstr "Käyttäjänimi" #: account/forms.py:130 msgid "Username or e-mail" msgstr "Käyttäjänimi tai sähköposti" #: account/forms.py:133 msgctxt "field label" msgid "Login" msgstr "Käyttäjätunnus" #: account/forms.py:292 #, fuzzy #| msgid "E-mail (optional)" msgid "E-mail (again)" msgstr "Sähköpostiosoite (valinnainen)" #: account/forms.py:296 #, fuzzy #| msgid "email confirmation" msgid "E-mail address confirmation" msgstr "sähköpostivarmistus" #: account/forms.py:304 msgid "E-mail (optional)" msgstr "Sähköpostiosoite (valinnainen)" #: account/forms.py:345 #, fuzzy #| msgid "You must type the same password each time." msgid "You must type the same email each time." msgstr "Salasanojen tulee olla samat." #: account/forms.py:368 account/forms.py:477 msgid "Password (again)" msgstr "Salasana (uudestaan)" #: account/forms.py:432 msgid "This e-mail address is already associated with this account." msgstr "Sähköpostiosoite on jo liitetty tähän tilliin." #: account/forms.py:434 msgid "This e-mail address is already associated with another account." msgstr "Sähköpostiosoite on jo liitetty toiseen tiliin." #: account/forms.py:456 msgid "Current Password" msgstr "Nykyinen salasana" #: account/forms.py:457 account/forms.py:546 msgid "New Password" msgstr "Uusi salasana" #: account/forms.py:458 account/forms.py:547 msgid "New Password (again)" msgstr "Uusi salasana (uudestaan)" #: account/forms.py:466 msgid "Please type your current password." msgstr "Ole hyvä ja anna nykyinen salasanasi." #: account/forms.py:504 msgid "The e-mail address is not assigned to any user account" msgstr "Sähköpostiosoite ei vastaa yhtäkään käyttäjätiliä." #: account/forms.py:568 msgid "The password reset token was invalid." msgstr "Salasanan uusimistarkiste ei kelpaa." #: account/models.py:23 msgid "user" msgstr "käyttäjä" #: account/models.py:27 account/models.py:81 msgid "e-mail address" msgstr "sähköpostiosoite" #: account/models.py:28 msgid "verified" msgstr "vahvistettu" #: account/models.py:29 msgid "primary" msgstr "ensisijainen" #: account/models.py:34 msgid "email address" msgstr "sähköpostiosoite" #: account/models.py:35 msgid "email addresses" msgstr "sähköpostiosoitteet" #: account/models.py:83 msgid "created" msgstr "luotu" #: account/models.py:85 msgid "sent" msgstr "lähetetty" #: account/models.py:86 socialaccount/models.py:55 msgid "key" msgstr "avain" #: account/models.py:91 msgid "email confirmation" msgstr "sähköpostivarmistus" #: account/models.py:92 msgid "email confirmations" msgstr "sähköpostivarmistukset" #: socialaccount/adapter.py:26 #, python-format msgid "" "An account already exists with this e-mail address. Please sign in to that " "account first, then connect your %s account." msgstr "" "Sähköpostiosoite on jo liitetty olemassaolevaan tiliin. Kirjaudu ensin " "kyseiseen tiliin ja liitä %s-tilisi vasta sitten." #: socialaccount/adapter.py:131 msgid "Your account has no password set up." msgstr "Tilillesi ei ole asetettu salasanaa." #: socialaccount/adapter.py:138 msgid "Your account has no verified e-mail address." msgstr "Tiliisi ei ole liitetty vahvistettua sähköpostiosoitetta." #: socialaccount/apps.py:7 msgid "Social Accounts" msgstr "Sosiaalisen median tilit" #: socialaccount/models.py:43 socialaccount/models.py:77 msgid "provider" msgstr "tarjoaja" #: socialaccount/models.py:46 msgid "name" msgstr "nimi" #: socialaccount/models.py:48 msgid "client id" msgstr "asiakas id" #: socialaccount/models.py:50 msgid "App ID, or consumer key" msgstr "Sovellus ID tai kuluttajan avain" #: socialaccount/models.py:51 msgid "secret key" msgstr "salainen avain" #: socialaccount/models.py:53 msgid "API secret, client secret, or consumer secret" msgstr "API:n, asiakkaan tai kuluttajan salaisuus" #: socialaccount/models.py:58 msgid "Key" msgstr "Avain" #: socialaccount/models.py:66 msgid "social application" msgstr "sosiaalinen applikaatio" #: socialaccount/models.py:67 msgid "social applications" msgstr "sosiaaliset applikaatiot" #: socialaccount/models.py:96 msgid "uid" msgstr "uid" #: socialaccount/models.py:98 msgid "last login" msgstr "viimeisin sisäänkirjautuminen" #: socialaccount/models.py:100 msgid "date joined" msgstr "liittymispäivämäärä" #: socialaccount/models.py:102 msgid "extra data" msgstr "lisätiedot" #: socialaccount/models.py:106 msgid "social account" msgstr "sosiaalisen median tili" #: socialaccount/models.py:107 msgid "social accounts" msgstr "sosiaalisen median tilit" #: socialaccount/models.py:133 msgid "token" msgstr "" #: socialaccount/models.py:135 msgid "\"oauth_token\" (OAuth1) or access token (OAuth2)" msgstr "" #: socialaccount/models.py:138 msgid "token secret" msgstr "" #: socialaccount/models.py:140 msgid "\"oauth_token_secret\" (OAuth1) or refresh token (OAuth2)" msgstr "" #: socialaccount/models.py:142 msgid "expires at" msgstr "vanhenee" #: socialaccount/models.py:146 msgid "social application token" msgstr "" #: socialaccount/models.py:147 msgid "social application tokens" msgstr "" #: socialaccount/providers/douban/views.py:36 msgid "Invalid profile data" msgstr "" #: socialaccount/providers/oauth/client.py:78 #, python-format msgid "Invalid response while obtaining request token from \"%s\"." msgstr "Virheellinen vastaus palvelusta \"%s\"." #: socialaccount/providers/oauth/client.py:109 #, python-format msgid "Invalid response while obtaining access token from \"%s\"." msgstr "Virhe hankittaessa käyttöoikeustunnistetta palvelusta \"%s\"" #: socialaccount/providers/oauth/client.py:128 #, python-format msgid "No request token saved for \"%s\"." msgstr "" #: socialaccount/providers/oauth/client.py:177 #, python-format msgid "No access token saved for \"%s\"." msgstr "" #: socialaccount/providers/oauth/client.py:197 #, python-format msgid "No access to private resources at \"%s\"." msgstr "" #: templates/account/account_inactive.html:5 #: templates/account/account_inactive.html:8 msgid "Account Inactive" msgstr "Tili poissa käytöstä" #: templates/account/account_inactive.html:10 msgid "This account is inactive." msgstr "Tämä tili ei ole käytössä." #: templates/account/email.html:5 msgid "Account" msgstr "Tili" #: templates/account/email.html:8 msgid "E-mail Addresses" msgstr "Sähköpostiosoitteet" #: templates/account/email.html:10 msgid "The following e-mail addresses are associated with your account:" msgstr "Seuraavat sähköpostiosoitteet on liitetty tiliisi:" #: templates/account/email.html:24 msgid "Verified" msgstr "Vahvistettu" #: templates/account/email.html:26 msgid "Unverified" msgstr "Vahvistamaton" #: templates/account/email.html:28 msgid "Primary" msgstr "Ensisijainen" #: templates/account/email.html:34 msgid "Make Primary" msgstr "Aseta ensisijaiseksi" #: templates/account/email.html:35 msgid "Re-send Verification" msgstr "Lähetä vahvistus uudelleen" #: templates/account/email.html:36 templates/socialaccount/connections.html:35 msgid "Remove" msgstr "Poista" #: templates/account/email.html:43 msgid "Warning:" msgstr "Varoitus:" #: templates/account/email.html:43 msgid "" "You currently do not have any e-mail address set up. You should really add " "an e-mail address so you can receive notifications, reset your password, etc." msgstr "" "Et ole asettanut sähköpostiosoitetta. Tämä tulisi tehdä, jotta voit saada " "ilmoituksia, uusia salasanasi jne." #: templates/account/email.html:48 msgid "Add E-mail Address" msgstr "Lisää sähköpostiosoite" #: templates/account/email.html:53 msgid "Add E-mail" msgstr "Lisää sähköposti" #: templates/account/email.html:62 msgid "Do you really want to remove the selected e-mail address?" msgstr "Haluatko varmasti poistaa valitun sähköpostiosoitteen?" #: templates/account/email/email_confirmation_message.txt:1 #, fuzzy, python-format #| msgid "" #| "Hello from %(site_name)s!\n" #| "\n" #| "You're receiving this e-mail because user %(user_display)s at " #| "%(site_domain)s has given yours as an e-mail address to connect their " #| "account.\n" #| "\n" #| "To confirm this is correct, go to %(activate_url)s\n" msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because user %(user_display)s has given yours " "as an e-mail address to connect their account.\n" "\n" "To confirm this is correct, go to %(activate_url)s\n" msgstr "" "Terve palvelusta %(site_name)s!\n" "\n" "Sait tämän viestin, koska käyttäjä %(user_display)s palvelusta " "%(site_domain)s antoi sähköpostiosoitteesi liitettäväksi tiliinsä.\n" "\n" "Vahvistaaksesi tiedot oikeiksi mene osoitteeseen %(activate_url)s\n" #: templates/account/email/email_confirmation_message.txt:7 #, python-format msgid "" "Thank you from %(site_name)s!\n" "%(site_domain)s" msgstr "" "Kiitokset palvelusta %(site_name)s!\n" "%(site_domain)s" #: templates/account/email/email_confirmation_subject.txt:3 msgid "Please Confirm Your E-mail Address" msgstr "Vahvista sähköpostiosoitteesi" #: templates/account/email/password_reset_key_message.txt:1 #, fuzzy, python-format #| msgid "" #| "Hello from %(site_name)s!\n" #| "\n" #| "You're receiving this e-mail because you or someone else has requested a " #| "password for your user account at %(site_domain)s.\n" #| "It can be safely ignored if you did not request a password reset. Click " #| "the link below to reset your password." msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because you or someone else has requested a " "password for your user account.\n" "It can be safely ignored if you did not request a password reset. Click the " "link below to reset your password." msgstr "" "Terve palvelusta %(site_name)s!\n" "\n" "Sait tämän sähköpostin, koska sinä tai joku muu on pyytänyt salasasi " "uusimista palvelussa %(site_domain)s.\n" "Tämän viestin voi jättää huomiotta, jos et pyytänyt salasanan uusimista. " "Klikkaa alla olevaa linkkiä uusiaksesi salasanasi." #: templates/account/email/password_reset_key_message.txt:8 #, python-format msgid "In case you forgot, your username is %(username)s." msgstr "Muistathan, että käyttäjätunnuksesi on %(username)s." #: templates/account/email/password_reset_key_message.txt:10 #, python-format msgid "" "Thank you for using %(site_name)s!\n" "%(site_domain)s" msgstr "" "Kiitos, kun käytät %(site_name)s palvelua!\n" "%(site_domain)s" #: templates/account/email/password_reset_key_subject.txt:3 msgid "Password Reset E-mail" msgstr "Salasanan uusimissähköposti" #: templates/account/email_confirm.html:6 #: templates/account/email_confirm.html:10 msgid "Confirm E-mail Address" msgstr "Vahvista sähköpostiosoite" #: templates/account/email_confirm.html:16 #, python-format msgid "" "Please confirm that %(email)s is an e-mail " "address for user %(user_display)s." msgstr "" "Vahvista, että %(email)s on käyttäjän " "%(user_display)s sähköpostiosoite." #: templates/account/email_confirm.html:20 msgid "Confirm" msgstr "Vahvista" #: templates/account/email_confirm.html:27 #, python-format msgid "" "This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request." msgstr "" "Tämä sähköpostiosoitteen vahvistuslinkki on vanhentunut tai muuten " "käyttökelvoton. Voit kuitenkin pyytää uuden " "vahvistuslinkin sähköpostiosoitteellesi." #: templates/account/login.html:6 templates/account/login.html:10 #: templates/account/login.html:43 msgid "Sign In" msgstr "Kirjaudu sisään" #: templates/account/login.html:15 #, python-format msgid "" "Please sign in with one\n" "of your existing third party accounts. Or, sign " "up\n" "for a %(site_name)s account and sign in below:" msgstr "" "Kirjaudu sisään käyttäen kirjautumispalvelua tai rekisteröi %(site_name)s-tili ja kirjaudu sisään alla olevalla " "lomakkeella:" #: templates/account/login.html:25 msgid "or" msgstr "tai" #: templates/account/login.html:32 #, python-format msgid "" "If you have not created an account yet, then please\n" "sign up first." msgstr "" "Jos et ole luonut vielä tiliä, niin rekisteröidy ensin." #: templates/account/login.html:42 msgid "Forgot Password?" msgstr "Salasana unohtunut?" #: templates/account/logout.html:5 templates/account/logout.html:8 #: templates/account/logout.html:17 msgid "Sign Out" msgstr "Kirjaudu ulos" #: templates/account/logout.html:10 msgid "Are you sure you want to sign out?" msgstr "Haluatko varmasti kirjautua ulos?" #: templates/account/messages/cannot_delete_primary_email.txt:2 #, python-format msgid "You cannot remove your primary e-mail address (%(email)s)." msgstr "Et voi poistaa ensisijaista sähköpostiosoitettasi (%(email)s)." #: templates/account/messages/email_confirmation_sent.txt:2 #, python-format msgid "Confirmation e-mail sent to %(email)s." msgstr "Vahvistusviesti on lähetetty osoitteeseen %(email)s." #: templates/account/messages/email_confirmed.txt:2 #, python-format msgid "You have confirmed %(email)s." msgstr "Sähköpostiosoite %(email)s on vahvistettu." #: templates/account/messages/email_deleted.txt:2 #, python-format msgid "Removed e-mail address %(email)s." msgstr "Poistettiin sähköpostiosoite %(email)s." #: templates/account/messages/logged_in.txt:4 #, python-format msgid "Successfully signed in as %(name)s." msgstr "Kirjauduttiin sisään käyttäjänä %(name)s." #: templates/account/messages/logged_out.txt:2 msgid "You have signed out." msgstr "Kirjauduit ulos." #: templates/account/messages/password_changed.txt:2 msgid "Password successfully changed." msgstr "Salasana vaihto onnistui." #: templates/account/messages/password_set.txt:2 msgid "Password successfully set." msgstr "Salasana asetettiin." #: templates/account/messages/primary_email_set.txt:2 msgid "Primary e-mail address set." msgstr "Ensisijainen sähköpostiosoite asetettiin." #: templates/account/messages/unverified_primary_email.txt:2 msgid "Your primary e-mail address must be verified." msgstr "Ensisijaisen sähköpostiosoiteen tulee olla vahvistettu." #: templates/account/password_change.html:5 #: templates/account/password_change.html:8 #: templates/account/password_change.html:13 #: templates/account/password_reset_from_key.html:4 #: templates/account/password_reset_from_key.html:7 #: templates/account/password_reset_from_key_done.html:4 #: templates/account/password_reset_from_key_done.html:7 msgid "Change Password" msgstr "Vaihda salasana" #: templates/account/password_reset.html:6 #: templates/account/password_reset.html:10 #: templates/account/password_reset_done.html:6 #: templates/account/password_reset_done.html:9 msgid "Password Reset" msgstr "Salasanan uusiminen" #: templates/account/password_reset.html:15 msgid "" "Forgotten your password? Enter your e-mail address below, and we'll send you " "an e-mail allowing you to reset it." msgstr "" "Unohditko salasanasi? Anna sähköpostiosoitteesi ja lähetämme sinulle " "sähköpostin, jonka avulla voit uusia sen." #: templates/account/password_reset.html:20 msgid "Reset My Password" msgstr "Salasanan uusiminen" #: templates/account/password_reset.html:23 msgid "Please contact us if you have any trouble resetting your password." msgstr "Ota meihin yhteyttä, jos sinulla on ongelmia salasanasi uusimisessa." #: templates/account/password_reset_done.html:15 msgid "" "We have sent you an e-mail. Please contact us if you do not receive it " "within a few minutes." msgstr "" "Olemme lähettäneet sinulle sähköpostia. Ota meihin yhteyttä, jos et saa sitä " "muutaman minuutin sisällä." #: templates/account/password_reset_from_key.html:7 msgid "Bad Token" msgstr "Virheellinen tunniste" #: templates/account/password_reset_from_key.html:11 #, python-format msgid "" "The password reset link was invalid, possibly because it has already been " "used. Please request a new password reset." msgstr "" "Salasanan uusimislinkki ei toiminut. Tämä voi tapahtua, jos linkki on jo " "käytetty. Voit kuitenkin uusia salasanan " "uusimisen." #: templates/account/password_reset_from_key.html:17 msgid "change password" msgstr "vaihda salasanaa" #: templates/account/password_reset_from_key.html:20 #: templates/account/password_reset_from_key_done.html:8 msgid "Your password is now changed." msgstr "Salasanasi on nyt vaihdettu." #: templates/account/password_set.html:5 templates/account/password_set.html:8 #: templates/account/password_set.html:13 msgid "Set Password" msgstr "Aseta salasana" #: templates/account/signup.html:5 templates/socialaccount/signup.html:5 msgid "Signup" msgstr "Rekisteröidy" #: templates/account/signup.html:8 templates/account/signup.html:18 #: templates/socialaccount/signup.html:8 templates/socialaccount/signup.html:19 msgid "Sign Up" msgstr "Rekisteröidy" #: templates/account/signup.html:10 #, python-format msgid "" "Already have an account? Then please sign in." msgstr "Onko sinulla jo tili? Kirjaudu sisään." #: templates/account/signup_closed.html:5 #: templates/account/signup_closed.html:8 msgid "Sign Up Closed" msgstr "Rekisteröityminen on poissa käytöstä." #: templates/account/signup_closed.html:10 msgid "We are sorry, but the sign up is currently closed." msgstr "Valitettavasti rekisteröityminen on pois käytöstä." #: templates/account/snippets/already_logged_in.html:5 msgid "Note" msgstr "Huomio" #: templates/account/snippets/already_logged_in.html:5 #, python-format msgid "you are already logged in as %(user_display)s." msgstr "olet jo kirjautunut käyttäjänä %(user_display)s." #: templates/account/verification_sent.html:5 #: templates/account/verification_sent.html:8 #: templates/account/verified_email_required.html:5 #: templates/account/verified_email_required.html:8 msgid "Verify Your E-mail Address" msgstr "Vahvista sähköpostiosoitteesi" #: templates/account/verification_sent.html:10 msgid "" "We have sent an e-mail to you for verification. Follow the link provided to " "finalize the signup process. Please contact us if you do not receive it " "within a few minutes." msgstr "" "Lähetimme sinulle sähköpostin vahvistusviestin. Klikkaa sähköpostissa olevaa " "linkkiä viimeistelläksesi rekisteröitymisprosessin. Ota meihin yhteyttä, jos " "et saanut vahvistusviestiä muutaman minuutin sisällä." #: templates/account/verified_email_required.html:12 msgid "" "This part of the site requires us to verify that\n" "you are who you claim to be. For this purpose, we require that you\n" "verify ownership of your e-mail address. " msgstr "" "Tämä osa palvelua vaatii, että tiedämme kuka olet. Tämän takia sinun pitää " "vahvistaa omistavasi ilmoittamasi sähköpostiosoite." #: templates/account/verified_email_required.html:16 msgid "" "We have sent an e-mail to you for\n" "verification. Please click on the link inside this e-mail. Please\n" "contact us if you do not receive it within a few minutes." msgstr "" "Olemme lähettäneet sinulle sähköpostivahvistuksen. Klikkaa sähköpostissa " "olevaa linkkiä vahvistaaksesi sähköpostiosoitteesi. Ota meihin yhteyttä, jos " "et saanut vahvistusviestiä muutaman minuutin sisällä." #: templates/account/verified_email_required.html:20 #, python-format msgid "" "Note: you can still change your e-" "mail address." msgstr "" "Huomio: voit edelleen vaihtaa " "sähköpostiosoitteesi." #: templates/openid/login.html:9 msgid "OpenID Sign In" msgstr "OpenID kirjautuminen" #: templates/socialaccount/authentication_error.html:5 #: templates/socialaccount/authentication_error.html:8 msgid "Social Network Login Failure" msgstr "Sosiaalisen median tilillä kirjautuminen epäonnistui" #: templates/socialaccount/authentication_error.html:10 msgid "" "An error occurred while attempting to login via your social network account." msgstr "" "Tapahtui virhe yritettäessä kirjautua käyttäen sosiaalisen median tiliä." #: templates/socialaccount/connections.html:5 #: templates/socialaccount/connections.html:8 msgid "Account Connections" msgstr "Liitetyt tilit" #: templates/socialaccount/connections.html:11 msgid "" "You can sign in to your account using any of the following third party " "accounts:" msgstr "Voit kirjautua käyttäen seuraavia kirjautumispalveluita:" #: templates/socialaccount/connections.html:43 msgid "" "You currently have no social network accounts connected to this account." msgstr "Tiliisi ei ole liitetty yhtäkään sosiaalisen median tiliä." #: templates/socialaccount/connections.html:46 msgid "Add a 3rd Party Account" msgstr "Lisää kolmannen osapuolen tili" #: templates/socialaccount/login_cancelled.html:5 #: templates/socialaccount/login_cancelled.html:9 msgid "Login Cancelled" msgstr "Sisäänkirjautuminen keskeytettiin" #: templates/socialaccount/login_cancelled.html:13 #, python-format msgid "" "You decided to cancel logging in to our site using one of your existing " "accounts. If this was a mistake, please proceed to sign in." msgstr "" "Keskeytit sisäänkirjautumisen olemassaolevalle tilillesi. Jos tämä oli " "vahinko niin kirjaudu sisään." #: templates/socialaccount/messages/account_connected.txt:2 msgid "The social account has been connected." msgstr "Sosiaalisen median tili liitettiin." #: templates/socialaccount/messages/account_connected_other.txt:2 msgid "The social account is already connected to a different account." msgstr "Sosiaalisen median tili on jo liitetty toiseen tiliin." #: templates/socialaccount/messages/account_disconnected.txt:2 msgid "The social account has been disconnected." msgstr "Sosiaalisen median tili on poistettu käytöstä." #: templates/socialaccount/signup.html:10 #, python-format msgid "" "You are about to use your %(provider_name)s account to login to\n" "%(site_name)s. As a final step, please complete the following form:" msgstr "" "Olet aikeissa käyttää %(provider_name)s-tiliäsi kirjautuaksesi palveluun\n" "%(site_name)s. Täytä vielä seuraava lomake:" #~ msgid "The login and/or password you specified are not correct." #~ msgstr "Kirjautumistiedot eivät ole oikein." #~ msgid "Usernames can only contain letters, digits and @/./+/-/_." #~ msgstr "" #~ "Käyttäjänimi saa sisältää vain kirjaimia, numeroita ja erikoismerkkejä " #~ "@/./+/-/_." #~ msgid "This username is already taken. Please choose another." #~ msgstr "Käyttäjänimi on käytössä. Valitse toinen käyttäjänimi." #, fuzzy #~| msgid "Sign In" #~ msgid "Shopify Sign In" #~ msgstr "Kirjaudu sisään" #~ msgid "" #~ "You have confirmed that %(email)s is an " #~ "e-mail address for user %(user_display)s." #~ msgstr "" #~ "Olet vahvistanut, että %(email)s on " #~ "sähköpostiosoite käyttäjälle %(user_display)s." django-allauth-0.35.0/allauth/locale/fr/0000755000076500000240000000000013235133532020750 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/fr/LC_MESSAGES/0000755000076500000240000000000013235133532022535 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/fr/LC_MESSAGES/django.mo0000644000076500000240000003676013235132042024343 0ustar pennersrstaff00000000000000l / 7 \ 6N -      IwiL."F is&9->Mipz_2K8~9  '4\ |-="Xl{B+"  *!1S erz#2-%AS6@ %&)?;]#?<T0s 4 $2-`\P:H'*$ ,B o -    !!)! =! H!S!e! i!t!y!|!! !!!!!!!"" ")"-"2".;"j"1#?/$jo$9$=%R%Y%k%z%%%#%Y%-&\&$'0>'o'' '',''3 (A(H(\(l({((x(q))K)D)C,*p*u***#*6*++.A+p+y+ ++!+++9,;,R,h,i,U,G-+- .'+.$S.x..$... .. // 5/A/'Q/!y/0/3/60A70?y00;1(1&192-N2'|229262,33Pm44 4G4 5 55@5 _5Hk55a6l$77J<8I88H99u::+:2:< ;?I;$;6;; ;<<!<0<?<O<g< << <<<<< < < << == =4=S=s== == = =9=DU: I S=M-2Y(Kx8\ ^z{}@Ji*Tuej>_!<[vFnho H6;&~mwy|R%OcPfC5G03k"/V)rB4Ep$Z 9,l+.'#XqN7? aALQt1`s]gbdW"oauth_token" (OAuth1) or access token (OAuth2)"oauth_token_secret" (OAuth1) or refresh token (OAuth2)Note: you can still change your e-mail address.A user is already registered with this e-mail address.API secret, client secret, or consumer secretAccountAccount ConnectionsAccount InactiveAccountsAdd E-mailAdd E-mail AddressAdd a 3rd Party AccountAlready have an account? Then please sign in.An account already exists with this e-mail address. Please sign in to that account first, then connect your %s account.An error occurred while attempting to login via your social network account.App ID, or consumer keyAre you sure you want to sign out?Bad TokenChange PasswordConfirmConfirm E-mail AddressConfirmation e-mail sent to %(email)s.Current PasswordDo you really want to remove the selected e-mail address?E-mailE-mail (optional)E-mail AddressesE-mail addressE-mail address confirmationForgot Password?Forgotten your password? Enter your e-mail address below, and we'll send you an e-mail allowing you to reset it.If you have not created an account yet, then please sign up first.In case you forgot, your username is %(username)s.Invalid response while obtaining access token from "%s".Invalid response while obtaining request token from "%s".KeyLogin CancelledMake PrimaryNew PasswordNew Password (again)No access to private resources at "%s".No access token saved for "%s".No request token saved for "%s".NoteOpenID Sign InPasswordPassword (again)Password ResetPassword Reset E-mailPassword must be a minimum of {0} characters.Password successfully changed.Password successfully set.Please Confirm Your E-mail AddressPlease confirm that %(email)s is an e-mail address for user %(user_display)s.Please contact us if you have any trouble resetting your password.Please sign in with one of your existing third party accounts. Or, sign up for a %(site_name)s account and sign in below:Please type your current password.PrimaryPrimary e-mail address set.Re-send VerificationRemember MeRemoveRemoved e-mail address %(email)s.Reset My PasswordSet PasswordSign InSign OutSign UpSign Up ClosedSignupSocial AccountsSocial Network Login FailureSuccessfully signed in as %(name)s.Thank you for using %(site_name)s! %(site_domain)sThank you from %(site_name)s! %(site_domain)sThe e-mail address and/or password you specified are not correct.The e-mail address is not assigned to any user accountThe following e-mail addresses are associated with your account:The password reset link was invalid, possibly because it has already been used. Please request a new password reset.The password reset token was invalid.The social account has been connected.The social account has been disconnected.The social account is already connected to a different account.The username and/or password you specified are not correct.This account is currently inactive.This account is inactive.This e-mail address is already associated with another account.This e-mail address is already associated with this account.This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request.This part of the site requires us to verify that you are who you claim to be. For this purpose, we require that you verify ownership of your e-mail address. Too many failed login attempts. Try again later.UnverifiedUsernameUsername can not be used. Please use other username.Username or e-mailVerifiedVerify Your E-mail AddressWarning:We are sorry, but the sign up is currently closed.We have sent an e-mail to you for verification. Please click on the link inside this e-mail. Please contact us if you do not receive it within a few minutes.We have sent an e-mail to you for verification. Follow the link provided to finalize the signup process. Please contact us if you do not receive it within a few minutes.We have sent you an e-mail. Please contact us if you do not receive it within a few minutes.You are about to use your %(provider_name)s account to login to %(site_name)s. As a final step, please complete the following form:You can sign in to your account using any of the following third party accounts:You cannot remove your primary e-mail address (%(email)s).You currently do not have any e-mail address set up. You should really add an e-mail address so you can receive notifications, reset your password, etc.You currently have no social network accounts connected to this account.You decided to cancel logging in to our site using one of your existing accounts. If this was a mistake, please proceed to sign in.You have confirmed %(email)s.You have signed out.You must type the same email each time.You must type the same password each time.Your account has no password set up.Your account has no verified e-mail address.Your password is now changed.Your primary e-mail address must be verified.change passwordclient idcreateddate joinede-mail addressemail addressemail addressesemail confirmationemail confirmationsexpires atextra datafield labelLoginkeylast loginnameorprimaryprovidersecret keysentsocial accountsocial accountssocial applicationsocial application tokensocial application tokenssocial applicationstokentoken secretuiduserverifiedyou are already logged in as %(user_display)s.Project-Id-Version: django-allauth Report-Msgid-Bugs-To: POT-Creation-Date: 2018-02-02 12:55-0600 PO-Revision-Date: 2016-10-06 15:16+0200 Last-Translator: Steve Kossouho Language-Team: français <> Language: fr MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n > 1); X-Generator: Gtranslator 2.91.7 "oauth_token" (OAuth1) ou jeton d'accès (OAuth2)"oauth_token_secret" (OAuth1) ou jeton d'actualisation (OAuth2)Remarque : vous pouvez toujours changer votre adresse e-mail.Un autre utilisateur utilise déjà cette adresse e-mail.Secret de l'API, secret du client, ou secret de l'utilisateurCompteComptes associésCompte inactifComptesAjouter un e-mailAjouter une adresse e-mailAjouter un compte de réseau socialVous avez déjà un compte ? Vous pouvez donc vous connecter.Un compte existe déjà avec cette adresse e-mail. Merci de vous connecter au préalable avec ce compte, et ensuite connecter votre compte %s.Une erreur est survenue lors de la tentative de connexion à votre compte de réseau social.ID de l'app ou clé de l'utilisateurEtes-vous sûr(e) de vouloir vous déconnecter ?Mauvais jeton d'identificationModifier le mot de passeConfirmerConfirmer l'adresse e-mailE-mail de confirmation envoyé à %(email)s.Mot de passe actuelVoulez-vous vraiment retirer cette adresse e-mail ?E-mailE-mail (facultatif)Adresses e-mailAdresse e-mailConfirmation d'adresse e-mailMot de passe oublié ?Mot de passe oublié ? Indiquez votre adresse e-mail ci-dessous et nous vous enverrons un e-mail pour le réinitialiser.Si vous n'avez pas encore créé de compte, merci de vous enregistrer au préalable.Au cas où vous l'auriez oublié, votre nom d'utilisateur est %(username)s.Réponse invalide lors de l'obtention du jeton d'accès depuis "%s".Réponse invalide lors de l'obtention du jeton de requête de "%s".CléOuverture de session annuléeRendre PrincipaleNouveau mot de passeNouveau mot de passe (confirmation)Impossible d'accéder aux ressources privées de "%s".Aucun jeton d'accès sauvegardé pour "%s".Aucun jeton de requête sauvegardé pour "%s".RemarqueConnexion OpenIDMot de passeMot de passe (confirmation)Réinitialisation du mot de passeE-mail de réinitialisation de mot de passeLe mot de passe doit contenir au minimum {0} caractères.Mot de passe modifié.Mot de passe défini.Confirmez votre adresse e-mailMerci de confirmer que %(email)s est l'adresse e-mail de %(user_display)s.Merci de nous contacter si vous ne parvenez pas à réinitialiser votre mot de passe.Merci d'ouvrir une session avec l'un de vos comptes sociaux. Vous pouvez aussi ouvrir un compte %(site_name)s puis vous connecter ci-dessous :Merci d'indiquer votre mot de passe actuel.PrincipaleAdresse e-mail principale enregistrée.Renvoyer le message de vérificationSe souvenir de moiRetirerAdresse e-mail %(email)s supprimée.Réinitialiser mon mot de passeDéfinir un mot de passeConnexionSe DéconnecterCréation de compteInscriptions FerméesInscriptionComptes SociauxEchec de la connexion au réseau socialConnexion avec %(name)s réussie.Merci d'utiliser %(site_name)s ! %(site_domain)sMerci, de la part de %(site_name)s! %(site_domain)sL’adresse e-mail ou le mot de passe sont incorrects.Cette adresse e-mail n'est pas associée à un compte utilisateurLes adresses e-mail suivantes sont associées à votre compte :Le lien de réinitialisation du mot de passe est invalide. Il a peut être déjà été utilisé. Veuillez faire une nouvelle demande de réinitialisation de mot de passe.Le jeton de réinitialisation de mot de passe est invalide.Le compte social a bien été connecté.Le compte social a été déconnecté.Ce compte social est déjà connecté à un autre compte.Le pseudo ou le mot de passe sont incorrects.Ce compte est actuellement désactivé.Ce compte est inactif.L'adresse e-mail est déjà associée à un autre compte.L'adresse e-mail est déjà associée à votre compte.Ce lien de confirmation d'adresse e-mail a expiré ou n'est pas valide. Veuillez lancer une nouvelle demande de confirmation.Pour accéder à cette partie du site, il faut d'abord que nous ayons vérifié que vous êtes bien le propriétaire de l'adresse e-mail que vous nous avez indiquée.Trop de tentatives de connexion échouées. Veuillez réessayer ultérieurement.Non vérifiéePseudonymeCe pseudonyme ne peut pas être utilisé. Veuillez en choisir un autre.Pseudonyme ou e-mailVérifiéeVérifiez votre adresse e-mailAttention :Nous sommes désolés, mais les inscriptions sont actuellement fermées.Nous vous avons envoyé un e-mail de vérification. Merci de cliquer sur le lien inclus dans ce courriel. Contactez-nous si vous ne l'avez pas reçu d'ici quelques minutes.Nous vous avons envoyé un e-mail pour validation. Cliquez sur le lien fourni dans l'e-mail pour terminer l'inscription. Merci de nous contacter si vous ne le recevez pas d'ici quelques minutes.Nous vous avons envoyé un e-mail. Merci de nous contacter si vous ne le recevez pas d'ici quelques minutes.Vous êtes sur le point de vous connecter via votre compte %(provider_name)s au site %(site_name)s. Merci de compléter le formulaire suivant pour confirmer la connexion.Vous pouvez ouvrir une session en utilisant l'un de ces réseaux sociaux :Vous ne pouvez pas supprimer votre adresse e-mail principale (%(email)s).Vous n'avez aucune adresse e-mail associée à votre compte. Vous devriez ajouter une adresse e-mail pour pouvoir recevoir des notifications, réinitialiser votre mot de passe, etc.Aucun compte de réseau social n'est actuellement associé à ce compte.Vous avez annulé la connexion à notre site depuis l'un de vos comptes de réseau social. S'il s'agit d'une erreur, merci de connecter.Vous avez confirmé %(email)s.Vous êtes déconnecté.Vous devez saisir deux fois le même email.Vous devez saisir deux fois le même mot de passe.Vous devez d'abord définir le mot de passe de votre compte.Vous devez d'abord associer une adresse e-mail à votre compte.Votre mot de passe a été modifié.Votre adresse e-mail principale doit être vérifiée.modifer le mot de passeid clientcréédate d'inscriptionadresse e-mailadresse e-mailadresses e-mailconfirmation par e-mailconfirmations par e-mailexpire ledonnées supplémentairesIdentifiantclédernière identificationnomouprincipalefournisseurclé secrèteenvoyécompte socialcomptes sociauxapplication socialejeton de l'application socialejetons de l'application socialeapplications socialesjetonjeton secretuidutilisateurvérifiévous êtes déjà connecté en tant que %(user_display)s.django-allauth-0.35.0/allauth/locale/fr/LC_MESSAGES/django.po0000644000076500000240000006367713235132040024353 0ustar pennersrstaff00000000000000# DJANGO-ALLAUTH. # Copyright (C) 2016 # This file is distributed under the same license as the PACKAGE package. # # Translators: # Steve Kossouho , 2016. # msgid "" msgstr "" "Project-Id-Version: django-allauth\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-02-02 12:55-0600\n" "PO-Revision-Date: 2016-10-06 15:16+0200\n" "Last-Translator: Steve Kossouho \n" "Language-Team: français <>\n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" "X-Generator: Gtranslator 2.91.7\n" #: account/adapter.py:45 msgid "Username can not be used. Please use other username." msgstr "Ce pseudonyme ne peut pas être utilisé. Veuillez en choisir un autre." #: account/adapter.py:49 msgid "Too many failed login attempts. Try again later." msgstr "" "Trop de tentatives de connexion échouées. Veuillez réessayer ultérieurement." #: account/adapter.py:51 msgid "A user is already registered with this e-mail address." msgstr "Un autre utilisateur utilise déjà cette adresse e-mail." #: account/adapter.py:288 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "Le mot de passe doit contenir au minimum {0} caractères." #: account/apps.py:7 msgid "Accounts" msgstr "Comptes" #: account/forms.py:61 account/forms.py:398 msgid "You must type the same password each time." msgstr "Vous devez saisir deux fois le même mot de passe." #: account/forms.py:91 account/forms.py:365 account/forms.py:476 msgid "Password" msgstr "Mot de passe" #: account/forms.py:92 msgid "Remember Me" msgstr "Se souvenir de moi" #: account/forms.py:98 msgid "This account is currently inactive." msgstr "Ce compte est actuellement désactivé." #: account/forms.py:101 msgid "The e-mail address and/or password you specified are not correct." msgstr "L’adresse e-mail ou le mot de passe sont incorrects." #: account/forms.py:104 msgid "The username and/or password you specified are not correct." msgstr "Le pseudo ou le mot de passe sont incorrects." #: account/forms.py:113 account/forms.py:268 account/forms.py:426 #: account/forms.py:495 msgid "E-mail address" msgstr "Adresse e-mail" #: account/forms.py:115 account/forms.py:301 account/forms.py:421 #: account/forms.py:490 msgid "E-mail" msgstr "E-mail" #: account/forms.py:120 account/forms.py:123 account/forms.py:260 #: account/forms.py:264 msgid "Username" msgstr "Pseudonyme" #: account/forms.py:130 msgid "Username or e-mail" msgstr "Pseudonyme ou e-mail" #: account/forms.py:133 msgctxt "field label" msgid "Login" msgstr "Identifiant" #: account/forms.py:292 #, fuzzy #| msgid "E-mail (optional)" msgid "E-mail (again)" msgstr "E-mail (facultatif)" #: account/forms.py:296 msgid "E-mail address confirmation" msgstr "Confirmation d'adresse e-mail" #: account/forms.py:304 msgid "E-mail (optional)" msgstr "E-mail (facultatif)" #: account/forms.py:345 msgid "You must type the same email each time." msgstr "Vous devez saisir deux fois le même email." #: account/forms.py:368 account/forms.py:477 msgid "Password (again)" msgstr "Mot de passe (confirmation)" #: account/forms.py:432 msgid "This e-mail address is already associated with this account." msgstr "L'adresse e-mail est déjà associée à votre compte." #: account/forms.py:434 msgid "This e-mail address is already associated with another account." msgstr "L'adresse e-mail est déjà associée à un autre compte." #: account/forms.py:456 msgid "Current Password" msgstr "Mot de passe actuel" #: account/forms.py:457 account/forms.py:546 msgid "New Password" msgstr "Nouveau mot de passe" #: account/forms.py:458 account/forms.py:547 msgid "New Password (again)" msgstr "Nouveau mot de passe (confirmation)" #: account/forms.py:466 msgid "Please type your current password." msgstr "Merci d'indiquer votre mot de passe actuel." #: account/forms.py:504 msgid "The e-mail address is not assigned to any user account" msgstr "Cette adresse e-mail n'est pas associée à un compte utilisateur" #: account/forms.py:568 msgid "The password reset token was invalid." msgstr "Le jeton de réinitialisation de mot de passe est invalide." #: account/models.py:23 msgid "user" msgstr "utilisateur" #: account/models.py:27 account/models.py:81 msgid "e-mail address" msgstr "adresse e-mail" #: account/models.py:28 msgid "verified" msgstr "vérifié" #: account/models.py:29 msgid "primary" msgstr "principale" #: account/models.py:34 msgid "email address" msgstr "adresse e-mail" #: account/models.py:35 msgid "email addresses" msgstr "adresses e-mail" #: account/models.py:83 msgid "created" msgstr "créé" #: account/models.py:85 msgid "sent" msgstr "envoyé" #: account/models.py:86 socialaccount/models.py:55 msgid "key" msgstr "clé" #: account/models.py:91 msgid "email confirmation" msgstr "confirmation par e-mail" #: account/models.py:92 msgid "email confirmations" msgstr "confirmations par e-mail" #: socialaccount/adapter.py:26 #, python-format msgid "" "An account already exists with this e-mail address. Please sign in to that " "account first, then connect your %s account." msgstr "" "Un compte existe déjà avec cette adresse e-mail. Merci de vous connecter au " "préalable avec ce compte, et ensuite connecter votre compte %s." #: socialaccount/adapter.py:131 msgid "Your account has no password set up." msgstr "Vous devez d'abord définir le mot de passe de votre compte." #: socialaccount/adapter.py:138 msgid "Your account has no verified e-mail address." msgstr "Vous devez d'abord associer une adresse e-mail à votre compte." #: socialaccount/apps.py:7 msgid "Social Accounts" msgstr "Comptes Sociaux" #: socialaccount/models.py:43 socialaccount/models.py:77 msgid "provider" msgstr "fournisseur" #: socialaccount/models.py:46 msgid "name" msgstr "nom" #: socialaccount/models.py:48 msgid "client id" msgstr "id client" #: socialaccount/models.py:50 msgid "App ID, or consumer key" msgstr "ID de l'app ou clé de l'utilisateur" #: socialaccount/models.py:51 msgid "secret key" msgstr "clé secrète" #: socialaccount/models.py:53 msgid "API secret, client secret, or consumer secret" msgstr "Secret de l'API, secret du client, ou secret de l'utilisateur" #: socialaccount/models.py:58 msgid "Key" msgstr "Clé" #: socialaccount/models.py:66 msgid "social application" msgstr "application sociale" #: socialaccount/models.py:67 msgid "social applications" msgstr "applications sociales" #: socialaccount/models.py:96 msgid "uid" msgstr "uid" #: socialaccount/models.py:98 msgid "last login" msgstr "dernière identification" #: socialaccount/models.py:100 msgid "date joined" msgstr "date d'inscription" #: socialaccount/models.py:102 msgid "extra data" msgstr "données supplémentaires" #: socialaccount/models.py:106 msgid "social account" msgstr "compte social" #: socialaccount/models.py:107 msgid "social accounts" msgstr "comptes sociaux" #: socialaccount/models.py:133 msgid "token" msgstr "jeton" #: socialaccount/models.py:135 msgid "\"oauth_token\" (OAuth1) or access token (OAuth2)" msgstr "\"oauth_token\" (OAuth1) ou jeton d'accès (OAuth2)" #: socialaccount/models.py:138 msgid "token secret" msgstr "jeton secret" #: socialaccount/models.py:140 msgid "\"oauth_token_secret\" (OAuth1) or refresh token (OAuth2)" msgstr "\"oauth_token_secret\" (OAuth1) ou jeton d'actualisation (OAuth2)" #: socialaccount/models.py:142 msgid "expires at" msgstr "expire le" #: socialaccount/models.py:146 msgid "social application token" msgstr "jeton de l'application sociale" #: socialaccount/models.py:147 msgid "social application tokens" msgstr "jetons de l'application sociale" #: socialaccount/providers/douban/views.py:36 msgid "Invalid profile data" msgstr "" #: socialaccount/providers/oauth/client.py:78 #, python-format msgid "Invalid response while obtaining request token from \"%s\"." msgstr "Réponse invalide lors de l'obtention du jeton de requête de \"%s\"." #: socialaccount/providers/oauth/client.py:109 #, python-format msgid "Invalid response while obtaining access token from \"%s\"." msgstr "Réponse invalide lors de l'obtention du jeton d'accès depuis \"%s\"." #: socialaccount/providers/oauth/client.py:128 #, python-format msgid "No request token saved for \"%s\"." msgstr "Aucun jeton de requête sauvegardé pour \"%s\"." #: socialaccount/providers/oauth/client.py:177 #, python-format msgid "No access token saved for \"%s\"." msgstr "Aucun jeton d'accès sauvegardé pour \"%s\"." #: socialaccount/providers/oauth/client.py:197 #, python-format msgid "No access to private resources at \"%s\"." msgstr "Impossible d'accéder aux ressources privées de \"%s\"." #: templates/account/account_inactive.html:5 #: templates/account/account_inactive.html:8 msgid "Account Inactive" msgstr "Compte inactif" #: templates/account/account_inactive.html:10 msgid "This account is inactive." msgstr "Ce compte est inactif." #: templates/account/email.html:5 msgid "Account" msgstr "Compte" #: templates/account/email.html:8 msgid "E-mail Addresses" msgstr "Adresses e-mail" #: templates/account/email.html:10 msgid "The following e-mail addresses are associated with your account:" msgstr "Les adresses e-mail suivantes sont associées à votre compte :" #: templates/account/email.html:24 msgid "Verified" msgstr "Vérifiée" #: templates/account/email.html:26 msgid "Unverified" msgstr "Non vérifiée" #: templates/account/email.html:28 msgid "Primary" msgstr "Principale" #: templates/account/email.html:34 msgid "Make Primary" msgstr "Rendre Principale" #: templates/account/email.html:35 msgid "Re-send Verification" msgstr "Renvoyer le message de vérification" #: templates/account/email.html:36 templates/socialaccount/connections.html:35 msgid "Remove" msgstr "Retirer" #: templates/account/email.html:43 msgid "Warning:" msgstr "Attention :" #: templates/account/email.html:43 msgid "" "You currently do not have any e-mail address set up. You should really add " "an e-mail address so you can receive notifications, reset your password, etc." msgstr "" "Vous n'avez aucune adresse e-mail associée à votre compte. Vous devriez " "ajouter une adresse e-mail pour pouvoir recevoir des notifications, " "réinitialiser votre mot de passe, etc." #: templates/account/email.html:48 msgid "Add E-mail Address" msgstr "Ajouter une adresse e-mail" #: templates/account/email.html:53 msgid "Add E-mail" msgstr "Ajouter un e-mail" #: templates/account/email.html:62 msgid "Do you really want to remove the selected e-mail address?" msgstr "Voulez-vous vraiment retirer cette adresse e-mail ?" #: templates/account/email/email_confirmation_message.txt:1 #, fuzzy, python-format #| msgid "" #| "Hello from %(site_name)s!\n" #| "\n" #| "You're receiving this e-mail because user %(user_display)s at " #| "%(site_domain)s has given yours as an e-mail address to connect their " #| "account.\n" #| "\n" #| "To confirm this is correct, go to %(activate_url)s\n" msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because user %(user_display)s has given yours " "as an e-mail address to connect their account.\n" "\n" "To confirm this is correct, go to %(activate_url)s\n" msgstr "" "L'utilisateur %(user_display)s du site %(site_name)s (%(site_domain)s) nous " "a indiqué posséder cette adresse e-mail.\n" "\n" "Pour confirmer que vous êtes bien le propriétaire, allez à %(activate_url)s\n" #: templates/account/email/email_confirmation_message.txt:7 #, python-format msgid "" "Thank you from %(site_name)s!\n" "%(site_domain)s" msgstr "" "Merci, de la part de %(site_name)s!\n" "%(site_domain)s" #: templates/account/email/email_confirmation_subject.txt:3 msgid "Please Confirm Your E-mail Address" msgstr "Confirmez votre adresse e-mail" #: templates/account/email/password_reset_key_message.txt:1 #, fuzzy, python-format #| msgid "" #| "Hello from %(site_name)s!\n" #| "\n" #| "You're receiving this e-mail because you or someone else has requested a " #| "password for your user account at %(site_domain)s.\n" #| "It can be safely ignored if you did not request a password reset. Click " #| "the link below to reset your password." msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because you or someone else has requested a " "password for your user account.\n" "It can be safely ignored if you did not request a password reset. Click the " "link below to reset your password." msgstr "" "Vous recevez cet e-mail car vous ou quelqu'un d'autre a demandé un mot de " "passe pour votre compte utilisateur du site %(site_name)s " "(%(site_domain)s).\n" "Vous pouvez simplement ignorer ce message si vous n'êtes pas à l'origine de " "cette demande. Sinon, cliquez sur le lien ci-dessous pour réinitialiser " "votre mot de passe." #: templates/account/email/password_reset_key_message.txt:8 #, python-format msgid "In case you forgot, your username is %(username)s." msgstr "" "Au cas où vous l'auriez oublié, votre nom d'utilisateur est %(username)s." #: templates/account/email/password_reset_key_message.txt:10 #, python-format msgid "" "Thank you for using %(site_name)s!\n" "%(site_domain)s" msgstr "" "Merci d'utiliser %(site_name)s !\n" "%(site_domain)s" #: templates/account/email/password_reset_key_subject.txt:3 msgid "Password Reset E-mail" msgstr "E-mail de réinitialisation de mot de passe" #: templates/account/email_confirm.html:6 #: templates/account/email_confirm.html:10 msgid "Confirm E-mail Address" msgstr "Confirmer l'adresse e-mail" #: templates/account/email_confirm.html:16 #, python-format msgid "" "Please confirm that %(email)s is an e-mail " "address for user %(user_display)s." msgstr "" "Merci de confirmer que %(email)s est " "l'adresse e-mail de %(user_display)s." #: templates/account/email_confirm.html:20 msgid "Confirm" msgstr "Confirmer" #: templates/account/email_confirm.html:27 #, python-format msgid "" "This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request." msgstr "" "Ce lien de confirmation d'adresse e-mail a expiré ou n'est pas valide. " "Veuillez lancer une nouvelle demande de " "confirmation." #: templates/account/login.html:6 templates/account/login.html:10 #: templates/account/login.html:43 msgid "Sign In" msgstr "Connexion" #: templates/account/login.html:15 #, python-format msgid "" "Please sign in with one\n" "of your existing third party accounts. Or, sign " "up\n" "for a %(site_name)s account and sign in below:" msgstr "" "Merci d'ouvrir une session avec l'un de vos comptes sociaux. Vous pouvez " "aussi ouvrir un compte %(site_name)s puis " "vous connecter ci-dessous :" #: templates/account/login.html:25 msgid "or" msgstr "ou" #: templates/account/login.html:32 #, python-format msgid "" "If you have not created an account yet, then please\n" "sign up first." msgstr "" "Si vous n'avez pas encore créé de compte, merci de vous enregistrer au préalable." #: templates/account/login.html:42 msgid "Forgot Password?" msgstr "Mot de passe oublié ?" #: templates/account/logout.html:5 templates/account/logout.html:8 #: templates/account/logout.html:17 msgid "Sign Out" msgstr "Se Déconnecter" #: templates/account/logout.html:10 msgid "Are you sure you want to sign out?" msgstr "Etes-vous sûr(e) de vouloir vous déconnecter ?" #: templates/account/messages/cannot_delete_primary_email.txt:2 #, python-format msgid "You cannot remove your primary e-mail address (%(email)s)." msgstr "" "Vous ne pouvez pas supprimer votre adresse e-mail principale (%(email)s)." #: templates/account/messages/email_confirmation_sent.txt:2 #, python-format msgid "Confirmation e-mail sent to %(email)s." msgstr "E-mail de confirmation envoyé à %(email)s." #: templates/account/messages/email_confirmed.txt:2 #, python-format msgid "You have confirmed %(email)s." msgstr "Vous avez confirmé %(email)s." #: templates/account/messages/email_deleted.txt:2 #, python-format msgid "Removed e-mail address %(email)s." msgstr "Adresse e-mail %(email)s supprimée." #: templates/account/messages/logged_in.txt:4 #, python-format msgid "Successfully signed in as %(name)s." msgstr "Connexion avec %(name)s réussie." #: templates/account/messages/logged_out.txt:2 msgid "You have signed out." msgstr "Vous êtes déconnecté." #: templates/account/messages/password_changed.txt:2 msgid "Password successfully changed." msgstr "Mot de passe modifié." #: templates/account/messages/password_set.txt:2 msgid "Password successfully set." msgstr "Mot de passe défini." #: templates/account/messages/primary_email_set.txt:2 msgid "Primary e-mail address set." msgstr "Adresse e-mail principale enregistrée." #: templates/account/messages/unverified_primary_email.txt:2 msgid "Your primary e-mail address must be verified." msgstr "Votre adresse e-mail principale doit être vérifiée." #: templates/account/password_change.html:5 #: templates/account/password_change.html:8 #: templates/account/password_change.html:13 #: templates/account/password_reset_from_key.html:4 #: templates/account/password_reset_from_key.html:7 #: templates/account/password_reset_from_key_done.html:4 #: templates/account/password_reset_from_key_done.html:7 msgid "Change Password" msgstr "Modifier le mot de passe" #: templates/account/password_reset.html:6 #: templates/account/password_reset.html:10 #: templates/account/password_reset_done.html:6 #: templates/account/password_reset_done.html:9 msgid "Password Reset" msgstr "Réinitialisation du mot de passe" #: templates/account/password_reset.html:15 msgid "" "Forgotten your password? Enter your e-mail address below, and we'll send you " "an e-mail allowing you to reset it." msgstr "" "Mot de passe oublié ? Indiquez votre adresse e-mail ci-dessous et nous vous " "enverrons un e-mail pour le réinitialiser." #: templates/account/password_reset.html:20 msgid "Reset My Password" msgstr "Réinitialiser mon mot de passe" #: templates/account/password_reset.html:23 msgid "Please contact us if you have any trouble resetting your password." msgstr "" "Merci de nous contacter si vous ne parvenez pas à réinitialiser votre mot de " "passe." #: templates/account/password_reset_done.html:15 msgid "" "We have sent you an e-mail. Please contact us if you do not receive it " "within a few minutes." msgstr "" "Nous vous avons envoyé un e-mail. Merci de nous contacter si vous ne le " "recevez pas d'ici quelques minutes." #: templates/account/password_reset_from_key.html:7 msgid "Bad Token" msgstr "Mauvais jeton d'identification" #: templates/account/password_reset_from_key.html:11 #, python-format msgid "" "The password reset link was invalid, possibly because it has already been " "used. Please request a new password reset." msgstr "" "Le lien de réinitialisation du mot de passe est invalide. Il a peut être " "déjà été utilisé. Veuillez faire une nouvelle demande de réinitialisation de mot de passe." #: templates/account/password_reset_from_key.html:17 msgid "change password" msgstr "modifer le mot de passe" #: templates/account/password_reset_from_key.html:20 #: templates/account/password_reset_from_key_done.html:8 msgid "Your password is now changed." msgstr "Votre mot de passe a été modifié." #: templates/account/password_set.html:5 templates/account/password_set.html:8 #: templates/account/password_set.html:13 msgid "Set Password" msgstr "Définir un mot de passe" #: templates/account/signup.html:5 templates/socialaccount/signup.html:5 msgid "Signup" msgstr "Inscription" #: templates/account/signup.html:8 templates/account/signup.html:18 #: templates/socialaccount/signup.html:8 templates/socialaccount/signup.html:19 msgid "Sign Up" msgstr "Création de compte" #: templates/account/signup.html:10 #, python-format msgid "" "Already have an account? Then please sign in." msgstr "" "Vous avez déjà un compte ? Vous pouvez donc vous " "connecter." #: templates/account/signup_closed.html:5 #: templates/account/signup_closed.html:8 msgid "Sign Up Closed" msgstr "Inscriptions Fermées" #: templates/account/signup_closed.html:10 msgid "We are sorry, but the sign up is currently closed." msgstr "Nous sommes désolés, mais les inscriptions sont actuellement fermées." #: templates/account/snippets/already_logged_in.html:5 msgid "Note" msgstr "Remarque" #: templates/account/snippets/already_logged_in.html:5 #, python-format msgid "you are already logged in as %(user_display)s." msgstr "vous êtes déjà connecté en tant que %(user_display)s." #: templates/account/verification_sent.html:5 #: templates/account/verification_sent.html:8 #: templates/account/verified_email_required.html:5 #: templates/account/verified_email_required.html:8 msgid "Verify Your E-mail Address" msgstr "Vérifiez votre adresse e-mail" #: templates/account/verification_sent.html:10 msgid "" "We have sent an e-mail to you for verification. Follow the link provided to " "finalize the signup process. Please contact us if you do not receive it " "within a few minutes." msgstr "" "Nous vous avons envoyé un e-mail pour validation. Cliquez sur le lien fourni " "dans l'e-mail pour terminer l'inscription. Merci de nous contacter si vous " "ne le recevez pas d'ici quelques minutes." #: templates/account/verified_email_required.html:12 msgid "" "This part of the site requires us to verify that\n" "you are who you claim to be. For this purpose, we require that you\n" "verify ownership of your e-mail address. " msgstr "" "Pour accéder à cette partie du site, il faut d'abord que nous ayons vérifié " "que vous êtes bien le propriétaire de l'adresse e-mail que vous nous avez " "indiquée." #: templates/account/verified_email_required.html:16 msgid "" "We have sent an e-mail to you for\n" "verification. Please click on the link inside this e-mail. Please\n" "contact us if you do not receive it within a few minutes." msgstr "" "Nous vous avons envoyé un e-mail de vérification. Merci de cliquer sur le " "lien inclus dans ce courriel. Contactez-nous si vous ne l'avez pas reçu " "d'ici quelques minutes." #: templates/account/verified_email_required.html:20 #, python-format msgid "" "Note: you can still change your e-" "mail address." msgstr "" "Remarque : vous pouvez toujours changer votre adresse e-mail." #: templates/openid/login.html:9 msgid "OpenID Sign In" msgstr "Connexion OpenID" #: templates/socialaccount/authentication_error.html:5 #: templates/socialaccount/authentication_error.html:8 msgid "Social Network Login Failure" msgstr "Echec de la connexion au réseau social" #: templates/socialaccount/authentication_error.html:10 msgid "" "An error occurred while attempting to login via your social network account." msgstr "" "Une erreur est survenue lors de la tentative de connexion à votre compte de " "réseau social." #: templates/socialaccount/connections.html:5 #: templates/socialaccount/connections.html:8 msgid "Account Connections" msgstr "Comptes associés" #: templates/socialaccount/connections.html:11 msgid "" "You can sign in to your account using any of the following third party " "accounts:" msgstr "" "Vous pouvez ouvrir une session en utilisant l'un de ces réseaux sociaux :" #: templates/socialaccount/connections.html:43 msgid "" "You currently have no social network accounts connected to this account." msgstr "Aucun compte de réseau social n'est actuellement associé à ce compte." #: templates/socialaccount/connections.html:46 msgid "Add a 3rd Party Account" msgstr "Ajouter un compte de réseau social" #: templates/socialaccount/login_cancelled.html:5 #: templates/socialaccount/login_cancelled.html:9 msgid "Login Cancelled" msgstr "Ouverture de session annulée" #: templates/socialaccount/login_cancelled.html:13 #, python-format msgid "" "You decided to cancel logging in to our site using one of your existing " "accounts. If this was a mistake, please proceed to sign in." msgstr "" "Vous avez annulé la connexion à notre site depuis l'un de vos comptes de " "réseau social. S'il s'agit d'une erreur, merci de connecter." #: templates/socialaccount/messages/account_connected.txt:2 msgid "The social account has been connected." msgstr "Le compte social a bien été connecté." #: templates/socialaccount/messages/account_connected_other.txt:2 msgid "The social account is already connected to a different account." msgstr "Ce compte social est déjà connecté à un autre compte." #: templates/socialaccount/messages/account_disconnected.txt:2 msgid "The social account has been disconnected." msgstr "Le compte social a été déconnecté." #: templates/socialaccount/signup.html:10 #, python-format msgid "" "You are about to use your %(provider_name)s account to login to\n" "%(site_name)s. As a final step, please complete the following form:" msgstr "" "Vous êtes sur le point de vous connecter via votre compte %(provider_name)s " "au site %(site_name)s. Merci de compléter le formulaire suivant pour " "confirmer la connexion." #~ msgid "The login and/or password you specified are not correct." #~ msgstr "L'identifiant ou le mot de passe sont incorrects." #~ msgid "Usernames can only contain letters, digits and @/./+/-/_." #~ msgstr "" #~ "Un pseudonyme ne peut contenir que des lettres, des chiffres, ainsi que " #~ "@/./+/-/_." #~ msgid "This username is already taken. Please choose another." #~ msgstr "Ce pseudonyme est déjà utilisé, merci d'en choisir un autre." #~ msgid "Shopify Sign In" #~ msgstr "Connexion Shopify" #~ msgid "" #~ "You have confirmed that %(email)s is an " #~ "e-mail address for user %(user_display)s." #~ msgstr "" #~ "Vous avez confirmé que l'adresse e-mail de l'utilsateur %(user_display)s " #~ "est %(email)s." #~ msgid "Thanks for using our site!" #~ msgstr "Merci d'utiliser notre site !" django-allauth-0.35.0/allauth/locale/es/0000755000076500000240000000000013235133532020750 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/es/LC_MESSAGES/0000755000076500000240000000000013235133532022535 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/es/LC_MESSAGES/django.mo0000644000076500000240000003332513235132042024335 0ustar pennersrstaff00000000000000{h \i 6    * 3 > Q Ii w L+ "x    &  9 F M _ p  p _2a89  $1'Fn -0OljB" ! B Tairz#A6#@Z&4)[?;#%??<=0 4 Uhq2f\mP:B}H_*2$],-  "0@Sg y.oqH* 1 F Y a } , M !U!)!("E" Y"+c"(""U"!#5#"T#w##x#j $@$7$;%@%[%r%%'%+%.%$&)& D&P&g&#&1& &%&'S'')( (7( ) #).)(7)`){))) )) ))))0*MF*R*O*7+$+',6A,Ax,*,,;-;@-|- .1. ./B /'L/ t/-/ /7//0hX11ER2@22J3344-4,45 5B5B^555555$5&"6I6Y6s6z6|6 666 6+6s9ZG Q_nXqgP k[?%JhU@*TCI Sy:!5+{\Ej]M;t#rzoW7HYp,6$x Om<`" 3c01^2b/8BN.4LaluFewiK f>Rd=()&-DvV'ANote: you can still change your e-mail address.A user is already registered with this e-mail address.AccountAccount ConnectionsAccount InactiveAccountsAdd E-mailAdd E-mail AddressAdd a 3rd Party AccountAlready have an account? Then please sign in.An account already exists with this e-mail address. Please sign in to that account first, then connect your %s account.An error occurred while attempting to login via your social network account.Are you sure you want to sign out?Bad TokenChange PasswordConfirmConfirm E-mail AddressConfirmation e-mail sent to %(email)s.Current PasswordDo you really want to remove the selected e-mail address?E-mailE-mail (optional)E-mail AddressesE-mail addressForgot Password?Forgotten your password? Enter your e-mail address below, and we'll send you an e-mail allowing you to reset it.If you have not created an account yet, then please sign up first.In case you forgot, your username is %(username)s.Invalid response while obtaining access token from "%s".Invalid response while obtaining request token from "%s".Login CancelledMake PrimaryNew PasswordNew Password (again)No access to private resources at "%s".No access token saved for "%s".No request token saved for "%s".NoteOpenID Sign InPasswordPassword (again)Password ResetPassword Reset E-mailPassword must be a minimum of {0} characters.Password successfully changed.Password successfully set.Please confirm that %(email)s is an e-mail address for user %(user_display)s.Please contact us if you have any trouble resetting your password.Please sign in with one of your existing third party accounts. Or, sign up for a %(site_name)s account and sign in below:Please type your current password.PrimaryPrimary e-mail address set.Re-send VerificationRemember MeRemoveRemoved e-mail address %(email)s.Reset My PasswordSet PasswordSign InSign OutSign UpSign Up ClosedSignupSocial AccountsSocial Network Login FailureSuccessfully signed in as %(name)s.The e-mail address and/or password you specified are not correct.The e-mail address is not assigned to any user accountThe following e-mail addresses are associated with your account:The password reset link was invalid, possibly because it has already been used. Please request a new password reset.The social account has been connected.The social account has been disconnected.The social account is already connected to a different account.The username and/or password you specified are not correct.This account is currently inactive.This account is inactive.This e-mail address is already associated with another account.This e-mail address is already associated with this account.This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request.This part of the site requires us to verify that you are who you claim to be. For this purpose, we require that you verify ownership of your e-mail address. Too many failed login attempts. Try again later.UnverifiedUsernameUsername can not be used. Please use other username.Username or e-mailVerifiedVerify Your E-mail AddressWarning:We are sorry, but the sign up is currently closed.We have sent an e-mail to you for verification. Please click on the link inside this e-mail. Please contact us if you do not receive it within a few minutes.We have sent an e-mail to you for verification. Follow the link provided to finalize the signup process. Please contact us if you do not receive it within a few minutes.We have sent you an e-mail. Please contact us if you do not receive it within a few minutes.You are about to use your %(provider_name)s account to login to %(site_name)s. As a final step, please complete the following form:You can sign in to your account using any of the following third party accounts:You cannot remove your primary e-mail address (%(email)s).You currently do not have any e-mail address set up. You should really add an e-mail address so you can receive notifications, reset your password, etc.You currently have no social network accounts connected to this account.You decided to cancel logging in to our site using one of your existing accounts. If this was a mistake, please proceed to sign in.You have confirmed %(email)s.You have signed out.You must type the same password each time.Your account has no password set up.Your account has no verified e-mail address.Your password is now changed.Your primary e-mail address must be verified.change passwordcreatede-mail addressemail addressemail addressesemail confirmationemail confirmationsfield labelLoginlast loginnameorprimaryprovidersentuserverifiedyou are already logged in as %(user_display)s.Project-Id-Version: django-allauth Report-Msgid-Bugs-To: POT-Creation-Date: 2018-02-02 12:55-0600 PO-Revision-Date: 2014-08-12 00:30+0200 Last-Translator: Jannis Š Language-Team: Spanish (http://www.transifex.com/projects/p/django-allauth/language/es/) Language: es MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); Nota: todavía puede cambiar tu dirección de correo electrónico.Un usuario ya fue registrado con esta dirección de correo electrónico.CuentaConexiones de CuentaCuenta desactivadaCuentasAñadir correo electrónicoAñadir correo electrónicoAgregar una cuenta de una red social externa¿Ya tienes una cuenta? Por favor inicia sesión.Ya existe una cuenta asociada a esta dirección de correo electrónico. Por favor, autentícate usando esa cuenta, y luego vincula tu cuenta de %s.Se produjo un error al intentar iniciar sesión a través de tu cuenta de red social.¿Estás seguro de querer cerrar sesión?Hay un problema con el tokenCambiar ContraseñaConfirmarConfirmar dirección de correo electrónicoCorreo electrónico enviado a %(email)s.Contraseña actual¿Estás seguro de querer eliminar la dirección de correo electrónico seleccionada?Correo electrónicoCorreo Electrónico (opcional)Direcciones de correo electrónicoCorreo electrónico¿Olvidaste tu contraseña?¿Has olvidado tu contraseña? Ingresa tu correo electrónico y te enviaremos un correo que te permitirá restablecerla.Si todavía no has creado una cuenta, entonces por favor regístrate primero.En caso de haber olvidado tu nombre de usuario, es %(username)s.Respuesta inválida al obtener token de acceso de "%s".Respuesta no válida al obtener token de solicitud de "%s".Incio de sesión canceladoDefinir como principalNueva contraseñaNueva contraseña (de nuevo)Sin acceso a recursos privados de "%s".No hay token de acceso guardado para "%s".No hay token de solicitud guardados para "%s".NotaIniciar sesión con OpenIDContraseñaContraseña (de nuevo)Restablecer ContraseñaCorreo para restablecer contraseñaUna contraseña necesita al menos {0} caracteres.Contraseña cambiada con éxito.Contraseña establecida exitosamente.Por favor confirma que %(email)s es una dirección de correo electrónico del usuario %(user_display)s.Si tiene alguna dificultad para restablecer tu contraseña, por favor contáctanos.Por favor inicia sesión con una cuenta de otra red social. O, regístrese como usuario de %(site_name)s e inicia sesión a continuación:Por favor, escribe tu contraseña actual.PrincipalDirección principal de correo eletrónico establecida.Reenviar VerificaciónRecordarmeEliminarCorreo electrónico eliminado %(email)s.Restablecer mi contraseñaEstablecer contraseñaIniciar sesiónCerrar sesiónRegístrateRegistro cerradoRegístrateCuentas SocialesError de inicio de sesión con Red SocialHas iniciado sesión exitosamente como %(name)s.El correo electrónico y/o la contraseña que especificaste no son correctos.La dirección de correo electrónico no está asignada a ninguna cuenta de usuarioLas siguientes direcciones de correo electrónico están asociadas a tu cuenta:El enlace para restablecer la contraseña es inválido, probablemente porque ya ha sido utilizado. Por favor solicita retablecer la contraseña de nuevo.La cuenta externa ha sido conectada.La cuenta externa ha sido desconectada.Esta cuenta externa ya ha sido conetada a otra cuenta.El usuario y/o la contraseña que especificaste no son correctos.Esta cuenta está desactivada actualmente.Esta cuenta está desactivada.Este correo electrónico ya está asociado con otra cuenta.Este correo electrónico ya está asociado con esta cuenta.Este enlace de verificación de correo ha expirado o es inválido. Por favor solicita una nueva verificación por correo electrónico..Esta parte del sitio requiere que verifiquemos que tu eres quien dices ser. Para este fin, pedimos que verifiques que eres el dueño de tu correo electrónico. Demasiados intentos fallidos, intenta más tarde.Sin verificarUsuarioEste nombre de usuario no puede ser usado. Por favor ingresa otro.Nombre de usuario o correo electrónicoVerificadoVerifica tu dirección de correo electrónicoAdvertencia:Lo sentimos, en este momento el registro está cerrado.Te hemos enviado un correo electrónico para tu verificación. Por favor, haz clic en el enlace de este correo. Por favor contáctanos si no recibes el correo en unos minutos.Te hemos enviado un correo electrónico para tu verificación. Sigue el enlace para completar el proceso de registro. Por favor contáctanos si no recibes el correo en unos minutos.Te hemos enviado un correo electrónico. Por favor contáctanos si no recibes el correo en unos minutos.Estas a punto de utilizar tu cuenta %(provider_name)s para acceder a %(site_name)s. Como paso final, por favor completa el siguiente formulario:Puedes iniciar sesión con alguna de las siguientes cuentas externas:No puedes eliminar tu correo electrónico principal (%(email)s).Actualmente no tienes ninguna dirección de correo electrónico definida. Debes añadir una dirección de correo electrónico para poder recibir notificaciones, restablecer la contraseña, etc.Actualmente no tienes ninguna cuenta de red social asociada a esta cuenta.Has decidido cancelar el inicio de sesión a nuestro sitio usando las siguientes cuentas. Si esto fue un error, inicie sesión.Has confirmado %(email)s.Has cerrado sesión.Debes escribir la misma contraseña cada vez.Tu cuenta no tiene una contraseña definida.Tu cuenta no tiene un correo electrónico verificado.Tu contraseña ha cambiado.Tu dirección principal de correo eletrónico debe ser verificado.cambiar la contraseñacreadocorreo electrónicocorreo electrónicocorreos electrónicosconfirmación de correo electrónicoconfirmación de correos electrónicosIniciar sesiónúltimo inicio de sesiónnombreoprimeroproveedorenviadousuarioverificadohas iniciado sesión como %(user_display)s.django-allauth-0.35.0/allauth/locale/es/LC_MESSAGES/django.po0000644000076500000240000006366613235132040024351 0ustar pennersrstaff00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: msgid "" msgstr "" "Project-Id-Version: django-allauth\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-02-02 12:55-0600\n" "PO-Revision-Date: 2014-08-12 00:30+0200\n" "Last-Translator: Jannis Š\n" "Language-Team: Spanish (http://www.transifex.com/projects/p/django-allauth/" "language/es/)\n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: account/adapter.py:45 msgid "Username can not be used. Please use other username." msgstr "Este nombre de usuario no puede ser usado. Por favor ingresa otro." #: account/adapter.py:49 msgid "Too many failed login attempts. Try again later." msgstr "Demasiados intentos fallidos, intenta más tarde." #: account/adapter.py:51 msgid "A user is already registered with this e-mail address." msgstr "Un usuario ya fue registrado con esta dirección de correo electrónico." #: account/adapter.py:288 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "Una contraseña necesita al menos {0} caracteres." #: account/apps.py:7 msgid "Accounts" msgstr "Cuentas" #: account/forms.py:61 account/forms.py:398 msgid "You must type the same password each time." msgstr "Debes escribir la misma contraseña cada vez." #: account/forms.py:91 account/forms.py:365 account/forms.py:476 msgid "Password" msgstr "Contraseña" #: account/forms.py:92 msgid "Remember Me" msgstr "Recordarme" #: account/forms.py:98 msgid "This account is currently inactive." msgstr "Esta cuenta está desactivada actualmente." #: account/forms.py:101 msgid "The e-mail address and/or password you specified are not correct." msgstr "" "El correo electrónico y/o la contraseña que especificaste no son correctos." #: account/forms.py:104 msgid "The username and/or password you specified are not correct." msgstr "El usuario y/o la contraseña que especificaste no son correctos." #: account/forms.py:113 account/forms.py:268 account/forms.py:426 #: account/forms.py:495 msgid "E-mail address" msgstr "Correo electrónico" #: account/forms.py:115 account/forms.py:301 account/forms.py:421 #: account/forms.py:490 msgid "E-mail" msgstr "Correo electrónico" #: account/forms.py:120 account/forms.py:123 account/forms.py:260 #: account/forms.py:264 msgid "Username" msgstr "Usuario" #: account/forms.py:130 msgid "Username or e-mail" msgstr "Nombre de usuario o correo electrónico" #: account/forms.py:133 msgctxt "field label" msgid "Login" msgstr "Iniciar sesión" #: account/forms.py:292 #, fuzzy #| msgid "E-mail (optional)" msgid "E-mail (again)" msgstr "Correo Electrónico (opcional)" #: account/forms.py:296 #, fuzzy #| msgid "email confirmation" msgid "E-mail address confirmation" msgstr "confirmación de correo electrónico" #: account/forms.py:304 msgid "E-mail (optional)" msgstr "Correo Electrónico (opcional)" #: account/forms.py:345 #, fuzzy #| msgid "You must type the same password each time." msgid "You must type the same email each time." msgstr "Debes escribir la misma contraseña cada vez." #: account/forms.py:368 account/forms.py:477 msgid "Password (again)" msgstr "Contraseña (de nuevo)" #: account/forms.py:432 msgid "This e-mail address is already associated with this account." msgstr "Este correo electrónico ya está asociado con esta cuenta." #: account/forms.py:434 msgid "This e-mail address is already associated with another account." msgstr "Este correo electrónico ya está asociado con otra cuenta." #: account/forms.py:456 msgid "Current Password" msgstr "Contraseña actual" #: account/forms.py:457 account/forms.py:546 msgid "New Password" msgstr "Nueva contraseña" #: account/forms.py:458 account/forms.py:547 msgid "New Password (again)" msgstr "Nueva contraseña (de nuevo)" #: account/forms.py:466 msgid "Please type your current password." msgstr "Por favor, escribe tu contraseña actual." #: account/forms.py:504 msgid "The e-mail address is not assigned to any user account" msgstr "" "La dirección de correo electrónico no está asignada a ninguna cuenta de " "usuario" #: account/forms.py:568 msgid "The password reset token was invalid." msgstr "" #: account/models.py:23 msgid "user" msgstr "usuario" #: account/models.py:27 account/models.py:81 msgid "e-mail address" msgstr "correo electrónico" #: account/models.py:28 msgid "verified" msgstr "verificado" #: account/models.py:29 msgid "primary" msgstr "primero" #: account/models.py:34 msgid "email address" msgstr "correo electrónico" #: account/models.py:35 msgid "email addresses" msgstr "correos electrónicos" #: account/models.py:83 msgid "created" msgstr "creado" #: account/models.py:85 msgid "sent" msgstr "enviado" #: account/models.py:86 socialaccount/models.py:55 msgid "key" msgstr "" #: account/models.py:91 msgid "email confirmation" msgstr "confirmación de correo electrónico" #: account/models.py:92 msgid "email confirmations" msgstr "confirmación de correos electrónicos" #: socialaccount/adapter.py:26 #, python-format msgid "" "An account already exists with this e-mail address. Please sign in to that " "account first, then connect your %s account." msgstr "" "Ya existe una cuenta asociada a esta dirección de correo electrónico. Por " "favor, autentícate usando esa cuenta, y luego vincula tu cuenta de %s." #: socialaccount/adapter.py:131 msgid "Your account has no password set up." msgstr "Tu cuenta no tiene una contraseña definida." #: socialaccount/adapter.py:138 msgid "Your account has no verified e-mail address." msgstr "Tu cuenta no tiene un correo electrónico verificado." #: socialaccount/apps.py:7 msgid "Social Accounts" msgstr "Cuentas Sociales" #: socialaccount/models.py:43 socialaccount/models.py:77 msgid "provider" msgstr "proveedor" #: socialaccount/models.py:46 msgid "name" msgstr "nombre" #: socialaccount/models.py:48 msgid "client id" msgstr "" #: socialaccount/models.py:50 msgid "App ID, or consumer key" msgstr "" #: socialaccount/models.py:51 msgid "secret key" msgstr "" #: socialaccount/models.py:53 msgid "API secret, client secret, or consumer secret" msgstr "" #: socialaccount/models.py:58 msgid "Key" msgstr "" #: socialaccount/models.py:66 msgid "social application" msgstr "" #: socialaccount/models.py:67 msgid "social applications" msgstr "" #: socialaccount/models.py:96 msgid "uid" msgstr "" #: socialaccount/models.py:98 msgid "last login" msgstr "último inicio de sesión" #: socialaccount/models.py:100 msgid "date joined" msgstr "" #: socialaccount/models.py:102 msgid "extra data" msgstr "" #: socialaccount/models.py:106 msgid "social account" msgstr "" #: socialaccount/models.py:107 msgid "social accounts" msgstr "" #: socialaccount/models.py:133 msgid "token" msgstr "" #: socialaccount/models.py:135 msgid "\"oauth_token\" (OAuth1) or access token (OAuth2)" msgstr "" #: socialaccount/models.py:138 msgid "token secret" msgstr "" #: socialaccount/models.py:140 msgid "\"oauth_token_secret\" (OAuth1) or refresh token (OAuth2)" msgstr "" #: socialaccount/models.py:142 msgid "expires at" msgstr "" #: socialaccount/models.py:146 msgid "social application token" msgstr "" #: socialaccount/models.py:147 msgid "social application tokens" msgstr "" #: socialaccount/providers/douban/views.py:36 msgid "Invalid profile data" msgstr "" #: socialaccount/providers/oauth/client.py:78 #, python-format msgid "Invalid response while obtaining request token from \"%s\"." msgstr "Respuesta no válida al obtener token de solicitud de \"%s\"." #: socialaccount/providers/oauth/client.py:109 #, python-format msgid "Invalid response while obtaining access token from \"%s\"." msgstr "Respuesta inválida al obtener token de acceso de \"%s\"." #: socialaccount/providers/oauth/client.py:128 #, python-format msgid "No request token saved for \"%s\"." msgstr "No hay token de solicitud guardados para \"%s\"." #: socialaccount/providers/oauth/client.py:177 #, python-format msgid "No access token saved for \"%s\"." msgstr "No hay token de acceso guardado para \"%s\"." #: socialaccount/providers/oauth/client.py:197 #, python-format msgid "No access to private resources at \"%s\"." msgstr "Sin acceso a recursos privados de \"%s\"." #: templates/account/account_inactive.html:5 #: templates/account/account_inactive.html:8 msgid "Account Inactive" msgstr "Cuenta desactivada" #: templates/account/account_inactive.html:10 msgid "This account is inactive." msgstr "Esta cuenta está desactivada." #: templates/account/email.html:5 msgid "Account" msgstr "Cuenta" #: templates/account/email.html:8 msgid "E-mail Addresses" msgstr "Direcciones de correo electrónico" #: templates/account/email.html:10 msgid "The following e-mail addresses are associated with your account:" msgstr "" "Las siguientes direcciones de correo electrónico están asociadas a tu cuenta:" #: templates/account/email.html:24 msgid "Verified" msgstr "Verificado" #: templates/account/email.html:26 msgid "Unverified" msgstr "Sin verificar" #: templates/account/email.html:28 msgid "Primary" msgstr "Principal" #: templates/account/email.html:34 msgid "Make Primary" msgstr "Definir como principal" #: templates/account/email.html:35 msgid "Re-send Verification" msgstr "Reenviar Verificación" #: templates/account/email.html:36 templates/socialaccount/connections.html:35 msgid "Remove" msgstr "Eliminar" #: templates/account/email.html:43 msgid "Warning:" msgstr "Advertencia:" #: templates/account/email.html:43 msgid "" "You currently do not have any e-mail address set up. You should really add " "an e-mail address so you can receive notifications, reset your password, etc." msgstr "" "Actualmente no tienes ninguna dirección de correo electrónico definida. " "Debes añadir una dirección de correo electrónico para poder recibir " "notificaciones, restablecer la contraseña, etc." #: templates/account/email.html:48 msgid "Add E-mail Address" msgstr "Añadir correo electrónico" #: templates/account/email.html:53 msgid "Add E-mail" msgstr "Añadir correo electrónico" #: templates/account/email.html:62 msgid "Do you really want to remove the selected e-mail address?" msgstr "" "¿Estás seguro de querer eliminar la dirección de correo electrónico " "seleccionada?" #: templates/account/email/email_confirmation_message.txt:1 #, fuzzy, python-format #| msgid "" #| "User %(user_display)s at %(site_name)s has given this as an email " #| "address.\n" #| "\n" #| "To confirm this is correct, go to %(activate_url)s\n" msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because user %(user_display)s has given yours " "as an e-mail address to connect their account.\n" "\n" "To confirm this is correct, go to %(activate_url)s\n" msgstr "" "El usuario %(user_display)s de %(site_name)s ha proporcionado este como su " "correo electrónico.\n" "\n" "Para confirmar que esto es correcto, haz clic en %(activate_url)s\n" #: templates/account/email/email_confirmation_message.txt:7 #, python-format msgid "" "Thank you from %(site_name)s!\n" "%(site_domain)s" msgstr "" #: templates/account/email/email_confirmation_subject.txt:3 #, fuzzy #| msgid "Confirm E-mail Address" msgid "Please Confirm Your E-mail Address" msgstr "Confirmar dirección de correo electrónico" #: templates/account/email/password_reset_key_message.txt:1 #, fuzzy, python-format #| msgid "" #| "You're receiving this e-mail because you or someone else has requested a " #| "password for your user account at %(site_domain)s.\n" #| "It can be safely ignored if you did not request a password reset. Click " #| "the link below to reset your password." msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because you or someone else has requested a " "password for your user account.\n" "It can be safely ignored if you did not request a password reset. Click the " "link below to reset your password." msgstr "" "Has recibido este correo porque tú u otra persona han pedido una nueva " "contraseña para su cuenta en %(site_domain)s.\n" "Si tú no pediste restablecer tu contraseña, ignora este correo. Haz clic en " "el enlace de abajo para restablecer tu contraseña." #: templates/account/email/password_reset_key_message.txt:8 #, python-format msgid "In case you forgot, your username is %(username)s." msgstr "En caso de haber olvidado tu nombre de usuario, es %(username)s." #: templates/account/email/password_reset_key_message.txt:10 #, python-format msgid "" "Thank you for using %(site_name)s!\n" "%(site_domain)s" msgstr "" #: templates/account/email/password_reset_key_subject.txt:3 msgid "Password Reset E-mail" msgstr "Correo para restablecer contraseña" #: templates/account/email_confirm.html:6 #: templates/account/email_confirm.html:10 msgid "Confirm E-mail Address" msgstr "Confirmar dirección de correo electrónico" #: templates/account/email_confirm.html:16 #, python-format msgid "" "Please confirm that %(email)s is an e-mail " "address for user %(user_display)s." msgstr "" "Por favor confirma que %(email)s es una " "dirección de correo electrónico del usuario %(user_display)s." #: templates/account/email_confirm.html:20 msgid "Confirm" msgstr "Confirmar" #: templates/account/email_confirm.html:27 #, python-format msgid "" "This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request." msgstr "" "Este enlace de verificación de correo ha expirado o es inválido. Por favor " "solicita una nueva verificación por correo " "electrónico.." #: templates/account/login.html:6 templates/account/login.html:10 #: templates/account/login.html:43 msgid "Sign In" msgstr "Iniciar sesión" #: templates/account/login.html:15 #, python-format msgid "" "Please sign in with one\n" "of your existing third party accounts. Or, sign " "up\n" "for a %(site_name)s account and sign in below:" msgstr "" "Por favor inicia sesión con una\n" "cuenta de otra red social. O, regístrese \n" "como usuario de %(site_name)s e inicia sesión a continuación:" #: templates/account/login.html:25 msgid "or" msgstr "o" #: templates/account/login.html:32 #, python-format msgid "" "If you have not created an account yet, then please\n" "sign up first." msgstr "" "Si todavía no has creado una cuenta, entonces por favor\n" "regístrate primero." #: templates/account/login.html:42 msgid "Forgot Password?" msgstr "¿Olvidaste tu contraseña?" #: templates/account/logout.html:5 templates/account/logout.html:8 #: templates/account/logout.html:17 msgid "Sign Out" msgstr "Cerrar sesión" #: templates/account/logout.html:10 msgid "Are you sure you want to sign out?" msgstr "¿Estás seguro de querer cerrar sesión?" #: templates/account/messages/cannot_delete_primary_email.txt:2 #, python-format msgid "You cannot remove your primary e-mail address (%(email)s)." msgstr "No puedes eliminar tu correo electrónico principal (%(email)s)." #: templates/account/messages/email_confirmation_sent.txt:2 #, python-format msgid "Confirmation e-mail sent to %(email)s." msgstr "Correo electrónico enviado a %(email)s." #: templates/account/messages/email_confirmed.txt:2 #, python-format msgid "You have confirmed %(email)s." msgstr "Has confirmado %(email)s." #: templates/account/messages/email_deleted.txt:2 #, python-format msgid "Removed e-mail address %(email)s." msgstr "Correo electrónico eliminado %(email)s." #: templates/account/messages/logged_in.txt:4 #, python-format msgid "Successfully signed in as %(name)s." msgstr "Has iniciado sesión exitosamente como %(name)s." #: templates/account/messages/logged_out.txt:2 msgid "You have signed out." msgstr "Has cerrado sesión." #: templates/account/messages/password_changed.txt:2 msgid "Password successfully changed." msgstr "Contraseña cambiada con éxito." #: templates/account/messages/password_set.txt:2 msgid "Password successfully set." msgstr "Contraseña establecida exitosamente." #: templates/account/messages/primary_email_set.txt:2 msgid "Primary e-mail address set." msgstr "Dirección principal de correo eletrónico establecida." #: templates/account/messages/unverified_primary_email.txt:2 msgid "Your primary e-mail address must be verified." msgstr "Tu dirección principal de correo eletrónico debe ser verificado." #: templates/account/password_change.html:5 #: templates/account/password_change.html:8 #: templates/account/password_change.html:13 #: templates/account/password_reset_from_key.html:4 #: templates/account/password_reset_from_key.html:7 #: templates/account/password_reset_from_key_done.html:4 #: templates/account/password_reset_from_key_done.html:7 msgid "Change Password" msgstr "Cambiar Contraseña" #: templates/account/password_reset.html:6 #: templates/account/password_reset.html:10 #: templates/account/password_reset_done.html:6 #: templates/account/password_reset_done.html:9 msgid "Password Reset" msgstr "Restablecer Contraseña" #: templates/account/password_reset.html:15 msgid "" "Forgotten your password? Enter your e-mail address below, and we'll send you " "an e-mail allowing you to reset it." msgstr "" "¿Has olvidado tu contraseña? Ingresa tu correo electrónico y te enviaremos " "un correo que te permitirá restablecerla." #: templates/account/password_reset.html:20 msgid "Reset My Password" msgstr "Restablecer mi contraseña" #: templates/account/password_reset.html:23 msgid "Please contact us if you have any trouble resetting your password." msgstr "" "Si tiene alguna dificultad para restablecer tu contraseña, por favor " "contáctanos." #: templates/account/password_reset_done.html:15 msgid "" "We have sent you an e-mail. Please contact us if you do not receive it " "within a few minutes." msgstr "" "Te hemos enviado un correo electrónico. Por favor contáctanos si no recibes " "el correo en unos minutos." #: templates/account/password_reset_from_key.html:7 msgid "Bad Token" msgstr "Hay un problema con el token" #: templates/account/password_reset_from_key.html:11 #, python-format msgid "" "The password reset link was invalid, possibly because it has already been " "used. Please request a new password reset." msgstr "" "El enlace para restablecer la contraseña es inválido, probablemente porque " "ya ha sido utilizado. Por favor solicita retablecer la contraseña de nuevo." #: templates/account/password_reset_from_key.html:17 msgid "change password" msgstr "cambiar la contraseña" #: templates/account/password_reset_from_key.html:20 #: templates/account/password_reset_from_key_done.html:8 msgid "Your password is now changed." msgstr "Tu contraseña ha cambiado." #: templates/account/password_set.html:5 templates/account/password_set.html:8 #: templates/account/password_set.html:13 msgid "Set Password" msgstr "Establecer contraseña" #: templates/account/signup.html:5 templates/socialaccount/signup.html:5 msgid "Signup" msgstr "Regístrate" #: templates/account/signup.html:8 templates/account/signup.html:18 #: templates/socialaccount/signup.html:8 templates/socialaccount/signup.html:19 msgid "Sign Up" msgstr "Regístrate" #: templates/account/signup.html:10 #, python-format msgid "" "Already have an account? Then please sign in." msgstr "" "¿Ya tienes una cuenta? Por favor inicia sesión." #: templates/account/signup_closed.html:5 #: templates/account/signup_closed.html:8 msgid "Sign Up Closed" msgstr "Registro cerrado" #: templates/account/signup_closed.html:10 msgid "We are sorry, but the sign up is currently closed." msgstr "Lo sentimos, en este momento el registro está cerrado." #: templates/account/snippets/already_logged_in.html:5 msgid "Note" msgstr "Nota" #: templates/account/snippets/already_logged_in.html:5 #, python-format msgid "you are already logged in as %(user_display)s." msgstr "has iniciado sesión como %(user_display)s." #: templates/account/verification_sent.html:5 #: templates/account/verification_sent.html:8 #: templates/account/verified_email_required.html:5 #: templates/account/verified_email_required.html:8 msgid "Verify Your E-mail Address" msgstr "Verifica tu dirección de correo electrónico" #: templates/account/verification_sent.html:10 msgid "" "We have sent an e-mail to you for verification. Follow the link provided to " "finalize the signup process. Please contact us if you do not receive it " "within a few minutes." msgstr "" "Te hemos enviado un correo electrónico para tu verificación. Sigue el enlace " "para completar el proceso de registro. Por favor contáctanos si no recibes " "el correo en unos minutos." #: templates/account/verified_email_required.html:12 msgid "" "This part of the site requires us to verify that\n" "you are who you claim to be. For this purpose, we require that you\n" "verify ownership of your e-mail address. " msgstr "" "Esta parte del sitio requiere que verifiquemos que tu eres quien dices ser. " "Para este fin, pedimos que verifiques que eres el dueño de tu correo " "electrónico. " #: templates/account/verified_email_required.html:16 msgid "" "We have sent an e-mail to you for\n" "verification. Please click on the link inside this e-mail. Please\n" "contact us if you do not receive it within a few minutes." msgstr "" "Te hemos enviado un correo electrónico para tu verificación. Por favor, haz " "clic en el enlace de este correo. Por favor contáctanos si no recibes el " "correo en unos minutos." #: templates/account/verified_email_required.html:20 #, python-format msgid "" "Note: you can still change your e-" "mail address." msgstr "" "Nota: todavía puede cambiar tu " "dirección de correo electrónico." #: templates/openid/login.html:9 msgid "OpenID Sign In" msgstr "Iniciar sesión con OpenID" #: templates/socialaccount/authentication_error.html:5 #: templates/socialaccount/authentication_error.html:8 msgid "Social Network Login Failure" msgstr "Error de inicio de sesión con Red Social" #: templates/socialaccount/authentication_error.html:10 msgid "" "An error occurred while attempting to login via your social network account." msgstr "" "Se produjo un error al intentar iniciar sesión a través de tu cuenta de red " "social." #: templates/socialaccount/connections.html:5 #: templates/socialaccount/connections.html:8 msgid "Account Connections" msgstr "Conexiones de Cuenta" #: templates/socialaccount/connections.html:11 msgid "" "You can sign in to your account using any of the following third party " "accounts:" msgstr "Puedes iniciar sesión con alguna de las siguientes cuentas externas:" #: templates/socialaccount/connections.html:43 msgid "" "You currently have no social network accounts connected to this account." msgstr "" "Actualmente no tienes ninguna cuenta de red social asociada a esta cuenta." #: templates/socialaccount/connections.html:46 msgid "Add a 3rd Party Account" msgstr "Agregar una cuenta de una red social externa" #: templates/socialaccount/login_cancelled.html:5 #: templates/socialaccount/login_cancelled.html:9 msgid "Login Cancelled" msgstr "Incio de sesión cancelado" #: templates/socialaccount/login_cancelled.html:13 #, python-format msgid "" "You decided to cancel logging in to our site using one of your existing " "accounts. If this was a mistake, please proceed to sign in." msgstr "" "Has decidido cancelar el inicio de sesión a nuestro sitio usando las " "siguientes cuentas. Si esto fue un error, inicie " "sesión." #: templates/socialaccount/messages/account_connected.txt:2 msgid "The social account has been connected." msgstr "La cuenta externa ha sido conectada." #: templates/socialaccount/messages/account_connected_other.txt:2 msgid "The social account is already connected to a different account." msgstr "Esta cuenta externa ya ha sido conetada a otra cuenta." #: templates/socialaccount/messages/account_disconnected.txt:2 msgid "The social account has been disconnected." msgstr "La cuenta externa ha sido desconectada." #: templates/socialaccount/signup.html:10 #, python-format msgid "" "You are about to use your %(provider_name)s account to login to\n" "%(site_name)s. As a final step, please complete the following form:" msgstr "" "Estas a punto de utilizar tu cuenta %(provider_name)s para acceder a " "%(site_name)s. Como paso final, por favor completa el siguiente formulario:" #~ msgid "The login and/or password you specified are not correct." #~ msgstr "" #~ "El correo electrónico/usuario y/o la contraseña que especificaste no son " #~ "correctos." #~ msgid "Usernames can only contain letters, digits and @/./+/-/_." #~ msgstr "" #~ "Los nombres de usuarios pueden contener solamente letras, números, y @/./" #~ "+/-/_." #~ msgid "This username is already taken. Please choose another." #~ msgstr "Este usuario ya está en uso. Por favor elije otro." #, fuzzy #~| msgid "Sign In" #~ msgid "Shopify Sign In" #~ msgstr "Iniciar sesión" #~ msgid "" #~ "You have confirmed that %(email)s is an " #~ "e-mail address for user %(user_display)s." #~ msgstr "" #~ "Has confirmado que %(email)s es una " #~ "dirección de correo electrónico del usuario %(user_display)s." #~ msgid "Thanks for using our site!" #~ msgstr "¡Gracias por utilizar nuestro sitio!" #~ msgid "Confirmation e-mail sent to %(email)s" #~ msgstr "Correo de confirmación enviado a %(email)s" #~ msgid "Delete Password" #~ msgstr "Eliminar Contraseña" #~ msgid "" #~ "You may delete your password since you are currently logged in using " #~ "OpenID." #~ msgstr "Puedes eliminar tu contraseña ya que ingresaste con OpenID." #~ msgid "delete my password" #~ msgstr "eliminar mi contraseña" #~ msgid "Password Deleted" #~ msgstr "Contraseña Eliminada" #~ msgid "Your password has been deleted." #~ msgstr "Tu contraseña fue eliminada." django-allauth-0.35.0/allauth/locale/en/0000755000076500000240000000000013235133532020743 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/en/LC_MESSAGES/0000755000076500000240000000000013235133532022530 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/en/LC_MESSAGES/django.mo0000644000076500000240000000057213235132042024326 0ustar pennersrstaff00000000000000$,8@9Project-Id-Version: PACKAGE VERSION Report-Msgid-Bugs-To: POT-Creation-Date: 2018-02-02 12:55-0600 PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE Last-Translator: FULL NAME Language-Team: LANGUAGE Language: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit django-allauth-0.35.0/allauth/locale/en/LC_MESSAGES/django.po0000644000076500000240000004245613235132040024336 0ustar pennersrstaff00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-02-02 12:55-0600\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: account/adapter.py:45 msgid "Username can not be used. Please use other username." msgstr "" #: account/adapter.py:49 msgid "Too many failed login attempts. Try again later." msgstr "" #: account/adapter.py:51 msgid "A user is already registered with this e-mail address." msgstr "" #: account/adapter.py:288 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "" #: account/apps.py:7 msgid "Accounts" msgstr "" #: account/forms.py:61 account/forms.py:398 msgid "You must type the same password each time." msgstr "" #: account/forms.py:91 account/forms.py:365 account/forms.py:476 msgid "Password" msgstr "" #: account/forms.py:92 msgid "Remember Me" msgstr "" #: account/forms.py:98 msgid "This account is currently inactive." msgstr "" #: account/forms.py:101 msgid "The e-mail address and/or password you specified are not correct." msgstr "" #: account/forms.py:104 msgid "The username and/or password you specified are not correct." msgstr "" #: account/forms.py:113 account/forms.py:268 account/forms.py:426 #: account/forms.py:495 msgid "E-mail address" msgstr "" #: account/forms.py:115 account/forms.py:301 account/forms.py:421 #: account/forms.py:490 msgid "E-mail" msgstr "" #: account/forms.py:120 account/forms.py:123 account/forms.py:260 #: account/forms.py:264 msgid "Username" msgstr "" #: account/forms.py:130 msgid "Username or e-mail" msgstr "" #: account/forms.py:133 msgctxt "field label" msgid "Login" msgstr "" #: account/forms.py:292 msgid "E-mail (again)" msgstr "" #: account/forms.py:296 msgid "E-mail address confirmation" msgstr "" #: account/forms.py:304 msgid "E-mail (optional)" msgstr "" #: account/forms.py:345 msgid "You must type the same email each time." msgstr "" #: account/forms.py:368 account/forms.py:477 msgid "Password (again)" msgstr "" #: account/forms.py:432 msgid "This e-mail address is already associated with this account." msgstr "" #: account/forms.py:434 msgid "This e-mail address is already associated with another account." msgstr "" #: account/forms.py:456 msgid "Current Password" msgstr "" #: account/forms.py:457 account/forms.py:546 msgid "New Password" msgstr "" #: account/forms.py:458 account/forms.py:547 msgid "New Password (again)" msgstr "" #: account/forms.py:466 msgid "Please type your current password." msgstr "" #: account/forms.py:504 msgid "The e-mail address is not assigned to any user account" msgstr "" #: account/forms.py:568 msgid "The password reset token was invalid." msgstr "" #: account/models.py:23 msgid "user" msgstr "" #: account/models.py:27 account/models.py:81 msgid "e-mail address" msgstr "" #: account/models.py:28 msgid "verified" msgstr "" #: account/models.py:29 msgid "primary" msgstr "" #: account/models.py:34 msgid "email address" msgstr "" #: account/models.py:35 msgid "email addresses" msgstr "" #: account/models.py:83 msgid "created" msgstr "" #: account/models.py:85 msgid "sent" msgstr "" #: account/models.py:86 socialaccount/models.py:55 msgid "key" msgstr "" #: account/models.py:91 msgid "email confirmation" msgstr "" #: account/models.py:92 msgid "email confirmations" msgstr "" #: socialaccount/adapter.py:26 #, python-format msgid "" "An account already exists with this e-mail address. Please sign in to that " "account first, then connect your %s account." msgstr "" #: socialaccount/adapter.py:131 msgid "Your account has no password set up." msgstr "" #: socialaccount/adapter.py:138 msgid "Your account has no verified e-mail address." msgstr "" #: socialaccount/apps.py:7 msgid "Social Accounts" msgstr "" #: socialaccount/models.py:43 socialaccount/models.py:77 msgid "provider" msgstr "" #: socialaccount/models.py:46 msgid "name" msgstr "" #: socialaccount/models.py:48 msgid "client id" msgstr "" #: socialaccount/models.py:50 msgid "App ID, or consumer key" msgstr "" #: socialaccount/models.py:51 msgid "secret key" msgstr "" #: socialaccount/models.py:53 msgid "API secret, client secret, or consumer secret" msgstr "" #: socialaccount/models.py:58 msgid "Key" msgstr "" #: socialaccount/models.py:66 msgid "social application" msgstr "" #: socialaccount/models.py:67 msgid "social applications" msgstr "" #: socialaccount/models.py:96 msgid "uid" msgstr "" #: socialaccount/models.py:98 msgid "last login" msgstr "" #: socialaccount/models.py:100 msgid "date joined" msgstr "" #: socialaccount/models.py:102 msgid "extra data" msgstr "" #: socialaccount/models.py:106 msgid "social account" msgstr "" #: socialaccount/models.py:107 msgid "social accounts" msgstr "" #: socialaccount/models.py:133 msgid "token" msgstr "" #: socialaccount/models.py:135 msgid "\"oauth_token\" (OAuth1) or access token (OAuth2)" msgstr "" #: socialaccount/models.py:138 msgid "token secret" msgstr "" #: socialaccount/models.py:140 msgid "\"oauth_token_secret\" (OAuth1) or refresh token (OAuth2)" msgstr "" #: socialaccount/models.py:142 msgid "expires at" msgstr "" #: socialaccount/models.py:146 msgid "social application token" msgstr "" #: socialaccount/models.py:147 msgid "social application tokens" msgstr "" #: socialaccount/providers/douban/views.py:36 msgid "Invalid profile data" msgstr "" #: socialaccount/providers/oauth/client.py:78 #, python-format msgid "Invalid response while obtaining request token from \"%s\"." msgstr "" #: socialaccount/providers/oauth/client.py:109 #, python-format msgid "Invalid response while obtaining access token from \"%s\"." msgstr "" #: socialaccount/providers/oauth/client.py:128 #, python-format msgid "No request token saved for \"%s\"." msgstr "" #: socialaccount/providers/oauth/client.py:177 #, python-format msgid "No access token saved for \"%s\"." msgstr "" #: socialaccount/providers/oauth/client.py:197 #, python-format msgid "No access to private resources at \"%s\"." msgstr "" #: templates/account/account_inactive.html:5 #: templates/account/account_inactive.html:8 msgid "Account Inactive" msgstr "" #: templates/account/account_inactive.html:10 msgid "This account is inactive." msgstr "" #: templates/account/email.html:5 msgid "Account" msgstr "" #: templates/account/email.html:8 msgid "E-mail Addresses" msgstr "" #: templates/account/email.html:10 msgid "The following e-mail addresses are associated with your account:" msgstr "" #: templates/account/email.html:24 msgid "Verified" msgstr "" #: templates/account/email.html:26 msgid "Unverified" msgstr "" #: templates/account/email.html:28 msgid "Primary" msgstr "" #: templates/account/email.html:34 msgid "Make Primary" msgstr "" #: templates/account/email.html:35 msgid "Re-send Verification" msgstr "" #: templates/account/email.html:36 templates/socialaccount/connections.html:35 msgid "Remove" msgstr "" #: templates/account/email.html:43 msgid "Warning:" msgstr "" #: templates/account/email.html:43 msgid "" "You currently do not have any e-mail address set up. You should really add " "an e-mail address so you can receive notifications, reset your password, etc." msgstr "" #: templates/account/email.html:48 msgid "Add E-mail Address" msgstr "" #: templates/account/email.html:53 msgid "Add E-mail" msgstr "" #: templates/account/email.html:62 msgid "Do you really want to remove the selected e-mail address?" msgstr "" #: templates/account/email/email_confirmation_message.txt:1 #, python-format msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because user %(user_display)s has given yours " "as an e-mail address to connect their account.\n" "\n" "To confirm this is correct, go to %(activate_url)s\n" msgstr "" #: templates/account/email/email_confirmation_message.txt:7 #, python-format msgid "" "Thank you from %(site_name)s!\n" "%(site_domain)s" msgstr "" #: templates/account/email/email_confirmation_subject.txt:3 msgid "Please Confirm Your E-mail Address" msgstr "" #: templates/account/email/password_reset_key_message.txt:1 #, python-format msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because you or someone else has requested a " "password for your user account.\n" "It can be safely ignored if you did not request a password reset. Click the " "link below to reset your password." msgstr "" #: templates/account/email/password_reset_key_message.txt:8 #, python-format msgid "In case you forgot, your username is %(username)s." msgstr "" #: templates/account/email/password_reset_key_message.txt:10 #, python-format msgid "" "Thank you for using %(site_name)s!\n" "%(site_domain)s" msgstr "" #: templates/account/email/password_reset_key_subject.txt:3 msgid "Password Reset E-mail" msgstr "" #: templates/account/email_confirm.html:6 #: templates/account/email_confirm.html:10 msgid "Confirm E-mail Address" msgstr "" #: templates/account/email_confirm.html:16 #, python-format msgid "" "Please confirm that %(email)s is an e-mail " "address for user %(user_display)s." msgstr "" #: templates/account/email_confirm.html:20 msgid "Confirm" msgstr "" #: templates/account/email_confirm.html:27 #, python-format msgid "" "This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request." msgstr "" #: templates/account/login.html:6 templates/account/login.html:10 #: templates/account/login.html:43 msgid "Sign In" msgstr "" #: templates/account/login.html:15 #, python-format msgid "" "Please sign in with one\n" "of your existing third party accounts. Or, sign " "up\n" "for a %(site_name)s account and sign in below:" msgstr "" #: templates/account/login.html:25 msgid "or" msgstr "" #: templates/account/login.html:32 #, python-format msgid "" "If you have not created an account yet, then please\n" "sign up first." msgstr "" #: templates/account/login.html:42 msgid "Forgot Password?" msgstr "" #: templates/account/logout.html:5 templates/account/logout.html:8 #: templates/account/logout.html:17 msgid "Sign Out" msgstr "" #: templates/account/logout.html:10 msgid "Are you sure you want to sign out?" msgstr "" #: templates/account/messages/cannot_delete_primary_email.txt:2 #, python-format msgid "You cannot remove your primary e-mail address (%(email)s)." msgstr "" #: templates/account/messages/email_confirmation_sent.txt:2 #, python-format msgid "Confirmation e-mail sent to %(email)s." msgstr "" #: templates/account/messages/email_confirmed.txt:2 #, python-format msgid "You have confirmed %(email)s." msgstr "" #: templates/account/messages/email_deleted.txt:2 #, python-format msgid "Removed e-mail address %(email)s." msgstr "" #: templates/account/messages/logged_in.txt:4 #, python-format msgid "Successfully signed in as %(name)s." msgstr "" #: templates/account/messages/logged_out.txt:2 msgid "You have signed out." msgstr "" #: templates/account/messages/password_changed.txt:2 msgid "Password successfully changed." msgstr "" #: templates/account/messages/password_set.txt:2 msgid "Password successfully set." msgstr "" #: templates/account/messages/primary_email_set.txt:2 msgid "Primary e-mail address set." msgstr "" #: templates/account/messages/unverified_primary_email.txt:2 msgid "Your primary e-mail address must be verified." msgstr "" #: templates/account/password_change.html:5 #: templates/account/password_change.html:8 #: templates/account/password_change.html:13 #: templates/account/password_reset_from_key.html:4 #: templates/account/password_reset_from_key.html:7 #: templates/account/password_reset_from_key_done.html:4 #: templates/account/password_reset_from_key_done.html:7 msgid "Change Password" msgstr "" #: templates/account/password_reset.html:6 #: templates/account/password_reset.html:10 #: templates/account/password_reset_done.html:6 #: templates/account/password_reset_done.html:9 msgid "Password Reset" msgstr "" #: templates/account/password_reset.html:15 msgid "" "Forgotten your password? Enter your e-mail address below, and we'll send you " "an e-mail allowing you to reset it." msgstr "" #: templates/account/password_reset.html:20 msgid "Reset My Password" msgstr "" #: templates/account/password_reset.html:23 msgid "Please contact us if you have any trouble resetting your password." msgstr "" #: templates/account/password_reset_done.html:15 msgid "" "We have sent you an e-mail. Please contact us if you do not receive it " "within a few minutes." msgstr "" #: templates/account/password_reset_from_key.html:7 msgid "Bad Token" msgstr "" #: templates/account/password_reset_from_key.html:11 #, python-format msgid "" "The password reset link was invalid, possibly because it has already been " "used. Please request a new password reset." msgstr "" #: templates/account/password_reset_from_key.html:17 msgid "change password" msgstr "" #: templates/account/password_reset_from_key.html:20 #: templates/account/password_reset_from_key_done.html:8 msgid "Your password is now changed." msgstr "" #: templates/account/password_set.html:5 templates/account/password_set.html:8 #: templates/account/password_set.html:13 msgid "Set Password" msgstr "" #: templates/account/signup.html:5 templates/socialaccount/signup.html:5 msgid "Signup" msgstr "" #: templates/account/signup.html:8 templates/account/signup.html:18 #: templates/socialaccount/signup.html:8 templates/socialaccount/signup.html:19 msgid "Sign Up" msgstr "" #: templates/account/signup.html:10 #, python-format msgid "" "Already have an account? Then please sign in." msgstr "" #: templates/account/signup_closed.html:5 #: templates/account/signup_closed.html:8 msgid "Sign Up Closed" msgstr "" #: templates/account/signup_closed.html:10 msgid "We are sorry, but the sign up is currently closed." msgstr "" #: templates/account/snippets/already_logged_in.html:5 msgid "Note" msgstr "" #: templates/account/snippets/already_logged_in.html:5 #, python-format msgid "you are already logged in as %(user_display)s." msgstr "" #: templates/account/verification_sent.html:5 #: templates/account/verification_sent.html:8 #: templates/account/verified_email_required.html:5 #: templates/account/verified_email_required.html:8 msgid "Verify Your E-mail Address" msgstr "" #: templates/account/verification_sent.html:10 msgid "" "We have sent an e-mail to you for verification. Follow the link provided to " "finalize the signup process. Please contact us if you do not receive it " "within a few minutes." msgstr "" #: templates/account/verified_email_required.html:12 msgid "" "This part of the site requires us to verify that\n" "you are who you claim to be. For this purpose, we require that you\n" "verify ownership of your e-mail address. " msgstr "" #: templates/account/verified_email_required.html:16 msgid "" "We have sent an e-mail to you for\n" "verification. Please click on the link inside this e-mail. Please\n" "contact us if you do not receive it within a few minutes." msgstr "" #: templates/account/verified_email_required.html:20 #, python-format msgid "" "Note: you can still change your e-" "mail address." msgstr "" #: templates/openid/login.html:9 msgid "OpenID Sign In" msgstr "" #: templates/socialaccount/authentication_error.html:5 #: templates/socialaccount/authentication_error.html:8 msgid "Social Network Login Failure" msgstr "" #: templates/socialaccount/authentication_error.html:10 msgid "" "An error occurred while attempting to login via your social network account." msgstr "" #: templates/socialaccount/connections.html:5 #: templates/socialaccount/connections.html:8 msgid "Account Connections" msgstr "" #: templates/socialaccount/connections.html:11 msgid "" "You can sign in to your account using any of the following third party " "accounts:" msgstr "" #: templates/socialaccount/connections.html:43 msgid "" "You currently have no social network accounts connected to this account." msgstr "" #: templates/socialaccount/connections.html:46 msgid "Add a 3rd Party Account" msgstr "" #: templates/socialaccount/login_cancelled.html:5 #: templates/socialaccount/login_cancelled.html:9 msgid "Login Cancelled" msgstr "" #: templates/socialaccount/login_cancelled.html:13 #, python-format msgid "" "You decided to cancel logging in to our site using one of your existing " "accounts. If this was a mistake, please proceed to sign in." msgstr "" #: templates/socialaccount/messages/account_connected.txt:2 msgid "The social account has been connected." msgstr "" #: templates/socialaccount/messages/account_connected_other.txt:2 msgid "The social account is already connected to a different account." msgstr "" #: templates/socialaccount/messages/account_disconnected.txt:2 msgid "The social account has been disconnected." msgstr "" #: templates/socialaccount/signup.html:10 #, python-format msgid "" "You are about to use your %(provider_name)s account to login to\n" "%(site_name)s. As a final step, please complete the following form:" msgstr "" django-allauth-0.35.0/allauth/locale/fa/0000755000076500000240000000000013235133532020727 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/fa/LC_MESSAGES/0000755000076500000240000000000013235133532022514 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/fa/LC_MESSAGES/django.mo0000644000076500000240000004112213235132043024307 0ustar pennersrstaff00000000000000zH \I 6     ( I@ w L "O r |   &  9  $ 6 G V pg _ 288k9  'E e-&lAB" ! +8@IQ`g#2A6@T&.)U?;#?9<y7 41:U2^/\6P: FH(*$&,Kx-   0;MQT\az.E]  $9 ^ '} > Y >!i2"Y"" # '#,2#A_##b# $($D$a$5u$$c%-%v&&9&&.&'#4':X';'A'((8(H(c(J(M(=)4W))}**?++&+/",R,r,*y,,,,,, -$- 3-HA-D-r-DB.U.~.;\/-040g0Dc1F131#2z2"34455#55?5 6]"6 6G789r:_;qy;<J=@>( ?G6?I~?\?B%@?h@@@@@@A"0ASAcAlAuAzAAA A AAhAK0%!5\8^W?A2 q._<U>6Nz9p7@;xYkeCTZl&hmtRQi'H1#cv=OMd+EPoLs [jVbGD)w$: Fr"n, gJ`IauXfSy ]*- 3/B(4Note: you can still change your e-mail address.A user is already registered with this e-mail address.AccountAccount ConnectionsAccount InactiveAdd E-mailAdd E-mail AddressAdd a 3rd Party AccountAlready have an account? Then please sign in.An account already exists with this e-mail address. Please sign in to that account first, then connect your %s account.An error occurred while attempting to login via your social network account.Are you sure you want to sign out?Bad TokenChange PasswordConfirmConfirm E-mail AddressConfirmation e-mail sent to %(email)s.Current PasswordDo you really want to remove the selected e-mail address?E-mailE-mail (optional)E-mail AddressesE-mail addressForgot Password?Forgotten your password? Enter your e-mail address below, and we'll send you an e-mail allowing you to reset it.If you have not created an account yet, then please sign up first.In case you forgot, your username is %(username)s.Invalid response while obtaining access token from "%s".Invalid response while obtaining request token from "%s".Login CancelledMake PrimaryNew PasswordNew Password (again)No access to private resources at "%s".No access token saved for "%s".No request token saved for "%s".NoteOpenID Sign InPasswordPassword (again)Password ResetPassword Reset E-mailPassword must be a minimum of {0} characters.Password successfully changed.Password successfully set.Please confirm that %(email)s is an e-mail address for user %(user_display)s.Please contact us if you have any trouble resetting your password.Please sign in with one of your existing third party accounts. Or, sign up for a %(site_name)s account and sign in below:Please type your current password.PrimaryPrimary e-mail address set.Re-send VerificationRemember MeRemoveRemoved e-mail address %(email)s.Reset My PasswordSet PasswordSign InSign OutSign UpSign Up ClosedSignupSocial Network Login FailureSuccessfully signed in as %(name)s.Thank you for using %(site_name)s! %(site_domain)sThe e-mail address and/or password you specified are not correct.The e-mail address is not assigned to any user accountThe following e-mail addresses are associated with your account:The password reset link was invalid, possibly because it has already been used. Please request a new password reset.The social account has been connected.The social account has been disconnected.The social account is already connected to a different account.The username and/or password you specified are not correct.This account is currently inactive.This account is inactive.This e-mail address is already associated with another account.This e-mail address is already associated with this account.This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request.This part of the site requires us to verify that you are who you claim to be. For this purpose, we require that you verify ownership of your e-mail address. UnverifiedUsernameUsername can not be used. Please use other username.Username or e-mailVerifiedVerify Your E-mail AddressWarning:We are sorry, but the sign up is currently closed.We have sent an e-mail to you for verification. Please click on the link inside this e-mail. Please contact us if you do not receive it within a few minutes.We have sent an e-mail to you for verification. Follow the link provided to finalize the signup process. Please contact us if you do not receive it within a few minutes.We have sent you an e-mail. Please contact us if you do not receive it within a few minutes.You are about to use your %(provider_name)s account to login to %(site_name)s. As a final step, please complete the following form:You can sign in to your account using any of the following third party accounts:You cannot remove your primary e-mail address (%(email)s).You currently do not have any e-mail address set up. You should really add an e-mail address so you can receive notifications, reset your password, etc.You currently have no social network accounts connected to this account.You decided to cancel logging in to our site using one of your existing accounts. If this was a mistake, please proceed to sign in.You have confirmed %(email)s.You have signed out.You must type the same password each time.Your account has no password set up.Your account has no verified e-mail address.Your password is now changed.Your primary e-mail address must be verified.change passwordcreatede-mail addressemail addressemail addressesemail confirmationemail confirmationsexpires atfield labelLoginkeyorprimarysentsocial application tokensocial application tokensuserverifiedyou are already logged in as %(user_display)s.Project-Id-Version: Report-Msgid-Bugs-To: POT-Creation-Date: 2018-02-02 12:55-0600 PO-Revision-Date: 2015-09-14 12:40-0000 Last-Translator: NARIMAN GHARIB Language-Team: Language: fa MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Generator: Poedit 1.7.4 توجه: شما همچنان می‌توانید ایمیل آدرس خود راتغییر دهید.کاربر دیگری قبلا با این نام کاربری ثبت نام کرده است.حساب کاربریحساب‌های متصلحساب کاربری غیرفعالاضافه کردن ایمیلاضافه کردن آدرس ایمیلمتصل کردن حساب‌های سایت‌های دیگرقبلا ثبت نام کرده‌اید؟ وارد شوید.یک جساب کاربری دیگری با این ایمیل آدرس موجود است. لطفا ابتدا از طریق آن حساب وارد شوید. اول حساب کاربری و بعد حساب کاربری %s را متصل کنید.یک خطا هنگام ورود شما توسط حساب های کاربری شما رخ داده است.آیا مطمئن هستید که می‌خواهید از سیستم خارج شوید؟توکن نادرستتغییر رمز عبورتاییدایمیل آدرس را تایید کنیدتاییده اییمیل به آدرس %(email)sارسال شد.رمز عبور فعلیآیا واقعا می‌خواهید ایمیل های انتخاب شده را حذف کنید؟ایمیلایمیل (اختیاری)آدرس‌های ایمیلآدرس ایمیلرمز عبور را فراموش کرده‌اید؟رمز عبور خودتان را فراموش کرده‌اید؟ ایمیل خودتان را وارد کنید تا قادر باشید که رمز جدیدی دریافت کنیداگر هنوز حساب کاربری ندارید می‌توانید ابتدا در سایت ثبت نام کنید.کلمه عبور شما %(username)s است.پاسخ دریافتی به درخواست دریافت توکن دسترسی از "%s" معتبر نمی‌باشد.Invalid response while obtaining request token from "%s".ورود لغو شدتغییر وضعیت به ایمیل اصلیرمز عبور جدیدتکرار رمز عبور جدیدعدم دسترسی به منابع خصوصی در "%s".توکن دسترسی به "%s" ذخیره نشده است.توکن درخواست برای "%s" ذخیره نشده است.توجهورود از طریق OpenIDرمز عبورتکرار رمز عبوردریافت رمز جدیدایمیل درخواست راه اندازی دوباره رمز عبورپسورد تنها می‌تواند دارای {0} کاراکتر باشد.رمز عبور با موفقیت تغییر پیدا کرد.رمز عبور با موفقیت انتخاب شد.لطفا تایید کنید %(email)s که یک ایمیل آدرس برای کاربر %(user_display)s است.اگر هرگونه مشکلی برای تغییر رمز عبور خودتون داشتید با ما تماس بگیرید.لطفا با یکی از حساب‌های کاربری خودتان در شبکه‌ها و سایت‌های دیگر وارد شوید یا ثبت نام کنید برای وب سایت %(site_name)s و در ادامه وارد سایت شویدلطفا رمز عبور فعلی خود را تایپ کنیداصلیایمیل اصلی انتخاب شد.ارسال دوباره تاییده ایمیلمرا به خاطر بسپارحذفایمیل آدرس %(email)s حذف شد.راه اندازی رمز عبور جدیدانتخاب رمز عبورورودخروجثبت نامثبت نام بسته شده استقبت نامخطا درهنگام واردن شدن شبکه‌های اجتماعیبا موفقیت با نام %(name)s وارد سیستم شدید.از اینکه از %(site_name)s استفاده کردید،‌از شما متشکریم.‏ ‏%(site_domain)sنام کاربری یا رمز عبور صحیح نمی‌باشد.این آدرس ایمیل به هیچ حساب کاربری متصل نشده استاین ایمیل آدرس‌هایی که در ادامه میبینید به حساب کاربری شما وصل هستند:پیوند دریافت رمز جدید کار نمی‌کند، بخاطر اینکه قبلا یکبار استفاده شده است لطفا درخواست جدیدی دهید a تا پیوند جدیدی برای دریافت رمز عبور برایتان ارسال شود.حساب کاربری مجازی وصل شد.حساب کاربری مجازی شما قطع شد.حساب کاربری مجازی قبلا به حساب کاربری دیگری متصل شده است.نام کاربری یا رمز عبور صحیح نمی‌باشد.این حساب کاربری درحال حاضر غیرفعال استاین حساب کاربری غیرفعال است.ایمیل آدرسی که انتخاب کرده‌اید قبلا به این حساب کاربر دیگری وصل شده است.ایمیل آدرسی که انتخاب کرده‌اید قبلا به این حساب کاربری وصل شده است.این پیوند برای تایید آدرس ایمیل منقضی شده است. لطفا درخواست یک پیوند جدید برای تایید ایمیل خودتان را بدهید.این قسمت از سایت ما نیاز به تایید دارد که هویت شما باید تایید شود، بهمین دلیل ما باید ما باید تایید کنیم که شما مالک ایمیل خود هستید.تایید نشدهنام کاربریاین نام‌کاربری نمی‌تواند انتخاب شود، لطفا یک نام‌کاربری دیگر انتخاب کنیدنام کاربری یا ایمیلتایید شدهایمیل آدرس خودتان را تکمیل فرماییداخطار:ما متاسف هستیم اما قسمت ثبت نام درحال حاضر بسته است.ما یک ایمیل برای تایید شدن شما برایتان ارسال کردیم لطفا روی لینک داخل این ایمیل کلیک کنید. لطفا اگر پس از چند دقیقه این ایمیل را دریافت نکردید با ما تماس بگیرید.ما یک ایمیل برای تایید شما ارسال کردیم. ایمیل داخل ایمیل را مطالعه کنید تا با مراحل تکمیل فرایند تایید شدن آشنا شوید. اگر این ایمیل را پس از چند دقیقه دریافت نکردید با ما تماس بگیرید.ما برای شما یک ایمیل ارسال کردیم، لطفا اگر تا دقایقی دیگر آن را دریافت نکردید با ما تماس بگیرید..چند قدم مانده تا شما با نام %(provider_name)s وارد %(site_name)s. شوید. برای مراحل آخر لطفا در ادامه فرم‌های مورد نظر را تکمیل فرمایید.شما می‌توانید از طریق یکی از برنامه‌ها و وب‌سایت‌های زیر به حساب کاربری خودتان وارد شوید.شما نمی‌توانید ایمیل اصلی خودتان را حذف کنید (%(email)s).شما درحال حاضر هیچ ایمیل آدرسی در حساب کاربری خودتان ندارید شما حتما باید یک ایمیل آدرس در حساب کاربری خودتان داشته باشید تا بوسیله آن از رویدادها آگاه شده و یا برای تغییر رمز عبور و غیره از آن ستفاده کنیدشما درحال حاضر هیچ ابزار و وب سایت شبکه‌ اجتماعی را به حساب کاربری خود وصل نکردید.شما تصمیم گرفتید تا ورود به سایت ما را با استفاده از یکی از حساب های کاربری خودتان لفو کنید.اگر این یک اشتباه قابل پیشنی نبود لطفا به ادرس روبرو بروید و وارد سیستم شوید.شما ایمیل آدرس %(email)s را تایید کردید.شما از سیستم خارج شدیدشما باید رمز عبور یکسانی را انتخاب کنیدحساب کاربری شما هنوز هیچ رمز عبوری نداردحساب کاربری شما هنوز هیچ ایمیل تایید شده‌ای ندارد.رمز عبور شما با موقیت تغییر پیدا کرد.ایمیل اصلی شما حتما باید تایید شود.تغییر رمز عبورساخته شدهآدرس ایمیلآدرس ایمیلآدرس ایمیلتائید آدرس ایمیلتاییدیه‌های ایمیلانقضا درورودکلیدیااصلیارسال شدتوکن اپلیکشنتوکن اپلیکیشن‌هاکاربرتایید شدهشما درحال حاضر با نام کاربری %(user_display)s وارد سیستم شده اید.django-allauth-0.35.0/allauth/locale/fa/LC_MESSAGES/django.po0000644000076500000240000007145013235132040024316 0ustar pennersrstaff00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-02-02 12:55-0600\n" "PO-Revision-Date: 2015-09-14 12:40-0000\n" "Last-Translator: NARIMAN GHARIB \n" "Language-Team: \n" "Language: fa\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 1.7.4\n" #: account/adapter.py:45 msgid "Username can not be used. Please use other username." msgstr "این نام‌کاربری نمی‌تواند انتخاب شود، لطفا یک نام‌کاربری دیگر انتخاب کنید" #: account/adapter.py:49 msgid "Too many failed login attempts. Try again later." msgstr "" #: account/adapter.py:51 msgid "A user is already registered with this e-mail address." msgstr "کاربر دیگری قبلا با این نام کاربری ثبت نام کرده است." #: account/adapter.py:288 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "پسورد تنها می‌تواند دارای {0} کاراکتر باشد." #: account/apps.py:7 #, fuzzy msgid "Accounts" msgstr "حساب کاربری" #: account/forms.py:61 account/forms.py:398 msgid "You must type the same password each time." msgstr "شما باید رمز عبور یکسانی را انتخاب کنید" #: account/forms.py:91 account/forms.py:365 account/forms.py:476 msgid "Password" msgstr "رمز عبور" #: account/forms.py:92 msgid "Remember Me" msgstr "مرا به خاطر بسپار" #: account/forms.py:98 msgid "This account is currently inactive." msgstr "این حساب کاربری درحال حاضر غیرفعال است" #: account/forms.py:101 msgid "The e-mail address and/or password you specified are not correct." msgstr "نام کاربری یا رمز عبور صحیح نمی‌باشد." #: account/forms.py:104 msgid "The username and/or password you specified are not correct." msgstr "نام کاربری یا رمز عبور صحیح نمی‌باشد." #: account/forms.py:113 account/forms.py:268 account/forms.py:426 #: account/forms.py:495 msgid "E-mail address" msgstr "آدرس ایمیل" #: account/forms.py:115 account/forms.py:301 account/forms.py:421 #: account/forms.py:490 msgid "E-mail" msgstr "ایمیل" #: account/forms.py:120 account/forms.py:123 account/forms.py:260 #: account/forms.py:264 msgid "Username" msgstr "نام کاربری" #: account/forms.py:130 msgid "Username or e-mail" msgstr "نام کاربری یا ایمیل" #: account/forms.py:133 msgctxt "field label" msgid "Login" msgstr "ورود" #: account/forms.py:292 #, fuzzy #| msgid "E-mail (optional)" msgid "E-mail (again)" msgstr "ایمیل (اختیاری)" #: account/forms.py:296 #, fuzzy #| msgid "email confirmation" msgid "E-mail address confirmation" msgstr "تائید آدرس ایمیل" #: account/forms.py:304 msgid "E-mail (optional)" msgstr "ایمیل (اختیاری)" #: account/forms.py:345 #, fuzzy #| msgid "You must type the same password each time." msgid "You must type the same email each time." msgstr "شما باید رمز عبور یکسانی را انتخاب کنید" #: account/forms.py:368 account/forms.py:477 msgid "Password (again)" msgstr "تکرار رمز عبور" #: account/forms.py:432 msgid "This e-mail address is already associated with this account." msgstr "ایمیل آدرسی که انتخاب کرده‌اید قبلا به این حساب کاربری وصل شده است." #: account/forms.py:434 msgid "This e-mail address is already associated with another account." msgstr "" "ایمیل آدرسی که انتخاب کرده‌اید قبلا به این حساب کاربر دیگری وصل شده است." #: account/forms.py:456 msgid "Current Password" msgstr "رمز عبور فعلی" #: account/forms.py:457 account/forms.py:546 msgid "New Password" msgstr "رمز عبور جدید" #: account/forms.py:458 account/forms.py:547 msgid "New Password (again)" msgstr "تکرار رمز عبور جدید" #: account/forms.py:466 msgid "Please type your current password." msgstr "لطفا رمز عبور فعلی خود را تایپ کنید" #: account/forms.py:504 msgid "The e-mail address is not assigned to any user account" msgstr "این آدرس ایمیل به هیچ حساب کاربری متصل نشده است" #: account/forms.py:568 msgid "The password reset token was invalid." msgstr "" #: account/models.py:23 msgid "user" msgstr "کاربر" #: account/models.py:27 account/models.py:81 msgid "e-mail address" msgstr "آدرس ایمیل" #: account/models.py:28 msgid "verified" msgstr "تایید شده" #: account/models.py:29 msgid "primary" msgstr "اصلی" #: account/models.py:34 msgid "email address" msgstr "آدرس ایمیل" #: account/models.py:35 msgid "email addresses" msgstr "آدرس ایمیل" #: account/models.py:83 msgid "created" msgstr "ساخته شده" #: account/models.py:85 msgid "sent" msgstr "ارسال شد" #: account/models.py:86 socialaccount/models.py:55 msgid "key" msgstr "کلید" #: account/models.py:91 msgid "email confirmation" msgstr "تائید آدرس ایمیل" #: account/models.py:92 msgid "email confirmations" msgstr "تاییدیه‌های ایمیل" #: socialaccount/adapter.py:26 #, python-format msgid "" "An account already exists with this e-mail address. Please sign in to that " "account first, then connect your %s account." msgstr "" "یک جساب کاربری دیگری با این ایمیل آدرس موجود است. لطفا ابتدا از طریق آن حساب " "وارد شوید. اول حساب کاربری و بعد حساب کاربری %s را متصل کنید." #: socialaccount/adapter.py:131 msgid "Your account has no password set up." msgstr "حساب کاربری شما هنوز هیچ رمز عبوری ندارد" #: socialaccount/adapter.py:138 msgid "Your account has no verified e-mail address." msgstr "حساب کاربری شما هنوز هیچ ایمیل تایید شده‌ای ندارد." #: socialaccount/apps.py:7 #, fuzzy msgid "Social Accounts" msgstr "حساب کاربری" #: socialaccount/models.py:43 socialaccount/models.py:77 msgid "provider" msgstr "" #: socialaccount/models.py:46 #, fuzzy msgid "name" msgstr "نام کاربری" #: socialaccount/models.py:48 msgid "client id" msgstr "" #: socialaccount/models.py:50 msgid "App ID, or consumer key" msgstr "" #: socialaccount/models.py:51 msgid "secret key" msgstr "" #: socialaccount/models.py:53 msgid "API secret, client secret, or consumer secret" msgstr "" #: socialaccount/models.py:58 #, fuzzy msgid "Key" msgstr "کلید" #: socialaccount/models.py:66 msgid "social application" msgstr "" #: socialaccount/models.py:67 msgid "social applications" msgstr "" #: socialaccount/models.py:96 msgid "uid" msgstr "" #: socialaccount/models.py:98 msgid "last login" msgstr "" #: socialaccount/models.py:100 msgid "date joined" msgstr "" #: socialaccount/models.py:102 msgid "extra data" msgstr "" #: socialaccount/models.py:106 msgid "social account" msgstr "" #: socialaccount/models.py:107 msgid "social accounts" msgstr "" #: socialaccount/models.py:133 msgid "token" msgstr "" #: socialaccount/models.py:135 msgid "\"oauth_token\" (OAuth1) or access token (OAuth2)" msgstr "" #: socialaccount/models.py:138 msgid "token secret" msgstr "" #: socialaccount/models.py:140 msgid "\"oauth_token_secret\" (OAuth1) or refresh token (OAuth2)" msgstr "" #: socialaccount/models.py:142 msgid "expires at" msgstr "انقضا در" #: socialaccount/models.py:146 msgid "social application token" msgstr "توکن اپلیکشن" #: socialaccount/models.py:147 msgid "social application tokens" msgstr "توکن اپلیکیشن‌ها" #: socialaccount/providers/douban/views.py:36 msgid "Invalid profile data" msgstr "" #: socialaccount/providers/oauth/client.py:78 #, python-format msgid "Invalid response while obtaining request token from \"%s\"." msgstr "Invalid response while obtaining request token from \"%s\"." #: socialaccount/providers/oauth/client.py:109 #, python-format msgid "Invalid response while obtaining access token from \"%s\"." msgstr "پاسخ دریافتی به درخواست دریافت توکن دسترسی از \"%s\" معتبر نمی‌باشد." #: socialaccount/providers/oauth/client.py:128 #, python-format msgid "No request token saved for \"%s\"." msgstr "توکن درخواست برای \"%s\" ذخیره نشده است." #: socialaccount/providers/oauth/client.py:177 #, python-format msgid "No access token saved for \"%s\"." msgstr "توکن دسترسی به \"%s\" ذخیره نشده است." #: socialaccount/providers/oauth/client.py:197 #, python-format msgid "No access to private resources at \"%s\"." msgstr "عدم دسترسی به منابع خصوصی در \"%s\"." #: templates/account/account_inactive.html:5 #: templates/account/account_inactive.html:8 msgid "Account Inactive" msgstr "حساب کاربری غیرفعال" #: templates/account/account_inactive.html:10 msgid "This account is inactive." msgstr "این حساب کاربری غیرفعال است." #: templates/account/email.html:5 msgid "Account" msgstr "حساب کاربری" #: templates/account/email.html:8 msgid "E-mail Addresses" msgstr "آدرس‌های ایمیل" #: templates/account/email.html:10 msgid "The following e-mail addresses are associated with your account:" msgstr "این ایمیل آدرس‌هایی که در ادامه میبینید به حساب کاربری شما وصل هستند:" #: templates/account/email.html:24 msgid "Verified" msgstr "تایید شده" #: templates/account/email.html:26 msgid "Unverified" msgstr "تایید نشده" #: templates/account/email.html:28 msgid "Primary" msgstr "اصلی" #: templates/account/email.html:34 msgid "Make Primary" msgstr "تغییر وضعیت به ایمیل اصلی" #: templates/account/email.html:35 msgid "Re-send Verification" msgstr "ارسال دوباره تاییده ایمیل" #: templates/account/email.html:36 templates/socialaccount/connections.html:35 msgid "Remove" msgstr "حذف" #: templates/account/email.html:43 msgid "Warning:" msgstr "اخطار:" #: templates/account/email.html:43 msgid "" "You currently do not have any e-mail address set up. You should really add " "an e-mail address so you can receive notifications, reset your password, etc." msgstr "" "شما درحال حاضر هیچ ایمیل آدرسی در حساب کاربری خودتان ندارید شما حتما باید یک " "ایمیل آدرس در حساب کاربری خودتان داشته باشید تا بوسیله آن از رویدادها آگاه " "شده و یا برای تغییر رمز عبور و غیره از آن ستفاده کنید" #: templates/account/email.html:48 msgid "Add E-mail Address" msgstr "اضافه کردن آدرس ایمیل" #: templates/account/email.html:53 msgid "Add E-mail" msgstr "اضافه کردن ایمیل" #: templates/account/email.html:62 msgid "Do you really want to remove the selected e-mail address?" msgstr "آیا واقعا می‌خواهید ایمیل های انتخاب شده را حذف کنید؟" #: templates/account/email/email_confirmation_message.txt:1 #, fuzzy, python-format #| msgid "" #| "Hello from %(site_name)s!\n" #| "\n" #| "You're receiving this e-mail because user %(user_display)s at " #| "%(site_domain)s has given yours as an e-mail address to connect their " #| "account.\n" #| "\n" #| "To confirm this is correct, go to %(activate_url)s\n" msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because user %(user_display)s has given yours " "as an e-mail address to connect their account.\n" "\n" "To confirm this is correct, go to %(activate_url)s\n" msgstr "" "سلام، \n" "کاربر %(user_display)s در %(site_domain)s این ایمیل آدرس را به عنوان ایمیل " "آدرس خود انتخاب کرده است\n" "برای تایید درست بودن این مورد لطفا به لینک روبرو بروید %(activate_url)s\n" "‏\n" "‏%(site_name)s‏\n" #: templates/account/email/email_confirmation_message.txt:7 #, python-format msgid "" "Thank you from %(site_name)s!\n" "%(site_domain)s" msgstr "" #: templates/account/email/email_confirmation_subject.txt:3 #, fuzzy #| msgid "Confirm E-mail Address" msgid "Please Confirm Your E-mail Address" msgstr "ایمیل آدرس را تایید کنید" #: templates/account/email/password_reset_key_message.txt:1 #, fuzzy, python-format msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because you or someone else has requested a " "password for your user account.\n" "It can be safely ignored if you did not request a password reset. Click the " "link below to reset your password." msgstr "" "شما این ایمیل را دریافت می‌کنید بخاطر اینکه شخصی درخواست تغییر رمز عبور را در " "وب سایت %(site_domain)s داده است.\n" "برای امنیت بیشتر اگر شما درخواست تغییر رمز را ندادید می‌توانید این ایمیل را " "پاک کنید اما اگر شما این درخواست را داده‌اید می‌توانید روی لینک پایین کلیک " "کنید\n" "\n" "%(password_reset_url)s\n" "\n" "بخاطر اینکه ممکن است فراموش کرده باشید، نام کاربری شما %(username)s است.\n" "\n" "از شما برای استفاده از سایت ما متشکریم\n" #: templates/account/email/password_reset_key_message.txt:8 #, python-format msgid "In case you forgot, your username is %(username)s." msgstr "کلمه عبور شما %(username)s است." #: templates/account/email/password_reset_key_message.txt:10 #, python-format msgid "" "Thank you for using %(site_name)s!\n" "%(site_domain)s" msgstr "" "از اینکه از %(site_name)s استفاده کردید،‌از شما متشکریم.‏\n" "‏%(site_domain)s" #: templates/account/email/password_reset_key_subject.txt:3 msgid "Password Reset E-mail" msgstr "ایمیل درخواست راه اندازی دوباره رمز عبور" #: templates/account/email_confirm.html:6 #: templates/account/email_confirm.html:10 msgid "Confirm E-mail Address" msgstr "ایمیل آدرس را تایید کنید" #: templates/account/email_confirm.html:16 #, python-format msgid "" "Please confirm that %(email)s is an e-mail " "address for user %(user_display)s." msgstr "" "لطفا تایید کنید %(email)s که یک ایمیل آدرس " "برای کاربر %(user_display)s است." #: templates/account/email_confirm.html:20 msgid "Confirm" msgstr "تایید" #: templates/account/email_confirm.html:27 #, python-format msgid "" "This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request." msgstr "" "این پیوند برای تایید آدرس ایمیل منقضی شده است. لطفا درخواست یک پیوند جدید برای تایید ایمیل خودتان را بدهید." #: templates/account/login.html:6 templates/account/login.html:10 #: templates/account/login.html:43 msgid "Sign In" msgstr "ورود" #: templates/account/login.html:15 #, python-format msgid "" "Please sign in with one\n" "of your existing third party accounts. Or, sign " "up\n" "for a %(site_name)s account and sign in below:" msgstr "" "لطفا با یکی از\n" "حساب‌های کاربری خودتان در شبکه‌ها و سایت‌های دیگر وارد شوید یا ثبت نام کنید\n" "برای وب سایت %(site_name)s و در ادامه وارد سایت شوید" #: templates/account/login.html:25 msgid "or" msgstr "یا" #: templates/account/login.html:32 #, python-format msgid "" "If you have not created an account yet, then please\n" "sign up first." msgstr "" "اگر هنوز حساب کاربری ندارید می‌توانید ابتدا در سایت\n" "ثبت نام کنید." #: templates/account/login.html:42 msgid "Forgot Password?" msgstr "رمز عبور را فراموش کرده‌اید؟" #: templates/account/logout.html:5 templates/account/logout.html:8 #: templates/account/logout.html:17 msgid "Sign Out" msgstr "خروج" #: templates/account/logout.html:10 msgid "Are you sure you want to sign out?" msgstr "آیا مطمئن هستید که می‌خواهید از سیستم خارج شوید؟" #: templates/account/messages/cannot_delete_primary_email.txt:2 #, python-format msgid "You cannot remove your primary e-mail address (%(email)s)." msgstr "شما نمی‌توانید ایمیل اصلی خودتان را حذف کنید (%(email)s)." #: templates/account/messages/email_confirmation_sent.txt:2 #, python-format msgid "Confirmation e-mail sent to %(email)s." msgstr "تاییده اییمیل به آدرس %(email)sارسال شد." #: templates/account/messages/email_confirmed.txt:2 #, python-format msgid "You have confirmed %(email)s." msgstr "شما ایمیل آدرس %(email)s را تایید کردید." #: templates/account/messages/email_deleted.txt:2 #, python-format msgid "Removed e-mail address %(email)s." msgstr "ایمیل آدرس %(email)s حذف شد." #: templates/account/messages/logged_in.txt:4 #, python-format msgid "Successfully signed in as %(name)s." msgstr "با موفقیت با نام %(name)s وارد سیستم شدید." #: templates/account/messages/logged_out.txt:2 msgid "You have signed out." msgstr "شما از سیستم خارج شدید" #: templates/account/messages/password_changed.txt:2 msgid "Password successfully changed." msgstr "رمز عبور با موفقیت تغییر پیدا کرد." #: templates/account/messages/password_set.txt:2 msgid "Password successfully set." msgstr "رمز عبور با موفقیت انتخاب شد." #: templates/account/messages/primary_email_set.txt:2 msgid "Primary e-mail address set." msgstr "ایمیل اصلی انتخاب شد." #: templates/account/messages/unverified_primary_email.txt:2 msgid "Your primary e-mail address must be verified." msgstr "ایمیل اصلی شما حتما باید تایید شود." #: templates/account/password_change.html:5 #: templates/account/password_change.html:8 #: templates/account/password_change.html:13 #: templates/account/password_reset_from_key.html:4 #: templates/account/password_reset_from_key.html:7 #: templates/account/password_reset_from_key_done.html:4 #: templates/account/password_reset_from_key_done.html:7 msgid "Change Password" msgstr "تغییر رمز عبور" #: templates/account/password_reset.html:6 #: templates/account/password_reset.html:10 #: templates/account/password_reset_done.html:6 #: templates/account/password_reset_done.html:9 msgid "Password Reset" msgstr "دریافت رمز جدید" #: templates/account/password_reset.html:15 msgid "" "Forgotten your password? Enter your e-mail address below, and we'll send you " "an e-mail allowing you to reset it." msgstr "" "رمز عبور خودتان را فراموش کرده‌اید؟ ایمیل خودتان را وارد کنید تا قادر باشید " "که رمز جدیدی دریافت کنید" #: templates/account/password_reset.html:20 msgid "Reset My Password" msgstr "راه اندازی رمز عبور جدید" #: templates/account/password_reset.html:23 msgid "Please contact us if you have any trouble resetting your password." msgstr "اگر هرگونه مشکلی برای تغییر رمز عبور خودتون داشتید با ما تماس بگیرید." #: templates/account/password_reset_done.html:15 msgid "" "We have sent you an e-mail. Please contact us if you do not receive it " "within a few minutes." msgstr "" "ما برای شما یک ایمیل ارسال کردیم، لطفا اگر تا دقایقی دیگر آن را دریافت " "نکردید با ما تماس بگیرید.." #: templates/account/password_reset_from_key.html:7 msgid "Bad Token" msgstr "توکن نادرست" #: templates/account/password_reset_from_key.html:11 #, python-format msgid "" "The password reset link was invalid, possibly because it has already been " "used. Please request a new password reset." msgstr "" "پیوند دریافت رمز جدید کار نمی‌کند، بخاطر اینکه قبلا یکبار استفاده شده است " "لطفا درخواست جدیدی دهید a تا پیوند جدیدی " "برای دریافت رمز عبور برایتان ارسال شود." #: templates/account/password_reset_from_key.html:17 msgid "change password" msgstr "تغییر رمز عبور" #: templates/account/password_reset_from_key.html:20 #: templates/account/password_reset_from_key_done.html:8 msgid "Your password is now changed." msgstr "رمز عبور شما با موقیت تغییر پیدا کرد." #: templates/account/password_set.html:5 templates/account/password_set.html:8 #: templates/account/password_set.html:13 msgid "Set Password" msgstr "انتخاب رمز عبور" #: templates/account/signup.html:5 templates/socialaccount/signup.html:5 msgid "Signup" msgstr "قبت نام" #: templates/account/signup.html:8 templates/account/signup.html:18 #: templates/socialaccount/signup.html:8 templates/socialaccount/signup.html:19 msgid "Sign Up" msgstr "ثبت نام" #: templates/account/signup.html:10 #, python-format msgid "" "Already have an account? Then please sign in." msgstr "قبلا ثبت نام کرده‌اید؟ وارد شوید." #: templates/account/signup_closed.html:5 #: templates/account/signup_closed.html:8 msgid "Sign Up Closed" msgstr "ثبت نام بسته شده است" #: templates/account/signup_closed.html:10 msgid "We are sorry, but the sign up is currently closed." msgstr "ما متاسف هستیم اما قسمت ثبت نام درحال حاضر بسته است." #: templates/account/snippets/already_logged_in.html:5 msgid "Note" msgstr "توجه" #: templates/account/snippets/already_logged_in.html:5 #, python-format msgid "you are already logged in as %(user_display)s." msgstr "شما درحال حاضر با نام کاربری %(user_display)s وارد سیستم شده اید." #: templates/account/verification_sent.html:5 #: templates/account/verification_sent.html:8 #: templates/account/verified_email_required.html:5 #: templates/account/verified_email_required.html:8 msgid "Verify Your E-mail Address" msgstr "ایمیل آدرس خودتان را تکمیل فرمایید" #: templates/account/verification_sent.html:10 msgid "" "We have sent an e-mail to you for verification. Follow the link provided to " "finalize the signup process. Please contact us if you do not receive it " "within a few minutes." msgstr "" "ما یک ایمیل برای تایید شما ارسال کردیم. ایمیل داخل ایمیل را مطالعه کنید تا " "با مراحل تکمیل فرایند تایید شدن آشنا شوید. اگر این ایمیل را پس از چند دقیقه " "دریافت نکردید با ما تماس بگیرید." #: templates/account/verified_email_required.html:12 msgid "" "This part of the site requires us to verify that\n" "you are who you claim to be. For this purpose, we require that you\n" "verify ownership of your e-mail address. " msgstr "" "این قسمت از سایت ما نیاز به تایید دارد که\n" "هویت شما باید تایید شود، بهمین دلیل ما باید\n" "ما باید تایید کنیم که شما مالک ایمیل خود هستید." #: templates/account/verified_email_required.html:16 msgid "" "We have sent an e-mail to you for\n" "verification. Please click on the link inside this e-mail. Please\n" "contact us if you do not receive it within a few minutes." msgstr "" "ما یک ایمیل برای تایید شدن شما برایتان ارسال کردیم\n" "لطفا روی لینک داخل این ایمیل کلیک کنید. لطفا\n" "اگر پس از چند دقیقه این ایمیل را دریافت نکردید با ما تماس بگیرید." #: templates/account/verified_email_required.html:20 #, python-format msgid "" "Note: you can still change your e-" "mail address." msgstr "" "توجه: شما همچنان می‌توانید ایمیل " "آدرس خود راتغییر دهید." #: templates/openid/login.html:9 msgid "OpenID Sign In" msgstr "ورود از طریق OpenID" #: templates/socialaccount/authentication_error.html:5 #: templates/socialaccount/authentication_error.html:8 msgid "Social Network Login Failure" msgstr "خطا درهنگام واردن شدن شبکه‌های اجتماعی" #: templates/socialaccount/authentication_error.html:10 msgid "" "An error occurred while attempting to login via your social network account." msgstr "یک خطا هنگام ورود شما توسط حساب های کاربری شما رخ داده است." #: templates/socialaccount/connections.html:5 #: templates/socialaccount/connections.html:8 msgid "Account Connections" msgstr "حساب‌های متصل" #: templates/socialaccount/connections.html:11 msgid "" "You can sign in to your account using any of the following third party " "accounts:" msgstr "" "شما می‌توانید از طریق یکی از برنامه‌ها و وب‌سایت‌های زیر به حساب کاربری خودتان " "وارد شوید." #: templates/socialaccount/connections.html:43 msgid "" "You currently have no social network accounts connected to this account." msgstr "" "شما درحال حاضر هیچ ابزار و وب سایت شبکه‌ اجتماعی را به حساب کاربری خود وصل " "نکردید." #: templates/socialaccount/connections.html:46 msgid "Add a 3rd Party Account" msgstr "متصل کردن حساب‌های سایت‌های دیگر" #: templates/socialaccount/login_cancelled.html:5 #: templates/socialaccount/login_cancelled.html:9 msgid "Login Cancelled" msgstr "ورود لغو شد" #: templates/socialaccount/login_cancelled.html:13 #, python-format msgid "" "You decided to cancel logging in to our site using one of your existing " "accounts. If this was a mistake, please proceed to sign in." msgstr "" "شما تصمیم گرفتید تا ورود به سایت ما را با استفاده از یکی از حساب های کاربری " "خودتان لفو کنید.اگر این یک اشتباه قابل پیشنی نبود لطفا به ادرس روبرو بروید " "و وارد سیستم شوید." #: templates/socialaccount/messages/account_connected.txt:2 msgid "The social account has been connected." msgstr "حساب کاربری مجازی وصل شد." #: templates/socialaccount/messages/account_connected_other.txt:2 msgid "The social account is already connected to a different account." msgstr "حساب کاربری مجازی قبلا به حساب کاربری دیگری متصل شده است." #: templates/socialaccount/messages/account_disconnected.txt:2 msgid "The social account has been disconnected." msgstr "حساب کاربری مجازی شما قطع شد." #: templates/socialaccount/signup.html:10 #, python-format msgid "" "You are about to use your %(provider_name)s account to login to\n" "%(site_name)s. As a final step, please complete the following form:" msgstr "" "چند قدم مانده تا شما با نام %(provider_name)s وارد \n" "%(site_name)s. شوید. برای مراحل آخر لطفا در ادامه فرم‌های مورد نظر را تکمیل " "فرمایید." #~ msgid "The login and/or password you specified are not correct." #~ msgstr "نام کاربری یا رمز عبور صحیح نمی‌باشد." #~ msgid "Usernames can only contain letters, digits and @/./+/-/_." #~ msgstr "نام کاربری تنها می‌تواند شامل حروف ، اعداد و @/./+/-/_. باشد" #~ msgid "This username is already taken. Please choose another." #~ msgstr "این نام‌کاربری قبلا ثبت شده است. لطفا نام‌کاربری دیگر انتخاب کنید" #, fuzzy #~| msgid "Sign In" #~ msgid "Shopify Sign In" #~ msgstr "ورود" #~ msgid "" #~ "You have confirmed that %(email)s is an " #~ "e-mail address for user %(user_display)s." #~ msgstr "" #~ "شما تایید کردید که %(email)s یکآدرس " #~ "ایمیل برای کاربر %(user_display)s است." django-allauth-0.35.0/allauth/locale/lt/0000755000076500000240000000000013235133532020760 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/lt/LC_MESSAGES/0000755000076500000240000000000013235133532022545 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/lt/LC_MESSAGES/django.mo0000644000076500000240000003625313235132042024350 0ustar pennersrstaff00000000000000< P /Q 7 \ 6 -M {      I w1L" 1;KS&j9p&_28*9c  ' (IN]fw-"l'B"n ! &/7FM]#z2-A6A@x%R&x)?; #Ei?< *43h{2y\#P:UH)r0*E$p,-  ( 0 < K Y i |          !"!;!U!i! o!|!!!.!!Bh#L#f#C_$/$$$$$%%"7%FZ%%S&&z&&&& & &3'B':V' ''''''c(8(D*)Fo))))))/*.L*0{*** ***" +@,+"m+"+,+k+CL,,,?-l-1u-"---(- .'. >. J. U.b. y..%.'.4.(/AG/</6//:0"0!19;1?u1$11515&2\2333L3!;4 ]4%j4 4<44m5a!66]7:m77DR8869 N98\9/94994:N: b:m:v:::::: ::;&;-; F;R;W; `; j; u;;;;.;.;<9< N<[< _< j<3w<:aRErBdU% , N ?H`L 'CkvjV8cf&-XA5MY06S9/Q>[!O]7.p;"m|I^G<)PW@s{ Do4=K$wqexyg(ht#Fl1\~ 3niTJZ+u_b*}z2"oauth_token" (OAuth1) or access token (OAuth2)"oauth_token_secret" (OAuth1) or refresh token (OAuth2)Note: you can still change your e-mail address.A user is already registered with this e-mail address.API secret, client secret, or consumer secretAccountAccount ConnectionsAccount InactiveAccountsAdd E-mailAdd E-mail AddressAdd a 3rd Party AccountAlready have an account? Then please sign in.An account already exists with this e-mail address. Please sign in to that account first, then connect your %s account.An error occurred while attempting to login via your social network account.App ID, or consumer keyAre you sure you want to sign out?Bad TokenChange PasswordConfirmConfirm E-mail AddressConfirmation e-mail sent to %(email)s.Current PasswordDo you really want to remove the selected e-mail address?E-mailE-mail (optional)E-mail AddressesE-mail addressForgot Password?Forgotten your password? Enter your e-mail address below, and we'll send you an e-mail allowing you to reset it.If you have not created an account yet, then please sign up first.In case you forgot, your username is %(username)s.Invalid response while obtaining access token from "%s".Invalid response while obtaining request token from "%s".KeyLogin CancelledMake PrimaryNew PasswordNew Password (again)No access to private resources at "%s".No access token saved for "%s".No request token saved for "%s".NoteOpenID Sign InPasswordPassword (again)Password ResetPassword Reset E-mailPassword must be a minimum of {0} characters.Password successfully changed.Password successfully set.Please Confirm Your E-mail AddressPlease confirm that %(email)s is an e-mail address for user %(user_display)s.Please contact us if you have any trouble resetting your password.Please sign in with one of your existing third party accounts. Or, sign up for a %(site_name)s account and sign in below:Please type your current password.PrimaryPrimary e-mail address set.Re-send VerificationRemember MeRemoveRemoved e-mail address %(email)s.Reset My PasswordSet PasswordSign InSign OutSign UpSign Up ClosedSignupSocial AccountsSocial Network Login FailureSuccessfully signed in as %(name)s.Thank you for using %(site_name)s! %(site_domain)sThank you from %(site_name)s! %(site_domain)sThe e-mail address and/or password you specified are not correct.The e-mail address is not assigned to any user accountThe following e-mail addresses are associated with your account:The password reset link was invalid, possibly because it has already been used. Please request a new password reset.The password reset token was invalid.The social account has been connected.The social account has been disconnected.The social account is already connected to a different account.The username and/or password you specified are not correct.This account is currently inactive.This account is inactive.This e-mail address is already associated with another account.This e-mail address is already associated with this account.This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request.This part of the site requires us to verify that you are who you claim to be. For this purpose, we require that you verify ownership of your e-mail address. UnverifiedUsernameUsername can not be used. Please use other username.Username or e-mailVerifiedVerify Your E-mail AddressWarning:We are sorry, but the sign up is currently closed.We have sent an e-mail to you for verification. Please click on the link inside this e-mail. Please contact us if you do not receive it within a few minutes.We have sent an e-mail to you for verification. Follow the link provided to finalize the signup process. Please contact us if you do not receive it within a few minutes.We have sent you an e-mail. Please contact us if you do not receive it within a few minutes.You are about to use your %(provider_name)s account to login to %(site_name)s. As a final step, please complete the following form:You can sign in to your account using any of the following third party accounts:You cannot remove your primary e-mail address (%(email)s).You currently do not have any e-mail address set up. You should really add an e-mail address so you can receive notifications, reset your password, etc.You currently have no social network accounts connected to this account.You decided to cancel logging in to our site using one of your existing accounts. If this was a mistake, please proceed to sign in.You have confirmed %(email)s.You have signed out.You must type the same password each time.Your account has no password set up.Your account has no verified e-mail address.Your password is now changed.Your primary e-mail address must be verified.change passwordclient idcreateddate joinede-mail addressemail addressemail addressesemail confirmationemail confirmationsexpires atextra datafield labelLoginkeylast loginnameorprimaryprovidersecret keysentsocial accountsocial accountssocial applicationsocial application tokensocial application tokenssocial applicationstokentoken secretuiduserverifiedyou are already logged in as %(user_display)s.Project-Id-Version: PACKAGE VERSION Report-Msgid-Bugs-To: POT-Creation-Date: 2018-02-02 12:55-0600 PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE Last-Translator: FULL NAME Language-Team: LANGUAGE Language: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2); "oauth_token" (OAuth1) arba prieigos atpažinimo ženklas (OAuth2)"oauth_token_secret" (OAuth1) arba atnaujintas atpažinimo ženklas (OAuth2)Pastaba: vis dar galite pakeisti savo el. pašto adresą.Šiuo el. pašto adresu jau yra užsiregistravęs kitas naudotojas.API secret, client secret, arba consumer secretPaskyraPaskyros ryšiaiPaskyra neaktyviPaskyrosPridėti el. paštąPridėti el. pašto adresąPridėti trečios šalies paskyrąJau turite paskyrą? Prašome prisijungti.Paskyra su šiuo el. pašto adresu jau egzistuoja. Prašome pirmiausia prisijungti prie tos paskyros ir tada prijunkite %s paskyrą.Įvyko nenumatyta klaida bandant prisijungti per jūsų socialinio tinklo paskyrą.App ID arba consumer keyAr tikrai norite atsijungti?Klaidinga atpažinimo žymėKeisti slaptažodįPatvirtintiPatvirtinkite el. pašto adresąPatvirtinimo laiškas išsiųstas adresu %(email)s.Esamas slaptažodisAr tikrai norite ištrinti pasirinktą el. pašto adresą?El. paštasEl. paštas (neprivalomas)El. pašto adresaiEl. pašto adresasPamiršote slaptažodį?Pamiršote slaptažodį? Įveskite savo el. pašto adresą žemiau ir mes išsiūsime jums laišką, kurio pagalba galėsite pasikeisti slaptažodį.Jei dar nesusikūrėte paskyros, tuomet prašome pirmiausia susikurti.Primename, kad jūsų naudotojo vardas yra %(username)s.Klaidingas atsakymas gaunant prieigos atpažinimo ženklą iš "%s".Klaidingas atsakymas gaunant užklausos atpažinimo ženklą iš "%s".RaktasPrisijungimas atšauktasPadaryti pirminiuNaujas slaptažodisNaujas slaptažodis (pakartoti)Nėra prieigos prie privataus resurso iš "%s".Nėra prieigos atpažinimo žymės šiam "%s".Nėra užklausos atpažinimo žymės šiam "%s".PastabaOpenID prisijungimasSlaptažodisSlaptažodis (pakartoti)Slaptažodžio atstatymasSlaptažodžio keitimo el. paštasSlaptažodis turi būti sudarytas mažiausiai iš {0} simbolių.Slaptažodis sėkmingai pakeistas.Slaptažodis pakeistas sėkmingai.Prašome patvirtinti savo el. pašto adresąPrašome patvirtinti, kad %(email)s yra %(user_display)s el. pašto adresas.Prašome susisiekti su mumis jei negalite atstatyti slaptažodžio.Prašome prisijungti viena iš jūsų turimų trečios šalies paskyrų. Arba, susikurkite naują %(site_name)s paskyrą ir prisijunkite žemiau:Prašome įvesti esamą jūsų slaptažodį.PirminisPirminis el. pašto adresas pakeistas sėkmingai.Pakartotinai siųsti patvirtinimąPrisimink maneŠalinti%(email)s el. pašto adresas ištrintas.Atstatyti mano slaptažodįNustatyti slaptažodįPrisijungtiAtsijungtiRegistruotisRegistracija uždarytaRegistracijaSocialinės paskyrosSocialinio tinklo prisijungimo klaidaSėkmingai prisijungėte kaip %(name)s.Ačiū, kad naudojate %(site_name)s! %(site_domain)sAčiū nuo %(site_name)s %(site_domain)sPateiktas el. pašto adresas ir/arba slaptažodis yra neteisingi.El. pašto adresas nėra susietas su jokia naudotojo paskyraŠie el. pašto adresas yra susieti su jūsų paskyra:Slaptažodžio atstatymo nuoroda klaidinga, taip gali būti dėl to, kad nuoroda jau buvo kartą panaudota. Prašome pakartoti slaptažodžio atstatymą.Neteisingas slaptažodžio atstatymo atpažinimo ženklas.Socialinė paskyra buvo prijungta.Socialinė paskyra buvo atjungta.Socialinė paskyra jau yra prijungta prie kitos paskyros.Pateiktas naudotojo vardas ir/arba slaptažodis yra neteisingi.Šiuo metu ši paskyra yra neaktyvi.Ši paskyra neaktyvi.Šis el. pašto adresas jau susietas su kita paskyra.Šis el. pašto adresas jau susietas su šia paskyra.Šios el. pašto patvirtinimo nuorodos galiojimas baigėsi arba nuoroda yra klaidinga. Prašome pateikti naują el. pašto patvirtinimo užklausimą.Šioje svetainės vietoje privalome gauti iš jūsų patvirtinimą, kad jūs tikrai esate tas asmuo, kaip teigiate. Dėl šios priežasties prašome patvirtinti el. pašto adreso nuosavybę. NepatvirtintasNaudotojo vardasŠis naudotojo vardas negalimas. Prašome pasirinkti kitą naudotojo vardą.Naudotojo vardas arba el. paštasPatvirtintasPatvirtinkite savo el. pašto adresąĮspėjimas:Atsiprašome, tačiau registracija šiuo metu yra uždaryta.Išsiuntėme jums patvirtinimo laišką. Prašome sekite nuoroda pateiktą laiške. Susisiekite su mumis jei negausite laiško per kelias minutes.Išsiuntėme jums laišką patvirtinimui. Sekite laiške pateikta nuoroda, kad užbaigtumėte registraciją. Prašome susisiekti su mumis, jei laiško negavote per kelias minutes.Išsiuntėme jums laišką. Prašome susisiekti su mums jei per kelias minutes negausite laiško.Jūs beveik prisijungėte prie %(site_name)s naudodami %(provider_name)s paskyrą. Liko paskutinis žingsnis, užpildyti sekančią formą:Galite prisijungti prie savo paskyros naudodami vieną iš galimų trečios šalies paskyrų:Negalite ištrinti pirminio (%(email)s) el. pašto adreso.Šiuo metu jūs neturite nustatyto el. pašto adreso. Rekomenduojame pridėti el. pašto adresą, kad gautumėte pranešimus, galėtumėte atstatyti slaptažodį ir pan.Šiuo metu jūs neturite nei vienos prijungtos socialinės paskyros.Nusprendėte atšaukti prisijungimą naudojant vieną iš esamų paskyrų. Jei tai buvo klaida, prašome pakartoti prisijungimą.%(email)s patvirtintas.Atsijungėte.Turite įvesti tą patį slaptažodį kiekvieną kartą.Jūsų paskyra neturi nustatyto slaptažodžio.Jūsų paskyra neturi patvirtinto el. pašto adreso.Jūsų slaptažodis pakeistas.Pirminis el. pašto adresas turi būti patvirtintas.keisti slaptažodįkliento idsukurtasregistracijos datael. pašto adresasel. pašto adresasel. pašto adresaiel. pašto patvirtinimasel. pašto patvirtinimaigaliojimaspapildomi duomenysPrisijungimo vardasraktaspaskutinis prisijungimaspavadinimasarbapirministiekėjassecret keyišsiųstassocialinė paskyrasocialinės paskyrossocialinė programėlėsocialinės programėlės atpažinimo ženklassocialinės programėlės atpažinimo ženklaisocialinės programėlėsatpažinimo ženklastoken secretuidnaudotojaspatvirtintasjūs jau esate prisijungęs, kaip %(user_display)s.django-allauth-0.35.0/allauth/locale/lt/LC_MESSAGES/django.po0000644000076500000240000006401313235132040024344 0ustar pennersrstaff00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-02-02 12:55-0600\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n" "%100<10 || n%100>=20) ? 1 : 2);\n" #: account/adapter.py:45 msgid "Username can not be used. Please use other username." msgstr "" "Šis naudotojo vardas negalimas. Prašome pasirinkti kitą naudotojo vardą." #: account/adapter.py:49 msgid "Too many failed login attempts. Try again later." msgstr "" #: account/adapter.py:51 msgid "A user is already registered with this e-mail address." msgstr "Šiuo el. pašto adresu jau yra užsiregistravęs kitas naudotojas." #: account/adapter.py:288 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "Slaptažodis turi būti sudarytas mažiausiai iš {0} simbolių." #: account/apps.py:7 msgid "Accounts" msgstr "Paskyros" #: account/forms.py:61 account/forms.py:398 msgid "You must type the same password each time." msgstr "Turite įvesti tą patį slaptažodį kiekvieną kartą." #: account/forms.py:91 account/forms.py:365 account/forms.py:476 msgid "Password" msgstr "Slaptažodis" #: account/forms.py:92 msgid "Remember Me" msgstr "Prisimink mane" #: account/forms.py:98 msgid "This account is currently inactive." msgstr "Šiuo metu ši paskyra yra neaktyvi." #: account/forms.py:101 msgid "The e-mail address and/or password you specified are not correct." msgstr "Pateiktas el. pašto adresas ir/arba slaptažodis yra neteisingi." #: account/forms.py:104 msgid "The username and/or password you specified are not correct." msgstr "Pateiktas naudotojo vardas ir/arba slaptažodis yra neteisingi." #: account/forms.py:113 account/forms.py:268 account/forms.py:426 #: account/forms.py:495 msgid "E-mail address" msgstr "El. pašto adresas" #: account/forms.py:115 account/forms.py:301 account/forms.py:421 #: account/forms.py:490 msgid "E-mail" msgstr "El. paštas" #: account/forms.py:120 account/forms.py:123 account/forms.py:260 #: account/forms.py:264 msgid "Username" msgstr "Naudotojo vardas" #: account/forms.py:130 msgid "Username or e-mail" msgstr "Naudotojo vardas arba el. paštas" #: account/forms.py:133 msgctxt "field label" msgid "Login" msgstr "Prisijungimo vardas" #: account/forms.py:292 #, fuzzy #| msgid "E-mail (optional)" msgid "E-mail (again)" msgstr "El. paštas (neprivalomas)" #: account/forms.py:296 #, fuzzy #| msgid "email confirmation" msgid "E-mail address confirmation" msgstr "el. pašto patvirtinimas" #: account/forms.py:304 msgid "E-mail (optional)" msgstr "El. paštas (neprivalomas)" #: account/forms.py:345 #, fuzzy #| msgid "You must type the same password each time." msgid "You must type the same email each time." msgstr "Turite įvesti tą patį slaptažodį kiekvieną kartą." #: account/forms.py:368 account/forms.py:477 msgid "Password (again)" msgstr "Slaptažodis (pakartoti)" #: account/forms.py:432 msgid "This e-mail address is already associated with this account." msgstr "Šis el. pašto adresas jau susietas su šia paskyra." #: account/forms.py:434 msgid "This e-mail address is already associated with another account." msgstr "Šis el. pašto adresas jau susietas su kita paskyra." #: account/forms.py:456 msgid "Current Password" msgstr "Esamas slaptažodis" #: account/forms.py:457 account/forms.py:546 msgid "New Password" msgstr "Naujas slaptažodis" #: account/forms.py:458 account/forms.py:547 msgid "New Password (again)" msgstr "Naujas slaptažodis (pakartoti)" #: account/forms.py:466 msgid "Please type your current password." msgstr "Prašome įvesti esamą jūsų slaptažodį." #: account/forms.py:504 msgid "The e-mail address is not assigned to any user account" msgstr "El. pašto adresas nėra susietas su jokia naudotojo paskyra" #: account/forms.py:568 msgid "The password reset token was invalid." msgstr "Neteisingas slaptažodžio atstatymo atpažinimo ženklas." #: account/models.py:23 msgid "user" msgstr "naudotojas" #: account/models.py:27 account/models.py:81 msgid "e-mail address" msgstr "el. pašto adresas" #: account/models.py:28 msgid "verified" msgstr "patvirtintas" #: account/models.py:29 msgid "primary" msgstr "pirminis" #: account/models.py:34 msgid "email address" msgstr "el. pašto adresas" #: account/models.py:35 msgid "email addresses" msgstr "el. pašto adresai" #: account/models.py:83 msgid "created" msgstr "sukurtas" #: account/models.py:85 msgid "sent" msgstr "išsiųstas" #: account/models.py:86 socialaccount/models.py:55 msgid "key" msgstr "raktas" #: account/models.py:91 msgid "email confirmation" msgstr "el. pašto patvirtinimas" #: account/models.py:92 msgid "email confirmations" msgstr "el. pašto patvirtinimai" #: socialaccount/adapter.py:26 #, python-format msgid "" "An account already exists with this e-mail address. Please sign in to that " "account first, then connect your %s account." msgstr "" "Paskyra su šiuo el. pašto adresu jau egzistuoja. Prašome pirmiausia " "prisijungti prie tos paskyros ir tada prijunkite %s paskyrą." #: socialaccount/adapter.py:131 msgid "Your account has no password set up." msgstr "Jūsų paskyra neturi nustatyto slaptažodžio." #: socialaccount/adapter.py:138 msgid "Your account has no verified e-mail address." msgstr "Jūsų paskyra neturi patvirtinto el. pašto adreso." #: socialaccount/apps.py:7 msgid "Social Accounts" msgstr "Socialinės paskyros" #: socialaccount/models.py:43 socialaccount/models.py:77 msgid "provider" msgstr "tiekėjas" #: socialaccount/models.py:46 msgid "name" msgstr "pavadinimas" #: socialaccount/models.py:48 msgid "client id" msgstr "kliento id" #: socialaccount/models.py:50 msgid "App ID, or consumer key" msgstr "App ID arba consumer key" #: socialaccount/models.py:51 msgid "secret key" msgstr "secret key" #: socialaccount/models.py:53 msgid "API secret, client secret, or consumer secret" msgstr "API secret, client secret, arba consumer secret" #: socialaccount/models.py:58 msgid "Key" msgstr "Raktas" #: socialaccount/models.py:66 msgid "social application" msgstr "socialinė programėlė" #: socialaccount/models.py:67 msgid "social applications" msgstr "socialinės programėlės" #: socialaccount/models.py:96 msgid "uid" msgstr "uid" #: socialaccount/models.py:98 msgid "last login" msgstr "paskutinis prisijungimas" #: socialaccount/models.py:100 msgid "date joined" msgstr "registracijos data" #: socialaccount/models.py:102 msgid "extra data" msgstr "papildomi duomenys" #: socialaccount/models.py:106 msgid "social account" msgstr "socialinė paskyra" #: socialaccount/models.py:107 msgid "social accounts" msgstr "socialinės paskyros" #: socialaccount/models.py:133 msgid "token" msgstr "atpažinimo ženklas" #: socialaccount/models.py:135 msgid "\"oauth_token\" (OAuth1) or access token (OAuth2)" msgstr "\"oauth_token\" (OAuth1) arba prieigos atpažinimo ženklas (OAuth2)" #: socialaccount/models.py:138 msgid "token secret" msgstr "token secret" #: socialaccount/models.py:140 msgid "\"oauth_token_secret\" (OAuth1) or refresh token (OAuth2)" msgstr "" "\"oauth_token_secret\" (OAuth1) arba atnaujintas atpažinimo ženklas (OAuth2)" #: socialaccount/models.py:142 msgid "expires at" msgstr "galiojimas" #: socialaccount/models.py:146 msgid "social application token" msgstr "socialinės programėlės atpažinimo ženklas" #: socialaccount/models.py:147 msgid "social application tokens" msgstr "socialinės programėlės atpažinimo ženklai" #: socialaccount/providers/douban/views.py:36 msgid "Invalid profile data" msgstr "" #: socialaccount/providers/oauth/client.py:78 #, python-format msgid "Invalid response while obtaining request token from \"%s\"." msgstr "Klaidingas atsakymas gaunant užklausos atpažinimo ženklą iš \"%s\"." #: socialaccount/providers/oauth/client.py:109 #, python-format msgid "Invalid response while obtaining access token from \"%s\"." msgstr "Klaidingas atsakymas gaunant prieigos atpažinimo ženklą iš \"%s\"." #: socialaccount/providers/oauth/client.py:128 #, python-format msgid "No request token saved for \"%s\"." msgstr "Nėra užklausos atpažinimo žymės šiam \"%s\"." #: socialaccount/providers/oauth/client.py:177 #, python-format msgid "No access token saved for \"%s\"." msgstr "Nėra prieigos atpažinimo žymės šiam \"%s\"." #: socialaccount/providers/oauth/client.py:197 #, python-format msgid "No access to private resources at \"%s\"." msgstr "Nėra prieigos prie privataus resurso iš \"%s\"." #: templates/account/account_inactive.html:5 #: templates/account/account_inactive.html:8 msgid "Account Inactive" msgstr "Paskyra neaktyvi" #: templates/account/account_inactive.html:10 msgid "This account is inactive." msgstr "Ši paskyra neaktyvi." #: templates/account/email.html:5 msgid "Account" msgstr "Paskyra" #: templates/account/email.html:8 msgid "E-mail Addresses" msgstr "El. pašto adresai" #: templates/account/email.html:10 msgid "The following e-mail addresses are associated with your account:" msgstr "Šie el. pašto adresas yra susieti su jūsų paskyra:" #: templates/account/email.html:24 msgid "Verified" msgstr "Patvirtintas" #: templates/account/email.html:26 msgid "Unverified" msgstr "Nepatvirtintas" #: templates/account/email.html:28 msgid "Primary" msgstr "Pirminis" #: templates/account/email.html:34 msgid "Make Primary" msgstr "Padaryti pirminiu" #: templates/account/email.html:35 msgid "Re-send Verification" msgstr "Pakartotinai siųsti patvirtinimą" #: templates/account/email.html:36 templates/socialaccount/connections.html:35 msgid "Remove" msgstr "Šalinti" #: templates/account/email.html:43 msgid "Warning:" msgstr "Įspėjimas:" #: templates/account/email.html:43 msgid "" "You currently do not have any e-mail address set up. You should really add " "an e-mail address so you can receive notifications, reset your password, etc." msgstr "" "Šiuo metu jūs neturite nustatyto el. pašto adreso. Rekomenduojame pridėti " "el. pašto adresą, kad gautumėte pranešimus, galėtumėte atstatyti slaptažodį " "ir pan." #: templates/account/email.html:48 msgid "Add E-mail Address" msgstr "Pridėti el. pašto adresą" #: templates/account/email.html:53 msgid "Add E-mail" msgstr "Pridėti el. paštą" #: templates/account/email.html:62 msgid "Do you really want to remove the selected e-mail address?" msgstr "Ar tikrai norite ištrinti pasirinktą el. pašto adresą?" #: templates/account/email/email_confirmation_message.txt:1 #, fuzzy, python-format #| msgid "" #| "Hello from %(site_name)s!\n" #| "\n" #| "You're receiving this e-mail because user %(user_display)s at " #| "%(site_domain)s has given yours as an e-mail address to connect their " #| "account.\n" #| "\n" #| "To confirm this is correct, go to %(activate_url)s\n" msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because user %(user_display)s has given yours " "as an e-mail address to connect their account.\n" "\n" "To confirm this is correct, go to %(activate_url)s\n" msgstr "" "Su jumis sveikinasi %(site_name)s\n" "\n" "Jūs gavote šį laišką, kadangi naudotojas %(user_display)s iš %(site_domain)s " "prijungė šį el. pašto adresą prie savo paskyros.\n" "\n" "Tam, kad patvirtintumėte prijungimą sekite šia nuoroda: %(activate_url)s\n" #: templates/account/email/email_confirmation_message.txt:7 #, python-format msgid "" "Thank you from %(site_name)s!\n" "%(site_domain)s" msgstr "" "Ačiū nuo %(site_name)s\n" "%(site_domain)s" #: templates/account/email/email_confirmation_subject.txt:3 msgid "Please Confirm Your E-mail Address" msgstr "Prašome patvirtinti savo el. pašto adresą" #: templates/account/email/password_reset_key_message.txt:1 #, fuzzy, python-format #| msgid "" #| "Hello from %(site_name)s!\n" #| "\n" #| "You're receiving this e-mail because you or someone else has requested a " #| "password for your user account at %(site_domain)s.\n" #| "It can be safely ignored if you did not request a password reset. Click " #| "the link below to reset your password." msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because you or someone else has requested a " "password for your user account.\n" "It can be safely ignored if you did not request a password reset. Click the " "link below to reset your password." msgstr "" "Su jumis sveikinasi %(site_name)s\n" "\n" "Jūs gavote šį laišką, kadangi jūs arba kažkas kitas pateikė slaptažodžio " "keitimo užklausą paskyrai susietai su šiuo el. pašto adresu iš " "%(site_domain)s.\n" "Jei jūs neteikėte slaptažodžio keitimo užklausos, galite ignoruoti šį " "laišką. Kad pakeistumėte savo slaptažodį sekite žemiau esančia nuoroda." #: templates/account/email/password_reset_key_message.txt:8 #, python-format msgid "In case you forgot, your username is %(username)s." msgstr "Primename, kad jūsų naudotojo vardas yra %(username)s." #: templates/account/email/password_reset_key_message.txt:10 #, python-format msgid "" "Thank you for using %(site_name)s!\n" "%(site_domain)s" msgstr "" "Ačiū, kad naudojate %(site_name)s!\n" "%(site_domain)s" #: templates/account/email/password_reset_key_subject.txt:3 msgid "Password Reset E-mail" msgstr "Slaptažodžio keitimo el. paštas" #: templates/account/email_confirm.html:6 #: templates/account/email_confirm.html:10 msgid "Confirm E-mail Address" msgstr "Patvirtinkite el. pašto adresą" #: templates/account/email_confirm.html:16 #, python-format msgid "" "Please confirm that %(email)s is an e-mail " "address for user %(user_display)s." msgstr "" "Prašome patvirtinti, kad %(email)s yra " "%(user_display)s el. pašto adresas." #: templates/account/email_confirm.html:20 msgid "Confirm" msgstr "Patvirtinti" #: templates/account/email_confirm.html:27 #, python-format msgid "" "This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request." msgstr "" "Šios el. pašto patvirtinimo nuorodos galiojimas baigėsi arba nuoroda yra " "klaidinga. Prašome pateikti naują el. pašto " "patvirtinimo užklausimą." #: templates/account/login.html:6 templates/account/login.html:10 #: templates/account/login.html:43 msgid "Sign In" msgstr "Prisijungti" #: templates/account/login.html:15 #, python-format msgid "" "Please sign in with one\n" "of your existing third party accounts. Or, sign " "up\n" "for a %(site_name)s account and sign in below:" msgstr "" "Prašome prisijungti viena\n" "iš jūsų turimų trečios šalies paskyrų. Arba, susikurkite\n" "naują %(site_name)s paskyrą ir prisijunkite žemiau:" #: templates/account/login.html:25 msgid "or" msgstr "arba" #: templates/account/login.html:32 #, python-format msgid "" "If you have not created an account yet, then please\n" "sign up first." msgstr "" "Jei dar nesusikūrėte paskyros, tuomet prašome pirmiausia\n" "susikurti." #: templates/account/login.html:42 msgid "Forgot Password?" msgstr "Pamiršote slaptažodį?" #: templates/account/logout.html:5 templates/account/logout.html:8 #: templates/account/logout.html:17 msgid "Sign Out" msgstr "Atsijungti" #: templates/account/logout.html:10 msgid "Are you sure you want to sign out?" msgstr "Ar tikrai norite atsijungti?" #: templates/account/messages/cannot_delete_primary_email.txt:2 #, python-format msgid "You cannot remove your primary e-mail address (%(email)s)." msgstr "Negalite ištrinti pirminio (%(email)s) el. pašto adreso." #: templates/account/messages/email_confirmation_sent.txt:2 #, python-format msgid "Confirmation e-mail sent to %(email)s." msgstr "Patvirtinimo laiškas išsiųstas adresu %(email)s." #: templates/account/messages/email_confirmed.txt:2 #, python-format msgid "You have confirmed %(email)s." msgstr "%(email)s patvirtintas." #: templates/account/messages/email_deleted.txt:2 #, python-format msgid "Removed e-mail address %(email)s." msgstr "%(email)s el. pašto adresas ištrintas." #: templates/account/messages/logged_in.txt:4 #, python-format msgid "Successfully signed in as %(name)s." msgstr "Sėkmingai prisijungėte kaip %(name)s." #: templates/account/messages/logged_out.txt:2 msgid "You have signed out." msgstr "Atsijungėte." #: templates/account/messages/password_changed.txt:2 msgid "Password successfully changed." msgstr "Slaptažodis sėkmingai pakeistas." #: templates/account/messages/password_set.txt:2 msgid "Password successfully set." msgstr "Slaptažodis pakeistas sėkmingai." #: templates/account/messages/primary_email_set.txt:2 msgid "Primary e-mail address set." msgstr "Pirminis el. pašto adresas pakeistas sėkmingai." #: templates/account/messages/unverified_primary_email.txt:2 msgid "Your primary e-mail address must be verified." msgstr "Pirminis el. pašto adresas turi būti patvirtintas." #: templates/account/password_change.html:5 #: templates/account/password_change.html:8 #: templates/account/password_change.html:13 #: templates/account/password_reset_from_key.html:4 #: templates/account/password_reset_from_key.html:7 #: templates/account/password_reset_from_key_done.html:4 #: templates/account/password_reset_from_key_done.html:7 msgid "Change Password" msgstr "Keisti slaptažodį" #: templates/account/password_reset.html:6 #: templates/account/password_reset.html:10 #: templates/account/password_reset_done.html:6 #: templates/account/password_reset_done.html:9 msgid "Password Reset" msgstr "Slaptažodžio atstatymas" #: templates/account/password_reset.html:15 msgid "" "Forgotten your password? Enter your e-mail address below, and we'll send you " "an e-mail allowing you to reset it." msgstr "" "Pamiršote slaptažodį? Įveskite savo el. pašto adresą žemiau ir mes išsiūsime " "jums laišką, kurio pagalba galėsite pasikeisti slaptažodį." #: templates/account/password_reset.html:20 msgid "Reset My Password" msgstr "Atstatyti mano slaptažodį" #: templates/account/password_reset.html:23 msgid "Please contact us if you have any trouble resetting your password." msgstr "Prašome susisiekti su mumis jei negalite atstatyti slaptažodžio." #: templates/account/password_reset_done.html:15 msgid "" "We have sent you an e-mail. Please contact us if you do not receive it " "within a few minutes." msgstr "" "Išsiuntėme jums laišką. Prašome susisiekti su mums jei per kelias minutes " "negausite laiško." #: templates/account/password_reset_from_key.html:7 msgid "Bad Token" msgstr "Klaidinga atpažinimo žymė" #: templates/account/password_reset_from_key.html:11 #, python-format msgid "" "The password reset link was invalid, possibly because it has already been " "used. Please request a new password reset." msgstr "" "Slaptažodžio atstatymo nuoroda klaidinga, taip gali būti dėl to, kad nuoroda " "jau buvo kartą panaudota. Prašome pakartoti slaptažodžio atstatymą." #: templates/account/password_reset_from_key.html:17 msgid "change password" msgstr "keisti slaptažodį" #: templates/account/password_reset_from_key.html:20 #: templates/account/password_reset_from_key_done.html:8 msgid "Your password is now changed." msgstr "Jūsų slaptažodis pakeistas." #: templates/account/password_set.html:5 templates/account/password_set.html:8 #: templates/account/password_set.html:13 msgid "Set Password" msgstr "Nustatyti slaptažodį" #: templates/account/signup.html:5 templates/socialaccount/signup.html:5 msgid "Signup" msgstr "Registracija" #: templates/account/signup.html:8 templates/account/signup.html:18 #: templates/socialaccount/signup.html:8 templates/socialaccount/signup.html:19 msgid "Sign Up" msgstr "Registruotis" #: templates/account/signup.html:10 #, python-format msgid "" "Already have an account? Then please sign in." msgstr "Jau turite paskyrą? Prašome prisijungti." #: templates/account/signup_closed.html:5 #: templates/account/signup_closed.html:8 msgid "Sign Up Closed" msgstr "Registracija uždaryta" #: templates/account/signup_closed.html:10 msgid "We are sorry, but the sign up is currently closed." msgstr "Atsiprašome, tačiau registracija šiuo metu yra uždaryta." #: templates/account/snippets/already_logged_in.html:5 msgid "Note" msgstr "Pastaba" #: templates/account/snippets/already_logged_in.html:5 #, python-format msgid "you are already logged in as %(user_display)s." msgstr "jūs jau esate prisijungęs, kaip %(user_display)s." #: templates/account/verification_sent.html:5 #: templates/account/verification_sent.html:8 #: templates/account/verified_email_required.html:5 #: templates/account/verified_email_required.html:8 msgid "Verify Your E-mail Address" msgstr "Patvirtinkite savo el. pašto adresą" #: templates/account/verification_sent.html:10 msgid "" "We have sent an e-mail to you for verification. Follow the link provided to " "finalize the signup process. Please contact us if you do not receive it " "within a few minutes." msgstr "" "Išsiuntėme jums laišką patvirtinimui. Sekite laiške pateikta nuoroda, kad " "užbaigtumėte registraciją. Prašome susisiekti su mumis, jei laiško negavote " "per kelias minutes." #: templates/account/verified_email_required.html:12 msgid "" "This part of the site requires us to verify that\n" "you are who you claim to be. For this purpose, we require that you\n" "verify ownership of your e-mail address. " msgstr "" "Šioje svetainės vietoje privalome gauti iš jūsų patvirtinimą,\n" "kad jūs tikrai esate tas asmuo, kaip teigiate. Dėl šios priežasties\n" "prašome patvirtinti el. pašto adreso nuosavybę. " #: templates/account/verified_email_required.html:16 msgid "" "We have sent an e-mail to you for\n" "verification. Please click on the link inside this e-mail. Please\n" "contact us if you do not receive it within a few minutes." msgstr "" "Išsiuntėme jums patvirtinimo laišką.\n" "Prašome sekite nuoroda pateiktą laiške. Susisiekite su mumis\n" "jei negausite laiško per kelias minutes." #: templates/account/verified_email_required.html:20 #, python-format msgid "" "Note: you can still change your e-" "mail address." msgstr "" "Pastaba: vis dar galite pakeisti " "savo el. pašto adresą." #: templates/openid/login.html:9 msgid "OpenID Sign In" msgstr "OpenID prisijungimas" #: templates/socialaccount/authentication_error.html:5 #: templates/socialaccount/authentication_error.html:8 msgid "Social Network Login Failure" msgstr "Socialinio tinklo prisijungimo klaida" #: templates/socialaccount/authentication_error.html:10 msgid "" "An error occurred while attempting to login via your social network account." msgstr "" "Įvyko nenumatyta klaida bandant prisijungti per jūsų socialinio tinklo " "paskyrą." #: templates/socialaccount/connections.html:5 #: templates/socialaccount/connections.html:8 msgid "Account Connections" msgstr "Paskyros ryšiai" #: templates/socialaccount/connections.html:11 msgid "" "You can sign in to your account using any of the following third party " "accounts:" msgstr "" "Galite prisijungti prie savo paskyros naudodami vieną iš galimų trečios " "šalies paskyrų:" #: templates/socialaccount/connections.html:43 msgid "" "You currently have no social network accounts connected to this account." msgstr "Šiuo metu jūs neturite nei vienos prijungtos socialinės paskyros." #: templates/socialaccount/connections.html:46 msgid "Add a 3rd Party Account" msgstr "Pridėti trečios šalies paskyrą" #: templates/socialaccount/login_cancelled.html:5 #: templates/socialaccount/login_cancelled.html:9 msgid "Login Cancelled" msgstr "Prisijungimas atšauktas" #: templates/socialaccount/login_cancelled.html:13 #, python-format msgid "" "You decided to cancel logging in to our site using one of your existing " "accounts. If this was a mistake, please proceed to sign in." msgstr "" "Nusprendėte atšaukti prisijungimą naudojant vieną iš esamų paskyrų. Jei tai " "buvo klaida, prašome pakartoti prisijungimą." #: templates/socialaccount/messages/account_connected.txt:2 msgid "The social account has been connected." msgstr "Socialinė paskyra buvo prijungta." #: templates/socialaccount/messages/account_connected_other.txt:2 msgid "The social account is already connected to a different account." msgstr "Socialinė paskyra jau yra prijungta prie kitos paskyros." #: templates/socialaccount/messages/account_disconnected.txt:2 msgid "The social account has been disconnected." msgstr "Socialinė paskyra buvo atjungta." #: templates/socialaccount/signup.html:10 #, python-format msgid "" "You are about to use your %(provider_name)s account to login to\n" "%(site_name)s. As a final step, please complete the following form:" msgstr "" "Jūs beveik prisijungėte prie %(site_name)s naudodami %(provider_name)s\n" "paskyrą. Liko paskutinis žingsnis, užpildyti sekančią formą:" #~ msgid "The login and/or password you specified are not correct." #~ msgstr "Pateiktas prisijungimo vardas ir/arba slaptažodis yra neteisingi." #~ msgid "Usernames can only contain letters, digits and @/./+/-/_." #~ msgstr "Naudotojo vardui galima naudoti tik raides, skaičius ir @/./+/-/_." #~ msgid "This username is already taken. Please choose another." #~ msgstr "Šis naudotojo vardas jau užimtas. Prašome pasirinkti kitą." #, fuzzy #~| msgid "Sign In" #~ msgid "Shopify Sign In" #~ msgstr "Prisijungti" #~ msgid "" #~ "You have confirmed that %(email)s is an " #~ "e-mail address for user %(user_display)s." #~ msgstr "" #~ "Jūs patvirtinote, kad %(email)s yra " #~ "%(user_display)s naudotojo el. pašto adresas." django-allauth-0.35.0/allauth/locale/th/0000755000076500000240000000000013235133532020754 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/th/LC_MESSAGES/0000755000076500000240000000000013235133532022541 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/th/LC_MESSAGES/django.mo0000644000076500000240000004641713235132042024347 0ustar pennersrstaff00000000000000 \ 6. e m     I w L "    % &< c 9t      p _i2895os  '  /8IX-n"lBf"@ck !  /#L2p-A6@J%$&J)q?;#;?U<S 4:MVq2zK\RP:'bHD*$B,g- %8L^bgjr{.p4 { W!Bg!9!!!"12"d""#c$$-$-%!@%Ub%0%`%J&-Z&&&"&#&'z()) *?*0X*$*?*{*Fj+G++:,M,3f,*,H,b-?q-6-B-+..C_/E0 090<01*m11,1<1$ 2'.2V2r2922$2l 3Bv3^3:4vS4c4l.5`5`6f]7o7488iE9B9l9i_:>:g<-p===;U>>3>>s>wo?@B(CDakEEFdeG=H<I`EI`IfJTnJ]J-!KOKkK{KK*K*K'K L &L3L 8L$ELjLLLLVL+-S?rl[T&.nuV%L'O8/PCdoD:(J`i X 7 Rg_Ic<$zKx qs13] 4{\k>@hM;Ey!jGQN*ZHe5wv,)Fpf2 |Y=}0U#t~B9Wm6^baA"Note: you can still change your e-mail address.A user is already registered with this e-mail address.AccountAccount ConnectionsAccount InactiveAccountsAdd E-mailAdd E-mail AddressAdd a 3rd Party AccountAlready have an account? Then please sign in.An account already exists with this e-mail address. Please sign in to that account first, then connect your %s account.An error occurred while attempting to login via your social network account.Are you sure you want to sign out?Bad TokenChange PasswordConfirmConfirm E-mail AddressConfirmation e-mail sent to %(email)s.Current PasswordDo you really want to remove the selected e-mail address?E-mailE-mail (optional)E-mail AddressesE-mail addressForgot Password?Forgotten your password? Enter your e-mail address below, and we'll send you an e-mail allowing you to reset it.If you have not created an account yet, then please sign up first.In case you forgot, your username is %(username)s.Invalid response while obtaining access token from "%s".Invalid response while obtaining request token from "%s".KeyLogin CancelledMake PrimaryNew PasswordNew Password (again)No access to private resources at "%s".No access token saved for "%s".No request token saved for "%s".NoteOpenID Sign InPasswordPassword (again)Password ResetPassword Reset E-mailPassword must be a minimum of {0} characters.Password successfully changed.Password successfully set.Please Confirm Your E-mail AddressPlease confirm that %(email)s is an e-mail address for user %(user_display)s.Please contact us if you have any trouble resetting your password.Please sign in with one of your existing third party accounts. Or, sign up for a %(site_name)s account and sign in below:Please type your current password.PrimaryPrimary e-mail address set.Re-send VerificationRemember MeRemoveRemoved e-mail address %(email)s.Reset My PasswordSet PasswordSign InSign OutSign UpSign Up ClosedSignupSocial AccountsSocial Network Login FailureSuccessfully signed in as %(name)s.Thank you for using %(site_name)s! %(site_domain)sThank you from %(site_name)s! %(site_domain)sThe e-mail address and/or password you specified are not correct.The e-mail address is not assigned to any user accountThe following e-mail addresses are associated with your account:The password reset link was invalid, possibly because it has already been used. Please request a new password reset.The password reset token was invalid.The social account has been connected.The social account has been disconnected.The social account is already connected to a different account.The username and/or password you specified are not correct.This account is currently inactive.This account is inactive.This e-mail address is already associated with another account.This e-mail address is already associated with this account.This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request.This part of the site requires us to verify that you are who you claim to be. For this purpose, we require that you verify ownership of your e-mail address. UnverifiedUsernameUsername can not be used. Please use other username.Username or e-mailVerifiedVerify Your E-mail AddressWarning:We are sorry, but the sign up is currently closed.We have sent an e-mail to you for verification. Please click on the link inside this e-mail. Please contact us if you do not receive it within a few minutes.We have sent an e-mail to you for verification. Follow the link provided to finalize the signup process. Please contact us if you do not receive it within a few minutes.We have sent you an e-mail. Please contact us if you do not receive it within a few minutes.You are about to use your %(provider_name)s account to login to %(site_name)s. As a final step, please complete the following form:You can sign in to your account using any of the following third party accounts:You cannot remove your primary e-mail address (%(email)s).You currently do not have any e-mail address set up. You should really add an e-mail address so you can receive notifications, reset your password, etc.You currently have no social network accounts connected to this account.You decided to cancel logging in to our site using one of your existing accounts. If this was a mistake, please proceed to sign in.You have confirmed %(email)s.You have signed out.You must type the same password each time.Your account has no password set up.Your account has no verified e-mail address.Your password is now changed.Your primary e-mail address must be verified.change passwordcreatede-mail addressemail addressemail addressesemail confirmationemail confirmationsfield labelLoginkeynameorprimaryprovidersenttokenuserverifiedyou are already logged in as %(user_display)s.Project-Id-Version: django-allauth Report-Msgid-Bugs-To: POT-Creation-Date: 2018-02-02 12:55-0600 PO-Revision-Date: 2015-06-26 13:09+0700 Last-Translator: Nattaphoom Chaipreecha Language-Team: Thai Language: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; หมายเหตุ: คุณยังสามารถเปลี่ยนอีเมลของคุณได้ชื่อผู้ใช้ได้ถูกลงทะเบียนด้วยอีเมลนี้แล้วบัญชีการเชื่อมต่อบัญชีต่างๆบัญชีไม่มีการใช้งานบัญชีเพิ่มอีเมลเพิ่มอีเมลเพิ่ม บัญชีภายนอกมีบัญชีอยู่แล้ว? กรุณาลงชื่อเข้าใช้มีบัญชีที่ใช้อีเมลนี้แล้ว โปรดลงชื่อเข้าใช้ก่อนแล้วค่อยเชื่อมต่อกับบัญชี %s ของคุณมีปัญหาเกิดขึ้นในขณะที่คุณทำการลงชื่อเข้าใช้ด้วยบัญชีโซเชียลคุณแน่ใจหรือว่าต้องการจะลงชื่อออกToken เสียเปลี่ยนรหัสผ่านยืนยันยืนยันอีเมลอีเมลยืนยันได้ถูกส่งไปที่ %(email)sรหัสผ่านปัจจุบันคุณต้องการที่จะลบอีเมลนี้จริงหรออีเมลอีเมล (ไม่จำเป็น)อีเมลอีเมลลืมรหัสผ่าน?ลืมรหัสผ่านของคุณ? ใส่อีเมลของคุณข้างล่างนี้ ทางเราจะทำการส่งอีเมลที่ใช้ในการรีเซ็ทรหัสผ่านไปให้คุณถ้าหากคุณยังไม่มีบัญชี, กรุณา ลงทะเบียนก่อน.ในกรณีเผื่อคุณลืม ชื่อผู้ใช้ของคุณคือ %(username)sการตอบสนองผิดพลาดขณะที่กำลังได้รับ access token จาก "%s"การตอบสนองผิดพลาดขณะที่กำลังได้รับ request token จาก "%s"คีย์การลงชื่เข้าใช้ยกเลิกทำให้เป็นอันหลักรหัสผ่านใหม่รหัสผ่านใหม่ (อีกครั้ง)ไม่มีสิทธิ์การเข้าใช้ทรัพยากรส่วนตัว ที่ "%s"ไม่มีการบันทึก access token ของ "%s"ไม่มีการบันทึก request token ของ "%s"หมายเหตุลงชื่อเข้าใช้ด้วย OpenIDรหัสผ่านรหัสผ่าน (อีกครั้ง)รีเซ็ทรหัสผ่านอีเมลในการรีเซ็ทรหัสผ่านรหัสผ่านต้องมีอย่างน้อย {0} ตัวอักษรเปลี่ยนรหัสผ่านสำเร็จตั้งรหัสผ่านสำเร็จกรุณายืนยันอีเมลของคุณกรุณายืนยันว่า %(email)s เป็นอีเมลของชื่อผู้ใช้ %(user_display)s.กรุณาติดต่อเราหากคุณพบปัญหาในการรีเซ็ทรหัสผ่านกรุณาลงชื่อเข้าใช้ด้วยบัญชีภายนอกของคุณ หรือ Or, ลงทะเบียน สำหรับบัญชีของ %(site_name)s และลงชื่อเข้าใช้ด้านล่าง:โปรดใส่รหัสผ่านปัจจุบันหลักตั้งอีเมลหลักสำเร็จส่งการยืนยันอีกครั้งจดจำการเข้าใช้ลบลบอีเมล %(email)s แล้วรีเซ็ทรหัสผ่านของฉันตั้งรหัสผ่านลงชื่อเข้าใช้ลงชื่อออกลงทะเบียนการลงทะเบียนปิดอยู่ลงทะเบียนบัญชีโซเชียลลงชื่อเข้าใช้ด้วยระบบโซเชีลไม่สำเร็จ%(name)s ลงชื่อเข้าใช้สำเร็จขอบคุณที่ใช้บริการของ %(site_name)s! %(site_domain)sขอบคุณจาก %(site_name)s! %(site_domain)sอีเมลและ/หรือรหัสผ่านที่ระบุมาไม่ถูกต้องอีเมลนี้ไม่ได้เชื่อมกับบัญชีใดเลยอีเมลต่อไปนี้ได้เชื่อมกับบัญชีของคุณลิงค์ที่ใช้ในการรีเซ็ทรหัสผ่านไม่ถูกต้อง อาจเป็นไปได้ว่ามันได้ถูกใช้ไปแล้วกรุณาร้องขอ การรีเซ็ทรหัสผ่านใหม่token ที่ใช้รีเซ็ทรหัสผ่านไม่ถูกต้องบัญชีโซเชียลเชื่อมต่อเรียบร้อยแล้วบัญชีโซเชียลได้ถูกตัดการเชื่อมต่อแล้วบัญชีโซเชียลนี้ได้ถูกเชื่อมต่อกับบัญชีอื่นแล้วชื่อผู้ใช้และ/หรือรหัสผ่านที่ระบุมาไม่ถูกต้องบัญชีนี้อยู่ในสถานะที่ใช้งานไม่ได้่บัญชีนี้ไม่มีการใช้งานอีเมลนี้ได้ถูกเชื่อมกับบัญชีอื่นแล้วอีเมลนี้ได้ถูกเชื่อมกับบัญชีนี้แล้วลิงค์ที่ใช้ในการยืนยันอีเมลนี้ หมดอายุหรือมีข้อผิดพลาด กรุณาใช้อีเมล ติดต่อการร้องขอการยืนยันอีเมล.ส่วนนี้ของเว็บไซท์นี้ต้องการให้คุณยืนยันตัวตนของคุณก่อน ด้วยการนี้ เราขอให้คุณทำการยืนยันการเป็นเจ้าของของอีเมลของคุณก่อนยังไม่ได้ยืนยันชื่อผู้ใช้ไม่สามารถใช้ชื่อผู้ใช้นี้ได้ กรุณาใช้ชื่อผู้ใช้อื่นชื่อผู้ใช้ หรือ อีเมลยืนยันแล้วยืนยันอีเมลของคุณคำเตือน:เราขอโทษด้วย การลงทะเบียนได้ปิดชั่วคราวเราได้ส่งอีเมลให้คุณเพื่อ ทำการยืนยัน กรุณาคลิกลิงค์ที่อยู่ข้างในอีเมล กรุณาติดต่อเราหากคุณไม่ได้รับอีเมลภายในเวลาไม่กี่นาทีนี้เราได้ส่งอีเมลถึงคุณเพื่อให้คุณได้ทำการยืนยัน ใช้ลิงค์ที่อยู่ในอีเมลเพื่อทำการสิ้นสุดการลงทะเบียนกรุณาติดต่อเราหากคุณไม่ได้รับอีเมลภายในเวลาไม่กี่นาทีนี้เราได้ส่งอีเมลให้คุณแล้ว. กรุณาติดต่อเราหากคุณไม่ได้รับอีเมลภายในเวลาไม่กี่นาทีนี้คุณกำลังจะทำการใช้บัญชี %(provider_name)s ของคุณ ในการเข้าสู่ระบบของ %(site_name)s. ในขั้นตอนสุดท้าย กรุณากรอกฟอร์มข้างล่าง:คุณสามารถลงชื่อเข้าสู่ระบบด้วยบัญชีภายนอกเหล่านี้ได้:คุณไม่สามารถลบอีเมลของคุณได้ (%(email)s).คุณยังไม่มีอีเมลในระบบ คุณควรเพิ่มอีเมลเพื่อที่จะสามารถรับ การแจ้งเตือน รีเซ็ทรหัสผ่าน และอื่นๆคุณไม่มีบัญชีโซเชียลใดๆที่เชื่อมกับบัญชีนี้คุณตัดสินใจที่จะยกเลิกการลงชื่อเข้าใช้เว็บของเราด้วยหนึ่งในบัญชีของคุณถ้านี้เป็นความผิดพลาด กรุณาลงชื่อเข้าใช้คุณได้ทำการยืนยัน %(email)sคุณได้ออกจากระบบแล้วต้องพิมพ์รหัสผ่านเดิมซ้ำอีกครั้งบัญชีของคุณไม่ได้ตั้งรหัสผ่านไว้บัญชีของคุณไม่มีอีเมลที่ยืนยันแล้วรหัสผ่านของคุณได้เปลี่ยนแล้วอีเมลหลักของคุณต้องได้การยืนยันเปลี่ยนรหัสผ่านสร้างแล้วอีเมลอีเมลอีเมลการยืนยันอีเมลการยืนยันอีเมลลงชื่อเข้าใช้คีย์ชื่อsinvหลักผู้ให้บริการส่งแล้วtokenผู้ใช้ยืนยันแล้วคุณได้ลงชื่อเข้าใช้เป็น %(user_display)sdjango-allauth-0.35.0/allauth/locale/th/LC_MESSAGES/django.po0000644000076500000240000007753113235132040024351 0ustar pennersrstaff00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # Nattaphoom Chaipreecha, 2015 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: django-allauth\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-02-02 12:55-0600\n" "PO-Revision-Date: 2015-06-26 13:09+0700\n" "Last-Translator: Nattaphoom Chaipreecha \n" "Language-Team: Thai \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" #: account/adapter.py:45 msgid "Username can not be used. Please use other username." msgstr "ไม่สามารถใช้ชื่อผู้ใช้นี้ได้ กรุณาใช้ชื่อผู้ใช้อื่น" #: account/adapter.py:49 msgid "Too many failed login attempts. Try again later." msgstr "" #: account/adapter.py:51 msgid "A user is already registered with this e-mail address." msgstr "ชื่อผู้ใช้ได้ถูกลงทะเบียนด้วยอีเมลนี้แล้ว" #: account/adapter.py:288 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "รหัสผ่านต้องมีอย่างน้อย {0} ตัวอักษร" #: account/apps.py:7 msgid "Accounts" msgstr "บัญชี" #: account/forms.py:61 account/forms.py:398 msgid "You must type the same password each time." msgstr "ต้องพิมพ์รหัสผ่านเดิมซ้ำอีกครั้ง" #: account/forms.py:91 account/forms.py:365 account/forms.py:476 msgid "Password" msgstr "รหัสผ่าน" #: account/forms.py:92 msgid "Remember Me" msgstr "จดจำการเข้าใช้" #: account/forms.py:98 msgid "This account is currently inactive." msgstr "บัญชีนี้อยู่ในสถานะที่ใช้งานไม่ได้่" #: account/forms.py:101 msgid "The e-mail address and/or password you specified are not correct." msgstr "อีเมลและ/หรือรหัสผ่านที่ระบุมาไม่ถูกต้อง" #: account/forms.py:104 msgid "The username and/or password you specified are not correct." msgstr "ชื่อผู้ใช้และ/หรือรหัสผ่านที่ระบุมาไม่ถูกต้อง" #: account/forms.py:113 account/forms.py:268 account/forms.py:426 #: account/forms.py:495 msgid "E-mail address" msgstr "อีเมล" #: account/forms.py:115 account/forms.py:301 account/forms.py:421 #: account/forms.py:490 msgid "E-mail" msgstr "อีเมล" #: account/forms.py:120 account/forms.py:123 account/forms.py:260 #: account/forms.py:264 msgid "Username" msgstr "ชื่อผู้ใช้" #: account/forms.py:130 msgid "Username or e-mail" msgstr "ชื่อผู้ใช้ หรือ อีเมล" #: account/forms.py:133 msgctxt "field label" msgid "Login" msgstr "ลงชื่อเข้าใช้" #: account/forms.py:292 #, fuzzy #| msgid "E-mail (optional)" msgid "E-mail (again)" msgstr "อีเมล (ไม่จำเป็น)" #: account/forms.py:296 #, fuzzy #| msgid "email confirmation" msgid "E-mail address confirmation" msgstr "การยืนยันอีเมล" #: account/forms.py:304 msgid "E-mail (optional)" msgstr "อีเมล (ไม่จำเป็น)" #: account/forms.py:345 #, fuzzy #| msgid "You must type the same password each time." msgid "You must type the same email each time." msgstr "ต้องพิมพ์รหัสผ่านเดิมซ้ำอีกครั้ง" #: account/forms.py:368 account/forms.py:477 msgid "Password (again)" msgstr "รหัสผ่าน (อีกครั้ง)" #: account/forms.py:432 msgid "This e-mail address is already associated with this account." msgstr "อีเมลนี้ได้ถูกเชื่อมกับบัญชีนี้แล้ว" #: account/forms.py:434 msgid "This e-mail address is already associated with another account." msgstr "อีเมลนี้ได้ถูกเชื่อมกับบัญชีอื่นแล้ว" #: account/forms.py:456 msgid "Current Password" msgstr "รหัสผ่านปัจจุบัน" #: account/forms.py:457 account/forms.py:546 msgid "New Password" msgstr "รหัสผ่านใหม่" #: account/forms.py:458 account/forms.py:547 msgid "New Password (again)" msgstr "รหัสผ่านใหม่ (อีกครั้ง)" #: account/forms.py:466 msgid "Please type your current password." msgstr "โปรดใส่รหัสผ่านปัจจุบัน" #: account/forms.py:504 msgid "The e-mail address is not assigned to any user account" msgstr "อีเมลนี้ไม่ได้เชื่อมกับบัญชีใดเลย" #: account/forms.py:568 msgid "The password reset token was invalid." msgstr "token ที่ใช้รีเซ็ทรหัสผ่านไม่ถูกต้อง" #: account/models.py:23 msgid "user" msgstr "ผู้ใช้" #: account/models.py:27 account/models.py:81 msgid "e-mail address" msgstr "อีเมล" #: account/models.py:28 msgid "verified" msgstr "ยืนยันแล้ว" #: account/models.py:29 msgid "primary" msgstr "หลัก" #: account/models.py:34 msgid "email address" msgstr "อีเมล" #: account/models.py:35 msgid "email addresses" msgstr "อีเมล" #: account/models.py:83 msgid "created" msgstr "สร้างแล้ว" #: account/models.py:85 msgid "sent" msgstr "ส่งแล้ว" #: account/models.py:86 socialaccount/models.py:55 msgid "key" msgstr "คีย์" #: account/models.py:91 msgid "email confirmation" msgstr "การยืนยันอีเมล" #: account/models.py:92 msgid "email confirmations" msgstr "การยืนยันอีเมล" #: socialaccount/adapter.py:26 #, python-format msgid "" "An account already exists with this e-mail address. Please sign in to that " "account first, then connect your %s account." msgstr "มีบัญชีที่ใช้อีเมลนี้แล้ว โปรดลงชื่อเข้าใช้ก่อนแล้วค่อยเชื่อมต่อกับบัญชี %s ของคุณ" #: socialaccount/adapter.py:131 msgid "Your account has no password set up." msgstr "บัญชีของคุณไม่ได้ตั้งรหัสผ่านไว้" #: socialaccount/adapter.py:138 msgid "Your account has no verified e-mail address." msgstr "บัญชีของคุณไม่มีอีเมลที่ยืนยันแล้ว" #: socialaccount/apps.py:7 msgid "Social Accounts" msgstr "บัญชีโซเชียล" #: socialaccount/models.py:43 socialaccount/models.py:77 msgid "provider" msgstr "ผู้ให้บริการ" #: socialaccount/models.py:46 msgid "name" msgstr "ชื่อ" #: socialaccount/models.py:48 msgid "client id" msgstr "" #: socialaccount/models.py:50 msgid "App ID, or consumer key" msgstr "" #: socialaccount/models.py:51 msgid "secret key" msgstr "" #: socialaccount/models.py:53 msgid "API secret, client secret, or consumer secret" msgstr "" #: socialaccount/models.py:58 msgid "Key" msgstr "คีย์" #: socialaccount/models.py:66 msgid "social application" msgstr "" #: socialaccount/models.py:67 msgid "social applications" msgstr "" #: socialaccount/models.py:96 msgid "uid" msgstr "" #: socialaccount/models.py:98 msgid "last login" msgstr "" #: socialaccount/models.py:100 msgid "date joined" msgstr "" #: socialaccount/models.py:102 msgid "extra data" msgstr "" #: socialaccount/models.py:106 msgid "social account" msgstr "" #: socialaccount/models.py:107 msgid "social accounts" msgstr "" #: socialaccount/models.py:133 msgid "token" msgstr "token" #: socialaccount/models.py:135 msgid "\"oauth_token\" (OAuth1) or access token (OAuth2)" msgstr "" #: socialaccount/models.py:138 msgid "token secret" msgstr "" #: socialaccount/models.py:140 msgid "\"oauth_token_secret\" (OAuth1) or refresh token (OAuth2)" msgstr "" #: socialaccount/models.py:142 msgid "expires at" msgstr "" #: socialaccount/models.py:146 msgid "social application token" msgstr "" #: socialaccount/models.py:147 msgid "social application tokens" msgstr "" #: socialaccount/providers/douban/views.py:36 msgid "Invalid profile data" msgstr "" #: socialaccount/providers/oauth/client.py:78 #, python-format msgid "Invalid response while obtaining request token from \"%s\"." msgstr "การตอบสนองผิดพลาดขณะที่กำลังได้รับ request token จาก \"%s\"" #: socialaccount/providers/oauth/client.py:109 #, python-format msgid "Invalid response while obtaining access token from \"%s\"." msgstr "การตอบสนองผิดพลาดขณะที่กำลังได้รับ access token จาก \"%s\"" #: socialaccount/providers/oauth/client.py:128 #, python-format msgid "No request token saved for \"%s\"." msgstr "ไม่มีการบันทึก request token ของ \"%s\"" #: socialaccount/providers/oauth/client.py:177 #, python-format msgid "No access token saved for \"%s\"." msgstr "ไม่มีการบันทึก access token ของ \"%s\"" #: socialaccount/providers/oauth/client.py:197 #, python-format msgid "No access to private resources at \"%s\"." msgstr "ไม่มีสิทธิ์การเข้าใช้ทรัพยากรส่วนตัว ที่ \"%s\"" #: templates/account/account_inactive.html:5 #: templates/account/account_inactive.html:8 msgid "Account Inactive" msgstr "บัญชีไม่มีการใช้งาน" #: templates/account/account_inactive.html:10 msgid "This account is inactive." msgstr "บัญชีนี้ไม่มีการใช้งาน" #: templates/account/email.html:5 msgid "Account" msgstr "บัญชี" #: templates/account/email.html:8 msgid "E-mail Addresses" msgstr "อีเมล" #: templates/account/email.html:10 msgid "The following e-mail addresses are associated with your account:" msgstr "อีเมลต่อไปนี้ได้เชื่อมกับบัญชีของคุณ" #: templates/account/email.html:24 msgid "Verified" msgstr "ยืนยันแล้ว" #: templates/account/email.html:26 msgid "Unverified" msgstr "ยังไม่ได้ยืนยัน" #: templates/account/email.html:28 msgid "Primary" msgstr "หลัก" #: templates/account/email.html:34 msgid "Make Primary" msgstr "ทำให้เป็นอันหลัก" #: templates/account/email.html:35 msgid "Re-send Verification" msgstr "ส่งการยืนยันอีกครั้ง" #: templates/account/email.html:36 templates/socialaccount/connections.html:35 msgid "Remove" msgstr "ลบ" #: templates/account/email.html:43 msgid "Warning:" msgstr "คำเตือน:" #: templates/account/email.html:43 msgid "" "You currently do not have any e-mail address set up. You should really add " "an e-mail address so you can receive notifications, reset your password, etc." msgstr "" "คุณยังไม่มีอีเมลในระบบ คุณควรเพิ่มอีเมลเพื่อที่จะสามารถรับ การแจ้งเตือน รีเซ็ทรหัสผ่าน และอื่นๆ" #: templates/account/email.html:48 msgid "Add E-mail Address" msgstr "เพิ่มอีเมล" #: templates/account/email.html:53 msgid "Add E-mail" msgstr "เพิ่มอีเมล" #: templates/account/email.html:62 msgid "Do you really want to remove the selected e-mail address?" msgstr "คุณต้องการที่จะลบอีเมลนี้จริงหรอ" #: templates/account/email/email_confirmation_message.txt:1 #, fuzzy, python-format #| msgid "" #| "Hello from %(site_name)s!\n" #| "\n" #| "You're receiving this e-mail because user %(user_display)s at " #| "%(site_domain)s has given yours as an e-mail address to connect their " #| "account.\n" #| "\n" #| "To confirm this is correct, go to %(activate_url)s\n" msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because user %(user_display)s has given yours " "as an e-mail address to connect their account.\n" "\n" "To confirm this is correct, go to %(activate_url)s\n" msgstr "" "สวัสดีจาก %(site_name)s!\n" "\n" "คุณได้รับอีเมลนี้เพราะว่า ผู้ใช้ %(user_display)s จาก%(site_domain)s " "ได้ใช้อีเมลนี้ในการเชื่อมต่อกับบัญชี\n" "\n" "เพื่อยืนยันว่าการลงทะเบียนนี้ถูกต้อง ไปที่ %(activate_url)s\n" #: templates/account/email/email_confirmation_message.txt:7 #, python-format msgid "" "Thank you from %(site_name)s!\n" "%(site_domain)s" msgstr "" "ขอบคุณจาก %(site_name)s!\n" "%(site_domain)s" #: templates/account/email/email_confirmation_subject.txt:3 msgid "Please Confirm Your E-mail Address" msgstr "กรุณายืนยันอีเมลของคุณ" #: templates/account/email/password_reset_key_message.txt:1 #, fuzzy, python-format #| msgid "" #| "Hello from %(site_name)s!\n" #| "\n" #| "You're receiving this e-mail because you or someone else has requested a " #| "password for your user account at %(site_domain)s.\n" #| "It can be safely ignored if you did not request a password reset. Click " #| "the link below to reset your password." msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because you or someone else has requested a " "password for your user account.\n" "It can be safely ignored if you did not request a password reset. Click the " "link below to reset your password." msgstr "" "สวัสดีจาก %(site_name)s!\n" "\n" "You're receiving this e-mail because you or someone else has requested a " "คุณได้รับอีเมลนี้เพราะว่า คุณหรือใครบางคนได้ทำการร้องขอรหัสผ่านของบัญชีนี้ที่ %(site_domain)s.\n" "It can be safely ignored if you did not request a password reset. Click the " "คุณสามารถมองข้ามและลบอีเมลนี้ทิ้งได้เลยหากคุณไม่ได้ทำการร้องขอการรีเซ็ทรหัสผ่านคลิกที่ลิงค์ข้างล่างนี้เพื่อรีเซ็ทรหัสผ่านของคุณ" #: templates/account/email/password_reset_key_message.txt:8 #, python-format msgid "In case you forgot, your username is %(username)s." msgstr "ในกรณีเผื่อคุณลืม ชื่อผู้ใช้ของคุณคือ %(username)s" #: templates/account/email/password_reset_key_message.txt:10 #, python-format msgid "" "Thank you for using %(site_name)s!\n" "%(site_domain)s" msgstr "" "ขอบคุณที่ใช้บริการของ %(site_name)s!\n" "%(site_domain)s" #: templates/account/email/password_reset_key_subject.txt:3 msgid "Password Reset E-mail" msgstr "อีเมลในการรีเซ็ทรหัสผ่าน" #: templates/account/email_confirm.html:6 #: templates/account/email_confirm.html:10 msgid "Confirm E-mail Address" msgstr "ยืนยันอีเมล" #: templates/account/email_confirm.html:16 #, python-format msgid "" "Please confirm that %(email)s is an e-mail " "address for user %(user_display)s." msgstr "" "กรุณายืนยันว่า %(email)s เป็นอีเมลของชื่อผู้ใช้ " "%(user_display)s." #: templates/account/email_confirm.html:20 msgid "Confirm" msgstr "ยืนยัน" #: templates/account/email_confirm.html:27 #, python-format msgid "" "This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request." msgstr "" "ลิงค์ที่ใช้ในการยืนยันอีเมลนี้ หมดอายุหรือมีข้อผิดพลาด กรุณาใช้อีเมล ติดต่อการร้องขอการยืนยันอีเมล." #: templates/account/login.html:6 templates/account/login.html:10 #: templates/account/login.html:43 msgid "Sign In" msgstr "ลงชื่อเข้าใช้" #: templates/account/login.html:15 #, python-format msgid "" "Please sign in with one\n" "of your existing third party accounts. Or, sign " "up\n" "for a %(site_name)s account and sign in below:" msgstr "" "กรุณาลงชื่อเข้าใช้ด้วยบัญชีภายนอกของคุณ\n" "หรือ Or, ลงทะเบียน \n" "สำหรับบัญชีของ %(site_name)s และลงชื่อเข้าใช้ด้านล่าง:" #: templates/account/login.html:25 msgid "or" msgstr "sinv" #: templates/account/login.html:32 #, python-format msgid "" "If you have not created an account yet, then please\n" "sign up first." msgstr "" "ถ้าหากคุณยังไม่มีบัญชี, กรุณา\n" "ลงทะเบียนก่อน." #: templates/account/login.html:42 msgid "Forgot Password?" msgstr "ลืมรหัสผ่าน?" #: templates/account/logout.html:5 templates/account/logout.html:8 #: templates/account/logout.html:17 msgid "Sign Out" msgstr "ลงชื่อออก" #: templates/account/logout.html:10 msgid "Are you sure you want to sign out?" msgstr "คุณแน่ใจหรือว่าต้องการจะลงชื่อออก" #: templates/account/messages/cannot_delete_primary_email.txt:2 #, python-format msgid "You cannot remove your primary e-mail address (%(email)s)." msgstr "คุณไม่สามารถลบอีเมลของคุณได้ (%(email)s)." #: templates/account/messages/email_confirmation_sent.txt:2 #, python-format msgid "Confirmation e-mail sent to %(email)s." msgstr "อีเมลยืนยันได้ถูกส่งไปที่ %(email)s" #: templates/account/messages/email_confirmed.txt:2 #, python-format msgid "You have confirmed %(email)s." msgstr "คุณได้ทำการยืนยัน %(email)s" #: templates/account/messages/email_deleted.txt:2 #, python-format msgid "Removed e-mail address %(email)s." msgstr "ลบอีเมล %(email)s แล้ว" #: templates/account/messages/logged_in.txt:4 #, python-format msgid "Successfully signed in as %(name)s." msgstr "%(name)s ลงชื่อเข้าใช้สำเร็จ" #: templates/account/messages/logged_out.txt:2 msgid "You have signed out." msgstr "คุณได้ออกจากระบบแล้ว" #: templates/account/messages/password_changed.txt:2 msgid "Password successfully changed." msgstr "เปลี่ยนรหัสผ่านสำเร็จ" #: templates/account/messages/password_set.txt:2 msgid "Password successfully set." msgstr "ตั้งรหัสผ่านสำเร็จ" #: templates/account/messages/primary_email_set.txt:2 msgid "Primary e-mail address set." msgstr "ตั้งอีเมลหลักสำเร็จ" #: templates/account/messages/unverified_primary_email.txt:2 msgid "Your primary e-mail address must be verified." msgstr "อีเมลหลักของคุณต้องได้การยืนยัน" #: templates/account/password_change.html:5 #: templates/account/password_change.html:8 #: templates/account/password_change.html:13 #: templates/account/password_reset_from_key.html:4 #: templates/account/password_reset_from_key.html:7 #: templates/account/password_reset_from_key_done.html:4 #: templates/account/password_reset_from_key_done.html:7 msgid "Change Password" msgstr "เปลี่ยนรหัสผ่าน" #: templates/account/password_reset.html:6 #: templates/account/password_reset.html:10 #: templates/account/password_reset_done.html:6 #: templates/account/password_reset_done.html:9 msgid "Password Reset" msgstr "รีเซ็ทรหัสผ่าน" #: templates/account/password_reset.html:15 msgid "" "Forgotten your password? Enter your e-mail address below, and we'll send you " "an e-mail allowing you to reset it." msgstr "" "ลืมรหัสผ่านของคุณ? ใส่อีเมลของคุณข้างล่างนี้ ทางเราจะทำการส่งอีเมลที่ใช้ในการรีเซ็ทรหัสผ่านไปให้คุณ" #: templates/account/password_reset.html:20 msgid "Reset My Password" msgstr "รีเซ็ทรหัสผ่านของฉัน" #: templates/account/password_reset.html:23 msgid "Please contact us if you have any trouble resetting your password." msgstr "กรุณาติดต่อเราหากคุณพบปัญหาในการรีเซ็ทรหัสผ่าน" #: templates/account/password_reset_done.html:15 msgid "" "We have sent you an e-mail. Please contact us if you do not receive it " "within a few minutes." msgstr "เราได้ส่งอีเมลให้คุณแล้ว. กรุณาติดต่อเราหากคุณไม่ได้รับอีเมลภายในเวลาไม่กี่นาทีนี้" #: templates/account/password_reset_from_key.html:7 msgid "Bad Token" msgstr "Token เสีย" #: templates/account/password_reset_from_key.html:11 #, python-format msgid "" "The password reset link was invalid, possibly because it has already been " "used. Please request a new password reset." msgstr "" "ลิงค์ที่ใช้ในการรีเซ็ทรหัสผ่านไม่ถูกต้อง อาจเป็นไปได้ว่ามันได้ถูกใช้ไปแล้วกรุณาร้องขอ การรีเซ็ทรหัสผ่านใหม่" #: templates/account/password_reset_from_key.html:17 msgid "change password" msgstr "เปลี่ยนรหัสผ่าน" #: templates/account/password_reset_from_key.html:20 #: templates/account/password_reset_from_key_done.html:8 msgid "Your password is now changed." msgstr "รหัสผ่านของคุณได้เปลี่ยนแล้ว" #: templates/account/password_set.html:5 templates/account/password_set.html:8 #: templates/account/password_set.html:13 msgid "Set Password" msgstr "ตั้งรหัสผ่าน" #: templates/account/signup.html:5 templates/socialaccount/signup.html:5 msgid "Signup" msgstr "ลงทะเบียน" #: templates/account/signup.html:8 templates/account/signup.html:18 #: templates/socialaccount/signup.html:8 templates/socialaccount/signup.html:19 msgid "Sign Up" msgstr "ลงทะเบียน" #: templates/account/signup.html:10 #, python-format msgid "" "Already have an account? Then please sign in." msgstr "มีบัญชีอยู่แล้ว? กรุณาลงชื่อเข้าใช้" #: templates/account/signup_closed.html:5 #: templates/account/signup_closed.html:8 msgid "Sign Up Closed" msgstr "การลงทะเบียนปิดอยู่" #: templates/account/signup_closed.html:10 msgid "We are sorry, but the sign up is currently closed." msgstr "เราขอโทษด้วย การลงทะเบียนได้ปิดชั่วคราว" #: templates/account/snippets/already_logged_in.html:5 msgid "Note" msgstr "หมายเหตุ" #: templates/account/snippets/already_logged_in.html:5 #, python-format msgid "you are already logged in as %(user_display)s." msgstr "คุณได้ลงชื่อเข้าใช้เป็น %(user_display)s" #: templates/account/verification_sent.html:5 #: templates/account/verification_sent.html:8 #: templates/account/verified_email_required.html:5 #: templates/account/verified_email_required.html:8 msgid "Verify Your E-mail Address" msgstr "ยืนยันอีเมลของคุณ" #: templates/account/verification_sent.html:10 msgid "" "We have sent an e-mail to you for verification. Follow the link provided to " "finalize the signup process. Please contact us if you do not receive it " "within a few minutes." msgstr "" "เราได้ส่งอีเมลถึงคุณเพื่อให้คุณได้ทำการยืนยัน " "ใช้ลิงค์ที่อยู่ในอีเมลเพื่อทำการสิ้นสุดการลงทะเบียนกรุณาติดต่อเราหากคุณไม่ได้รับอีเมลภายในเวลาไม่กี่นาทีนี้" #: templates/account/verified_email_required.html:12 msgid "" "This part of the site requires us to verify that\n" "you are who you claim to be. For this purpose, we require that you\n" "verify ownership of your e-mail address. " msgstr "" "ส่วนนี้ของเว็บไซท์นี้ต้องการให้คุณยืนยันตัวตนของคุณก่อน\n" "ด้วยการนี้ เราขอให้คุณทำการยืนยันการเป็นเจ้าของของอีเมลของคุณก่อน" #: templates/account/verified_email_required.html:16 msgid "" "We have sent an e-mail to you for\n" "verification. Please click on the link inside this e-mail. Please\n" "contact us if you do not receive it within a few minutes." msgstr "" "เราได้ส่งอีเมลให้คุณเพื่อ\n" "ทำการยืนยัน กรุณาคลิกลิงค์ที่อยู่ข้างในอีเมล\n" "กรุณาติดต่อเราหากคุณไม่ได้รับอีเมลภายในเวลาไม่กี่นาทีนี้" #: templates/account/verified_email_required.html:20 #, python-format msgid "" "Note: you can still change your e-" "mail address." msgstr "" "หมายเหตุ: คุณยังสามารถเปลี่ยนอีเมลของคุณได้" #: templates/openid/login.html:9 msgid "OpenID Sign In" msgstr "ลงชื่อเข้าใช้ด้วย OpenID" #: templates/socialaccount/authentication_error.html:5 #: templates/socialaccount/authentication_error.html:8 msgid "Social Network Login Failure" msgstr "ลงชื่อเข้าใช้ด้วยระบบโซเชีลไม่สำเร็จ" #: templates/socialaccount/authentication_error.html:10 msgid "" "An error occurred while attempting to login via your social network account." msgstr "มีปัญหาเกิดขึ้นในขณะที่คุณทำการลงชื่อเข้าใช้ด้วยบัญชีโซเชียล" #: templates/socialaccount/connections.html:5 #: templates/socialaccount/connections.html:8 msgid "Account Connections" msgstr "การเชื่อมต่อบัญชีต่างๆ" #: templates/socialaccount/connections.html:11 msgid "" "You can sign in to your account using any of the following third party " "accounts:" msgstr "คุณสามารถลงชื่อเข้าสู่ระบบด้วยบัญชีภายนอกเหล่านี้ได้:" #: templates/socialaccount/connections.html:43 msgid "" "You currently have no social network accounts connected to this account." msgstr "คุณไม่มีบัญชีโซเชียลใดๆที่เชื่อมกับบัญชีนี้" #: templates/socialaccount/connections.html:46 msgid "Add a 3rd Party Account" msgstr "เพิ่ม บัญชีภายนอก" #: templates/socialaccount/login_cancelled.html:5 #: templates/socialaccount/login_cancelled.html:9 msgid "Login Cancelled" msgstr "การลงชื่เข้าใช้ยกเลิก" #: templates/socialaccount/login_cancelled.html:13 #, python-format msgid "" "You decided to cancel logging in to our site using one of your existing " "accounts. If this was a mistake, please proceed to sign in." msgstr "" "คุณตัดสินใจที่จะยกเลิกการลงชื่อเข้าใช้เว็บของเราด้วยหนึ่งในบัญชีของคุณถ้านี้เป็นความผิดพลาด กรุณาลงชื่อเข้าใช้" #: templates/socialaccount/messages/account_connected.txt:2 msgid "The social account has been connected." msgstr "บัญชีโซเชียลเชื่อมต่อเรียบร้อยแล้ว" #: templates/socialaccount/messages/account_connected_other.txt:2 msgid "The social account is already connected to a different account." msgstr "บัญชีโซเชียลนี้ได้ถูกเชื่อมต่อกับบัญชีอื่นแล้ว" #: templates/socialaccount/messages/account_disconnected.txt:2 msgid "The social account has been disconnected." msgstr "บัญชีโซเชียลได้ถูกตัดการเชื่อมต่อแล้ว" #: templates/socialaccount/signup.html:10 #, python-format msgid "" "You are about to use your %(provider_name)s account to login to\n" "%(site_name)s. As a final step, please complete the following form:" msgstr "" "คุณกำลังจะทำการใช้บัญชี %(provider_name)s ของคุณ ในการเข้าสู่ระบบของ\n" "%(site_name)s. ในขั้นตอนสุดท้าย กรุณากรอกฟอร์มข้างล่าง:" #~ msgid "The login and/or password you specified are not correct." #~ msgstr "การลงชื่เข้าใช้และ/หรือรหัสผ่านที่ระบุมาไม่ถูกต้อง" #~ msgid "Usernames can only contain letters, digits and @/./+/-/_." #~ msgstr "ชื่อผู้ใช้สามารถมีตัวอักษรภาษาอังกฤษตัวเลขและ @/./+/-/_. เท่านั้น" #~ msgid "This username is already taken. Please choose another." #~ msgstr "ชื่อผู้ใช้นี้ถูกใช้แล้ว กรุณาเลือกชื่ออื่น" #, fuzzy #~| msgid "Sign In" #~ msgid "Shopify Sign In" #~ msgstr "ลงชื่อเข้าใช้" #~ msgid "" #~ "You have confirmed that %(email)s is an " #~ "e-mail address for user %(user_display)s." #~ msgstr "" #~ "คุณได้ยืนยันว่า %(email)s เป็นอีเมลของผู้ใช้ " #~ "%(user_display)s." django-allauth-0.35.0/allauth/locale/tr/0000755000076500000240000000000013235133532020766 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/tr/LC_MESSAGES/0000755000076500000240000000000013235133532022553 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/locale/tr/LC_MESSAGES/django.mo0000644000076500000240000002455513235132042024360 0ustar pennersrstaff00000000000000a$,8\96   I0 wz L ? I Y a x 9      p 2~ 8 9 $ 4 A N 'c        - M l l B "7Zb w A6@V%0;V#?<M0l 4&\P!rH T*'$R,w ),.1``5R UB@ !( @BNI{;9; P ]i'~-+*=&["v[;"    ' 8G A 6 !:!"&":="8x""P#G#<$M$O^$$$$$%^%[&`&?'A'!'(+.((Z(1(((((( ) )*) 0)0<)@\H'-_:5. J &B"D4 8<O0ICZMa )/!3*27,UFVW]ATYR+^[K#L XG?PQ` S6>9%E$(;1N=Note: you can still change your e-mail address.A user is already registered with this e-mail address.AccountAccount ConnectionsAccount InactiveAdd E-mailAdd E-mail AddressAdd a 3rd Party AccountAlready have an account? Then please sign in.An account already exists with this e-mail address. Please sign in to that account first, then connect your %s account.An error occurred while attempting to login via your social network account.Bad TokenChange PasswordConfirmConfirm E-mail AddressCurrent PasswordDo you really want to remove the selected e-mail address?E-mailE-mail (optional)E-mail AddressesE-mail addressForgot Password?Forgotten your password? Enter your e-mail address below, and we'll send you an e-mail allowing you to reset it.In case you forgot, your username is %(username)s.Invalid response while obtaining access token from "%s".Invalid response while obtaining request token from "%s".Login CancelledMake PrimaryNew PasswordNew Password (again)No access to private resources at "%s".No access token saved for "%s".No request token saved for "%s".NoteOpenID Sign InPasswordPassword (again)Password ResetPassword Reset E-mailPassword must be a minimum of {0} characters.Password successfully changed.Password successfully set.Please confirm that %(email)s is an e-mail address for user %(user_display)s.Please contact us if you have any trouble resetting your password.Please type your current password.PrimaryRe-send VerificationRemember MeRemoveReset My PasswordSet PasswordSign InSign UpSignupSocial Network Login FailureThe e-mail address and/or password you specified are not correct.The e-mail address is not assigned to any user accountThe following e-mail addresses are associated with your account:The password reset link was invalid, possibly because it has already been used. Please request a new password reset.The password reset token was invalid.The username and/or password you specified are not correct.This account is currently inactive.This account is inactive.This e-mail address is already associated with another account.This e-mail address is already associated with this account.This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request.This part of the site requires us to verify that you are who you claim to be. For this purpose, we require that you verify ownership of your e-mail address. Too many failed login attempts. Try again later.UnverifiedUsernameUsername can not be used. Please use other username.Username or e-mailVerifiedVerify Your E-mail AddressWarning:We have sent an e-mail to you for verification. Please click on the link inside this e-mail. Please contact us if you do not receive it within a few minutes.We have sent you an e-mail. Please contact us if you do not receive it within a few minutes.You can sign in to your account using any of the following third party accounts:You currently do not have any e-mail address set up. You should really add an e-mail address so you can receive notifications, reset your password, etc.You currently have no social network accounts connected to this account.You decided to cancel logging in to our site using one of your existing accounts. If this was a mistake, please proceed to sign in.You have confirmed %(email)s.You have signed out.You must type the same password each time.Your account has no password set up.Your account has no verified e-mail address.Your password is now changed.change passwordemail addressemail addressesemail confirmationemail confirmationsfield labelLoginoruseryou are already logged in as %(user_display)s.Project-Id-Version: django-allauth Report-Msgid-Bugs-To: POT-Creation-Date: 2018-02-02 12:55-0600 PO-Revision-Date: 2014-08-12 00:35+0200 Last-Translator: Jannis Š Language-Team: Turkish (http://www.transifex.com/projects/p/django-allauth/language/tr/) Language: tr MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n > 1); Not: hala e-posta adresinizi değiştirebilirsiniz.Bu e-posta adresiyle bir kullanıcı zaten kayıtlı.HesapHesap BağlantılarıHesap Etkin DeğilE-posta EkleE-posta Adresi Ekle3. Parti Hesap ekleZaten hesabınız var mı? O zaman lütfen giriş yapın.Bu e-posta ile kayıtlı bir hesap bulunmaktadır. Lütfen önce bu hesaba giriş yapıp daha sonra %s hesabınızı bağlayın.Sosyal ağ hesabınız ile giriş yapılırken bir hata oluştu.Kötü kodParola DeğiştirOnaylaE-posta Adresi DoğrulaMevcut ParolaSeçilen e-posta adresini kaldırmak istediğinizden emin misiniz?E-postaE-posta (zorunlu değil)E-posta AdresleriE-posta adresiParolanızı mı unuttunuz?Parolanızı mı unuttunuz? E-posta adresinizi aşağıya yazın, size parolanızı sıfırlamanıza imkan veren e-postayı göndereceğiz.Kullanıcı adınızı unuttuysanız, kullanıcı adınız: %(username)s."%s"'dan erişim kodu alınırken geçersiz cevap alındı."%s"'dan talep kodu alınırken geçersiz cevap alındı.Giriş İptal EdildiBirincil YapYeni ParolaYeni Parola (tekrar)"%s"'daki özel kaynaklara erişim yok."%s" için hiçbir erişim kodu kaydedilmedi."%s" için hiçbir talep kodu kaydedilmedi.NotOpenID GirişiParolaParola (tekrar)Parola SıfırlamaParola Sıfırlama E-postasıParola en az {0} karakter olmalıdır.Parola başarıyla değiştirildi.Parola başarıyla ayarlandı.Lütfen %(email)s adresinin %(user_display)s kullanıcısına ait olduğunu onaylayın.Parolanızı sıfırlarken herhangi bir sorunla karşılaşırsanız lütfen bize ulaşın.Mevcut parolanızı tekrar yazın.BirincilTekrar DoğrulaBeni HatırlaKaldırParolamı SıfırlaParola BelirleGiriş YapÜye OlÜye OlSosyal Ağ Girişi BaşarısızGirdiğiniz e-posta adresi ve/veya parola doğru değil.Bu e-posta adresi hiçbir kullanıcı hesabıyla ilişkili değilŞu e-posta adresleri hesabınızla ilişkilendirildi:Parola sıfırlama bağlantısı gerçersiz, muhtemelen daha önce kullanıldığı için. Lütfen yeni parola sıfırlama talebinde bulunun.Şifre sıfırlama kodu hatalı.Girdiğiniz kullanıcı adı ve/veya parola doğru değil.Bu hesap şu anda etkin değil.Bu hesap etkin değil.Bu e-post adresi başka bir hesap ile ilişkilendirilmiş.Bu e-post adresi zaten bu hesap ile ilişkilendirilmiş.Bu onaylama bağlantısının süresi geçmiş ya da bağlantı geçersiz. Lütfen yeni bir e-posta doğrulama talebinde bulunun..Sitenin bu kısmı kim olduğunuzu doğrulamanızı gerektirmektedir. Bu sebeple, girdiğiniz e-posta adresinize sahip olduğunuzu doğrulamanızı rica ediyoruz. Çok fazla hatalı giriş yapıldı. Lütfen daha sonra tekrar deneyin.DoğrulanmamışKullanıcı adıBu kullanıcı adı kullanılamaz. Lütfen başka bir kullanıcı adı deneyin.Kullanıcı adı ya da e-postaDoğrulanmışE-posta Adresinizi DoğrulayınUyarı:Doğrulama için size bir e-posta gönderdik. Lütfen e-postadaki bağlantıya tıklayın. Eğer birkaç dakika içinde bu e-postayı almazsanız bize ulaşın.Size bir e-posta gönderdik. Birkaç dakika içerisinde size ulaşmazsa lütfen bize ulaşın.Hesabınıza aşağıdaki üçüncü parti hesaplar aracılığıyla giriş yapabilirsiniz.Şu anda kayıtlı hiçbir e-posta adresiniz yok. Bildirim alabilmek, parolanızı sıfırlayabilmek, vs. işler için e-posta adresinizi mutlaka eklemelisiniz.Hesabınızla bağlantılı hiçbir sosyal ağ hesabınız yok.Mevcut hesaplarınızdan birisiyle sitemize girişinizi iptal etmeye karar verdiniz. Eğer bu yanlışlıkla olduysa, lütfen devam edin: giriş yapın.%(email)s adresini onayladınız.Çıkış yaptınız.Her seferinde aynı parolayı girmelisiniz.Hesabınız için parola belirlemediniz.Hesabınızın doğrulanmış e-posta adresi yok.Parolanız değişti.parola değiştire-posta adresie-posta adreslerie-posta onayıe-posta onaylarıGiriş Yapya dakullanıcızaten %(user_display)s olarak giriş yaptınız.django-allauth-0.35.0/allauth/locale/tr/LC_MESSAGES/django.po0000644000076500000240000006136213235132040024356 0ustar pennersrstaff00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # , 2013 msgid "" msgstr "" "Project-Id-Version: django-allauth\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-02-02 12:55-0600\n" "PO-Revision-Date: 2014-08-12 00:35+0200\n" "Last-Translator: Jannis Š\n" "Language-Team: Turkish (http://www.transifex.com/projects/p/django-allauth/" "language/tr/)\n" "Language: tr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: account/adapter.py:45 msgid "Username can not be used. Please use other username." msgstr "Bu kullanıcı adı kullanılamaz. Lütfen başka bir kullanıcı adı deneyin." #: account/adapter.py:49 msgid "Too many failed login attempts. Try again later." msgstr "Çok fazla hatalı giriş yapıldı. Lütfen daha sonra tekrar deneyin." #: account/adapter.py:51 msgid "A user is already registered with this e-mail address." msgstr "Bu e-posta adresiyle bir kullanıcı zaten kayıtlı." #: account/adapter.py:288 #, python-brace-format msgid "Password must be a minimum of {0} characters." msgstr "Parola en az {0} karakter olmalıdır." #: account/apps.py:7 #, fuzzy msgid "Accounts" msgstr "Hesap" #: account/forms.py:61 account/forms.py:398 msgid "You must type the same password each time." msgstr "Her seferinde aynı parolayı girmelisiniz." #: account/forms.py:91 account/forms.py:365 account/forms.py:476 msgid "Password" msgstr "Parola" #: account/forms.py:92 msgid "Remember Me" msgstr "Beni Hatırla" #: account/forms.py:98 msgid "This account is currently inactive." msgstr "Bu hesap şu anda etkin değil." #: account/forms.py:101 msgid "The e-mail address and/or password you specified are not correct." msgstr "Girdiğiniz e-posta adresi ve/veya parola doğru değil." #: account/forms.py:104 msgid "The username and/or password you specified are not correct." msgstr "Girdiğiniz kullanıcı adı ve/veya parola doğru değil." #: account/forms.py:113 account/forms.py:268 account/forms.py:426 #: account/forms.py:495 msgid "E-mail address" msgstr "E-posta adresi" #: account/forms.py:115 account/forms.py:301 account/forms.py:421 #: account/forms.py:490 msgid "E-mail" msgstr "E-posta" #: account/forms.py:120 account/forms.py:123 account/forms.py:260 #: account/forms.py:264 msgid "Username" msgstr "Kullanıcı adı" #: account/forms.py:130 msgid "Username or e-mail" msgstr "Kullanıcı adı ya da e-posta" #: account/forms.py:133 msgctxt "field label" msgid "Login" msgstr "Giriş Yap" #: account/forms.py:292 #, fuzzy #| msgid "E-mail (optional)" msgid "E-mail (again)" msgstr "E-posta (zorunlu değil)" #: account/forms.py:296 #, fuzzy #| msgid "email confirmation" msgid "E-mail address confirmation" msgstr "e-posta onayı" #: account/forms.py:304 msgid "E-mail (optional)" msgstr "E-posta (zorunlu değil)" #: account/forms.py:345 #, fuzzy #| msgid "You must type the same password each time." msgid "You must type the same email each time." msgstr "Her seferinde aynı parolayı girmelisiniz." #: account/forms.py:368 account/forms.py:477 msgid "Password (again)" msgstr "Parola (tekrar)" #: account/forms.py:432 msgid "This e-mail address is already associated with this account." msgstr "Bu e-post adresi zaten bu hesap ile ilişkilendirilmiş." #: account/forms.py:434 msgid "This e-mail address is already associated with another account." msgstr "Bu e-post adresi başka bir hesap ile ilişkilendirilmiş." #: account/forms.py:456 msgid "Current Password" msgstr "Mevcut Parola" #: account/forms.py:457 account/forms.py:546 msgid "New Password" msgstr "Yeni Parola" #: account/forms.py:458 account/forms.py:547 msgid "New Password (again)" msgstr "Yeni Parola (tekrar)" #: account/forms.py:466 msgid "Please type your current password." msgstr "Mevcut parolanızı tekrar yazın." #: account/forms.py:504 msgid "The e-mail address is not assigned to any user account" msgstr "Bu e-posta adresi hiçbir kullanıcı hesabıyla ilişkili değil" #: account/forms.py:568 msgid "The password reset token was invalid." msgstr "Şifre sıfırlama kodu hatalı." #: account/models.py:23 msgid "user" msgstr "kullanıcı" #: account/models.py:27 account/models.py:81 #, fuzzy msgid "e-mail address" msgstr "e-posta adresi" #: account/models.py:28 #, fuzzy msgid "verified" msgstr "Doğrulanmamış" #: account/models.py:29 #, fuzzy msgid "primary" msgstr "Birincil" #: account/models.py:34 msgid "email address" msgstr "e-posta adresi" #: account/models.py:35 msgid "email addresses" msgstr "e-posta adresleri" #: account/models.py:83 msgid "created" msgstr "" #: account/models.py:85 msgid "sent" msgstr "" #: account/models.py:86 socialaccount/models.py:55 msgid "key" msgstr "" #: account/models.py:91 msgid "email confirmation" msgstr "e-posta onayı" #: account/models.py:92 msgid "email confirmations" msgstr "e-posta onayları" #: socialaccount/adapter.py:26 #, python-format msgid "" "An account already exists with this e-mail address. Please sign in to that " "account first, then connect your %s account." msgstr "" "Bu e-posta ile kayıtlı bir hesap bulunmaktadır. Lütfen önce bu hesaba giriş " "yapıp daha sonra %s hesabınızı bağlayın." #: socialaccount/adapter.py:131 msgid "Your account has no password set up." msgstr "Hesabınız için parola belirlemediniz." #: socialaccount/adapter.py:138 msgid "Your account has no verified e-mail address." msgstr "Hesabınızın doğrulanmış e-posta adresi yok." #: socialaccount/apps.py:7 #, fuzzy msgid "Social Accounts" msgstr "Hesap" #: socialaccount/models.py:43 socialaccount/models.py:77 msgid "provider" msgstr "" #: socialaccount/models.py:46 #, fuzzy msgid "name" msgstr "Kullanıcı adı" #: socialaccount/models.py:48 msgid "client id" msgstr "" #: socialaccount/models.py:50 msgid "App ID, or consumer key" msgstr "" #: socialaccount/models.py:51 msgid "secret key" msgstr "" #: socialaccount/models.py:53 msgid "API secret, client secret, or consumer secret" msgstr "" #: socialaccount/models.py:58 msgid "Key" msgstr "" #: socialaccount/models.py:66 msgid "social application" msgstr "" #: socialaccount/models.py:67 msgid "social applications" msgstr "" #: socialaccount/models.py:96 msgid "uid" msgstr "" #: socialaccount/models.py:98 msgid "last login" msgstr "" #: socialaccount/models.py:100 msgid "date joined" msgstr "" #: socialaccount/models.py:102 msgid "extra data" msgstr "" #: socialaccount/models.py:106 msgid "social account" msgstr "" #: socialaccount/models.py:107 msgid "social accounts" msgstr "" #: socialaccount/models.py:133 msgid "token" msgstr "" #: socialaccount/models.py:135 msgid "\"oauth_token\" (OAuth1) or access token (OAuth2)" msgstr "" #: socialaccount/models.py:138 msgid "token secret" msgstr "" #: socialaccount/models.py:140 msgid "\"oauth_token_secret\" (OAuth1) or refresh token (OAuth2)" msgstr "" #: socialaccount/models.py:142 msgid "expires at" msgstr "" #: socialaccount/models.py:146 msgid "social application token" msgstr "" #: socialaccount/models.py:147 msgid "social application tokens" msgstr "" #: socialaccount/providers/douban/views.py:36 msgid "Invalid profile data" msgstr "" #: socialaccount/providers/oauth/client.py:78 #, python-format msgid "Invalid response while obtaining request token from \"%s\"." msgstr "\"%s\"'dan talep kodu alınırken geçersiz cevap alındı." #: socialaccount/providers/oauth/client.py:109 #, python-format msgid "Invalid response while obtaining access token from \"%s\"." msgstr "\"%s\"'dan erişim kodu alınırken geçersiz cevap alındı." #: socialaccount/providers/oauth/client.py:128 #, python-format msgid "No request token saved for \"%s\"." msgstr "\"%s\" için hiçbir talep kodu kaydedilmedi." #: socialaccount/providers/oauth/client.py:177 #, python-format msgid "No access token saved for \"%s\"." msgstr "\"%s\" için hiçbir erişim kodu kaydedilmedi." #: socialaccount/providers/oauth/client.py:197 #, python-format msgid "No access to private resources at \"%s\"." msgstr "\"%s\"'daki özel kaynaklara erişim yok." #: templates/account/account_inactive.html:5 #: templates/account/account_inactive.html:8 msgid "Account Inactive" msgstr "Hesap Etkin Değil" #: templates/account/account_inactive.html:10 msgid "This account is inactive." msgstr "Bu hesap etkin değil." #: templates/account/email.html:5 msgid "Account" msgstr "Hesap" #: templates/account/email.html:8 msgid "E-mail Addresses" msgstr "E-posta Adresleri" #: templates/account/email.html:10 msgid "The following e-mail addresses are associated with your account:" msgstr "Şu e-posta adresleri hesabınızla ilişkilendirildi:" #: templates/account/email.html:24 msgid "Verified" msgstr "Doğrulanmış" #: templates/account/email.html:26 msgid "Unverified" msgstr "Doğrulanmamış" #: templates/account/email.html:28 msgid "Primary" msgstr "Birincil" #: templates/account/email.html:34 msgid "Make Primary" msgstr "Birincil Yap" #: templates/account/email.html:35 msgid "Re-send Verification" msgstr "Tekrar Doğrula" #: templates/account/email.html:36 templates/socialaccount/connections.html:35 msgid "Remove" msgstr "Kaldır" #: templates/account/email.html:43 msgid "Warning:" msgstr "Uyarı:" #: templates/account/email.html:43 msgid "" "You currently do not have any e-mail address set up. You should really add " "an e-mail address so you can receive notifications, reset your password, etc." msgstr "" "Şu anda kayıtlı hiçbir e-posta adresiniz yok. Bildirim alabilmek, parolanızı " "sıfırlayabilmek, vs. işler için e-posta adresinizi mutlaka eklemelisiniz." #: templates/account/email.html:48 msgid "Add E-mail Address" msgstr "E-posta Adresi Ekle" #: templates/account/email.html:53 msgid "Add E-mail" msgstr "E-posta Ekle" #: templates/account/email.html:62 msgid "Do you really want to remove the selected e-mail address?" msgstr "Seçilen e-posta adresini kaldırmak istediğinizden emin misiniz?" #: templates/account/email/email_confirmation_message.txt:1 #, fuzzy, python-format #| msgid "" #| "User %(user_display)s at %(site_name)s has given this as an email " #| "address.\n" #| "\n" #| "To confirm this is correct, go to %(activate_url)s\n" msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because user %(user_display)s has given yours " "as an e-mail address to connect their account.\n" "\n" "To confirm this is correct, go to %(activate_url)s\n" msgstr "" "%(site_name)s sitesinde %(user_display)s, bunu e-posta adresi olarak verdi.\n" "\n" "Doğruluğunu onaylamak için %(activate_url)s adresine gidin\n" #: templates/account/email/email_confirmation_message.txt:7 #, python-format msgid "" "Thank you from %(site_name)s!\n" "%(site_domain)s" msgstr "" #: templates/account/email/email_confirmation_subject.txt:3 #, fuzzy #| msgid "Confirm E-mail Address" msgid "Please Confirm Your E-mail Address" msgstr "E-posta Adresi Doğrula" #: templates/account/email/password_reset_key_message.txt:1 #, fuzzy, python-format #| msgid "" #| "You're receiving this e-mail because you or someone else has requested a " #| "password for your user account at %(site_domain)s.\n" #| "It can be safely ignored if you did not request a password reset. Click " #| "the link below to reset your password." msgid "" "Hello from %(site_name)s!\n" "\n" "You're receiving this e-mail because you or someone else has requested a " "password for your user account.\n" "It can be safely ignored if you did not request a password reset. Click the " "link below to reset your password." msgstr "" "Bu e-postayı alıyorsunuz çünkü siz veya bir başkası %(site_domain)s " "sitesindeki hesabınız için parola sıfırlama talebinde bulundu.\n" "Eğer böyle bir talepte bulunmadıysanız bu e-postayı gözardı edebilirsiniz. " "Bulunduysanız aşağıdaki bağlantıya tıklayarak parolanızı sıfırlayabilirsiniz." #: templates/account/email/password_reset_key_message.txt:8 #, python-format msgid "In case you forgot, your username is %(username)s." msgstr "Kullanıcı adınızı unuttuysanız, kullanıcı adınız: %(username)s." #: templates/account/email/password_reset_key_message.txt:10 #, python-format msgid "" "Thank you for using %(site_name)s!\n" "%(site_domain)s" msgstr "" #: templates/account/email/password_reset_key_subject.txt:3 msgid "Password Reset E-mail" msgstr "Parola Sıfırlama E-postası" #: templates/account/email_confirm.html:6 #: templates/account/email_confirm.html:10 msgid "Confirm E-mail Address" msgstr "E-posta Adresi Doğrula" #: templates/account/email_confirm.html:16 #, python-format msgid "" "Please confirm that %(email)s is an e-mail " "address for user %(user_display)s." msgstr "" "Lütfen %(email)s adresinin %(user_display)s " "kullanıcısına ait olduğunu onaylayın." #: templates/account/email_confirm.html:20 msgid "Confirm" msgstr "Onayla" #: templates/account/email_confirm.html:27 #, python-format msgid "" "This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request." msgstr "" "Bu onaylama bağlantısının süresi geçmiş ya da bağlantı geçersiz. Lütfen yeni bir e-posta doğrulama talebinde bulunun.." #: templates/account/login.html:6 templates/account/login.html:10 #: templates/account/login.html:43 msgid "Sign In" msgstr "Giriş Yap" #: templates/account/login.html:15 #, python-format msgid "" "Please sign in with one\n" "of your existing third party accounts. Or, sign " "up\n" "for a %(site_name)s account and sign in below:" msgstr "" #: templates/account/login.html:25 msgid "or" msgstr "ya da" #: templates/account/login.html:32 #, fuzzy, python-format msgid "" "If you have not created an account yet, then please\n" "sign up first." msgstr "" "Zaten hesabınız var mı? O zaman lütfen giriş " "yapın." #: templates/account/login.html:42 msgid "Forgot Password?" msgstr "Parolanızı mı unuttunuz?" #: templates/account/logout.html:5 templates/account/logout.html:8 #: templates/account/logout.html:17 msgid "Sign Out" msgstr "" #: templates/account/logout.html:10 msgid "Are you sure you want to sign out?" msgstr "" #: templates/account/messages/cannot_delete_primary_email.txt:2 #, python-format msgid "You cannot remove your primary e-mail address (%(email)s)." msgstr "" #: templates/account/messages/email_confirmation_sent.txt:2 #, python-format msgid "Confirmation e-mail sent to %(email)s." msgstr "" #: templates/account/messages/email_confirmed.txt:2 #, python-format msgid "You have confirmed %(email)s." msgstr "%(email)s adresini onayladınız." #: templates/account/messages/email_deleted.txt:2 #, python-format msgid "Removed e-mail address %(email)s." msgstr "" #: templates/account/messages/logged_in.txt:4 #, python-format msgid "Successfully signed in as %(name)s." msgstr "" #: templates/account/messages/logged_out.txt:2 msgid "You have signed out." msgstr "Çıkış yaptınız." #: templates/account/messages/password_changed.txt:2 msgid "Password successfully changed." msgstr "Parola başarıyla değiştirildi." #: templates/account/messages/password_set.txt:2 msgid "Password successfully set." msgstr "Parola başarıyla ayarlandı." #: templates/account/messages/primary_email_set.txt:2 msgid "Primary e-mail address set." msgstr "" #: templates/account/messages/unverified_primary_email.txt:2 msgid "Your primary e-mail address must be verified." msgstr "" #: templates/account/password_change.html:5 #: templates/account/password_change.html:8 #: templates/account/password_change.html:13 #: templates/account/password_reset_from_key.html:4 #: templates/account/password_reset_from_key.html:7 #: templates/account/password_reset_from_key_done.html:4 #: templates/account/password_reset_from_key_done.html:7 msgid "Change Password" msgstr "Parola Değiştir" #: templates/account/password_reset.html:6 #: templates/account/password_reset.html:10 #: templates/account/password_reset_done.html:6 #: templates/account/password_reset_done.html:9 msgid "Password Reset" msgstr "Parola Sıfırlama" #: templates/account/password_reset.html:15 msgid "" "Forgotten your password? Enter your e-mail address below, and we'll send you " "an e-mail allowing you to reset it." msgstr "" "Parolanızı mı unuttunuz? E-posta adresinizi aşağıya yazın, size parolanızı " "sıfırlamanıza imkan veren e-postayı göndereceğiz." #: templates/account/password_reset.html:20 msgid "Reset My Password" msgstr "Parolamı Sıfırla" #: templates/account/password_reset.html:23 msgid "Please contact us if you have any trouble resetting your password." msgstr "" "Parolanızı sıfırlarken herhangi bir sorunla karşılaşırsanız lütfen bize " "ulaşın." #: templates/account/password_reset_done.html:15 msgid "" "We have sent you an e-mail. Please contact us if you do not receive it " "within a few minutes." msgstr "" "Size bir e-posta gönderdik. Birkaç dakika içerisinde size ulaşmazsa lütfen " "bize ulaşın." #: templates/account/password_reset_from_key.html:7 msgid "Bad Token" msgstr "Kötü kod" #: templates/account/password_reset_from_key.html:11 #, python-format msgid "" "The password reset link was invalid, possibly because it has already been " "used. Please request a new password reset." msgstr "" "Parola sıfırlama bağlantısı gerçersiz, muhtemelen daha önce kullanıldığı " "için. Lütfen yeni parola sıfırlama " "talebinde bulunun." #: templates/account/password_reset_from_key.html:17 msgid "change password" msgstr "parola değiştir" #: templates/account/password_reset_from_key.html:20 #: templates/account/password_reset_from_key_done.html:8 msgid "Your password is now changed." msgstr "Parolanız değişti." #: templates/account/password_set.html:5 templates/account/password_set.html:8 #: templates/account/password_set.html:13 msgid "Set Password" msgstr "Parola Belirle" #: templates/account/signup.html:5 templates/socialaccount/signup.html:5 msgid "Signup" msgstr "Üye Ol" #: templates/account/signup.html:8 templates/account/signup.html:18 #: templates/socialaccount/signup.html:8 templates/socialaccount/signup.html:19 msgid "Sign Up" msgstr "Üye Ol" #: templates/account/signup.html:10 #, python-format msgid "" "Already have an account? Then please sign in." msgstr "" "Zaten hesabınız var mı? O zaman lütfen giriş " "yapın." #: templates/account/signup_closed.html:5 #: templates/account/signup_closed.html:8 msgid "Sign Up Closed" msgstr "" #: templates/account/signup_closed.html:10 msgid "We are sorry, but the sign up is currently closed." msgstr "" #: templates/account/snippets/already_logged_in.html:5 msgid "Note" msgstr "Not" #: templates/account/snippets/already_logged_in.html:5 #, python-format msgid "you are already logged in as %(user_display)s." msgstr "zaten %(user_display)s olarak giriş yaptınız." #: templates/account/verification_sent.html:5 #: templates/account/verification_sent.html:8 #: templates/account/verified_email_required.html:5 #: templates/account/verified_email_required.html:8 msgid "Verify Your E-mail Address" msgstr "E-posta Adresinizi Doğrulayın" #: templates/account/verification_sent.html:10 #, fuzzy msgid "" "We have sent an e-mail to you for verification. Follow the link provided to " "finalize the signup process. Please contact us if you do not receive it " "within a few minutes." msgstr "" "%(email)s adresinize doğrulama amaçlı e-" "posta gönderdik. Üyelik sürecini tamamlamak için sunulan bağlantıyı takip " "edin. Eğer e-posta birkaç dakika içinde size ulaşmazsa lütfen bize ulaşın." #: templates/account/verified_email_required.html:12 msgid "" "This part of the site requires us to verify that\n" "you are who you claim to be. For this purpose, we require that you\n" "verify ownership of your e-mail address. " msgstr "" "Sitenin bu kısmı kim olduğunuzu doğrulamanızı\n" "gerektirmektedir. Bu sebeple, girdiğiniz e-posta adresinize sahip\n" "olduğunuzu doğrulamanızı rica ediyoruz. " #: templates/account/verified_email_required.html:16 msgid "" "We have sent an e-mail to you for\n" "verification. Please click on the link inside this e-mail. Please\n" "contact us if you do not receive it within a few minutes." msgstr "" "Doğrulama için size bir e-posta gönderdik.\n" "Lütfen e-postadaki bağlantıya tıklayın. Eğer birkaç dakika içinde\n" "bu e-postayı almazsanız bize ulaşın." #: templates/account/verified_email_required.html:20 #, python-format msgid "" "Note: you can still change your e-" "mail address." msgstr "" "Not: hala e-posta adresinizi " "değiştirebilirsiniz." #: templates/openid/login.html:9 msgid "OpenID Sign In" msgstr "OpenID Girişi" #: templates/socialaccount/authentication_error.html:5 #: templates/socialaccount/authentication_error.html:8 msgid "Social Network Login Failure" msgstr "Sosyal Ağ Girişi Başarısız" #: templates/socialaccount/authentication_error.html:10 msgid "" "An error occurred while attempting to login via your social network account." msgstr "Sosyal ağ hesabınız ile giriş yapılırken bir hata oluştu." #: templates/socialaccount/connections.html:5 #: templates/socialaccount/connections.html:8 msgid "Account Connections" msgstr "Hesap Bağlantıları" #: templates/socialaccount/connections.html:11 msgid "" "You can sign in to your account using any of the following third party " "accounts:" msgstr "" "Hesabınıza aşağıdaki üçüncü parti hesaplar aracılığıyla giriş yapabilirsiniz." #: templates/socialaccount/connections.html:43 msgid "" "You currently have no social network accounts connected to this account." msgstr "Hesabınızla bağlantılı hiçbir sosyal ağ hesabınız yok." #: templates/socialaccount/connections.html:46 msgid "Add a 3rd Party Account" msgstr "3. Parti Hesap ekle" #: templates/socialaccount/login_cancelled.html:5 #: templates/socialaccount/login_cancelled.html:9 msgid "Login Cancelled" msgstr "Giriş İptal Edildi" #: templates/socialaccount/login_cancelled.html:13 #, python-format msgid "" "You decided to cancel logging in to our site using one of your existing " "accounts. If this was a mistake, please proceed to sign in." msgstr "" "Mevcut hesaplarınızdan birisiyle sitemize girişinizi iptal etmeye karar " "verdiniz. Eğer bu yanlışlıkla olduysa, lütfen devam edin: giriş yapın." #: templates/socialaccount/messages/account_connected.txt:2 msgid "The social account has been connected." msgstr "" #: templates/socialaccount/messages/account_connected_other.txt:2 msgid "The social account is already connected to a different account." msgstr "" #: templates/socialaccount/messages/account_disconnected.txt:2 msgid "The social account has been disconnected." msgstr "" #: templates/socialaccount/signup.html:10 #, fuzzy, python-format msgid "" "You are about to use your %(provider_name)s account to login to\n" "%(site_name)s. As a final step, please complete the following form:" msgstr "" "%(site_name)s sitesine giriş yapmak için %(provider_name)s hesabınızı " "kullanmak üzeresiniz. Son bir adım olarak, lütfen şu formu doldurun:" #~ msgid "The login and/or password you specified are not correct." #~ msgstr "Girdiğiniz giriş bilgisi ve/veya parola doğru değil." #~ msgid "Usernames can only contain letters, digits and @/./+/-/_." #~ msgstr "Kullanıcı adları sadece harf, rakam ve @/./+/-/_ içerebilir." #~ msgid "This username is already taken. Please choose another." #~ msgstr "Bu kullanıcı adı alınmış durumda. Lütfen başka bir tane deneyiniz." #, fuzzy #~| msgid "Sign In" #~ msgid "Shopify Sign In" #~ msgstr "Giriş Yap" #~ msgid "" #~ "You have confirmed that %(email)s is an " #~ "e-mail address for user %(user_display)s." #~ msgstr "" #~ "%(email)s adresinin %(user_display)s " #~ "kullanıcısına ait olduğunu onayladınız." #~ msgid "Thanks for using our site!" #~ msgstr "Sitemizi kullandığınız için teşekkür ederiz!" #~ msgid "Confirmation e-mail sent to %(email)s" #~ msgstr "Onay e-postası %(email)s adresine gönderildi." #~ msgid "Delete Password" #~ msgstr "Parola Sil" #~ msgid "" #~ "You may delete your password since you are currently logged in using " #~ "OpenID." #~ msgstr "" #~ "Şu anda OpenID ile giriş yaptığınız için dilerseniz parolanızı " #~ "silebilirsiniz." #~ msgid "delete my password" #~ msgstr "parolamı sil" #~ msgid "Password Deleted" #~ msgstr "Parola Silindi" #~ msgid "Your password has been deleted." #~ msgstr "Parolanız silindi." django-allauth-0.35.0/allauth/compat.py0000644000076500000240000000230113235130412020725 0ustar pennersrstaff00000000000000from django.utils import six try: from collections import UserDict except ImportError: from UserDict import UserDict # noqa try: from urllib.parse import parse_qsl, parse_qs, urlparse, urlunparse, urljoin except ImportError: from urlparse import parse_qsl, parse_qs, urlparse, urlunparse, urljoin # noqa def int_to_base36(i): """ Django on py2 raises ValueError on large values. """ if six.PY2: char_set = '0123456789abcdefghijklmnopqrstuvwxyz' if i < 0: raise ValueError("Negative base36 conversion input.") if not isinstance(i, six.integer_types): raise TypeError("Non-integer base36 conversion input.") if i < 36: return char_set[i] b36 = '' while i != 0: i, n = divmod(i, 36) b36 = char_set[n] + b36 else: from django.utils.http import int_to_base36 b36 = int_to_base36(i) return b36 def base36_to_int(s): if six.PY2: if len(s) > 13: raise ValueError("Base36 input too large") value = int(s, 36) else: from django.utils.http import base36_to_int value = base36_to_int(s) return value django-allauth-0.35.0/allauth/models.py0000644000076500000240000000000013117447114020730 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/__init__.py0000644000076500000240000000126313235131740021214 0ustar pennersrstaff00000000000000r""" _ ___ __ __ .___________. __ __ /\| |/\ / \ | | | | | || | | | \ ` ' / / ^ \ | | | | `---| |----`| |__| | |_ _| / /_\ \ | | | | | | | __ | / , . \ / _____ \ | `--' | | | | | | | \/|_|\//__/ \__\ \______/ |__| |__| |__| """ VERSION = (0, 35, 0, 'final', 0) __title__ = 'django-allauth' __version_info__ = VERSION __version__ = '.'.join(map(str, VERSION[:3])) + ('-{}{}'.format( VERSION[3], VERSION[4] or '') if VERSION[3] != 'final' else '') __author__ = 'Raymond Penners' __license__ = 'MIT' __copyright__ = 'Copyright 2010-2018 Raymond Penners and contributors' django-allauth-0.35.0/allauth/socialaccount/0000755000076500000240000000000013235133532021731 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/templatetags/0000755000076500000240000000000013235133533024424 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/templatetags/socialaccount.py0000644000076500000240000000565413235130412027630 0ustar pennersrstaff00000000000000from django import template from django.template.defaulttags import token_kwargs from allauth.socialaccount import providers from allauth.utils import get_request_param register = template.Library() class ProviderLoginURLNode(template.Node): def __init__(self, provider_id, params): self.provider_id_var = template.Variable(provider_id) self.params = params def render(self, context): provider_id = self.provider_id_var.resolve(context) request = context['request'] provider = providers.registry.by_id(provider_id, request) query = dict([(str(name), var.resolve(context)) for name, var in self.params.items()]) auth_params = query.get('auth_params', None) scope = query.get('scope', None) process = query.get('process', None) if scope is '': del query['scope'] if auth_params is '': del query['auth_params'] if 'next' not in query: next = get_request_param(request, 'next') if next: query['next'] = next elif process == 'redirect': query['next'] = request.get_full_path() else: if not query['next']: del query['next'] # get the login url and append query as url parameters return provider.get_login_url(request, **query) @register.tag def provider_login_url(parser, token): """ {% provider_login_url "facebook" next=bla %} {% provider_login_url "openid" openid="http://me.yahoo.com" next=bla %} """ bits = token.split_contents() provider_id = bits[1] params = token_kwargs(bits[2:], parser, support_legacy=False) return ProviderLoginURLNode(provider_id, params) class ProvidersMediaJSNode(template.Node): def render(self, context): request = context['request'] ret = '\n'.join([p.media_js(request) for p in providers.registry.get_list(request)]) return ret @register.tag def providers_media_js(parser, token): return ProvidersMediaJSNode() @register.simple_tag def get_social_accounts(user): """ {% get_social_accounts user as accounts %} Then: {{accounts.twitter}} -- a list of connected Twitter accounts {{accounts.twitter.0}} -- the first Twitter account {% if accounts %} -- if there is at least one social account """ accounts = {} for account in user.socialaccount_set.all().iterator(): providers = accounts.setdefault(account.provider, []) providers.append(account) return accounts @register.simple_tag def get_providers(): """ Returns a list of social authentication providers. Usage: `{% get_providers as socialaccount_providers %}`. Then within the template context, `socialaccount_providers` will hold a list of social providers configured for the current site. """ return providers.registry.get_list() django-allauth-0.35.0/allauth/socialaccount/templatetags/__init__.py0000644000076500000240000000000012357313011026516 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/signals.py0000644000076500000240000000156113117447116023753 0ustar pennersrstaff00000000000000from django.dispatch import Signal # Sent after a user successfully authenticates via a social provider, # but before the login is actually processed. This signal is emitted # for social logins, signups and when connecting additional social # accounts to an account. pre_social_login = Signal(providing_args=["request", "sociallogin"]) # Sent after a user connects a social account to a their local account. social_account_added = Signal(providing_args=["request", "sociallogin"]) # Sent after a user connects an already existing social account to a # their local account. The social account will have an updated token and # refreshed extra_data. social_account_updated = Signal(providing_args=["request", "sociallogin"]) # Sent after a user disconnects a social account from their local # account. social_account_removed = Signal(providing_args=["request", "socialaccount"]) django-allauth-0.35.0/allauth/socialaccount/migrations/0000755000076500000240000000000013235133532024105 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/migrations/0003_extra_data_default_dict.py0000644000076500000240000000103112671004326031740 0ustar pennersrstaff00000000000000# -*- coding: utf-8 -*- from __future__ import unicode_literals from django.db import models, migrations import allauth.socialaccount.fields class Migration(migrations.Migration): dependencies = [ ('socialaccount', '0002_token_max_lengths'), ] operations = [ migrations.AlterField( model_name='socialaccount', name='extra_data', field=allauth.socialaccount.fields.JSONField(default=dict, verbose_name='extra data'), preserve_default=True, ), ] django-allauth-0.35.0/allauth/socialaccount/migrations/__init__.py0000644000076500000240000000000013235130412026176 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/migrations/0002_token_max_lengths.py0000644000076500000240000000222712671004326030635 0ustar pennersrstaff00000000000000# -*- coding: utf-8 -*- from __future__ import unicode_literals from django.db import migrations, models from django.conf import settings class Migration(migrations.Migration): dependencies = [ ('socialaccount', '0001_initial'), ] operations = [ migrations.AlterField( model_name='socialaccount', name='uid', field=models.CharField(max_length=getattr(settings, 'SOCIALACCOUNT_UID_MAX_LENGTH', 191), verbose_name='uid'), ), migrations.AlterField( model_name='socialapp', name='client_id', field=models.CharField(help_text='App ID, or consumer key', max_length=191, verbose_name='client id'), ), migrations.AlterField( model_name='socialapp', name='key', field=models.CharField(help_text='Key', max_length=191, verbose_name='key', blank=True), ), migrations.AlterField( model_name='socialapp', name='secret', field=models.CharField(help_text='API secret, client secret, or consumer secret', max_length=191, verbose_name='secret key'), ), ] django-allauth-0.35.0/allauth/socialaccount/migrations/0001_initial.py0000644000076500000240000000744313022325541026555 0ustar pennersrstaff00000000000000# -*- coding: utf-8 -*- from __future__ import unicode_literals from django.db import models, migrations from django.conf import settings import allauth.socialaccount.fields from allauth.socialaccount.providers import registry class Migration(migrations.Migration): dependencies = [ ('sites', '0001_initial'), migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name='SocialAccount', fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('provider', models.CharField(max_length=30, verbose_name='provider', choices=registry.as_choices())), ('uid', models.CharField(max_length=getattr(settings, 'SOCIALACCOUNT_UID_MAX_LENGTH', 191), verbose_name='uid')), ('last_login', models.DateTimeField(auto_now=True, verbose_name='last login')), ('date_joined', models.DateTimeField(auto_now_add=True, verbose_name='date joined')), ('extra_data', allauth.socialaccount.fields.JSONField(default='{}', verbose_name='extra data')), ('user', models.ForeignKey(to=settings.AUTH_USER_MODEL, on_delete=models.CASCADE)), ], options={ 'verbose_name': 'social account', 'verbose_name_plural': 'social accounts', }, bases=(models.Model,), ), migrations.CreateModel( name='SocialApp', fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('provider', models.CharField(max_length=30, verbose_name='provider', choices=registry.as_choices())), ('name', models.CharField(max_length=40, verbose_name='name')), ('client_id', models.CharField(help_text='App ID, or consumer key', max_length=100, verbose_name='client id')), ('secret', models.CharField(help_text='API secret, client secret, or consumer secret', max_length=100, verbose_name='secret key')), ('key', models.CharField(help_text='Key', max_length=100, verbose_name='key', blank=True)), ('sites', models.ManyToManyField(to='sites.Site', blank=True)), ], options={ 'verbose_name': 'social application', 'verbose_name_plural': 'social applications', }, bases=(models.Model,), ), migrations.CreateModel( name='SocialToken', fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('token', models.TextField(help_text='"oauth_token" (OAuth1) or access token (OAuth2)', verbose_name='token')), ('token_secret', models.TextField(help_text='"oauth_token_secret" (OAuth1) or refresh token (OAuth2)', verbose_name='token secret', blank=True)), ('expires_at', models.DateTimeField(null=True, verbose_name='expires at', blank=True)), ('account', models.ForeignKey(to='socialaccount.SocialAccount', on_delete=models.CASCADE)), ('app', models.ForeignKey(to='socialaccount.SocialApp', on_delete=models.CASCADE)), ], options={ 'verbose_name': 'social application token', 'verbose_name_plural': 'social application tokens', }, bases=(models.Model,), ), migrations.AlterUniqueTogether( name='socialtoken', unique_together=set([('app', 'account')]), ), migrations.AlterUniqueTogether( name='socialaccount', unique_together=set([('provider', 'uid')]), ), ] django-allauth-0.35.0/allauth/socialaccount/app_settings.py0000644000076500000240000000464413117447114025016 0ustar pennersrstaff00000000000000class AppSettings(object): def __init__(self, prefix): self.prefix = prefix def _setting(self, name, dflt): from django.conf import settings getter = getattr(settings, 'ALLAUTH_SETTING_GETTER', lambda name, dflt: getattr(settings, name, dflt)) return getter(self.prefix + name, dflt) @property def QUERY_EMAIL(self): """ Request e-mail address from 3rd party account provider? E.g. using OpenID AX """ from allauth.account import app_settings as account_settings return self._setting("QUERY_EMAIL", account_settings.EMAIL_REQUIRED) @property def AUTO_SIGNUP(self): """ Attempt to bypass the signup form by using fields (e.g. username, email) retrieved from the social account provider. If a conflict arises due to a duplicate e-mail signup form will still kick in. """ return self._setting("AUTO_SIGNUP", True) @property def PROVIDERS(self): """ Provider specific settings """ return self._setting("PROVIDERS", {}) @property def EMAIL_REQUIRED(self): """ The user is required to hand over an e-mail address when signing up """ from allauth.account import app_settings as account_settings return self._setting("EMAIL_REQUIRED", account_settings.EMAIL_REQUIRED) @property def EMAIL_VERIFICATION(self): """ See e-mail verification method """ from allauth.account import app_settings as account_settings return self._setting("EMAIL_VERIFICATION", account_settings.EMAIL_VERIFICATION) @property def ADAPTER(self): return self._setting('ADAPTER', 'allauth.socialaccount.adapter' '.DefaultSocialAccountAdapter') @property def FORMS(self): return self._setting('FORMS', {}) @property def STORE_TOKENS(self): return self._setting('STORE_TOKENS', True) @property def UID_MAX_LENGTH(self): return 191 # Ugly? Guido recommends this himself ... # http://mail.python.org/pipermail/python-ideas/2012-May/014969.html import sys # noqa app_settings = AppSettings('SOCIALACCOUNT_') app_settings.__name__ = __name__ sys.modules[__name__] = app_settings django-allauth-0.35.0/allauth/socialaccount/models.py0000644000076500000240000002753713235130412023576 0ustar pennersrstaff00000000000000from __future__ import absolute_import from django.contrib.auth import authenticate from django.contrib.sites.models import Site from django.contrib.sites.shortcuts import get_current_site from django.core.exceptions import PermissionDenied from django.db import models from django.utils.crypto import get_random_string from django.utils.encoding import force_text, python_2_unicode_compatible from django.utils.translation import ugettext_lazy as _ import allauth.app_settings from allauth.account.models import EmailAddress from allauth.account.utils import get_next_redirect_url, setup_user_email from allauth.utils import get_user_model from . import app_settings, providers from ..utils import get_request_param from .adapter import get_adapter from .fields import JSONField class SocialAppManager(models.Manager): def get_current(self, provider, request=None): cache = {} if request: cache = getattr(request, '_socialapp_cache', {}) request._socialapp_cache = cache app = cache.get(provider) if not app: site = get_current_site(request) app = self.get( sites__id=site.id, provider=provider) cache[provider] = app return app @python_2_unicode_compatible class SocialApp(models.Model): objects = SocialAppManager() provider = models.CharField(verbose_name=_('provider'), max_length=30, choices=providers.registry.as_choices()) name = models.CharField(verbose_name=_('name'), max_length=40) client_id = models.CharField(verbose_name=_('client id'), max_length=191, help_text=_('App ID, or consumer key')) secret = models.CharField(verbose_name=_('secret key'), max_length=191, help_text=_('API secret, client secret, or' ' consumer secret')) key = models.CharField(verbose_name=_('key'), max_length=191, blank=True, help_text=_('Key')) # Most apps can be used across multiple domains, therefore we use # a ManyToManyField. Note that Facebook requires an app per domain # (unless the domains share a common base name). # blank=True allows for disabling apps without removing them sites = models.ManyToManyField(Site, blank=True) class Meta: verbose_name = _('social application') verbose_name_plural = _('social applications') def __str__(self): return self.name @python_2_unicode_compatible class SocialAccount(models.Model): user = models.ForeignKey(allauth.app_settings.USER_MODEL, on_delete=models.CASCADE) provider = models.CharField(verbose_name=_('provider'), max_length=30, choices=providers.registry.as_choices()) # Just in case you're wondering if an OpenID identity URL is going # to fit in a 'uid': # # Ideally, URLField(max_length=1024, unique=True) would be used # for identity. However, MySQL has a max_length limitation of 191 # for URLField (in case of utf8mb4). How about # models.TextField(unique=True) then? Well, that won't work # either for MySQL due to another bug[1]. So the only way out # would be to drop the unique constraint, or switch to shorter # identity URLs. Opted for the latter, as [2] suggests that # identity URLs are supposed to be short anyway, at least for the # old spec. # # [1] http://code.djangoproject.com/ticket/2495. # [2] http://openid.net/specs/openid-authentication-1_1.html#limits uid = models.CharField(verbose_name=_('uid'), max_length=app_settings.UID_MAX_LENGTH) last_login = models.DateTimeField(verbose_name=_('last login'), auto_now=True) date_joined = models.DateTimeField(verbose_name=_('date joined'), auto_now_add=True) extra_data = JSONField(verbose_name=_('extra data'), default=dict) class Meta: unique_together = ('provider', 'uid') verbose_name = _('social account') verbose_name_plural = _('social accounts') def authenticate(self): return authenticate(account=self) def __str__(self): return force_text(self.user) def get_profile_url(self): return self.get_provider_account().get_profile_url() def get_avatar_url(self): return self.get_provider_account().get_avatar_url() def get_provider(self): return providers.registry.by_id(self.provider) def get_provider_account(self): return self.get_provider().wrap_account(self) @python_2_unicode_compatible class SocialToken(models.Model): app = models.ForeignKey(SocialApp, on_delete=models.CASCADE) account = models.ForeignKey(SocialAccount, on_delete=models.CASCADE) token = models.TextField( verbose_name=_('token'), help_text=_( '"oauth_token" (OAuth1) or access token (OAuth2)')) token_secret = models.TextField( blank=True, verbose_name=_('token secret'), help_text=_( '"oauth_token_secret" (OAuth1) or refresh token (OAuth2)')) expires_at = models.DateTimeField(blank=True, null=True, verbose_name=_('expires at')) class Meta: unique_together = ('app', 'account') verbose_name = _('social application token') verbose_name_plural = _('social application tokens') def __str__(self): return self.token class SocialLogin(object): """ Represents a social user that is in the process of being logged in. This consists of the following information: `account` (`SocialAccount` instance): The social account being logged in. Providers are not responsible for checking whether or not an account already exists or not. Therefore, a provider typically creates a new (unsaved) `SocialAccount` instance. The `User` instance pointed to by the account (`account.user`) may be prefilled by the provider for use as a starting point later on during the signup process. `token` (`SocialToken` instance): An optional access token token that results from performing a successful authentication handshake. `state` (`dict`): The state to be preserved during the authentication handshake. Note that this state may end up in the url -- do not put any secrets in here. It currently only contains the url to redirect to after login. `email_addresses` (list of `EmailAddress`): Optional list of e-mail addresses retrieved from the provider. """ def __init__(self, user=None, account=None, token=None, email_addresses=[]): if token: assert token.account is None or token.account == account self.token = token self.user = user self.account = account self.email_addresses = email_addresses self.state = {} def connect(self, request, user): self.user = user self.save(request, connect=True) def serialize(self): serialize_instance = get_adapter().serialize_instance ret = dict(account=serialize_instance(self.account), user=serialize_instance(self.user), state=self.state, email_addresses=[serialize_instance(ea) for ea in self.email_addresses]) if self.token: ret['token'] = serialize_instance(self.token) return ret @classmethod def deserialize(cls, data): deserialize_instance = get_adapter().deserialize_instance account = deserialize_instance(SocialAccount, data['account']) user = deserialize_instance(get_user_model(), data['user']) if 'token' in data: token = deserialize_instance(SocialToken, data['token']) else: token = None email_addresses = [] for ea in data['email_addresses']: email_address = deserialize_instance(EmailAddress, ea) email_addresses.append(email_address) ret = SocialLogin() ret.token = token ret.account = account ret.user = user ret.email_addresses = email_addresses ret.state = data['state'] return ret def save(self, request, connect=False): """ Saves a new account. Note that while the account is new, the user may be an existing one (when connecting accounts) """ assert not self.is_existing user = self.user user.save() self.account.user = user self.account.save() if app_settings.STORE_TOKENS and self.token: self.token.account = self.account self.token.save() if connect: # TODO: Add any new email addresses automatically? pass else: setup_user_email(request, user, self.email_addresses) @property def is_existing(self): """ Account is temporary, not yet backed by a database record. """ return self.account.pk def lookup(self): """ Lookup existing account, if any. """ assert not self.is_existing try: a = SocialAccount.objects.get(provider=self.account.provider, uid=self.account.uid) # Update account a.extra_data = self.account.extra_data self.account = a self.user = self.account.user a.save() # Update token if app_settings.STORE_TOKENS and self.token: assert not self.token.pk try: t = SocialToken.objects.get(account=self.account, app=self.token.app) t.token = self.token.token if self.token.token_secret: # only update the refresh token if we got one # many oauth2 providers do not resend the refresh token t.token_secret = self.token.token_secret t.expires_at = self.token.expires_at t.save() self.token = t except SocialToken.DoesNotExist: self.token.account = a self.token.save() except SocialAccount.DoesNotExist: pass def get_redirect_url(self, request): url = self.state.get('next') return url @classmethod def state_from_request(cls, request): state = {} next_url = get_next_redirect_url(request) if next_url: state['next'] = next_url state['process'] = get_request_param(request, 'process', 'login') state['scope'] = get_request_param(request, 'scope', '') state['auth_params'] = get_request_param(request, 'auth_params', '') return state @classmethod def stash_state(cls, request): state = cls.state_from_request(request) verifier = get_random_string() request.session['socialaccount_state'] = (state, verifier) return verifier @classmethod def unstash_state(cls, request): if 'socialaccount_state' not in request.session: raise PermissionDenied() state, verifier = request.session.pop('socialaccount_state') return state @classmethod def verify_and_unstash_state(cls, request, verifier): if 'socialaccount_state' not in request.session: raise PermissionDenied() state, verifier2 = request.session.pop('socialaccount_state') if verifier != verifier2: raise PermissionDenied() return state django-allauth-0.35.0/allauth/socialaccount/fields.py0000644000076500000240000000345713235130412023554 0ustar pennersrstaff00000000000000# Courtesy of django-social-auth import json import django from django.core.exceptions import ValidationError from django.db import models from django.utils import six class JSONField(models.TextField): """Simple JSON field that stores python structures as JSON strings on database. """ if django.VERSION < (2, 0): def from_db_value(self, value, expression, connection, context): return self.to_python(value) else: def from_db_value(self, value, expression, connection): return self.to_python(value) def to_python(self, value): """ Convert the input JSON value into python structures, raises django.core.exceptions.ValidationError if the data can't be converted. """ if self.blank and not value: return None if isinstance(value, six.string_types): try: return json.loads(value) except Exception as e: raise ValidationError(str(e)) else: return value def validate(self, value, model_instance): """Check value is a valid JSON string, raise ValidationError on error.""" if isinstance(value, six.string_types): super(JSONField, self).validate(value, model_instance) try: json.loads(value) except Exception as e: raise ValidationError(str(e)) def get_prep_value(self, value): """Convert value to JSON string before save""" try: return json.dumps(value) except Exception as e: raise ValidationError(str(e)) def value_from_object(self, obj): """Return value dumped to string.""" val = super(JSONField, self).value_from_object(obj) return self.get_prep_value(val) django-allauth-0.35.0/allauth/socialaccount/adapter.py0000644000076500000240000001673213235130412023726 0ustar pennersrstaff00000000000000from __future__ import absolute_import from django.core.exceptions import ValidationError from django.urls import reverse from django.utils.translation import ugettext_lazy as _ from . import app_settings from ..account import app_settings as account_settings from ..account.adapter import get_adapter as get_account_adapter from ..account.app_settings import EmailVerificationMethod from ..account.models import EmailAddress from ..account.utils import user_email, user_field, user_username from ..utils import ( deserialize_instance, email_address_exists, import_attribute, serialize_instance, valid_email_or_none, ) class DefaultSocialAccountAdapter(object): error_messages = { 'email_taken': _("An account already exists with this e-mail address." " Please sign in to that account first, then connect" " your %s account.") } def __init__(self, request=None): self.request = request def pre_social_login(self, request, sociallogin): """ Invoked just after a user successfully authenticates via a social provider, but before the login is actually processed (and before the pre_social_login signal is emitted). You can use this hook to intervene, e.g. abort the login by raising an ImmediateHttpResponse Why both an adapter hook and the signal? Intervening in e.g. the flow from within a signal handler is bad -- multiple handlers may be active and are executed in undetermined order. """ pass def authentication_error(self, request, provider_id, error=None, exception=None, extra_context=None): """ Invoked when there is an error in the authentication cycle. In this case, pre_social_login will not be reached. You can use this hook to intervene, e.g. redirect to an educational flow by raising an ImmediateHttpResponse. """ pass def new_user(self, request, sociallogin): """ Instantiates a new User instance. """ return get_account_adapter().new_user(request) def save_user(self, request, sociallogin, form=None): """ Saves a newly signed up social login. In case of auto-signup, the signup form is not available. """ u = sociallogin.user u.set_unusable_password() if form: get_account_adapter().save_user(request, u, form) else: get_account_adapter().populate_username(request, u) sociallogin.save(request) return u def populate_user(self, request, sociallogin, data): """ Hook that can be used to further populate the user instance. For convenience, we populate several common fields. Note that the user instance being populated represents a suggested User instance that represents the social user that is in the process of being logged in. The User instance need not be completely valid and conflict free. For example, verifying whether or not the username already exists, is not a responsibility. """ username = data.get('username') first_name = data.get('first_name') last_name = data.get('last_name') email = data.get('email') name = data.get('name') user = sociallogin.user user_username(user, username or '') user_email(user, valid_email_or_none(email) or '') name_parts = (name or '').partition(' ') user_field(user, 'first_name', first_name or name_parts[0]) user_field(user, 'last_name', last_name or name_parts[2]) return user def get_connect_redirect_url(self, request, socialaccount): """ Returns the default URL to redirect to after successfully connecting a social account. """ assert request.user.is_authenticated url = reverse('socialaccount_connections') return url def validate_disconnect(self, account, accounts): """ Validate whether or not the socialaccount account can be safely disconnected. """ if len(accounts) == 1: # No usable password would render the local account unusable if not account.user.has_usable_password(): raise ValidationError(_("Your account has no password set" " up.")) # No email address, no password reset if app_settings.EMAIL_VERIFICATION \ == EmailVerificationMethod.MANDATORY: if EmailAddress.objects.filter(user=account.user, verified=True).count() == 0: raise ValidationError(_("Your account has no verified" " e-mail address.")) def is_auto_signup_allowed(self, request, sociallogin): # If email is specified, check for duplicate and if so, no auto signup. auto_signup = app_settings.AUTO_SIGNUP if auto_signup: email = user_email(sociallogin.user) # Let's check if auto_signup is really possible... if email: if account_settings.UNIQUE_EMAIL: if email_address_exists(email): # Oops, another user already has this address. # We cannot simply connect this social account # to the existing user. Reason is that the # email adress may not be verified, meaning, # the user may be a hacker that has added your # email address to their account in the hope # that you fall in their trap. We cannot # check on 'email_address.verified' either, # because 'email_address' is not guaranteed to # be verified. auto_signup = False # FIXME: We redirect to signup form -- user will # see email address conflict only after posting # whereas we detected it here already. elif app_settings.EMAIL_REQUIRED: # Nope, email is required and we don't have it yet... auto_signup = False return auto_signup def is_open_for_signup(self, request, sociallogin): """ Checks whether or not the site is open for signups. Next to simply returning True/False you can also intervene the regular flow by raising an ImmediateHttpResponse """ return get_account_adapter(request).is_open_for_signup(request) def get_signup_form_initial_data(self, sociallogin): user = sociallogin.user initial = { 'email': user_email(user) or '', 'username': user_username(user) or '', 'first_name': user_field(user, 'first_name') or '', 'last_name': user_field(user, 'last_name') or ''} return initial def deserialize_instance(self, model, data): return deserialize_instance(model, data) def serialize_instance(self, instance): return serialize_instance(instance) def get_adapter(request=None): return import_attribute(app_settings.ADAPTER)(request) django-allauth-0.35.0/allauth/socialaccount/providers/0000755000076500000240000000000013235133532023746 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/stackexchange/0000755000076500000240000000000013235133533026557 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/stackexchange/provider.py0000644000076500000240000000216413117447115030771 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class StackExchangeAccount(ProviderAccount): def get_profile_url(self): return self.account.extra_data.get('html_url') def get_avatar_url(self): return self.account.extra_data.get('avatar_url') def to_str(self): dflt = super(StackExchangeAccount, self).to_str() return self.account.extra_data.get('name', dflt) class StackExchangeProvider(OAuth2Provider): id = 'stackexchange' name = 'Stack Exchange' account_class = StackExchangeAccount def get_site(self): settings = self.get_settings() return settings.get('SITE', 'stackoverflow') def extract_uid(self, data): # `user_id` varies if you use the same account for # e.g. StackOverflow and ServerFault. Therefore, we pick # `account_id`. uid = str(data['account_id']) return uid def extract_common_fields(self, data): return dict(username=data.get('display_name')) provider_classes = [StackExchangeProvider] django-allauth-0.35.0/allauth/socialaccount/providers/stackexchange/__init__.py0000644000076500000240000000000012357313011030651 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/stackexchange/tests.py0000644000076500000240000000274313117447115030304 0ustar pennersrstaff00000000000000from allauth.socialaccount.tests import OAuth2TestsMixin from allauth.tests import MockedResponse, TestCase from .provider import StackExchangeProvider class StackExchangeTests(OAuth2TestsMixin, TestCase): provider_id = StackExchangeProvider.id def get_mocked_response(self): return MockedResponse(200, """ { "has_more": false, "items": [ { "is_employee": false, "last_access_date": 1356200390, "display_name": "pennersr", "account_id": 291652, "badge_counts": { "bronze": 2, "silver": 2, "gold": 0 }, "last_modified_date": 1356199552, "profile_image": "http://www.gravatar.com/avatar/053d648486d567d3143d6bad8df8cfeb?d=identicon&r=PG", "user_type": "registered", "creation_date": 1296223711, "reputation_change_quarter": 148, "reputation_change_year": 378, "reputation": 504, "link": "http://stackoverflow.com/users/593944/pennersr", "reputation_change_week": 0, "user_id": 593944, "reputation_change_month": 10, "reputation_change_day": 0 } ], "quota_max": 10000, "quota_remaining": 9999 }""") # noqa django-allauth-0.35.0/allauth/socialaccount/providers/stackexchange/urls.py0000644000076500000240000000026413117447115030123 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns from .provider import StackExchangeProvider urlpatterns = default_urlpatterns(StackExchangeProvider) django-allauth-0.35.0/allauth/socialaccount/providers/stackexchange/views.py0000644000076500000240000000220013117447115030263 0ustar pennersrstaff00000000000000import requests from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) from .provider import StackExchangeProvider class StackExchangeOAuth2Adapter(OAuth2Adapter): provider_id = StackExchangeProvider.id access_token_url = 'https://stackexchange.com/oauth/access_token' authorize_url = 'https://stackexchange.com/oauth' profile_url = 'https://api.stackexchange.com/2.1/me' def complete_login(self, request, app, token, **kwargs): provider = self.get_provider() site = provider.get_site() resp = requests.get(self.profile_url, params={'access_token': token.token, 'key': app.key, 'site': site}) extra_data = resp.json()['items'][0] return self.get_provider().sociallogin_from_response(request, extra_data) oauth2_login = OAuth2LoginView.adapter_view(StackExchangeOAuth2Adapter) oauth2_callback = OAuth2CallbackView.adapter_view(StackExchangeOAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/providers/fxa/0000755000076500000240000000000013235133532024524 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/fxa/models.py0000644000076500000240000000000013117447115026353 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/fxa/provider.py0000644000076500000240000000173113117447115026736 0ustar pennersrstaff00000000000000from django.conf import settings from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider _FXA_SETTINGS = getattr( settings, 'SOCIALACCOUNT_PROVIDERS', {}).get('fxa', {}) FXA_OAUTH_ENDPOINT = _FXA_SETTINGS.get( 'OAUTH_ENDPOINT', 'https://oauth.accounts.firefox.com/v1') FXA_PROFILE_ENDPOINT = _FXA_SETTINGS.get( 'PROFILE_ENDPOINT', 'https://profile.accounts.firefox.com/v1') class FirefoxAccountsAccount(ProviderAccount): def to_str(self): return self.account.uid class FirefoxAccountsProvider(OAuth2Provider): id = 'fxa' name = 'Firefox Accounts' account_class = FirefoxAccountsAccount def get_default_scope(self): return ['profile'] def extract_uid(self, data): return str(data['uid']) def extract_common_fields(self, data): return dict(email=data.get('email')) provider_classes = [FirefoxAccountsProvider] django-allauth-0.35.0/allauth/socialaccount/providers/fxa/__init__.py0000644000076500000240000000000012671004326026624 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/fxa/tests.py0000644000076500000240000000070213235130412026231 0ustar pennersrstaff00000000000000from allauth.socialaccount.tests import OAuth2TestsMixin from allauth.tests import MockedResponse, TestCase from .provider import FirefoxAccountsProvider class FirefoxAccountsTests(OAuth2TestsMixin, TestCase): provider_id = FirefoxAccountsProvider.id def get_mocked_response(self): return MockedResponse(200, """ { "uid":"6d940dd41e636cc156074109b8092f96", "email":"user@example.com" }""") django-allauth-0.35.0/allauth/socialaccount/providers/fxa/urls.py0000644000076500000240000000027013117447115026066 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns from .provider import FirefoxAccountsProvider urlpatterns = default_urlpatterns(FirefoxAccountsProvider) django-allauth-0.35.0/allauth/socialaccount/providers/fxa/views.py0000644000076500000240000000201413117447115026234 0ustar pennersrstaff00000000000000import requests from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) from .provider import ( FXA_OAUTH_ENDPOINT, FXA_PROFILE_ENDPOINT, FirefoxAccountsProvider, ) class FirefoxAccountsOAuth2Adapter(OAuth2Adapter): provider_id = FirefoxAccountsProvider.id access_token_url = FXA_OAUTH_ENDPOINT + '/token' authorize_url = FXA_OAUTH_ENDPOINT + '/authorization' profile_url = FXA_PROFILE_ENDPOINT + '/profile' def complete_login(self, request, app, token, **kwargs): headers = {'Authorization': 'Bearer {0}'.format(token.token)} resp = requests.get(self.profile_url, headers=headers) extra_data = resp.json() return self.get_provider().sociallogin_from_response(request, extra_data) oauth2_login = OAuth2LoginView.adapter_view(FirefoxAccountsOAuth2Adapter) oauth2_callback = OAuth2CallbackView.adapter_view(FirefoxAccountsOAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/providers/twitter/0000755000076500000240000000000013235133533025451 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/twitter/provider.py0000644000076500000240000000311413117447115027657 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.base import AuthAction, ProviderAccount from allauth.socialaccount.providers.oauth.provider import OAuthProvider class TwitterAccount(ProviderAccount): def get_screen_name(self): return self.account.extra_data.get('screen_name') def get_profile_url(self): ret = None screen_name = self.get_screen_name() if screen_name: ret = 'http://twitter.com/' + screen_name return ret def get_avatar_url(self): ret = None profile_image_url = self.account.extra_data.get('profile_image_url') if profile_image_url: # Hmm, hack to get our hands on the large image. Not # really documented, but seems to work. ret = profile_image_url.replace('_normal', '') return ret def to_str(self): screen_name = self.get_screen_name() return screen_name or super(TwitterAccount, self).to_str() class TwitterProvider(OAuthProvider): id = 'twitter' name = 'Twitter' account_class = TwitterAccount def get_auth_url(self, request, action): if action == AuthAction.REAUTHENTICATE: url = 'https://api.twitter.com/oauth/authorize' else: url = 'https://api.twitter.com/oauth/authenticate' return url def extract_uid(self, data): return data['id'] def extract_common_fields(self, data): return dict(username=data.get('screen_name'), name=data.get('name'), email=data.get('email'),) provider_classes = [TwitterProvider] django-allauth-0.35.0/allauth/socialaccount/providers/twitter/__init__.py0000644000076500000240000000000012357313011027543 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/twitter/tests.py0000644000076500000240000000740713117447115027200 0ustar pennersrstaff00000000000000# -*- coding: utf-8 -*- from allauth.socialaccount.tests import OAuthTestsMixin from allauth.tests import MockedResponse, TestCase from .provider import TwitterProvider class TwitterTests(OAuthTestsMixin, TestCase): provider_id = TwitterProvider.id def get_mocked_response(self): # FIXME: Replace with actual/complete Twitter response return [MockedResponse(200, r""" {"follow_request_sent": false, "profile_use_background_image": true, "id": 45671919, "verified": false, "profile_text_color": "333333", "profile_image_url_https": "https://pbs.twimg.com/profile_images/793142149/r_normal.png", "profile_sidebar_fill_color": "DDEEF6", "is_translator": false, "geo_enabled": false, "entities": {"description": {"urls": []}}, "followers_count": 43, "protected": false, "location": "The Netherlands", "default_profile_image": false, "id_str": "45671919", "status": {"contributors": null, "truncated": false, "text": "RT @denibertovic: Okay I'm definitely using django-allauth from now on. So easy to set up, far less time consuming, and it just works. #dja\u2026", "in_reply_to_status_id": null, "id": 400658301702381568, "favorite_count": 0, "source": "Twitter Web Client", "retweeted": true, "coordinates": null, "entities": {"symbols": [], "user_mentions": [{"indices": [3, 16], "screen_name": "denibertovic", "id": 23508244, "name": "Deni Bertovic", "id_str": "23508244"}], "hashtags": [{"indices": [135, 139], "text": "dja"}], "urls": []}, "in_reply_to_screen_name": null, "id_str": "400658301702381568", "retweet_count": 6, "in_reply_to_user_id": null, "favorited": false, "retweeted_status": {"lang": "en", "favorited": false, "in_reply_to_user_id": null, "contributors": null, "truncated": false, "text": "Okay I'm definitely using django-allauth from now on. So easy to set up, far less time consuming, and it just works. #django", "created_at": "Sun Jul 28 19:56:26 +0000 2013", "retweeted": true, "in_reply_to_status_id": null, "coordinates": null, "id": 361575897674956800, "entities": {"symbols": [], "user_mentions": [], "hashtags": [{"indices": [117, 124], "text": "django"}], "urls": []}, "in_reply_to_status_id_str": null, "in_reply_to_screen_name": null, "source": "web", "place": null, "retweet_count": 6, "geo": null, "in_reply_to_user_id_str": null, "favorite_count": 8, "id_str": "361575897674956800"}, "geo": null, "in_reply_to_user_id_str": null, "lang": "en", "created_at": "Wed Nov 13 16:15:57 +0000 2013", "in_reply_to_status_id_str": null, "place": null}, "utc_offset": 3600, "statuses_count": 39, "description": "", "friends_count": 83, "profile_link_color": "0084B4", "profile_image_url": "http://pbs.twimg.com/profile_images/793142149/r_normal.png", "notifications": false, "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", "profile_background_color": "C0DEED", "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", "name": "Raymond Penners", "lang": "nl", "profile_background_tile": false, "favourites_count": 0, "screen_name": "pennersr", "url": null, "created_at": "Mon Jun 08 21:10:45 +0000 2009", "contributors_enabled": false, "time_zone": "Amsterdam", "profile_sidebar_border_color": "C0DEED", "default_profile": true, "following": false, "listed_count": 1} """)] # noqa def test_login(self): account = super(TwitterTests, self).test_login() tw_account = account.get_provider_account() self.assertEqual(tw_account.get_screen_name(), 'pennersr') self.assertEqual(tw_account.get_avatar_url(), 'http://pbs.twimg.com/profile_images/793142149/r.png') self.assertEqual(tw_account.get_profile_url(), 'http://twitter.com/pennersr') django-allauth-0.35.0/allauth/socialaccount/providers/twitter/urls.py0000644000076500000240000000024713117447115027016 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth.urls import default_urlpatterns from .provider import TwitterProvider urlpatterns = default_urlpatterns(TwitterProvider) django-allauth-0.35.0/allauth/socialaccount/providers/twitter/views.py0000644000076500000240000000277513117447115027176 0ustar pennersrstaff00000000000000import json from allauth.socialaccount.app_settings import QUERY_EMAIL from allauth.socialaccount.providers.oauth.client import OAuth from allauth.socialaccount.providers.oauth.views import ( OAuthAdapter, OAuthCallbackView, OAuthLoginView, ) from .provider import TwitterProvider class TwitterAPI(OAuth): """ Verifying twitter credentials """ _base_url = 'https://api.twitter.com/1.1/account/verify_credentials.json' url = _base_url + '?include_email=true' if QUERY_EMAIL else _base_url def get_user_info(self): user = json.loads(self.query(self.url)) return user class TwitterOAuthAdapter(OAuthAdapter): provider_id = TwitterProvider.id request_token_url = 'https://api.twitter.com/oauth/request_token' access_token_url = 'https://api.twitter.com/oauth/access_token' # Issue #42 -- this one authenticates over and over again... # authorize_url = 'https://api.twitter.com/oauth/authorize' authorize_url = 'https://api.twitter.com/oauth/authenticate' def complete_login(self, request, app, token, response): client = TwitterAPI(request, app.client_id, app.secret, self.request_token_url) extra_data = client.get_user_info() return self.get_provider().sociallogin_from_response(request, extra_data) oauth_login = OAuthLoginView.adapter_view(TwitterOAuthAdapter) oauth_callback = OAuthCallbackView.adapter_view(TwitterOAuthAdapter) django-allauth-0.35.0/allauth/socialaccount/providers/eveonline/0000755000076500000240000000000013235133532025732 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/eveonline/provider.py0000644000076500000240000000266513117447115030153 0ustar pennersrstaff00000000000000from allauth.socialaccount.app_settings import STORE_TOKENS from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class EveOnlineAccount(ProviderAccount): def get_profile_url(self): return 'https://gate.eveonline.com/Profile/{char_name}'.format( char_name=self.account.extra_data.get('CharacterName')) def get_avatar_url(self): return ('https://image.eveonline.com/Character/' '{char_id}_128.jpg').format( char_id=self.account.extra_data.get('CharacterID', 1)) def to_str(self): dflt = super(EveOnlineAccount, self).to_str() return next( value for value in ( self.account.extra_data.get('CharacterName', None), self.account.extra_data.get('CharacterID', None), dflt ) if value is not None ) class EveOnlineProvider(OAuth2Provider): id = 'eveonline' name = 'EVE Online' account_class = EveOnlineAccount def get_default_scope(self): scopes = [] if STORE_TOKENS: scopes.append('publicData') return scopes def extract_uid(self, data): return str(data['CharacterOwnerHash']) def extract_common_fields(self, data): return dict(name=data.get('CharacterName')) provider_classes = [EveOnlineProvider] django-allauth-0.35.0/allauth/socialaccount/providers/eveonline/__init__.py0000644000076500000240000000000012710743613030035 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/eveonline/tests.py0000644000076500000240000000112013117447115027444 0ustar pennersrstaff00000000000000from allauth.socialaccount.tests import OAuth2TestsMixin from allauth.tests import MockedResponse, TestCase from .provider import EveOnlineProvider class EveOnlineTests(OAuth2TestsMixin, TestCase): provider_id = EveOnlineProvider.id def get_mocked_response(self): return MockedResponse(200, """ { "CharacterID": 273042051, "CharacterName": "CCP illurkall", "ExpiresOn": "2014-05-23T15:01:15.182864Z", "Scopes": " ", "TokenType": "Character", "CharacterOwnerHash": "XM4D...FoY=" }""") django-allauth-0.35.0/allauth/socialaccount/providers/eveonline/urls.py0000644000076500000240000000025413117447115027276 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns from .provider import EveOnlineProvider urlpatterns = default_urlpatterns(EveOnlineProvider) django-allauth-0.35.0/allauth/socialaccount/providers/eveonline/views.py0000644000076500000240000000171113117447115027445 0ustar pennersrstaff00000000000000import requests from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) from .provider import EveOnlineProvider class EveOnlineOAuth2Adapter(OAuth2Adapter): provider_id = EveOnlineProvider.id access_token_url = 'https://login.eveonline.com/oauth/token' authorize_url = 'https://login.eveonline.com/oauth/authorize' profile_url = 'https://login.eveonline.com/oauth/verify' def complete_login(self, request, app, token, **kwargs): resp = requests.get(self.profile_url, headers={'Authorization': 'Bearer ' + token.token}) extra_data = resp.json() return self.get_provider().sociallogin_from_response(request, extra_data) oauth2_login = OAuth2LoginView.adapter_view(EveOnlineOAuth2Adapter) oauth2_callback = OAuth2CallbackView.adapter_view(EveOnlineOAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/providers/dwolla/0000755000076500000240000000000013235133532025230 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/dwolla/models.py0000644000076500000240000000000013117447115027057 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/dwolla/provider.py0000644000076500000240000000113713117447115027442 0ustar pennersrstaff00000000000000"""Provider for Dwolla""" from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class DwollaAccount(ProviderAccount): """Dwolla Account""" pass class DwollaProvider(OAuth2Provider): """Provider for Dwolla""" id = 'dwolla' name = 'Dwolla' account_class = DwollaAccount def extract_uid(self, data): return str(data.get('id', None)) def extract_common_fields(self, data): return dict( name=data.get('name'), ) provider_classes = [DwollaProvider] django-allauth-0.35.0/allauth/socialaccount/providers/dwolla/__init__.py0000644000076500000240000000000013067642763027345 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/dwolla/test.py0000644000076500000240000000137613117447115026574 0ustar pennersrstaff00000000000000from allauth.socialaccount.tests import OAuth2TestsMixin from allauth.tests import MockedResponse, TestCase from .provider import DwollaProvider class DwollaTests(OAuth2TestsMixin, TestCase): provider_id = DwollaProvider.id def get_mocked_response(self): return MockedResponse(200, """{ "id": "123", "_links":{"account":{"href":"http://localhost"}}, "name":"John Doe" }""") def get_login_response_json(self, with_refresh_token=True): rt = '' if with_refresh_token: rt = ',"refresh_token": "testrf"' return """{ "uid":"weibo", "access_token":"testac", "_links":{"account":{"href":"http://localhost"}} %s }""" % rt django-allauth-0.35.0/allauth/socialaccount/providers/dwolla/urls.py0000644000076500000240000000024613235130412026563 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns from .provider import DwollaProvider urlpatterns = default_urlpatterns(DwollaProvider) django-allauth-0.35.0/allauth/socialaccount/providers/dwolla/views.py0000644000076500000240000000302513235130412026731 0ustar pennersrstaff00000000000000import requests from django.conf import settings from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) from .provider import DwollaProvider ENVIRONMENTS = { 'production': { 'auth_url': 'https://www.dwolla.com/oauth/v2/authenticate', 'token_url': 'https://www.dwolla.com/oauth/v2/token', }, 'sandbox': { 'auth_url': 'https://uat.dwolla.com/oauth/v2/authenticate', 'token_url': 'https://uat.dwolla.com/oauth/v2/token', } } ENV = getattr(settings, 'SOCIALACCOUNT_PROVIDERS', {}).get( 'dwolla', {}).get('ENVIROMENT', 'production') AUTH_URL = ENVIRONMENTS[ENV]['auth_url'] TOKEN_URL = ENVIRONMENTS[ENV]['token_url'] class DwollaOAuth2Adapter(OAuth2Adapter): """Dwolla Views Adapter""" scope_delimiter = '|' provider_id = DwollaProvider.id access_token_url = TOKEN_URL authorize_url = AUTH_URL def complete_login(self, request, app, token, response, **kwargs): resp = requests.get( response['_links']['account']['href'], headers={ 'authorization': 'Bearer %s' % token.token, 'accept': 'application/vnd.dwolla.v1.hal+json', }, ) extra_data = resp.json() return self.get_provider().sociallogin_from_response( request, extra_data ) oauth2_login = OAuth2LoginView.adapter_view(DwollaOAuth2Adapter) oauth2_callback = OAuth2CallbackView.adapter_view(DwollaOAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/providers/draugiem/0000755000076500000240000000000013235133532025543 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/draugiem/provider.py0000644000076500000240000000337013235130412027744 0ustar pennersrstaff00000000000000from django.urls import reverse from django.utils.http import urlencode from allauth.socialaccount.providers.base import Provider, ProviderAccount class DraugiemAccount(ProviderAccount): def get_avatar_url(self): ret = None pic_small_url = self.account.extra_data.get('img') pic_icon_url = self.account.extra_data.get('imgi') pic_medium_url = self.account.extra_data.get('imgm') pic_large_url = self.account.extra_data.get('imgl') if pic_large_url: return pic_large_url elif pic_medium_url: return pic_medium_url elif pic_icon_url: return pic_icon_url elif pic_small_url: return pic_small_url else: return ret def to_str(self): default = super(DraugiemAccount, self).to_str() name = self.account.extra_data.get('name') surname = self.account.extra_data.get('surnname') if name and surname: return '%s %s' % (name, surname) return default class DraugiemProvider(Provider): id = 'draugiem' name = 'Draugiem' account_class = DraugiemAccount def get_login_url(self, request, **kwargs): url = reverse(self.id + "_login") if kwargs: url = url + '?' + urlencode(kwargs) return url def extract_uid(self, data): return str(data['uid']) def extract_common_fields(self, data): uid = self.extract_uid(data) user_data = data['users'][uid] return dict(first_name=user_data.get('name'), last_name=user_data.get('surname')) def extract_extra_data(self, data): uid = self.extract_uid(data) return data['users'][uid] provider_classes = [DraugiemProvider] django-allauth-0.35.0/allauth/socialaccount/providers/draugiem/__init__.py0000644000076500000240000000000012671004326027643 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/draugiem/tests.py0000644000076500000240000001143013235130412027250 0ustar pennersrstaff00000000000000from hashlib import md5 from django.contrib.auth.models import User from django.contrib.sites.models import Site from django.urls import reverse from django.utils.http import urlencode from allauth.socialaccount import providers from allauth.socialaccount.models import SocialApp, SocialToken from allauth.tests import Mock, TestCase, patch from . import views from .provider import DraugiemProvider class DraugiemTests(TestCase): def setUp(self): # workaround to create a session. see: # https://code.djangoproject.com/ticket/11475 User.objects.create_user( 'anakin', 'skywalker@deathstar.example.com', 's1thrul3s') self.client.login(username='anakin', password='s1thrul3s') self.provider = providers.registry.by_id(DraugiemProvider.id) app = SocialApp.objects.create(provider=self.provider.id, name=self.provider.id, client_id='app123id', key=self.provider.id, secret='dummy') app.sites.add(Site.objects.get_current()) self.app = app def get_draugiem_login_response(self): """ Sample Draugiem.lv response """ return { "apikey": "12345", "uid": "42", "users": { "42": { "age": "266", "imgl": "http://cdn.memegenerator.net/instances/500x/23395689.jpg", "surname": "Skywalker", "url": "/user/42/", "imgi": "http://cdn.memegenerator.net/instances/500x/23395689.jpg", "nick": "Sky Guy", "created": "09.11.1812 11:26:15", "deleted": "false", "imgm": "http://cdn.memegenerator.net/instances/500x/23395689.jpg", "sex": "M", "type": "User_Default", "uid": "42", "place": "London", "emailHash": "3f198f21434gfd2f2b4rs05939shk93f3815bc6aa", "name": "Anakin", "adult": "1", "birthday": "1750-09-13", "img": "http://cdn.memegenerator.net/instances/500x/23395689.jpg" } } } def get_socialaccount(self, response, token): """ Returns SocialLogin based on the data from the request """ request = Mock() login = self.provider.sociallogin_from_response(request, response) login.token = token return login def mock_socialaccount_state(self): """ SocialLogin depends on Session state - a tuple of request params and a random string """ session = self.client.session session['socialaccount_state'] = ({ 'process': 'login', 'scope': '', 'auth_params': '' }, '12345') session.save() def test_login_redirect(self): response = self.client.get(reverse(views.login)) redirect_url = reverse(views.callback) full_redirect_url = "http://testserver" + redirect_url secret = self.app.secret + full_redirect_url redirect_url_hash = md5(secret.encode("utf-8")).hexdigest() params = { 'app': self.app.client_id, 'hash': redirect_url_hash, 'redirect': full_redirect_url, } self.assertRedirects(response, '%s?%s' % (views.AUTHORIZE_URL, urlencode(params)), fetch_redirect_response=False) def test_callback_no_auth_status(self): response = self.client.get(reverse(views.callback)) self.assertTemplateUsed(response, "socialaccount/authentication_error.html") def test_callback_invalid_auth_status(self): response = self.client.get(reverse(views.callback), {'dr_auth_status': 'fail'}) self.assertTemplateUsed(response, "socialaccount/authentication_error.html") def test_callback(self): with patch( 'allauth.socialaccount.providers.draugiem.views' '.draugiem_complete_login') as draugiem_complete_login: self.mock_socialaccount_state() response_json = self.get_draugiem_login_response() token = SocialToken(app=self.app, token=response_json['apikey']) login = self.get_socialaccount(response_json, token) draugiem_complete_login.return_value = login response = self.client.get( reverse(views.callback), {'dr_auth_status': 'ok', 'dr_auth_code': '42'}) self.assertRedirects(response, '/accounts/profile/', fetch_redirect_response=False) django-allauth-0.35.0/allauth/socialaccount/providers/draugiem/urls.py0000644000076500000240000000032713117447115027110 0ustar pennersrstaff00000000000000from django.conf.urls import url from . import views urlpatterns = [ url('^draugiem/login/$', views.login, name="draugiem_login"), url('^draugiem/callback/$', views.callback, name='draugiem_callback'), ] django-allauth-0.35.0/allauth/socialaccount/providers/draugiem/views.py0000644000076500000240000000542413235130412027251 0ustar pennersrstaff00000000000000import requests from hashlib import md5 from django.http import HttpResponseRedirect from django.urls import reverse from django.utils.http import urlencode from django.views.decorators.csrf import csrf_exempt from allauth.socialaccount import providers from allauth.socialaccount.helpers import ( complete_social_login, render_authentication_error, ) from allauth.socialaccount.models import SocialLogin, SocialToken from ..base import AuthError from .provider import DraugiemProvider class DraugiemApiError(Exception): pass ACCESS_TOKEN_URL = 'http://api.draugiem.lv/json' AUTHORIZE_URL = 'http://api.draugiem.lv/authorize' def login(request): app = providers.registry.by_id( DraugiemProvider.id, request).get_app(request) redirect_url = request.build_absolute_uri(reverse(callback)) redirect_url_hash = md5(( app.secret + redirect_url).encode('utf-8')).hexdigest() params = { 'app': app.client_id, 'hash': redirect_url_hash, 'redirect': redirect_url, } SocialLogin.stash_state(request) return HttpResponseRedirect('%s?%s' % (AUTHORIZE_URL, urlencode(params))) @csrf_exempt def callback(request): if 'dr_auth_status' not in request.GET: return render_authentication_error( request, DraugiemProvider.id, error=AuthError.UNKNOWN) if request.GET['dr_auth_status'] != 'ok': return render_authentication_error( request, DraugiemProvider.id, error=AuthError.DENIED) if 'dr_auth_code' not in request.GET: return render_authentication_error( request, DraugiemProvider.id, error=AuthError.UNKNOWN) ret = None auth_exception = None try: app = providers.registry.by_id( DraugiemProvider.id, request).get_app(request) login = draugiem_complete_login( request, app, request.GET['dr_auth_code']) login.state = SocialLogin.unstash_state(request) ret = complete_social_login(request, login) except (requests.RequestException, DraugiemApiError) as e: auth_exception = e if not ret: ret = render_authentication_error( request, DraugiemProvider.id, exception=auth_exception) return ret def draugiem_complete_login(request, app, code): provider = providers.registry.by_id(DraugiemProvider.id, request) response = requests.get(ACCESS_TOKEN_URL, { 'action': 'authorize', 'app': app.secret, 'code': code }) response.raise_for_status() response_json = response.json() if 'error' in response_json: raise DraugiemApiError(response_json['error']) token = SocialToken(app=app, token=response_json['apikey']) login = provider.sociallogin_from_response(request, response_json) login.token = token return login django-allauth-0.35.0/allauth/socialaccount/providers/box/0000755000076500000240000000000013235133532024536 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/box/provider.py0000644000076500000240000000104113117447115026742 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class BoxOAuth2Account(ProviderAccount): pass class BoxOAuth2Provider(OAuth2Provider): id = 'box' name = 'Box' account_class = BoxOAuth2Account def extract_uid(self, data): return data['id'] def extract_common_fields(self, data): return dict(name=data.get('display_name'), email=data.get('email')) provider_classes = [BoxOAuth2Provider] django-allauth-0.35.0/allauth/socialaccount/providers/box/__init__.py0000644000076500000240000000000013055274504026642 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/box/tests.py0000644000076500000240000000175613235130412026255 0ustar pennersrstaff00000000000000# -*- coding: utf-8 -*- from __future__ import unicode_literals from allauth.socialaccount.tests import OAuth2TestsMixin from allauth.tests import MockedResponse, TestCase from .provider import BoxOAuth2Provider class BoxOAuth2Tests(OAuth2TestsMixin, TestCase): provider_id = BoxOAuth2Provider.id def get_mocked_response(self): return [MockedResponse(200, """{ "type": "user", "id": "1185237519", "name": "Balls Johnson", "login": "balls@example.com", "created_at": "2017-02-18T21:16:39-08:00", "modified_at": "2017-02-18T21:19:11-08:00", "language": "en", "timezone": "America/Los_Angeles", "space_amount": 10737418240, "space_used": 0, "max_upload_size": 2147483648, "status": "active", "job_title": "", "phone": "123-345-5555", "address": "", "avatar_url": "https://app.box.com/api/avatar/large/1185237519" }""")] django-allauth-0.35.0/allauth/socialaccount/providers/box/urls.py0000644000076500000240000000025313117447115026101 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth.urls import default_urlpatterns from .provider import BoxOAuth2Provider urlpatterns = default_urlpatterns(BoxOAuth2Provider) django-allauth-0.35.0/allauth/socialaccount/providers/box/views.py0000644000076500000240000000203613117447115026252 0ustar pennersrstaff00000000000000import requests from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) from .provider import BoxOAuth2Provider class BoxOAuth2Adapter(OAuth2Adapter): provider_id = BoxOAuth2Provider.id access_token_url = 'https://api.box.com/oauth2/token' authorize_url = 'https://account.box.com/api/oauth2/authorize' profile_url = 'https://api.box.com/2.0/users/me' redirect_uri_protocol = None def complete_login(self, request, app, token, **kwargs): extra_data = requests.get(self.profile_url, params={ 'access_token': token.token }) # This only here because of weird response from the test suite if isinstance(extra_data, list): extra_data = extra_data[0] return self.get_provider().sociallogin_from_response( request, extra_data.json() ) oauth_login = OAuth2LoginView.adapter_view(BoxOAuth2Adapter) oauth_callback = OAuth2CallbackView.adapter_view(BoxOAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/providers/discord/0000755000076500000240000000000013235133532025375 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/discord/provider.py0000644000076500000240000000144113117447115027605 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class DiscordAccount(ProviderAccount): def to_str(self): dflt = super(DiscordAccount, self).to_str() return self.account.extra_data.get('username', dflt) class DiscordProvider(OAuth2Provider): id = 'discord' name = 'Discord' account_class = DiscordAccount def extract_uid(self, data): return str(data['id']) def extract_common_fields(self, data): return dict( email=data.get('email'), username=data.get('username'), name=data.get('username'), ) def get_default_scope(self): return ['email', 'identify'] provider_classes = [DiscordProvider] django-allauth-0.35.0/allauth/socialaccount/providers/discord/__init__.py0000644000076500000240000000000013031164344027473 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/discord/tests.py0000644000076500000240000000113013235130412027076 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.discord.provider import DiscordProvider from allauth.socialaccount.tests import OAuth2TestsMixin from allauth.tests import MockedResponse, TestCase class DiscordTests(OAuth2TestsMixin, TestCase): provider_id = DiscordProvider.id def get_mocked_response(self): return MockedResponse(200, """{ "id": "80351110224678912", "username": "Nelly", "discriminator": "1337", "avatar": "8342729096ea3675442027381ff50dfe", "verified": true, "email": "nelly@example.com" }""") django-allauth-0.35.0/allauth/socialaccount/providers/discord/urls.py0000644000076500000240000000031613117447115026740 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.discord.provider import DiscordProvider from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns urlpatterns = default_urlpatterns(DiscordProvider) django-allauth-0.35.0/allauth/socialaccount/providers/discord/views.py0000644000076500000240000000200113117447115027101 0ustar pennersrstaff00000000000000import requests from allauth.socialaccount.providers.discord.provider import DiscordProvider from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) class DiscordOAuth2Adapter(OAuth2Adapter): provider_id = DiscordProvider.id access_token_url = 'https://discordapp.com/api/oauth2/token' authorize_url = 'https://discordapp.com/api/oauth2/authorize' profile_url = 'https://discordapp.com/api/users/@me' def complete_login(self, request, app, token, **kwargs): headers = { 'Authorization': 'Bearer {0}'.format(token.token), 'Content-Type': 'application/json', } extra_data = requests.get(self.profile_url, headers=headers) return self.get_provider().sociallogin_from_response( request, extra_data.json() ) oauth2_login = OAuth2LoginView.adapter_view(DiscordOAuth2Adapter) oauth2_callback = OAuth2CallbackView.adapter_view(DiscordOAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/providers/oauth/0000755000076500000240000000000013235133533025067 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/oauth/provider.py0000644000076500000240000000225513235130412027270 0ustar pennersrstaff00000000000000from django.urls import reverse from django.utils.http import urlencode from allauth.compat import parse_qsl from allauth.socialaccount.providers.base import Provider class OAuthProvider(Provider): def get_login_url(self, request, **kwargs): url = reverse(self.id + "_login") if kwargs: url = url + '?' + urlencode(kwargs) return url def get_auth_params(self, request, action): settings = self.get_settings() ret = dict(settings.get('AUTH_PARAMS', {})) dynamic_auth_params = request.GET.get('auth_params', None) if dynamic_auth_params: ret.update(dict(parse_qsl(dynamic_auth_params))) return ret def get_auth_url(self, request, action): # TODO: This is ugly. Move authorization_url away from the # adapter into the provider. Hmpf, the line between # adapter/provider is a bit too thin here. return None def get_scope(self, request): settings = self.get_settings() scope = settings.get('SCOPE') if scope is None: scope = self.get_default_scope() return scope def get_default_scope(self): return [] django-allauth-0.35.0/allauth/socialaccount/providers/oauth/client.py0000644000076500000240000001655713117447115026740 0ustar pennersrstaff00000000000000""" Parts derived from socialregistration and authorized by: alen, pinda Inspired by: http://github.com/leah/python-oauth/blob/master/oauth/example/client.py http://github.com/facebook/tornado/blob/master/tornado/auth.py """ import requests from django.http import HttpResponseRedirect from django.utils.http import urlencode from django.utils.translation import gettext as _ from requests_oauthlib import OAuth1 from allauth.compat import parse_qsl, urlparse from allauth.utils import get_request_param def get_token_prefix(url): """ Returns a prefix for the token to store in the session so we can hold more than one single oauth provider's access key in the session. Example: The request token url ``http://twitter.com/oauth/request_token`` returns ``twitter.com`` """ return urlparse(url).netloc class OAuthError(Exception): pass class OAuthClient(object): def __init__(self, request, consumer_key, consumer_secret, request_token_url, access_token_url, callback_url, parameters=None, provider=None): self.request = request self.request_token_url = request_token_url self.access_token_url = access_token_url self.consumer_key = consumer_key self.consumer_secret = consumer_secret self.parameters = parameters self.callback_url = callback_url self.provider = provider self.errors = [] self.request_token = None self.access_token = None def _get_request_token(self): """ Obtain a temporary request token to authorize an access token and to sign the request to obtain the access token """ if self.request_token is None: get_params = {} if self.parameters: get_params.update(self.parameters) get_params['oauth_callback'] \ = self.request.build_absolute_uri(self.callback_url) rt_url = self.request_token_url + '?' + urlencode(get_params) oauth = OAuth1(self.consumer_key, client_secret=self.consumer_secret) response = requests.post(url=rt_url, auth=oauth) if response.status_code not in [200, 201]: raise OAuthError( _('Invalid response while obtaining request token' ' from "%s".') % get_token_prefix( self.request_token_url)) self.request_token = dict(parse_qsl(response.text)) self.request.session['oauth_%s_request_token' % get_token_prefix( self.request_token_url)] = self.request_token return self.request_token def get_access_token(self): """ Obtain the access token to access private resources at the API endpoint. """ if self.access_token is None: request_token = self._get_rt_from_session() oauth = OAuth1( self.consumer_key, client_secret=self.consumer_secret, resource_owner_key=request_token['oauth_token'], resource_owner_secret=request_token['oauth_token_secret']) at_url = self.access_token_url # Passing along oauth_verifier is required according to: # http://groups.google.com/group/twitter-development-talk/browse_frm/thread/472500cfe9e7cdb9# # Though, the custom oauth_callback seems to work without it? oauth_verifier = get_request_param(self.request, 'oauth_verifier') if oauth_verifier: at_url = at_url + '?' + urlencode( {'oauth_verifier': oauth_verifier}) response = requests.post(url=at_url, auth=oauth) if response.status_code not in [200, 201]: raise OAuthError( _('Invalid response while obtaining access token' ' from "%s".') % get_token_prefix( self.request_token_url)) self.access_token = dict(parse_qsl(response.text)) self.request.session['oauth_%s_access_token' % get_token_prefix( self.request_token_url)] = self.access_token return self.access_token def _get_rt_from_session(self): """ Returns the request token cached in the session by ``_get_request_token`` """ try: return self.request.session['oauth_%s_request_token' % get_token_prefix( self.request_token_url)] except KeyError: raise OAuthError(_('No request token saved for "%s".') % get_token_prefix(self.request_token_url)) def is_valid(self): try: self._get_rt_from_session() self.get_access_token() except OAuthError as e: self.errors.append(e.args[0]) return False return True def get_redirect(self, authorization_url, extra_params): """ Returns a ``HttpResponseRedirect`` object to redirect the user to the URL the OAuth provider handles authorization. """ request_token = self._get_request_token() params = {'oauth_token': request_token['oauth_token'], 'oauth_callback': self.request.build_absolute_uri( self.callback_url)} params.update(extra_params) url = authorization_url + '?' + urlencode(params) return HttpResponseRedirect(url) class OAuth(object): """ Base class to perform oauth signed requests from access keys saved in a user's session. See the ``OAuthTwitter`` class below for an example. """ def __init__(self, request, consumer_key, secret_key, request_token_url): self.request = request self.consumer_key = consumer_key self.secret_key = secret_key self.request_token_url = request_token_url def _get_at_from_session(self): """ Get the saved access token for private resources from the session. """ try: return self.request.session['oauth_%s_access_token' % get_token_prefix( self.request_token_url)] except KeyError: raise OAuthError( _('No access token saved for "%s".') % get_token_prefix(self.request_token_url)) def query(self, url, method="GET", params=dict(), headers=dict()): """ Request a API endpoint at ``url`` with ``params`` being either the POST or GET data. """ access_token = self._get_at_from_session() oauth = OAuth1( self.consumer_key, client_secret=self.secret_key, resource_owner_key=access_token['oauth_token'], resource_owner_secret=access_token['oauth_token_secret']) response = getattr(requests, method.lower())(url, auth=oauth, headers=headers, params=params) if response.status_code != 200: raise OAuthError( _('No access to private resources at "%s".') % get_token_prefix(self.request_token_url)) return response.text django-allauth-0.35.0/allauth/socialaccount/providers/oauth/__init__.py0000644000076500000240000000000012357313011027161 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/oauth/urls.py0000644000076500000240000000110413117447115026425 0ustar pennersrstaff00000000000000from django.conf.urls import include, url from allauth.utils import import_attribute def default_urlpatterns(provider): login_view = import_attribute( provider.get_package() + '.views.oauth_login') callback_view = import_attribute( provider.get_package() + '.views.oauth_callback') urlpatterns = [ url('^login/$', login_view, name=provider.id + "_login"), url('^login/callback/$', callback_view, name=provider.id + "_callback"), ] return [url('^' + provider.get_slug() + '/', include(urlpatterns))] django-allauth-0.35.0/allauth/socialaccount/providers/oauth/views.py0000644000076500000240000001020613235130412026566 0ustar pennersrstaff00000000000000from __future__ import absolute_import from django.urls import reverse from allauth.socialaccount import providers from allauth.socialaccount.helpers import ( complete_social_login, render_authentication_error, ) from allauth.socialaccount.models import SocialLogin, SocialToken from allauth.socialaccount.providers.oauth.client import ( OAuthClient, OAuthError, ) from ..base import AuthAction, AuthError class OAuthAdapter(object): def __init__(self, request): self.request = request def complete_login(self, request, app): """ Returns a SocialLogin instance """ raise NotImplementedError def get_provider(self): return providers.registry.by_id(self.provider_id, self.request) class OAuthView(object): @classmethod def adapter_view(cls, adapter): def view(request, *args, **kwargs): self = cls() self.request = request self.adapter = adapter(request) return self.dispatch(request, *args, **kwargs) return view def _get_client(self, request, callback_url): provider = self.adapter.get_provider() app = provider.get_app(request) scope = ' '.join(provider.get_scope(request)) parameters = {} if scope: parameters['scope'] = scope client = OAuthClient(request, app.client_id, app.secret, self.adapter.request_token_url, self.adapter.access_token_url, callback_url, parameters=parameters, provider=provider) return client class OAuthLoginView(OAuthView): def dispatch(self, request): callback_url = reverse(self.adapter.provider_id + "_callback") SocialLogin.stash_state(request) action = request.GET.get('action', AuthAction.AUTHENTICATE) provider = self.adapter.get_provider() auth_url = provider.get_auth_url(request, action) or self.adapter.authorize_url auth_params = provider.get_auth_params(request, action) client = self._get_client(request, callback_url) try: return client.get_redirect(auth_url, auth_params) except OAuthError as e: return render_authentication_error(request, self.adapter.provider_id, exception=e) class OAuthCallbackView(OAuthView): def dispatch(self, request): """ View to handle final steps of OAuth based authentication where the user gets redirected back to from the service provider """ login_done_url = reverse(self.adapter.provider_id + "_callback") client = self._get_client(request, login_done_url) if not client.is_valid(): if 'denied' in request.GET: error = AuthError.CANCELLED else: error = AuthError.UNKNOWN extra_context = dict(oauth_client=client) return render_authentication_error( request, self.adapter.provider_id, error=error, extra_context=extra_context) app = self.adapter.get_provider().get_app(request) try: access_token = client.get_access_token() token = SocialToken( app=app, token=access_token['oauth_token'], # .get() -- e.g. Evernote does not feature a secret token_secret=access_token.get('oauth_token_secret', '')) login = self.adapter.complete_login(request, app, token, response=access_token) login.token = token login.state = SocialLogin.unstash_state(request) return complete_social_login(request, login) except OAuthError as e: return render_authentication_error( request, self.adapter.provider_id, exception=e) django-allauth-0.35.0/allauth/socialaccount/providers/amazon/0000755000076500000240000000000013235133532025233 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/amazon/provider.py0000644000076500000240000000200613117447114027440 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class AmazonAccount(ProviderAccount): def to_str(self): return self.account.extra_data.get('name', super(AmazonAccount, self).to_str()) class AmazonProvider(OAuth2Provider): id = 'amazon' name = 'Amazon' account_class = AmazonAccount def get_default_scope(self): return ['profile'] def extract_uid(self, data): return str(data['user_id']) def extract_common_fields(self, data): # Hackish way of splitting the fullname. # Asumes no middlenames. name = data.get('name', '') first_name, last_name = name, '' if name and ' ' in name: first_name, last_name = name.split(' ', 1) return dict(email=data['email'], last_name=last_name, first_name=first_name) provider_classes = [AmazonProvider] django-allauth-0.35.0/allauth/socialaccount/providers/amazon/__init__.py0000644000076500000240000000000012671004326027333 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/amazon/tests.py0000644000076500000240000000104113235130412026735 0ustar pennersrstaff00000000000000from allauth.socialaccount.tests import OAuth2TestsMixin from allauth.tests import MockedResponse, TestCase from .provider import AmazonProvider class AmazonTests(OAuth2TestsMixin, TestCase): provider_id = AmazonProvider.id def get_mocked_response(self): return MockedResponse(200, """ { "Profile":{ "CustomerId":"amzn1.account.K2LI23KL2LK2", "Name":"John Doe", "PrimaryEmail":"johndoe@example.com" } }""") django-allauth-0.35.0/allauth/socialaccount/providers/amazon/urls.py0000644000076500000240000000024613117447114026577 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns from .provider import AmazonProvider urlpatterns = default_urlpatterns(AmazonProvider) django-allauth-0.35.0/allauth/socialaccount/providers/amazon/views.py0000644000076500000240000000226413117447114026751 0ustar pennersrstaff00000000000000import requests from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) from .provider import AmazonProvider class AmazonOAuth2Adapter(OAuth2Adapter): provider_id = AmazonProvider.id access_token_url = 'https://api.amazon.com/auth/o2/token' authorize_url = 'http://www.amazon.com/ap/oa' profile_url = 'https://www.amazon.com/ap/user/profile' supports_state = False redirect_uri_protocol = 'https' def complete_login(self, request, app, token, **kwargs): response = requests.get( self.profile_url, params={'access_token': token}) extra_data = response.json() if 'Profile' in extra_data: extra_data = { 'user_id': extra_data['Profile']['CustomerId'], 'name': extra_data['Profile']['Name'], 'email': extra_data['Profile']['PrimaryEmail'] } return self.get_provider().sociallogin_from_response( request, extra_data) oauth2_login = OAuth2LoginView.adapter_view(AmazonOAuth2Adapter) oauth2_callback = OAuth2CallbackView.adapter_view(AmazonOAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/providers/gitlab/0000755000076500000240000000000013235133532025210 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/gitlab/provider.py0000644000076500000240000000162213117447115027421 0ustar pennersrstaff00000000000000# -*- coding: utf-8 -*- from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class GitLabAccount(ProviderAccount): def get_profile_url(self): return self.account.extra_data.get('web_url') def get_avatar_url(self): return self.account.extra_data.get('avatar_url') def to_str(self): dflt = super(GitLabAccount, self).to_str() return self.account.extra_data.get('name', dflt) class GitLabProvider(OAuth2Provider): id = 'gitlab' name = 'GitLab' account_class = GitLabAccount def extract_uid(self, data): return str(data['id']) def extract_common_fields(self, data): return dict( email=data.get('email'), username=data.get('username'), name=data.get('name'), ) provider_classes = [GitLabProvider] django-allauth-0.35.0/allauth/socialaccount/providers/gitlab/__init__.py0000644000076500000240000000000012671004326027310 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/gitlab/tests.py0000644000076500000240000000256213235130412026723 0ustar pennersrstaff00000000000000# -*- coding: utf-8 -*- from allauth.socialaccount.providers.gitlab.provider import GitLabProvider from allauth.socialaccount.tests import OAuth2TestsMixin from allauth.tests import MockedResponse, TestCase class GitLabTests(OAuth2TestsMixin, TestCase): provider_id = GitLabProvider.id def get_mocked_response(self): return MockedResponse(200, """ { "avatar_url": "https://secure.gravatar.com/avatar/123", "bio": "", "can_create_group": "true", "can_create_project": "true", "color_scheme_id": 2, "created_at": "2015-12-14T23:40:33+0100", "current_sign_in_at": "2015-12-14T23:40:33+0100", "email": "mr.bob@gitlab.example.com", "id": 2, "identities": [], "is_admin": "false", "linkedin": "", "name": "Mr Bob", "private_token": "123", "projects_limit": 10, "skype": "mr.bob", "state": "active", "theme_id": 6, "twitter": "mrbob", "two_factor_enabled": "false", "username": "mr.bob", "web_url": "https://gitlab.example.com/u/mr.bob", "website_url": "https://example.com" } """) django-allauth-0.35.0/allauth/socialaccount/providers/gitlab/urls.py0000644000076500000240000000034313117447115026553 0ustar pennersrstaff00000000000000# -*- coding: utf-8 -*- from allauth.socialaccount.providers.gitlab.provider import GitLabProvider from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns urlpatterns = default_urlpatterns(GitLabProvider) django-allauth-0.35.0/allauth/socialaccount/providers/gitlab/views.py0000644000076500000240000000234413117447115026726 0ustar pennersrstaff00000000000000# -*- coding: utf-8 -*- import requests from allauth.socialaccount import app_settings from allauth.socialaccount.providers.gitlab.provider import GitLabProvider from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) class GitLabOAuth2Adapter(OAuth2Adapter): provider_id = GitLabProvider.id provider_default_url = 'https://gitlab.com' provider_api_version = 'v3' settings = app_settings.PROVIDERS.get(provider_id, {}) provider_base_url = settings.get('GITLAB_URL', provider_default_url) access_token_url = '{0}/oauth/token'.format(provider_base_url) authorize_url = '{0}/oauth/authorize'.format(provider_base_url) profile_url = '{0}/api/{1}/user'.format( provider_base_url, provider_api_version ) def complete_login(self, request, app, token, response): extra_data = requests.get(self.profile_url, params={ 'access_token': token.token }) return self.get_provider().sociallogin_from_response( request, extra_data.json() ) oauth2_login = OAuth2LoginView.adapter_view(GitLabOAuth2Adapter) oauth2_callback = OAuth2CallbackView.adapter_view(GitLabOAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/providers/baidu/0000755000076500000240000000000013235133532025032 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/baidu/provider.py0000644000076500000240000000167413117447114027251 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class BaiduAccount(ProviderAccount): def get_profile_url(self): return ( 'https://openapi.baidu.com' '/rest/2.0/passport/users/getLoggedInUser') def get_avatar_url(self): return ( 'http://tb.himg.baidu.com/sys/portraitn/item/' + self.account.extra_data.get('portrait')) def to_str(self): dflt = super(BaiduAccount, self).to_str() return self.account.extra_data.get('uname', dflt) class BaiduProvider(OAuth2Provider): id = 'baidu' name = 'Baidu' account_class = BaiduAccount def extract_uid(self, data): return data['uid'] def extract_common_fields(self, data): return dict(username=data.get('uid'), name=data.get('uname')) provider_classes = [BaiduProvider] django-allauth-0.35.0/allauth/socialaccount/providers/baidu/__init__.py0000644000076500000240000000000012671004326027132 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/baidu/tests.py0000644000076500000240000000062213117447114026551 0ustar pennersrstaff00000000000000from allauth.socialaccount.tests import OAuth2TestsMixin from allauth.tests import MockedResponse, TestCase from .provider import BaiduProvider class BaiduTests(OAuth2TestsMixin, TestCase): provider_id = BaiduProvider.id def get_mocked_response(self): return MockedResponse(200, """ {"portrait": "78c0e9839de59bbde7859ccf43", "uname": "\u90dd\u56fd\u715c", "uid": "3225892368"}""") django-allauth-0.35.0/allauth/socialaccount/providers/baidu/urls.py0000644000076500000240000000024413117447114026374 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns from .provider import BaiduProvider urlpatterns = default_urlpatterns(BaiduProvider) django-allauth-0.35.0/allauth/socialaccount/providers/baidu/views.py0000644000076500000240000000171413117447114026547 0ustar pennersrstaff00000000000000import requests from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) from .provider import BaiduProvider class BaiduOAuth2Adapter(OAuth2Adapter): provider_id = BaiduProvider.id access_token_url = 'https://openapi.baidu.com/oauth/2.0/token' authorize_url = 'https://openapi.baidu.com/oauth/2.0/authorize' profile_url = 'https://openapi.baidu.com/rest/2.0/passport/users/getLoggedInUser' # noqa def complete_login(self, request, app, token, **kwargs): resp = requests.get(self.profile_url, params={'access_token': token.token}) extra_data = resp.json() return self.get_provider().sociallogin_from_response(request, extra_data) oauth2_login = OAuth2LoginView.adapter_view(BaiduOAuth2Adapter) oauth2_callback = OAuth2CallbackView.adapter_view(BaiduOAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/providers/pinterest/0000755000076500000240000000000013235133533025764 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/pinterest/provider.py0000644000076500000240000000202113117447115030166 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class PinterestAccount(ProviderAccount): def get_profile_url(self): return self.account.extra_data.get('url') def to_str(self): dflt = super(PinterestAccount, self).to_str() return self.account.extra_data.get('username', dflt) class PinterestProvider(OAuth2Provider): id = 'pinterest' name = 'Pinterest' account_class = PinterestAccount def get_default_scope(self): # See: https://developers.pinterest.com/docs/api/overview/#scopes return ['read_public'] def extract_extra_data(self, data): return data.get('data', {}) def extract_uid(self, data): return str(data['data']['id']) def extract_common_fields(self, data): return dict(first_name=data.get('data', {}).get('first_name'), last_name=data.get('data', {}).get('last_name')) provider_classes = [PinterestProvider] django-allauth-0.35.0/allauth/socialaccount/providers/pinterest/__init__.py0000644000076500000240000000000012671004326030063 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/pinterest/tests.py0000644000076500000240000000107213117447115027503 0ustar pennersrstaff00000000000000from allauth.socialaccount.tests import OAuth2TestsMixin from allauth.tests import MockedResponse, TestCase from .provider import PinterestProvider class PinterestTests(OAuth2TestsMixin, TestCase): provider_id = PinterestProvider.id def get_mocked_response(self): return MockedResponse(200, """ { "data": { "url": "https://www.pinterest.com/muravskiyyarosl/", "first_name": "Jane", "last_name": "Doe", "id": "351247977031674143" } } """) django-allauth-0.35.0/allauth/socialaccount/providers/pinterest/urls.py0000644000076500000240000000025413117447115027327 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns from .provider import PinterestProvider urlpatterns = default_urlpatterns(PinterestProvider) django-allauth-0.35.0/allauth/socialaccount/providers/pinterest/views.py0000644000076500000240000000255713117447115027507 0ustar pennersrstaff00000000000000import requests from allauth.socialaccount import app_settings from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) from .provider import PinterestProvider class PinterestOAuth2Adapter(OAuth2Adapter): provider_id = PinterestProvider.id provider_default_url = 'api.pinterest.com' provider_default_api_version = 'v1' settings = app_settings.PROVIDERS.get(provider_id, {}) provider_base_url = settings.get('PINTEREST_URL', provider_default_url) provider_api_version = settings.get( 'PINTEREST_VERSION', provider_default_api_version) access_token_url = 'https://{0}/{1}/oauth/token'.format( provider_base_url, provider_api_version ) authorize_url = 'https://{0}/oauth/'.format(provider_base_url) profile_url = 'https://{0}/{1}/me'.format( provider_base_url, provider_api_version ) def complete_login(self, request, app, token, **kwargs): response = requests.get(self.profile_url, params={'access_token': token.token}) extra_data = response.json() return self.get_provider().sociallogin_from_response( request, extra_data) oauth2_login = OAuth2LoginView.adapter_view(PinterestOAuth2Adapter) oauth2_callback = OAuth2CallbackView.adapter_view(PinterestOAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/providers/windowslive/0000755000076500000240000000000013235133533026321 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/windowslive/provider.py0000644000076500000240000000235613235130412030524 0ustar pennersrstaff00000000000000from __future__ import unicode_literals from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class WindowsLiveAccount(ProviderAccount): def to_str(self): name = '{0} {1}'.format(self.account.extra_data.get('first_name', ''), self.account.extra_data.get('last_name', '')) if name.strip() != '': return name return super(WindowsLiveAccount, self).to_str() class WindowsLiveProvider(OAuth2Provider): id = str('windowslive') name = 'Live' account_class = WindowsLiveAccount def get_default_scope(self): """ Doc on scopes available at http://msdn.microsoft.com/en-us/library/dn631845.aspx """ return ['wl.basic', 'wl.emails'] def extract_uid(self, data): return str(data['id']) def extract_common_fields(self, data): try: email = data.get('emails').get('preferred') except AttributeError: email = None return dict(email=email, last_name=data.get('last_name'), first_name=data.get('first_name')) provider_classes = [WindowsLiveProvider] django-allauth-0.35.0/allauth/socialaccount/providers/windowslive/__init__.py0000644000076500000240000000000012671004326030420 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/windowslive/tests.py0000644000076500000240000000151113235130412030024 0ustar pennersrstaff00000000000000from allauth.socialaccount.tests import OAuth2TestsMixin from allauth.tests import MockedResponse, TestCase from .provider import WindowsLiveProvider class WindowsLiveTests(OAuth2TestsMixin, TestCase): provider_id = WindowsLiveProvider.id def get_mocked_response(self): return MockedResponse(200, """ { "first_name": "James", "last_name": "Smith", "name": "James Smith", "locale": "en_US", "gender": null, "emails": { "personal": null, "account": "jsmith@example.com", "business": null, "preferred": "jsmith@example.com" }, "link": "https://profile.live.com/", "updated_time": "2014-02-07T00:35:27+0000", "id": "83605e110af6ff98" } """) django-allauth-0.35.0/allauth/socialaccount/providers/windowslive/urls.py0000644000076500000240000000026013117447116027662 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns from .provider import WindowsLiveProvider urlpatterns = default_urlpatterns(WindowsLiveProvider) django-allauth-0.35.0/allauth/socialaccount/providers/windowslive/views.py0000644000076500000240000000274713235130412030033 0ustar pennersrstaff00000000000000from __future__ import unicode_literals import requests from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) from .provider import WindowsLiveProvider class WindowsLiveOAuth2Adapter(OAuth2Adapter): provider_id = WindowsLiveProvider.id access_token_url = 'https://login.live.com/oauth20_token.srf' authorize_url = 'https://login.live.com/oauth20_authorize.srf' profile_url = 'https://apis.live.net/v5.0/me' def complete_login(self, request, app, token, **kwargs): headers = {'Authorization': 'Bearer {0}'.format(token.token)} resp = requests.get(self.profile_url, headers=headers) # example of whats returned (in python format): # {'first_name': 'James', 'last_name': 'Smith', # 'name': 'James Smith', 'locale': 'en_US', 'gender': None, # 'emails': {'personal': None, 'account': 'jsmith@example.com', # 'business': None, 'preferred': 'jsmith@example.com'}, # 'link': 'https://profile.live.com/', # 'updated_time': '2014-02-07T00:35:27+0000', # 'id': '83605e110af6ff98'} resp.raise_for_status() extra_data = resp.json() return self.get_provider().sociallogin_from_response(request, extra_data) oauth2_login = OAuth2LoginView.adapter_view(WindowsLiveOAuth2Adapter) oauth2_callback = OAuth2CallbackView.adapter_view(WindowsLiveOAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/providers/bitly/0000755000076500000240000000000013235133532025071 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/bitly/provider.py0000644000076500000240000000160013117447115027276 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class BitlyAccount(ProviderAccount): def get_profile_url(self): return self.account.extra_data.get('profile_url') def get_avatar_url(self): return self.account.extra_data.get('profile_image') def to_str(self): dflt = super(BitlyAccount, self).to_str() return '%s (%s)' % ( self.account.extra_data.get('full_name', ''), dflt, ) class BitlyProvider(OAuth2Provider): id = 'bitly' name = 'Bitly' account_class = BitlyAccount def extract_uid(self, data): return str(data['login']) def extract_common_fields(self, data): return dict(username=data['login'], name=data.get('full_name')) provider_classes = [BitlyProvider] django-allauth-0.35.0/allauth/socialaccount/providers/bitly/__init__.py0000644000076500000240000000000012357313011027164 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/bitly/tests.py0000644000076500000240000000172513117447115026616 0ustar pennersrstaff00000000000000from allauth.socialaccount.tests import OAuth2TestsMixin from allauth.tests import MockedResponse, TestCase from .provider import BitlyProvider class BitlyTests(OAuth2TestsMixin, TestCase): provider_id = BitlyProvider.id def get_mocked_response(self): return MockedResponse(200, """{ "data": { "apiKey": "R_f6397a37e765574f2e198dba5bb59522", "custom_short_domain": null, "display_name": null, "full_name": "Bitly API Oauth Demo Account", "is_enterprise": false, "login": "bitlyapioauthdemo", "member_since": 1331567982, "profile_image": "http://bitly.com/u/bitlyapioauthdemo.png", "profile_url": "http://bitly.com/u/bitlyapioauthdemo", "share_accounts": [], "tracking_domains": [] }, "status_code": 200, "status_txt": "OK" }""") django-allauth-0.35.0/allauth/socialaccount/providers/bitly/urls.py0000644000076500000240000000024413117447115026434 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns from .provider import BitlyProvider urlpatterns = default_urlpatterns(BitlyProvider) django-allauth-0.35.0/allauth/socialaccount/providers/bitly/views.py0000644000076500000240000000171113117447115026604 0ustar pennersrstaff00000000000000import requests from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) from .provider import BitlyProvider class BitlyOAuth2Adapter(OAuth2Adapter): provider_id = BitlyProvider.id access_token_url = 'https://api-ssl.bitly.com/oauth/access_token' authorize_url = 'https://bitly.com/oauth/authorize' profile_url = 'https://api-ssl.bitly.com/v3/user/info' supports_state = False def complete_login(self, request, app, token, **kwargs): resp = requests.get( self.profile_url, params={'access_token': token.token} ) extra_data = resp.json()['data'] return self.get_provider().sociallogin_from_response(request, extra_data) oauth2_login = OAuth2LoginView.adapter_view(BitlyOAuth2Adapter) oauth2_callback = OAuth2CallbackView.adapter_view(BitlyOAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/providers/evernote/0000755000076500000240000000000013235133532025575 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/evernote/provider.py0000644000076500000240000000110313117447115030000 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth.provider import OAuthProvider class EvernoteAccount(ProviderAccount): def get_profile_url(self): return None def get_avatar_url(self): return None class EvernoteProvider(OAuthProvider): id = 'evernote' name = 'Evernote' account_class = EvernoteAccount def extract_uid(self, data): return str(data['edam_userId']) def extract_common_fields(self, data): return data provider_classes = [EvernoteProvider] django-allauth-0.35.0/allauth/socialaccount/providers/evernote/__init__.py0000644000076500000240000000000012671004326027675 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/evernote/tests.py0000644000076500000240000000155613117447115027324 0ustar pennersrstaff00000000000000# -*- coding: utf-8 -*- from __future__ import unicode_literals from allauth.socialaccount.tests import OAuthTestsMixin from allauth.tests import MockedResponse, TestCase from .provider import EvernoteProvider class EvernoteTests(OAuthTestsMixin, TestCase): provider_id = EvernoteProvider.id def get_mocked_response(self): return [] def get_access_token_response(self): return MockedResponse( 200, 'oauth_token=S%3Ds1%3AU%3D9876%3AE%3D999999b0c50%3AC%3D14c1f89dd18%3AP%3D81%3AA%3Dpennersr%3AV%3D2%3AH%3Ddeadf00dd2d6aba7b519923987b4bf77&oauth_token_secret=&edam_shard=s1&edam_userId=591969&edam_expires=1457994271824&edam_noteStoreUrl=https%3A%2F%2Fsandbox.evernote.com%2Fshard%2Fs1%2Fnotestore&edam_webApiUrlPrefix=https%3A%2F%2Fsandbox.evernote.com%2Fshard%2Fs1%2F', # noqa {'content-type': 'text/plain'}) django-allauth-0.35.0/allauth/socialaccount/providers/evernote/urls.py0000644000076500000240000000025113117447115027136 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth.urls import default_urlpatterns from .provider import EvernoteProvider urlpatterns = default_urlpatterns(EvernoteProvider) django-allauth-0.35.0/allauth/socialaccount/providers/evernote/views.py0000644000076500000240000000235613117447115027316 0ustar pennersrstaff00000000000000from __future__ import absolute_import from datetime import datetime from allauth.socialaccount import app_settings from allauth.socialaccount.providers.oauth.views import ( OAuthAdapter, OAuthCallbackView, OAuthLoginView, ) from .provider import EvernoteProvider class EvernoteOAuthAdapter(OAuthAdapter): provider_id = EvernoteProvider.id settings = app_settings.PROVIDERS.get(provider_id, {}) request_token_url = 'https://%s/oauth' % (settings.get( 'EVERNOTE_HOSTNAME', 'sandbox.evernote.com')) access_token_url = 'https://%s/oauth' % (settings.get( 'EVERNOTE_HOSTNAME', 'sandbox.evernote.com')) authorize_url = 'https://%s/OAuth.action' % (settings.get( 'EVERNOTE_HOSTNAME', 'sandbox.evernote.com')) def complete_login(self, request, app, token, response): token.expires_at = datetime.fromtimestamp( int(response['edam_expires']) / 1000.0) extra_data = response return self.get_provider().sociallogin_from_response(request, extra_data) oauth_login = OAuthLoginView.adapter_view(EvernoteOAuthAdapter) oauth_callback = OAuthCallbackView.adapter_view(EvernoteOAuthAdapter) django-allauth-0.35.0/allauth/socialaccount/providers/azure/0000755000076500000240000000000013235133532025074 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/azure/models.py0000644000076500000240000000003313235130412026717 0ustar pennersrstaff00000000000000# Create your models here. django-allauth-0.35.0/allauth/socialaccount/providers/azure/provider.py0000644000076500000240000000262013235130412027272 0ustar pennersrstaff00000000000000from __future__ import unicode_literals from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class AzureAccount(ProviderAccount): # TODO: # - avatar_url: # https://developer.microsoft.com/en-us/graph/docs/api-reference/beta/api/profilephoto_get # noqa def get_username(self): return self.account.extra_data['email'] def to_str(self): name = '{0} {1}'.format(self.account.extra_data.get('first_name', ''), self.account.extra_data.get('last_name', '')) if name.strip() != '': return name return super(AzureAccount, self).to_str() class AzureProvider(OAuth2Provider): id = str('azure') name = 'Azure' account_class = AzureAccount def get_default_scope(self): """ Doc on scopes available at https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-v2-scopes # noqa """ return ['User.Read', 'openid'] def extract_uid(self, data): return str(data['id']) def extract_common_fields(self, data): email = data.get('mail') return dict(email=email, username=email, last_name=data.get('surname'), first_name=data.get('givenName')) provider_classes = [AzureProvider] django-allauth-0.35.0/allauth/socialaccount/providers/azure/__init__.py0000644000076500000240000000000013235130412027165 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/azure/tests.py0000644000076500000240000000137413235130412026607 0ustar pennersrstaff00000000000000from allauth.socialaccount.tests import OAuth2TestsMixin from allauth.tests import MockedResponse, TestCase from .provider import AzureProvider class AzureTests(OAuth2TestsMixin, TestCase): provider_id = AzureProvider.id def get_mocked_response(self): return MockedResponse(200, """ {"displayName": "John Smith", "mobilePhone": null, "preferredLanguage": "en-US", "jobTitle": "Director", "userPrincipalName": "john@smith.com", "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users/$entity", "officeLocation": "Paris", "businessPhones": [], "mail": "john@smith.com", "surname": "Smith", "givenName": "John", "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"} """) django-allauth-0.35.0/allauth/socialaccount/providers/azure/urls.py0000644000076500000240000000024413235130412026425 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns from .provider import AzureProvider urlpatterns = default_urlpatterns(AzureProvider) django-allauth-0.35.0/allauth/socialaccount/providers/azure/views.py0000644000076500000240000000411013235130412026571 0ustar pennersrstaff00000000000000from __future__ import unicode_literals import requests from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) from .provider import AzureProvider LOGIN_URL = 'https://login.microsoftonline.com/common/oauth2/v2.0' GRAPH_URL = 'https://graph.microsoft.com/v1.0' class AzureOAuth2Adapter(OAuth2Adapter): """ Docs available at: https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-v2-protocols """ provider_id = AzureProvider.id access_token_url = LOGIN_URL + '/token' authorize_url = LOGIN_URL + '/authorize' profile_url = 'https://graph.microsoft.com/v1.0/me' # Can be used later to obtain group data. Needs 'Group.Read.All' or # similar. # # See https://developer.microsoft.com/en-us/graph/docs/api-reference/beta/api/user_list_memberof # noqa groups_url = GRAPH_URL + '/me/memberOf?$select=displayName' def complete_login(self, request, app, token, **kwargs): headers = {'Authorization': 'Bearer {0}'.format(token.token)} extra_data = {} resp = requests.get(self.profile_url, headers=headers) # See: # # https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/api/user_get # noqa # # example of what's returned (in python format) # # {u'displayName': u'John Smith', u'mobilePhone': None, # u'preferredLanguage': u'en-US', u'jobTitle': u'Director', # u'userPrincipalName': u'john@smith.com', # u'@odata.context': # u'https://graph.microsoft.com/v1.0/$metadata#users/$entity', # u'officeLocation': u'Paris', u'businessPhones': [], # u'mail': u'john@smith.com', u'surname': u'Smith', # u'givenName': u'John', u'id': u'aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee'} profile_data = resp.json() extra_data.update(profile_data) return self.get_provider().sociallogin_from_response(request, extra_data) oauth2_login = OAuth2LoginView.adapter_view(AzureOAuth2Adapter) oauth2_callback = OAuth2CallbackView.adapter_view(AzureOAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/providers/orcid/0000755000076500000240000000000013235133533025047 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/orcid/provider.py0000644000076500000240000000376713117447115027273 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class Scope(object): USERINFO_PROFILE = '/authenticate' class OrcidAccount(ProviderAccount): def get_profile_url(self): return extract_from_dict(self.account.extra_data, ['orcid-profile', 'orcid-identifier', 'uri']) def to_str(self): return self.account.uid class OrcidProvider(OAuth2Provider): id = 'orcid' name = 'Orcid.org' account_class = OrcidAccount def get_default_scope(self): return [Scope.USERINFO_PROFILE] def extract_uid(self, data): return extract_from_dict(data, ['orcid-profile', 'orcid-identifier', 'path']) def extract_common_fields(self, data): common_fields = dict( email=extract_from_dict(data, ['orcid-profile', 'orcid-bio', 'contact-details', 'email', 0, 'value']), last_name=extract_from_dict(data, ['orcid-profile', 'orcid-bio', 'personal-details', 'family-name', 'value']), first_name=extract_from_dict(data, ['orcid-profile', 'orcid-bio', 'personal-details', 'given-names', 'value']),) return dict((key, value) for (key, value) in common_fields.items() if value) provider_classes = [OrcidProvider] def extract_from_dict(data, path): """ Navigate `data`, a multidimensional array (list or dictionary), and returns the object at `path`. """ value = data try: for key in path: value = value[key] return value except (KeyError, IndexError, TypeError): return '' django-allauth-0.35.0/allauth/socialaccount/providers/orcid/__init__.py0000644000076500000240000000000012671004326027146 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/orcid/tests.py0000644000076500000240000001233313117447115026570 0ustar pennersrstaff00000000000000from allauth.socialaccount.tests import OAuth2TestsMixin from allauth.tests import MockedResponse, TestCase from .provider import OrcidProvider class OrcidTests(OAuth2TestsMixin, TestCase): provider_id = OrcidProvider.id def get_mocked_response(self): return MockedResponse(200, """ { "message-version": "1.1", "orcid-profile": { "orcid-bio": { "personal-details": { "given-names": { "value": "myname" }, "other-names": { "other-name": [ { "value": "myself" } ], "visibility": "PUBLIC" }, "family-name": { "value": "mylastname" } }, "delegation": null, "applications": null, "contact-details": { "email": [], "address": { "country": { "value": "AR", "visibility": "PUBLIC" } } }, "keywords": { "keyword": [ { "value": "basil" }, { "value": "pizza" } ], "visibility": "PUBLIC" }, "scope": null, "biography": { "value": "mybio", "visibility": "PUBLIC" } }, "group-type": null, "orcid-activities": { "affiliations": null, "orcid-works": { "scope": null, "orcid-work": [ { "put-code": "394644", "work-title": { "subtitle": null, "title": { "value": "titlepaper" } }, "visibility": "PUBLIC", "work-type": "CONFERENCE_PAPER", "url": null, "work-contributors": { "contributor": [ { "contributor-attributes": {}, "credit-name": { "value": "myname", "visibility": "PUBLIC" } } ] }, "work-source": { "path": "0000-0001-6796-198X", "host": "sandbox.orcid.org", "uri": "http://sandbox.orcid.org/...98X", "value": null } } ] } }, "orcid": null, "client-type": null, "orcid-history": { "last-modified-date": { "value": 1406058219693 }, "creation-method": "WEBSITE", "submission-date": { "value": 1405935036511 }, "visibility": null, "source": null, "claimed": { "value": true } }, "type": "USER", "orcid-preferences": { "locale": "EN" }, "orcid-identifier": { "path": "0000-0001-6796-198X", "host": "sandbox.orcid.org", "uri": "http://sandbox.orcid.org/0000-0001-6796-198X", "value": null } } }""") def get_login_response_json(self, with_refresh_token=True): # FIXME: This is not an actual response. I added this in order # to get the test suite going but did not verify to check the # exact response being returned. return """ { "access_token": "testac", "expires_in": 631138026, "token_type": "bearer", "orcid": "0000-0001-6796-198X", "scope": "/orcid-profile/read-limited", "refresh_token": "testrf" }""" django-allauth-0.35.0/allauth/socialaccount/providers/orcid/urls.py0000644000076500000240000000024413117447115026411 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns from .provider import OrcidProvider urlpatterns = default_urlpatterns(OrcidProvider) django-allauth-0.35.0/allauth/socialaccount/providers/orcid/views.py0000644000076500000240000000312313117447115026560 0ustar pennersrstaff00000000000000import requests from allauth.socialaccount import app_settings from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) from .provider import OrcidProvider class OrcidOAuth2Adapter(OAuth2Adapter): provider_id = OrcidProvider.id # http://support.orcid.org/knowledgebase/articles/335483-the-public- # client-orcid-api member_api_default = False base_domain_default = 'orcid.org' settings = app_settings.PROVIDERS.get(provider_id, {}) base_domain = settings.get('BASE_DOMAIN', base_domain_default) member_api = settings.get('MEMBER_API', member_api_default) api_domain = '{0}.{1}'.format('api' if member_api else 'pub', base_domain) authorize_url = 'https://{0}/oauth/authorize'.format(base_domain) access_token_url = 'https://{0}/oauth/token'.format(api_domain) profile_url = 'https://{0}/v1.2/%s/orcid-profile'.format(api_domain) def complete_login(self, request, app, token, **kwargs): params = {} if self.member_api: params['access_token'] = token.token resp = requests.get(self.profile_url % kwargs['response']['orcid'], params=params, headers={'accept': 'application/orcid+json'}) extra_data = resp.json() return self.get_provider().sociallogin_from_response(request, extra_data) oauth2_login = OAuth2LoginView.adapter_view(OrcidOAuth2Adapter) oauth2_callback = OAuth2CallbackView.adapter_view(OrcidOAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/providers/authentiq/0000755000076500000240000000000013235133532025750 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/authentiq/provider.py0000644000076500000240000000553013235130412030151 0ustar pennersrstaff00000000000000from allauth.account.models import EmailAddress from allauth.socialaccount import app_settings from allauth.socialaccount.providers.base import AuthAction, ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class Scope(object): NAME = 'aq:name' EMAIL = 'email' PHONE = 'phone' ADDRESS = 'address' LOCATION = 'aq:location' PUSH = 'aq:push' IDENTITY_CLAIMS = frozenset([ 'sub', 'name', 'given_name', 'family_name', 'middle_name', 'nickname', 'preferred_username', 'profile', 'picture', 'website', 'email', 'email_verified', 'gender', 'birthdate', 'zoneinfo', 'locale', 'phone_number', 'phone_number_verified', 'address', 'updated_at', 'aq:location' ]) class AuthentiqAccount(ProviderAccount): def get_profile_url(self): return self.account.extra_data.get('profile') def get_avatar_url(self): return self.account.extra_data.get('picture') def to_str(self): dflt = super(AuthentiqAccount, self).to_str() return self.account.extra_data.get('name', dflt) class AuthentiqProvider(OAuth2Provider): id = 'authentiq' name = 'Authentiq' account_class = AuthentiqAccount def get_scope(self, request): scope = set(super(AuthentiqProvider, self).get_scope(request)) scope.add("openid") if Scope.EMAIL in scope: modifiers = "" if app_settings.EMAIL_REQUIRED: modifiers += "r" if app_settings.EMAIL_VERIFICATION: modifiers += "s" if modifiers: scope.add(Scope.EMAIL + "~" + modifiers) scope.remove(Scope.EMAIL) return list(scope) def get_default_scope(self): scope = [Scope.NAME, Scope.PUSH] if app_settings.QUERY_EMAIL: scope.append(Scope.EMAIL) return scope def get_auth_params(self, request, action): ret = super(AuthentiqProvider, self).get_auth_params(request, action) if action == AuthAction.REAUTHENTICATE: ret['prompt'] = 'select_account' return ret def extract_uid(self, data): return str(data['sub']) def extract_common_fields(self, data): return dict( username=data.get('preferred_username', data.get('given_name')), email=data.get('email'), name=data.get('name'), first_name=data.get('given_name'), last_name=data.get('family_name') ) def extract_extra_data(self, data): return {k: v for k, v in data.items() if k in IDENTITY_CLAIMS} def extract_email_addresses(self, data): ret = [] email = data.get('email') if email and data.get('email_verified'): ret.append(EmailAddress(email=email, verified=True, primary=True)) return ret provider_classes = [AuthentiqProvider] django-allauth-0.35.0/allauth/socialaccount/providers/authentiq/__init__.py0000644000076500000240000000000013235130412030041 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/authentiq/tests.py0000644000076500000240000000645313235130412027466 0ustar pennersrstaff00000000000000# -*- coding: utf-8 -*- from __future__ import absolute_import, unicode_literals import json from django.test.client import RequestFactory from django.test.utils import override_settings from allauth.socialaccount.tests import OAuth2TestsMixin from allauth.tests import MockedResponse, TestCase from .provider import AuthentiqProvider from .views import AuthentiqOAuth2Adapter class AuthentiqTests(OAuth2TestsMixin, TestCase): provider_id = AuthentiqProvider.id def get_mocked_response(self): return MockedResponse(200, json.dumps({ "sub": "ZLARGMFT1M", "email": "jane@email.invalid", "email_verified": True, "given_name": "Jane", "family_name": "Doe", })) def test_default_scopes_no_email(self): scopes = self.provider.get_default_scope() self.assertIn("aq:name", scopes) self.assertNotIn("email", scopes) @override_settings( SOCIALACCOUNT_QUERY_EMAIL=True, ) def test_default_scopes_email(self): scopes = self.provider.get_default_scope() self.assertIn("aq:name", scopes) self.assertIn("email", scopes) def test_scopes(self): request = RequestFactory().get(AuthentiqOAuth2Adapter.authorize_url) scopes = self.provider.get_scope(request) self.assertIn("openid", scopes) self.assertIn("aq:name", scopes) def test_dynamic_scopes(self): request = RequestFactory().get( AuthentiqOAuth2Adapter.authorize_url, dict(scope="foo") ) scopes = self.provider.get_scope(request) self.assertIn("openid", scopes) self.assertIn("aq:name", scopes) self.assertIn("foo", scopes) @override_settings( SOCIALACCOUNT_QUERY_EMAIL=True, SOCIALACCOUNT_EMAIL_REQUIRED=True, SOCIALACCOUNT_EMAIL_VERIFICATION=True, ) def test_scopes_required_verified_email(self): request = RequestFactory().get(AuthentiqOAuth2Adapter.authorize_url) scopes = self.provider.get_scope(request) self.assertIn("email~rs", scopes) self.assertNotIn("email", scopes) @override_settings( SOCIALACCOUNT_QUERY_EMAIL=True, SOCIALACCOUNT_EMAIL_REQUIRED=False, SOCIALACCOUNT_EMAIL_VERIFICATION=True, ) def test_scopes_optional_verified_email(self): request = RequestFactory().get(AuthentiqOAuth2Adapter.authorize_url) scopes = self.provider.get_scope(request) self.assertIn("email~s", scopes) self.assertNotIn("email", scopes) @override_settings( SOCIALACCOUNT_QUERY_EMAIL=True, SOCIALACCOUNT_EMAIL_REQUIRED=True, SOCIALACCOUNT_EMAIL_VERIFICATION=False, ) def test_scopes_required_email(self): request = RequestFactory().get(AuthentiqOAuth2Adapter.authorize_url) scopes = self.provider.get_scope(request) self.assertIn("email~r", scopes) self.assertNotIn("email", scopes) @override_settings( SOCIALACCOUNT_QUERY_EMAIL=True, SOCIALACCOUNT_EMAIL_REQUIRED=False, SOCIALACCOUNT_EMAIL_VERIFICATION=False, ) def test_scopes_optional_email(self): request = RequestFactory().get(AuthentiqOAuth2Adapter.authorize_url) scopes = self.provider.get_scope(request) self.assertIn("email", scopes) django-allauth-0.35.0/allauth/socialaccount/providers/authentiq/urls.py0000644000076500000240000000025413235130412027302 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns from .provider import AuthentiqProvider urlpatterns = default_urlpatterns(AuthentiqProvider) django-allauth-0.35.0/allauth/socialaccount/providers/authentiq/views.py0000644000076500000240000000235613235130412027457 0ustar pennersrstaff00000000000000import requests from allauth.compat import urljoin from allauth.socialaccount import app_settings from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) from .provider import AuthentiqProvider class AuthentiqOAuth2Adapter(OAuth2Adapter): provider_id = AuthentiqProvider.id settings = app_settings.PROVIDERS.get(provider_id, {}) provider_url = settings.get('PROVIDER_URL', 'https://connect.authentiq.io/') if not provider_url.endswith('/'): provider_url += '/' access_token_url = urljoin(provider_url, 'token') authorize_url = urljoin(provider_url, 'authorize') profile_url = urljoin(provider_url, 'userinfo') def complete_login(self, request, app, token, **kwargs): auth = {'Authorization': 'Bearer ' + token.token} resp = requests.get(self.profile_url, headers=auth) resp.raise_for_status() extra_data = resp.json() login = self.get_provider() \ .sociallogin_from_response(request, extra_data) return login oauth2_login = OAuth2LoginView.adapter_view(AuthentiqOAuth2Adapter) oauth2_callback = OAuth2CallbackView.adapter_view(AuthentiqOAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/providers/flickr/0000755000076500000240000000000013235133532025220 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/flickr/provider.py0000644000076500000240000000422613117447115027434 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth.provider import OAuthProvider class FlickrAccount(ProviderAccount): def get_profile_url(self): return self.account.extra_data \ .get('person').get('profileurl').get('_content') def get_avatar_url(self): return self.account.extra_data.get('picture-url') def to_str(self): dflt = super(FlickrAccount, self).to_str() # Try to use name if it exists. If there is no name, the Flickr API # returns an empty stirng. name = self.account.extra_data \ .get('person').get('realname').get('_content', None) if name: return name # Default to username if name does not exist. return self.account.extra_data \ .get('person').get('username').get('_content', dflt) class FlickrProvider(OAuthProvider): id = 'flickr' name = 'Flickr' account_class = FlickrAccount def get_default_scope(self): scope = [] return scope def get_auth_params(self, request, action): ret = super(FlickrProvider, self).get_auth_params(request, action) if 'perms' not in ret: ret['perms'] = 'read' return ret def get_profile_fields(self): default_fields = ['id', 'first-name', 'last-name', 'email-address', 'picture-url', 'public-profile-url'] fields = self.get_settings().get('PROFILE_FIELDS', default_fields) return fields def extract_uid(self, data): return data['person']['nsid'] def extract_common_fields(self, data): person = data.get('person', {}) name = person.get('realname', {}).get('_content') username = person.get('username', {}).get('_content') return dict(email=data.get('email-address'), name=name, username=username) provider_classes = [FlickrProvider] django-allauth-0.35.0/allauth/socialaccount/providers/flickr/__init__.py0000644000076500000240000000000012671004326027320 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/flickr/tests.py0000644000076500000240000000641413117447115026745 0ustar pennersrstaff00000000000000# -*- coding: utf-8 -*- from allauth.socialaccount.tests import OAuthTestsMixin from allauth.tests import MockedResponse, TestCase from .provider import FlickrProvider class FlickrTests(OAuthTestsMixin, TestCase): provider_id = FlickrProvider.id def get_mocked_response(self): # return [ MockedResponse(200, r""" {"stat": "ok", "user": { "username": { "_content": "pennersr"}, "id": "12345678@N00"}} """), # noqa MockedResponse(200, r""" {"person": {"username": {"_content": "pennersr"}, "photosurl": {"_content": "http://www.flickr.com/photos/12345678@N00/"}, "nsid": "12345678@N00", "path_alias": null, "photos": {"count": {"_content": 0}, "firstdatetaken": {"_content": null}, "views": {"_content": "28"}, "firstdate": {"_content": null}}, "iconserver": "0", "description": {"_content": ""}, "mobileurl": {"_content": "http://m.flickr.com/photostream.gne?id=6294613"}, "profileurl": { "_content": "http://www.flickr.com/people/12345678@N00/"}, "mbox_sha1sum": {"_content": "5e5b359c123e54f95236209c8808d607a5cdd21e"}, "ispro": 0, "location": {"_content": ""}, "id": "12345678@N00", "realname": {"_content": "raymond penners"}, "iconfarm": 0}, "stat": "ok"} """)] # noqa def test_login(self): account = super(FlickrTests, self).test_login() f_account = account.get_provider_account() self.assertEqual(account.user.first_name, 'raymond') self.assertEqual(account.user.last_name, 'penners') self.assertEqual(f_account.get_profile_url(), 'http://www.flickr.com/people/12345678@N00/') self.assertEqual(f_account.to_str(), 'raymond penners') class FlickrWithoutRealNameTests(OAuthTestsMixin, TestCase): """Separate test for Flickr accounts without real names""" provider_id = FlickrProvider.id def get_mocked_response(self): # return [ MockedResponse(200, r""" {"stat": "ok", "user": { "username": { "_content": "pennersr"}, "id": "12345678@N00"}} """), # noqa MockedResponse(200, r""" {"person": {"username": {"_content": "pennersr"}, "photosurl": {"_content": "http://www.flickr.com/photos/12345678@N00/"}, "nsid": "12345678@N00", "path_alias": null, "photos": {"count": {"_content": 0}, "firstdatetaken": {"_content": null}, "views": {"_content": "28"}, "firstdate": {"_content": null}}, "iconserver": "0", "description": {"_content": ""}, "mobileurl": {"_content": "http://m.flickr.com/photostream.gne?id=6294613"}, "profileurl": { "_content": "http://www.flickr.com/people/12345678@N00/"}, "mbox_sha1sum": {"_content": "5e5b359c123e54f95236209c8808d607a5cdd21e"}, "ispro": 0, "location": {"_content": ""}, "id": "12345678@N00", "realname": {"_content": ""}, "iconfarm": 0}, "stat": "ok"} """)] # noqa def test_login(self): account = super(FlickrWithoutRealNameTests, self).test_login() f_account = account.get_provider_account() self.assertEqual(account.user.first_name, '') self.assertEqual(account.user.last_name, '') self.assertEqual(f_account.get_profile_url(), 'http://www.flickr.com/people/12345678@N00/') self.assertEqual(f_account.to_str(), 'pennersr') django-allauth-0.35.0/allauth/socialaccount/providers/flickr/urls.py0000644000076500000240000000024513117447115026564 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth.urls import default_urlpatterns from .provider import FlickrProvider urlpatterns = default_urlpatterns(FlickrProvider) django-allauth-0.35.0/allauth/socialaccount/providers/flickr/views.py0000644000076500000240000000320613117447115026734 0ustar pennersrstaff00000000000000import json from django.utils.http import urlencode from allauth.socialaccount.providers.oauth.client import OAuth from allauth.socialaccount.providers.oauth.views import ( OAuthAdapter, OAuthCallbackView, OAuthLoginView, ) from .provider import FlickrProvider class FlickrAPI(OAuth): api_url = 'https://api.flickr.com/services/rest' def get_user_info(self): default_params = {'nojsoncallback': '1', 'format': 'json'} p = dict({'method': 'flickr.test.login'}, **default_params) u = json.loads(self.query(self.api_url + '?' + urlencode(p))) p = dict({'method': 'flickr.people.getInfo', 'user_id': u['user']['id']}, **default_params) user = json.loads( self.query(self.api_url + '?' + urlencode(p))) return user class FlickrOAuthAdapter(OAuthAdapter): provider_id = FlickrProvider.id request_token_url = 'http://www.flickr.com/services/oauth/request_token' access_token_url = 'http://www.flickr.com/services/oauth/access_token' authorize_url = 'http://www.flickr.com/services/oauth/authorize' def complete_login(self, request, app, token, response): client = FlickrAPI(request, app.client_id, app.secret, self.request_token_url) extra_data = client.get_user_info() return self.get_provider().sociallogin_from_response(request, extra_data) oauth_login = OAuthLoginView.adapter_view(FlickrOAuthAdapter) oauth_callback = OAuthCallbackView.adapter_view(FlickrOAuthAdapter) django-allauth-0.35.0/allauth/socialaccount/providers/douban/0000755000076500000240000000000013235133532025216 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/douban/provider.py0000755000076500000240000000243313117447115027433 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class DoubanAccount(ProviderAccount): def get_profile_url(self): return self.account.extra_data.get('alt') def get_avatar_url(self): return self.account.extra_data.get('large_avatar') def to_str(self): dflt = super(DoubanAccount, self).to_str() return self.account.extra_data.get('name', dflt) class DoubanProvider(OAuth2Provider): id = 'douban' name = 'Douban' account_class = DoubanAccount def extract_uid(self, data): return data['id'] def extract_common_fields(self, data): """ Extract data from profile json to populate user instance. In Douban profile API: - id: a digital string, will never change - uid: defaults to id, but can be changed once, used in profile url, like slug - name: display name, can be changed every 30 days So we should use `id` as username here, other than `uid`. Also use `name` as `first_name` for displaying purpose. """ return { 'username': data['id'], 'first_name': data.get('name', ''), } provider_classes = [DoubanProvider] django-allauth-0.35.0/allauth/socialaccount/providers/douban/__init__.py0000755000076500000240000000000012671004326027321 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/douban/tests.py0000755000076500000240000000150613117447115026743 0ustar pennersrstaff00000000000000from allauth.socialaccount.tests import OAuth2TestsMixin from allauth.tests import MockedResponse, TestCase from .provider import DoubanProvider class DoubanTests(OAuth2TestsMixin, TestCase): provider_id = DoubanProvider.id def get_mocked_response(self): return MockedResponse(200, """ {"name": "guoqiao", "created": "2009-02-18 01:07:52", "is_suicide": false, "alt": "http://www.douban.com/people/qguo/", "avatar": "http://img3.douban.com/icon/u3659811-3.jpg", "signature": "", "uid": "qguo", "is_banned": false, "desc": "\u4e0d\u662f\u5f88\u7231\u8bfb\u4e66", "type": "user", "id": "3659811", "large_avatar": "http://img3.douban.com/icon/up3659811-3.jpg"} """) django-allauth-0.35.0/allauth/socialaccount/providers/douban/urls.py0000755000076500000240000000024613117447115026566 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns from .provider import DoubanProvider urlpatterns = default_urlpatterns(DoubanProvider) django-allauth-0.35.0/allauth/socialaccount/providers/douban/views.py0000755000076500000240000000251213117447115026734 0ustar pennersrstaff00000000000000import requests from django.utils.translation import ugettext as _ from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) from ..base import ProviderException from .provider import DoubanProvider class DoubanOAuth2Adapter(OAuth2Adapter): provider_id = DoubanProvider.id access_token_url = 'https://www.douban.com/service/auth2/token' authorize_url = 'https://www.douban.com/service/auth2/auth' profile_url = 'https://api.douban.com/v2/user/~me' def complete_login(self, request, app, token, **kwargs): headers = {'Authorization': 'Bearer %s' % token.token} resp = requests.get(self.profile_url, headers=headers) extra_data = resp.json() """ Douban may return data like this: { 'code': 128, 'request': 'GET /v2/user/~me', 'msg': 'user_is_locked:53358092' } """ if 'id' not in extra_data: msg = extra_data.get('msg', _('Invalid profile data')) raise ProviderException(msg) return self.get_provider().sociallogin_from_response( request, extra_data) oauth2_login = OAuth2LoginView.adapter_view(DoubanOAuth2Adapter) oauth2_callback = OAuth2CallbackView.adapter_view(DoubanOAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/providers/google/0000755000076500000240000000000013235133532025222 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/google/provider.py0000644000076500000240000000342313117447115027434 0ustar pennersrstaff00000000000000from allauth.account.models import EmailAddress from allauth.socialaccount.app_settings import QUERY_EMAIL from allauth.socialaccount.providers.base import AuthAction, ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class Scope(object): EMAIL = 'email' PROFILE = 'profile' class GoogleAccount(ProviderAccount): def get_profile_url(self): return self.account.extra_data.get('link') def get_avatar_url(self): return self.account.extra_data.get('picture') def to_str(self): dflt = super(GoogleAccount, self).to_str() return self.account.extra_data.get('name', dflt) class GoogleProvider(OAuth2Provider): id = 'google' name = 'Google' account_class = GoogleAccount def get_default_scope(self): scope = [Scope.PROFILE] if QUERY_EMAIL: scope.append(Scope.EMAIL) return scope def get_auth_params(self, request, action): ret = super(GoogleProvider, self).get_auth_params(request, action) if action == AuthAction.REAUTHENTICATE: ret['prompt'] = 'select_account' return ret def extract_uid(self, data): return str(data['id']) def extract_common_fields(self, data): return dict(email=data.get('email'), last_name=data.get('family_name'), first_name=data.get('given_name')) def extract_email_addresses(self, data): ret = [] email = data.get('email') if email and data.get('verified_email'): ret.append(EmailAddress(email=email, verified=True, primary=True)) return ret provider_classes = [GoogleProvider] django-allauth-0.35.0/allauth/socialaccount/providers/google/__init__.py0000644000076500000240000000000012357313011027315 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/google/tests.py0000644000076500000240000002113513235130412026732 0ustar pennersrstaff00000000000000# -*- coding: utf-8 -*- from __future__ import absolute_import, unicode_literals from importlib import import_module from requests.exceptions import HTTPError from django.conf import settings from django.contrib.auth.models import User from django.core import mail from django.test.client import RequestFactory from django.test.utils import override_settings from django.urls import reverse from allauth.account import app_settings as account_settings from allauth.account.adapter import get_adapter from allauth.account.models import EmailAddress, EmailConfirmation from allauth.account.signals import user_signed_up from allauth.socialaccount.models import SocialAccount, SocialToken from allauth.socialaccount.tests import OAuth2TestsMixin from allauth.tests import MockedResponse, TestCase, patch from .provider import GoogleProvider @override_settings( SOCIALACCOUNT_AUTO_SIGNUP=True, ACCOUNT_SIGNUP_FORM_CLASS=None, ACCOUNT_EMAIL_VERIFICATION=account_settings .EmailVerificationMethod.MANDATORY) class GoogleTests(OAuth2TestsMixin, TestCase): provider_id = GoogleProvider.id def get_mocked_response(self, family_name='Penners', given_name='Raymond', name='Raymond Penners', email="raymond.penners@example.com", verified_email=True): return MockedResponse(200, """ {"family_name": "%s", "name": "%s", "picture": "https://lh5.googleusercontent.com/photo.jpg", "locale": "nl", "gender": "male", "email": "%s", "link": "https://plus.google.com/108204268033311374519", "given_name": "%s", "id": "108204268033311374519", "verified_email": %s } """ % (family_name, name, email, given_name, (repr(verified_email).lower()))) def test_google_compelete_login_401(self): from allauth.socialaccount.providers.google.views import \ GoogleOAuth2Adapter class LessMockedResponse(MockedResponse): def raise_for_status(self): if self.status_code != 200: raise HTTPError(None) request = RequestFactory().get( reverse(self.provider.id + '_login'), dict(process='login')) adapter = GoogleOAuth2Adapter(request) app = adapter.get_provider().get_app(request) token = SocialToken(token='some_token') response_with_401 = LessMockedResponse( 401, """ {"error": { "errors": [{ "domain": "global", "reason": "authError", "message": "Invalid Credentials", "locationType": "header", "location": "Authorization" } ], "code": 401, "message": "Invalid Credentials" } }""") with patch( 'allauth.socialaccount.providers.google.views' '.requests') as patched_requests: patched_requests.get.return_value = response_with_401 with self.assertRaises(HTTPError): adapter.complete_login(request, app, token) def test_username_based_on_email(self): first_name = '明' last_name = '小' email = "raymond.penners@example.com" self.login(self.get_mocked_response(name=first_name + ' ' + last_name, email=email, given_name=first_name, family_name=last_name, verified_email=True)) user = User.objects.get(email=email) self.assertEqual(user.username, 'raymond.penners') def test_email_verified(self): test_email = "raymond.penners@example.com" self.login(self.get_mocked_response(verified_email=True)) email_address = EmailAddress.objects \ .get(email=test_email, verified=True) self.assertFalse(EmailConfirmation.objects .filter(email_address__email=test_email) .exists()) account = email_address.user.socialaccount_set.all()[0] self.assertEqual(account.extra_data['given_name'], 'Raymond') def test_user_signed_up_signal(self): sent_signals = [] def on_signed_up(sender, request, user, **kwargs): sociallogin = kwargs['sociallogin'] self.assertEqual(sociallogin.account.provider, GoogleProvider.id) self.assertEqual(sociallogin.account.user, user) sent_signals.append(sender) user_signed_up.connect(on_signed_up) self.login(self.get_mocked_response(verified_email=True)) self.assertTrue(len(sent_signals) > 0) @override_settings(ACCOUNT_EMAIL_CONFIRMATION_HMAC=False) def test_email_unverified(self): test_email = "raymond.penners@example.com" resp = self.login(self.get_mocked_response(verified_email=False)) email_address = EmailAddress.objects \ .get(email=test_email) self.assertFalse(email_address.verified) self.assertTrue(EmailConfirmation.objects .filter(email_address__email=test_email) .exists()) self.assertTemplateUsed( resp, 'account/email/email_confirmation_signup_subject.txt') def test_email_verified_stashed(self): # http://slacy.com/blog/2012/01/how-to-set-session-variables-in-django-unit-tests/ engine = import_module(settings.SESSION_ENGINE) store = engine.SessionStore() store.save() self.client.cookies[settings.SESSION_COOKIE_NAME] = store.session_key request = RequestFactory().get('/') request.session = self.client.session adapter = get_adapter(request) test_email = "raymond.penners@example.com" adapter.stash_verified_email(request, test_email) request.session.save() self.login(self.get_mocked_response(verified_email=False)) email_address = EmailAddress.objects \ .get(email=test_email) self.assertTrue(email_address.verified) self.assertFalse( EmailConfirmation.objects.filter( email_address__email=test_email).exists()) def test_account_connect(self): email = "user@example.com" user = User.objects.create(username='user', is_active=True, email=email) user.set_password('test') user.save() EmailAddress.objects.create(user=user, email=email, primary=True, verified=True) self.client.login(username=user.username, password='test') self.login(self.get_mocked_response(verified_email=True), process='connect') # Check if we connected... self.assertTrue(SocialAccount.objects.filter( user=user, provider=GoogleProvider.id).exists()) # For now, we do not pick up any new e-mail addresses on connect self.assertEqual(EmailAddress.objects.filter(user=user).count(), 1) self.assertEqual(EmailAddress.objects.filter( user=user, email=email).count(), 1) @override_settings( ACCOUNT_EMAIL_VERIFICATION=account_settings .EmailVerificationMethod.MANDATORY, SOCIALACCOUNT_EMAIL_VERIFICATION=account_settings .EmailVerificationMethod.NONE ) def test_social_email_verification_skipped(self): test_email = "raymond.penners@example.com" self.login(self.get_mocked_response(verified_email=False)) email_address = EmailAddress.objects.get(email=test_email) self.assertFalse(email_address.verified) self.assertFalse(EmailConfirmation.objects.filter( email_address__email=test_email).exists()) @override_settings( ACCOUNT_EMAIL_VERIFICATION=account_settings .EmailVerificationMethod.OPTIONAL, SOCIALACCOUNT_EMAIL_VERIFICATION=account_settings .EmailVerificationMethod.OPTIONAL ) def test_social_email_verification_optional(self): self.login(self.get_mocked_response(verified_email=False)) self.assertEqual(len(mail.outbox), 1) self.login(self.get_mocked_response(verified_email=False)) self.assertEqual(len(mail.outbox), 1) django-allauth-0.35.0/allauth/socialaccount/providers/google/urls.py0000644000076500000240000000024613117447115026567 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns from .provider import GoogleProvider urlpatterns = default_urlpatterns(GoogleProvider) django-allauth-0.35.0/allauth/socialaccount/providers/google/views.py0000644000076500000240000000202413117447115026733 0ustar pennersrstaff00000000000000import requests from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) from .provider import GoogleProvider class GoogleOAuth2Adapter(OAuth2Adapter): provider_id = GoogleProvider.id access_token_url = 'https://accounts.google.com/o/oauth2/token' authorize_url = 'https://accounts.google.com/o/oauth2/auth' profile_url = 'https://www.googleapis.com/oauth2/v1/userinfo' def complete_login(self, request, app, token, **kwargs): resp = requests.get(self.profile_url, params={'access_token': token.token, 'alt': 'json'}) resp.raise_for_status() extra_data = resp.json() login = self.get_provider() \ .sociallogin_from_response(request, extra_data) return login oauth2_login = OAuth2LoginView.adapter_view(GoogleOAuth2Adapter) oauth2_callback = OAuth2CallbackView.adapter_view(GoogleOAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/providers/coinbase/0000755000076500000240000000000013235133532025531 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/coinbase/provider.py0000644000076500000240000000155713117447115027751 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class CoinbaseAccount(ProviderAccount): def get_avatar_url(self): return None def to_str(self): return self.account.extra_data.get( 'name', super(CoinbaseAccount, self).to_str()) class CoinbaseProvider(OAuth2Provider): id = 'coinbase' name = 'Coinbase' account_class = CoinbaseAccount def get_default_scope(self): # See: https://coinbase.com/docs/api/permissions return ['user'] def extract_uid(self, data): return str(data['id']) def extract_common_fields(self, data): # See: https://coinbase.com/api/doc/1.0/users/index.html return dict(name=data['name'], email=data['email']) provider_classes = [CoinbaseProvider] django-allauth-0.35.0/allauth/socialaccount/providers/coinbase/__init__.py0000644000076500000240000000000012671004326027631 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/coinbase/tests.py0000644000076500000240000000222013117447115027245 0ustar pennersrstaff00000000000000from allauth.socialaccount.tests import OAuth2TestsMixin from allauth.tests import MockedResponse, TestCase from .provider import CoinbaseProvider class CoinbaseTests(OAuth2TestsMixin, TestCase): provider_id = CoinbaseProvider.id def get_mocked_response(self): return MockedResponse(200, """ { "users": [ { "user": { "id": "512db383f8182bd24d000001", "name": "User One", "email": "user1@example.com", "time_zone": "Pacific Time (US & Canada)", "native_currency": "USD", "balance": { "amount": "49.76000000", "currency": "BTC" }, "merchant": { "company_name": "Company Name, Inc.", "logo": { "small": "http://smalllogo.example", "medium": "http://mediumlogo.example", "url": "http://logo.example" } }, "buy_level": 1, "sell_level": 1, "buy_limit": { "amount": "10.00000000", "currency": "BTC" }, "sell_limit": { "amount": "100.00000000", "currency": "BTC" } } } ] } """) django-allauth-0.35.0/allauth/socialaccount/providers/coinbase/urls.py0000644000076500000240000000025213117447115027073 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns from .provider import CoinbaseProvider urlpatterns = default_urlpatterns(CoinbaseProvider) django-allauth-0.35.0/allauth/socialaccount/providers/coinbase/views.py0000644000076500000240000000200013117447115027234 0ustar pennersrstaff00000000000000import requests from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) from .provider import CoinbaseProvider class CoinbaseOAuth2Adapter(OAuth2Adapter): provider_id = CoinbaseProvider.id @property def authorize_url(self): return 'https://coinbase.com/oauth/authorize' @property def access_token_url(self): return 'https://coinbase.com/oauth/token' @property def profile_url(self): return 'https://coinbase.com/api/v1/users' def complete_login(self, request, app, token, **kwargs): response = requests.get(self.profile_url, params={'access_token': token}) extra_data = response.json()['users'][0]['user'] return self.get_provider().sociallogin_from_response( request, extra_data) oauth2_login = OAuth2LoginView.adapter_view(CoinbaseOAuth2Adapter) oauth2_callback = OAuth2CallbackView.adapter_view(CoinbaseOAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/providers/microsoft/0000755000076500000240000000000013235133533025754 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/microsoft/models.py0000644000076500000240000000003313235130412027576 0ustar pennersrstaff00000000000000# Create your models here. django-allauth-0.35.0/allauth/socialaccount/providers/microsoft/provider.py0000644000076500000240000000216213235130412030152 0ustar pennersrstaff00000000000000from __future__ import unicode_literals from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class MicrosoftGraphAccount(ProviderAccount): def to_str(self): name = self.account.extra_data.get('displayName') if name.strip() != '': return name return super(MicrosoftGraphAccount, self).to_str() class MicrosoftGraphProvider(OAuth2Provider): id = str('microsoft') name = 'Microsoft Graph' account_class = MicrosoftGraphAccount def get_default_scope(self): """ Doc on scopes available at https://developer.microsoft.com/en-us/graph/docs/concepts/permissions_reference """ return ['User.Read'] def extract_uid(self, data): return str(data['id']) def extract_common_fields(self, data): email = data.get('mail') or data.get('userPrincipalName') return dict(email=email, last_name=data.get('surname'), first_name=data.get('givenName')) provider_classes = [MicrosoftGraphProvider] django-allauth-0.35.0/allauth/socialaccount/providers/microsoft/__init__.py0000644000076500000240000000000013235130412030044 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/microsoft/tests.py0000644000076500000240000000173413235130412027466 0ustar pennersrstaff00000000000000from allauth.socialaccount.tests import OAuth2TestsMixin from allauth.tests import MockedResponse, TestCase from .provider import MicrosoftGraphProvider class MicrosoftGraphTests(OAuth2TestsMixin, TestCase): provider_id = MicrosoftGraphProvider.id def get_mocked_response(self): response_data = """ { "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users/$entity", "id": "16f5a7b6-5a15-4568-aa5a-31bb117e9967", "businessPhones": [], "displayName": "Anne Weiler", "givenName": "Anne", "jobTitle": "Manufacturing Lead", "mail": "annew@CIE493742.onmicrosoft.com", "mobilePhone": "+1 3528700812", "officeLocation": null, "preferredLanguage": "en-US", "surname": "Weiler", "userPrincipalName": "annew@CIE493742.onmicrosoft.com" } """ # noqa return MockedResponse(200, response_data) django-allauth-0.35.0/allauth/socialaccount/providers/microsoft/urls.py0000644000076500000240000000026613235130412027310 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns from .provider import MicrosoftGraphProvider urlpatterns = default_urlpatterns(MicrosoftGraphProvider) django-allauth-0.35.0/allauth/socialaccount/providers/microsoft/views.py0000644000076500000240000000250013235130412027451 0ustar pennersrstaff00000000000000from __future__ import unicode_literals import requests from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) from .provider import MicrosoftGraphProvider class MicrosoftGraphOAuth2Adapter(OAuth2Adapter): provider_id = MicrosoftGraphProvider.id def __init__(self, request): super(MicrosoftGraphOAuth2Adapter, self).__init__(request) provider = self.get_provider() tenant = provider.get_settings().get('tenant') or 'common' base_url = 'https://login.microsoftonline.com/{0}'.format(tenant) self.access_token_url = '{0}/oauth2/v2.0/token'.format(base_url) self.authorize_url = '{0}/oauth2/v2.0/authorize'.format(base_url) self.profile_url = 'https://graph.microsoft.com/v1.0/me/' def complete_login(self, request, app, token, **kwargs): headers = {'Authorization': 'Bearer {0}'.format(token.token)} resp = requests.get(self.profile_url, headers=headers) extra_data = resp.json() return self.get_provider().sociallogin_from_response(request, extra_data) oauth2_login = OAuth2LoginView.adapter_view(MicrosoftGraphOAuth2Adapter) oauth2_callback = OAuth2CallbackView.adapter_view(MicrosoftGraphOAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/providers/linkedin_oauth2/0000755000076500000240000000000013235133533027026 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/linkedin_oauth2/provider.py0000644000076500000240000000440013235130412031221 0ustar pennersrstaff00000000000000from allauth.socialaccount import app_settings from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class LinkedInOAuth2Account(ProviderAccount): def get_profile_url(self): return self.account.extra_data.get('publicProfileUrl') def get_avatar_url(self): # try to return the higher res picture-urls::(original) first try: return self.account.extra_data['pictureUrls']['values'][0] except Exception: # if we can't get higher res for any reason, we'll just return the # low res pass return self.account.extra_data.get('pictureUrl') def to_str(self): dflt = super(LinkedInOAuth2Account, self).to_str() name = self.account.extra_data.get('name', dflt) first_name = self.account.extra_data.get('firstName', None) last_name = self.account.extra_data.get('lastName', None) if first_name and last_name: name = first_name + ' ' + last_name return name class LinkedInOAuth2Provider(OAuth2Provider): id = 'linkedin_oauth2' # Name is displayed to ordinary users -- don't include protocol name = 'LinkedIn' account_class = LinkedInOAuth2Account def extract_uid(self, data): return str(data['id']) def get_profile_fields(self): default_fields = ['id', 'first-name', 'last-name', 'email-address', 'picture-url', # picture-urls::(original) is higher res 'picture-urls::(original)', 'public-profile-url'] fields = self.get_settings().get('PROFILE_FIELDS', default_fields) return fields def get_default_scope(self): scope = [] if app_settings.QUERY_EMAIL: scope.append('r_emailaddress') return scope def extract_common_fields(self, data): return dict(email=data.get('emailAddress'), first_name=data.get('firstName'), last_name=data.get('lastName')) provider_classes = [LinkedInOAuth2Provider] django-allauth-0.35.0/allauth/socialaccount/providers/linkedin_oauth2/__init__.py0000644000076500000240000000000012671004326031125 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/linkedin_oauth2/tests.py0000644000076500000240000000111013117447115030536 0ustar pennersrstaff00000000000000from allauth.socialaccount.tests import OAuth2TestsMixin from allauth.tests import MockedResponse, TestCase from .provider import LinkedInOAuth2Provider class LinkedInOAuth2Tests(OAuth2TestsMixin, TestCase): provider_id = LinkedInOAuth2Provider.id def get_mocked_response(self): return MockedResponse(200, """ { "emailAddress": "raymond.penners@intenct.nl", "firstName": "Raymond", "id": "ZLARGMFT1M", "lastName": "Penners", "pictureUrl": "http://m.c.lnkd.licdn.com/mpr/mprx/0_e0hbvSLc", "publicProfileUrl": "http://www.linkedin.com/in/intenct" } """) django-allauth-0.35.0/allauth/socialaccount/providers/linkedin_oauth2/urls.py0000644000076500000240000000026613117447115030374 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns from .provider import LinkedInOAuth2Provider urlpatterns = default_urlpatterns(LinkedInOAuth2Provider) django-allauth-0.35.0/allauth/socialaccount/providers/linkedin_oauth2/views.py0000644000076500000240000000237413117447115030546 0ustar pennersrstaff00000000000000import requests from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) from .provider import LinkedInOAuth2Provider class LinkedInOAuth2Adapter(OAuth2Adapter): provider_id = LinkedInOAuth2Provider.id access_token_url = 'https://api.linkedin.com/uas/oauth2/accessToken' authorize_url = 'https://www.linkedin.com/uas/oauth2/authorization' profile_url = 'https://api.linkedin.com/v1/people/~' # See: # http://developer.linkedin.com/forum/unauthorized-invalid-or-expired-token-immediately-after-receiving-oauth2-token?page=1 # noqa access_token_method = 'GET' def complete_login(self, request, app, token, **kwargs): extra_data = self.get_user_info(token) return self.get_provider().sociallogin_from_response( request, extra_data) def get_user_info(self, token): fields = self.get_provider().get_profile_fields() url = self.profile_url + ':(%s)?format=json' % ','.join(fields) resp = requests.get(url, params={'oauth2_access_token': token.token}) return resp.json() oauth2_login = OAuth2LoginView.adapter_view(LinkedInOAuth2Adapter) oauth2_callback = OAuth2CallbackView.adapter_view(LinkedInOAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/providers/spotify/0000755000076500000240000000000013235133533025444 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/spotify/provider.py0000644000076500000240000000136713117447115027662 0ustar pennersrstaff00000000000000from allauth.socialaccount import app_settings from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class SpotifyAccount(ProviderAccount): pass class SpotifyOAuth2Provider(OAuth2Provider): id = 'spotify' name = 'Spotify' account_class = SpotifyAccount def extract_uid(self, data): return data['id'] def extract_common_fields(self, data): return dict(name=data.get('display_name'), email=data.get('email')) def get_default_scope(self): scope = [] if app_settings.QUERY_EMAIL: scope.append('user-read-email') return scope provider_classes = [SpotifyOAuth2Provider] django-allauth-0.35.0/allauth/socialaccount/providers/spotify/__init__.py0000644000076500000240000000000012671004326027543 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/spotify/tests.py0000644000076500000240000000226713117447115027172 0ustar pennersrstaff00000000000000# -*- coding: utf-8 -*- from __future__ import unicode_literals from allauth.socialaccount.tests import OAuth2TestsMixin from allauth.tests import MockedResponse, TestCase from .provider import SpotifyOAuth2Provider class SpotifyOAuth2Tests(OAuth2TestsMixin, TestCase): provider_id = SpotifyOAuth2Provider.id def get_mocked_response(self): return MockedResponse(200, """{ "birthdate": "1937-06-01", "country": "SE", "display_name": "JM Wizzler", "email": "email@example.com", "external_urls": { "spotify": "https://open.spotify.com/user/wizzler" }, "followers" : { "href" : null, "total" : 3829 }, "href": "https://api.spotify.com/v1/users/wizzler", "id": "wizzler", "images": [ { "height": null, "url": "https://fbcdn-profile-a.akamaihd.net/hprofile-ak-frc3/t1.0-1/1970403_10152215092574354_1798272330_n.jpg", "width": null } ], "product": "premium", "type": "user", "uri": "spotify:user:wizzler" }""") # noqa django-allauth-0.35.0/allauth/socialaccount/providers/spotify/urls.py0000644000076500000240000000026313117447115027007 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth.urls import default_urlpatterns from .provider import SpotifyOAuth2Provider urlpatterns = default_urlpatterns(SpotifyOAuth2Provider) django-allauth-0.35.0/allauth/socialaccount/providers/spotify/views.py0000644000076500000240000000156613117447115027166 0ustar pennersrstaff00000000000000import requests from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) from .provider import SpotifyOAuth2Provider class SpotifyOAuth2Adapter(OAuth2Adapter): provider_id = SpotifyOAuth2Provider.id access_token_url = 'https://accounts.spotify.com/api/token' authorize_url = 'https://accounts.spotify.com/authorize' profile_url = 'https://api.spotify.com/v1/me' def complete_login(self, request, app, token, **kwargs): extra_data = requests.get(self.profile_url, params={ 'access_token': token.token }) return self.get_provider().sociallogin_from_response( request, extra_data.json() ) oauth_login = OAuth2LoginView.adapter_view(SpotifyOAuth2Adapter) oauth_callback = OAuth2CallbackView.adapter_view(SpotifyOAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/providers/digitalocean/0000755000076500000240000000000013235133532026371 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/digitalocean/provider.py0000644000076500000240000000104513117447115030601 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class DigitalOceanAccount(ProviderAccount): pass class DigitalOceanProvider(OAuth2Provider): id = 'digitalocean' name = 'DigitalOcean' account_class = DigitalOceanAccount def extract_uid(self, data): return str(data['account']['uuid']) def extract_common_fields(self, data): return dict(email=data['account']['email']) provider_classes = [DigitalOceanProvider] django-allauth-0.35.0/allauth/socialaccount/providers/digitalocean/__init__.py0000644000076500000240000000000012671004326030471 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/digitalocean/tests.py0000644000076500000240000000215213235130412030077 0ustar pennersrstaff00000000000000from allauth.socialaccount.tests import OAuth2TestsMixin from allauth.tests import MockedResponse, TestCase from .provider import DigitalOceanProvider class DigitalOceanTests(OAuth2TestsMixin, TestCase): provider_id = DigitalOceanProvider.id def get_mocked_response(self): return MockedResponse(200, """ { "account": { "droplet_limit": 25, "floating_ip_limit": 5, "email": "sammy@example.com", "uuid": "b6fr89dbf6d9156cace5f3c78dc9851d957381ef", "email_verified": true, "status": "active", "status_message": "" } } """) def get_login_response_json(self, with_refresh_token=True): return """ { "access_token": "testac", "token_type": "bearer", "expires_in": 2592000, "refresh_token": "00a3aae641658d", "scope": "read write", "info": { "name": "Sammy the Shark", "email":"sammy@example.com", "uuid":"b6fr89dbf6d9156cace5f3c78dc9851d957381ef" } }""" django-allauth-0.35.0/allauth/socialaccount/providers/digitalocean/urls.py0000644000076500000240000000026213117447115027734 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns from .provider import DigitalOceanProvider urlpatterns = default_urlpatterns(DigitalOceanProvider) django-allauth-0.35.0/allauth/socialaccount/providers/digitalocean/views.py0000644000076500000240000000167213117447115030112 0ustar pennersrstaff00000000000000import requests from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) from .provider import DigitalOceanProvider class DigitalOceanOAuth2Adapter(OAuth2Adapter): provider_id = DigitalOceanProvider.id access_token_url = 'https://cloud.digitalocean.com/v1/oauth/token' authorize_url = 'https://cloud.digitalocean.com/v1/oauth/authorize' profile_url = 'https://api.digitalocean.com/v2/account' def complete_login(self, request, app, token, **kwargs): headers = {'Authorization': 'Bearer {0}'.format(token.token)} resp = requests.get(self.profile_url, headers=headers) extra_data = resp.json() return self.get_provider().sociallogin_from_response( request, extra_data) oauth2_login = OAuth2LoginView.adapter_view(DigitalOceanOAuth2Adapter) oauth2_callback = OAuth2CallbackView.adapter_view(DigitalOceanOAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/providers/naver/0000755000076500000240000000000013235133533025062 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/naver/models.py0000644000076500000240000000000013117447115026710 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/naver/provider.py0000644000076500000240000000110013117447115027261 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class NaverAccount(ProviderAccount): def get_avatar_url(self): return self.account.extra_data.get('profile_image') def to_str(self): return self.account.extra_data.get('nickname', self.account.uid) class NaverProvider(OAuth2Provider): id = 'naver' name = 'Naver' account_class = NaverAccount def extract_uid(self, data): return str(data['id']) provider_classes = [NaverProvider] django-allauth-0.35.0/allauth/socialaccount/providers/naver/__init__.py0000644000076500000240000000000013051411266027157 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/naver/tests.py0000644000076500000240000000126213235130412026570 0ustar pennersrstaff00000000000000from allauth.socialaccount.tests import OAuth2TestsMixin from allauth.tests import MockedResponse, TestCase from .provider import NaverProvider class NaverTests(OAuth2TestsMixin, TestCase): provider_id = NaverProvider.id def get_mocked_response(self): return MockedResponse(200, """ { "response": { "enc_id": "46111c25f969116de4e545f13a415bb5383db2a79782da8851db72b2cced3180", "nickname": "\ubc31\ud638", "profile_image": "https://ssl.pstatic.net/static/pwe/address/nodata_33x33.gif", "gender": "M", "id": "7163491", "age": "20-29", "birthday": "03-22", "email": "shlee940322@example.com", "name": "\uc774\uc0c1\ud601" }, "message": "success", "resultcode": "00" } """) django-allauth-0.35.0/allauth/socialaccount/providers/naver/urls.py0000644000076500000240000000024413117447115026424 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns from .provider import NaverProvider urlpatterns = default_urlpatterns(NaverProvider) django-allauth-0.35.0/allauth/socialaccount/providers/naver/views.py0000644000076500000240000000170113117447115026573 0ustar pennersrstaff00000000000000import requests from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) from .provider import NaverProvider class NaverOAuth2Adapter(OAuth2Adapter): provider_id = NaverProvider.id access_token_url = 'https://nid.naver.com/oauth2.0/token' authorize_url = 'https://nid.naver.com/oauth2.0/authorize' profile_url = 'https://openapi.naver.com/v1/nid/me' def complete_login(self, request, app, token, **kwargs): headers = {'Authorization': 'Bearer {0}'.format(token.token)} resp = requests.get(self.profile_url, headers=headers) extra_data = resp.json().get('response') return self.get_provider().sociallogin_from_response(request, extra_data) oauth2_login = OAuth2LoginView.adapter_view(NaverOAuth2Adapter) oauth2_callback = OAuth2CallbackView.adapter_view(NaverOAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/providers/hubic/0000755000076500000240000000000013235133532025040 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/hubic/provider.py0000644000076500000240000000126513117447115027254 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class HubicAccount(ProviderAccount): pass class HubicProvider(OAuth2Provider): id = 'hubic' name = 'Hubic' account_class = HubicAccount def extract_uid(self, data): return str(data['email']) def extract_common_fields(self, data): return dict( email=data.get('email'), username=data.get('firstname').lower() + data.get( 'lastname').lower(), first_name=data.get('firstname'), last_name=data.get('lastname')) provider_classes = [HubicProvider] django-allauth-0.35.0/allauth/socialaccount/providers/hubic/__init__.py0000644000076500000240000000000012671004326027140 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/hubic/tests.py0000644000076500000240000000133413235130412026547 0ustar pennersrstaff00000000000000from allauth.socialaccount.tests import OAuth2TestsMixin from allauth.tests import MockedResponse, TestCase from .provider import HubicProvider class HubicTests(OAuth2TestsMixin, TestCase): provider_id = HubicProvider.id def get_mocked_response(self): return MockedResponse(200, """ { "email": "user@example.com", "firstname": "Test", "activated": true, "creationDate": "2014-04-17T17:04:01+02:00", "language": "en", "status": "ok", "offer": "25g", "lastname": "User" } """) def get_login_response_json(self, with_refresh_token=True): return '{\ "access_token": "testac",\ "expires_in": "3600",\ "refresh_token": "testrf",\ "token_type": "Bearer"\ }' django-allauth-0.35.0/allauth/socialaccount/providers/hubic/urls.py0000644000076500000240000000024413117447115026403 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns from .provider import HubicProvider urlpatterns = default_urlpatterns(HubicProvider) django-allauth-0.35.0/allauth/socialaccount/providers/hubic/views.py0000644000076500000240000000200013117447115026543 0ustar pennersrstaff00000000000000import requests from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) from .provider import HubicProvider class HubicOAuth2Adapter(OAuth2Adapter): provider_id = HubicProvider.id access_token_url = 'https://api.hubic.com/oauth/token' authorize_url = 'https://api.hubic.com/oauth/auth' profile_url = 'https://api.hubic.com/1.0/account' redirect_uri_protocol = 'https' def complete_login(self, request, app, token, **kwargs): token_type = kwargs['response']['token_type'] resp = requests.get( self.profile_url, headers={'Authorization': '%s %s' % (token_type, token.token)}) extra_data = resp.json() return self.get_provider().sociallogin_from_response(request, extra_data) oauth2_login = OAuth2LoginView.adapter_view(HubicOAuth2Adapter) oauth2_callback = OAuth2CallbackView.adapter_view(HubicOAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/providers/vimeo/0000755000076500000240000000000013235133533025066 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/vimeo/provider.py0000644000076500000240000000114213117447116027274 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth.provider import OAuthProvider class VimeoAccount(ProviderAccount): pass class VimeoProvider(OAuthProvider): id = 'vimeo' name = 'Vimeo' account_class = VimeoAccount def get_default_scope(self): scope = [] return scope def extract_uid(self, data): return data['id'] def extract_common_fields(self, data): return dict(name=data.get('display_name'), username=data.get('username')) provider_classes = [VimeoProvider] django-allauth-0.35.0/allauth/socialaccount/providers/vimeo/__init__.py0000644000076500000240000000000012357313011027160 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/vimeo/tests.py0000644000076500000240000000266413117447116026616 0ustar pennersrstaff00000000000000# -*- coding: utf-8 -*- from allauth.socialaccount.tests import OAuthTestsMixin from allauth.tests import MockedResponse, TestCase from .provider import VimeoProvider class VimeoTests(OAuthTestsMixin, TestCase): provider_id = VimeoProvider.id def get_mocked_response(self): return [MockedResponse(200, """ {"generated_in":"0.0137", "stat":"ok","person":{ "created_on": "2013-04-08 14:24:47", "id":"17574504", "is_contact":"0", "is_plus":"0","is_pro":"0","is_staff":"0","is_subscribed_to":"0", "username":"user17574504","display_name":"Raymond Penners","location":"", "url":[""],"bio":"","number_of_contacts":"0","number_of_uploads":"0", "number_of_likes":"0","number_of_videos":"0", "number_of_videos_appears_in":"0","number_of_albums":"0", "number_of_channels":"0","number_of_groups":"0", "profileurl":"http:\\/\\/vimeo.com\\/user17574504", "videosurl":"http:\\/\\/vimeo.com\\/user17574504\\/videos", "portraits":{"portrait":[{"height":"30","width":"30", "_content": "http:\\/\\/a.vimeocdn.com\\/images_v6\\/portraits\\/portrait_30_yellow.png"}, {"height":"75","width":"75","_content": "http:\\/\\/a.vimeocdn.com\\/images_v6\\/portraits\\/portrait_75_yellow.png"}, {"height":"100","width":"100","_content": "http:\\/\\/a.vimeocdn.com\\/images_v6\\/portraits\\/portrait_100_yellow.png"}, {"height":"300","width":"300","_content": "http:\\/\\/a.vimeocdn.com\\/images_v6\\/portraits\\/portrait_300_yellow.png"}]}}} """)] django-allauth-0.35.0/allauth/socialaccount/providers/vimeo/urls.py0000644000076500000240000000024313117447116026430 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth.urls import default_urlpatterns from .provider import VimeoProvider urlpatterns = default_urlpatterns(VimeoProvider) django-allauth-0.35.0/allauth/socialaccount/providers/vimeo/views.py0000644000076500000240000000231713117447116026604 0ustar pennersrstaff00000000000000import json from allauth.socialaccount.providers.oauth.client import OAuth from allauth.socialaccount.providers.oauth.views import ( OAuthAdapter, OAuthCallbackView, OAuthLoginView, ) from .provider import VimeoProvider class VimeoAPI(OAuth): url = 'http://vimeo.com/api/rest/v2?method=vimeo.people.getInfo' def get_user_info(self): url = self.url data = json.loads(self.query(url, params=dict(format='json'))) return data['person'] class VimeoOAuthAdapter(OAuthAdapter): provider_id = VimeoProvider.id request_token_url = 'https://vimeo.com/oauth/request_token' access_token_url = 'https://vimeo.com/oauth/access_token' authorize_url = 'https://vimeo.com/oauth/authorize' def complete_login(self, request, app, token, response): client = VimeoAPI(request, app.client_id, app.secret, self.request_token_url) extra_data = client.get_user_info() return self.get_provider().sociallogin_from_response(request, extra_data) oauth_login = OAuthLoginView.adapter_view(VimeoOAuthAdapter) oauth_callback = OAuthCallbackView.adapter_view(VimeoOAuthAdapter) django-allauth-0.35.0/allauth/socialaccount/providers/oauth2/0000755000076500000240000000000013235133533025151 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/oauth2/provider.py0000644000076500000240000000202713235130412027347 0ustar pennersrstaff00000000000000from django.urls import reverse from django.utils.http import urlencode from allauth.compat import parse_qsl from allauth.socialaccount.providers.base import Provider class OAuth2Provider(Provider): def get_login_url(self, request, **kwargs): url = reverse(self.id + "_login") if kwargs: url = url + '?' + urlencode(kwargs) return url def get_auth_params(self, request, action): settings = self.get_settings() ret = dict(settings.get('AUTH_PARAMS', {})) dynamic_auth_params = request.GET.get('auth_params', None) if dynamic_auth_params: ret.update(dict(parse_qsl(dynamic_auth_params))) return ret def get_scope(self, request): settings = self.get_settings() scope = list(settings.get('SCOPE', self.get_default_scope())) dynamic_scope = request.GET.get('scope', None) if dynamic_scope: scope.extend(dynamic_scope.split(',')) return scope def get_default_scope(self): return [] django-allauth-0.35.0/allauth/socialaccount/providers/oauth2/client.py0000644000076500000240000000601613117447115027007 0ustar pennersrstaff00000000000000import requests from django.utils.http import urlencode from allauth.compat import parse_qsl class OAuth2Error(Exception): pass class OAuth2Client(object): def __init__(self, request, consumer_key, consumer_secret, access_token_method, access_token_url, callback_url, scope, scope_delimiter=' ', headers=None, basic_auth=False): self.request = request self.access_token_method = access_token_method self.access_token_url = access_token_url self.callback_url = callback_url self.consumer_key = consumer_key self.consumer_secret = consumer_secret self.scope = scope_delimiter.join(set(scope)) self.state = None self.headers = headers self.basic_auth = basic_auth def get_redirect_url(self, authorization_url, extra_params): params = { 'client_id': self.consumer_key, 'redirect_uri': self.callback_url, 'scope': self.scope, 'response_type': 'code' } if self.state: params['state'] = self.state params.update(extra_params) return '%s?%s' % (authorization_url, urlencode(params)) def get_access_token(self, code): data = { 'redirect_uri': self.callback_url, 'grant_type': 'authorization_code', 'code': code} if self.basic_auth: auth = requests.auth.HTTPBasicAuth( self.consumer_key, self.consumer_secret) else: auth = None data.update({ 'client_id': self.consumer_key, 'client_secret': self.consumer_secret }) params = None self._strip_empty_keys(data) url = self.access_token_url if self.access_token_method == 'GET': params = data data = None # TODO: Proper exception handling resp = requests.request( self.access_token_method, url, params=params, data=data, headers=self.headers, auth=auth) access_token = None if resp.status_code == 200: # Weibo sends json via 'text/plain;charset=UTF-8' if (resp.headers['content-type'].split( ';')[0] == 'application/json' or resp.text[:2] == '{"'): access_token = resp.json() else: access_token = dict(parse_qsl(resp.text)) if not access_token or 'access_token' not in access_token: raise OAuth2Error('Error retrieving access token: %s' % resp.content) return access_token def _strip_empty_keys(self, params): """Added because the Dropbox OAuth2 flow doesn't work when scope is passed in, which is empty. """ keys = [k for k, v in params.items() if v == ''] for key in keys: del params[key] django-allauth-0.35.0/allauth/socialaccount/providers/oauth2/__init__.py0000644000076500000240000000000012357313011027243 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/oauth2/urls.py0000644000076500000240000000111013117447115026504 0ustar pennersrstaff00000000000000from django.conf.urls import include, url from allauth.utils import import_attribute def default_urlpatterns(provider): login_view = import_attribute( provider.get_package() + '.views.oauth2_login') callback_view = import_attribute( provider.get_package() + '.views.oauth2_callback') urlpatterns = [ url(r'^login/$', login_view, name=provider.id + "_login"), url(r'^login/callback/$', callback_view, name=provider.id + "_callback"), ] return [url('^' + provider.get_slug() + '/', include(urlpatterns))] django-allauth-0.35.0/allauth/socialaccount/providers/oauth2/views.py0000644000076500000240000001270613235130412026657 0ustar pennersrstaff00000000000000from __future__ import absolute_import from datetime import timedelta from requests import RequestException from django.core.exceptions import PermissionDenied from django.http import HttpResponseRedirect from django.urls import reverse from django.utils import timezone from allauth.exceptions import ImmediateHttpResponse from allauth.socialaccount import providers from allauth.socialaccount.helpers import ( complete_social_login, render_authentication_error, ) from allauth.socialaccount.models import SocialLogin, SocialToken from allauth.socialaccount.providers.base import ProviderException from allauth.socialaccount.providers.oauth2.client import ( OAuth2Client, OAuth2Error, ) from allauth.utils import build_absolute_uri, get_request_param from ..base import AuthAction, AuthError class OAuth2Adapter(object): expires_in_key = 'expires_in' supports_state = True redirect_uri_protocol = None access_token_method = 'POST' login_cancelled_error = 'access_denied' scope_delimiter = ' ' basic_auth = False headers = None def __init__(self, request): self.request = request def get_provider(self): return providers.registry.by_id(self.provider_id, self.request) def complete_login(self, request, app, access_token, **kwargs): """ Returns a SocialLogin instance """ raise NotImplementedError def get_callback_url(self, request, app): callback_url = reverse(self.provider_id + "_callback") protocol = self.redirect_uri_protocol return build_absolute_uri(request, callback_url, protocol) def parse_token(self, data): token = SocialToken(token=data['access_token']) token.token_secret = data.get('refresh_token', '') expires_in = data.get(self.expires_in_key, None) if expires_in: token.expires_at = timezone.now() + timedelta( seconds=int(expires_in)) return token class OAuth2View(object): @classmethod def adapter_view(cls, adapter): def view(request, *args, **kwargs): self = cls() self.request = request self.adapter = adapter(request) try: return self.dispatch(request, *args, **kwargs) except ImmediateHttpResponse as e: return e.response return view def get_client(self, request, app): callback_url = self.adapter.get_callback_url(request, app) provider = self.adapter.get_provider() scope = provider.get_scope(request) client = OAuth2Client(self.request, app.client_id, app.secret, self.adapter.access_token_method, self.adapter.access_token_url, callback_url, scope, scope_delimiter=self.adapter.scope_delimiter, headers=self.adapter.headers, basic_auth=self.adapter.basic_auth) return client class OAuth2LoginView(OAuth2View): def dispatch(self, request): provider = self.adapter.get_provider() app = provider.get_app(self.request) client = self.get_client(request, app) action = request.GET.get('action', AuthAction.AUTHENTICATE) auth_url = self.adapter.authorize_url auth_params = provider.get_auth_params(request, action) client.state = SocialLogin.stash_state(request) try: return HttpResponseRedirect(client.get_redirect_url( auth_url, auth_params)) except OAuth2Error as e: return render_authentication_error( request, provider.id, exception=e) class OAuth2CallbackView(OAuth2View): def dispatch(self, request): if 'error' in request.GET or 'code' not in request.GET: # Distinguish cancel from error auth_error = request.GET.get('error', None) if auth_error == self.adapter.login_cancelled_error: error = AuthError.CANCELLED else: error = AuthError.UNKNOWN return render_authentication_error( request, self.adapter.provider_id, error=error) app = self.adapter.get_provider().get_app(self.request) client = self.get_client(request, app) try: access_token = client.get_access_token(request.GET['code']) token = self.adapter.parse_token(access_token) token.app = app login = self.adapter.complete_login(request, app, token, response=access_token) login.token = token if self.adapter.supports_state: login.state = SocialLogin \ .verify_and_unstash_state( request, get_request_param(request, 'state')) else: login.state = SocialLogin.unstash_state(request) return complete_social_login(request, login) except (PermissionDenied, OAuth2Error, RequestException, ProviderException) as e: return render_authentication_error( request, self.adapter.provider_id, exception=e) django-allauth-0.35.0/allauth/socialaccount/providers/shopify/0000755000076500000240000000000013235133533025430 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/shopify/provider.py0000644000076500000240000000321413117447115027637 0ustar pennersrstaff00000000000000from django.conf import settings from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class ShopifyAccount(ProviderAccount): pass class ShopifyProvider(OAuth2Provider): id = 'shopify' name = 'Shopify' account_class = ShopifyAccount @property def is_per_user(self): grant_options = getattr(settings, 'SOCIALACCOUNT_PROVIDERS', {}).get( 'shopify', {}).get('AUTH_PARAMS', {}).get('grant_options[]', '') return grant_options.lower().strip() == 'per-user' def get_auth_params(self, request, action): ret = super(ShopifyProvider, self).get_auth_params(request, action) shop = request.GET.get('shop', None) if shop: ret.update({'shop': shop}) return ret def get_default_scope(self): return ['read_orders', 'read_products'] def extract_uid(self, data): if self.is_per_user: return str(data['associated_user']['id']) else: return str(data['shop']['id']) def extract_common_fields(self, data): if self.is_per_user: return dict( email=data['associated_user']['email'], first_name=data['associated_user']['first_name'], last_name=data['associated_user']['last_name'], ) else: # See: https://docs.shopify.com/api/shop # Without online mode, User is only available with Shopify Plus, # email is the only common field return dict(email=data['shop']['email']) provider_classes = [ShopifyProvider] django-allauth-0.35.0/allauth/socialaccount/providers/shopify/__init__.py0000644000076500000240000000000012672343321027531 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/shopify/tests.py0000644000076500000240000001276013235130412027143 0ustar pennersrstaff00000000000000import json from django.test.utils import override_settings from django.urls import reverse from allauth.compat import parse_qs, urlparse from allauth.socialaccount.models import SocialAccount from allauth.socialaccount.providers import registry from allauth.socialaccount.tests import create_oauth2_tests from allauth.tests import MockedResponse, mocked_response from .provider import ShopifyProvider class ShopifyTests(create_oauth2_tests(registry.by_id(ShopifyProvider.id))): def _complete_shopify_login(self, q, resp, resp_mock, with_refresh_token): complete_url = reverse(self.provider.id + '_callback') self.assertGreater(q['redirect_uri'][0] .find(complete_url), 0) response_json = self \ .get_login_response_json(with_refresh_token=with_refresh_token) with mocked_response( MockedResponse( 200, response_json, {'content-type': 'application/json'}), resp_mock): resp = self.client.get(complete_url, {'code': 'test', 'state': q['state'][0], 'shop': 'test', }) return resp def login(self, resp_mock, process='login', with_refresh_token=True): resp = self.client.get(reverse(self.provider.id + '_login'), {'process': process, 'shop': 'test'}) self.assertEqual(resp.status_code, 302) p = urlparse(resp['location']) q = parse_qs(p.query) resp = self._complete_shopify_login(q, resp, resp_mock, with_refresh_token) return resp def get_mocked_response(self): return MockedResponse(200, """ { "shop": { "id": "1234566", "name": "Test Shop", "email": "email@example.com" } } """) @override_settings(SOCIALACCOUNT_PROVIDERS={'shopify': {'IS_EMBEDDED': True}}) class ShopifyEmbeddedTests(ShopifyTests): """ Shopify embedded apps (that run within an iFrame) require a JS (not server) redirect for starting the oauth2 process. See Also: https://help.shopify.com/api/sdks/embedded-app-sdk/getting-started#oauth """ def login(self, resp_mock, process='login', with_refresh_token=True): resp = self.client.get(reverse(self.provider.id + '_login'), {'process': process, 'shop': 'test'}) self.assertEqual(resp.status_code, 200) # No re-direct, JS must do it actual_content = resp.content.decode('utf8') self.assertTrue('script' in actual_content, 'Content missing script tag. [Actual: {}]'.format( actual_content)) self.assertTrue(resp.xframe_options_exempt, 'Redirect JS must be allowed to run in Shopify iframe') self.assertTrue( '' in actual_content and '' in actual_content, 'Expected standard HTML skeleton. [Actual: {}]'.format( actual_content ) ) p = urlparse(actual_content.split(";")[0].split( 'location.href = "')[1]) q = parse_qs(p.query) resp = self._complete_shopify_login(q, resp, resp_mock, with_refresh_token) return resp @override_settings(SOCIALACCOUNT_PROVIDERS={ 'shopify': {'AUTH_PARAMS': {'grant_options[]': 'per-user'}}}) class ShopifyPerUserAccessTests(ShopifyTests): """ Shopify has two access modes, offline (the default) and online/per-user. Enabling 'online' access should cause all-auth to tie the logged in Shopify user to the all-auth account (rather than the shop as a whole). See Also: https://help.shopify.com/api/getting-started/authentication/ oauth#api-access-modes """ def get_login_response_json(self, with_refresh_token=True): response_data = { "access_token": "testac", "scope": "write_orders,read_customers", "expires_in": 86399, "associated_user_scope": "write_orders", "associated_user": { "id": 902541635, "first_name": "Jon", "last_name": "Smith", "email": "jon@example.com", "account_owner": True } } if with_refresh_token: response_data['refresh_token'] = 'testrf' return json.dumps(response_data) @override_settings(SOCIALACCOUNT_AUTO_SIGNUP=True, SOCIALACCOUNT_EMAIL_REQUIRED=True, ACCOUNT_EMAIL_REQUIRED=True) def test_associated_user(self): resp_mocks = self.get_mocked_response() resp = self.login(resp_mocks) self.assertRedirects( resp, "/accounts/profile/", fetch_redirect_response=False ) social_account = SocialAccount.objects.filter( provider=self.provider.id, uid=902541635, ).first() self.assertIsNotNone(social_account) self.assertTrue('associated_user' in social_account.extra_data) self.assertEqual(social_account.user.email, 'jon@example.com') self.assertEqual(social_account.user.first_name, 'Jon') self.assertEqual(social_account.user.last_name, 'Smith') django-allauth-0.35.0/allauth/socialaccount/providers/shopify/urls.py0000644000076500000240000000025013117447115026767 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns from .provider import ShopifyProvider urlpatterns = default_urlpatterns(ShopifyProvider) django-allauth-0.35.0/allauth/socialaccount/providers/shopify/views.py0000644000076500000240000000615413117447115027150 0ustar pennersrstaff00000000000000import re import requests from django.conf import settings from django.http import HttpResponse, HttpResponseBadRequest from allauth.exceptions import ImmediateHttpResponse from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) from .provider import ShopifyProvider class ShopifyOAuth2Adapter(OAuth2Adapter): provider_id = ShopifyProvider.id supports_state = False scope_delimiter = ',' def _shop_domain(self): shop = self.request.GET.get('shop', '') if '.' not in shop: shop = '{}.myshopify.com'.format(shop) # Ensure the provided hostname parameter is a valid hostname, # ends with myshopify.com, and does not contain characters # other than letters (a-z), numbers (0-9), dots, and hyphens. if not re.match(r'^[a-z0-9-]+\.myshopify\.com$', shop): raise ImmediateHttpResponse(HttpResponseBadRequest( 'Invalid `shop` parameter')) return shop def _shop_url(self, path): shop = self._shop_domain() return 'https://{}{}'.format(shop, path) @property def access_token_url(self): return self._shop_url('/admin/oauth/access_token') @property def authorize_url(self): return self._shop_url('/admin/oauth/authorize') @property def profile_url(self): return self._shop_url('/admin/shop.json') def complete_login(self, request, app, token, **kwargs): headers = { 'X-Shopify-Access-Token': '{token}'.format(token=token.token)} response = requests.get( self.profile_url, headers=headers) extra_data = response.json() associated_user = kwargs['response'].get('associated_user') if associated_user: extra_data['associated_user'] = associated_user return self.get_provider().sociallogin_from_response( request, extra_data) class ShopifyOAuth2LoginView(OAuth2LoginView): def dispatch(self, request): response = super(ShopifyOAuth2LoginView, self).dispatch(request) is_embedded = getattr(settings, 'SOCIALACCOUNT_PROVIDERS', {}).get( 'shopify', {}).get('IS_EMBEDDED', False) if is_embedded: """ Shopify embedded apps (that run within an iFrame) require a JS (not server) redirect for starting the oauth2 process. See Also: https://help.shopify.com/api/sdks/embedded-app-sdk/getting-started#oauth """ js = ''.join(( '' '' )) response = HttpResponse(content=js) # Because this view will be within shopify's iframe response.xframe_options_exempt = True return response oauth2_login = ShopifyOAuth2LoginView.adapter_view(ShopifyOAuth2Adapter) oauth2_callback = OAuth2CallbackView.adapter_view(ShopifyOAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/providers/edmodo/0000755000076500000240000000000013235133532025215 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/edmodo/provider.py0000644000076500000240000000201313117447115027421 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class EdmodoAccount(ProviderAccount): def get_profile_url(self): return self.account.extra_data.get('profile_url') def get_avatar_url(self): return self.account.extra_data.get('avatar_url') class EdmodoProvider(OAuth2Provider): id = 'edmodo' name = 'Edmodo' account_class = EdmodoAccount def get_default_scope(self): return ['basic'] def extract_uid(self, data): return str(data['id']) def extract_common_fields(self, data): return dict(first_name=data.get('first_name'), last_name=data.get('last_name'), email=data.get('email', '')) def extract_extra_data(self, data): return dict(user_type=data.get('type'), profile_url=data.get('url'), avatar_url=data.get('avatars').get('large')) provider_classes = [EdmodoProvider] django-allauth-0.35.0/allauth/socialaccount/providers/edmodo/__init__.py0000644000076500000240000000000012671004326027315 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/edmodo/tests.py0000644000076500000240000000217313117447115026740 0ustar pennersrstaff00000000000000from allauth.socialaccount.tests import OAuth2TestsMixin from allauth.tests import MockedResponse, TestCase from .provider import EdmodoProvider class EdmodoTests(OAuth2TestsMixin, TestCase): provider_id = EdmodoProvider.id def get_mocked_response(self): return MockedResponse(200, """ { "url": "https://api.edmodo.com/users/74721257", "id": 74721257, "type": "teacher", "username": "getacclaim-teacher1", "user_title": null, "first_name": "Edmodo Test", "last_name": "Teacher", "time_zone": "America/New_York", "utc_offset": -18000, "locale": "en", "gender": null, "start_level": null, "end_level": null, "about": null, "premium": false, "school": {"url": "https://api.edmodo.com/schools/559253", "id": 559253}, "verified_institution_member": true, "coppa_verified": false, "subjects": null, "avatars": { "small": "https://api.edmodo.com/users/74721257/avatar?type=small&u=670329ncqnf8fxv7tya24byn5", "large": "https://api.edmodo.com/users/74721257/avatar?type=large&u=670329ncqnf8fxv7tya24byn5" }, "email":"test@example.com", "sync_enabled": false } """) # noqa django-allauth-0.35.0/allauth/socialaccount/providers/edmodo/urls.py0000644000076500000240000000024613117447115026562 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns from .provider import EdmodoProvider urlpatterns = default_urlpatterns(EdmodoProvider) django-allauth-0.35.0/allauth/socialaccount/providers/edmodo/views.py0000644000076500000240000000163113117447115026731 0ustar pennersrstaff00000000000000import requests from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) from .provider import EdmodoProvider class EdmodoOAuth2Adapter(OAuth2Adapter): provider_id = EdmodoProvider.id access_token_url = 'https://api.edmodo.com/oauth/token' authorize_url = 'https://api.edmodo.com/oauth/authorize' profile_url = 'https://api.edmodo.com/users/me' def complete_login(self, request, app, token, **kwargs): resp = requests.get(self.profile_url, params={'access_token': token.token}) extra_data = resp.json() return self.get_provider().sociallogin_from_response(request, extra_data) oauth2_login = OAuth2LoginView.adapter_view(EdmodoOAuth2Adapter) oauth2_callback = OAuth2CallbackView.adapter_view(EdmodoOAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/providers/__init__.py0000644000076500000240000000326713055274503026073 0ustar pennersrstaff00000000000000import importlib from collections import OrderedDict from django.conf import settings class ProviderRegistry(object): def __init__(self): self.provider_map = OrderedDict() self.loaded = False def get_list(self, request=None): self.load() return [ provider_cls(request) for provider_cls in self.provider_map.values()] def register(self, cls): self.provider_map[cls.id] = cls def by_id(self, id, request=None): self.load() return self.provider_map[id](request=request) def as_choices(self): self.load() for provider_cls in self.provider_map.values(): yield (provider_cls.id, provider_cls.name) def load(self): # TODO: Providers register with the provider registry when # loaded. Here, we build the URLs for all registered providers. So, we # really need to be sure all providers did register, which is why we're # forcefully importing the `provider` modules here. The overall # mechanism is way to magical and depends on the import order et al, so # all of this really needs to be revisited. if not self.loaded: for app in settings.INSTALLED_APPS: try: provider_module = importlib.import_module( app + '.provider' ) except ImportError: pass else: for cls in getattr( provider_module, 'provider_classes', [] ): self.register(cls) self.loaded = True registry = ProviderRegistry() django-allauth-0.35.0/allauth/socialaccount/providers/foursquare/0000755000076500000240000000000013235133532026142 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/foursquare/provider.py0000644000076500000240000000171613117447115030357 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class FoursquareAccount(ProviderAccount): def get_profile_url(self): return 'https://foursquare.com/user/' \ + self.account.extra_data.get('id') def get_avatar_url(self): return self.account.extra_data.get('photo') def to_str(self): dflt = super(FoursquareAccount, self).to_str() return self.account.extra_data.get('name', dflt) class FoursquareProvider(OAuth2Provider): id = 'foursquare' name = 'Foursquare' account_class = FoursquareAccount def extract_uid(self, data): return str(data['id']) def extract_common_fields(self, data): return dict(first_name=data.get('firstname'), last_name=data.get('lastname'), email=data.get('contact').get('email')) provider_classes = [FoursquareProvider] django-allauth-0.35.0/allauth/socialaccount/providers/foursquare/__init__.py0000644000076500000240000000000012671004326030242 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/foursquare/tests.py0000644000076500000240000000467513235130412027664 0ustar pennersrstaff00000000000000from allauth.socialaccount.tests import OAuth2TestsMixin from allauth.tests import MockedResponse, TestCase from .provider import FoursquareProvider class FoursquareTests(OAuth2TestsMixin, TestCase): provider_id = FoursquareProvider.id def get_mocked_response(self): return MockedResponse(200, """ {"notifications": [{"item": {"unreadCount": 0}, "type": "notificationTray"}], "meta": {"code": 200}, "response": { "user": { "photo": { "prefix": "https://irs0.4sqi.net/img/user/", "suffix": "/blank_boy.png"}, "pings": false, "homeCity": "Athens, ESYE31", "id": "76077726", "badges": {"count": 0, "items": []}, "referralId": "u-76077726", "friends": { "count": 0, "groups": [{"count": 0, "items": [], "type": "friends", "name": "Mutual friends"}, {"count": 0, "items": [], "type": "others", "name": "Other friends"}] }, "createdAt": 1389624445, "tips": {"count": 0}, "type": "user", "bio": "", "relationship": "self", "lists": { "count": 1, "groups": [{"count": 1, "items": [{"description": "", "collaborative": false, "url": "/user/76077726/list/todos", "editable": false, "listItems": {"count": 0}, "id": "76077726/todos", "followers": {"count": 0}, "user": {"gender": "male", "firstName": "\u03a1\u03c9\u03bc\u03b1\u03bd\u03cc\u03c2", "relationship": "self", "photo": {"prefix": "https://irs0.4sqi.net/img/user/", "suffix": "/blank_boy.png"}, "lastName": "\u03a4\u03c3\u03bf\u03c5\u03c1\u03bf\u03c0\u03bb\u03ae\u03c2", "id": "76077726"}, "public": false, "canonicalUrl": "https://foursquare.com/user/76077726/list/todos", "name": "My to-do list"}], "type": "created"}, {"count": 0, "items": [], "type": "followed"}] }, "photos": {"count": 0, "items": []}, "checkinPings": "off", "scores": {"max": 0, "checkinsCount": 0, "goal": 50, "recent": 0}, "checkins": {"count": 0, "items": []}, "firstName": "\u03a1\u03c9\u03bc\u03b1\u03bd\u03cc\u03c2", "gender": "male", "contact": {"email": "romdimtsouroplis@example.com"}, "lastName": "\u03a4\u03c3\u03bf\u03c5\u03c1\u03bf\u03c0\u03bb\u03ae\u03c2", "following": {"count": 0, "groups": [{"count": 0, "items": [], "type": "following", "name": "Mutual following"}, {"count": 0, "items": [], "type": "others", "name": "Other following"}]}, "requests": {"count": 0}, "mayorships": {"count": 0, "items": []}} } } """) django-allauth-0.35.0/allauth/socialaccount/providers/foursquare/urls.py0000644000076500000240000000025613117447115027510 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns from .provider import FoursquareProvider urlpatterns = default_urlpatterns(FoursquareProvider) django-allauth-0.35.0/allauth/socialaccount/providers/foursquare/views.py0000644000076500000240000000240213117447115027653 0ustar pennersrstaff00000000000000import requests from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) from .provider import FoursquareProvider class FoursquareOAuth2Adapter(OAuth2Adapter): provider_id = FoursquareProvider.id access_token_url = 'https://foursquare.com/oauth2/access_token' # Issue ?? -- this one authenticates over and over again... # authorize_url = 'https://foursquare.com/oauth2/authorize' authorize_url = 'https://foursquare.com/oauth2/authenticate' profile_url = 'https://api.foursquare.com/v2/users/self' def complete_login(self, request, app, token, **kwargs): # Foursquare needs a version number for their API requests as # documented here # https://developer.foursquare.com/overview/versioning resp = requests.get( self.profile_url, params={'oauth_token': token.token, 'v': '20140116'}) extra_data = resp.json()['response']['user'] return self.get_provider().sociallogin_from_response(request, extra_data) oauth2_login = OAuth2LoginView.adapter_view(FoursquareOAuth2Adapter) oauth2_callback = OAuth2CallbackView.adapter_view(FoursquareOAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/providers/mailchimp/0000755000076500000240000000000013235133533025712 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/mailchimp/provider.py0000644000076500000240000000260313117447115030122 0ustar pennersrstaff00000000000000"""Customise Provider classes for MailChimp API v3.""" from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class MailChimpAccount(ProviderAccount): """ProviderAccount subclass for MailChimp.""" def get_profile_url(self): """Return base profile url.""" return self.account.extra_data['api_endpoint'] def get_avatar_url(self): """Return avatar url.""" return self.account.extra_data['login']['avatar'] class MailChimpProvider(OAuth2Provider): """OAuth2Provider subclass for MailChimp v3.""" id = 'mailchimp' name = 'MailChimp' account_class = MailChimpAccount def extract_uid(self, data): """Extract uid ('user_id') and ensure it's a str.""" return str(data['user_id']) def get_default_scope(self): """Ensure scope is null to fit their API.""" return [''] def extract_common_fields(self, data): """Extract fields from a metadata query.""" return dict( dc=data.get('dc'), role=data.get('role'), account_name=data.get('accountname'), user_id=data.get('user_id'), login=data.get('login'), login_url=data.get('login_url'), api_endpoint=data.get('api_endpoint'), ) provider_classes = [MailChimpProvider] django-allauth-0.35.0/allauth/socialaccount/providers/mailchimp/__init__.py0000644000076500000240000000000013055274501030012 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/mailchimp/tests.py0000644000076500000240000000201013235130412027410 0ustar pennersrstaff00000000000000"""Test MailChimp OAuth2 v3 Flow.""" from allauth.socialaccount.tests import OAuth2TestsMixin from allauth.tests import MockedResponse, TestCase from .provider import MailChimpProvider class MailChimpTests(OAuth2TestsMixin, TestCase): """Test Class for MailChimp OAuth2 v3.""" provider_id = MailChimpProvider.id def get_mocked_response(self): """Test authentication with an non-null avatar.""" return MockedResponse(200, """{ "dc": "usX", "role": "owner", "accountname": "Name can have spaces", "user_id": "99999999", "login": { "email": "test@example.com", "avatar": "http://gallery.mailchimp.com/1a1a/avatar/2a2a.png", "login_id": "88888888", "login_name": "test@example.com", "login_email": "test@example.com" }, "login_url": "https://login.mailchimp.com", "api_endpoint": "https://usX.api.mailchimp.com" }""") django-allauth-0.35.0/allauth/socialaccount/providers/mailchimp/urls.py0000644000076500000240000000032613117447115027255 0ustar pennersrstaff00000000000000"""Register urls for MailChimpProvider""" from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns from .provider import MailChimpProvider urlpatterns = default_urlpatterns(MailChimpProvider) django-allauth-0.35.0/allauth/socialaccount/providers/mailchimp/views.py0000644000076500000240000000215413117447115027426 0ustar pennersrstaff00000000000000"""Views for MailChimp API v3.""" import requests from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) from .provider import MailChimpProvider class MailChimpOAuth2Adapter(OAuth2Adapter): """OAuth2Adapter for MailChimp API v3.""" provider_id = MailChimpProvider.id authorize_url = 'https://login.mailchimp.com/oauth2/authorize' access_token_url = 'https://login.mailchimp.com/oauth2/token' profile_url = 'https://login.mailchimp.com/oauth2/metadata' def complete_login(self, request, app, token, **kwargs): """Complete login, ensuring correct OAuth header.""" headers = {'Authorization': 'OAuth {0}'.format(token.token)} metadata = requests.get(self.profile_url, headers=headers) extra_data = metadata.json() return self.get_provider().sociallogin_from_response(request, extra_data) oauth2_login = OAuth2LoginView.adapter_view(MailChimpOAuth2Adapter) oauth2_callback = OAuth2CallbackView.adapter_view(MailChimpOAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/providers/tumblr/0000755000076500000240000000000013235133533025254 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/tumblr/provider.py0000644000076500000240000000136513117447115027470 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth.provider import OAuthProvider class TumblrAccount(ProviderAccount): def get_profile_url_(self): return 'http://%s.tumblr.com/' \ % self.account.extra_data.get('name') def to_str(self): dflt = super(TumblrAccount, self).to_str() name = self.account.extra_data.get('name', dflt) return name class TumblrProvider(OAuthProvider): id = 'tumblr' name = 'Tumblr' account_class = TumblrAccount def extract_uid(self, data): return data['name'] def extract_common_fields(self, data): return dict(first_name=data.get('name'),) provider_classes = [TumblrProvider] django-allauth-0.35.0/allauth/socialaccount/providers/tumblr/__init__.py0000644000076500000240000000002612671004326027363 0ustar pennersrstaff00000000000000__author__ = 'jshedd' django-allauth-0.35.0/allauth/socialaccount/providers/tumblr/tests.py0000644000076500000240000000164613117447115027002 0ustar pennersrstaff00000000000000# -*- coding: utf-8 -*- from __future__ import unicode_literals from allauth.socialaccount.tests import OAuthTestsMixin from allauth.tests import MockedResponse, TestCase from .provider import TumblrProvider class TumblrTests(OAuthTestsMixin, TestCase): provider_id = TumblrProvider.id def get_mocked_response(self): return [MockedResponse(200, """ { "meta": { "status": 200, "msg": "OK" }, "response": { "user": { "following": 263, "default_post_format": "html", "name": "derekg", "likes": 606, "blogs": [ { "name": "derekg", "title": "Derek Gottfrid", "url": "http://derekg.org/", "tweet": "auto", "primary": true, "followers": 33004929 }, { "name": "ihatehipstrz", "title": "I Hate Hipstrz" } ] } } } """)] django-allauth-0.35.0/allauth/socialaccount/providers/tumblr/urls.py0000644000076500000240000000024513117447115026617 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth.urls import default_urlpatterns from .provider import TumblrProvider urlpatterns = default_urlpatterns(TumblrProvider) django-allauth-0.35.0/allauth/socialaccount/providers/tumblr/views.py0000644000076500000240000000225413117447115026771 0ustar pennersrstaff00000000000000import json from allauth.socialaccount.providers.oauth.client import OAuth from allauth.socialaccount.providers.oauth.views import ( OAuthAdapter, OAuthCallbackView, OAuthLoginView, ) from .provider import TumblrProvider class TumblrAPI(OAuth): url = 'http://api.tumblr.com/v2/user/info' def get_user_info(self): data = json.loads(self.query(self.url)) return data['response']['user'] class TumblrOAuthAdapter(OAuthAdapter): provider_id = TumblrProvider.id request_token_url = 'https://www.tumblr.com/oauth/request_token' access_token_url = 'https://www.tumblr.com/oauth/access_token' authorize_url = 'https://www.tumblr.com/oauth/authorize' def complete_login(self, request, app, token, response): client = TumblrAPI(request, app.client_id, app.secret, self.request_token_url) extra_data = client.get_user_info() return self.get_provider().sociallogin_from_response(request, extra_data) oauth_login = OAuthLoginView.adapter_view(TumblrOAuthAdapter) oauth_callback = OAuthCallbackView.adapter_view(TumblrOAuthAdapter) django-allauth-0.35.0/allauth/socialaccount/providers/bitbucket_oauth2/0000755000076500000240000000000013235133532027204 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/bitbucket_oauth2/provider.py0000644000076500000240000000214213117447115031413 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class BitbucketOAuth2Account(ProviderAccount): def get_profile_url(self): return (self.account.extra_data .get('links', {}) .get('html', {}) .get('href')) def get_avatar_url(self): return (self.account.extra_data .get('links', {}) .get('avatar', {}) .get('href')) def to_str(self): dflt = super(BitbucketOAuth2Account, self).to_str() return self.account.extra_data.get('display_name', dflt) class BitbucketOAuth2Provider(OAuth2Provider): id = 'bitbucket_oauth2' name = 'Bitbucket' account_class = BitbucketOAuth2Account def extract_uid(self, data): return data['username'] def extract_common_fields(self, data): return dict(email=data.get('email'), username=data.get('username'), name=data.get('display_name')) provider_classes = [BitbucketOAuth2Provider] django-allauth-0.35.0/allauth/socialaccount/providers/bitbucket_oauth2/__init__.py0000644000076500000240000000000012671004326031304 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/bitbucket_oauth2/tests.py0000644000076500000240000001333413235130412030716 0ustar pennersrstaff00000000000000# -*- coding: utf-8 -*- from __future__ import unicode_literals from django.test.utils import override_settings from allauth.socialaccount.models import SocialAccount from allauth.socialaccount.providers import registry from allauth.socialaccount.tests import create_oauth2_tests from allauth.tests import MockedResponse, patch from .provider import BitbucketOAuth2Provider try: from unittest import mock except ImportError: import mock @override_settings(SOCIALACCOUNT_QUERY_EMAIL=True) class BitbucketOAuth2Tests(create_oauth2_tests(registry.by_id( BitbucketOAuth2Provider.id))): response_data = """ { "created_on": "2011-12-20T16:34:07.132459+00:00", "display_name": "tutorials account", "links": { "avatar": { "href": "https://bitbucket-assetroot.s3.amazonaws.com/c/photos/2013/Nov/25/tutorials-avatar-1563784409-6_avatar.png" }, "followers": { "href": "https://api.bitbucket.org/2.0/users/tutorials/followers" }, "following": { "href": "https://api.bitbucket.org/2.0/users/tutorials/following" }, "html": { "href": "https://bitbucket.org/tutorials" }, "repositories": { "href": "https://api.bitbucket.org/2.0/repositories/tutorials" }, "self": { "href": "https://api.bitbucket.org/2.0/users/tutorials" } }, "location": "Santa Monica, CA", "type": "user", "username": "tutorials", "uuid": "{c788b2da-b7a2-404c-9e26-d3f077557007}", "website": "https://tutorials.bitbucket.org/" } """ # noqa email_response_data = """ { "page": 1, "pagelen": 10, "size": 1, "values": [ { "email": "tutorials@bitbucket.org", "is_confirmed": true, "is_primary": true, "links": { "self": { "href": "https://api.bitbucket.org/2.0/user/emails/tutorials@bitbucket.org" } }, "type": "email" }, { "email": "tutorials+secondary@bitbucket.org", "is_confirmed": true, "is_primary": true, "links": { "self": { "href": "https://api.bitbucket.org/2.0/user/emails/tutorials+secondary@bitbucket.org" } }, "type": "email" } ] } """ # noqa def setUp(self): super(BitbucketOAuth2Tests, self).setUp() self.mocks = { 'requests': patch('allauth.socialaccount.providers' '.bitbucket_oauth2.views.requests') } self.patches = dict((name, mocked.start()) for (name, mocked) in self.mocks.items()) self.patches['requests'].get.side_effect = [ MockedResponse(200, self.response_data), MockedResponse(200, self.email_response_data), ] def tearDown(self): for (_, mocked) in self.mocks.items(): mocked.stop() def get_mocked_response(self): return [MockedResponse(200, self.response_data)] def test_account_tokens(self, multiple_login=False): if multiple_login: self.patches['requests'].get.side_effect = [ MockedResponse(200, self.response_data), MockedResponse(200, self.email_response_data), MockedResponse(200, self.response_data), MockedResponse(200, self.email_response_data), ] super(BitbucketOAuth2Tests, self).test_account_tokens(multiple_login) calls = [ mock.call('https://api.bitbucket.org/2.0/user', params=mock.ANY), mock.call('https://api.bitbucket.org/2.0/user/emails', params=mock.ANY), ] if multiple_login: calls.extend([ mock.call('https://api.bitbucket.org/2.0/user', params=mock.ANY), mock.call('https://api.bitbucket.org/2.0/user/emails', params=mock.ANY), ]) self.patches['requests'].get.assert_has_calls(calls) def test_provider_account(self): self.login(self.get_mocked_response()) socialaccount = SocialAccount.objects.get(uid='tutorials') self.assertEqual(socialaccount.user.username, 'tutorials') self.assertEqual(socialaccount.user.email, 'tutorials@bitbucket.org') account = socialaccount.get_provider_account() self.assertEqual(account.to_str(), 'tutorials account') self.assertEqual( account.get_profile_url(), 'https://bitbucket.org/tutorials' ) self.assertEqual( account.get_avatar_url(), 'https://bitbucket-assetroot.s3.amazonaws.com/c/photos/2013/Nov/25/tutorials-avatar-1563784409-6_avatar.png' # noqa ) self.patches['requests'].get.assert_has_calls([ mock.call('https://api.bitbucket.org/2.0/user', params=mock.ANY), mock.call('https://api.bitbucket.org/2.0/user/emails', params=mock.ANY), ]) django-allauth-0.35.0/allauth/socialaccount/providers/bitbucket_oauth2/urls.py0000644000076500000240000000026713117447115030554 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth.urls import default_urlpatterns from .provider import BitbucketOAuth2Provider urlpatterns = default_urlpatterns(BitbucketOAuth2Provider) django-allauth-0.35.0/allauth/socialaccount/providers/bitbucket_oauth2/views.py0000644000076500000240000000335113117447115030721 0ustar pennersrstaff00000000000000import requests from allauth.socialaccount import app_settings from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) from .provider import BitbucketOAuth2Provider class BitbucketOAuth2Adapter(OAuth2Adapter): provider_id = BitbucketOAuth2Provider.id access_token_url = 'https://bitbucket.org/site/oauth2/access_token' authorize_url = 'https://bitbucket.org/site/oauth2/authorize' profile_url = 'https://api.bitbucket.org/2.0/user' emails_url = 'https://api.bitbucket.org/2.0/user/emails' def complete_login(self, request, app, token, **kwargs): resp = requests.get(self.profile_url, params={'access_token': token.token}) extra_data = resp.json() if app_settings.QUERY_EMAIL and not extra_data.get('email'): extra_data['email'] = self.get_email(token) return self.get_provider().sociallogin_from_response(request, extra_data) def get_email(self, token): """Fetches email address from email API endpoint""" resp = requests.get(self.emails_url, params={'access_token': token.token}) emails = resp.json().get('values', []) email = '' try: email = emails[0].get('email') primary_emails = [e for e in emails if e.get('is_primary', False)] email = primary_emails[0].get('email') except (IndexError, TypeError, KeyError): return '' finally: return email oauth_login = OAuth2LoginView.adapter_view(BitbucketOAuth2Adapter) oauth_callback = OAuth2CallbackView.adapter_view(BitbucketOAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/providers/vk/0000755000076500000240000000000013235133533024367 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/vk/provider.py0000644000076500000240000000300013235130412026555 0ustar pennersrstaff00000000000000from allauth.socialaccount import app_settings from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class VKAccount(ProviderAccount): def get_profile_url(self): return 'https://vk.com/id%s' % self.account.extra_data.get('uid') def get_avatar_url(self): ret = None photo_big_url = self.account.extra_data.get('photo_big') photo_medium_url = self.account.extra_data.get('photo_medium') if photo_big_url: return photo_big_url elif photo_medium_url: return photo_medium_url else: return ret def to_str(self): first_name = self.account.extra_data.get('first_name', '') last_name = self.account.extra_data.get('last_name', '') name = ' '.join([first_name, last_name]).strip() return name or super(VKAccount, self).to_str() class VKProvider(OAuth2Provider): id = 'vk' name = 'VK' account_class = VKAccount def get_default_scope(self): scope = [] if app_settings.QUERY_EMAIL: scope.append('email') return scope def extract_uid(self, data): return str(data['uid']) def extract_common_fields(self, data): return dict(email=data.get('email'), last_name=data.get('last_name'), username=data.get('screen_name'), first_name=data.get('first_name')) provider_classes = [VKProvider] django-allauth-0.35.0/allauth/socialaccount/providers/vk/__init__.py0000644000076500000240000000000012671004326026466 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/vk/tests.py0000644000076500000240000000227713117447116026117 0ustar pennersrstaff00000000000000from __future__ import absolute_import from allauth.socialaccount.tests import OAuth2TestsMixin from allauth.tests import MockedResponse, TestCase from .provider import VKProvider class VKTests(OAuth2TestsMixin, TestCase): provider_id = VKProvider.id def get_mocked_response(self, verified_email=True): return MockedResponse(200, """ {"response": [{"last_name": "Penners", "university_name": "", "photo": "http://vk.com/images/camera_c.gif", "sex": 2, "photo_medium": "http://vk.com/images/camera_b.gif", "relation": "0", "timezone": 1, "photo_big": "http://vk.com/images/camera_a.gif", "uid": 219004864, "universities": [], "city": "1430", "first_name": "Raymond", "faculty_name": "", "online": 1, "counters": {"videos": 0, "online_friends": 0, "notes": 0, "audios": 0, "photos": 0, "followers": 0, "groups": 0, "user_videos": 0, "albums": 0, "friends": 0}, "home_phone": "", "faculty": 0, "nickname": "", "screen_name": "id219004864", "has_mobile": 1, "country": "139", "university": 0, "graduation": 0, "activity": "", "last_seen": {"time": 1377805189}}]} """) def get_login_response_json(self, with_refresh_token=True): return '{"user_id": 219004864, "access_token":"testac"}' django-allauth-0.35.0/allauth/socialaccount/providers/vk/urls.py0000644000076500000240000000023613117447116025733 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns from .provider import VKProvider urlpatterns = default_urlpatterns(VKProvider) django-allauth-0.35.0/allauth/socialaccount/providers/vk/views.py0000644000076500000240000000346513117447116026112 0ustar pennersrstaff00000000000000import requests from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) from .provider import VKProvider USER_FIELDS = ['first_name', 'last_name', 'nickname', 'screen_name', 'sex', 'bdate', 'city', 'country', 'timezone', 'photo', 'photo_medium', 'photo_big', 'photo_max_orig', 'has_mobile', 'contacts', 'education', 'online', 'counters', 'relation', 'last_seen', 'activity', 'universities'] class VKOAuth2Adapter(OAuth2Adapter): provider_id = VKProvider.id access_token_url = 'https://oauth.vk.com/access_token' authorize_url = 'https://oauth.vk.com/authorize' profile_url = 'https://api.vk.com/method/users.get' def complete_login(self, request, app, token, **kwargs): uid = kwargs['response'].get('user_id') params = { 'access_token': token.token, 'fields': ','.join(USER_FIELDS), } if uid: params['user_ids'] = uid resp = requests.get(self.profile_url, params=params) resp.raise_for_status() extra_data = resp.json()['response'][0] email = kwargs['response'].get('email') if email: extra_data['email'] = email return self.get_provider().sociallogin_from_response(request, extra_data) oauth2_login = OAuth2LoginView.adapter_view(VKOAuth2Adapter) oauth2_callback = OAuth2CallbackView.adapter_view(VKOAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/providers/xing/0000755000076500000240000000000013235133533024714 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/xing/provider.py0000644000076500000240000000214513117447116027126 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth.provider import OAuthProvider class XingAccount(ProviderAccount): def get_profile_url(self): return self.account.extra_data.get('permalink') def get_avatar_url(self): return self.account.extra_data.get( 'photo_urls', {}).get('large') def to_str(self): dflt = super(XingAccount, self).to_str() first_name = self.account.extra_data.get('first_name', '') last_name = self.account.extra_data.get('last_name', '') name = ' '.join([first_name, last_name]).strip() return name or dflt class XingProvider(OAuthProvider): id = 'xing' name = 'Xing' account_class = XingAccount def extract_uid(self, data): return data['id'] def extract_common_fields(self, data): return dict(email=data.get('active_email'), username=data.get('page_name'), first_name=data.get('first_name'), last_name=data.get('last_name')) provider_classes = [XingProvider] django-allauth-0.35.0/allauth/socialaccount/providers/xing/__init__.py0000644000076500000240000000000012671004326027013 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/xing/tests.py0000644000076500000240000000362613235130412026430 0ustar pennersrstaff00000000000000# -*- coding: utf-8 -*- from __future__ import unicode_literals from allauth.socialaccount.tests import OAuthTestsMixin from allauth.tests import MockedResponse, TestCase from .provider import XingProvider class XingTests(OAuthTestsMixin, TestCase): provider_id = XingProvider.id def get_mocked_response(self): return [MockedResponse(200, """ {"users":[{"id":"20493333_1cd028","active_email":"raymond.penners@example.com", "badges":[],"birth_date":{"year":null,"month":null,"day":null}, "business_address":{"street":null,"zip_code":null,"city":null,"province":null, "country":"NL","email":null,"fax":null,"phone":null,"mobile_phone":null}, "display_name":"Raymond Penners","educational_background": {"primary_school_id":null,"schools":[],"qualifications":[]}, "employment_status":"EMPLOYEE","first_name":"Raymond","gender":"m", "haves":null,"instant_messaging_accounts":{},"interests":null,"languages": {"nl":null},"last_name":"Penners","organisation_member":null, "page_name":"Raymond_Penners", "permalink":"https://www.xing.com/profile/Raymond_Penners", "photo_urls":{"thumb":"https://www.xing.com/img/n/nobody_m.30x40.jpg", "large":"https://www.xing.com/img/n/nobody_m.140x185.jpg","mini_thumb": "https://www.xing.com/img/n/nobody_m.18x24.jpg","maxi_thumb": "https://www.xing.com/img/n/nobody_m.70x93.jpg","medium_thumb": "https://www.xing.com/img/n/nobody_m.57x75.jpg"},"premium_services":[], "private_address":{"street":null,"zip_code":null,"city":null,"province":null, "country":null,"email":"raymond.penners@example.com","fax":null, "phone":null,"mobile_phone":null},"professional_experience": {"primary_company":{"name":null,"url":null,"tag":null,"title":null, "begin_date":null,"end_date":null,"description":null,"industry":"OTHERS", "company_size":null,"career_level":null},"non_primary_companies":[], "awards":[]},"time_zone":{"utc_offset":2.0,"name":"Europe/Berlin"}, "wants":null,"web_profiles":{}}]} """)] django-allauth-0.35.0/allauth/socialaccount/providers/xing/urls.py0000644000076500000240000000024113117447116026254 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth.urls import default_urlpatterns from .provider import XingProvider urlpatterns = default_urlpatterns(XingProvider) django-allauth-0.35.0/allauth/socialaccount/providers/xing/views.py0000644000076500000240000000221013117447116026422 0ustar pennersrstaff00000000000000import json from allauth.socialaccount.providers.oauth.client import OAuth from allauth.socialaccount.providers.oauth.views import ( OAuthAdapter, OAuthCallbackView, OAuthLoginView, ) from .provider import XingProvider class XingAPI(OAuth): url = 'https://api.xing.com/v1/users/me.json' def get_user_info(self): user = json.loads(self.query(self.url)) return user class XingOAuthAdapter(OAuthAdapter): provider_id = XingProvider.id request_token_url = 'https://api.xing.com/v1/request_token' access_token_url = 'https://api.xing.com/v1/access_token' authorize_url = 'https://www.xing.com/v1/authorize' def complete_login(self, request, app, token, response): client = XingAPI(request, app.client_id, app.secret, self.request_token_url) extra_data = client.get_user_info()['users'][0] return self.get_provider().sociallogin_from_response(request, extra_data) oauth_login = OAuthLoginView.adapter_view(XingOAuthAdapter) oauth_callback = OAuthCallbackView.adapter_view(XingOAuthAdapter) django-allauth-0.35.0/allauth/socialaccount/providers/soundcloud/0000755000076500000240000000000013235133533026126 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/soundcloud/provider.py0000644000076500000240000000200513117447115030332 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class SoundCloudAccount(ProviderAccount): def get_profile_url(self): return self.account.extra_data.get('permalink_url') def get_avatar_url(self): return self.account.extra_data.get('avatar_url') def to_str(self): dflt = super(SoundCloudAccount, self).to_str() full_name = self.account.extra_data.get('full_name') username = self.account.extra_data.get('username') return full_name or username or dflt class SoundCloudProvider(OAuth2Provider): id = 'soundcloud' name = 'SoundCloud' account_class = SoundCloudAccount def extract_uid(self, data): return str(data['id']) def extract_common_fields(self, data): return dict(name=data.get('full_name'), username=data.get('username'), email=data.get('email')) provider_classes = [SoundCloudProvider] django-allauth-0.35.0/allauth/socialaccount/providers/soundcloud/__init__.py0000644000076500000240000000000012357313011030220 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/soundcloud/tests.py0000644000076500000240000000244713117447115027654 0ustar pennersrstaff00000000000000from allauth.socialaccount.tests import OAuth2TestsMixin from allauth.tests import MockedResponse, TestCase from .provider import SoundCloudProvider class SoundCloudTests(OAuth2TestsMixin, TestCase): provider_id = SoundCloudProvider.id def get_mocked_response(self): return MockedResponse(200, """ { "website": null, "myspace_name": null, "public_favorites_count": 0, "followings_count": 1, "full_name": "", "id": 22341947, "city": null, "track_count": 0, "playlist_count": 0, "discogs_name": null, "private_tracks_count": 0, "followers_count": 0, "online": true, "username": "user187631676", "description": null, "kind": "user", "website_title": null, "primary_email_confirmed": false, "permalink_url": "http://soundcloud.com/user187631676", "private_playlists_count": 0, "permalink": "user187631676", "country": null, "uri": "https://api.soundcloud.com/users/22341947", "avatar_url": "https://a1.sndcdn.com/images/default_avatar_large.png?4b4189b", "plan": "Free" }""") django-allauth-0.35.0/allauth/socialaccount/providers/soundcloud/urls.py0000644000076500000240000000025613117447115027473 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns from .provider import SoundCloudProvider urlpatterns = default_urlpatterns(SoundCloudProvider) django-allauth-0.35.0/allauth/socialaccount/providers/soundcloud/views.py0000644000076500000240000000165413117447115027646 0ustar pennersrstaff00000000000000import requests from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) from .provider import SoundCloudProvider class SoundCloudOAuth2Adapter(OAuth2Adapter): provider_id = SoundCloudProvider.id access_token_url = 'https://api.soundcloud.com/oauth2/token' authorize_url = 'https://soundcloud.com/connect' profile_url = 'https://api.soundcloud.com/me.json' def complete_login(self, request, app, token, **kwargs): resp = requests.get(self.profile_url, params={'oauth_token': token.token}) extra_data = resp.json() return self.get_provider().sociallogin_from_response(request, extra_data) oauth2_login = OAuth2LoginView.adapter_view(SoundCloudOAuth2Adapter) oauth2_callback = OAuth2CallbackView.adapter_view(SoundCloudOAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/providers/openid/0000755000076500000240000000000013235133533025225 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/openid/migrations/0000755000076500000240000000000013235133533027401 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/openid/migrations/__init__.py0000644000076500000240000000000012505475470031510 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/openid/migrations/0001_initial.py0000644000076500000240000000255012671004326032046 0ustar pennersrstaff00000000000000# -*- coding: utf-8 -*- from __future__ import unicode_literals from django.db import models, migrations class Migration(migrations.Migration): dependencies = [ ] operations = [ migrations.CreateModel( name='OpenIDNonce', fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('server_url', models.CharField(max_length=255)), ('timestamp', models.IntegerField()), ('salt', models.CharField(max_length=255)), ('date_created', models.DateTimeField(auto_now_add=True)), ], options={ }, bases=(models.Model,), ), migrations.CreateModel( name='OpenIDStore', fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('server_url', models.CharField(max_length=255)), ('handle', models.CharField(max_length=255)), ('secret', models.TextField()), ('issued', models.IntegerField()), ('lifetime', models.IntegerField()), ('assoc_type', models.TextField()), ], options={ }, bases=(models.Model,), ), ] django-allauth-0.35.0/allauth/socialaccount/providers/openid/models.py0000644000076500000240000000136413117447115027071 0ustar pennersrstaff00000000000000from django.db import models from django.utils.encoding import python_2_unicode_compatible @python_2_unicode_compatible class OpenIDStore(models.Model): server_url = models.CharField(max_length=255) handle = models.CharField(max_length=255) secret = models.TextField() issued = models.IntegerField() lifetime = models.IntegerField() assoc_type = models.TextField() def __str__(self): return self.server_url @python_2_unicode_compatible class OpenIDNonce(models.Model): server_url = models.CharField(max_length=255) timestamp = models.IntegerField() salt = models.CharField(max_length=255) date_created = models.DateTimeField(auto_now_add=True) def __str__(self): return self.server_url django-allauth-0.35.0/allauth/socialaccount/providers/openid/provider.py0000644000076500000240000000737713235130412027440 0ustar pennersrstaff00000000000000from django.urls import reverse from django.utils.http import urlencode from allauth.compat import urlparse from allauth.socialaccount.providers.base import Provider, ProviderAccount from .utils import ( AXAttribute, OldAXAttribute, SRegField, get_email_from_response, get_value_from_response, ) class OpenIDAccount(ProviderAccount): def get_brand(self): ret = super(OpenIDAccount, self).get_brand() domain = urlparse(self.account.uid).netloc # FIXME: Instead of hardcoding, derive this from the domains # listed in the openid endpoints setting. provider_map = {'yahoo': dict(id='yahoo', name='Yahoo'), 'hyves': dict(id='hyves', name='Hyves'), 'google': dict(id='google', name='Google')} for d, p in provider_map.items(): if domain.lower().find(d) >= 0: ret = p break return ret def to_str(self): return self.account.uid class OpenIDProvider(Provider): id = 'openid' name = 'OpenID' account_class = OpenIDAccount def get_login_url(self, request, **kwargs): url = reverse('openid_login') if kwargs: url += '?' + urlencode(kwargs) return url def get_brands(self): # These defaults are a bit too arbitrary... default_servers = [dict(id='yahoo', name='Yahoo', openid_url='http://me.yahoo.com'), dict(id='hyves', name='Hyves', openid_url='http://hyves.nl')] return self.get_settings().get('SERVERS', default_servers) def get_server_settings(self, endpoint): servers = self.get_settings().get('SERVERS', []) for server in servers: if endpoint == server.get('openid_url'): return server return {} def extract_extra_data(self, response): extra_data = {} server_settings = \ self.get_server_settings(response.endpoint.server_url) extra_attributes = server_settings.get('extra_attributes', []) for attribute_id, name, _ in extra_attributes: extra_data[attribute_id] \ = get_value_from_response(response, ax_names=[name]) return extra_data def extract_uid(self, response): return response.identity_url def extract_common_fields(self, response): first_name = get_value_from_response(response, ax_names=[AXAttribute .PERSON_FIRST_NAME, OldAXAttribute .PERSON_FIRST_NAME]) \ or '' last_name = get_value_from_response(response, ax_names=[AXAttribute .PERSON_LAST_NAME, OldAXAttribute .PERSON_LAST_NAME]) \ or '' name = get_value_from_response(response, sreg_names=[SRegField.NAME], ax_names=[AXAttribute.PERSON_NAME, OldAXAttribute.PERSON_NAME]) \ or '' return dict(email=get_email_from_response(response), first_name=first_name, last_name=last_name, name=name) provider_classes = [OpenIDProvider] django-allauth-0.35.0/allauth/socialaccount/providers/openid/__init__.py0000644000076500000240000000000012357313011027317 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/openid/forms.py0000644000076500000240000000060013117447115026724 0ustar pennersrstaff00000000000000 from django import forms class LoginForm(forms.Form): openid = forms.URLField( label=('OpenID'), help_text=( 'Get an OpenID')) next = forms.CharField( widget=forms.HiddenInput, required=False) process = forms.CharField( widget=forms.HiddenInput, required=False) django-allauth-0.35.0/allauth/socialaccount/providers/openid/admin.py0000644000076500000240000000044113117447115026671 0ustar pennersrstaff00000000000000from django.contrib import admin from .models import OpenIDNonce, OpenIDStore class OpenIDStoreAdmin(admin.ModelAdmin): pass class OpenIDNonceAdmin(admin.ModelAdmin): pass admin.site.register(OpenIDStore, OpenIDStoreAdmin) admin.site.register(OpenIDNonce, OpenIDNonceAdmin) django-allauth-0.35.0/allauth/socialaccount/providers/openid/utils.py0000644000076500000240000001251213235130412026731 0ustar pennersrstaff00000000000000import base64 import pickle from openid.association import Association as OIDAssociation from openid.extensions.ax import FetchResponse from openid.extensions.sreg import SRegResponse from openid.store.interface import OpenIDStore as OIDStore from allauth.compat import UserDict from allauth.utils import valid_email_or_none from .models import OpenIDNonce, OpenIDStore class JSONSafeSession(UserDict): """ openid puts e.g. class OpenIDServiceEndpoint in the session. Django 1.6 no longer pickles stuff, so we'll need to do some hacking here... """ def __init__(self, session): UserDict.__init__(self) self.data = session def __setitem__(self, key, value): data = base64.b64encode(pickle.dumps(value)).decode('ascii') return UserDict.__setitem__(self, key, data) def __getitem__(self, key): data = UserDict.__getitem__(self, key) return pickle.loads(base64.b64decode(data.encode('ascii'))) class OldAXAttribute: PERSON_NAME = 'http://openid.net/schema/namePerson' PERSON_FIRST_NAME = 'http://openid.net/schema/namePerson/first' PERSON_LAST_NAME = 'http://openid.net/schema/namePerson/last' class AXAttribute: CONTACT_EMAIL = 'http://axschema.org/contact/email' PERSON_NAME = 'http://axschema.org/namePerson' PERSON_FIRST_NAME = 'http://axschema.org/namePerson/first' PERSON_LAST_NAME = 'http://axschema.org/namePerson/last' AXAttributes = [ AXAttribute.CONTACT_EMAIL, AXAttribute.PERSON_NAME, AXAttribute.PERSON_FIRST_NAME, AXAttribute.PERSON_LAST_NAME, OldAXAttribute.PERSON_NAME, OldAXAttribute.PERSON_FIRST_NAME, OldAXAttribute.PERSON_LAST_NAME, ] class SRegField: EMAIL = 'email' NAME = 'fullname' SRegFields = [ SRegField.EMAIL, SRegField.NAME, ] class DBOpenIDStore(OIDStore): max_nonce_age = 6 * 60 * 60 def storeAssociation(self, server_url, assoc=None): try: secret = base64.encodebytes(assoc.secret) except AttributeError: # Python 2.x compat secret = base64.encodestring(assoc.secret) OpenIDStore.objects.create( server_url=server_url, handle=assoc.handle, secret=secret, issued=assoc.issued, lifetime=assoc.lifetime, assoc_type=assoc.assoc_type ) def getAssociation(self, server_url, handle=None): stored_assocs = OpenIDStore.objects.filter( server_url=server_url ) if handle: stored_assocs = stored_assocs.filter(handle=handle) stored_assocs.order_by('-issued') if stored_assocs.count() == 0: return None return_val = None for stored_assoc in stored_assocs: assoc = OIDAssociation( stored_assoc.handle, base64.decodestring(stored_assoc.secret.encode('utf-8')), stored_assoc.issued, stored_assoc.lifetime, stored_assoc.assoc_type ) # See: # necaris/python3-openid@1abb155c8fc7b508241cbe9d2cae24f18e4a379b if hasattr(assoc, 'getExpiresIn'): expires_in = assoc.getExpiresIn() else: expires_in = assoc.expiresIn if expires_in == 0: stored_assoc.delete() else: if return_val is None: return_val = assoc return return_val def removeAssociation(self, server_url, handle): stored_assocs = OpenIDStore.objects.filter( server_url=server_url ) if handle: stored_assocs = stored_assocs.filter(handle=handle) stored_assocs.delete() def useNonce(self, server_url, timestamp, salt): try: OpenIDNonce.objects.get( server_url=server_url, timestamp=timestamp, salt=salt ) except OpenIDNonce.DoesNotExist: OpenIDNonce.objects.create( server_url=server_url, timestamp=timestamp, salt=salt ) return True return False def get_email_from_response(response): email = None sreg = SRegResponse.fromSuccessResponse(response) if sreg: email = valid_email_or_none(sreg.get(SRegField.EMAIL)) if not email: ax = FetchResponse.fromSuccessResponse(response) if ax: try: values = ax.get(AXAttribute.CONTACT_EMAIL) if values: email = valid_email_or_none(values[0]) except KeyError: pass return email def get_value_from_response(response, sreg_names=None, ax_names=None): value = None if sreg_names: sreg = SRegResponse.fromSuccessResponse(response) if sreg: for name in sreg_names: value = sreg.get(name) if value: break if not value and ax_names: ax = FetchResponse.fromSuccessResponse(response) if ax: for name in ax_names: try: values = ax.get(name) if values: value = values[0] except KeyError: pass if value: break return value django-allauth-0.35.0/allauth/socialaccount/providers/openid/tests.py0000644000076500000240000001144713235130412026741 0ustar pennersrstaff00000000000000from django.test import override_settings from django.urls import reverse from openid.consumer import consumer from allauth.socialaccount.models import SocialAccount from allauth.tests import Mock, TestCase, patch from allauth.utils import get_user_model from . import views from .utils import AXAttribute class OpenIDTests(TestCase): def test_discovery_failure(self): """ This used to generate a server 500: DiscoveryFailure: No usable OpenID services found for http://www.google.com/ """ resp = self.client.post(reverse('openid_login'), dict(openid='http://www.google.com')) self.assertTrue('openid' in resp.context['form'].errors) def test_login(self): resp = self.client.post(reverse(views.login), dict(openid='http://me.yahoo.com')) assert 'login.yahooapis' in resp['location'] with patch('allauth.socialaccount.providers' '.openid.views._openid_consumer') as consumer_mock: client = Mock() complete = Mock() consumer_mock.return_value = client client.complete = complete complete_response = Mock() complete.return_value = complete_response complete_response.status = consumer.SUCCESS complete_response.identity_url = 'http://dummy/john/' with patch('allauth.socialaccount.providers' '.openid.utils.SRegResponse') as sr_mock: with patch('allauth.socialaccount.providers' '.openid.utils.FetchResponse') as fr_mock: sreg_mock = Mock() ax_mock = Mock() sr_mock.fromSuccessResponse = sreg_mock fr_mock.fromSuccessResponse = ax_mock sreg_mock.return_value = {} ax_mock.return_value = {AXAttribute.PERSON_FIRST_NAME: ['raymond']} resp = self.client.post(reverse('openid_callback')) self.assertRedirects( resp, "/accounts/profile/", fetch_redirect_response=False ) get_user_model().objects.get(first_name='raymond') @override_settings(SOCIALACCOUNT_PROVIDERS={'openid': {'SERVERS': [ dict(id='yahoo', name='Yahoo', openid_url='http://me.yahoo.com', extra_attributes=[ ('phone', 'http://axschema.org/contact/phone/default', True,) ])]}}) def test_login_with_extra_attributes(self): with patch('allauth.socialaccount.providers.openid.views.QUERY_EMAIL', True): resp = self.client.post(reverse(views.login), dict(openid='http://me.yahoo.com')) assert 'login.yahooapis' in resp['location'] with patch('allauth.socialaccount.providers' '.openid.views._openid_consumer') as consumer_mock: client = Mock() complete = Mock() endpoint = Mock() consumer_mock.return_value = client client.complete = complete complete_response = Mock() complete.return_value = complete_response complete_response.endpoint = endpoint complete_response.endpoint.server_url = 'http://me.yahoo.com' complete_response.status = consumer.SUCCESS complete_response.identity_url = 'http://dummy/john/' with patch('allauth.socialaccount.providers' '.openid.utils.SRegResponse') as sr_mock: with patch('allauth.socialaccount.providers' '.openid.utils.FetchResponse') as fr_mock: sreg_mock = Mock() ax_mock = Mock() sr_mock.fromSuccessResponse = sreg_mock fr_mock.fromSuccessResponse = ax_mock sreg_mock.return_value = {} ax_mock.return_value = { AXAttribute.CONTACT_EMAIL: ['raymond@example.com'], AXAttribute.PERSON_FIRST_NAME: ['raymond'], 'http://axschema.org/contact/phone/default': ['123456789']} resp = self.client.post(reverse('openid_callback')) self.assertRedirects( resp, "/accounts/profile/", fetch_redirect_response=False ) socialaccount = \ SocialAccount.objects.get(user__first_name='raymond') self.assertEqual( socialaccount.extra_data.get('phone'), '123456789') django-allauth-0.35.0/allauth/socialaccount/providers/openid/urls.py0000644000076500000240000000031713117447115026570 0ustar pennersrstaff00000000000000from django.conf.urls import url from . import views urlpatterns = [ url('^openid/login/$', views.login, name="openid_login"), url('^openid/callback/$', views.callback, name='openid_callback'), ] django-allauth-0.35.0/allauth/socialaccount/providers/openid/views.py0000644000076500000240000001031113235130412026721 0ustar pennersrstaff00000000000000from django.http import HttpResponseRedirect from django.shortcuts import render from django.urls import reverse from django.views.decorators.csrf import csrf_exempt from openid.consumer import consumer from openid.consumer.discover import DiscoveryFailure from openid.extensions.ax import AttrInfo, FetchRequest from openid.extensions.sreg import SRegRequest from allauth.socialaccount import providers from allauth.socialaccount.app_settings import QUERY_EMAIL from allauth.socialaccount.helpers import ( complete_social_login, render_authentication_error, ) from allauth.socialaccount.models import SocialLogin from ..base import AuthError from .forms import LoginForm from .provider import OpenIDProvider from .utils import AXAttributes, DBOpenIDStore, JSONSafeSession, SRegFields def _openid_consumer(request): store = DBOpenIDStore() client = consumer.Consumer(JSONSafeSession(request.session), store) return client def login(request): if 'openid' in request.GET or request.method == 'POST': form = LoginForm( dict(list(request.GET.items()) + list(request.POST.items())) ) if form.is_valid(): client = _openid_consumer(request) try: auth_request = client.begin(form.cleaned_data['openid']) if QUERY_EMAIL: sreg = SRegRequest() for name in SRegFields: sreg.requestField(field_name=name, required=True) auth_request.addExtension(sreg) ax = FetchRequest() for name in AXAttributes: ax.add(AttrInfo(name, required=True)) provider = OpenIDProvider(request) server_settings = \ provider.get_server_settings(request.GET.get('openid')) extra_attributes = \ server_settings.get('extra_attributes', []) for _, name, required in extra_attributes: ax.add(AttrInfo(name, required=required)) auth_request.addExtension(ax) callback_url = reverse(callback) SocialLogin.stash_state(request) # https://github.com/pennersr/django-allauth/issues/1523 auth_request.return_to_args['next'] = \ form.cleaned_data.get('next', '/') redirect_url = auth_request.redirectURL( request.build_absolute_uri('/'), request.build_absolute_uri(callback_url)) return HttpResponseRedirect(redirect_url) # UnicodeDecodeError: # see https://github.com/necaris/python3-openid/issues/1 except (UnicodeDecodeError, DiscoveryFailure) as e: if request.method == 'POST': form._errors["openid"] = form.error_class([e]) else: return render_authentication_error( request, OpenIDProvider.id, exception=e) else: form = LoginForm(initial={'next': request.GET.get('next'), 'process': request.GET.get('process')}) d = dict(form=form) return render(request, "openid/login.html", d) @csrf_exempt def callback(request): client = _openid_consumer(request) response = client.complete( dict(list(request.GET.items()) + list(request.POST.items())), request.build_absolute_uri(request.path)) if response.status == consumer.SUCCESS: login = providers.registry \ .by_id(OpenIDProvider.id, request) \ .sociallogin_from_response(request, response) login.state = SocialLogin.unstash_state(request) ret = complete_social_login(request, login) else: if response.status == consumer.CANCEL: error = AuthError.CANCELLED else: error = AuthError.UNKNOWN ret = render_authentication_error( request, OpenIDProvider.id, error=error) return ret django-allauth-0.35.0/allauth/socialaccount/providers/dataporten/0000755000076500000240000000000013235133532026107 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/dataporten/models.py0000644000076500000240000000000013235130412027724 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/dataporten/provider.py0000644000076500000240000000640513235130412030312 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class DataportenAccount(ProviderAccount): def get_avatar_url(self): ''' Returns a valid URL to an 128x128 .png photo of the user ''' # Documentation for user profile photos can be found here: # https://docs.dataporten.no/docs/oauth-authentication/ base_url = 'https://api.dataporten.no/userinfo/v1/user/media/' return base_url + self.account.extra_data['profilephoto'] def to_str(self): ''' Returns string representation of a social account. Includes the name of the user. ''' dflt = super(DataportenAccount, self).to_str() return '%s (%s)' % ( self.account.extra_data.get('name', ''), dflt, ) class DataportenProvider(OAuth2Provider): id = 'dataporten' name = 'Dataporten' account_class = DataportenAccount def extract_uid(self, data): ''' Returns the primary user identifier, an UUID string See: https://docs.dataporten.no/docs/userid/ ''' return data['userid'] def extract_extra_data(self, data): ''' Extracts fields from `data` that will be stored in `SocialAccount`'s `extra_data` JSONField. All the necessary data extraction has already been done in the complete_login()-view, so we can just return the data. PS: This is default behaviour, so we did not really need to define this function, but it is included for documentation purposes. Typical return dict: { "userid": "76a7a061-3c55-430d-8ee0-6f82ec42501f", "userid_sec": ["feide:andreas@uninett.no"], "name": "Andreas \u00c5kre Solberg", "email": "andreas.solberg@uninett.no", "profilephoto": "p:a3019954-902f-45a3-b4ee-bca7b48ab507", } ''' return data def extract_common_fields(self, data): ''' This function extracts information from the /userinfo endpoint which will be consumed by allauth.socialaccount.adapter.populate_user(). Look there to find which key-value pairs that should be saved in the returned dict. Typical return dict: { "userid": "76a7a061-3c55-430d-8ee0-6f82ec42501f", "userid_sec": ["feide:andreas@uninett.no"], "name": "Andreas \u00c5kre Solberg", "email": "andreas.solberg@uninett.no", "profilephoto": "p:a3019954-902f-45a3-b4ee-bca7b48ab507", "username": "andreas", } ''' # Make shallow copy to prevent possible mutability issues data = dict(data) # If a Feide username is available, use it. If not, use the "username" # of the email-address for userid in data.get('userid_sec'): usertype, username = userid.split(':') if usertype == 'feide': data['username'] = username.split('@')[0] break else: # Only entered if break is not executed above data['username'] = data.get('email').split('@')[0] return data provider_classes = [DataportenProvider] django-allauth-0.35.0/allauth/socialaccount/providers/dataporten/__init__.py0000644000076500000240000000000013235130412030200 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/dataporten/tests.py0000644000076500000240000000514713235130412027624 0ustar pennersrstaff00000000000000from allauth.socialaccount.tests import OAuth2TestsMixin from allauth.tests import MockedResponse, TestCase from .provider import DataportenProvider class DataportenTest(OAuth2TestsMixin, TestCase): provider_id = DataportenProvider.id def setUp(self): super(DataportenTest, self).setUp() self.mock_data = { 'userid': '76a7a061-3c55-430d-8ee0-6f82ec42501f', 'userid_sec': ['feide:andreas@uninett.no'], 'name': 'Andreas \u00c5kre Solberg', 'email': 'andreas.solberg@uninett.no', 'profilephoto': 'p:a3019954-902f-45a3-b4ee-bca7b48ab507', 'groups': [{}], } def get_login_response_json(self, with_refresh_token=True): rt = '' if with_refresh_token: rt = ',"refresh_token": "testrf"' return '''{ "access_token":"testac", "expires_in":3600, "scope": "userid profile groups" %s }''' % rt def get_mocked_response(self): return MockedResponse( status_code=200, content='''{ "user": { "userid": "76a7a061-3c55-430d-8ee0-6f82ec42501f", "userid_sec": ["feide:andreas@uninett.no"], "name": "Andreas \u00c5kre Solberg", "email": "andreas.solberg@uninett.no", "profilephoto": "p:a3019954-902f-45a3-b4ee-bca7b48ab507" }, "audience": "app123id" }''', headers={'content-type': 'application/json'}, ) def test_extract_uid(self): uid = self.provider.extract_uid(self.mock_data) self.assertEqual(uid, self.mock_data['userid']) def test_extract_extra_data(self): # All the processing is done in the complete_login view, and thus # the data should be returned unaltered extra_data = self.provider.extract_extra_data(self.mock_data) self.assertEqual(extra_data, self.mock_data) def test_extract_common_fields(self): # The main task of this function is to parse the data in order to # find the Feide username, and if not, use the email common_fields = self.provider.extract_common_fields(self.mock_data) self.assertEqual(common_fields['username'], 'andreas') # Test correct behaviour when Feide username is unavailable new_mock_data = dict(self.mock_data) new_mock_data['userid_sec'] = [] new_common_fields = self.provider.extract_common_fields(new_mock_data) self.assertEqual(new_common_fields['username'], 'andreas.solberg') django-allauth-0.35.0/allauth/socialaccount/providers/dataporten/urls.py0000644000076500000240000000025613235130412027443 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns from .provider import DataportenProvider urlpatterns = default_urlpatterns(DataportenProvider) django-allauth-0.35.0/allauth/socialaccount/providers/dataporten/views.py0000644000076500000240000000465413235130412027621 0ustar pennersrstaff00000000000000import requests from allauth.socialaccount.providers.base import ProviderException from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) from .provider import DataportenProvider class DataportenAdapter(OAuth2Adapter): provider_id = DataportenProvider.id access_token_url = 'https://auth.dataporten.no/oauth/token' authorize_url = 'https://auth.dataporten.no/oauth/authorization' profile_url = 'https://auth.dataporten.no/userinfo' groups_url = 'https://groups-api.dataporten.no/groups/' def complete_login(self, request, app, token, **kwargs): ''' Arguments: request - The get request to the callback URL /accounts/dataporten/login/callback. app - The corresponding SocialApp model instance token - A token object with access token given in token.token Returns: Should return a dict with user information intended for parsing by the methods of the DataportenProvider view, i.e. extract_uid(), extract_extra_data(), and extract_common_fields() ''' # The athentication header headers = {'Authorization': 'Bearer ' + token.token} # Userinfo endpoint, for documentation see: # https://docs.dataporten.no/docs/oauth-authentication/ userinfo_response = requests.get( self.profile_url, headers=headers, ) # Raise exception for 4xx and 5xx response codes userinfo_response.raise_for_status() # The endpoint returns json-data and it needs to be decoded extra_data = userinfo_response.json()['user'] # Finally test that the audience property matches the client id # for validification reasons, as instructed by the Dataporten docs # if the userinfo-response is used for authentication if userinfo_response.json()['audience'] != app.client_id: raise ProviderException( 'Dataporten returned a user with an audience field \ which does not correspond to the client id of the \ application.' ) return self.get_provider().sociallogin_from_response( request, extra_data, ) oauth2_login = OAuth2LoginView.adapter_view(DataportenAdapter) oauth2_callback = OAuth2CallbackView.adapter_view(DataportenAdapter) django-allauth-0.35.0/allauth/socialaccount/providers/weixin/0000755000076500000240000000000013235133533025252 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/weixin/provider.py0000644000076500000240000000147613117447116027472 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class WeixinAccount(ProviderAccount): def get_avatar_url(self): return self.account.extra_data.get('headimgurl') def to_str(self): return self.account.extra_data.get( 'nickname', super(WeixinAccount, self).to_str()) class WeixinProvider(OAuth2Provider): id = 'weixin' name = 'Weixin' account_class = WeixinAccount def extract_uid(self, data): return data['openid'] def get_default_scope(self): return ['snsapi_login'] def extract_common_fields(self, data): return dict(username=data.get('nickname'), name=data.get('nickname')) provider_classes = [WeixinProvider] django-allauth-0.35.0/allauth/socialaccount/providers/weixin/client.py0000644000076500000240000000342013117447116027105 0ustar pennersrstaff00000000000000import requests from collections import OrderedDict from django.utils.http import urlencode from allauth.socialaccount.providers.oauth2.client import ( OAuth2Client, OAuth2Error, ) class WeixinOAuth2Client(OAuth2Client): def get_redirect_url(self, authorization_url, extra_params): params = { 'appid': self.consumer_key, 'redirect_uri': self.callback_url, 'scope': self.scope, 'response_type': 'code' } if self.state: params['state'] = self.state params.update(extra_params) sorted_params = OrderedDict() for param in sorted(params): sorted_params[param] = params[param] return '%s?%s' % (authorization_url, urlencode(sorted_params)) def get_access_token(self, code): data = {'appid': self.consumer_key, 'redirect_uri': self.callback_url, 'grant_type': 'authorization_code', 'secret': self.consumer_secret, 'scope': self.scope, 'code': code} params = None self._strip_empty_keys(data) url = self.access_token_url if self.access_token_method == 'GET': params = data data = None # TODO: Proper exception handling resp = requests.request(self.access_token_method, url, params=params, data=data) access_token = None if resp.status_code == 200: access_token = resp.json() if not access_token or 'access_token' not in access_token: raise OAuth2Error('Error retrieving access token: %s' % resp.content) return access_token django-allauth-0.35.0/allauth/socialaccount/providers/weixin/__init__.py0000644000076500000240000000000012672343321027353 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/weixin/tests.py0000644000076500000240000000226213117447116026774 0ustar pennersrstaff00000000000000# -*- coding: utf-8 -*- from __future__ import unicode_literals from allauth.socialaccount.providers import registry from allauth.socialaccount.tests import create_oauth2_tests from allauth.tests import MockedResponse from .provider import WeixinProvider class WeixinTests(create_oauth2_tests(registry.by_id(WeixinProvider.id))): def get_mocked_response(self): return MockedResponse(200, """ {"access_token": "OezXcEiiBSKSxW0eoylIeO5cPxb4Ks1RpbXGMv9uiV35032zNHGzXcld-EKsSScE3gRZMrUU78skCbp1ShtZnR0dQB8Wr_LUf7FA-H97Lnd2HgQah_GnkQex-vPFsGEwPPcNAV6q1Vz3uRNgL0MUFg", "city": "Pudong New District", "country": "CN", "expires_in": 7200, "headimgurl": "http://wx.qlogo.cn/mmopen/VkvLVEpoJiaibYsVyW8GzxHibzlnqSM7iaX09r6TWUJXCNQHibHz37krvN65HR1ibEpgH5K5sukcIzA3r1C4KQ9qyyX9XIUdY9lNOk/0", "language": "zh_CN", "nickname": "某某某", "openid": "ohS-VwAJ9GEXlplngwybJ3Z-ZHrI", "privilege": [], "province": "Shanghai", "refresh_token": "OezXcEiiBSKSxW0eoylIeO5cPxb4Ks1RpbXGMv9uiV35032zNHGzXcld-EKsSScEbMnnMqVExcSpj7KRAuBA8BU2j2e_FK5dgBe-ro32k7OuHtznwqqBn5QR7LZGo2-P8G7gG0eitjyZ751sFlnTAw", "scope": "snsapi_login", "sex": 1, "unionid": "ohHrhwKnD9TOunEW0eKTS45vS5Qo"}""") # noqa django-allauth-0.35.0/allauth/socialaccount/providers/weixin/urls.py0000644000076500000240000000024613117447116026617 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns from .provider import WeixinProvider urlpatterns = default_urlpatterns(WeixinProvider) django-allauth-0.35.0/allauth/socialaccount/providers/weixin/views.py0000644000076500000240000000462113235130412026755 0ustar pennersrstaff00000000000000import requests from django.urls import reverse from allauth.account import app_settings from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) from allauth.utils import build_absolute_uri from .client import WeixinOAuth2Client from .provider import WeixinProvider class WeixinOAuth2Adapter(OAuth2Adapter): provider_id = WeixinProvider.id access_token_url = 'https://api.weixin.qq.com/sns/oauth2/access_token' profile_url = 'https://api.weixin.qq.com/sns/userinfo' @property def authorize_url(self): settings = self.get_provider().get_settings() url = settings.get( 'AUTHORIZE_URL', 'https://open.weixin.qq.com/connect/qrconnect') return url def complete_login(self, request, app, token, **kwargs): openid = kwargs.get('response', {}).get('openid') resp = requests.get(self.profile_url, params={'access_token': token.token, 'openid': openid}) extra_data = resp.json() nickname = extra_data.get('nickname') if nickname: extra_data['nickname'] = nickname.encode( 'raw_unicode_escape').decode('utf-8') return self.get_provider().sociallogin_from_response(request, extra_data) class WeixinOAuth2ClientMixin(object): def get_client(self, request, app): callback_url = reverse(self.adapter.provider_id + "_callback") protocol = ( self.adapter.redirect_uri_protocol or app_settings.DEFAULT_HTTP_PROTOCOL) callback_url = build_absolute_uri( request, callback_url, protocol=protocol) provider = self.adapter.get_provider() scope = provider.get_scope(request) client = WeixinOAuth2Client( self.request, app.client_id, app.secret, self.adapter.access_token_method, self.adapter.access_token_url, callback_url, scope) return client class WeixinOAuth2LoginView(WeixinOAuth2ClientMixin, OAuth2LoginView): pass class WeixinOAuth2CallbackView(WeixinOAuth2ClientMixin, OAuth2CallbackView): pass oauth2_login = WeixinOAuth2LoginView.adapter_view(WeixinOAuth2Adapter) oauth2_callback = WeixinOAuth2CallbackView.adapter_view(WeixinOAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/providers/github/0000755000076500000240000000000013235133532025230 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/github/provider.py0000644000076500000240000000240313117447115027437 0ustar pennersrstaff00000000000000from allauth.socialaccount import app_settings from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class GitHubAccount(ProviderAccount): def get_profile_url(self): return self.account.extra_data.get('html_url') def get_avatar_url(self): return self.account.extra_data.get('avatar_url') def to_str(self): dflt = super(GitHubAccount, self).to_str() return next( value for value in ( self.account.extra_data.get('name', None), self.account.extra_data.get('login', None), dflt ) if value is not None ) class GitHubProvider(OAuth2Provider): id = 'github' name = 'GitHub' account_class = GitHubAccount def get_default_scope(self): scope = [] if app_settings.QUERY_EMAIL: scope.append('user:email') return scope def extract_uid(self, data): return str(data['id']) def extract_common_fields(self, data): return dict(email=data.get('email'), username=data.get('login'), name=data.get('name')) provider_classes = [GitHubProvider] django-allauth-0.35.0/allauth/socialaccount/providers/github/__init__.py0000644000076500000240000000000012357313011027323 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/github/tests.py0000644000076500000240000000502513117447115026752 0ustar pennersrstaff00000000000000from allauth.socialaccount.models import SocialAccount from allauth.socialaccount.tests import OAuth2TestsMixin from allauth.tests import MockedResponse, TestCase from .provider import GitHubProvider class GitHubTests(OAuth2TestsMixin, TestCase): provider_id = GitHubProvider.id def get_mocked_response(self): return MockedResponse(200, """ { "type":"User", "organizations_url":"https://api.github.com/users/pennersr/orgs", "gists_url":"https://api.github.com/users/pennersr/gists{/gist_id}", "received_events_url":"https://api.github.com/users/pennersr/received_events", "gravatar_id":"8639768262b8484f6a3380f8db2efa5b", "followers":16, "blog":"http://www.intenct.info", "avatar_url":"https://secure.gravatar.com/avatar/8639768262b8484f6a3380f8db2efa5b?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png", "login":"pennersr", "created_at":"2010-02-10T12:50:51Z", "company":"IntenCT", "subscriptions_url":"https://api.github.com/users/pennersr/subscriptions", "public_repos":14, "hireable":false, "url":"https://api.github.com/users/pennersr", "public_gists":0, "starred_url":"https://api.github.com/users/pennersr/starred{/owner}{/repo}", "html_url":"https://github.com/pennersr", "location":"The Netherlands", "bio":null, "name":"Raymond Penners", "repos_url":"https://api.github.com/users/pennersr/repos", "followers_url":"https://api.github.com/users/pennersr/followers", "id":201022, "following":0, "email":"raymond.penners@intenct.nl", "events_url":"https://api.github.com/users/pennersr/events{/privacy}", "following_url":"https://api.github.com/users/pennersr/following" }""") def test_account_name_null(self): """String conversion when GitHub responds with empty name""" data = """{ "type": "User", "id": 201022, "login": "pennersr", "name": null }""" self.login(MockedResponse(200, data)) socialaccount = SocialAccount.objects.get(uid='201022') self.assertIsNone(socialaccount.extra_data.get('name')) account = socialaccount.get_provider_account() self.assertIsNotNone(account.to_str()) self.assertEqual(account.to_str(), 'pennersr') django-allauth-0.35.0/allauth/socialaccount/providers/github/urls.py0000644000076500000240000000024613117447115026575 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns from .provider import GitHubProvider urlpatterns = default_urlpatterns(GitHubProvider) django-allauth-0.35.0/allauth/socialaccount/providers/github/views.py0000644000076500000240000000375013117447115026750 0ustar pennersrstaff00000000000000import requests from allauth.socialaccount import app_settings from allauth.socialaccount.providers.github.provider import GitHubProvider from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) class GitHubOAuth2Adapter(OAuth2Adapter): provider_id = GitHubProvider.id settings = app_settings.PROVIDERS.get(provider_id, {}) if 'GITHUB_URL' in settings: web_url = settings.get('GITHUB_URL').rstrip('/') api_url = '{0}/api/v3'.format(web_url) else: web_url = 'https://github.com' api_url = 'https://api.github.com' access_token_url = '{0}/login/oauth/access_token'.format(web_url) authorize_url = '{0}/login/oauth/authorize'.format(web_url) profile_url = '{0}/user'.format(api_url) emails_url = '{0}/user/emails'.format(api_url) def complete_login(self, request, app, token, **kwargs): params = {'access_token': token.token} resp = requests.get(self.profile_url, params=params) extra_data = resp.json() if app_settings.QUERY_EMAIL and not extra_data.get('email'): extra_data['email'] = self.get_email(token) return self.get_provider().sociallogin_from_response( request, extra_data ) def get_email(self, token): email = None params = {'access_token': token.token} resp = requests.get(self.emails_url, params=params) emails = resp.json() if resp.status_code == 200 and emails: email = emails[0] primary_emails = [ e for e in emails if not isinstance(e, dict) or e.get('primary') ] if primary_emails: email = primary_emails[0] if isinstance(email, dict): email = email.get('email', '') return email oauth2_login = OAuth2LoginView.adapter_view(GitHubOAuth2Adapter) oauth2_callback = OAuth2CallbackView.adapter_view(GitHubOAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/providers/facebook/0000755000076500000240000000000013235133532025517 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/facebook/provider.py0000644000076500000240000001572513235130412027727 0ustar pennersrstaff00000000000000import json from django.conf import settings from django.core.exceptions import ImproperlyConfigured from django.middleware.csrf import get_token from django.template.loader import render_to_string from django.urls import reverse from django.utils.crypto import get_random_string from django.utils.html import escapejs, mark_safe from django.utils.http import urlquote from allauth.account.models import EmailAddress from allauth.socialaccount.app_settings import QUERY_EMAIL from allauth.socialaccount.providers.base import ( AuthAction, AuthProcess, ProviderAccount, ) from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider from allauth.utils import import_callable from .locale import get_default_locale_callable GRAPH_API_VERSION = getattr(settings, 'SOCIALACCOUNT_PROVIDERS', {}).get( 'facebook', {}).get('VERSION', 'v2.5') GRAPH_API_URL = 'https://graph.facebook.com/' + GRAPH_API_VERSION NONCE_SESSION_KEY = 'allauth_facebook_nonce' NONCE_LENGTH = 32 class FacebookAccount(ProviderAccount): def get_profile_url(self): return self.account.extra_data.get('link') def get_avatar_url(self): uid = self.account.uid # ask for a 600x600 pixel image. We might get smaller but # image will always be highest res possible and square return GRAPH_API_URL + '/%s/picture?type=square&height=600&width=600&return_ssl_resources=1' % uid # noqa def to_str(self): dflt = super(FacebookAccount, self).to_str() return self.account.extra_data.get('name', dflt) class FacebookProvider(OAuth2Provider): id = 'facebook' name = 'Facebook' account_class = FacebookAccount def __init__(self, request): self._locale_callable_cache = None super(FacebookProvider, self).__init__(request) def get_method(self): return self.get_settings().get('METHOD', 'oauth2') def get_login_url(self, request, **kwargs): method = kwargs.pop('method', self.get_method()) if method == 'js_sdk': next = "'%s'" % escapejs(kwargs.get('next') or '') process = "'%s'" % escapejs( kwargs.get('process') or AuthProcess.LOGIN) action = "'%s'" % escapejs( kwargs.get('action') or AuthAction.AUTHENTICATE) js = "allauth.facebook.login(%s, %s, %s)" % (next, action, process) ret = "javascript:%s" % (urlquote(js),) else: assert method == 'oauth2' ret = super(FacebookProvider, self).get_login_url(request, **kwargs) return ret def _get_locale_callable(self): settings = self.get_settings() f = settings.get('LOCALE_FUNC') if f: f = import_callable(f) else: f = get_default_locale_callable() return f def get_locale_for_request(self, request): if not self._locale_callable_cache: self._locale_callable_cache = self._get_locale_callable() return self._locale_callable_cache(request) def get_default_scope(self): scope = [] if QUERY_EMAIL: scope.append('email') return scope def get_fields(self): settings = self.get_settings() default_fields = [ 'id', 'email', 'name', 'first_name', 'last_name', 'verified', 'locale', 'timezone', 'link', 'gender', 'updated_time'] return settings.get('FIELDS', default_fields) def get_auth_params(self, request, action): ret = super(FacebookProvider, self).get_auth_params(request, action) if action == AuthAction.REAUTHENTICATE: ret['auth_type'] = 'reauthenticate' return ret def get_init_params(self, request, app): init_params = { 'appId': app.client_id, 'version': GRAPH_API_VERSION } settings = self.get_settings() init_params.update(settings.get('INIT_PARAMS', {})) return init_params def get_fb_login_options(self, request): ret = self.get_auth_params(request, 'authenticate') ret['scope'] = ','.join(self.get_scope(request)) if ret.get('auth_type') == 'reauthenticate': ret['auth_nonce'] = self.get_nonce(request, or_create=True) return ret def media_js(self, request): # NOTE: Avoid loading models at top due to registry boot... from allauth.socialaccount.models import SocialApp locale = self.get_locale_for_request(request) try: app = self.get_app(request) except SocialApp.DoesNotExist: raise ImproperlyConfigured("No Facebook app configured: please" " add a SocialApp using the Django" " admin") def abs_uri(name): return request.build_absolute_uri(reverse(name)) fb_data = { "appId": app.client_id, "version": GRAPH_API_VERSION, "locale": locale, "initParams": self.get_init_params(request, app), "loginOptions": self.get_fb_login_options(request), "loginByTokenUrl": abs_uri('facebook_login_by_token'), "cancelUrl": abs_uri('socialaccount_login_cancelled'), "logoutUrl": abs_uri('account_logout'), "loginUrl": request.build_absolute_uri(self.get_login_url( request, method='oauth2')), "errorUrl": abs_uri('socialaccount_login_error'), "csrfToken": get_token(request) } ctx = {'fb_data': mark_safe(json.dumps(fb_data))} return render_to_string('facebook/fbconnect.html', ctx, request=request) def get_nonce(self, request, or_create=False, pop=False): if pop: nonce = request.session.pop(NONCE_SESSION_KEY, None) else: nonce = request.session.get(NONCE_SESSION_KEY) if not nonce and or_create: nonce = get_random_string(32) request.session[NONCE_SESSION_KEY] = nonce return nonce def extract_uid(self, data): return data['id'] def extract_common_fields(self, data): return dict(email=data.get('email'), username=data.get('username'), first_name=data.get('first_name'), last_name=data.get('last_name'), name=data.get('name')) def extract_email_addresses(self, data): ret = [] email = data.get('email') if email: # data['verified'] does not imply the email address is # verified. ret.append(EmailAddress(email=email, verified=False, primary=True)) return ret provider_classes = [FacebookProvider] django-allauth-0.35.0/allauth/socialaccount/providers/facebook/__init__.py0000644000076500000240000000000012357313011027612 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/facebook/forms.py0000644000076500000240000000016413117447115027224 0ustar pennersrstaff00000000000000from django import forms class FacebookConnectForm(forms.Form): access_token = forms.CharField(required=True) django-allauth-0.35.0/allauth/socialaccount/providers/facebook/static/0000755000076500000240000000000013235133532027006 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/facebook/static/facebook/0000755000076500000240000000000013235133532030557 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/facebook/static/facebook/js/0000755000076500000240000000000013235133532031173 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/facebook/static/facebook/js/fbconnect.js0000644000076500000240000000627413100202031033461 0ustar pennersrstaff00000000000000/* global document, window, FB */ (function () { 'use strict' function postForm (action, data) { var f = document.createElement('form') f.method = 'POST' f.action = action for (var key in data) { var d = document.createElement('input') d.type = 'hidden' d.name = key d.value = data[key] f.appendChild(d) } document.body.appendChild(f) f.submit() } function setLocationHref (url) { if (typeof (url) === 'function') { // Deprecated -- instead, override // allauth.facebook.onLoginError et al directly. url() } else { window.location.href = url } } var allauth = window.allauth = window.allauth || {} var fbSettings = JSON.parse(document.getElementById('allauth-facebook-settings').innerHTML) var fbInitialized = false allauth.facebook = { init: function (opts) { this.opts = opts window.fbAsyncInit = function () { FB.init(opts.initParams) fbInitialized = true allauth.facebook.onInit() }; (function (d) { var js var id = 'facebook-jssdk' if (d.getElementById(id)) { return } js = d.createElement('script'); js.id = id; js.async = true js.src = '//connect.facebook.net/' + opts.locale + '/sdk.js' d.getElementsByTagName('head')[0].appendChild(js) }(document)) }, onInit: function () { }, login: function (nextUrl, action, process) { var self = this if (!fbInitialized) { var url = this.opts.loginUrl + '?next=' + encodeURIComponent(nextUrl) + '&action=' + encodeURIComponent(action) + '&process=' + encodeURIComponent(process) setLocationHref(url) return } if (action === 'reauthenticate') { this.opts.loginOptions.auth_type = action } FB.login(function (response) { if (response.authResponse) { self.onLoginSuccess(response, nextUrl, process) } else if (response && response.status && ['not_authorized', 'unknown'].indexOf(response.status) > -1) { self.onLoginCanceled(response) } else { self.onLoginError(response) } }, self.opts.loginOptions) }, onLoginCanceled: function (/* response */) { setLocationHref(this.opts.cancelUrl) }, onLoginError: function (/* response */) { setLocationHref(this.opts.errorUrl) }, onLoginSuccess: function (response, nextUrl, process) { var data = { next: nextUrl || '', process: process, access_token: response.authResponse.accessToken, expires_in: response.authResponse.expiresIn, csrfmiddlewaretoken: this.opts.csrfToken } postForm(this.opts.loginByTokenUrl, data) }, logout: function (nextUrl) { var self = this if (!fbInitialized) { return } FB.logout(function (response) { self.onLogoutSuccess(response, nextUrl) }) }, onLogoutSuccess: function (response, nextUrl) { var data = { next: nextUrl || '', csrfmiddlewaretoken: this.opts.csrfToken } postForm(this.opts.logoutUrl, data) } } allauth.facebook.init(fbSettings) })() django-allauth-0.35.0/allauth/socialaccount/providers/facebook/locale.py0000644000076500000240000000453313117447115027341 0ustar pennersrstaff00000000000000# Default locale mapping for the Facebook JS SDK # The list of supported locales is at # https://www.facebook.com/translations/FacebookLocales.xml import os from django.utils.translation import get_language, to_locale def _build_locale_table(filename_or_file): """ Parses the FacebookLocales.xml file and builds a dict relating every available language ('en, 'es, 'zh', ...) with a list of available regions for that language ('en' -> 'US', 'EN') and an (arbitrary) default region. """ # Require the XML parser module only if we want the default mapping from xml.dom.minidom import parse dom = parse(filename_or_file) reps = dom.getElementsByTagName('representation') locs = map(lambda r: r.childNodes[0].data, reps) locale_map = {} for loc in locs: lang, _, reg = loc.partition('_') lang_map = locale_map.setdefault(lang, {'regs': [], 'default': reg}) lang_map['regs'].append(reg) # Default region overrides (arbitrary) locale_map['en']['default'] = 'US' # Special case: Use es_ES for Spain and es_LA for everything else locale_map['es']['default'] = 'LA' locale_map['zh']['default'] = 'CN' locale_map['fr']['default'] = 'FR' locale_map['pt']['default'] = 'PT' return locale_map def get_default_locale_callable(): """ Wrapper function so that the default mapping is only built when needed """ exec_dir = os.path.dirname(os.path.realpath(__file__)) xml_path = os.path.join(exec_dir, 'data', 'FacebookLocales.xml') fb_locales = _build_locale_table(xml_path) def default_locale(request): """ Guess an appropiate FB locale based on the active Django locale. If the active locale is available, it is returned. Otherwise, it tries to return another locale with the same language. If there isn't one avaible, 'en_US' is returned. """ chosen = 'en_US' language = get_language() if language: locale = to_locale(language) lang, _, reg = locale.partition('_') lang_map = fb_locales.get(lang) if lang_map is not None: if reg in lang_map['regs']: chosen = lang + '_' + reg else: chosen = lang + '_' + lang_map['default'] return chosen return default_locale django-allauth-0.35.0/allauth/socialaccount/providers/facebook/templates/0000755000076500000240000000000013235133532027515 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/facebook/templates/facebook/0000755000076500000240000000000013235133532031266 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/facebook/templates/facebook/fbconnect.html0000644000076500000240000000033712671004326034121 0ustar pennersrstaff00000000000000{% load staticfiles %}
django-allauth-0.35.0/allauth/socialaccount/providers/facebook/tests.py0000644000076500000240000001177213235130412027235 0ustar pennersrstaff00000000000000import json from django.test.client import RequestFactory from django.test.utils import override_settings from django.urls import reverse from allauth.account import app_settings as account_settings from allauth.account.models import EmailAddress from allauth.socialaccount import providers from allauth.socialaccount.models import SocialAccount from allauth.socialaccount.tests import OAuth2TestsMixin from allauth.tests import MockedResponse, TestCase, patch from allauth.utils import get_user_model from .provider import FacebookProvider @override_settings( SOCIALACCOUNT_AUTO_SIGNUP=True, ACCOUNT_SIGNUP_FORM_CLASS=None, LOGIN_REDIRECT_URL='/accounts/profile/', ACCOUNT_EMAIL_VERIFICATION=account_settings .EmailVerificationMethod.NONE, SOCIALACCOUNT_PROVIDERS={ 'facebook': { 'AUTH_PARAMS': {}, 'VERIFIED_EMAIL': False}}) class FacebookTests(OAuth2TestsMixin, TestCase): provider_id = FacebookProvider.id facebook_data = """ { "id": "630595557", "name": "Raymond Penners", "first_name": "Raymond", "last_name": "Penners", "email": "raymond.penners@example.com", "link": "https://www.facebook.com/raymond.penners", "username": "raymond.penners", "birthday": "07/17/1973", "work": [ { "employer": { "id": "204953799537777", "name": "IntenCT" } } ], "timezone": 1, "locale": "nl_NL", "verified": true, "updated_time": "2012-11-30T20:40:33+0000" }""" def get_mocked_response(self, data=None): if data is None: data = self.facebook_data return MockedResponse(200, data) def test_username_conflict(self): User = get_user_model() User.objects.create(username='raymond.penners') self.login(self.get_mocked_response()) socialaccount = SocialAccount.objects.get(uid='630595557') self.assertEqual(socialaccount.user.username, 'raymond') def test_username_based_on_provider(self): self.login(self.get_mocked_response()) socialaccount = SocialAccount.objects.get(uid='630595557') self.assertEqual(socialaccount.user.username, 'raymond.penners') def test_username_based_on_provider_with_simple_name(self): data = '{"id": "1234567", "name": "Harvey McGillicuddy"}' self.login(self.get_mocked_response(data=data)) socialaccount = SocialAccount.objects.get(uid='1234567') self.assertEqual(socialaccount.user.username, 'harvey') def test_media_js(self): provider = providers.registry.by_id(FacebookProvider.id) request = RequestFactory().get(reverse('account_login')) request.session = {} script = provider.media_js(request) self.assertTrue('"appId": "app123id"' in script) def test_login_by_token(self): resp = self.client.get(reverse('account_login')) with patch('allauth.socialaccount.providers.facebook.views' '.requests') as requests_mock: mocks = [self.get_mocked_response().json()] requests_mock.get.return_value.json \ = lambda: mocks.pop() resp = self.client.post(reverse('facebook_login_by_token'), data={'access_token': 'dummy'}) self.assertRedirects( resp, "/accounts/profile/", fetch_redirect_response=False ) @override_settings( SOCIALACCOUNT_PROVIDERS={ 'facebook': { 'AUTH_PARAMS': {'auth_type': 'reauthenticate'}, 'VERIFIED_EMAIL': False}}) def test_login_by_token_reauthenticate(self): resp = self.client.get(reverse('account_login')) nonce = json.loads( resp.context['fb_data'])['loginOptions']['auth_nonce'] with patch('allauth.socialaccount.providers.facebook.views' '.requests') as requests_mock: mocks = [self.get_mocked_response().json(), {'auth_nonce': nonce}] requests_mock.get.return_value.json \ = lambda: mocks.pop() resp = self.client.post(reverse('facebook_login_by_token'), data={'access_token': 'dummy'}) self.assertRedirects( resp, "/accounts/profile/", fetch_redirect_response=False ) @override_settings( SOCIALACCOUNT_PROVIDERS={ 'facebook': { 'VERIFIED_EMAIL': True}}) def test_login_verified(self): emailaddress = self._login_verified() self.assertTrue(emailaddress.verified) def test_login_unverified(self): emailaddress = self._login_verified() self.assertFalse(emailaddress.verified) def _login_verified(self): self.login(self.get_mocked_response()) return EmailAddress.objects.get(email='raymond.penners@example.com') django-allauth-0.35.0/allauth/socialaccount/providers/facebook/urls.py0000644000076500000240000000053713117447115027067 0ustar pennersrstaff00000000000000from django.conf.urls import url from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns from . import views from .provider import FacebookProvider urlpatterns = default_urlpatterns(FacebookProvider) urlpatterns += [ url(r'^facebook/login/token/$', views.login_by_token, name="facebook_login_by_token"), ] django-allauth-0.35.0/allauth/socialaccount/providers/facebook/data/0000755000076500000240000000000013235133532026430 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/facebook/data/FacebookLocales.xml0000644000076500000240000003110612357313011032163 0ustar pennersrstaff00000000000000 Afrikaans FB af_ZA Arabic FB ar_AR Azerbaijani FB az_AZ Belarusian FB be_BY Bulgarian FB bg_BG Bengali FB bn_IN Bosnian FB bs_BA Catalan FB ca_ES Czech FB cs_CZ Welsh FB cy_GB Danish FB da_DK German FB de_DE Greek FB el_GR English (UK) FB en_GB English (Pirate) FB en_PI English (Upside Down) FB en_UD English (US) FB en_US Esperanto FB eo_EO Spanish (Spain) FB es_ES Spanish FB es_LA Estonian FB et_EE Basque FB eu_ES Persian FB fa_IR Leet Speak FB fb_LT Finnish FB fi_FI Faroese FB fo_FO French (Canada) FB fr_CA French (France) FB fr_FR Frisian FB fy_NL Irish FB ga_IE Galician FB gl_ES Hebrew FB he_IL Hindi FB hi_IN Croatian FB hr_HR Hungarian FB hu_HU Armenian FB hy_AM Indonesian FB id_ID Icelandic FB is_IS Italian FB it_IT Japanese FB ja_JP Georgian FB ka_GE Khmer FB km_KH Korean FB ko_KR Kurdish FB ku_TR Latin FB la_VA Lithuanian FB lt_LT Latvian FB lv_LV Macedonian FB mk_MK Malayalam FB ml_IN Malay FB ms_MY Norwegian (bokmal) FB nb_NO Nepali FB ne_NP Dutch FB nl_NL Norwegian (nynorsk) FB nn_NO Punjabi FB pa_IN Polish FB pl_PL Pashto FB ps_AF Portuguese (Brazil) FB pt_BR Portuguese (Portugal) FB pt_PT Romanian FB ro_RO Russian FB ru_RU Slovak FB sk_SK Slovenian FB sl_SI Albanian FB sq_AL Serbian FB sr_RS Swedish FB sv_SE Swahili FB sw_KE Tamil FB ta_IN Telugu FB te_IN Thai FB th_TH Filipino FB tl_PH Turkish FB tr_TR Ukrainian FB uk_UA Vietnamese FB vi_VN Simplified Chinese (China) FB zh_CN Traditional Chinese (Hong Kong) FB zh_HK Traditional Chinese (Taiwan) FB zh_TW django-allauth-0.35.0/allauth/socialaccount/providers/facebook/views.py0000644000076500000240000001124713235130412027225 0ustar pennersrstaff00000000000000import hashlib import hmac import logging import requests from datetime import timedelta from django.utils import timezone from allauth.socialaccount import app_settings, providers from allauth.socialaccount.helpers import ( complete_social_login, render_authentication_error, ) from allauth.socialaccount.models import SocialLogin, SocialToken from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) from .forms import FacebookConnectForm from .provider import GRAPH_API_URL, GRAPH_API_VERSION, FacebookProvider logger = logging.getLogger(__name__) def compute_appsecret_proof(app, token): # Generate an appsecret_proof parameter to secure the Graph API call # see https://developers.facebook.com/docs/graph-api/securing-requests msg = token.token.encode('utf-8') key = app.secret.encode('utf-8') appsecret_proof = hmac.new( key, msg, digestmod=hashlib.sha256).hexdigest() return appsecret_proof def fb_complete_login(request, app, token): provider = providers.registry.by_id(FacebookProvider.id, request) resp = requests.get( GRAPH_API_URL + '/me', params={ 'fields': ','.join(provider.get_fields()), 'access_token': token.token, 'appsecret_proof': compute_appsecret_proof(app, token) }) resp.raise_for_status() extra_data = resp.json() login = provider.sociallogin_from_response(request, extra_data) return login class FacebookOAuth2Adapter(OAuth2Adapter): provider_id = FacebookProvider.id provider_default_auth_url = ( 'https://www.facebook.com/{}/dialog/oauth'.format( GRAPH_API_VERSION)) settings = app_settings.PROVIDERS.get(provider_id, {}) authorize_url = settings.get('AUTHORIZE_URL', provider_default_auth_url) access_token_url = GRAPH_API_URL + '/oauth/access_token' expires_in_key = 'expires_in' def complete_login(self, request, app, access_token, **kwargs): return fb_complete_login(request, app, access_token) oauth2_login = OAuth2LoginView.adapter_view(FacebookOAuth2Adapter) oauth2_callback = OAuth2CallbackView.adapter_view(FacebookOAuth2Adapter) def login_by_token(request): ret = None auth_exception = None if request.method == 'POST': form = FacebookConnectForm(request.POST) if form.is_valid(): try: provider = providers.registry.by_id( FacebookProvider.id, request) login_options = provider.get_fb_login_options(request) app = provider.get_app(request) access_token = form.cleaned_data['access_token'] expires_at = None if login_options.get('auth_type') == 'reauthenticate': info = requests.get( GRAPH_API_URL + '/oauth/access_token_info', params={'client_id': app.client_id, 'access_token': access_token}).json() nonce = provider.get_nonce(request, pop=True) ok = nonce and nonce == info.get('auth_nonce') else: ok = True if ok and provider.get_settings().get('EXCHANGE_TOKEN'): resp = requests.get( GRAPH_API_URL + '/oauth/access_token', params={'grant_type': 'fb_exchange_token', 'client_id': app.client_id, 'client_secret': app.secret, 'fb_exchange_token': access_token}).json() access_token = resp['access_token'] expires_in = resp.get('expires_in') if expires_in: expires_at = timezone.now() + timedelta( seconds=int(expires_in)) if ok: token = SocialToken(app=app, token=access_token, expires_at=expires_at) login = fb_complete_login(request, app, token) login.token = token login.state = SocialLogin.state_from_request(request) ret = complete_social_login(request, login) except requests.RequestException as e: logger.exception('Error accessing FB user profile') auth_exception = e if not ret: ret = render_authentication_error(request, FacebookProvider.id, exception=auth_exception) return ret django-allauth-0.35.0/allauth/socialaccount/providers/basecamp/0000755000076500000240000000000013235133532025521 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/basecamp/provider.py0000644000076500000240000000222613117447114027732 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class BasecampAccount(ProviderAccount): def get_avatar_url(self): return None def to_str(self): dflt = super(BasecampAccount, self).to_str() return self.account.extra_data.get('name', dflt) class BasecampProvider(OAuth2Provider): id = 'basecamp' name = 'Basecamp' account_class = BasecampAccount def get_auth_params(self, request, action): data = super(BasecampProvider, self).get_auth_params(request, action) data['type'] = 'web_server' return data def extract_uid(self, data): data = data['identity'] return str(data['id']) def extract_common_fields(self, data): data = data['identity'] return dict( email=data.get('email_address'), username=data.get('email_address'), first_name=data.get('first_name'), last_name=data.get('last_name'), name="%s %s" % (data.get('first_name'), data.get('last_name')), ) provider_classes = [BasecampProvider] django-allauth-0.35.0/allauth/socialaccount/providers/basecamp/__init__.py0000644000076500000240000000000012671004326027621 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/basecamp/tests.py0000644000076500000240000000246013235130412027231 0ustar pennersrstaff00000000000000from allauth.socialaccount.tests import OAuth2TestsMixin from allauth.tests import MockedResponse, TestCase from .provider import BasecampProvider class BasecampTests(OAuth2TestsMixin, TestCase): provider_id = BasecampProvider.id def get_mocked_response(self): return MockedResponse(200, """ { "expires_at": "2012-03-22T16:56:48-05:00", "identity": { "id": 9999999, "first_name": "Jason Fried", "last_name": "Jason Fried", "email_address": "jason@example.com" }, "accounts": [ { "product": "bcx", "id": 88888888, "name": "Wayne Enterprises, Ltd.", "href": "https://basecamp.com/88888888/api/v1" }, { "product": "bcx", "id": 77777777, "name": "Veidt, Inc", "href": "https://basecamp.com/77777777/api/v1" }, { "product": "campfire", "id": 44444444, "name": "Acme Shipping Co.", "href": "https://acme4444444.campfirenow.com" } ] }""") django-allauth-0.35.0/allauth/socialaccount/providers/basecamp/urls.py0000644000076500000240000000025213117447114027062 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns from .provider import BasecampProvider urlpatterns = default_urlpatterns(BasecampProvider) django-allauth-0.35.0/allauth/socialaccount/providers/basecamp/views.py0000644000076500000240000000177713117447114027247 0ustar pennersrstaff00000000000000import requests from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) from .provider import BasecampProvider class BasecampOAuth2Adapter(OAuth2Adapter): provider_id = BasecampProvider.id access_token_url = 'https://launchpad.37signals.com/authorization/token?type=web_server' # noqa authorize_url = 'https://launchpad.37signals.com/authorization/new' profile_url = 'https://launchpad.37signals.com/authorization.json' def complete_login(self, request, app, token, **kwargs): headers = {'Authorization': 'Bearer {0}'.format(token.token)} resp = requests.get(self.profile_url, headers=headers) extra_data = resp.json() return self.get_provider().sociallogin_from_response(request, extra_data) oauth2_login = OAuth2LoginView.adapter_view(BasecampOAuth2Adapter) oauth2_callback = OAuth2CallbackView.adapter_view(BasecampOAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/providers/eventbrite/0000755000076500000240000000000013235133532026115 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/eventbrite/provider.py0000644000076500000240000000231313117447115030324 0ustar pennersrstaff00000000000000"""Customise Provider classes for Eventbrite API v3.""" from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class EventbriteAccount(ProviderAccount): """ProviderAccount subclass for Eventbrite.""" def get_avatar_url(self): """Return avatar url.""" return self.account.extra_data['image_id'] class EventbriteProvider(OAuth2Provider): """OAuth2Provider subclass for Eventbrite.""" id = 'eventbrite' name = 'Eventbrite' account_class = EventbriteAccount def extract_uid(self, data): """Extract uid ('id') and ensure it's a str.""" return str(data['id']) def get_default_scope(self): """Ensure scope is null to fit their API.""" return [''] def extract_common_fields(self, data): """Extract fields from a basic user query.""" return dict( emails=data.get('emails'), id=data.get('id'), name=data.get('name'), first_name=data.get('first_name'), last_name=data.get('last_name'), image_url=data.get('image_url') ) provider_classes = [EventbriteProvider] django-allauth-0.35.0/allauth/socialaccount/providers/eventbrite/__init__.py0000644000076500000240000000000013055274504030221 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/eventbrite/tests.py0000644000076500000240000000145013235130412027623 0ustar pennersrstaff00000000000000"""Test Eventbrite OAuth2 v3 Flow.""" from allauth.socialaccount.tests import OAuth2TestsMixin from allauth.tests import MockedResponse, TestCase from .provider import EventbriteProvider class EventbriteTests(OAuth2TestsMixin, TestCase): """Test Class for Eventbrite OAuth2 v3.""" provider_id = EventbriteProvider.id def get_mocked_response(self): """Test authentication with an non-null image_id""" return MockedResponse(200, """{ "emails": { "email": "test@example.com", "verified": "True", "primary": "True" }, "id": "999999999", "name": "Andrew Godwin", "first_name": "Andrew", "last_name": "Godwin", "image_id": "99999999" }""") django-allauth-0.35.0/allauth/socialaccount/providers/eventbrite/urls.py0000644000076500000240000000033113117447115027455 0ustar pennersrstaff00000000000000"""Register urls for EventbriteProvider""" from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns from .provider import EventbriteProvider urlpatterns = default_urlpatterns(EventbriteProvider) django-allauth-0.35.0/allauth/socialaccount/providers/eventbrite/views.py0000644000076500000240000000202013117447115027622 0ustar pennersrstaff00000000000000"""Views for Eventbrite API v3.""" import requests from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) from .provider import EventbriteProvider class EventbriteOAuth2Adapter(OAuth2Adapter): """OAuth2Adapter for Eventbrite API v3.""" provider_id = EventbriteProvider.id authorize_url = 'https://www.eventbrite.com/oauth/authorize' access_token_url = 'https://www.eventbrite.com/oauth/token' profile_url = 'https://www.eventbriteapi.com/v3/users/me/' def complete_login(self, request, app, token, **kwargs): """Complete login.""" resp = requests.get(self.profile_url, params={'token': token.token}) extra_data = resp.json() return self.get_provider().sociallogin_from_response(request, extra_data) oauth2_login = OAuth2LoginView.adapter_view(EventbriteOAuth2Adapter) oauth2_callback = OAuth2CallbackView.adapter_view(EventbriteOAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/providers/line/0000755000076500000240000000000013235133533024676 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/line/models.py0000644000076500000240000000000013117447115026524 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/line/provider.py0000644000076500000240000000115713117447115027111 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class LineAccount(ProviderAccount): def get_avatar_url(self): return self.account.extra_data.get('pictureUrl') def to_str(self): return self.account.extra_data.get('displayName', self.account.uid) class LineProvider(OAuth2Provider): id = 'line' name = 'Line' account_class = LineAccount def get_default_scope(self): return [] def extract_uid(self, data): return str(data['mid']) provider_classes = [LineProvider] django-allauth-0.35.0/allauth/socialaccount/providers/line/__init__.py0000644000076500000240000000000013051411266026773 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/line/tests.py0000644000076500000240000000074313117447115026421 0ustar pennersrstaff00000000000000from allauth.socialaccount.tests import OAuth2TestsMixin from allauth.tests import MockedResponse, TestCase from .provider import LineProvider class LineTests(OAuth2TestsMixin, TestCase): provider_id = LineProvider.id def get_mocked_response(self): return MockedResponse(200, """ { "mid": "u7d47d26a6bab09b95695ff02d1a36e38", "displayName": "\uc774\uc0c1\ud601", "pictureUrl": "http://dl.profile.line-cdn.net/0m055ab14d725138288331268c45ac5286a35482fb794a" }""") django-allauth-0.35.0/allauth/socialaccount/providers/line/urls.py0000644000076500000240000000024213117447115026236 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns from .provider import LineProvider urlpatterns = default_urlpatterns(LineProvider) django-allauth-0.35.0/allauth/socialaccount/providers/line/views.py0000644000076500000240000000165713117447115026421 0ustar pennersrstaff00000000000000import requests from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) from .provider import LineProvider class LineOAuth2Adapter(OAuth2Adapter): provider_id = LineProvider.id access_token_url = 'https://api.line.me/v1/oauth/accessToken' authorize_url = 'https://access.line.me/dialog/oauth/weblogin' profile_url = 'https://api.line.me/v1/profile' def complete_login(self, request, app, token, **kwargs): headers = {'Authorization': 'Bearer {0}'.format(token.token)} resp = requests.get(self.profile_url, headers=headers) extra_data = resp.json() return self.get_provider().sociallogin_from_response(request, extra_data) oauth2_login = OAuth2LoginView.adapter_view(LineOAuth2Adapter) oauth2_callback = OAuth2CallbackView.adapter_view(LineOAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/providers/patreon/0000755000076500000240000000000013235133533025417 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/patreon/models.py0000644000076500000240000000000013235130412027233 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/patreon/provider.py0000644000076500000240000000164113235130412027616 0ustar pennersrstaff00000000000000""" Provider for Patreon """ from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class PatreonAccount(ProviderAccount): def get_avatar_url(self): return self.account.extra_data.get('attributes').get('thumb_url') class PatreonProvider(OAuth2Provider): id = 'patreon' name = 'Patreon' account_class = PatreonAccount def get_default_scope(self): return ['pledges-to-me', 'users', 'my-campaign'] def extract_uid(self, data): return data.get('id') def extract_common_fields(self, data): details = data['attributes'] return { 'email': details.get('email'), 'fullname': details.get('full_name'), 'first_name': details.get('first_name'), 'last_name': details.get('last_name'), } provider_classes = [PatreonProvider] django-allauth-0.35.0/allauth/socialaccount/providers/patreon/__init__.py0000644000076500000240000000000013235130412027507 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/patreon/test.py0000644000076500000240000000355613235130412026752 0ustar pennersrstaff00000000000000from allauth.socialaccount.tests import OAuth2TestsMixin from allauth.tests import MockedResponse, TestCase from .provider import PatreonProvider class PatreonTests(OAuth2TestsMixin, TestCase): provider_id = PatreonProvider.id def get_mocked_response(self): return MockedResponse(200, """{ "data": { "relationships": { "pledges": { "data": [{ "type": "pledge", "id": "123456" }] } }, "attributes": { "last_name": "Interwebs", "is_suspended": false, "has_password": true, "full_name": "John Interwebs", "is_nuked": false, "first_name": "John", "social_connections": { "spotify": null, "discord": null, "twitter": null, "youtube": null, "facebook": null, "deviantart": null, "twitch": null }, "twitter": null, "is_email_verified": true, "facebook_id": null, "email": "john@example.com", "facebook": null, "thumb_url": "https://c8.patreon.com/100/123456", "vanity": null, "about": null, "is_deleted": false, "created": "2017-05-05T05:16:34+00:00", "url": "https://www.patreon.com/user?u=123456", "gender": 0, "youtube": null, "discord_id": null, "image_url": "https://c8.patreon.com/400/123456", "twitch": null }, "type": "user", "id": "123456" } }""") # noqa django-allauth-0.35.0/allauth/socialaccount/providers/patreon/urls.py0000644000076500000240000000031113235130412026742 0ustar pennersrstaff00000000000000"""URLs for Patreon Provider""" from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns from .provider import PatreonProvider urlpatterns = default_urlpatterns(PatreonProvider) django-allauth-0.35.0/allauth/socialaccount/providers/patreon/views.py0000644000076500000240000000204413235130412027117 0ustar pennersrstaff00000000000000""" Views for PatreonProvider https://www.patreon.com/platform/documentation/oauth """ import requests from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) from .provider import PatreonProvider class PatreonOAuth2Adapter(OAuth2Adapter): provider_id = PatreonProvider.id access_token_url = 'https://api.patreon.com/oauth2/token' authorize_url = 'https://www.patreon.com/oauth2/authorize' profile_url = 'https://api.patreon.com/oauth2/api/current_user' def complete_login(self, request, app, token, **kwargs): resp = requests.get(self.profile_url, headers={'Authorization': 'Bearer ' + token.token}) extra_data = resp.json().get('data') return self.get_provider().sociallogin_from_response(request, extra_data) oauth2_login = OAuth2LoginView.adapter_view(PatreonOAuth2Adapter) oauth2_callback = OAuth2CallbackView.adapter_view(PatreonOAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/providers/robinhood/0000755000076500000240000000000013235133533025732 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/robinhood/provider.py0000644000076500000240000000136213117447115030143 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class RobinhoodAccount(ProviderAccount): def get_avatar_url(self): return None def to_str(self): return self.account.extra_data.get( 'username', super(RobinhoodAccount, self).to_str()) class RobinhoodProvider(OAuth2Provider): id = 'robinhood' name = 'Robinhood' account_class = RobinhoodAccount def get_default_scope(self): return ['read'] def extract_uid(self, data): return data['id'] def extract_common_fields(self, data): return dict(username=data.get('username')) provider_classes = [RobinhoodProvider] django-allauth-0.35.0/allauth/socialaccount/providers/robinhood/__init__.py0000644000076500000240000000000012671004326030031 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/robinhood/tests.py0000644000076500000240000000066213117447115027455 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers import registry from allauth.socialaccount.tests import create_oauth2_tests from allauth.tests import MockedResponse from .provider import RobinhoodProvider class RobinhoodTests(create_oauth2_tests( registry.by_id(RobinhoodProvider.id))): def get_mocked_response(self): return MockedResponse(200, """ { "username": "test_username", "id": "1234-5678-910" } """) django-allauth-0.35.0/allauth/socialaccount/providers/robinhood/urls.py0000644000076500000240000000025413117447115027275 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns from .provider import RobinhoodProvider urlpatterns = default_urlpatterns(RobinhoodProvider) django-allauth-0.35.0/allauth/socialaccount/providers/robinhood/views.py0000644000076500000240000000201713117447115027444 0ustar pennersrstaff00000000000000import requests from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) from .provider import RobinhoodProvider class RobinhoodOAuth2Adapter(OAuth2Adapter): provider_id = RobinhoodProvider.id @property def authorize_url(self): return 'https://www.robinhood.com/oauth2/authorize/' @property def access_token_url(self): return 'https://api.robinhood.com/oauth2/token/' @property def profile_url(self): return 'https://api.robinhood.com/user/id/' def complete_login(self, request, app, token, **kwargs): response = requests.get( self.profile_url, headers={'Authorization': 'Bearer %s' % token.token}) extra_data = response.json() return self.get_provider().sociallogin_from_response( request, extra_data) oauth2_login = OAuth2LoginView.adapter_view(RobinhoodOAuth2Adapter) oauth2_callback = OAuth2CallbackView.adapter_view(RobinhoodOAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/providers/feedly/0000755000076500000240000000000013235133532025216 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/feedly/provider.py0000644000076500000240000000211413117447115027424 0ustar pennersrstaff00000000000000from __future__ import unicode_literals from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class FeedlyAccount(ProviderAccount): def get_avatar_url(self): return self.account.extra_data.get('picture') def to_str(self): name = '{0} {1}'.format(self.account.extra_data.get('givenName', ''), self.account.extra_data.get('familyName', '')) if name.strip() != '': return name return super(FeedlyAccount, self).to_str() class FeedlyProvider(OAuth2Provider): id = str('feedly') name = 'Feedly' account_class = FeedlyAccount def get_default_scope(self): return ['https://cloud.feedly.com/subscriptions'] def extract_uid(self, data): return str(data['id']) def extract_common_fields(self, data): return dict(email=data.get('email'), last_name=data.get('familyName'), first_name=data.get('givenName')) provider_classes = [FeedlyProvider] django-allauth-0.35.0/allauth/socialaccount/providers/feedly/__init__.py0000644000076500000240000000000012671004326027316 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/feedly/tests.py0000644000076500000240000000126213235130412026725 0ustar pennersrstaff00000000000000from allauth.socialaccount.tests import OAuth2TestsMixin from allauth.tests import MockedResponse, TestCase from .provider import FeedlyProvider class FeedlyTests(OAuth2TestsMixin, TestCase): provider_id = FeedlyProvider.id def get_mocked_response(self): return MockedResponse(200, """ { "id": "c805fcbf-3acf-4302-a97e-d82f9d7c897f", "email": "jim.smith@example.com", "givenName": "Jim", "familyName": "Smith", "picture": "https://www.google.com/profile_images/1771656873/bigger.jpg", "gender": "male", "locale": "en", "reader": "9080770707070700", "google": "115562565652656565656", "twitter": "jimsmith", "facebook": "", "wave": "2013.7" }""") django-allauth-0.35.0/allauth/socialaccount/providers/feedly/urls.py0000644000076500000240000000024613117447115026563 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns from .provider import FeedlyProvider urlpatterns = default_urlpatterns(FeedlyProvider) django-allauth-0.35.0/allauth/socialaccount/providers/feedly/views.py0000644000076500000240000000212713117447115026733 0ustar pennersrstaff00000000000000from __future__ import unicode_literals import requests from allauth.socialaccount import app_settings from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) from .provider import FeedlyProvider class FeedlyOAuth2Adapter(OAuth2Adapter): provider_id = FeedlyProvider.id host = app_settings.PROVIDERS.get(provider_id, {}).get( 'HOST', 'cloud.feedly.com') access_token_url = 'https://%s/v3/auth/token' % host authorize_url = 'https://%s/v3/auth/auth' % host profile_url = 'https://%s/v3/profile' % host def complete_login(self, request, app, token, **kwargs): headers = {'Authorization': 'OAuth {0}'.format(token.token)} resp = requests.get(self.profile_url, headers=headers) extra_data = resp.json() return self.get_provider().sociallogin_from_response(request, extra_data) oauth2_login = OAuth2LoginView.adapter_view(FeedlyOAuth2Adapter) oauth2_callback = OAuth2CallbackView.adapter_view(FeedlyOAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/providers/paypal/0000755000076500000240000000000013235133533025235 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/paypal/provider.py0000644000076500000240000000207613117447115027451 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class PaypalAccount(ProviderAccount): def get_avatar_url(self): return self.account.extra_data.get('picture') def to_str(self): return self.account.extra_data.get('name', super(PaypalAccount, self).to_str()) class PaypalProvider(OAuth2Provider): id = 'paypal' name = 'Paypal' account_class = PaypalAccount def get_default_scope(self): # See: https://developer.paypal.com/docs/integration/direct/identity/attributes/ # noqa return ['openid', 'email'] def extract_uid(self, data): return str(data['user_id']) def extract_common_fields(self, data): # See: https://developer.paypal.com/docs/api/#get-user-information return dict(first_name=data.get('given_name', ''), last_name=data.get('family_name', ''), email=data.get('email')) provider_classes = [PaypalProvider] django-allauth-0.35.0/allauth/socialaccount/providers/paypal/__init__.py0000644000076500000240000000000012671004326027334 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/paypal/tests.py0000644000076500000240000000110213235130412026734 0ustar pennersrstaff00000000000000from allauth.socialaccount.tests import OAuth2TestsMixin from allauth.tests import MockedResponse, TestCase from .provider import PaypalProvider class PaypalTests(OAuth2TestsMixin, TestCase): provider_id = PaypalProvider.id def get_mocked_response(self): return MockedResponse(200, """ { "user_id": "https://www.paypal.com/webapps/auth/server/64ghr894040044", "name": "Jane Doe", "given_name": "Jane", "family_name": "Doe", "email": "janedoe@example.com" } """) django-allauth-0.35.0/allauth/socialaccount/providers/paypal/urls.py0000644000076500000240000000024613117447115026601 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns from .provider import PaypalProvider urlpatterns = default_urlpatterns(PaypalProvider) django-allauth-0.35.0/allauth/socialaccount/providers/paypal/views.py0000644000076500000240000000273713117447115026760 0ustar pennersrstaff00000000000000import requests from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) from .provider import PaypalProvider class PaypalOAuth2Adapter(OAuth2Adapter): provider_id = PaypalProvider.id supports_state = False @property def authorize_url(self): path = 'webapps/auth/protocol/openidconnect/v1/authorize' return 'https://www.{0}/{1}'.format(self._get_endpoint(), path) @property def access_token_url(self): path = "v1/identity/openidconnect/tokenservice" return 'https://api.{0}/{1}'.format(self._get_endpoint(), path) @property def profile_url(self): path = 'v1/identity/openidconnect/userinfo' return 'https://api.{0}/{1}'.format(self._get_endpoint(), path) def _get_endpoint(self): settings = self.get_provider().get_settings() if settings.get('MODE') == 'live': return 'paypal.com' else: return 'sandbox.paypal.com' def complete_login(self, request, app, token, **kwargs): response = requests.post( self.profile_url, params={'schema': 'openid', 'access_token': token}) extra_data = response.json() return self.get_provider().sociallogin_from_response( request, extra_data) oauth2_login = OAuth2LoginView.adapter_view(PaypalOAuth2Adapter) oauth2_callback = OAuth2CallbackView.adapter_view(PaypalOAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/providers/angellist/0000755000076500000240000000000013235133532025730 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/angellist/provider.py0000644000076500000240000000163413117447114030143 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class AngelListAccount(ProviderAccount): def get_profile_url(self): return self.account.extra_data.get('angellist_url') def get_avatar_url(self): return self.account.extra_data.get('image') def to_str(self): dflt = super(AngelListAccount, self).to_str() return self.account.extra_data.get('name', dflt) class AngelListProvider(OAuth2Provider): id = 'angellist' name = 'AngelList' account_class = AngelListAccount def extract_uid(self, data): return str(data['id']) def extract_common_fields(self, data): return dict(email=data.get('email'), username=data.get('angellist_url').split('/')[-1], name=data.get('name')) provider_classes = [AngelListProvider] django-allauth-0.35.0/allauth/socialaccount/providers/angellist/__init__.py0000644000076500000240000000000012671004326030030 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/angellist/tests.py0000644000076500000240000000152513235130412027441 0ustar pennersrstaff00000000000000from allauth.socialaccount.tests import OAuth2TestsMixin from allauth.tests import MockedResponse, TestCase from .provider import AngelListProvider class AngelListTests(OAuth2TestsMixin, TestCase): provider_id = AngelListProvider.id def get_mocked_response(self): return MockedResponse(200, """ {"name":"pennersr","id":424732,"bio":"","follower_count":0, "angellist_url":"https://angel.co/dsxtst", "image":"https://angel.co/images/shared/nopic.png", "email":"raymond.penners@example.com","blog_url":null, "online_bio_url":null,"twitter_url":"https://twitter.com/dsxtst", "facebook_url":null,"linkedin_url":null,"aboutme_url":null, "github_url":null,"dribbble_url":null,"behance_url":null, "what_ive_built":null,"locations":[],"roles":[],"skills":[], "investor":false,"scopes":["message","talent","dealflow","comment", "email"]} """) django-allauth-0.35.0/allauth/socialaccount/providers/angellist/urls.py0000644000076500000240000000025413117447114027273 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns from .provider import AngelListProvider urlpatterns = default_urlpatterns(AngelListProvider) django-allauth-0.35.0/allauth/socialaccount/providers/angellist/views.py0000644000076500000240000000167413117447114027452 0ustar pennersrstaff00000000000000import requests from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) from .provider import AngelListProvider class AngelListOAuth2Adapter(OAuth2Adapter): provider_id = AngelListProvider.id access_token_url = 'https://angel.co/api/oauth/token/' authorize_url = 'https://angel.co/api/oauth/authorize/' profile_url = 'https://api.angel.co/1/me/' supports_state = False def complete_login(self, request, app, token, **kwargs): resp = requests.get(self.profile_url, params={'access_token': token.token}) extra_data = resp.json() return self.get_provider().sociallogin_from_response(request, extra_data) oauth2_login = OAuth2LoginView.adapter_view(AngelListOAuth2Adapter) oauth2_callback = OAuth2CallbackView.adapter_view(AngelListOAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/providers/weibo/0000755000076500000240000000000013235133533025054 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/weibo/provider.py0000644000076500000240000000202413117447116027262 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.base import ( ProviderAccount, ProviderException, ) from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class WeiboAccount(ProviderAccount): def get_profile_url(self): # profile_url = "u/3195025850" return 'http://www.weibo.com/' + self.account.extra_data.get( 'profile_url') def get_avatar_url(self): return self.account.extra_data.get('avatar_large') def to_str(self): dflt = super(WeiboAccount, self).to_str() return self.account.extra_data.get('name', dflt) class WeiboProvider(OAuth2Provider): id = 'weibo' name = 'Weibo' account_class = WeiboAccount def extract_uid(self, data): ret = data.get('idstr') if not ret: raise ProviderException("Missing 'idstr'") return ret def extract_common_fields(self, data): return dict(username=data.get('screen_name'), name=data.get('name')) provider_classes = [WeiboProvider] django-allauth-0.35.0/allauth/socialaccount/providers/weibo/__init__.py0000644000076500000240000000000012357313011027146 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/weibo/tests.py0000644000076500000240000000221013117447116026567 0ustar pennersrstaff00000000000000from allauth.socialaccount.tests import OAuth2TestsMixin from allauth.tests import MockedResponse, TestCase from .provider import WeiboProvider class WeiboTests(OAuth2TestsMixin, TestCase): provider_id = WeiboProvider.id def get_mocked_response(self): return MockedResponse(200, """ {"bi_followers_count": 0, "domain": "", "avatar_large": "http://tp3.sinaimg.cn/3195025850/180/0/0", "block_word": 0, "star": 0, "id": 3195025850, "city": "1", "verified": false, "follow_me": false, "verified_reason": "", "followers_count": 6, "location": "\u5317\u4eac \u4e1c\u57ce\u533a", "mbtype": 0, "profile_url": "u/3195025850", "province": "11", "statuses_count": 0, "description": "", "friends_count": 0, "online_status": 0, "mbrank": 0, "idstr": "3195025850", "profile_image_url": "http://tp3.sinaimg.cn/3195025850/50/0/0", "allow_all_act_msg": false, "allow_all_comment": true, "geo_enabled": true, "name": "pennersr", "lang": "zh-cn", "weihao": "", "remark": "", "favourites_count": 0, "screen_name": "pennersr", "url": "", "gender": "f", "created_at": "Tue Feb 19 19:43:39 +0800 2013", "verified_type": -1, "following": false} """) django-allauth-0.35.0/allauth/socialaccount/providers/weibo/urls.py0000644000076500000240000000024413117447116026417 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns from .provider import WeiboProvider urlpatterns = default_urlpatterns(WeiboProvider) django-allauth-0.35.0/allauth/socialaccount/providers/weibo/views.py0000644000076500000240000000200713117447116026566 0ustar pennersrstaff00000000000000import requests from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) from .provider import WeiboProvider class WeiboOAuth2Adapter(OAuth2Adapter): provider_id = WeiboProvider.id access_token_url = 'https://api.weibo.com/oauth2/access_token' authorize_url = 'https://api.weibo.com/oauth2/authorize' profile_url = 'https://api.weibo.com/2/users/show.json' def complete_login(self, request, app, token, **kwargs): uid = kwargs.get('response', {}).get('uid') resp = requests.get(self.profile_url, params={'access_token': token.token, 'uid': uid}) extra_data = resp.json() return self.get_provider().sociallogin_from_response(request, extra_data) oauth2_login = OAuth2LoginView.adapter_view(WeiboOAuth2Adapter) oauth2_callback = OAuth2CallbackView.adapter_view(WeiboOAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/providers/reddit/0000755000076500000240000000000013235133533025222 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/reddit/provider.py0000755000076500000240000000131113117447115027430 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class RedditAccount(ProviderAccount): def to_str(self): dflt = super(RedditAccount, self).to_str() name = self.account.extra_data.get('name', dflt) return name class RedditProvider(OAuth2Provider): id = 'reddit' name = 'Reddit' account_class = RedditAccount def extract_uid(self, data): return data['name'] def extract_common_fields(self, data): return dict(name=data.get('name')) def get_default_scope(self): scope = ['identity'] return scope provider_classes = [RedditProvider] django-allauth-0.35.0/allauth/socialaccount/providers/reddit/__init__.py0000644000076500000240000000000012671004326027321 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/reddit/tests.py0000755000076500000240000000070613117447115026747 0ustar pennersrstaff00000000000000# -*- coding: utf-8 -*- from __future__ import unicode_literals from allauth.socialaccount.providers import registry from allauth.socialaccount.tests import create_oauth2_tests from allauth.tests import MockedResponse from .provider import RedditProvider class RedditTests(create_oauth2_tests(registry.by_id( RedditProvider.id))): def get_mocked_response(self): return [MockedResponse(200, """{ "name": "wayward710"}""")] django-allauth-0.35.0/allauth/socialaccount/providers/reddit/urls.py0000755000076500000240000000024613117447115026571 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns from .provider import RedditProvider urlpatterns = default_urlpatterns(RedditProvider) django-allauth-0.35.0/allauth/socialaccount/providers/reddit/views.py0000755000076500000240000000252613117447115026744 0ustar pennersrstaff00000000000000import requests from allauth.socialaccount import app_settings from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) from .provider import RedditProvider class RedditAdapter(OAuth2Adapter): provider_id = RedditProvider.id access_token_url = 'https://www.reddit.com/api/v1/access_token' authorize_url = 'https://www.reddit.com/api/v1/authorize' profile_url = 'https://oauth.reddit.com/api/v1/me' basic_auth = True settings = app_settings.PROVIDERS.get(provider_id, {}) # Allow custom User Agent to comply with reddit API limits headers = { 'User-Agent': settings.get('USER_AGENT', 'django-allauth-header')} def complete_login(self, request, app, token, **kwargs): headers = { "Authorization": "bearer " + token.token} headers.update(self.headers) extra_data = requests.get(self.profile_url, headers=headers) # This only here because of weird response from the test suite if isinstance(extra_data, list): extra_data = extra_data[0] return self.get_provider().sociallogin_from_response( request, extra_data.json() ) oauth2_login = OAuth2LoginView.adapter_view(RedditAdapter) oauth2_callback = OAuth2CallbackView.adapter_view(RedditAdapter) django-allauth-0.35.0/allauth/socialaccount/providers/battlenet/0000755000076500000240000000000013235133532025730 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/battlenet/models.py0000644000076500000240000000000013117447114027556 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/battlenet/provider.py0000644000076500000240000000164513117447114030145 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class BattleNetAccount(ProviderAccount): def to_str(self): battletag = self.account.extra_data.get("battletag") return battletag or super(BattleNetAccount, self).to_str() class BattleNetProvider(OAuth2Provider): id = "battlenet" name = "Battle.net" account_class = BattleNetAccount def extract_uid(self, data): uid = str(data["id"]) if data.get("region") == "cn": # China is on a different account system. UIDs can clash with US. return uid + "-cn" return uid def extract_common_fields(self, data): return {"username": data.get("battletag")} def get_default_scope(self): # Optional scopes: "sc2.profile", "wow.profile" return [] provider_classes = [BattleNetProvider] django-allauth-0.35.0/allauth/socialaccount/providers/battlenet/validators.py0000644000076500000240000000016113117447114030453 0ustar pennersrstaff00000000000000from django.core.validators import RegexValidator BattletagUsernameValidator = RegexValidator(r"^[\w.]+#\d+$") django-allauth-0.35.0/allauth/socialaccount/providers/battlenet/__init__.py0000644000076500000240000000000012732226211030025 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/battlenet/tests.py0000644000076500000240000000446013235130412027442 0ustar pennersrstaff00000000000000import json from allauth.socialaccount.models import SocialAccount from allauth.socialaccount.providers.oauth2.client import OAuth2Error from allauth.socialaccount.tests import OAuth2TestsMixin from allauth.tests import MockedResponse, TestCase from .provider import BattleNetProvider from .views import _check_errors class BattleNetTests(OAuth2TestsMixin, TestCase): provider_id = BattleNetProvider.id _uid = 123456789 _battletag = "LuckyDragon#1953" def get_mocked_response(self): data = {"battletag": self._battletag, "id": self._uid} return MockedResponse(200, json.dumps(data)) def test_valid_response_no_battletag(self): data = {"id": 12345} response = MockedResponse(200, json.dumps(data)) self.assertEqual(_check_errors(response), data) def test_invalid_data(self): response = MockedResponse(200, json.dumps({})) with self.assertRaises(OAuth2Error): # No id, raises _check_errors(response) def test_profile_invalid_response(self): data = {"code": 403, "type": "Forbidden", "detail": "Account Inactive"} response = MockedResponse(401, json.dumps(data)) with self.assertRaises(OAuth2Error): # no id, 4xx code, raises _check_errors(response) def test_error_response(self): body = json.dumps({"error": "invalid_token"}) response = MockedResponse(400, body) with self.assertRaises(OAuth2Error): # no id, 4xx code, raises _check_errors(response) def test_service_not_found(self): response = MockedResponse(596, "

596 Service Not Found

") with self.assertRaises(OAuth2Error): # bad json, 5xx code, raises _check_errors(response) def test_invalid_response(self): response = MockedResponse(200, "invalid json data") with self.assertRaises(OAuth2Error): # bad json, raises _check_errors(response) def test_extra_data(self): self.login(self.get_mocked_response()) account = SocialAccount.objects.get(uid=str(self._uid)) self.assertEqual(account.extra_data["battletag"], self._battletag) self.assertEqual(account.extra_data["id"], self._uid) self.assertEqual(account.extra_data["region"], "us") django-allauth-0.35.0/allauth/socialaccount/providers/battlenet/urls.py0000644000076500000240000000025413117447114027273 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns from .provider import BattleNetProvider urlpatterns = default_urlpatterns(BattleNetProvider) django-allauth-0.35.0/allauth/socialaccount/providers/battlenet/views.py0000644000076500000240000001022413235130412027430 0ustar pennersrstaff00000000000000""" OAuth2 Adapter for Battle.net Resources: * Battle.net OAuth2 documentation: https://dev.battle.net/docs/read/oauth * Battle.net API documentation: https://dev.battle.net/io-docs * Original announcement: https://us.battle.net/en/forum/topic/13979297799 * The Battle.net API forum: https://us.battle.net/en/forum/15051532/ """ import requests from allauth.socialaccount.providers.oauth2.client import OAuth2Error from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) from .provider import BattleNetProvider def _check_errors(response): try: data = response.json() except ValueError: # JSONDecodeError on py3 raise OAuth2Error( "Invalid JSON from Battle.net API: %r" % (response.text) ) if response.status_code >= 400 or "error" in data: # For errors, we expect the following format: # {"error": "error_name", "error_description": "Oops!"} # For example, if the token is not valid, we will get: # { # "error": "invalid_token", # "error_description": "Invalid access token: abcdef123456" # } # For the profile API, this may also look like the following: # {"code": 403, "type": "Forbidden", "detail": "Account Inactive"} error = data.get("error", "") or data.get("type", "") desc = data.get("error_description", "") or data.get("detail", "") raise OAuth2Error("Battle.net error: %s (%s)" % (error, desc)) # The expected output from the API follows this format: # {"id": 12345, "battletag": "Example#12345"} # The battletag is optional. if "id" not in data: # If the id is not present, the output is not usable (no UID) raise OAuth2Error("Invalid data from Battle.net API: %r" % (data)) return data class BattleNetOAuth2Adapter(OAuth2Adapter): """ OAuth2 adapter for Battle.net https://dev.battle.net/docs/read/oauth Region is set to us by default, but can be overridden with the `region` GET parameter when performing a login. Can be any of eu, us, kr, sea, tw or cn """ provider_id = BattleNetProvider.id valid_regions = ("us", "eu", "kr", "sea", "tw", "cn") @property def battlenet_region(self): region = self.request.GET.get("region", "").lower() if region == "sea": # South-East Asia uses the same region as US everywhere return "us" if region in self.valid_regions: return region return "us" @property def battlenet_base_url(self): region = self.battlenet_region if region == "cn": return "https://www.battlenet.com.cn" return "https://%s.battle.net" % (region) @property def battlenet_api_url(self): if self.battlenet_region == "cn": return "https://api.battlenet.com.cn" return "https://%s.api.battle.net" % (self.battlenet_region) @property def access_token_url(self): return self.battlenet_base_url + "/oauth/token" @property def authorize_url(self): return self.battlenet_base_url + "/oauth/authorize" @property def profile_url(self): return self.battlenet_api_url + "/account/user" def complete_login(self, request, app, token, **kwargs): params = {"access_token": token.token} response = requests.get(self.profile_url, params=params) data = _check_errors(response) # Add the region to the data so that we can have it in `extra_data`. data["region"] = self.battlenet_region return self.get_provider().sociallogin_from_response(request, data) def get_callback_url(self, request, app): r = super(BattleNetOAuth2Adapter, self).get_callback_url(request, app) region = request.GET.get("region", "").lower() # Pass the region down to the callback URL if we specified it if region and region in self.valid_regions: r += "?region=%s" % (region) return r oauth2_login = OAuth2LoginView.adapter_view(BattleNetOAuth2Adapter) oauth2_callback = OAuth2CallbackView.adapter_view(BattleNetOAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/providers/doximity/0000755000076500000240000000000013235133532025614 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/doximity/provider.py0000644000076500000240000000204713117447115030027 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class DoximityAccount(ProviderAccount): def get_profile_url(self): return None def get_avatar_url(self): return self.account.extra_data.get('profile_photo') def to_str(self): dflt = super(DoximityAccount, self).to_str() return self.account.extra_data.get('full_name', dflt) class DoximityProvider(OAuth2Provider): id = 'doximity' name = 'Doximity' account_class = DoximityAccount def extract_uid(self, data): return data[str('id')] # the Doximity id is long def extract_common_fields(self, data): return dict( username=data.get('email'), first_name=data.get('firstname'), last_name=data.get('lastname'), email=data.get('email'), name=data.get('full_name') ) def get_default_scope(self): return ['basic', 'email'] provider_classes = [DoximityProvider] django-allauth-0.35.0/allauth/socialaccount/providers/doximity/__init__.py0000644000076500000240000000000012776010422027714 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/doximity/tests.py0000644000076500000240000000412213235130412027321 0ustar pennersrstaff00000000000000from allauth.socialaccount.tests import OAuth2TestsMixin from allauth.tests import MockedResponse, TestCase from .provider import DoximityProvider class DoximityTests(OAuth2TestsMixin, TestCase): provider_id = DoximityProvider.id def get_mocked_response(self): return MockedResponse(200, """ { "id": 41993552342, "npi": 1952635229, "firstname": "John", "middlename": "Henry", "maiden_name": null, "lastname": "Smith", "full_name": "Ahmed S Belal, MD", "gender": "M", "city": "San Francisco", "state": "CA", "zip": "94107", "phone": "(650) 200-3901", "fax": "888-416-8572", "email": "abelalmd@example.com", "address_1": "500 3rd St.", "address_2": "Suite 510", "lat": 42.3663926, "lon": -71.051395, "additional_locations": [{ "address_1": "12 Main st", "address_2": null, "city": "Cambridge", "state": "MA", "phone": "555-555-5555", "fax": null, "zip": "02138" }], "credentials": "MD", "verified": true, "description": "Chief of Cardiology", "medical_school": "UCSF School of Medicine", "residencies": ["Stanford Medical Center", "Mt Sinai Hospital"], "specialty": "Cardiology", "specialty_details": { "abbr": "Cards", "code": "CA00", "credential_id": 4, "name": "Cardiology", "id": "CA00" }, "hospitals": [{ "name": "Mills-Peninsula Health Services", "aha_id": "6930315" }], "subspecialties": ["General Cardiology", "Cardiac Disease"], "profile_photo": "https://s3.amazonaws.com/doximity_prod_uploads\ /profile_photos/7969/normal/profile.png", "colleague_count": 142 } """) django-allauth-0.35.0/allauth/socialaccount/providers/doximity/urls.py0000644000076500000240000000025213117447115027156 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns from .provider import DoximityProvider urlpatterns = default_urlpatterns(DoximityProvider) django-allauth-0.35.0/allauth/socialaccount/providers/doximity/views.py0000644000076500000240000000162513117447115027333 0ustar pennersrstaff00000000000000import requests from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) from .provider import DoximityProvider class DoximityOAuth2Adapter(OAuth2Adapter): provider_id = DoximityProvider.id access_token_url = 'https://auth.doximity.com/oauth/token' authorize_url = 'https://auth.doximity.com/oauth/authorize' profile_url = 'https://www.doximity.com/api/v1/users/current' def complete_login(self, request, app, token, **kwargs): headers = {'Authorization': 'Bearer %s' % token.token} resp = requests.get(self.profile_url, headers=headers) extra_data = resp.json() return self.get_provider().sociallogin_from_response( request, extra_data) oauth2_login = OAuth2LoginView.adapter_view(DoximityOAuth2Adapter) oauth2_callback = OAuth2CallbackView.adapter_view(DoximityOAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/providers/twentythreeandme/0000755000076500000240000000000013235133533027336 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/twentythreeandme/provider.py0000644000076500000240000000123013117447115031541 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class TwentyThreeAndMeAccount(ProviderAccount): pass class TwentyThreeAndMeProvider(OAuth2Provider): id = 'twentythreeandme' slug = '23andme' name = '23andMe' account_class = TwentyThreeAndMeAccount def extract_uid(self, data): return data['id'] def get_default_scope(self): scope = ['basic'] return scope def extract_common_fields(self, data): return dict( email=data.get('email'), ) provider_classes = [TwentyThreeAndMeProvider] django-allauth-0.35.0/allauth/socialaccount/providers/twentythreeandme/__init__.py0000644000076500000240000000000012732226241031435 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/twentythreeandme/tests.py0000644000076500000240000000143013117447115031053 0ustar pennersrstaff00000000000000from allauth.socialaccount.tests import OAuth2TestsMixin from allauth.tests import MockedResponse, TestCase from .provider import TwentyThreeAndMeProvider class TwentyThreeAndMeTests(OAuth2TestsMixin, TestCase): provider_id = TwentyThreeAndMeProvider.id def get_mocked_response(self): return MockedResponse(200, """ { "profiles": [ {"id": "56c46bdb0902f8e2", "genotyped": false} ], "id": "b4b975a5a6a1b80b" } """) def get_login_response_json(self, with_refresh_token=True): return """ { "access_token":"testac", "token_type":"bearer", "expires_in": 86400, "refresh_token":"33c53cd7bb", "scope":"basic" }""" django-allauth-0.35.0/allauth/socialaccount/providers/twentythreeandme/urls.py0000644000076500000240000000027213117447115030701 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns from .provider import TwentyThreeAndMeProvider urlpatterns = default_urlpatterns(TwentyThreeAndMeProvider) django-allauth-0.35.0/allauth/socialaccount/providers/twentythreeandme/views.py0000644000076500000240000000167613117447115031062 0ustar pennersrstaff00000000000000import requests from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) from .provider import TwentyThreeAndMeProvider class TwentyTreeAndMeOAuth2Adapter(OAuth2Adapter): provider_id = TwentyThreeAndMeProvider.id access_token_url = 'https://api.twentythreeandme.com/token' authorize_url = 'https://api.twentythreeandme.com/authorize' profile_url = 'https://api.twentythreeandme.com/1/user/' def complete_login(self, request, app, token, **kwargs): headers = {'Authorization': 'Bearer {0}'.format(token.token)} resp = requests.get(self.profile_url, headers=headers) extra_data = resp.json() return self.get_provider().sociallogin_from_response( request, extra_data) oauth2_login = OAuth2LoginView.adapter_view(TwentyTreeAndMeOAuth2Adapter) oauth2_callback = OAuth2CallbackView.adapter_view(TwentyTreeAndMeOAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/providers/daum/0000755000076500000240000000000013235133532024674 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/daum/models.py0000644000076500000240000000000013117447115026523 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/daum/provider.py0000644000076500000240000000107513117447115027107 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class DaumAccount(ProviderAccount): def get_avatar_url(self): return self.account.extra_data.get('bigImagePath') def to_str(self): return self.account.extra_data.get('nickname', self.account.uid) class DaumProvider(OAuth2Provider): id = 'Daum' name = 'Daum' account_class = DaumAccount def extract_uid(self, data): return str(data.get('id')) provider_classes = [DaumProvider] django-allauth-0.35.0/allauth/socialaccount/providers/daum/__init__.py0000644000076500000240000000000013055274500026774 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/daum/tests.py0000644000076500000240000000127413117447115026420 0ustar pennersrstaff00000000000000import json from allauth.socialaccount.tests import OAuth2TestsMixin from allauth.tests import MockedResponse, TestCase from .provider import DaumProvider class DaumTests(OAuth2TestsMixin, TestCase): provider_id = DaumProvider.id def get_mocked_response(self): result = dict() result['userid'] = '38DTh' result['id'] = 46287445 result['nickname'] = 'xncbf' result['bigImagePath'] = 'https://img1.daumcdn.net/thumb/' result['openProfile'] = 'https://img1.daumcdn.net/thumb/' body = dict() body['code'] = 200 body['message'] = 'OK' body['result'] = result return MockedResponse(200, json.dumps(body)) django-allauth-0.35.0/allauth/socialaccount/providers/daum/urls.py0000644000076500000240000000024213117447115026235 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns from .provider import DaumProvider urlpatterns = default_urlpatterns(DaumProvider) django-allauth-0.35.0/allauth/socialaccount/providers/daum/views.py0000644000076500000240000000160413117447115026410 0ustar pennersrstaff00000000000000import requests from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) from .provider import DaumProvider class DaumOAuth2Adapter(OAuth2Adapter): provider_id = DaumProvider.id access_token_url = 'https://apis.daum.net/oauth2/token' authorize_url = 'https://apis.daum.net/oauth2/authorize' profile_url = 'https://apis.daum.net/user/v1/show.json' def complete_login(self, request, app, token, **kwargs): resp = requests.get(self.profile_url, params={ 'access_token': token.token }) extra_data = resp.json().get('result') return self.get_provider().sociallogin_from_response( request, extra_data ) oauth2_login = OAuth2LoginView.adapter_view(DaumOAuth2Adapter) oauth2_callback = OAuth2CallbackView.adapter_view(DaumOAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/providers/dropbox/0000755000076500000240000000000013235133532025423 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/dropbox/provider.py0000644000076500000240000000116513235130412027624 0ustar pennersrstaff00000000000000from allauth.socialaccount import providers from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class DropboxOAuth2Account(ProviderAccount): pass class DropboxOAuth2Provider(OAuth2Provider): id = 'dropbox' name = 'Dropbox' account_class = DropboxOAuth2Account def extract_uid(self, data): return data['account_id'] def extract_common_fields(self, data): return dict(name=data['name']['display_name'], email=data['email']) providers.registry.register(DropboxOAuth2Provider) django-allauth-0.35.0/allauth/socialaccount/providers/dropbox/__init__.py0000644000076500000240000000000012357313011027516 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/dropbox/tests.py0000644000076500000240000000236513235130412027137 0ustar pennersrstaff00000000000000# -*- coding: utf-8 -*- from __future__ import unicode_literals import json from allauth.socialaccount.tests import OAuth2TestsMixin from allauth.tests import MockedResponse, TestCase from .provider import DropboxOAuth2Provider class DropboxOAuth2Tests(OAuth2TestsMixin, TestCase): provider_id = DropboxOAuth2Provider.id def get_mocked_response(self): payload = { "account_id": "dbid:ASDFasd3ASdfasdFAsd1AS2ASDF1aS-DfAs", "account_type": {".tag": "basic"}, "country": "US", "disabled": False, "email": "allauth@example.com", "email_verified": True, "is_paired": True, "locale": "en", "name": { "abbreviated_name": "AA", "display_name": "All Auth", "familiar_name": "All", "given_name": "All", "surname": "Auth" }, "profile_photo_url": ("https://dl-web.dropbox.com/account_photo" "/get/dbid%ASDFasd3ASdfasdFAsd1AS2ASDF1aS" "-DfAs?size=128x128"), "referral_link": "https://db.tt/ASDfAsDf" } return [MockedResponse(200, json.dumps(payload))] django-allauth-0.35.0/allauth/socialaccount/providers/dropbox/urls.py0000644000076500000240000000026313235130412026755 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth.urls import default_urlpatterns from .provider import DropboxOAuth2Provider urlpatterns = default_urlpatterns(DropboxOAuth2Provider) django-allauth-0.35.0/allauth/socialaccount/providers/dropbox/views.py0000644000076500000240000000213513235130412027125 0ustar pennersrstaff00000000000000import requests from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) from .provider import DropboxOAuth2Provider class DropboxOAuth2Adapter(OAuth2Adapter): provider_id = DropboxOAuth2Provider.id access_token_url = 'https://api.dropbox.com/oauth2/token' authorize_url = 'https://www.dropbox.com/oauth2/authorize' profile_url = 'https://api.dropbox.com/2/users/get_current_account' redirect_uri_protocol = 'https' def complete_login(self, request, app, token, **kwargs): extra_data = requests.post(self.profile_url, headers={ 'Authorization': 'Bearer %s' % (token.token, ) }) # This only here because of weird response from the test suite if isinstance(extra_data, list): extra_data = extra_data[0] return self.get_provider().sociallogin_from_response( request, extra_data.json() ) oauth_login = OAuth2LoginView.adapter_view(DropboxOAuth2Adapter) oauth_callback = OAuth2CallbackView.adapter_view(DropboxOAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/providers/salesforce/0000755000076500000240000000000013235133533026075 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/salesforce/provider.py0000644000076500000240000000335413235130412030277 0ustar pennersrstaff00000000000000from allauth.account.models import EmailAddress from allauth.socialaccount import providers from allauth.socialaccount.providers.base import AuthAction, ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class SalesforceAccount(ProviderAccount): def get_profile_url(self): return self.account.extra_data.get('link') def get_avatar_url(self): return self.account.extra_data.get('picture') def to_str(self): dflt = super(SalesforceAccount, self).to_str() return self.account.extra_data.get('name', dflt) class SalesforceProvider(OAuth2Provider): id = 'salesforce' name = 'Salesforce' package = 'allauth.socialaccount.providers.salesforce' account_class = SalesforceAccount def get_default_scope(self): return ['id', 'openid'] def get_auth_params(self, request, action): ret = super(SalesforceProvider, self).get_auth_params(request, action) if action == AuthAction.REAUTHENTICATE: ret['approval_prompt'] = 'force' return ret def extract_uid(self, data): return str(data['user_id']) def extract_common_fields(self, data): return dict(email=data.get('email'), last_name=data.get('family_name'), first_name=data.get('given_name'), username=data.get('preferred_username')) def extract_email_addresses(self, data): # a salesforce user must have an email, but it might not be verified email = EmailAddress(email=data.get('email'), primary=True, verified=data.get('email_verified')) return [email] providers.registry.register(SalesforceProvider) django-allauth-0.35.0/allauth/socialaccount/providers/salesforce/__init__.py0000644000076500000240000000000013235130412030165 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/salesforce/tests.py0000644000076500000240000000434313235130412027606 0ustar pennersrstaff00000000000000# -*- coding: utf-8 -*- from __future__ import absolute_import, unicode_literals from allauth.socialaccount.providers import registry from allauth.socialaccount.tests import create_oauth2_tests from allauth.tests import MockedResponse from .provider import SalesforceProvider class SalesforceTests(create_oauth2_tests(registry.by_id( SalesforceProvider.id))): def get_mocked_response(self, last_name='Penners', first_name='Raymond', name='Raymond Penners', email='raymond.penners@gmail.com', verified_email=True): userinfo = USERINFO_RESPONSE.format( org_id="00Dxx00000000000A0", user_id="005xx000000aWwRQAU", vip="https://test.salesforce.com", nickname="test-ooi2xhmjteep", first_name=first_name, last_name=last_name, my_domain="https://fun.cs46.my.salesforce.com", content_domain="https://fun--c.cs46.content.force.com", verified_email=repr(verified_email).lower(), email=email, active="true", is_app_installed="true" ) return MockedResponse(200, userinfo) USERINFO_RESPONSE = """ {{ "sub": "{vip}/id/{org_id}/{user_id}", "user_id": "{user_id}", "organization_id": "{org_id}", "preferred_username": "{nickname}@sample_-_dev_workspace.net", "nickname": "{nickname}", "name": "{first_name} {last_name}", "email": "{email}", "email_verified": {verified_email}, "given_name": "{first_name}", "family_name": "{last_name}", "zoneinfo": "America/Los_Angeles", "photos": {{ "picture": "{content_domain}/profilephoto/005/F", "thumbnail": "{content_domain}/profilephoto/005/T" }}, "profile": "{my_domain}/{user_id}", "picture": "{content_domain}/profilephoto/005/F", "address": {{"country": "US"}}, "urls": {{"custom_domain": "{my_domain}"}}, "active": {active}, "user_type": "STANDARD", "language": "en_US", "locale": "en_US", "utcOffset": -28800000, "updated_at": "2017-10-05T20:39:02.000+0000", "is_app_installed": {is_app_installed} }} """ django-allauth-0.35.0/allauth/socialaccount/providers/salesforce/urls.py0000644000076500000240000000025613235130412027430 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns from .provider import SalesforceProvider urlpatterns = default_urlpatterns(SalesforceProvider) django-allauth-0.35.0/allauth/socialaccount/providers/salesforce/views.py0000644000076500000240000000225713235130412027603 0ustar pennersrstaff00000000000000import requests from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) from .provider import SalesforceProvider class SalesforceOAuth2Adapter(OAuth2Adapter): provider_id = SalesforceProvider.id @property def base_url(self): return self.get_provider().get_app(self.request).key @property def authorize_url(self): return '{}/services/oauth2/authorize'.format(self.base_url) @property def access_token_url(self): return '{}/services/oauth2/token'.format(self.base_url) @property def userinfo_url(self): return '{}/services/oauth2/userinfo'.format(self.base_url) def complete_login(self, request, app, token, **kwargs): resp = requests.get(self.userinfo_url, params={'oauth_token': token}) resp.raise_for_status() extra_data = resp.json() return self.get_provider().sociallogin_from_response(request, extra_data) oauth2_login = OAuth2LoginView.adapter_view(SalesforceOAuth2Adapter) oauth2_callback = OAuth2CallbackView.adapter_view(SalesforceOAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/providers/meetup/0000755000076500000240000000000013235133533025246 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/meetup/models.py0000644000076500000240000000000013235130412027062 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/meetup/provider.py0000644000076500000240000000103013235130412027435 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class MeetupAccount(ProviderAccount): pass class MeetupProvider(OAuth2Provider): id = 'meetup' name = 'Meetup' account_class = MeetupAccount def extract_uid(self, data): return str(data['id']) def extract_common_fields(self, data): return dict(email=data.get('email'), name=data.get('name')) provider_classes = [MeetupProvider] django-allauth-0.35.0/allauth/socialaccount/providers/meetup/__init__.py0000644000076500000240000000000013235130412027336 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/meetup/tests.py0000644000076500000240000000271013235130412026753 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers import registry from allauth.socialaccount.tests import create_oauth2_tests from allauth.tests import MockedResponse from .provider import MeetupProvider class MeetupTests(create_oauth2_tests( registry.by_id(MeetupProvider.id))): def get_mocked_response(self): return MockedResponse(200, """ {"id": 1, "lang": "en_US", "city": "Bhubaneswar", "photo": { "thumb_link":"", "photo_id": 240057062, "highres_link":"", "base_url": "http://photos2.meetupstatic.com", "type": "member", "name": "Abhishek Jaiswal", "other_services": {}, "country": "in", "topics": [{"name": "Open Source", "urlkey": "opensource", "id": 563}, {"name": "Python", "urlkey": "python", "id": 1064}, {"name": "Software Development", "urlkey": "softwaredev", "id": 3833}, {"name": "Computer programming", "urlkey": "computer-programming", "id": 48471}, {"name": "Python Web Development", "urlkey": "python-web-development", "id": 917242}, {"name": "Data Science using Python", "urlkey": "data-science-using-python", "id": 1481522}], "lon": 85.83999633789062, "joined": 1411642310000, "id": 173662372, "status": "active", "link": "http://www.meetup.com/members/173662372", "hometown": "Kolkata", "lat": 20.270000457763672, "visited": 1488829924000, "self": {"common": {}}}}""") django-allauth-0.35.0/allauth/socialaccount/providers/meetup/urls.py0000644000076500000240000000024613235130412026600 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns from .provider import MeetupProvider urlpatterns = default_urlpatterns(MeetupProvider) django-allauth-0.35.0/allauth/socialaccount/providers/meetup/views.py0000644000076500000240000000164713235130412026756 0ustar pennersrstaff00000000000000import requests from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) from .provider import MeetupProvider class MeetupOAuth2Adapter(OAuth2Adapter): provider_id = MeetupProvider.id access_token_url = 'https://secure.meetup.com/oauth2/access' authorize_url = 'https://secure.meetup.com/oauth2/authorize' profile_url = 'https://api.meetup.com/2/member/self' def complete_login(self, request, app, token, **kwargs): resp = requests.get(self.profile_url, params={'access_token': token.token}) extra_data = resp.json() return self.get_provider().sociallogin_from_response(request, extra_data) oauth2_login = OAuth2LoginView.adapter_view(MeetupOAuth2Adapter) oauth2_callback = OAuth2CallbackView.adapter_view(MeetupOAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/providers/slack/0000755000076500000240000000000013235133533025044 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/slack/models.py0000644000076500000240000000000013117447115026672 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/slack/provider.py0000644000076500000240000000171713117447115027261 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class SlackAccount(ProviderAccount): def get_avatar_url(self): return self.account.extra_data.get('user').get('image_192', None) def to_str(self): dflt = super(SlackAccount, self).to_str() return '%s (%s)' % ( self.account.extra_data.get('name', ''), dflt, ) class SlackProvider(OAuth2Provider): id = 'slack' name = 'Slack' account_class = SlackAccount def extract_uid(self, data): return "%s_%s" % (str(data.get('team').get('id')), str(data.get('user').get('id'))) def extract_common_fields(self, data): return dict(name=data.get('name'), email=data.get('user').get('email', None)) def get_default_scope(self): return ['identify'] provider_classes = [SlackProvider] django-allauth-0.35.0/allauth/socialaccount/providers/slack/__init__.py0000644000076500000240000000000012733554166027156 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/slack/tests.py0000644000076500000240000000101113235130412026542 0ustar pennersrstaff00000000000000from allauth.socialaccount.tests import OAuth2TestsMixin from allauth.tests import MockedResponse, TestCase from .provider import SlackProvider class SlackOAuth2Tests(OAuth2TestsMixin, TestCase): provider_id = SlackProvider.id def get_mocked_response(self): return MockedResponse(200, """{ "ok": true, "url": "https:\\/\\/myteam.slack.com\\/", "team": "My Team", "user": "cal", "team_id": "T12345", "user_id": "U12345" }""") # noqa django-allauth-0.35.0/allauth/socialaccount/providers/slack/urls.py0000644000076500000240000000024413117447115026406 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns from .provider import SlackProvider urlpatterns = default_urlpatterns(SlackProvider) django-allauth-0.35.0/allauth/socialaccount/providers/slack/views.py0000644000076500000240000000275013117447115026562 0ustar pennersrstaff00000000000000import requests from allauth.socialaccount.providers.oauth2.client import OAuth2Error from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) from .provider import SlackProvider class SlackOAuth2Adapter(OAuth2Adapter): provider_id = SlackProvider.id access_token_url = 'https://slack.com/api/oauth.access' authorize_url = 'https://slack.com/oauth/authorize' identity_url = 'https://slack.com/api/auth.test' def complete_login(self, request, app, token, **kwargs): extra_data = self.get_data(token.token) return self.get_provider().sociallogin_from_response(request, extra_data) def get_data(self, token): # Verify the user first resp = requests.get( self.identity_url, params={'token': token} ) resp = resp.json() if not resp.get('ok'): raise OAuth2Error() # Fill in their generic info info = { 'name': resp.get('user'), 'user': { 'name': resp.get('user'), 'id': resp.get('user_id') }, 'team': { 'name': resp.get('team'), 'id': resp.get('team_id') } } return info oauth2_login = OAuth2LoginView.adapter_view(SlackOAuth2Adapter) oauth2_callback = OAuth2CallbackView.adapter_view(SlackOAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/providers/persona/0000755000076500000240000000000013235133533025416 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/persona/models.py0000644000076500000240000000000013117447115027244 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/persona/provider.py0000644000076500000240000000252713117447115027633 0ustar pennersrstaff00000000000000import json from django.template.loader import render_to_string from django.utils.html import escapejs from allauth.account.models import EmailAddress from allauth.socialaccount.providers.base import Provider, ProviderAccount class PersonaAccount(ProviderAccount): def to_str(self): return self.account.uid class PersonaProvider(Provider): id = 'persona' name = 'Persona' account_class = PersonaAccount def media_js(self, request): settings = self.get_settings() request_parameters = settings.get('REQUEST_PARAMETERS', {}) ctx = {'request_parameters': json.dumps(request_parameters)} return render_to_string('persona/auth.html', ctx, request=request) def get_login_url(self, request, **kwargs): next_url = "'%s'" % escapejs(kwargs.get('next') or '') process = "'%s'" % escapejs(kwargs.get('process') or 'login') return 'javascript:allauth.persona.login(%s, %s)' % (next_url, process) def extract_uid(self, data): return data['email'] def extract_common_fields(self, data): return dict(email=data['email']) def extract_email_addresses(self, data): ret = [EmailAddress(email=data['email'], verified=True, primary=True)] return ret provider_classes = [PersonaProvider] django-allauth-0.35.0/allauth/socialaccount/providers/persona/__init__.py0000644000076500000240000000000012617737262027531 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/persona/templates/0000755000076500000240000000000013235133532027413 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/persona/templates/persona/0000755000076500000240000000000013235133533031063 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/persona/templates/persona/auth.html0000644000076500000240000000213612671004326032714 0ustar pennersrstaff00000000000000
{% csrf_token %}
django-allauth-0.35.0/allauth/socialaccount/providers/persona/tests.py0000644000076500000240000000175413235130412027132 0ustar pennersrstaff00000000000000from django.test.utils import override_settings from django.urls import reverse from allauth.tests import TestCase, patch from allauth.utils import get_user_model SOCIALACCOUNT_PROVIDERS = {'persona': {'AUDIENCE': 'https://www.example.com:433'}} class PersonaTests(TestCase): @override_settings(SOCIALACCOUNT_PROVIDERS=SOCIALACCOUNT_PROVIDERS) def test_login(self): with patch('allauth.socialaccount.providers.persona.views' '.requests') as requests_mock: requests_mock.post.return_value.json.return_value = { 'status': 'okay', 'email': 'persona@example.com' } resp = self.client.post(reverse('persona_login'), dict(assertion='dummy')) self.assertRedirects(resp, '/accounts/profile/', fetch_redirect_response=False) get_user_model().objects.get(email='persona@example.com') django-allauth-0.35.0/allauth/socialaccount/providers/persona/urls.py0000644000076500000240000000022113117447115026753 0ustar pennersrstaff00000000000000from django.conf.urls import url from . import views urlpatterns = [ url('^persona/login/$', views.persona_login, name="persona_login") ] django-allauth-0.35.0/allauth/socialaccount/providers/persona/views.py0000644000076500000240000000314413117447115027132 0ustar pennersrstaff00000000000000import requests from django.core.exceptions import ImproperlyConfigured from allauth.socialaccount import app_settings, providers from allauth.socialaccount.helpers import ( complete_social_login, render_authentication_error, ) from allauth.socialaccount.models import SocialLogin from .provider import PersonaProvider def persona_login(request): assertion = request.POST.get('assertion', '') settings = app_settings.PROVIDERS.get(PersonaProvider.id, {}) audience = settings.get('AUDIENCE', None) if audience is None: raise ImproperlyConfigured( "No Persona audience configured. Please " "add an AUDIENCE item to the " "SOCIALACCOUNT_PROVIDERS['persona'] setting.") resp = requests.post('https://verifier.login.persona.org/verify', {'assertion': assertion, 'audience': audience}) try: resp.raise_for_status() extra_data = resp.json() if extra_data['status'] != 'okay': return render_authentication_error( request, provider_id=PersonaProvider.id, extra_context={'response': extra_data}) except (ValueError, requests.RequestException) as e: return render_authentication_error( request, provider_id=PersonaProvider.id, exception=e) login = providers.registry \ .by_id(PersonaProvider.id, request) \ .sociallogin_from_response(request, extra_data) login.state = SocialLogin.state_from_request(request) return complete_social_login(request, login) django-allauth-0.35.0/allauth/socialaccount/providers/trello/0000755000076500000240000000000013235133533025250 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/trello/provider.py0000644000076500000240000000164313117447115027463 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth.provider import OAuthProvider class TrelloAccount(ProviderAccount): def get_profile_url(self): return None def get_avatar_url(self): return None class TrelloProvider(OAuthProvider): id = 'trello' name = 'Trello' account_class = TrelloAccount def get_default_scope(self): return ['read'] def extract_uid(self, data): return data['id'] def get_auth_params(self, request, action): data = super(TrelloProvider, self).get_auth_params(request, action) app = self.get_app(request) data['type'] = 'web_server' data['name'] = app.name # define here for how long it will be, this can be configured on the # social app data['expiration'] = 'never' return data provider_classes = [TrelloProvider] django-allauth-0.35.0/allauth/socialaccount/providers/trello/__init__.py0000644000076500000240000000000013067642763027364 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/trello/tests.py0000644000076500000240000000042613117447115026771 0ustar pennersrstaff00000000000000# -*- coding: utf-8 -*- from __future__ import unicode_literals from allauth.socialaccount.tests import OAuthTestsMixin from allauth.tests import TestCase from .provider import TrelloProvider class TrelloTests(OAuthTestsMixin, TestCase): provider_id = TrelloProvider.id django-allauth-0.35.0/allauth/socialaccount/providers/trello/urls.py0000644000076500000240000000024513117447115026613 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth.urls import default_urlpatterns from .provider import TrelloProvider urlpatterns = default_urlpatterns(TrelloProvider) django-allauth-0.35.0/allauth/socialaccount/providers/trello/views.py0000644000076500000240000000275713117447115026775 0ustar pennersrstaff00000000000000import requests from django.utils.http import urlencode, urlquote from allauth.socialaccount.providers.oauth.views import ( OAuthAdapter, OAuthCallbackView, OAuthLoginView, ) from .provider import TrelloProvider class TrelloOAuthAdapter(OAuthAdapter): provider_id = TrelloProvider.id request_token_url = 'https://trello.com/1/OAuthGetRequestToken' authorize_url = 'https://trello.com/1/OAuthAuthorizeToken' access_token_url = 'https://trello.com/1/OAuthGetAccessToken' def complete_login(self, request, app, token, response): # we need to get the member id and the other information # check: https://developers.trello.com/advanced-reference/token # https://api.trello.com/1/tokens/91a6408305c1e5ec1b0b306688bc2e2f8fe67abf6a2ecec38c17e5b894fcf866?key=[application_key]&token=[optional_auth_token] info_url = '{base}{token}?{query}'.format( base='https://api.trello.com/1/tokens/', token=urlquote(token), query=urlencode({ 'key': app.key, 'token': response.get('oauth_token')})) resp = requests.get(info_url) resp.raise_for_status() extra_data = resp.json() result = self.get_provider().sociallogin_from_response(request, extra_data) return result oauth_login = OAuthLoginView.adapter_view(TrelloOAuthAdapter) oauth_callback = OAuthCallbackView.adapter_view(TrelloOAuthAdapter) django-allauth-0.35.0/allauth/socialaccount/providers/bitbucket/0000755000076500000240000000000013235133532025722 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/bitbucket/provider.py0000644000076500000240000000173513117447114030137 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth.provider import OAuthProvider class BitbucketAccount(ProviderAccount): def get_profile_url(self): return 'http://bitbucket.org/' + self.account.extra_data['username'] def get_avatar_url(self): return self.account.extra_data.get('avatar') def get_username(self): return self.account.extra_data['username'] def to_str(self): return self.get_username() class BitbucketProvider(OAuthProvider): id = 'bitbucket' name = 'Bitbucket' account_class = BitbucketAccount def extract_uid(self, data): return data['username'] def extract_common_fields(self, data): return dict(email=data.get('email'), first_name=data.get('first_name'), username=data.get('username'), last_name=data.get('last_name')) provider_classes = [BitbucketProvider] django-allauth-0.35.0/allauth/socialaccount/providers/bitbucket/__init__.py0000644000076500000240000000000012671004326030022 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/bitbucket/tests.py0000644000076500000240000000254713235130412027440 0ustar pennersrstaff00000000000000# -*- coding: utf-8 -*- from allauth.socialaccount.tests import OAuthTestsMixin from allauth.tests import MockedResponse, TestCase from .provider import BitbucketProvider class BitbucketTests(OAuthTestsMixin, TestCase): provider_id = BitbucketProvider.id def get_mocked_response(self): # FIXME: Replace with actual/complete Bitbucket response return [MockedResponse(200, r""" [{"active": true, "email": "raymond.penners@example.com", "primary": true}, {"active": true, "email": "raymond.penners@example.org", "primary": false} ] """), MockedResponse(200, r""" {"repositories": [], "user": {"avatar": "https://secure.gravatar.com/avatar.jpg", "display_name": "pennersr", "first_name": "", "is_team": false, "last_name": "", "resource_uri": "/1.0/users/pennersr", "username": "pennersr"}} """)] # noqa def test_login(self): account = super(BitbucketTests, self).test_login() bb_account = account.get_provider_account() self.assertEqual(bb_account.get_username(), 'pennersr') self.assertEqual(bb_account.get_avatar_url(), 'https://secure.gravatar.com/avatar.jpg') self.assertEqual(bb_account.get_profile_url(), 'http://bitbucket.org/pennersr') django-allauth-0.35.0/allauth/socialaccount/providers/bitbucket/urls.py0000644000076500000240000000025313117447114027264 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth.urls import default_urlpatterns from .provider import BitbucketProvider urlpatterns = default_urlpatterns(BitbucketProvider) django-allauth-0.35.0/allauth/socialaccount/providers/bitbucket/views.py0000644000076500000240000000313013117447114027431 0ustar pennersrstaff00000000000000import json from allauth.socialaccount.providers.oauth.client import OAuth from allauth.socialaccount.providers.oauth.views import ( OAuthAdapter, OAuthCallbackView, OAuthLoginView, ) from .provider import BitbucketProvider class BitbucketAPI(OAuth): emails_url = 'https://bitbucket.org/api/1.0/emails/' users_url = 'https://bitbucket.org/api/1.0/users/' def get_user_info(self): # TODO: Actually turn these into EmailAddress emails = json.loads(self.query(self.emails_url)) for address in reversed(emails): if address['active']: email = address['email'] if address['primary']: break data = json.loads(self.query(self.users_url + email)) user = data['user'] return user class BitbucketOAuthAdapter(OAuthAdapter): provider_id = BitbucketProvider.id request_token_url = 'https://bitbucket.org/api/1.0/oauth/request_token' access_token_url = 'https://bitbucket.org/api/1.0/oauth/access_token' authorize_url = 'https://bitbucket.org/api/1.0/oauth/authenticate' def complete_login(self, request, app, token, response): client = BitbucketAPI(request, app.client_id, app.secret, self.request_token_url) extra_data = client.get_user_info() return self.get_provider().sociallogin_from_response(request, extra_data) oauth_login = OAuthLoginView.adapter_view(BitbucketOAuthAdapter) oauth_callback = OAuthCallbackView.adapter_view(BitbucketOAuthAdapter) django-allauth-0.35.0/allauth/socialaccount/providers/mailru/0000755000076500000240000000000013235133533025240 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/mailru/provider.py0000644000076500000240000000234513117447115027453 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class MailRuAccount(ProviderAccount): def get_profile_url(self): return self.account.extra_data.get('link') def get_avatar_url(self): ret = None if self.account.extra_data.get('has_pic'): pic_big_url = self.account.extra_data.get('pic_big') pic_small_url = self.account.extra_data.get('pic_small') if pic_big_url: return pic_big_url elif pic_small_url: return pic_small_url else: return ret def to_str(self): dflt = super(MailRuAccount, self).to_str() return self.account.extra_data.get('name', dflt) class MailRuProvider(OAuth2Provider): id = 'mailru' name = 'Mail.RU' account_class = MailRuAccount def extract_uid(self, data): return data['uid'] def extract_common_fields(self, data): return dict(email=data.get('email'), last_name=data.get('last_name'), username=data.get('nick'), first_name=data.get('first_name')) provider_classes = [MailRuProvider] django-allauth-0.35.0/allauth/socialaccount/providers/mailru/__init__.py0000644000076500000240000000000012671004326027337 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/mailru/tests.py0000644000076500000240000000273313117447115026764 0ustar pennersrstaff00000000000000# -*- coding: utf-8 -*- from __future__ import absolute_import, unicode_literals from allauth.socialaccount.tests import OAuth2TestsMixin from allauth.tests import MockedResponse, TestCase from .provider import MailRuProvider class MailRuTests(OAuth2TestsMixin, TestCase): provider_id = MailRuProvider.id def get_mocked_response(self, verified_email=True): return MockedResponse(200, """ [ { "uid": "15410773191172635989", "first_name": "Евгений", "last_name": "Маслов", "nick": "maslov", "email": "emaslov@mail.ru", "sex": 0, "birthday": "15.02.1980", "has_pic": 1, "pic": "http://avt.appsmail.ru/mail/emaslov/_avatar", "pic_small": "http://avt.appsmail.ru/mail/emaslov/_avatarsmall", "pic_big": "http://avt.appsmail.ru/mail/emaslov/_avatarbig", "link": "http://my.mail.ru/mail/emaslov/", "referer_type": "", "referer_id": "", "is_online": 1, "friends_count": 145, "is_verified": 1, "vip" : 0, "app_installed": 1, "location": { "country": { "name": "Россия", "id": "24" }, "city": { "name": "Москва", "id": "25" }, "region": { "name": "Москва", "id": "999999" } } }]""") # noqa def get_login_response_json(self, with_refresh_token=True): # FIXME: This is not an actual response. I added this in order # to get the test suite going but did not verify to check the # exact response being returned. return '{"access_token": "testac", "uid": "weibo", "refresh_token": "testrf", "x_mailru_vid": "1"}' # noqa django-allauth-0.35.0/allauth/socialaccount/providers/mailru/urls.py0000644000076500000240000000024613117447115026604 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns from .provider import MailRuProvider urlpatterns = default_urlpatterns(MailRuProvider) django-allauth-0.35.0/allauth/socialaccount/providers/mailru/views.py0000644000076500000240000000241213117447115026751 0ustar pennersrstaff00000000000000import requests from hashlib import md5 from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) from .provider import MailRuProvider class MailRuOAuth2Adapter(OAuth2Adapter): provider_id = MailRuProvider.id access_token_url = 'https://connect.mail.ru/oauth/token' authorize_url = 'https://connect.mail.ru/oauth/authorize' profile_url = 'http://www.appsmail.ru/platform/api' def complete_login(self, request, app, token, **kwargs): uid = kwargs['response']['x_mailru_vid'] data = {'method': 'users.getInfo', 'app_id': app.client_id, 'secure': '1', 'uids': uid} param_list = sorted(list(item + '=' + data[item] for item in data)) data['sig'] = md5( (''.join(param_list) + app.secret).encode('utf-8') ).hexdigest() response = requests.get(self.profile_url, params=data) extra_data = response.json()[0] return self.get_provider().sociallogin_from_response(request, extra_data) oauth2_login = OAuth2LoginView.adapter_view(MailRuOAuth2Adapter) oauth2_callback = OAuth2CallbackView.adapter_view(MailRuOAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/providers/twitch/0000755000076500000240000000000013235133533025251 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/twitch/provider.py0000644000076500000240000000171713235130412027454 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class TwitchAccount(ProviderAccount): def get_profile_url(self): return 'http://twitch.tv/' + self.account.extra_data.get('name') def get_avatar_url(self): return self.account.extra_data.get('logo') def to_str(self): dflt = super(TwitchAccount, self).to_str() return self.account.extra_data.get('name', dflt) class TwitchProvider(OAuth2Provider): id = 'twitch' name = 'Twitch' account_class = TwitchAccount def extract_uid(self, data): return str(data['_id']) def extract_common_fields(self, data): return { "username": data.get("name"), "name": data.get("display_name"), "email": data.get("email"), } def get_default_scope(self): return ["user_read"] provider_classes = [TwitchProvider] django-allauth-0.35.0/allauth/socialaccount/providers/twitch/__init__.py0000644000076500000240000000000012357313011027343 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/twitch/tests.py0000644000076500000240000000125113235130412026755 0ustar pennersrstaff00000000000000from allauth.socialaccount.tests import OAuth2TestsMixin from allauth.tests import MockedResponse, TestCase from .provider import TwitchProvider class TwitchTests(OAuth2TestsMixin, TestCase): provider_id = TwitchProvider.id def get_mocked_response(self): return MockedResponse(200, """ {"name":"test_user1","created_at":"2011-06-03T17:49:19Z", "updated_at":"2012-06-18T17:19:57Z","_links":{"self": "https://api.twitch.tv/kraken/users/test_user1"}, "logo":"http://static-cdn.jtvnw.net/jtv_user_pictures/test_user1-profile_image-62e8318af864d6d7-300x300.jpeg", "_id":22761313,"display_name":"test_user1","email":"user@example.com", "partnered":true} """) # noqa django-allauth-0.35.0/allauth/socialaccount/providers/twitch/urls.py0000644000076500000240000000024613117447115026615 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns from .provider import TwitchProvider urlpatterns = default_urlpatterns(TwitchProvider) django-allauth-0.35.0/allauth/socialaccount/providers/twitch/views.py0000644000076500000240000000237713235130412026762 0ustar pennersrstaff00000000000000import requests from allauth.socialaccount.providers.oauth2.client import OAuth2Error from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) from .provider import TwitchProvider class TwitchOAuth2Adapter(OAuth2Adapter): provider_id = TwitchProvider.id access_token_url = 'https://api.twitch.tv/kraken/oauth2/token' authorize_url = 'https://api.twitch.tv/kraken/oauth2/authorize' profile_url = 'https://api.twitch.tv/kraken/user' def complete_login(self, request, app, token, **kwargs): params = {"oauth_token": token.token, "client_id": app.client_id} response = requests.get(self.profile_url, params=params) data = response.json() if response.status_code >= 400: error = data.get("error", "") message = data.get("message", "") raise OAuth2Error("Twitch API Error: %s (%s)" % (error, message)) if "_id" not in data: raise OAuth2Error("Invalid data from Twitch API: %r" % (data)) return self.get_provider().sociallogin_from_response(request, data) oauth2_login = OAuth2LoginView.adapter_view(TwitchOAuth2Adapter) oauth2_callback = OAuth2CallbackView.adapter_view(TwitchOAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/providers/fivehundredpx/0000755000076500000240000000000013235133532026621 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/fivehundredpx/models.py0000644000076500000240000000000013117447115030450 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/fivehundredpx/provider.py0000644000076500000240000000217513117447115031036 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth.provider import OAuthProvider class FiveHundredPxAccount(ProviderAccount): def get_profile_url(self): return 'https://500px.com/%s' \ % self.account.extra_data.get('username') def get_avatar_url(self): return self.account.extra_data.get('userpic_url') def to_str(self): dflt = super(FiveHundredPxAccount, self).to_str() name = self.account.extra_data.get('fullname', dflt) return name class FiveHundredPxProvider(OAuthProvider): id = '500px' name = '500px' package = 'allauth.socialaccount.providers.fivehundredpx' account_class = FiveHundredPxAccount def get_default_scope(self): return [] def extract_uid(self, data): return data['id'] def extract_common_fields(self, data): return dict(username=data.get('username'), email=data.get('email'), first_name=data.get('firstname'), last_name=data.get('lastname')) provider_classes = [FiveHundredPxProvider] django-allauth-0.35.0/allauth/socialaccount/providers/fivehundredpx/__init__.py0000644000076500000240000000000013022325541030715 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/fivehundredpx/tests.py0000644000076500000240000000625713117447115030353 0ustar pennersrstaff00000000000000# -*- coding: utf-8 -*- from allauth.socialaccount.tests import OAuthTestsMixin from allauth.tests import MockedResponse, TestCase from .provider import FiveHundredPxProvider class FiveHundredPxTests(OAuthTestsMixin, TestCase): provider_id = FiveHundredPxProvider.id def get_mocked_response(self): return [MockedResponse(200, """{ "user": { "id": 5751454, "username": "testuser", "firstname": "Test", "lastname": "User", "birthday": null, "sex": 0, "city": "San Francisco", "state": "California", "country": "United States", "registration_date": "2015-12-12T03:20:31-05:00", "about": "About me.", "usertype": 0, "fotomoto_on": true, "locale": "en", "show_nude": false, "allow_sale_requests": 1, "fullname": "Test User", "userpic_url": "https://pacdn.500px.org/10599609/8e20991262c468a866918dcbe2f7e9a30e2c2c9c/1.jpg?1", "userpic_https_url": "https://pacdn.500px.org/10599609/8e20991262c468a866918dcbe2f7e9a30e2c2c9c/1.jpg?1", "cover_url": "https://pacdn.500px.org/10599609/8e20991262c468a866918dcbe2f7e9a30e2c2c9c/cover_2048.jpg?7", "upgrade_status": 2, "store_on": true, "photos_count": 68, "galleries_count": 2, "affection": 1888, "in_favorites_count": 340, "friends_count": 181, "followers_count": 150, "analytics_code": null, "invite_pending": false, "invite_accepted": false, "email": "test@example.com", "shadow_email": "test@example.com", "upload_limit": null, "upload_limit_expiry": "2016-12-01T13:33:55-05:00", "upgrade_type": 2, "upgrade_status_expiry": "2017-05-27", "auth": { "facebook": 0, "twitter": 0, "google_oauth2": 0 }, "presubmit_for_licensing": null, "avatars": { "default": { "http": "https://pacdn.500px.org/10599609/8e20991262c468a866918dcbe2f7e9a30e2c2c9c/1.jpg?1", "https": "https://pacdn.500px.org/10599609/8e20991262c468a866918dcbe2f7e9a30e2c2c9c/1.jpg?1" }, "large": { "http": "https://pacdn.500px.org/10599609/8e20991262c468a866918dcbe2f7e9a30e2c2c9c/2.jpg?1", "https": "https://pacdn.500px.org/10599609/8e20991262c468a866918dcbe2f7e9a30e2c2c9c/2.jpg?1" }, "small": { "http": "https://pacdn.500px.org/10599609/8e20991262c468a866918dcbe2f7e9a30e2c2c9c/1.jpg?1", "https": "https://pacdn.500px.org/10599609/8e20991262c468a866918dcbe2f7e9a30e2c2c9c/1.jpg?1" }, "tiny": { "http": "https://pacdn.500px.org/10599609/8e20991262c468a866918dcbe2f7e9a30e2c2c9c/4.jpg?1", "https": "https://pacdn.500px.org/10599609/8e20991262c468a866918dcbe2f7e9a30e2c2c9c/4.jpg?1" } } } }""")] # noqa django-allauth-0.35.0/allauth/socialaccount/providers/fivehundredpx/urls.py0000644000076500000240000000026313117447115030165 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth.urls import default_urlpatterns from .provider import FiveHundredPxProvider urlpatterns = default_urlpatterns(FiveHundredPxProvider) django-allauth-0.35.0/allauth/socialaccount/providers/fivehundredpx/views.py0000644000076500000240000000235213117447115030336 0ustar pennersrstaff00000000000000import json from allauth.socialaccount.providers.oauth.client import OAuth from allauth.socialaccount.providers.oauth.views import ( OAuthAdapter, OAuthCallbackView, OAuthLoginView, ) from .provider import FiveHundredPxProvider API_BASE = 'https://api.500px.com/v1' class FiveHundredPxAPI(OAuth): """ Verifying 500px credentials """ url = API_BASE + '/users' def get_user_info(self): return json.loads(self.query(self.url))['user'] class FiveHundredPxOAuthAdapter(OAuthAdapter): provider_id = FiveHundredPxProvider.id request_token_url = API_BASE + '/oauth/request_token' access_token_url = API_BASE + '/oauth/access_token' authorize_url = API_BASE + '/oauth/authorize' def complete_login(self, request, app, token, response): client = FiveHundredPxAPI(request, app.client_id, app.secret, self.request_token_url) extra_data = client.get_user_info() return self.get_provider().sociallogin_from_response(request, extra_data) oauth_login = OAuthLoginView.adapter_view(FiveHundredPxOAuthAdapter) oauth_callback = OAuthCallbackView.adapter_view(FiveHundredPxOAuthAdapter) django-allauth-0.35.0/allauth/socialaccount/providers/auth0/0000755000076500000240000000000013235133532024767 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/auth0/provider.py0000644000076500000240000000160413117447114027177 0ustar pennersrstaff00000000000000# -*- coding: utf-8 -*- from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class Auth0Account(ProviderAccount): def get_avatar_url(self): return self.account.extra_data.get('picture') def to_str(self): dflt = super(Auth0Account, self).to_str() return self.account.extra_data.get('name', dflt) class Auth0Provider(OAuth2Provider): id = 'auth0' name = 'Auth0' account_class = Auth0Account def extract_uid(self, data): return str(data['id']) def extract_common_fields(self, data): return dict( email=data.get('email'), username=data.get('username'), name=data.get('name'), user_id=data.get('user_id'), picture=data.get('picture'), ) provider_classes = [Auth0Provider] django-allauth-0.35.0/allauth/socialaccount/providers/auth0/__init__.py0000644000076500000240000000000013055274503027072 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/auth0/tests.py0000644000076500000240000000122413235130412026474 0ustar pennersrstaff00000000000000# -*- coding: utf-8 -*- from allauth.socialaccount.providers.auth0.provider import Auth0Provider from allauth.socialaccount.tests import OAuth2TestsMixin from allauth.tests import MockedResponse, TestCase class Auth0Tests(OAuth2TestsMixin, TestCase): provider_id = Auth0Provider.id def get_mocked_response(self): return MockedResponse(200, """ { "picture": "https://secure.gravatar.com/avatar/123", "email": "mr.bob@your.Auth0.server.example.com", "id": 2, "user_id": 2, "identities": [], "name": "Mr Bob" } """) django-allauth-0.35.0/allauth/socialaccount/providers/auth0/urls.py0000644000076500000240000000034013117447114026326 0ustar pennersrstaff00000000000000# -*- coding: utf-8 -*- from allauth.socialaccount.providers.auth0.provider import Auth0Provider from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns urlpatterns = default_urlpatterns(Auth0Provider) django-allauth-0.35.0/allauth/socialaccount/providers/auth0/views.py0000644000076500000240000000245413117447114026506 0ustar pennersrstaff00000000000000# -*- coding: utf-8 -*- import requests from allauth.socialaccount import app_settings from allauth.socialaccount.providers.auth0.provider import Auth0Provider from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) class Auth0OAuth2Adapter(OAuth2Adapter): provider_id = Auth0Provider.id supports_state = True settings = app_settings.PROVIDERS.get(provider_id, {}) provider_base_url = settings.get("AUTH0_URL") access_token_url = '{0}/oauth/token'.format(provider_base_url) authorize_url = '{0}/authorize'.format(provider_base_url) profile_url = '{0}/userinfo'.format(provider_base_url) def complete_login(self, request, app, token, response): extra_data = requests.get(self.profile_url, params={ 'access_token': token.token }).json() extra_data = { 'user_id': extra_data['user_id'], 'id': extra_data['user_id'], 'name': extra_data['name'], 'email': extra_data['email'] } return self.get_provider().sociallogin_from_response( request, extra_data ) oauth2_login = OAuth2LoginView.adapter_view(Auth0OAuth2Adapter) oauth2_callback = OAuth2CallbackView.adapter_view(Auth0OAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/providers/instagram/0000755000076500000240000000000013235133532025733 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/instagram/provider.py0000644000076500000240000000202013117447115030135 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class InstagramAccount(ProviderAccount): PROFILE_URL = 'http://instagram.com/' def get_profile_url(self): return self.PROFILE_URL + self.account.extra_data.get('username') def get_avatar_url(self): return self.account.extra_data.get('profile_picture') def to_str(self): dflt = super(InstagramAccount, self).to_str() return self.account.extra_data.get('username', dflt) class InstagramProvider(OAuth2Provider): id = 'instagram' name = 'Instagram' account_class = InstagramAccount def extract_extra_data(self, data): return data.get('data', {}) def get_default_scope(self): return ['basic'] def extract_uid(self, data): return str(data['data']['id']) def extract_common_fields(self, data): return dict(username=data['data'].get('username')) provider_classes = [InstagramProvider] django-allauth-0.35.0/allauth/socialaccount/providers/instagram/__init__.py0000644000076500000240000000000012671004326030033 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/instagram/tests.py0000644000076500000240000000152113117447115027452 0ustar pennersrstaff00000000000000from allauth.socialaccount.tests import OAuth2TestsMixin from allauth.tests import MockedResponse, TestCase from .provider import InstagramProvider class InstagramTests(OAuth2TestsMixin, TestCase): provider_id = InstagramProvider.id def get_mocked_response(self): return MockedResponse(200, """ { "meta": { "code": 200 }, "data": { "username": "georgewhewell", "bio": "", "website": "", "profile_picture": "http://images.ak.instagram.com/profiles/profile_11428116_75sq_1339547159.jpg", "full_name": "georgewhewell", "counts": { "media": 74, "followed_by": 91, "follows": 104 }, "id": "11428116" } }""") # noqa django-allauth-0.35.0/allauth/socialaccount/providers/instagram/urls.py0000644000076500000240000000025413117447115027277 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns from .provider import InstagramProvider urlpatterns = default_urlpatterns(InstagramProvider) django-allauth-0.35.0/allauth/socialaccount/providers/instagram/views.py0000644000076500000240000000167513117447115027457 0ustar pennersrstaff00000000000000import requests from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) from .provider import InstagramProvider class InstagramOAuth2Adapter(OAuth2Adapter): provider_id = InstagramProvider.id access_token_url = 'https://api.instagram.com/oauth/access_token' authorize_url = 'https://api.instagram.com/oauth/authorize' profile_url = 'https://api.instagram.com/v1/users/self' def complete_login(self, request, app, token, **kwargs): resp = requests.get(self.profile_url, params={'access_token': token.token}) extra_data = resp.json() return self.get_provider().sociallogin_from_response(request, extra_data) oauth2_login = OAuth2LoginView.adapter_view(InstagramOAuth2Adapter) oauth2_callback = OAuth2CallbackView.adapter_view(InstagramOAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/providers/odnoklassniki/0000755000076500000240000000000013235133533026617 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/odnoklassniki/provider.py0000644000076500000240000000236513117447115031034 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class OdnoklassnikiAccount(ProviderAccount): def get_profile_url(self): return self.account.extra_data.get('link') def get_avatar_url(self): ret = None pic_big_url = self.account.extra_data.get('pic1024x768') pic_medium_url = self.account.extra_data.get('pic640x480') pic_small_url = self.account.extra_data.get('pic190x190') if pic_big_url: return pic_big_url elif pic_medium_url: return pic_medium_url elif pic_small_url: return pic_small_url else: return ret def to_str(self): dflt = super(OdnoklassnikiAccount, self).to_str() return self.account.extra_data.get('name', dflt) class OdnoklassnikiProvider(OAuth2Provider): id = 'odnoklassniki' name = 'Odnoklassniki' account_class = OdnoklassnikiAccount def extract_uid(self, data): return data['uid'] def extract_common_fields(self, data): return dict(last_name=data.get('last_name'), first_name=data.get('first_name')) provider_classes = [OdnoklassnikiProvider] django-allauth-0.35.0/allauth/socialaccount/providers/odnoklassniki/__init__.py0000644000076500000240000000000012671004326030716 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/odnoklassniki/tests.py0000644000076500000240000000163313117447115030341 0ustar pennersrstaff00000000000000# -*- coding: utf-8 -*- from __future__ import absolute_import from allauth.socialaccount.tests import OAuth2TestsMixin from allauth.tests import MockedResponse, TestCase from .provider import OdnoklassnikiProvider class OdnoklassnikiTests(OAuth2TestsMixin, TestCase): provider_id = OdnoklassnikiProvider.id def get_mocked_response(self, verified_email=True): return MockedResponse(200, """ {"uid":"561999209121","birthday":"1999-09-09","age":33,"first_name":"Ivan", "last_name":"Petrov","name":"Ivan Petrov","locale":"en","gender":"male", "has_email":true,"location":{"city":"Moscow","country":"RUSSIAN_FEDERATION", "countryCode":"RU","countryName":"Russia"},"online":"web","pic_1": "http://i500.mycdn.me/res/stub_50x50.gif", "pic_2":"http://usd1.mycdn.me/res/stub_128x96.gif"} """) def get_login_response_json(self, with_refresh_token=True): return '{"access_token": "testac"}' # noqa django-allauth-0.35.0/allauth/socialaccount/providers/odnoklassniki/urls.py0000644000076500000240000000026413117447115030163 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns from .provider import OdnoklassnikiProvider urlpatterns = default_urlpatterns(OdnoklassnikiProvider) django-allauth-0.35.0/allauth/socialaccount/providers/odnoklassniki/views.py0000644000076500000240000000421213117447115030330 0ustar pennersrstaff00000000000000import requests from hashlib import md5 from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) from .provider import OdnoklassnikiProvider USER_FIELDS = ['uid', 'locale', 'first_name', 'last_name', 'name', 'gender', 'age', 'birthday', 'has_email', 'current_status', 'current_status_id', 'current_status_date', 'online', 'photo_id', 'pic_1', # aka pic50x50 'pic_2', # aka pic128max 'pic190x190', # small 'pic640x480', # medium 'pic1024x768', # big 'location'] class OdnoklassnikiOAuth2Adapter(OAuth2Adapter): provider_id = OdnoklassnikiProvider.id access_token_url = 'http://api.odnoklassniki.ru/oauth/token.do' authorize_url = 'http://www.odnoklassniki.ru/oauth/authorize' profile_url = 'http://api.odnoklassniki.ru/fb.do' access_token_method = 'POST' def complete_login(self, request, app, token, **kwargs): data = {'method': 'users.getCurrentUser', 'access_token': token.token, 'fields': ','.join(USER_FIELDS), 'format': 'JSON', 'application_key': app.key} suffix = md5( '{0:s}{1:s}'.format( data['access_token'], app.secret).encode('utf-8')).hexdigest() check_list = sorted(['{0:s}={1:s}'.format(k, v) for k, v in data.items() if k != 'access_token']) data['sig'] = md5( (''.join(check_list) + suffix).encode('utf-8')).hexdigest() response = requests.get(self.profile_url, params=data) extra_data = response.json() return self.get_provider().sociallogin_from_response(request, extra_data) oauth2_login = OAuth2LoginView.adapter_view(OdnoklassnikiOAuth2Adapter) oauth2_callback = OAuth2CallbackView.adapter_view(OdnoklassnikiOAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/providers/asana/0000755000076500000240000000000013235133532025031 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/asana/models.py0000644000076500000240000000000013117447114026657 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/asana/provider.py0000644000076500000240000000102213117447114027233 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class AsanaAccount(ProviderAccount): pass class AsanaProvider(OAuth2Provider): id = 'asana' name = 'Asana' account_class = AsanaAccount def extract_uid(self, data): return str(data['id']) def extract_common_fields(self, data): return dict(email=data.get('email'), name=data.get('name')) provider_classes = [AsanaProvider] django-allauth-0.35.0/allauth/socialaccount/providers/asana/__init__.py0000644000076500000240000000000012702776002027133 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/asana/tests.py0000644000076500000240000000104213235130412026534 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers import registry from allauth.socialaccount.tests import create_oauth2_tests from allauth.tests import MockedResponse from .provider import AsanaProvider class AsanaTests(create_oauth2_tests( registry.by_id(AsanaProvider.id))): def get_mocked_response(self): return MockedResponse(200, """ {"data": {"photo": null, "workspaces": [{"id": 31337, "name": "example.com"}, {"id": 3133777, "name": "Personal Projects"}], "email": "test@example.com", "name": "Test Name", "id": 43748387}}""") django-allauth-0.35.0/allauth/socialaccount/providers/asana/urls.py0000644000076500000240000000024413117447114026373 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns from .provider import AsanaProvider urlpatterns = default_urlpatterns(AsanaProvider) django-allauth-0.35.0/allauth/socialaccount/providers/asana/views.py0000644000076500000240000000164513117447114026551 0ustar pennersrstaff00000000000000import requests from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) from .provider import AsanaProvider class AsanaOAuth2Adapter(OAuth2Adapter): provider_id = AsanaProvider.id access_token_url = 'https://app.asana.com/-/oauth_token' authorize_url = 'https://app.asana.com/-/oauth_authorize' profile_url = 'https://app.asana.com/api/1.0/users/me' def complete_login(self, request, app, token, **kwargs): resp = requests.get(self.profile_url, params={'access_token': token.token}) extra_data = resp.json()['data'] return self.get_provider().sociallogin_from_response(request, extra_data) oauth2_login = OAuth2LoginView.adapter_view(AsanaOAuth2Adapter) oauth2_callback = OAuth2CallbackView.adapter_view(AsanaOAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/providers/base.py0000644000076500000240000001464013235130412025231 0ustar pennersrstaff00000000000000from django.utils.encoding import python_2_unicode_compatible from allauth.account.models import EmailAddress from allauth.socialaccount import app_settings from ..adapter import get_adapter class AuthProcess(object): LOGIN = 'login' CONNECT = 'connect' REDIRECT = 'redirect' class AuthAction(object): AUTHENTICATE = 'authenticate' REAUTHENTICATE = 'reauthenticate' class AuthError(object): UNKNOWN = 'unknown' CANCELLED = 'cancelled' # Cancelled on request of user DENIED = 'denied' # Denied by server class ProviderException(Exception): pass class Provider(object): slug = None def __init__(self, request): self.request = request @classmethod def get_slug(cls): return cls.slug or cls.id def get_login_url(self, request, next=None, **kwargs): """ Builds the URL to redirect to when initiating a login for this provider. """ raise NotImplementedError("get_login_url() for " + self.name) def get_app(self, request): # NOTE: Avoid loading models at top due to registry boot... from allauth.socialaccount.models import SocialApp return SocialApp.objects.get_current(self.id, request) def media_js(self, request): """ Some providers may require extra scripts (e.g. a Facebook connect) """ return '' def wrap_account(self, social_account): return self.account_class(social_account) def get_settings(self): return app_settings.PROVIDERS.get(self.id, {}) def sociallogin_from_response(self, request, response): """ Instantiates and populates a `SocialLogin` model based on the data retrieved in `response`. The method does NOT save the model to the DB. Data for `SocialLogin` will be extracted from `response` with the help of the `.extract_uid()`, `.extract_extra_data()`, `.extract_common_fields()`, and `.extract_email_addresses()` methods. :param request: a Django `HttpRequest` object. :param response: object retrieved via the callback response of the social auth provider. :return: A populated instance of the `SocialLogin` model (unsaved). """ # NOTE: Avoid loading models at top due to registry boot... from allauth.socialaccount.models import SocialLogin, SocialAccount adapter = get_adapter(request) uid = self.extract_uid(response) extra_data = self.extract_extra_data(response) common_fields = self.extract_common_fields(response) socialaccount = SocialAccount(extra_data=extra_data, uid=uid, provider=self.id) email_addresses = self.extract_email_addresses(response) self.cleanup_email_addresses(common_fields.get('email'), email_addresses) sociallogin = SocialLogin(account=socialaccount, email_addresses=email_addresses) user = sociallogin.user = adapter.new_user(request, sociallogin) user.set_unusable_password() adapter.populate_user(request, sociallogin, common_fields) return sociallogin def extract_uid(self, data): """ Extracts the unique user ID from `data` """ raise NotImplementedError( 'The provider must implement the `extract_uid()` method' ) def extract_extra_data(self, data): """ Extracts fields from `data` that will be stored in `SocialAccount`'s `extra_data` JSONField. :return: any JSON-serializable Python structure. """ return data def extract_common_fields(self, data): """ Extracts fields from `data` that will be used to populate the `User` model in the `SOCIALACCOUNT_ADAPTER`'s `populate_user()` method. For example: {'first_name': 'John'} :return: dictionary of key-value pairs. """ return {} def cleanup_email_addresses(self, email, addresses): # Move user.email over to EmailAddress if (email and email.lower() not in [ a.email.lower() for a in addresses]): addresses.append(EmailAddress(email=email, verified=False, primary=True)) # Force verified emails settings = self.get_settings() verified_email = settings.get('VERIFIED_EMAIL', False) if verified_email: for address in addresses: address.verified = True def extract_email_addresses(self, data): """ For example: [EmailAddress(email='john@example.com', verified=True, primary=True)] """ return [] @classmethod def get_package(cls): pkg = getattr(cls, 'package', None) if not pkg: pkg = cls.__module__.rpartition('.')[0] return pkg @python_2_unicode_compatible class ProviderAccount(object): def __init__(self, social_account): self.account = social_account def get_profile_url(self): return None def get_avatar_url(self): return None def get_brand(self): """ Returns a dict containing an id and name identifying the brand. Useful when displaying logos next to accounts in templates. For most providers, these are identical to the provider. For OpenID however, the brand can derived from the OpenID identity url. """ provider = self.account.get_provider() return dict(id=provider.id, name=provider.name) def __str__(self): return self.to_str() def to_str(self): """ Due to the way python_2_unicode_compatible works, this does not work: @python_2_unicode_compatible class GoogleAccount(ProviderAccount): def __str__(self): dflt = super(GoogleAccount, self).__str__() return self.account.extra_data.get('name', dflt) It will result in and infinite recursion loop. That's why we add a method `to_str` that can be overriden in a conventional fashion, without having to worry about @python_2_unicode_compatible """ return self.get_brand()['name'] django-allauth-0.35.0/allauth/socialaccount/providers/untappd/0000755000076500000240000000000013235133533025422 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/untappd/provider.py0000644000076500000240000000306513235130412027623 0ustar pennersrstaff00000000000000from django.urls import reverse from allauth.account.models import EmailAddress from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class UntappdAccount(ProviderAccount): def get_profile_url(self): return self.account.extra_data.get('untappd_url') def get_avatar_url(self): return self.account.extra_data.get('user_avatar') def to_str(self): dflt = super(UntappdAccount, self).to_str() return self.account.extra_data.get('user_name', dflt) class UntappdProvider(OAuth2Provider): id = 'untappd' name = 'Untappd' account_class = UntappdAccount def get_auth_params(self, request, action): params = super(UntappdProvider, self).get_auth_params(request, action) # Untappd uses redirect_url instead of redirect_uri params['redirect_url'] = request.build_absolute_uri( reverse(self.id + '_callback') ) return params def extract_uid(self, data): return str(data['response']['user']['uid']) def extract_common_fields(self, data): user = data['response']['user'] return dict( username=user['user_name'], name=user['first_name'] + ' ' + user['last_name'] ) def extract_email_addresses(self, data): ret = [EmailAddress( email=data['response']['user']['settings']['email_address'], verified=True, primary=True )] return ret provider_classes = [UntappdProvider] django-allauth-0.35.0/allauth/socialaccount/providers/untappd/client.py0000644000076500000240000000254313117447116027262 0ustar pennersrstaff00000000000000import requests from allauth.socialaccount.providers.oauth2.client import ( OAuth2Client, OAuth2Error, ) class UntappdOAuth2Client(OAuth2Client): """ Custom client because Untappd: * uses redirect_url instead of redirect_uri * nests access_token inside an extra 'response' object """ def get_access_token(self, code): data = {'client_id': self.consumer_key, 'redirect_url': self.callback_url, 'grant_type': 'authorization_code', 'response_type': 'code', 'client_secret': self.consumer_secret, 'code': code} params = None self._strip_empty_keys(data) url = self.access_token_url if self.access_token_method == 'GET': params = data data = None # TODO: Proper exception handling resp = requests.request(self.access_token_method, url, params=params, data=data) access_token = None if resp.status_code == 200: access_token = resp.json()['response'] if not access_token or 'access_token' not in access_token: raise OAuth2Error('Error retrieving access token: %s' % resp.content) return access_token django-allauth-0.35.0/allauth/socialaccount/providers/untappd/__init__.py0000644000076500000240000000000012671004326027521 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/untappd/tests.py0000644000076500000240000000547413235130412027141 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers import registry from allauth.socialaccount.tests import create_oauth2_tests from allauth.tests import MockedResponse from .provider import UntappdProvider class UntappdTests(create_oauth2_tests(registry.by_id(UntappdProvider.id))): def get_login_response_json(self, with_refresh_token=True): return """ { "meta": { "http_code": 200 }, "response": { "access_token": "testac" } }""" def get_mocked_response(self): return MockedResponse(200, """ { "meta":{ "code":200, "response_time":{ "time":0.29, "measure":"seconds" }, "init_time":{ "time":0.011, "measure":"seconds" } }, "notifications":{ "type":"notifications", "unread_count":{ "comments":0, "toasts":0, "friends":0, "messages":0, "news":0 } }, "response":{ "user":{ "uid":123456, "id":123456, "user_name":"groovecoder", "first_name":"", "last_name":"", "user_avatar":"https:\\/\\/gravatar.com\\/avatar\\/ec25d046746de3be33779256f6957d8f?size=100&d=https%3A%2F%2Funtappd.akamaized.net%2Fsite%2Fassets%2Fimages%2Fdefault_avatar_v2.jpg%3Fv%3D1", "user_avatar_hd":"https:\\/\\/gravatar.com\\/avatar\\/ec25d046746de3be33779256f6957d8f?size=125&d=https%3A%2F%2Funtappd.akamaized.net%2Fsite%2Fassets%2Fimages%2Fdefault_avatar_v2.jpg%3Fv%3D1", "user_cover_photo":"https:\\/\\/untappd.akamaized.net\\/site\\/assets\\/v3\\/images\\/cover_default.jpg", "user_cover_photo_offset":0, "is_private":0, "location":"Testville", "url":"", "bio":"", "is_supporter":0, "relationship":"self", "untappd_url":"http:\\/\\/untappd.com\\/user\\/testuser", "account_type":"user", "stats":{ "total_badges":43, "total_friends":43, "total_checkins":73, "total_beers":61, "total_created_beers":1, "total_followings":9, "total_photos":31 }, "recent_brews":{}, "checkins":{}, "media":{}, "contact":{}, "date_joined":"Tue, 11 Dec 2012 14:27:53 +0000", "settings":{ "badge":{ "badges_to_facebook":1, "badges_to_twitter":1 }, "checkin":{ "checkin_to_facebook":0, "checkin_to_twitter":0, "checkin_to_foursquare":0 }, "navigation":{ "default_to_checkin":0 }, "email_address":"test@example.com" } } } } """) django-allauth-0.35.0/allauth/socialaccount/providers/untappd/urls.py0000644000076500000240000000025013117447116026762 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns from .provider import UntappdProvider urlpatterns = default_urlpatterns(UntappdProvider) django-allauth-0.35.0/allauth/socialaccount/providers/untappd/views.py0000644000076500000240000000322213117447116027134 0ustar pennersrstaff00000000000000import requests from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) from .client import UntappdOAuth2Client from .provider import UntappdProvider class UntappdOAuth2Adapter(OAuth2Adapter): provider_id = UntappdProvider.id access_token_url = 'https://untappd.com/oauth/authorize/' access_token_method = 'GET' authorize_url = 'https://untappd.com/oauth/authenticate/' user_info_url = 'https://api.untappd.com/v4/user/info/' supports_state = False def complete_login(self, request, app, token, **kwargs): resp = requests.get(self.user_info_url, params={'access_token': token.token}) extra_data = resp.json() # TODO: get and store the email from the user info json return self.get_provider().sociallogin_from_response(request, extra_data) class UntappdOAuth2CallbackView(OAuth2CallbackView): """ Custom OAuth2CallbackView to return UntappdOAuth2Client """ def get_client(self, request, app): client = super(UntappdOAuth2CallbackView, self).get_client(request, app) untappd_client = UntappdOAuth2Client( client.request, client.consumer_key, client.consumer_secret, client.access_token_method, client.access_token_url, client.callback_url, client.scope) return untappd_client oauth2_login = OAuth2LoginView.adapter_view(UntappdOAuth2Adapter) oauth2_callback = UntappdOAuth2CallbackView.adapter_view(UntappdOAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/providers/linkedin/0000755000076500000240000000000013235133533025544 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/linkedin/provider.py0000644000076500000240000000437613235130412027753 0ustar pennersrstaff00000000000000from allauth.socialaccount import app_settings from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth.provider import OAuthProvider class LinkedInAccount(ProviderAccount): def get_profile_url(self): return self.account.extra_data.get('public-profile-url') def get_avatar_url(self): # try to return the higher res picture-urls::(original) first try: if self.account.extra_data.get('picture-urls', {}).get( 'picture-url'): return self.account.extra_data.get('picture-urls', {}).get( 'picture-url') except Exception: # if we can't get higher res for any reason, we'll just return the # low res pass return self.account.extra_data.get('picture-url') def to_str(self): dflt = super(LinkedInAccount, self).to_str() name = self.account.extra_data.get('name', dflt) first_name = self.account.extra_data.get('first-name', None) last_name = self.account.extra_data.get('last-name', None) if first_name and last_name: name = first_name + ' ' + last_name return name class LinkedInProvider(OAuthProvider): id = 'linkedin' name = 'LinkedIn' account_class = LinkedInAccount def get_default_scope(self): scope = [] if app_settings.QUERY_EMAIL: scope.append('r_emailaddress') return scope def get_profile_fields(self): default_fields = ['id', 'first-name', 'last-name', 'email-address', 'picture-url', 'picture-urls::(original)', # picture-urls::(original) is higher res 'public-profile-url'] fields = self.get_settings().get('PROFILE_FIELDS', default_fields) return fields def extract_uid(self, data): return data['id'] def extract_common_fields(self, data): return dict(email=data.get('email-address'), first_name=data.get('first-name'), last_name=data.get('last-name')) provider_classes = [LinkedInProvider] django-allauth-0.35.0/allauth/socialaccount/providers/linkedin/__init__.py0000644000076500000240000000000012357313011027636 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/linkedin/tests.py0000644000076500000240000000147713235130412027262 0ustar pennersrstaff00000000000000# -*- coding: utf-8 -*- from __future__ import unicode_literals from allauth.socialaccount.tests import OAuthTestsMixin from allauth.tests import MockedResponse, TestCase from .provider import LinkedInProvider class LinkedInTests(OAuthTestsMixin, TestCase): provider_id = LinkedInProvider.id def get_mocked_response(self): return [MockedResponse(200, """ oKmTqN2ffc R@ymØnd Pènnèrs raymond.penners@example.com http://m.c.lnkd.licdn.com/mpr/mprx/0_e0hbvSLc8QWo3ggPeVKqvaFR860d342Pogq4vakwx8IJOyR1XJrwRmr5mIx9C0DxWpGMsW9Lb8EQ http://www.linkedin.com/in/intenct """)] django-allauth-0.35.0/allauth/socialaccount/providers/linkedin/urls.py0000644000076500000240000000025113117447115027104 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth.urls import default_urlpatterns from .provider import LinkedInProvider urlpatterns = default_urlpatterns(LinkedInProvider) django-allauth-0.35.0/allauth/socialaccount/providers/linkedin/views.py0000644000076500000240000000446113117447115027263 0ustar pennersrstaff00000000000000from xml.etree import ElementTree from xml.parsers.expat import ExpatError from django.utils import six from allauth.socialaccount import providers from allauth.socialaccount.providers.oauth.client import OAuth from allauth.socialaccount.providers.oauth.views import ( OAuthAdapter, OAuthCallbackView, OAuthLoginView, ) from .provider import LinkedInProvider class LinkedInAPI(OAuth): url = 'https://api.linkedin.com/v1/people/~' def get_user_info(self): fields = providers.registry \ .by_id(LinkedInProvider.id, self.request) \ .get_profile_fields() url = self.url + ':(%s)' % ','.join(fields) raw_xml = self.query(url) if not six.PY3: raw_xml = raw_xml.encode('utf8') try: return self.to_dict(ElementTree.fromstring(raw_xml)) except (ExpatError, KeyError, IndexError): return None def to_dict(self, xml): """ Convert XML structure to dict recursively, repeated keys entries are returned as in list containers. """ children = list(xml) if not children: return xml.text else: out = {} for node in list(xml): if node.tag in out: if not isinstance(out[node.tag], list): out[node.tag] = [out[node.tag]] out[node.tag].append(self.to_dict(node)) else: out[node.tag] = self.to_dict(node) return out class LinkedInOAuthAdapter(OAuthAdapter): provider_id = LinkedInProvider.id request_token_url = 'https://api.linkedin.com/uas/oauth/requestToken' access_token_url = 'https://api.linkedin.com/uas/oauth/accessToken' authorize_url = 'https://www.linkedin.com/uas/oauth/authenticate' def complete_login(self, request, app, token, response): client = LinkedInAPI(request, app.client_id, app.secret, self.request_token_url) extra_data = client.get_user_info() return self.get_provider().sociallogin_from_response(request, extra_data) oauth_login = OAuthLoginView.adapter_view(LinkedInOAuthAdapter) oauth_callback = OAuthCallbackView.adapter_view(LinkedInOAuthAdapter) django-allauth-0.35.0/allauth/socialaccount/providers/yahoo/0000755000076500000240000000000013235133533025066 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/yahoo/models.py0000644000076500000240000000003313235130412026710 0ustar pennersrstaff00000000000000# Create your models here. django-allauth-0.35.0/allauth/socialaccount/providers/yahoo/provider.py0000644000076500000240000000241413235130412027264 0ustar pennersrstaff00000000000000from __future__ import unicode_literals from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class YahooAccount(ProviderAccount): def to_str(self): name = '{0} {1}'.format( self.account.extra_data['profile'].get('givenName', ''), self.account.extra_data['profile'].get('familyName', '') ) if name.strip() != '': return name return super(YahooAccount, self).to_str() class YahooProvider(OAuth2Provider): id = str('yahoo') name = 'Yahoo' account_class = YahooAccount def get_default_scope(self): """ Doc on scopes available at https://developer.yahoo.com/oauth2/guide/yahoo_scopes/ """ return ['sdps-r'] def extract_uid(self, data): return str(data['profile']['guid']) def extract_common_fields(self, data): emails = data['profile'].get('emails') if emails: email = emails[0]['handle'] else: email = None return dict(email=email, last_name=data['profile'].get('familyName'), first_name=data['profile'].get('givenName')) provider_classes = [YahooProvider] django-allauth-0.35.0/allauth/socialaccount/providers/yahoo/__init__.py0000644000076500000240000000000013235130412027156 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/yahoo/tests.py0000644000076500000240000000567513235130412026610 0ustar pennersrstaff00000000000000from allauth.socialaccount.tests import OAuth2TestsMixin from allauth.tests import MockedResponse, TestCase from .provider import YahooProvider class YahooTests(OAuth2TestsMixin, TestCase): provider_id = YahooProvider.id def get_mocked_response(self): response_data = """ { "profile": { "guid": "HZP2G4VBSQBVATWWTNO3CRKVP8", "addresses": [ { "city": "Timbuktu", "country": "US", "current": true, "id": 1, "postalCode": "100013", "state": "New York", "street": "", "type": "HOME" }, { "city": "", "country": "US", "current": true, "id": 2, "postalCode": "", "state": "", "street": "", "type": "WORK" } ], "ageCategory": "A", "birthYear": 1982, "birthdate": "2/15", "created": "2017-09-09T13:45:29Z", "displayAge": 28, "emails": [ { "handle": "john.doe@yahoo.com", "id": 2, "primary": false, "type": "HOME" } ], "familyName": "Doe", "gender": "M", "givenName": "John", "image": { "height": 192, "imageUrl": "https://s.yimg.com/wm/modern/images/default_user_profile_pic_192.png", "size": "192x192", "width": 192 }, "ims": [ { "handle": "john.doe", "id": 1, "type": "YAHOO" } ], "intl": "us", "jurisdiction": "us", "lang": "en-US", "memberSince": "2000-08-18T12:28:31Z", "migrationSource": 1, "nickname": "john.doe", "notStored": true, "nux": "0", "profileMode": "PUBLIC", "profileStatus": "ACTIVE", "profileUrl": "http://profile.yahoo.com/HZP2G4VBSQBVATWWTNO3CRKVP8", "timeZone": "Asia/Calcutta", "isConnected": true, "profileHidden": false, "profilePermission": "PRIVATE", "uri": "https://social.yahooapis.com/v1/user/HZP2G4VBSQBVATWWTNO3CRKVP8/profile" } } """ # noqa return MockedResponse(200, response_data) django-allauth-0.35.0/allauth/socialaccount/providers/yahoo/urls.py0000644000076500000240000000024413235130412026416 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns from .provider import YahooProvider urlpatterns = default_urlpatterns(YahooProvider) django-allauth-0.35.0/allauth/socialaccount/providers/yahoo/views.py0000644000076500000240000000200213235130412026560 0ustar pennersrstaff00000000000000from __future__ import unicode_literals import requests from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) from .provider import YahooProvider class YahooOAuth2Adapter(OAuth2Adapter): provider_id = YahooProvider.id access_token_url = 'https://api.login.yahoo.com/oauth2/get_token' authorize_url = 'https://api.login.yahoo.com/oauth2/request_auth' profile_url = 'https://social.yahooapis.com/v1/user/me/profile?format=json' def complete_login(self, request, app, token, **kwargs): headers = {'Authorization': 'Bearer {0}'.format(token.token)} resp = requests.get(self.profile_url, headers=headers) extra_data = resp.json() return self.get_provider().sociallogin_from_response(request, extra_data) oauth2_login = OAuth2LoginView.adapter_view(YahooOAuth2Adapter) oauth2_callback = OAuth2CallbackView.adapter_view(YahooOAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/providers/kakao/0000755000076500000240000000000013235133533025035 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/kakao/models.py0000644000076500000240000000000013117447115026663 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/kakao/provider.py0000644000076500000240000000236013117447115027245 0ustar pennersrstaff00000000000000from allauth.account.models import EmailAddress from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class KakaoAccount(ProviderAccount): @property def properties(self): return self.account.extra_data['properties'] def get_avatar_url(self): return self.properties['profile_image'] def to_str(self): dflt = super(KakaoAccount, self).to_str() return self.properties['nickname'] or dflt class KakaoProvider(OAuth2Provider): id = 'kakao' name = 'Kakao' account_class = KakaoAccount def extract_uid(self, data): return str(data['id']) def extract_common_fields(self, data): email = data.get("kaccount_email") return dict(email=email) def extract_email_addresses(self, data): ret = [] email = data.get("kaccount_email") verified = data.get("kaccount_email_verified") # data["kaccount_email_verified"] imply the email address is # verified ret.append(EmailAddress(email=email, verified=verified, primary=True)) return ret provider_classes = [KakaoProvider] django-allauth-0.35.0/allauth/socialaccount/providers/kakao/__init__.py0000644000076500000240000000000013051411266027132 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/kakao/tests.py0000644000076500000240000000121113235130412026535 0ustar pennersrstaff00000000000000from allauth.socialaccount.tests import OAuth2TestsMixin from allauth.tests import MockedResponse, TestCase from .provider import KakaoProvider class KakaoTests(OAuth2TestsMixin, TestCase): provider_id = KakaoProvider.id def get_mocked_response(self): return MockedResponse(200, """ {"id": 233652912, "kaccount_email": "insanejflow@example.com", "kaccount_email_verified": true, "properties": { "thumbnail_image": "http://mud-kage.kakao.co.kr/14/dn/btqegghHRjx/DbvFZTjNnQpsI8S6hh1cxK/o.jpg", "profile_image": "http://mud-kage.kakao.co.kr/14/dn/btqedGORigT/1TwogEZOBWnNkXolo5yVs1/o.jpg", "nickname": "\uc548\uc8fc\uc740" } } """) django-allauth-0.35.0/allauth/socialaccount/providers/kakao/urls.py0000644000076500000240000000024413117447115026377 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns from .provider import KakaoProvider urlpatterns = default_urlpatterns(KakaoProvider) django-allauth-0.35.0/allauth/socialaccount/providers/kakao/views.py0000644000076500000240000000165513235130412026544 0ustar pennersrstaff00000000000000import requests from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) from .provider import KakaoProvider class KakaoOAuth2Adapter(OAuth2Adapter): provider_id = KakaoProvider.id access_token_url = 'https://kauth.kakao.com/oauth/token' authorize_url = 'https://kauth.kakao.com/oauth/authorize' profile_url = 'https://kapi.kakao.com/v1/user/me' def complete_login(self, request, app, token, **kwargs): headers = {'Authorization': 'Bearer {0}'.format(token.token)} resp = requests.get(self.profile_url, headers=headers) extra_data = resp.json() return self.get_provider().sociallogin_from_response(request, extra_data) oauth2_login = OAuth2LoginView.adapter_view(KakaoOAuth2Adapter) oauth2_callback = OAuth2CallbackView.adapter_view(KakaoOAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/providers/stripe/0000755000076500000240000000000013235133533025255 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/stripe/provider.py0000644000076500000240000000134213235130412027452 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.base import ProviderAccount from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider class StripeAccount(ProviderAccount): def to_str(self): default = super(StripeAccount, self).to_str() return self.account.extra_data.get('business_name', default) class StripeProvider(OAuth2Provider): id = 'stripe' name = 'Stripe' account_class = StripeAccount def extract_uid(self, data): return data['id'] def extract_common_fields(self, data): return dict(name=data.get('display_name'), email=data.get('email')) def get_default_scope(self): return ['read_only'] provider_classes = [StripeProvider] django-allauth-0.35.0/allauth/socialaccount/providers/stripe/__init__.py0000644000076500000240000000000012671004326027354 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/socialaccount/providers/stripe/tests.py0000644000076500000240000000304413235130412026763 0ustar pennersrstaff00000000000000# -*- coding: utf-8 -*- from __future__ import unicode_literals from allauth.socialaccount.tests import OAuth2TestsMixin from allauth.tests import MockedResponse, TestCase from .provider import StripeProvider class StripeTests(OAuth2TestsMixin, TestCase): provider_id = StripeProvider.id def get_mocked_response(self): return MockedResponse(200, """{ "id": "acct_sometestid", "object": "account", "business_logo": null, "business_name": null, "business_url": "example.com", "charges_enabled": true, "country": "SE", "currencies_supported": [ "usd", "eur", "sek" ], "default_currency": "eur", "details_submitted": true, "display_name": "Test", "email": "test@example.com", "managed": false, "metadata": {}, "statement_descriptor": "TEST.COM", "support_phone": "+460123456789", "timezone": "Europe/Stockholm", "transfers_enabled": true }""") def get_login_response_json(self, with_refresh_token=True): rt = '' if with_refresh_token: rt = ',"refresh_token": "testrf"' return """{ "uid":"weibo", "access_token":"testac", "livemode": false, "token_type": "bearer", "stripe_publishable_key": "pk_test_someteskey", "stripe_user_id": "acct_sometestid", "scope": "read_write" %s }""" % rt django-allauth-0.35.0/allauth/socialaccount/providers/stripe/urls.py0000644000076500000240000000024613117447115026621 0ustar pennersrstaff00000000000000from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns from .provider import StripeProvider urlpatterns = default_urlpatterns(StripeProvider) django-allauth-0.35.0/allauth/socialaccount/providers/stripe/views.py0000644000076500000240000000200313117447115026762 0ustar pennersrstaff00000000000000import requests from allauth.socialaccount.providers.oauth2.views import ( OAuth2Adapter, OAuth2CallbackView, OAuth2LoginView, ) from .provider import StripeProvider class StripeOAuth2Adapter(OAuth2Adapter): provider_id = StripeProvider.id access_token_url = 'https://connect.stripe.com/oauth/token' authorize_url = 'https://connect.stripe.com/oauth/authorize' profile_url = 'https://api.stripe.com/v1/accounts/%s' def complete_login(self, request, app, token, response, **kwargs): headers = {'Authorization': 'Bearer {0}'.format(token.token)} resp = requests.get(self.profile_url % response.get('stripe_user_id'), headers=headers) extra_data = resp.json() return self.get_provider().sociallogin_from_response(request, extra_data) oauth2_login = OAuth2LoginView.adapter_view(StripeOAuth2Adapter) oauth2_callback = OAuth2CallbackView.adapter_view(StripeOAuth2Adapter) django-allauth-0.35.0/allauth/socialaccount/__init__.py0000644000076500000240000000010613055274502024042 0ustar pennersrstaff00000000000000default_app_config = 'allauth.socialaccount.apps.SocialAccountConfig' django-allauth-0.35.0/allauth/socialaccount/apps.py0000644000076500000240000000031513117447114023250 0ustar pennersrstaff00000000000000from django.apps import AppConfig from django.utils.translation import ugettext_lazy as _ class SocialAccountConfig(AppConfig): name = 'allauth.socialaccount' verbose_name = _('Social Accounts') django-allauth-0.35.0/allauth/socialaccount/forms.py0000644000076500000240000000441113117447114023434 0ustar pennersrstaff00000000000000from __future__ import absolute_import from django import forms from allauth.account.forms import BaseSignupForm from . import app_settings, signals from .adapter import get_adapter from .models import SocialAccount class SignupForm(BaseSignupForm): def __init__(self, *args, **kwargs): self.sociallogin = kwargs.pop('sociallogin') initial = get_adapter().get_signup_form_initial_data( self.sociallogin) kwargs.update({ 'initial': initial, 'email_required': kwargs.get('email_required', app_settings.EMAIL_REQUIRED)}) super(SignupForm, self).__init__(*args, **kwargs) def save(self, request): adapter = get_adapter(request) user = adapter.save_user(request, self.sociallogin, form=self) self.custom_signup(request, user) return user def validate_unique_email(self, value): try: return super(SignupForm, self).validate_unique_email(value) except forms.ValidationError: raise forms.ValidationError( get_adapter().error_messages['email_taken'] % self.sociallogin.account.get_provider().name) class DisconnectForm(forms.Form): account = forms.ModelChoiceField(queryset=SocialAccount.objects.none(), widget=forms.RadioSelect, required=True) def __init__(self, *args, **kwargs): self.request = kwargs.pop('request') self.accounts = SocialAccount.objects.filter(user=self.request.user) super(DisconnectForm, self).__init__(*args, **kwargs) self.fields['account'].queryset = self.accounts def clean(self): cleaned_data = super(DisconnectForm, self).clean() account = cleaned_data.get('account') if account: get_adapter(self.request).validate_disconnect( account, self.accounts) return cleaned_data def save(self): account = self.cleaned_data['account'] account.delete() signals.social_account_removed.send(sender=SocialAccount, request=self.request, socialaccount=account) django-allauth-0.35.0/allauth/socialaccount/admin.py0000644000076500000240000000305413235130412023367 0ustar pennersrstaff00000000000000from django import forms from django.contrib import admin from allauth.account.adapter import get_adapter from .models import SocialAccount, SocialApp, SocialToken class SocialAppForm(forms.ModelForm): class Meta: model = SocialApp exclude = [] widgets = { 'client_id': forms.TextInput(attrs={'size': '100'}), 'key': forms.TextInput(attrs={'size': '100'}), 'secret': forms.TextInput(attrs={'size': '100'}) } class SocialAppAdmin(admin.ModelAdmin): form = SocialAppForm list_display = ('name', 'provider',) filter_horizontal = ('sites',) class SocialAccountAdmin(admin.ModelAdmin): search_fields = [] raw_id_fields = ('user',) list_display = ('user', 'uid', 'provider') list_filter = ('provider',) def get_search_fields(self, request): base_fields = get_adapter().get_user_search_fields() return list(map(lambda a: 'user__' + a, base_fields)) class SocialTokenAdmin(admin.ModelAdmin): raw_id_fields = ('app', 'account',) list_display = ('app', 'account', 'truncated_token', 'expires_at') list_filter = ('app', 'app__provider', 'expires_at') def truncated_token(self, token): max_chars = 40 ret = token.token if len(ret) > max_chars: ret = ret[0:max_chars] + '...(truncated)' return ret truncated_token.short_description = 'Token' admin.site.register(SocialApp, SocialAppAdmin) admin.site.register(SocialToken, SocialTokenAdmin) admin.site.register(SocialAccount, SocialAccountAdmin) django-allauth-0.35.0/allauth/socialaccount/tests.py0000644000076500000240000005440613235130412023450 0ustar pennersrstaff00000000000000import json import random import warnings from django.conf import settings from django.contrib.auth.models import AnonymousUser from django.contrib.messages.middleware import MessageMiddleware from django.contrib.sessions.middleware import SessionMiddleware from django.contrib.sites.models import Site from django.test.client import RequestFactory from django.test.utils import override_settings from django.urls import reverse from . import providers from ..account import app_settings as account_settings from ..account.models import EmailAddress from ..account.utils import user_email, user_username from ..compat import parse_qs, urlparse from ..tests import MockedResponse, TestCase, mocked_response from ..utils import get_user_model from .helpers import complete_social_login from .models import SocialAccount, SocialApp, SocialLogin from .views import signup class OAuthTestsMixin(object): provider_id = None def get_mocked_response(self): pass def setUp(self): super(OAuthTestsMixin, self).setUp() self.provider = providers.registry.by_id(self.provider_id) app = SocialApp.objects.create( provider=self.provider.id, name=self.provider.id, client_id='app123id', key=self.provider.id, secret='dummy') app.sites.add(Site.objects.get_current()) @override_settings(SOCIALACCOUNT_AUTO_SIGNUP=False) def test_login(self): resp_mocks = self.get_mocked_response() if resp_mocks is None: warnings.warn("Cannot test provider %s, no oauth mock" % self.provider.id) return resp = self.login(resp_mocks) self.assertRedirects(resp, reverse('socialaccount_signup')) resp = self.client.get(reverse('socialaccount_signup')) sociallogin = resp.context['form'].sociallogin data = dict(email=user_email(sociallogin.user), username=str(random.randrange(1000, 10000000))) resp = self.client.post(reverse('socialaccount_signup'), data=data) self.assertRedirects( resp, "/accounts/profile/", fetch_redirect_response=False ) user = resp.context['user'] self.assertFalse(user.has_usable_password()) account = SocialAccount.objects.get( user=user, provider=self.provider.id) # The following lines don't actually test that much, but at least # we make sure that the code is hit. provider_account = account.get_provider_account() provider_account.get_avatar_url() provider_account.get_profile_url() provider_account.get_brand() provider_account.to_str() return account @override_settings(SOCIALACCOUNT_AUTO_SIGNUP=True, SOCIALACCOUNT_EMAIL_REQUIRED=False, ACCOUNT_EMAIL_REQUIRED=False) def test_auto_signup(self): resp_mocks = self.get_mocked_response() if not resp_mocks: warnings.warn("Cannot test provider %s, no oauth mock" % self.provider.id) return resp = self.login(resp_mocks) self.assertRedirects( resp, "/accounts/profile/", fetch_redirect_response=False ) self.assertFalse(resp.context['user'].has_usable_password()) def login(self, resp_mocks, process='login'): with mocked_response(MockedResponse(200, 'oauth_token=token&' 'oauth_token_secret=psst', {'content-type': 'text/html'})): resp = self.client.get(reverse(self.provider.id + '_login'), dict(process=process)) p = urlparse(resp['location']) q = parse_qs(p.query) complete_url = reverse(self.provider.id + '_callback') self.assertGreater(q['oauth_callback'][0] .find(complete_url), 0) with mocked_response(self.get_access_token_response(), *resp_mocks): resp = self.client.get(complete_url) return resp def get_access_token_response(self): return MockedResponse( 200, 'oauth_token=token&oauth_token_secret=psst', {'content-type': 'text/html'}) def test_authentication_error(self): resp = self.client.get(reverse(self.provider.id + '_callback')) self.assertTemplateUsed( resp, 'socialaccount/authentication_error.%s' % getattr( settings, 'ACCOUNT_TEMPLATE_EXTENSION', 'html')) # For backward-compatibility with third-party provider tests that call # create_oauth_tests() rather than using the mixin directly. def create_oauth_tests(provider): class Class(OAuthTestsMixin, TestCase): provider_id = provider.id Class.__name__ = 'OAuthTests_' + provider.id return Class class OAuth2TestsMixin(object): provider_id = None def get_mocked_response(self): pass def get_login_response_json(self, with_refresh_token=True): rt = '' if with_refresh_token: rt = ',"refresh_token": "testrf"' return """{ "uid":"weibo", "access_token":"testac" %s }""" % rt def setUp(self): super(OAuth2TestsMixin, self).setUp() self.provider = providers.registry.by_id(self.provider_id) app = SocialApp.objects.create(provider=self.provider.id, name=self.provider.id, client_id='app123id', key=self.provider.id, secret='dummy') app.sites.add(Site.objects.get_current()) @override_settings(SOCIALACCOUNT_AUTO_SIGNUP=False) def test_login(self): resp_mock = self.get_mocked_response() if not resp_mock: warnings.warn("Cannot test provider %s, no oauth mock" % self.provider.id) return resp = self.login(resp_mock,) self.assertRedirects(resp, reverse('socialaccount_signup')) def test_account_tokens(self, multiple_login=False): email = "user@example.com" user = get_user_model()(is_active=True) user_email(user, email) user_username(user, 'user') user.set_password('test') user.save() EmailAddress.objects.create(user=user, email=email, primary=True, verified=True) self.client.login(username=user.username, password='test') self.login(self.get_mocked_response(), process='connect') if multiple_login: self.login( self.get_mocked_response(), with_refresh_token=False, process='connect') # get account sa = SocialAccount.objects.filter(user=user, provider=self.provider.id).get() # The following lines don't actually test that much, but at least # we make sure that the code is hit. provider_account = sa.get_provider_account() provider_account.get_avatar_url() provider_account.get_profile_url() provider_account.get_brand() provider_account.to_str() # get token t = sa.socialtoken_set.get() # verify access_token and refresh_token self.assertEqual('testac', t.token) self.assertEqual(t.token_secret, json.loads(self.get_login_response_json( with_refresh_token=True)).get( 'refresh_token', '')) def test_account_refresh_token_saved_next_login(self): """ fails if a login missing a refresh token, deletes the previously saved refresh token. Systems such as google's oauth only send a refresh token on first login. """ self.test_account_tokens(multiple_login=True) def login(self, resp_mock, process='login', with_refresh_token=True): resp = self.client.get(reverse(self.provider.id + '_login'), dict(process=process)) p = urlparse(resp['location']) q = parse_qs(p.query) complete_url = reverse(self.provider.id + '_callback') self.assertGreater(q['redirect_uri'][0] .find(complete_url), 0) response_json = self \ .get_login_response_json(with_refresh_token=with_refresh_token) with mocked_response( MockedResponse( 200, response_json, {'content-type': 'application/json'}), resp_mock): resp = self.client.get(complete_url, {'code': 'test', 'state': q['state'][0]}) return resp def test_authentication_error(self): resp = self.client.get(reverse(self.provider.id + '_callback')) self.assertTemplateUsed( resp, 'socialaccount/authentication_error.%s' % getattr( settings, 'ACCOUNT_TEMPLATE_EXTENSION', 'html')) # For backward-compatibility with third-party provider tests that call # create_oauth2_tests() rather than using the mixin directly. def create_oauth2_tests(provider): class Class(OAuth2TestsMixin, TestCase): provider_id = provider.id Class.__name__ = 'OAuth2Tests_' + provider.id return Class class SocialAccountTests(TestCase): def setUp(self): super(SocialAccountTests, self).setUp() site = Site.objects.get_current() for provider in providers.registry.get_list(): app = SocialApp.objects.create( provider=provider.id, name=provider.id, client_id='app123id', key='123', secret='dummy') app.sites.add(site) @override_settings( SOCIALACCOUNT_AUTO_SIGNUP=True, ACCOUNT_SIGNUP_FORM_CLASS=None, ACCOUNT_EMAIL_VERIFICATION=account_settings.EmailVerificationMethod.NONE # noqa ) def test_email_address_created(self): factory = RequestFactory() request = factory.get('/accounts/login/callback/') request.user = AnonymousUser() SessionMiddleware().process_request(request) MessageMiddleware().process_request(request) User = get_user_model() user = User() setattr(user, account_settings.USER_MODEL_USERNAME_FIELD, 'test') setattr( user, account_settings.USER_MODEL_EMAIL_FIELD, "test@example.com" ) account = SocialAccount(provider='openid', uid='123') sociallogin = SocialLogin(user=user, account=account) complete_social_login(request, sociallogin) user = User.objects.get( **{account_settings.USER_MODEL_USERNAME_FIELD: 'test'} ) self.assertTrue( SocialAccount.objects.filter(user=user, uid=account.uid).exists() ) self.assertTrue( EmailAddress.objects.filter(user=user, email=user_email(user)).exists() ) @override_settings( ACCOUNT_EMAIL_REQUIRED=True, ACCOUNT_UNIQUE_EMAIL=True, ACCOUNT_USERNAME_REQUIRED=True, ACCOUNT_AUTHENTICATION_METHOD='email', SOCIALACCOUNT_AUTO_SIGNUP=True) def test_email_address_clash_username_required(self): """Test clash on both username and email""" request, resp = self._email_address_clash( 'test', 'test@example.com') self.assertEqual( resp['location'], reverse('socialaccount_signup')) # POST different username/email to social signup form request.method = 'POST' request.POST = { 'username': 'other', 'email': 'other@example.com'} resp = signup(request) self.assertEqual( resp['location'], '/accounts/profile/') user = get_user_model().objects.get( **{account_settings.USER_MODEL_EMAIL_FIELD: 'other@example.com'}) self.assertEqual(user_username(user), 'other') @override_settings( ACCOUNT_EMAIL_REQUIRED=True, ACCOUNT_UNIQUE_EMAIL=True, ACCOUNT_USERNAME_REQUIRED=False, ACCOUNT_AUTHENTICATION_METHOD='email', SOCIALACCOUNT_AUTO_SIGNUP=True) def test_email_address_clash_username_not_required(self): """Test clash while username is not required""" request, resp = self._email_address_clash( 'test', 'test@example.com') self.assertEqual( resp['location'], reverse('socialaccount_signup')) # POST email to social signup form (username not present) request.method = 'POST' request.POST = { 'email': 'other@example.com'} resp = signup(request) self.assertEqual( resp['location'], '/accounts/profile/') user = get_user_model().objects.get( **{account_settings.USER_MODEL_EMAIL_FIELD: 'other@example.com'}) self.assertNotEqual(user_username(user), 'test') @override_settings( ACCOUNT_EMAIL_REQUIRED=True, ACCOUNT_UNIQUE_EMAIL=True, ACCOUNT_USERNAME_REQUIRED=False, ACCOUNT_AUTHENTICATION_METHOD='email', SOCIALACCOUNT_AUTO_SIGNUP=True) def test_email_address_clash_username_auto_signup(self): # Clash on username, but auto signup still works request, resp = self._email_address_clash('test', 'other@example.com') self.assertEqual( resp['location'], '/accounts/profile/') user = get_user_model().objects.get( **{account_settings.USER_MODEL_EMAIL_FIELD: 'other@example.com'}) self.assertNotEqual(user_username(user), 'test') @override_settings( ACCOUNT_EMAIL_REQUIRED=True, ACCOUNT_USERNAME_BLACKLIST=['username', 'username1', 'username2'], ACCOUNT_UNIQUE_EMAIL=True, ACCOUNT_USERNAME_REQUIRED=True, ACCOUNT_AUTHENTICATION_METHOD='email', SOCIALACCOUNT_AUTO_SIGNUP=True) def test_populate_username_in_blacklist(self): factory = RequestFactory() request = factory.get('/accounts/twitter/login/callback/') request.user = AnonymousUser() SessionMiddleware().process_request(request) MessageMiddleware().process_request(request) User = get_user_model() user = User() setattr(user, account_settings.USER_MODEL_USERNAME_FIELD, 'username') setattr(user, account_settings.USER_MODEL_EMAIL_FIELD, 'username@example.com') account = SocialAccount(provider='twitter', uid='123') sociallogin = SocialLogin(user=user, account=account) complete_social_login(request, sociallogin) self.assertNotIn(request.user.username, account_settings.USERNAME_BLACKLIST) def _email_address_clash(self, username, email): User = get_user_model() # Some existig user exi_user = User() user_username(exi_user, 'test') user_email(exi_user, 'test@example.com') exi_user.save() # A social user being signed up... account = SocialAccount( provider='twitter', uid='123') user = User() user_username(user, username) user_email(user, email) sociallogin = SocialLogin(user=user, account=account) # Signing up, should pop up the social signup form factory = RequestFactory() request = factory.get('/accounts/twitter/login/callback/') request.user = AnonymousUser() SessionMiddleware().process_request(request) MessageMiddleware().process_request(request) resp = complete_social_login(request, sociallogin) return request, resp def test_disconnect(self): User = get_user_model() # Some existig user user = User() user_username(user, 'test') user_email(user, 'test@example.com') user.set_password('test') user.save() account = SocialAccount.objects.create( uid='123', provider='twitter', user=user) self.client.login( username=user.username, password=user.username) resp = self.client.get(reverse('socialaccount_connections')) self.assertTemplateUsed(resp, 'socialaccount/connections.html') resp = self.client.post( reverse('socialaccount_connections'), {'account': account.pk}) self.assertFalse( SocialAccount.objects.filter(pk=account.pk).exists()) @override_settings( ACCOUNT_EMAIL_REQUIRED=True, ACCOUNT_EMAIL_VERIFICATION='mandatory', ACCOUNT_UNIQUE_EMAIL=True, ACCOUNT_USERNAME_REQUIRED=False, ACCOUNT_AUTHENTICATION_METHOD='email', SOCIALACCOUNT_AUTO_SIGNUP=False) def test_verified_email_change_at_signup(self): """ Test scenario for when the user changes email at social signup. Current behavior is that both the unverified and verified email are added, and that the user is allowed to pass because he did provide a verified one. """ session = self.client.session User = get_user_model() sociallogin = SocialLogin( user=User(email="verified@example.com"), account=SocialAccount( provider='google' ), email_addresses=[ EmailAddress( email="verified@example.com", verified=True, primary=True)]) session['socialaccount_sociallogin'] = sociallogin.serialize() session.save() resp = self.client.get(reverse('socialaccount_signup')) form = resp.context['form'] self.assertEqual(form["email"].value(), "verified@example.com") resp = self.client.post( reverse('socialaccount_signup'), data={'email': "unverified@example.org"}) self.assertRedirects( resp, '/accounts/profile/', fetch_redirect_response=False) user = User.objects.all()[0] self.assertEqual(user_email(user), "verified@example.com") self.assertTrue( EmailAddress.objects.filter( user=user, email="verified@example.com", verified=True, primary=True ).exists()) self.assertTrue( EmailAddress.objects.filter( user=user, email="unverified@example.org", verified=False, primary=False ).exists()) @override_settings( ACCOUNT_EMAIL_REQUIRED=True, ACCOUNT_EMAIL_VERIFICATION='mandatory', ACCOUNT_UNIQUE_EMAIL=True, ACCOUNT_USERNAME_REQUIRED=False, ACCOUNT_AUTHENTICATION_METHOD='email', SOCIALACCOUNT_AUTO_SIGNUP=False) def test_unverified_email_change_at_signup(self): """ Test scenario for when the user changes email at social signup, while his provider did not provide a verified email. In that case, email verification will kick in. Here, both email addresses are added as well. """ session = self.client.session User = get_user_model() sociallogin = SocialLogin( user=User(email="unverified@example.com"), account=SocialAccount( provider='google' ), email_addresses=[ EmailAddress( email="unverified@example.com", verified=False, primary=True)]) session['socialaccount_sociallogin'] = sociallogin.serialize() session.save() resp = self.client.get(reverse('socialaccount_signup')) form = resp.context['form'] self.assertEqual(form["email"].value(), "unverified@example.com") resp = self.client.post( reverse('socialaccount_signup'), data={'email': "unverified@example.org"}) self.assertRedirects(resp, reverse('account_email_verification_sent')) user = User.objects.all()[0] self.assertEqual(user_email(user), "unverified@example.org") self.assertTrue( EmailAddress.objects.filter( user=user, email="unverified@example.com", verified=False, primary=False ).exists()) self.assertTrue( EmailAddress.objects.filter( user=user, email="unverified@example.org", verified=False, primary=True ).exists()) @override_settings( ACCOUNT_EMAIL_REQUIRED=True, ACCOUNT_EMAIL_VERIFICATION='mandatory', ACCOUNT_UNIQUE_EMAIL=True, ACCOUNT_USERNAME_REQUIRED=False, ACCOUNT_AUTHENTICATION_METHOD='email', SOCIALACCOUNT_AUTO_SIGNUP=False) def test_unique_email_validation_signup(self): session = self.client.session User = get_user_model() User.objects.create(email="me@example.com") sociallogin = SocialLogin( user=User(email="me@example.com"), account=SocialAccount( provider='google' ), email_addresses=[ EmailAddress( email="me@example.com", verified=True, primary=True)]) session['socialaccount_sociallogin'] = sociallogin.serialize() session.save() resp = self.client.get(reverse('socialaccount_signup')) form = resp.context['form'] self.assertEqual(form['email'].value(), "me@example.com") resp = self.client.post( reverse('socialaccount_signup'), data={'email': "me@example.com"}) self.assertFormError( resp, 'form', 'email', 'An account already exists with this e-mail address.' ' Please sign in to that account first, then connect' ' your Google account.') django-allauth-0.35.0/allauth/socialaccount/urls.py0000644000076500000240000000063213117447116023276 0ustar pennersrstaff00000000000000from django.conf.urls import url from . import views urlpatterns = [ url(r'^login/cancelled/$', views.login_cancelled, name='socialaccount_login_cancelled'), url(r'^login/error/$', views.login_error, name='socialaccount_login_error'), url(r'^signup/$', views.signup, name='socialaccount_signup'), url(r'^connections/$', views.connections, name='socialaccount_connections') ] django-allauth-0.35.0/allauth/socialaccount/helpers.py0000644000076500000240000001624313235130412023745 0ustar pennersrstaff00000000000000from django.contrib import messages from django.forms import ValidationError from django.http import HttpResponseRedirect from django.shortcuts import render from django.urls import reverse from allauth.account import app_settings as account_settings from allauth.account.adapter import get_adapter as get_account_adapter from allauth.account.utils import complete_signup, perform_login, user_username from allauth.exceptions import ImmediateHttpResponse from . import app_settings, signals from .adapter import get_adapter from .models import SocialLogin from .providers.base import AuthError, AuthProcess def _process_signup(request, sociallogin): auto_signup = get_adapter(request).is_auto_signup_allowed( request, sociallogin) if not auto_signup: request.session['socialaccount_sociallogin'] = sociallogin.serialize() url = reverse('socialaccount_signup') ret = HttpResponseRedirect(url) else: # Ok, auto signup it is, at least the e-mail address is ok. # We still need to check the username though... if account_settings.USER_MODEL_USERNAME_FIELD: username = user_username(sociallogin.user) try: get_account_adapter(request).clean_username(username) except ValidationError: # This username is no good ... user_username(sociallogin.user, '') # FIXME: This part contains a lot of duplication of logic # ("closed" rendering, create user, send email, in active # etc..) if not get_adapter(request).is_open_for_signup( request, sociallogin): return render( request, "account/signup_closed." + account_settings.TEMPLATE_EXTENSION) get_adapter(request).save_user(request, sociallogin, form=None) ret = complete_social_signup(request, sociallogin) return ret def _login_social_account(request, sociallogin): return perform_login(request, sociallogin.user, email_verification=app_settings.EMAIL_VERIFICATION, redirect_url=sociallogin.get_redirect_url(request), signal_kwargs={"sociallogin": sociallogin}) def render_authentication_error(request, provider_id, error=AuthError.UNKNOWN, exception=None, extra_context=None): try: if extra_context is None: extra_context = {} get_adapter(request).authentication_error( request, provider_id, error=error, exception=exception, extra_context=extra_context) except ImmediateHttpResponse as e: return e.response if error == AuthError.CANCELLED: return HttpResponseRedirect(reverse('socialaccount_login_cancelled')) context = { 'auth_error': { 'provider': provider_id, 'code': error, 'exception': exception } } context.update(extra_context) return render( request, "socialaccount/authentication_error." + account_settings.TEMPLATE_EXTENSION, context ) def _add_social_account(request, sociallogin): if request.user.is_anonymous: # This should not happen. Simply redirect to the connections # view (which has a login required) return HttpResponseRedirect(reverse('socialaccount_connections')) level = messages.INFO message = 'socialaccount/messages/account_connected.txt' action = None if sociallogin.is_existing: if sociallogin.user != request.user: # Social account of other user. For now, this scenario # is not supported. Issue is that one cannot simply # remove the social account from the other user, as # that may render the account unusable. level = messages.ERROR message = 'socialaccount/messages/account_connected_other.txt' else: # This account is already connected -- we give the opportunity # for customized behaviour through use of a signal. If not # implemented, we render the standard "account connected" # message without actually doing anything. action = 'updated' signals.social_account_updated.send( sender=SocialLogin, request=request, sociallogin=sociallogin) else: # New account, let's connect action = 'added' sociallogin.connect(request, request.user) signals.social_account_added.send(sender=SocialLogin, request=request, sociallogin=sociallogin) default_next = get_adapter(request).get_connect_redirect_url( request, sociallogin.account) next_url = sociallogin.get_redirect_url(request) or default_next get_account_adapter(request).add_message( request, level, message, message_context={ 'sociallogin': sociallogin, 'action': action } ) return HttpResponseRedirect(next_url) def complete_social_login(request, sociallogin): assert not sociallogin.is_existing sociallogin.lookup() try: get_adapter(request).pre_social_login(request, sociallogin) signals.pre_social_login.send(sender=SocialLogin, request=request, sociallogin=sociallogin) process = sociallogin.state.get('process') if process == AuthProcess.REDIRECT: return _social_login_redirect(request, sociallogin) elif process == AuthProcess.CONNECT: return _add_social_account(request, sociallogin) else: return _complete_social_login(request, sociallogin) except ImmediateHttpResponse as e: return e.response def _social_login_redirect(request, sociallogin): next_url = sociallogin.get_redirect_url(request) or '/' return HttpResponseRedirect(next_url) def _complete_social_login(request, sociallogin): if request.user.is_authenticated: get_account_adapter(request).logout(request) if sociallogin.is_existing: # Login existing user ret = _login_social_account(request, sociallogin) signals.social_account_updated.send( sender=SocialLogin, request=request, sociallogin=sociallogin) else: # New social user ret = _process_signup(request, sociallogin) return ret def complete_social_signup(request, sociallogin): return complete_signup(request, sociallogin.user, app_settings.EMAIL_VERIFICATION, sociallogin.get_redirect_url(request), signal_kwargs={'sociallogin': sociallogin}) # TODO: Factor out callable importing functionality # See: account.utils.user_display def import_path(path): modname, _, attr = path.rpartition('.') m = __import__(modname, fromlist=[attr]) return getattr(m, attr) django-allauth-0.35.0/allauth/socialaccount/views.py0000644000076500000240000001032513235130412023433 0ustar pennersrstaff00000000000000from django.contrib import messages from django.contrib.auth.decorators import login_required from django.contrib.sites.shortcuts import get_current_site from django.http import HttpResponseRedirect from django.urls import reverse, reverse_lazy from django.views.generic.base import TemplateView from django.views.generic.edit import FormView from . import app_settings, helpers from ..account import app_settings as account_settings from ..account.adapter import get_adapter as get_account_adapter from ..account.views import ( AjaxCapableProcessFormViewMixin, CloseableSignupMixin, RedirectAuthenticatedUserMixin, ) from ..utils import get_form_class from .adapter import get_adapter from .forms import DisconnectForm, SignupForm from .models import SocialAccount, SocialLogin class SignupView(RedirectAuthenticatedUserMixin, CloseableSignupMixin, AjaxCapableProcessFormViewMixin, FormView): form_class = SignupForm template_name = ( 'socialaccount/signup.' + account_settings.TEMPLATE_EXTENSION) def get_form_class(self): return get_form_class(app_settings.FORMS, 'signup', self.form_class) def dispatch(self, request, *args, **kwargs): self.sociallogin = None data = request.session.get('socialaccount_sociallogin') if data: self.sociallogin = SocialLogin.deserialize(data) if not self.sociallogin: return HttpResponseRedirect(reverse('account_login')) return super(SignupView, self).dispatch(request, *args, **kwargs) def is_open(self): return get_adapter(self.request).is_open_for_signup( self.request, self.sociallogin) def get_form_kwargs(self): ret = super(SignupView, self).get_form_kwargs() ret['sociallogin'] = self.sociallogin return ret def form_valid(self, form): form.save(self.request) return helpers.complete_social_signup(self.request, self.sociallogin) def get_context_data(self, **kwargs): ret = super(SignupView, self).get_context_data(**kwargs) ret.update(dict(site=get_current_site(self.request), account=self.sociallogin.account)) return ret def get_authenticated_redirect_url(self): return reverse(connections) signup = SignupView.as_view() class LoginCancelledView(TemplateView): template_name = ( "socialaccount/login_cancelled." + account_settings.TEMPLATE_EXTENSION) login_cancelled = LoginCancelledView.as_view() class LoginErrorView(TemplateView): template_name = ( "socialaccount/authentication_error." + account_settings.TEMPLATE_EXTENSION) login_error = LoginErrorView.as_view() class ConnectionsView(AjaxCapableProcessFormViewMixin, FormView): template_name = ( "socialaccount/connections." + account_settings.TEMPLATE_EXTENSION) form_class = DisconnectForm success_url = reverse_lazy("socialaccount_connections") def get_form_class(self): return get_form_class(app_settings.FORMS, 'disconnect', self.form_class) def get_form_kwargs(self): kwargs = super(ConnectionsView, self).get_form_kwargs() kwargs["request"] = self.request return kwargs def form_valid(self, form): get_account_adapter().add_message(self.request, messages.INFO, 'socialaccount/messages/' 'account_disconnected.txt') form.save() return super(ConnectionsView, self).form_valid(form) def get_ajax_data(self): account_data = [] for account in SocialAccount.objects.filter(user=self.request.user): provider_account = account.get_provider_account() account_data.append({ 'id': account.pk, 'provider': account.provider, 'name': provider_account.to_str() }) return { 'socialaccounts': account_data } connections = login_required(ConnectionsView.as_view()) django-allauth-0.35.0/allauth/utils.py0000644000076500000240000002464613235130412020622 0ustar pennersrstaff00000000000000import base64 import importlib import json import random import re import string import unicodedata from collections import OrderedDict from django.contrib.auth import get_user_model from django.contrib.sites.models import Site from django.core.exceptions import ImproperlyConfigured from django.core.serializers.json import DjangoJSONEncoder from django.core.validators import ValidationError, validate_email from django.db.models import FieldDoesNotExist, FileField from django.db.models.fields import ( BinaryField, DateField, DateTimeField, EmailField, TimeField, ) from django.utils import dateparse, six from django.utils.encoding import force_bytes, force_text from django.utils.six.moves.urllib.parse import urlsplit # Magic number 7: if you run into collisions with this number, then you are # of big enough scale to start investing in a decent user model... MAX_USERNAME_SUFFIX_LENGTH = 7 USERNAME_SUFFIX_CHARS = ( [string.digits] * 4 + [string.ascii_letters] * (MAX_USERNAME_SUFFIX_LENGTH - 4)) def _generate_unique_username_base(txts, regex=None): from .account.adapter import get_adapter adapter = get_adapter() username = None regex = regex or r'[^\w\s@+.-]' for txt in txts: if not txt: continue username = unicodedata.normalize('NFKD', force_text(txt)) username = username.encode('ascii', 'ignore').decode('ascii') username = force_text(re.sub(regex, '', username).lower()) # Django allows for '@' in usernames in order to accomodate for # project wanting to use e-mail for username. In allauth we don't # use this, we already have a proper place for putting e-mail # addresses (EmailAddress), so let's not use the full e-mail # address and only take the part leading up to the '@'. username = username.split('@')[0] username = username.strip() username = re.sub(r'\s+', '_', username) # Finally, validating base username without database lookups etc. try: username = adapter.clean_username(username, shallow=True) break except ValidationError: pass return username or 'user' def get_username_max_length(): from .account.app_settings import USER_MODEL_USERNAME_FIELD if USER_MODEL_USERNAME_FIELD is not None: User = get_user_model() max_length = User._meta.get_field(USER_MODEL_USERNAME_FIELD).max_length else: max_length = 0 return max_length def generate_username_candidate(basename, suffix_length): max_length = get_username_max_length() suffix = ''.join( random.choice(USERNAME_SUFFIX_CHARS[i]) for i in range(suffix_length)) return basename[0:max_length - len(suffix)] + suffix def generate_username_candidates(basename): ret = [basename] max_suffix_length = min( get_username_max_length(), MAX_USERNAME_SUFFIX_LENGTH) for suffix_length in range(2, max_suffix_length): ret.append(generate_username_candidate(basename, suffix_length)) return ret def generate_unique_username(txts, regex=None): from .account.app_settings import USER_MODEL_USERNAME_FIELD from .account.adapter import get_adapter from allauth.account.utils import filter_users_by_username adapter = get_adapter() basename = _generate_unique_username_base(txts, regex) candidates = generate_username_candidates(basename) existing_usernames = filter_users_by_username(*candidates).values_list( USER_MODEL_USERNAME_FIELD, flat=True) existing_usernames = set([n.lower() for n in existing_usernames]) for candidate in candidates: if candidate.lower() not in existing_usernames: try: return adapter.clean_username(candidate, shallow=True) except ValidationError: pass # This really should not happen raise NotImplementedError('Unable to find a unique username') def valid_email_or_none(email): ret = None try: if email: validate_email(email) if len(email) <= EmailField().max_length: ret = email except ValidationError: pass return ret def email_address_exists(email, exclude_user=None): from .account import app_settings as account_settings from .account.models import EmailAddress emailaddresses = EmailAddress.objects if exclude_user: emailaddresses = emailaddresses.exclude(user=exclude_user) ret = emailaddresses.filter(email__iexact=email).exists() if not ret: email_field = account_settings.USER_MODEL_EMAIL_FIELD if email_field: users = get_user_model().objects if exclude_user: users = users.exclude(pk=exclude_user.pk) ret = users.filter(**{email_field + '__iexact': email}).exists() return ret def import_attribute(path): assert isinstance(path, six.string_types) pkg, attr = path.rsplit('.', 1) ret = getattr(importlib.import_module(pkg), attr) return ret def import_callable(path_or_callable): if not hasattr(path_or_callable, '__call__'): ret = import_attribute(path_or_callable) else: ret = path_or_callable return ret SERIALIZED_DB_FIELD_PREFIX = '_db_' def serialize_instance(instance): """ Since Django 1.6 items added to the session are no longer pickled, but JSON encoded by default. We are storing partially complete models in the session (user, account, token, ...). We cannot use standard Django serialization, as these are models are not "complete" yet. Serialization will start complaining about missing relations et al. """ data = {} for k, v in instance.__dict__.items(): if k.startswith('_') or callable(v): continue try: field = instance._meta.get_field(k) if isinstance(field, BinaryField): v = force_text(base64.b64encode(v)) elif isinstance(field, FileField): if v and not isinstance(v, six.string_types): v = v.name # Check if the field is serializable. If not, we'll fall back # to serializing the DB values which should cover most use cases. try: json.dumps(v, cls=DjangoJSONEncoder) except TypeError: v = field.get_prep_value(v) k = SERIALIZED_DB_FIELD_PREFIX + k except FieldDoesNotExist: pass data[k] = v return json.loads(json.dumps(data, cls=DjangoJSONEncoder)) def deserialize_instance(model, data): ret = model() for k, v in data.items(): is_db_value = False if k.startswith(SERIALIZED_DB_FIELD_PREFIX): k = k[len(SERIALIZED_DB_FIELD_PREFIX):] is_db_value = True if v is not None: try: f = model._meta.get_field(k) if isinstance(f, DateTimeField): v = dateparse.parse_datetime(v) elif isinstance(f, TimeField): v = dateparse.parse_time(v) elif isinstance(f, DateField): v = dateparse.parse_date(v) elif isinstance(f, BinaryField): v = force_bytes( base64.b64decode( force_bytes(v))) elif is_db_value: try: # This is quite an ugly hack, but will cover most # use cases... v = f.from_db_value(v, None, None, None) except Exception: raise ImproperlyConfigured( "Unable to auto serialize field '{}', custom" " serialization override required".format(k) ) except FieldDoesNotExist: pass setattr(ret, k, v) return ret def set_form_field_order(form, field_order): """ This function is a verbatim copy of django.forms.Form.order_fields() to support field ordering below Django 1.9. field_order is a list of field names specifying the order. Append fields not included in the list in the default order for backward compatibility with subclasses not overriding field_order. If field_order is None, keep all fields in the order defined in the class. Ignore unknown fields in field_order to allow disabling fields in form subclasses without redefining ordering. """ if field_order is None: return fields = OrderedDict() for key in field_order: try: fields[key] = form.fields.pop(key) except KeyError: # ignore unknown fields pass fields.update(form.fields) # add remaining fields in original order form.fields = fields def build_absolute_uri(request, location, protocol=None): """request.build_absolute_uri() helper Like request.build_absolute_uri, but gracefully handling the case where request is None. """ from .account import app_settings as account_settings if request is None: site = Site.objects.get_current() bits = urlsplit(location) if not (bits.scheme and bits.netloc): uri = '{proto}://{domain}{url}'.format( proto=account_settings.DEFAULT_HTTP_PROTOCOL, domain=site.domain, url=location) else: uri = location else: uri = request.build_absolute_uri(location) # NOTE: We only force a protocol if we are instructed to do so # (via the `protocol` parameter, or, if the default is set to # HTTPS. The latter keeps compatibility with the debatable use # case of running your site under both HTTP and HTTPS, where one # would want to make sure HTTPS links end up in password reset # mails even while they were initiated on an HTTP password reset # form. if not protocol and account_settings.DEFAULT_HTTP_PROTOCOL == 'https': protocol = account_settings.DEFAULT_HTTP_PROTOCOL # (end NOTE) if protocol: uri = protocol + ':' + uri.partition(':')[2] return uri def get_form_class(forms, form_id, default_form): form_class = forms.get(form_id, default_form) if isinstance(form_class, six.string_types): form_class = import_attribute(form_class) return form_class def get_request_param(request, param, default=None): return request.POST.get(param) or request.GET.get(param, default) django-allauth-0.35.0/allauth/templates/0000755000076500000240000000000013235133533021101 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/templates/base.html0000644000076500000240000000152712671004326022706 0ustar pennersrstaff00000000000000 {% block head_title %}{% endblock %} {% block extra_head %} {% endblock %} {% block body %} {% if messages %}
Messages:
    {% for message in messages %}
  • {{message}}
  • {% endfor %}
{% endif %}
Menu:
{% block content %} {% endblock %} {% endblock %} {% block extra_body %} {% endblock %} django-allauth-0.35.0/allauth/templates/socialaccount/0000755000076500000240000000000013235133533023730 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/templates/socialaccount/snippets/0000755000076500000240000000000013235133533025575 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/templates/socialaccount/snippets/login_extra.html0000644000076500000240000000006313235130412030766 0ustar pennersrstaff00000000000000{% load socialaccount %} {% providers_media_js %} django-allauth-0.35.0/allauth/templates/socialaccount/snippets/provider_list.html0000644000076500000240000000122713235130412031343 0ustar pennersrstaff00000000000000{% load socialaccount %} {% get_providers as socialaccount_providers %} {% for provider in socialaccount_providers %} {% if provider.id == "openid" %} {% for brand in provider.get_brands %}
  • {{brand.name}}
  • {% endfor %} {% endif %}
  • {{provider.name}}
  • {% endfor %} django-allauth-0.35.0/allauth/templates/socialaccount/messages/0000755000076500000240000000000013235133533025537 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/templates/socialaccount/messages/account_connected_other.txt0000644000076500000240000000016312357313011033152 0ustar pennersrstaff00000000000000{% load i18n %} {% blocktrans %}The social account is already connected to a different account.{% endblocktrans %} django-allauth-0.35.0/allauth/templates/socialaccount/messages/account_disconnected.txt0000644000076500000240000000013512357313011032450 0ustar pennersrstaff00000000000000{% load i18n %} {% blocktrans %}The social account has been disconnected.{% endblocktrans %} django-allauth-0.35.0/allauth/templates/socialaccount/messages/account_connected.txt0000644000076500000240000000013212357313011031745 0ustar pennersrstaff00000000000000{% load i18n %} {% blocktrans %}The social account has been connected.{% endblocktrans %} django-allauth-0.35.0/allauth/templates/socialaccount/base.html0000644000076500000240000000004213235130412025515 0ustar pennersrstaff00000000000000{% extends "account/base.html" %} django-allauth-0.35.0/allauth/templates/socialaccount/login_cancelled.html0000644000076500000240000000067412671004326027727 0ustar pennersrstaff00000000000000{% extends "socialaccount/base.html" %} {% load i18n %} {% block head_title %}{% trans "Login Cancelled" %}{% endblock %} {% block content %}

    {% trans "Login Cancelled" %}

    {% url 'account_login' as login_url %}

    {% blocktrans %}You decided to cancel logging in to our site using one of your existing accounts. If this was a mistake, please proceed to sign in.{% endblocktrans %}

    {% endblock %} django-allauth-0.35.0/allauth/templates/socialaccount/connections.html0000644000076500000240000000262012671004326027140 0ustar pennersrstaff00000000000000{% extends "socialaccount/base.html" %} {% load i18n %} {% block head_title %}{% trans "Account Connections" %}{% endblock %} {% block content %}

    {% trans "Account Connections" %}

    {% if form.accounts %}

    {% blocktrans %}You can sign in to your account using any of the following third party accounts:{% endblocktrans %}

    {% csrf_token %}
    {% if form.non_field_errors %}
    {{ form.non_field_errors }}
    {% endif %} {% for base_account in form.accounts %} {% with base_account.get_provider_account as account %}
    {% endwith %} {% endfor %}
    {% else %}

    {% trans 'You currently have no social network accounts connected to this account.' %}

    {% endif %}

    {% trans 'Add a 3rd Party Account' %}

      {% include "socialaccount/snippets/provider_list.html" with process="connect" %}
    {% include "socialaccount/snippets/login_extra.html" %} {% endblock %} django-allauth-0.35.0/allauth/templates/socialaccount/signup.html0000644000076500000240000000140312671004326026121 0ustar pennersrstaff00000000000000{% extends "socialaccount/base.html" %} {% load i18n %} {% block head_title %}{% trans "Signup" %}{% endblock %} {% block content %}

    {% trans "Sign Up" %}

    {% blocktrans with provider_name=account.get_provider.name site_name=site.name %}You are about to use your {{provider_name}} account to login to {{site_name}}. As a final step, please complete the following form:{% endblocktrans %}

    {% endblock %} django-allauth-0.35.0/allauth/templates/socialaccount/authentication_error.html0000644000076500000240000000050412357313011031040 0ustar pennersrstaff00000000000000{% extends "socialaccount/base.html" %} {% load i18n %} {% block head_title %}{% trans "Social Network Login Failure" %}{% endblock %} {% block content %}

    {% trans "Social Network Login Failure" %}

    {% trans "An error occurred while attempting to login via your social network account." %}

    {% endblock %} django-allauth-0.35.0/allauth/templates/openid/0000755000076500000240000000000013235133533022357 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/templates/openid/base.html0000644000076500000240000000005012357313011024145 0ustar pennersrstaff00000000000000{% extends "socialaccount/base.html" %} django-allauth-0.35.0/allauth/templates/openid/login.html0000644000076500000240000000054512671004326024361 0ustar pennersrstaff00000000000000{% extends "openid/base.html" %} {% load i18n %} {% block head_title %}OpenID Sign In{% endblock %} {% block content %}

    {% trans 'OpenID Sign In' %}

    {% endblock %} django-allauth-0.35.0/allauth/templates/account/0000755000076500000240000000000013235133533022535 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/templates/account/snippets/0000755000076500000240000000000013235133533024402 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/templates/account/snippets/already_logged_in.html0000644000076500000240000000031412357313011030711 0ustar pennersrstaff00000000000000{% load i18n %} {% load account %} {% user_display user as user_display %}

    {% trans "Note" %}: {% blocktrans %}you are already logged in as {{ user_display }}.{% endblocktrans %}

    django-allauth-0.35.0/allauth/templates/account/password_reset_from_key.html0000644000076500000240000000165613023014270030361 0ustar pennersrstaff00000000000000{% extends "account/base.html" %} {% load i18n %} {% block head_title %}{% trans "Change Password" %}{% endblock %} {% block content %}

    {% if token_fail %}{% trans "Bad Token" %}{% else %}{% trans "Change Password" %}{% endif %}

    {% if token_fail %} {% url 'account_reset_password' as passwd_reset_url %}

    {% blocktrans %}The password reset link was invalid, possibly because it has already been used. Please request a new password reset.{% endblocktrans %}

    {% else %} {% if form %}
    {% csrf_token %} {{ form.as_p }}
    {% else %}

    {% trans 'Your password is now changed.' %}

    {% endif %} {% endif %} {% endblock %} django-allauth-0.35.0/allauth/templates/account/signup_closed.html0000644000076500000240000000041012671004326026254 0ustar pennersrstaff00000000000000{% extends "account/base.html" %} {% load i18n %} {% block head_title %}{% trans "Sign Up Closed" %}{% endblock %} {% block content %}

    {% trans "Sign Up Closed" %}

    {% trans "We are sorry, but the sign up is currently closed." %}

    {% endblock %} django-allauth-0.35.0/allauth/templates/account/messages/0000755000076500000240000000000013235133533024344 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/templates/account/messages/email_deleted.txt0000644000076500000240000000012512357313011027653 0ustar pennersrstaff00000000000000{% load i18n %} {% blocktrans %}Removed e-mail address {{email}}.{% endblocktrans %} django-allauth-0.35.0/allauth/templates/account/messages/password_set.txt0000644000076500000240000000011613235130412027611 0ustar pennersrstaff00000000000000{% load i18n %} {% blocktrans %}Password successfully set.{% endblocktrans %} django-allauth-0.35.0/allauth/templates/account/messages/password_changed.txt0000644000076500000240000000012213235130412030404 0ustar pennersrstaff00000000000000{% load i18n %} {% blocktrans %}Password successfully changed.{% endblocktrans %} django-allauth-0.35.0/allauth/templates/account/messages/primary_email_set.txt0000644000076500000240000000011712357313011030604 0ustar pennersrstaff00000000000000{% load i18n %} {% blocktrans %}Primary e-mail address set.{% endblocktrans %} django-allauth-0.35.0/allauth/templates/account/messages/email_confirmed.txt0000644000076500000240000000012112357313011030207 0ustar pennersrstaff00000000000000{% load i18n %} {% blocktrans %}You have confirmed {{email}}.{% endblocktrans %} django-allauth-0.35.0/allauth/templates/account/messages/logged_in.txt0000644000076500000240000000021212357313011027022 0ustar pennersrstaff00000000000000{% load account %} {% load i18n %} {% user_display user as name %} {% blocktrans %}Successfully signed in as {{name}}.{% endblocktrans %} django-allauth-0.35.0/allauth/templates/account/messages/unverified_primary_email.txt0000644000076500000240000000014112357313011032146 0ustar pennersrstaff00000000000000{% load i18n %} {% blocktrans %}Your primary e-mail address must be verified.{% endblocktrans %} django-allauth-0.35.0/allauth/templates/account/messages/cannot_delete_primary_email.txt0000644000076500000240000000015612357313011032620 0ustar pennersrstaff00000000000000{% load i18n %} {% blocktrans %}You cannot remove your primary e-mail address ({{email}}).{% endblocktrans %} django-allauth-0.35.0/allauth/templates/account/messages/email_confirmation_sent.txt0000644000076500000240000000013212357313011031764 0ustar pennersrstaff00000000000000{% load i18n %} {% blocktrans %}Confirmation e-mail sent to {{email}}.{% endblocktrans %} django-allauth-0.35.0/allauth/templates/account/messages/logged_out.txt0000644000076500000240000000011012357313011027220 0ustar pennersrstaff00000000000000{% load i18n %} {% blocktrans %}You have signed out.{% endblocktrans %} django-allauth-0.35.0/allauth/templates/account/base.html0000644000076500000240000000003213235130412024321 0ustar pennersrstaff00000000000000{% extends "base.html" %} django-allauth-0.35.0/allauth/templates/account/password_reset_done.html0000644000076500000240000000073212357313011027471 0ustar pennersrstaff00000000000000{% extends "account/base.html" %} {% load i18n %} {% load account %} {% block head_title %}{% trans "Password Reset" %}{% endblock %} {% block content %}

    {% trans "Password Reset" %}

    {% if user.is_authenticated %} {% include "account/snippets/already_logged_in.html" %} {% endif %}

    {% blocktrans %}We have sent you an e-mail. Please contact us if you do not receive it within a few minutes.{% endblocktrans %}

    {% endblock %} django-allauth-0.35.0/allauth/templates/account/email.html0000644000076500000240000000465312733554166024535 0ustar pennersrstaff00000000000000{% extends "account/base.html" %} {% load i18n %} {% block head_title %}{% trans "Account" %}{% endblock %} {% block content %}

    {% trans "E-mail Addresses" %}

    {% if user.emailaddress_set.all %}

    {% trans 'The following e-mail addresses are associated with your account:' %}

    {% else %}

    {% trans 'Warning:'%} {% trans "You currently do not have any e-mail address set up. You should really add an e-mail address so you can receive notifications, reset your password, etc." %}

    {% endif %}

    {% trans "Add E-mail Address" %}

    {% csrf_token %} {{ form.as_p }}
    {% endblock %} {% block extra_body %} {% endblock %} django-allauth-0.35.0/allauth/templates/account/verified_email_required.html0000644000076500000240000000143512671004326030272 0ustar pennersrstaff00000000000000{% extends "account/base.html" %} {% load i18n %} {% block head_title %}{% trans "Verify Your E-mail Address" %}{% endblock %} {% block content %}

    {% trans "Verify Your E-mail Address" %}

    {% url 'account_email' as email_url %}

    {% blocktrans %}This part of the site requires us to verify that you are who you claim to be. For this purpose, we require that you verify ownership of your e-mail address. {% endblocktrans %}

    {% blocktrans %}We have sent an e-mail to you for verification. Please click on the link inside this e-mail. Please contact us if you do not receive it within a few minutes.{% endblocktrans %}

    {% blocktrans %}Note: you can still change your e-mail address.{% endblocktrans %}

    {% endblock %} django-allauth-0.35.0/allauth/templates/account/password_reset_from_key_done.html0000644000076500000240000000037312671004326031372 0ustar pennersrstaff00000000000000{% extends "account/base.html" %} {% load i18n %} {% block head_title %}{% trans "Change Password" %}{% endblock %} {% block content %}

    {% trans "Change Password" %}

    {% trans 'Your password is now changed.' %}

    {% endblock %} django-allauth-0.35.0/allauth/templates/account/email_confirm.html0000644000076500000240000000163712671004326026236 0ustar pennersrstaff00000000000000{% extends "account/base.html" %} {% load i18n %} {% load account %} {% block head_title %}{% trans "Confirm E-mail Address" %}{% endblock %} {% block content %}

    {% trans "Confirm E-mail Address" %}

    {% if confirmation %} {% user_display confirmation.email_address.user as user_display %}

    {% blocktrans with confirmation.email_address.email as email %}Please confirm that {{ email }} is an e-mail address for user {{ user_display }}.{% endblocktrans %}

    {% csrf_token %}
    {% else %} {% url 'account_email' as email_url %}

    {% blocktrans %}This e-mail confirmation link expired or is invalid. Please issue a new e-mail confirmation request.{% endblocktrans %}

    {% endif %} {% endblock %} django-allauth-0.35.0/allauth/templates/account/account_inactive.html0000644000076500000240000000036312671004326026743 0ustar pennersrstaff00000000000000{% extends "account/base.html" %} {% load i18n %} {% block head_title %}{% trans "Account Inactive" %}{% endblock %} {% block content %}

    {% trans "Account Inactive" %}

    {% trans "This account is inactive." %}

    {% endblock %} django-allauth-0.35.0/allauth/templates/account/password_reset.html0000644000076500000240000000144512671004326026473 0ustar pennersrstaff00000000000000{% extends "account/base.html" %} {% load i18n %} {% load account %} {% block head_title %}{% trans "Password Reset" %}{% endblock %} {% block content %}

    {% trans "Password Reset" %}

    {% if user.is_authenticated %} {% include "account/snippets/already_logged_in.html" %} {% endif %}

    {% trans "Forgotten your password? Enter your e-mail address below, and we'll send you an e-mail allowing you to reset it." %}

    {% csrf_token %} {{ form.as_p }}

    {% blocktrans %}Please contact us if you have any trouble resetting your password.{% endblocktrans %}

    {% endblock %} django-allauth-0.35.0/allauth/templates/account/login.html0000644000076500000240000000260112671004326024532 0ustar pennersrstaff00000000000000{% extends "account/base.html" %} {% load i18n %} {% load account socialaccount %} {% block head_title %}{% trans "Sign In" %}{% endblock %} {% block content %}

    {% trans "Sign In" %}

    {% get_providers as socialaccount_providers %} {% if socialaccount_providers %}

    {% blocktrans with site.name as site_name %}Please sign in with one of your existing third party accounts. Or, sign up for a {{ site_name }} account and sign in below:{% endblocktrans %}

      {% include "socialaccount/snippets/provider_list.html" with process="login" %}
    {% include "socialaccount/snippets/login_extra.html" %} {% else %}

    {% blocktrans %}If you have not created an account yet, then please sign up first.{% endblocktrans %}

    {% endif %} {% endblock %} django-allauth-0.35.0/allauth/templates/account/verification_sent.html0000644000076500000240000000066512671004326027145 0ustar pennersrstaff00000000000000{% extends "account/base.html" %} {% load i18n %} {% block head_title %}{% trans "Verify Your E-mail Address" %}{% endblock %} {% block content %}

    {% trans "Verify Your E-mail Address" %}

    {% blocktrans %}We have sent an e-mail to you for verification. Follow the link provided to finalize the signup process. Please contact us if you do not receive it within a few minutes.{% endblocktrans %}

    {% endblock %} django-allauth-0.35.0/allauth/templates/account/logout.html0000644000076500000240000000100612671004326024731 0ustar pennersrstaff00000000000000{% extends "account/base.html" %} {% load i18n %} {% block head_title %}{% trans "Sign Out" %}{% endblock %} {% block content %}

    {% trans "Sign Out" %}

    {% trans 'Are you sure you want to sign out?' %}

    {% csrf_token %} {% if redirect_field_value %} {% endif %}
    {% endblock %} django-allauth-0.35.0/allauth/templates/account/password_change.html0000644000076500000240000000066412671004326026600 0ustar pennersrstaff00000000000000{% extends "account/base.html" %} {% load i18n %} {% block head_title %}{% trans "Change Password" %}{% endblock %} {% block content %}

    {% trans "Change Password" %}

    {% csrf_token %} {{ form.as_p }}
    {% endblock %} django-allauth-0.35.0/allauth/templates/account/password_set.html0000644000076500000240000000064512671004326026145 0ustar pennersrstaff00000000000000{% extends "account/base.html" %} {% load i18n %} {% block head_title %}{% trans "Set Password" %}{% endblock %} {% block content %}

    {% trans "Set Password" %}

    {% csrf_token %} {{ form.as_p }}
    {% endblock %} django-allauth-0.35.0/allauth/templates/account/email/0000755000076500000240000000000013235133533023624 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/templates/account/email/email_confirmation_signup_message.txt0000644000076500000240000000007512357313011033312 0ustar pennersrstaff00000000000000{% include "account/email/email_confirmation_message.txt" %} django-allauth-0.35.0/allauth/templates/account/email/email_confirmation_signup_subject.txt0000644000076500000240000000007512357313011033325 0ustar pennersrstaff00000000000000{% include "account/email/email_confirmation_subject.txt" %} django-allauth-0.35.0/allauth/templates/account/email/password_reset_key_subject.txt0000644000076500000240000000016213235130412032010 0ustar pennersrstaff00000000000000{% load i18n %} {% autoescape off %} {% blocktrans %}Password Reset E-mail{% endblocktrans %} {% endautoescape %} django-allauth-0.35.0/allauth/templates/account/email/password_reset_key_message.txt0000644000076500000240000000122313060627326032007 0ustar pennersrstaff00000000000000{% load i18n %}{% blocktrans with site_name=current_site.name site_domain=current_site.domain %}Hello from {{ site_name }}! You're receiving this e-mail because you or someone else has requested a password for your user account. It can be safely ignored if you did not request a password reset. Click the link below to reset your password.{% endblocktrans %} {{ password_reset_url }} {% if username %}{% blocktrans %}In case you forgot, your username is {{ username }}.{% endblocktrans %} {% endif %}{% blocktrans with site_name=current_site.name site_domain=current_site.domain %}Thank you for using {{ site_name }}! {{ site_domain }}{% endblocktrans %} django-allauth-0.35.0/allauth/templates/account/email/email_confirmation_message.txt0000644000076500000240000000107113060627326031733 0ustar pennersrstaff00000000000000{% load account %}{% user_display user as user_display %}{% load i18n %}{% autoescape off %}{% blocktrans with site_name=current_site.name site_domain=current_site.domain %}Hello from {{ site_name }}! You're receiving this e-mail because user {{ user_display }} has given yours as an e-mail address to connect their account. To confirm this is correct, go to {{ activate_url }} {% endblocktrans %}{% endautoescape %} {% blocktrans with site_name=current_site.name site_domain=current_site.domain %}Thank you from {{ site_name }}! {{ site_domain }}{% endblocktrans %} django-allauth-0.35.0/allauth/templates/account/email/email_confirmation_subject.txt0000644000076500000240000000017712671004326031750 0ustar pennersrstaff00000000000000{% load i18n %} {% autoescape off %} {% blocktrans %}Please Confirm Your E-mail Address{% endblocktrans %} {% endautoescape %} django-allauth-0.35.0/allauth/templates/account/signup.html0000644000076500000240000000117212671004326024731 0ustar pennersrstaff00000000000000{% extends "account/base.html" %} {% load i18n %} {% block head_title %}{% trans "Signup" %}{% endblock %} {% block content %}

    {% trans "Sign Up" %}

    {% blocktrans %}Already have an account? Then please sign in.{% endblocktrans %}

    {% endblock %} django-allauth-0.35.0/allauth/exceptions.py0000644000076500000240000000035313117447114021641 0ustar pennersrstaff00000000000000class ImmediateHttpResponse(Exception): """ This exception is used to interrupt the flow of processing to immediately return a custom HttpResponse. """ def __init__(self, response): self.response = response django-allauth-0.35.0/allauth/tests.py0000644000076500000240000001331613235130412020614 0ustar pennersrstaff00000000000000# -*- coding: utf-8 -*- from __future__ import unicode_literals import json import requests from datetime import date, datetime from django.core.files.base import ContentFile from django.db import models from django.test import TestCase from allauth.compat import base36_to_int, int_to_base36 from . import utils try: from unittest.mock import Mock, patch except ImportError: from mock import Mock, patch # noqa class MockedResponse(object): def __init__(self, status_code, content, headers=None): if headers is None: headers = {} self.status_code = status_code self.content = content.encode('utf8') self.headers = headers def json(self): return json.loads(self.text) def raise_for_status(self): pass @property def text(self): return self.content.decode('utf8') class mocked_response: def __init__(self, *responses): self.responses = list(responses) def __enter__(self): self.orig_get = requests.get self.orig_post = requests.post self.orig_request = requests.request def mockable_request(f): def new_f(*args, **kwargs): if self.responses: return self.responses.pop(0) return f(*args, **kwargs) return new_f requests.get = mockable_request(requests.get) requests.post = mockable_request(requests.post) requests.request = mockable_request(requests.request) def __exit__(self, type, value, traceback): requests.get = self.orig_get requests.post = self.orig_post requests.request = self.orig_request class BasicTests(TestCase): def test_generate_unique_username(self): examples = [('a.b-c@example.com', 'a.b-c'), ('Üsêrnamê', 'username'), ('User Name', 'user_name'), ('', 'user')] for input, username in examples: self.assertEqual(utils.generate_unique_username([input]), username) def test_email_validation(self): s = 'this.email.address.is.a.bit.too.long.but.should.still.validate@example.com' # noqa self.assertEqual(s, utils.valid_email_or_none(s)) def test_serializer(self): class SomeValue: pass some_value = SomeValue() class SomeField(models.Field): def get_prep_value(self, value): return 'somevalue' def from_db_value(self, value, expression, connection, context): return some_value class SomeModel(models.Model): dt = models.DateTimeField() t = models.TimeField() d = models.DateField() img1 = models.ImageField() img2 = models.ImageField() img3 = models.ImageField() something = SomeField() def method(self): pass instance = SomeModel(dt=datetime.now(), d=date.today(), something=some_value, t=datetime.now().time()) content_file = ContentFile(b'%PDF') content_file.name = 'foo.pdf' instance.img1 = content_file instance.img2 = 'foo.png' # make sure serializer doesn't fail if a method is attached to # the instance instance.method = method instance.nonfield = 'hello' data = utils.serialize_instance(instance) instance2 = utils.deserialize_instance(SomeModel, data) self.assertEqual(getattr(instance, 'method', None), method) self.assertEqual(getattr(instance2, 'method', None), None) self.assertEqual(instance2.something, some_value) self.assertEqual(instance2.img1.name, 'foo.pdf') self.assertEqual(instance2.img2.name, 'foo.png') self.assertEqual(instance2.img3.name, '') self.assertEqual(instance.nonfield, instance2.nonfield) self.assertEqual(instance.d, instance2.d) self.assertEqual(instance.dt.date(), instance2.dt.date()) for t1, t2 in [(instance.t, instance2.t), (instance.dt.time(), instance2.dt.time())]: self.assertEqual(t1.hour, t2.hour) self.assertEqual(t1.minute, t2.minute) self.assertEqual(t1.second, t2.second) # AssertionError: datetime.time(10, 6, 28, 705776) # != datetime.time(10, 6, 28, 705000) self.assertEqual(int(t1.microsecond / 1000), int(t2.microsecond / 1000)) def test_serializer_binary_field(self): class SomeBinaryModel(models.Model): bb = models.BinaryField() bb_empty = models.BinaryField() instance = SomeBinaryModel(bb=b'some binary data') serialized = utils.serialize_instance(instance) deserialized = utils.deserialize_instance(SomeBinaryModel, serialized) self.assertEqual(serialized['bb'], 'c29tZSBiaW5hcnkgZGF0YQ==') self.assertEqual(serialized['bb_empty'], '') self.assertEqual(deserialized.bb, b'some binary data') self.assertEqual(deserialized.bb_empty, b'') def test_build_absolute_uri(self): self.assertEqual( utils.build_absolute_uri(None, '/foo'), 'http://example.com/foo') self.assertEqual( utils.build_absolute_uri(None, '/foo', protocol='ftp'), 'ftp://example.com/foo') self.assertEqual( utils.build_absolute_uri(None, 'http://foo.com/bar'), 'http://foo.com/bar') def test_int_to_base36(self): n = 55798679658823689999 b36 = 'brxk553wvxbf3' assert int_to_base36(n) == b36 assert base36_to_int(b36) == n django-allauth-0.35.0/allauth/account/0000755000076500000240000000000013235133532020536 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/account/templatetags/0000755000076500000240000000000013235133532023230 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/account/templatetags/__init__.py0000644000076500000240000000000012702777620025341 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/account/templatetags/account.py0000644000076500000240000000223213117447114025240 0ustar pennersrstaff00000000000000from django import template from allauth.account.utils import user_display register = template.Library() class UserDisplayNode(template.Node): def __init__(self, user, as_var=None): self.user_var = template.Variable(user) self.as_var = as_var def render(self, context): user = self.user_var.resolve(context) display = user_display(user) if self.as_var: context[self.as_var] = display return "" return display @register.tag(name="user_display") def do_user_display(parser, token): """ Example usage:: {% user_display user %} or if you need to use in a {% blocktrans %}:: {% user_display user as user_display %} {% blocktrans %} {{ user_display }} has sent you a gift. {% endblocktrans %} """ bits = token.split_contents() if len(bits) == 2: user = bits[1] as_var = None elif len(bits) == 4: user = bits[1] as_var = bits[3] else: raise template.TemplateSyntaxError( "'%s' takes either two or four arguments" % bits[0]) return UserDisplayNode(user, as_var) django-allauth-0.35.0/allauth/account/signals.py0000644000076500000240000000163013235130412022542 0ustar pennersrstaff00000000000000from django.contrib.auth.signals import user_logged_out # noqa from django.dispatch import Signal user_logged_in = Signal(providing_args=["request", "user"]) # Typically followed by `user_logged_in` (unless, e-mail verification kicks in) user_signed_up = Signal(providing_args=["request", "user"]) password_set = Signal(providing_args=["request", "user"]) password_changed = Signal(providing_args=["request", "user"]) password_reset = Signal(providing_args=["request", "user"]) email_confirmed = Signal(providing_args=["request", "email_address"]) email_confirmation_sent = Signal( providing_args=["request", "confirmation", "signup"]) email_changed = Signal( providing_args=[ "request", "user", "from_email_address", "to_email_address"]) email_added = Signal(providing_args=["request", "user", "email_address"]) email_removed = Signal(providing_args=["request", "user", "email_address"]) django-allauth-0.35.0/allauth/account/migrations/0000755000076500000240000000000013235133532022712 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/account/migrations/__init__.py0000644000076500000240000000000013055274502025014 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/account/migrations/0001_initial.py0000644000076500000240000000433313013135215025352 0ustar pennersrstaff00000000000000# -*- coding: utf-8 -*- from __future__ import unicode_literals from django.db import models, migrations import django.utils.timezone from django.conf import settings UNIQUE_EMAIL = getattr(settings, 'ACCOUNT_UNIQUE_EMAIL', True) class Migration(migrations.Migration): dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name='EmailAddress', fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('email', models.EmailField(unique=UNIQUE_EMAIL, max_length=75, verbose_name='e-mail address')), ('verified', models.BooleanField(default=False, verbose_name='verified')), ('primary', models.BooleanField(default=False, verbose_name='primary')), ('user', models.ForeignKey(verbose_name='user', to=settings.AUTH_USER_MODEL, on_delete=models.CASCADE)), ], options={ 'verbose_name': 'email address', 'verbose_name_plural': 'email addresses', }, bases=(models.Model,), ), migrations.CreateModel( name='EmailConfirmation', fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('created', models.DateTimeField(default=django.utils.timezone.now, verbose_name='created')), ('sent', models.DateTimeField(null=True, verbose_name='sent')), ('key', models.CharField(unique=True, max_length=64, verbose_name='key')), ('email_address', models.ForeignKey(verbose_name='e-mail address', to='account.EmailAddress', on_delete=models.CASCADE)), ], options={ 'verbose_name': 'email confirmation', 'verbose_name_plural': 'email confirmations', }, bases=(models.Model,), ), ] if not UNIQUE_EMAIL: operations += [ migrations.AlterUniqueTogether( name='emailaddress', unique_together=set([('user', 'email')]), ), ] django-allauth-0.35.0/allauth/account/migrations/0002_email_max_length.py0000644000076500000240000000150612735561755027244 0ustar pennersrstaff00000000000000# -*- coding: utf-8 -*- from __future__ import unicode_literals from django.db import models, migrations from django.conf import settings UNIQUE_EMAIL = getattr(settings, 'ACCOUNT_UNIQUE_EMAIL', True) EMAIL_MAX_LENGTH = getattr(settings, 'ACCOUNT_EMAIL_MAX_LENGTH', 254) class Migration(migrations.Migration): dependencies = [ ('account', '0001_initial'), ] operations = [ migrations.AlterField( model_name='emailaddress', name='email', field=models.EmailField(unique=UNIQUE_EMAIL, max_length=EMAIL_MAX_LENGTH, verbose_name='e-mail address'), ), ] if not UNIQUE_EMAIL: operations += [ migrations.AlterUniqueTogether( name='emailaddress', unique_together=set([('user', 'email')]), ), ] django-allauth-0.35.0/allauth/account/app_settings.py0000644000076500000240000002403213235130412023603 0ustar pennersrstaff00000000000000class AppSettings(object): class AuthenticationMethod: USERNAME = 'username' EMAIL = 'email' USERNAME_EMAIL = 'username_email' class EmailVerificationMethod: # After signing up, keep the user account inactive until the email # address is verified MANDATORY = 'mandatory' # Allow login with unverified e-mail (e-mail verification is # still sent) OPTIONAL = 'optional' # Don't send e-mail verification mails during signup NONE = 'none' def __init__(self, prefix): self.prefix = prefix # If login is by email, email must be required assert (not self.AUTHENTICATION_METHOD == self.AuthenticationMethod.EMAIL) or self.EMAIL_REQUIRED # If login includes email, login must be unique assert (self.AUTHENTICATION_METHOD == self.AuthenticationMethod.USERNAME) or self.UNIQUE_EMAIL assert (self.EMAIL_VERIFICATION != self.EmailVerificationMethod.MANDATORY) \ or self.EMAIL_REQUIRED if not self.USER_MODEL_USERNAME_FIELD: assert not self.USERNAME_REQUIRED assert self.AUTHENTICATION_METHOD \ not in (self.AuthenticationMethod.USERNAME, self.AuthenticationMethod.USERNAME_EMAIL) def _setting(self, name, dflt): from django.conf import settings getter = getattr(settings, 'ALLAUTH_SETTING_GETTER', lambda name, dflt: getattr(settings, name, dflt)) return getter(self.prefix + name, dflt) @property def DEFAULT_HTTP_PROTOCOL(self): return self._setting("DEFAULT_HTTP_PROTOCOL", "http").lower() @property def EMAIL_CONFIRMATION_EXPIRE_DAYS(self): """ Determines the expiration date of e-mail confirmation mails (# of days) """ from django.conf import settings return self._setting("EMAIL_CONFIRMATION_EXPIRE_DAYS", getattr(settings, "EMAIL_CONFIRMATION_DAYS", 3)) @property def EMAIL_CONFIRMATION_AUTHENTICATED_REDIRECT_URL(self): """ The URL to redirect to after a successful e-mail confirmation, in case of an authenticated user """ return self._setting("EMAIL_CONFIRMATION_AUTHENTICATED_REDIRECT_URL", None) @property def EMAIL_CONFIRMATION_ANONYMOUS_REDIRECT_URL(self): """ The URL to redirect to after a successful e-mail confirmation, in case no user is logged in """ from django.conf import settings return self._setting("EMAIL_CONFIRMATION_ANONYMOUS_REDIRECT_URL", settings.LOGIN_URL) @property def EMAIL_CONFIRMATION_COOLDOWN(self): """ The cooldown in seconds during which, after an email confirmation has been sent, a second confirmation email will not be sent. """ return self._setting("EMAIL_CONFIRMATION_COOLDOWN", 3 * 60) @property def EMAIL_REQUIRED(self): """ The user is required to hand over an e-mail address when signing up """ return self._setting("EMAIL_REQUIRED", False) @property def EMAIL_VERIFICATION(self): """ See e-mail verification method """ ret = self._setting("EMAIL_VERIFICATION", self.EmailVerificationMethod.OPTIONAL) # Deal with legacy (boolean based) setting if ret is True: ret = self.EmailVerificationMethod.MANDATORY elif ret is False: ret = self.EmailVerificationMethod.OPTIONAL return ret @property def AUTHENTICATION_METHOD(self): ret = self._setting("AUTHENTICATION_METHOD", self.AuthenticationMethod.USERNAME) return ret @property def EMAIL_MAX_LENGTH(self): """ Adjust max_length of e-mail addresses """ return self._setting("EMAIL_MAX_LENGTH", 254) @property def UNIQUE_EMAIL(self): """ Enforce uniqueness of e-mail addresses """ return self._setting("UNIQUE_EMAIL", True) @property def SIGNUP_EMAIL_ENTER_TWICE(self): """ Signup email verification """ return self._setting("SIGNUP_EMAIL_ENTER_TWICE", False) @property def SIGNUP_PASSWORD_ENTER_TWICE(self): """ Signup password verification """ legacy = self._setting('SIGNUP_PASSWORD_VERIFICATION', True) return self._setting('SIGNUP_PASSWORD_ENTER_TWICE', legacy) @property def PASSWORD_MIN_LENGTH(self): """ Minimum password Length """ from django.conf import settings ret = None if not settings.AUTH_PASSWORD_VALIDATORS: ret = self._setting("PASSWORD_MIN_LENGTH", 6) return ret @property def EMAIL_SUBJECT_PREFIX(self): """ Subject-line prefix to use for email messages sent """ return self._setting("EMAIL_SUBJECT_PREFIX", None) @property def SIGNUP_FORM_CLASS(self): """ Signup form """ return self._setting("SIGNUP_FORM_CLASS", None) @property def USERNAME_REQUIRED(self): """ The user is required to enter a username when signing up """ return self._setting("USERNAME_REQUIRED", True) @property def USERNAME_MIN_LENGTH(self): """ Minimum username Length """ return self._setting("USERNAME_MIN_LENGTH", 1) @property def USERNAME_BLACKLIST(self): """ List of usernames that are not allowed """ return self._setting("USERNAME_BLACKLIST", []) @property def PASSWORD_INPUT_RENDER_VALUE(self): """ render_value parameter as passed to PasswordInput fields """ return self._setting("PASSWORD_INPUT_RENDER_VALUE", False) @property def ADAPTER(self): return self._setting('ADAPTER', 'allauth.account.adapter.DefaultAccountAdapter') @property def CONFIRM_EMAIL_ON_GET(self): return self._setting('CONFIRM_EMAIL_ON_GET', False) @property def AUTHENTICATED_LOGIN_REDIRECTS(self): return self._setting('AUTHENTICATED_LOGIN_REDIRECTS', True) @property def LOGIN_ON_EMAIL_CONFIRMATION(self): """ Automatically log the user in once they confirmed their email address """ return self._setting('LOGIN_ON_EMAIL_CONFIRMATION', False) @property def LOGIN_ON_PASSWORD_RESET(self): """ Automatically log the user in immediately after resetting their password. """ return self._setting('LOGIN_ON_PASSWORD_RESET', False) @property def LOGOUT_REDIRECT_URL(self): return self._setting('LOGOUT_REDIRECT_URL', '/') @property def LOGOUT_ON_GET(self): return self._setting('LOGOUT_ON_GET', False) @property def LOGOUT_ON_PASSWORD_CHANGE(self): return self._setting('LOGOUT_ON_PASSWORD_CHANGE', False) @property def USER_MODEL_USERNAME_FIELD(self): return self._setting('USER_MODEL_USERNAME_FIELD', 'username') @property def USER_MODEL_EMAIL_FIELD(self): return self._setting('USER_MODEL_EMAIL_FIELD', 'email') @property def SESSION_COOKIE_AGE(self): """ Deprecated -- use Django's settings.SESSION_COOKIE_AGE instead """ from django.conf import settings return self._setting('SESSION_COOKIE_AGE', settings.SESSION_COOKIE_AGE) @property def SESSION_REMEMBER(self): """ Controls the life time of the session. Set to `None` to ask the user ("Remember me?"), `False` to not remember, and `True` to always remember. """ return self._setting('SESSION_REMEMBER', None) @property def TEMPLATE_EXTENSION(self): """ A string defining the template extension to use, defaults to `html`. """ return self._setting('TEMPLATE_EXTENSION', 'html') @property def FORMS(self): return self._setting('FORMS', {}) @property def LOGIN_ATTEMPTS_LIMIT(self): """ Number of failed login attempts. When this number is exceeded, the user is prohibited from logging in for the specified `LOGIN_ATTEMPTS_TIMEOUT` """ return self._setting('LOGIN_ATTEMPTS_LIMIT', 5) @property def LOGIN_ATTEMPTS_TIMEOUT(self): """ Time period from last unsuccessful login attempt, during which the user is prohibited from trying to log in. Defaults to 5 minutes. """ return self._setting('LOGIN_ATTEMPTS_TIMEOUT', 60 * 5) @property def EMAIL_CONFIRMATION_HMAC(self): return self._setting('EMAIL_CONFIRMATION_HMAC', True) @property def SALT(self): return self._setting('SALT', 'account') @property def PRESERVE_USERNAME_CASING(self): return self._setting('PRESERVE_USERNAME_CASING', True) @property def USERNAME_VALIDATORS(self): from django.core.exceptions import ImproperlyConfigured from allauth.utils import import_attribute from allauth.utils import get_user_model path = self._setting('USERNAME_VALIDATORS', None) if path: ret = import_attribute(path) if not isinstance(ret, list): raise ImproperlyConfigured( 'ACCOUNT_USERNAME_VALIDATORS is expected to be a list') else: if self.USER_MODEL_USERNAME_FIELD is not None: ret = get_user_model()._meta.get_field( self.USER_MODEL_USERNAME_FIELD).validators else: ret = [] return ret # Ugly? Guido recommends this himself ... # http://mail.python.org/pipermail/python-ideas/2012-May/014969.html import sys # noqa app_settings = AppSettings('ACCOUNT_') app_settings.__name__ = __name__ sys.modules[__name__] = app_settings django-allauth-0.35.0/allauth/account/models.py0000644000076500000240000001423513235130412022372 0ustar pennersrstaff00000000000000from __future__ import unicode_literals import datetime from django.core import signing from django.db import models, transaction from django.utils import timezone from django.utils.crypto import get_random_string from django.utils.encoding import python_2_unicode_compatible from django.utils.translation import ugettext_lazy as _ from . import app_settings, signals from .. import app_settings as allauth_app_settings from .adapter import get_adapter from .managers import EmailAddressManager, EmailConfirmationManager from .utils import user_email @python_2_unicode_compatible class EmailAddress(models.Model): user = models.ForeignKey(allauth_app_settings.USER_MODEL, verbose_name=_('user'), on_delete=models.CASCADE) email = models.EmailField(unique=app_settings.UNIQUE_EMAIL, max_length=app_settings.EMAIL_MAX_LENGTH, verbose_name=_('e-mail address')) verified = models.BooleanField(verbose_name=_('verified'), default=False) primary = models.BooleanField(verbose_name=_('primary'), default=False) objects = EmailAddressManager() class Meta: verbose_name = _("email address") verbose_name_plural = _("email addresses") if not app_settings.UNIQUE_EMAIL: unique_together = [("user", "email")] def __str__(self): return "%s (%s)" % (self.email, self.user) def set_as_primary(self, conditional=False): old_primary = EmailAddress.objects.get_primary(self.user) if old_primary: if conditional: return False old_primary.primary = False old_primary.save() self.primary = True self.save() user_email(self.user, self.email) self.user.save() return True def send_confirmation(self, request=None, signup=False): if app_settings.EMAIL_CONFIRMATION_HMAC: confirmation = EmailConfirmationHMAC(self) else: confirmation = EmailConfirmation.create(self) confirmation.send(request, signup=signup) return confirmation def change(self, request, new_email, confirm=True): """ Given a new email address, change self and re-confirm. """ with transaction.atomic(): user_email(self.user, new_email) self.user.save() self.email = new_email self.verified = False self.save() if confirm: self.send_confirmation(request) @python_2_unicode_compatible class EmailConfirmation(models.Model): email_address = models.ForeignKey(EmailAddress, verbose_name=_('e-mail address'), on_delete=models.CASCADE) created = models.DateTimeField(verbose_name=_('created'), default=timezone.now) sent = models.DateTimeField(verbose_name=_('sent'), null=True) key = models.CharField(verbose_name=_('key'), max_length=64, unique=True) objects = EmailConfirmationManager() class Meta: verbose_name = _("email confirmation") verbose_name_plural = _("email confirmations") def __str__(self): return "confirmation for %s" % self.email_address @classmethod def create(cls, email_address): key = get_random_string(64).lower() return cls._default_manager.create(email_address=email_address, key=key) def key_expired(self): expiration_date = self.sent \ + datetime.timedelta(days=app_settings .EMAIL_CONFIRMATION_EXPIRE_DAYS) return expiration_date <= timezone.now() key_expired.boolean = True def confirm(self, request): if not self.key_expired() and not self.email_address.verified: email_address = self.email_address get_adapter(request).confirm_email(request, email_address) signals.email_confirmed.send(sender=self.__class__, request=request, email_address=email_address) return email_address def send(self, request=None, signup=False): get_adapter(request).send_confirmation_mail(request, self, signup) self.sent = timezone.now() self.save() signals.email_confirmation_sent.send(sender=self.__class__, request=request, confirmation=self, signup=signup) class EmailConfirmationHMAC: def __init__(self, email_address): self.email_address = email_address @property def key(self): return signing.dumps( obj=self.email_address.pk, salt=app_settings.SALT) @classmethod def from_key(cls, key): try: max_age = ( 60 * 60 * 24 * app_settings.EMAIL_CONFIRMATION_EXPIRE_DAYS) pk = signing.loads( key, max_age=max_age, salt=app_settings.SALT) ret = EmailConfirmationHMAC(EmailAddress.objects.get(pk=pk)) except (signing.SignatureExpired, signing.BadSignature, EmailAddress.DoesNotExist): ret = None return ret def confirm(self, request): if not self.email_address.verified: email_address = self.email_address get_adapter(request).confirm_email(request, email_address) signals.email_confirmed.send(sender=self.__class__, request=request, email_address=email_address) return email_address def send(self, request=None, signup=False): get_adapter(request).send_confirmation_mail(request, self, signup) signals.email_confirmation_sent.send(sender=self.__class__, request=request, confirmation=self, signup=signup) django-allauth-0.35.0/allauth/account/adapter.py0000644000076500000240000004454213235130412022533 0ustar pennersrstaff00000000000000from __future__ import unicode_literals import hashlib import json import time import warnings from django import forms from django.conf import settings from django.contrib import messages from django.contrib.auth import ( authenticate, get_backends, login as django_login, logout as django_logout, ) from django.contrib.auth.models import AbstractUser from django.contrib.auth.password_validation import validate_password from django.contrib.sites.shortcuts import get_current_site from django.core.cache import cache from django.core.mail import EmailMessage, EmailMultiAlternatives from django.http import HttpResponse, HttpResponseRedirect from django.shortcuts import resolve_url from django.template import TemplateDoesNotExist from django.template.loader import render_to_string from django.urls import reverse from django.utils import timezone from django.utils.encoding import force_text from django.utils.translation import ugettext_lazy as _ from . import app_settings from ..utils import ( build_absolute_uri, email_address_exists, generate_unique_username, get_user_model, import_attribute, ) class DefaultAccountAdapter(object): error_messages = { 'username_blacklisted': _('Username can not be used. Please use other username.'), 'username_taken': AbstractUser._meta.get_field('username').error_messages['unique'], 'too_many_login_attempts': _('Too many failed login attempts. Try again later.'), 'email_taken': _("A user is already registered with this e-mail address."), } def __init__(self, request=None): self.request = request def stash_verified_email(self, request, email): request.session['account_verified_email'] = email def unstash_verified_email(self, request): ret = request.session.get('account_verified_email') request.session['account_verified_email'] = None return ret def stash_user(self, request, user): request.session['account_user'] = user def unstash_user(self, request): return request.session.pop('account_user', None) def is_email_verified(self, request, email): """ Checks whether or not the email address is already verified beyond allauth scope, for example, by having accepted an invitation before signing up. """ ret = False verified_email = request.session.get('account_verified_email') if verified_email: ret = verified_email.lower() == email.lower() return ret def format_email_subject(self, subject): prefix = app_settings.EMAIL_SUBJECT_PREFIX if prefix is None: site = get_current_site(self.request) prefix = "[{name}] ".format(name=site.name) return prefix + force_text(subject) def get_from_email(self): """ This is a hook that can be overridden to programatically set the 'from' email address for sending emails """ return settings.DEFAULT_FROM_EMAIL def render_mail(self, template_prefix, email, context): """ Renders an e-mail to `email`. `template_prefix` identifies the e-mail that is to be sent, e.g. "account/email/email_confirmation" """ subject = render_to_string('{0}_subject.txt'.format(template_prefix), context) # remove superfluous line breaks subject = " ".join(subject.splitlines()).strip() subject = self.format_email_subject(subject) from_email = self.get_from_email() bodies = {} for ext in ['html', 'txt']: try: template_name = '{0}_message.{1}'.format(template_prefix, ext) bodies[ext] = render_to_string(template_name, context).strip() except TemplateDoesNotExist: if ext == 'txt' and not bodies: # We need at least one body raise if 'txt' in bodies: msg = EmailMultiAlternatives(subject, bodies['txt'], from_email, [email]) if 'html' in bodies: msg.attach_alternative(bodies['html'], 'text/html') else: msg = EmailMessage(subject, bodies['html'], from_email, [email]) msg.content_subtype = 'html' # Main content is now text/html return msg def send_mail(self, template_prefix, email, context): msg = self.render_mail(template_prefix, email, context) msg.send() def get_login_redirect_url(self, request): """ Returns the default URL to redirect to after logging in. Note that URLs passed explicitly (e.g. by passing along a `next` GET parameter) take precedence over the value returned here. """ assert request.user.is_authenticated url = getattr(settings, "LOGIN_REDIRECT_URLNAME", None) if url: warnings.warn("LOGIN_REDIRECT_URLNAME is deprecated, simply" " use LOGIN_REDIRECT_URL with a URL name", DeprecationWarning) else: url = settings.LOGIN_REDIRECT_URL return resolve_url(url) def get_logout_redirect_url(self, request): """ Returns the URL to redirect to after the user logs out. Note that this method is also invoked if you attempt to log out while no users is logged in. Therefore, request.user is not guaranteed to be an authenticated user. """ return resolve_url(app_settings.LOGOUT_REDIRECT_URL) def get_email_confirmation_redirect_url(self, request): """ The URL to return to after successful e-mail confirmation. """ if request.user.is_authenticated: if app_settings.EMAIL_CONFIRMATION_AUTHENTICATED_REDIRECT_URL: return \ app_settings.EMAIL_CONFIRMATION_AUTHENTICATED_REDIRECT_URL else: return self.get_login_redirect_url(request) else: return app_settings.EMAIL_CONFIRMATION_ANONYMOUS_REDIRECT_URL def is_open_for_signup(self, request): """ Checks whether or not the site is open for signups. Next to simply returning True/False you can also intervene the regular flow by raising an ImmediateHttpResponse """ return True def new_user(self, request): """ Instantiates a new User instance. """ user = get_user_model()() return user def populate_username(self, request, user): """ Fills in a valid username, if required and missing. If the username is already present it is assumed to be valid (unique). """ from .utils import user_username, user_email, user_field first_name = user_field(user, 'first_name') last_name = user_field(user, 'last_name') email = user_email(user) username = user_username(user) if app_settings.USER_MODEL_USERNAME_FIELD: user_username( user, username or self.generate_unique_username([ first_name, last_name, email, username, 'user'])) def generate_unique_username(self, txts, regex=None): return generate_unique_username(txts, regex) def save_user(self, request, user, form, commit=True): """ Saves a new `User` instance using information provided in the signup form. """ from .utils import user_username, user_email, user_field data = form.cleaned_data first_name = data.get('first_name') last_name = data.get('last_name') email = data.get('email') username = data.get('username') user_email(user, email) user_username(user, username) if first_name: user_field(user, 'first_name', first_name) if last_name: user_field(user, 'last_name', last_name) if 'password1' in data: user.set_password(data["password1"]) else: user.set_unusable_password() self.populate_username(request, user) if commit: # Ability not to commit makes it easier to derive from # this adapter by adding user.save() return user def clean_username(self, username, shallow=False): """ Validates the username. You can hook into this if you want to (dynamically) restrict what usernames can be chosen. """ for validator in app_settings.USERNAME_VALIDATORS: validator(username) # TODO: Add regexp support to USERNAME_BLACKLIST username_blacklist_lower = [ub.lower() for ub in app_settings.USERNAME_BLACKLIST] if username.lower() in username_blacklist_lower: raise forms.ValidationError( self.error_messages['username_blacklisted']) # Skipping database lookups when shallow is True, needed for unique # username generation. if not shallow: from .utils import filter_users_by_username if filter_users_by_username(username).exists(): user_model = get_user_model() username_field = app_settings.USER_MODEL_USERNAME_FIELD error_message = user_model._meta.get_field( username_field).error_messages.get('unique') if not error_message: error_message = self.error_messages['username_taken'] raise forms.ValidationError(error_message) return username def clean_email(self, email): """ Validates an email value. You can hook into this if you want to (dynamically) restrict what email addresses can be chosen. """ return email def clean_password(self, password, user=None): """ Validates a password. You can hook into this if you want to restric the allowed password choices. """ min_length = app_settings.PASSWORD_MIN_LENGTH if min_length and len(password) < min_length: raise forms.ValidationError(_("Password must be a minimum of {0} " "characters.").format(min_length)) validate_password(password, user) return password def validate_unique_email(self, email): if email_address_exists(email): raise forms.ValidationError(self.error_messages['email_taken']) return email def add_message(self, request, level, message_template, message_context=None, extra_tags=''): """ Wrapper of `django.contrib.messages.add_message`, that reads the message text from a template. """ if 'django.contrib.messages' in settings.INSTALLED_APPS: try: if message_context is None: message_context = {} message = render_to_string(message_template, message_context).strip() if message: messages.add_message(request, level, message, extra_tags=extra_tags) except TemplateDoesNotExist: pass def ajax_response(self, request, response, redirect_to=None, form=None, data=None): resp = {} status = response.status_code if redirect_to: status = 200 resp['location'] = redirect_to if form: if request.method == 'POST': if form.is_valid(): status = 200 else: status = 400 else: status = 200 resp['form'] = self.ajax_response_form(form) if hasattr(response, 'render'): response.render() resp['html'] = response.content.decode('utf8') if data is not None: resp['data'] = data return HttpResponse(json.dumps(resp), status=status, content_type='application/json') def ajax_response_form(self, form): form_spec = { 'fields': {}, 'field_order': [], 'errors': form.non_field_errors() } for field in form: field_spec = { 'label': force_text(field.label), 'value': field.value(), 'help_text': force_text(field.help_text), 'errors': [ force_text(e) for e in field.errors ], 'widget': { 'attrs': { k: force_text(v) for k, v in field.field.widget.attrs.items() } } } form_spec['fields'][field.html_name] = field_spec form_spec['field_order'].append(field.html_name) return form_spec def login(self, request, user): # HACK: This is not nice. The proper Django way is to use an # authentication backend if not hasattr(user, 'backend'): from .auth_backends import AuthenticationBackend backends = get_backends() backend = None for b in backends: if isinstance(b, AuthenticationBackend): # prefer our own backend backend = b break elif not backend and hasattr(b, 'get_user'): # Pick the first vald one backend = b backend_path = '.'.join([backend.__module__, backend.__class__.__name__]) user.backend = backend_path django_login(request, user) def logout(self, request): django_logout(request) def confirm_email(self, request, email_address): """ Marks the email address as confirmed on the db """ email_address.verified = True email_address.set_as_primary(conditional=True) email_address.save() def set_password(self, user, password): user.set_password(password) user.save() def get_user_search_fields(self): user = get_user_model()() return filter(lambda a: a and hasattr(user, a), [app_settings.USER_MODEL_USERNAME_FIELD, 'first_name', 'last_name', 'email']) def is_safe_url(self, url): from django.utils.http import is_safe_url return is_safe_url(url) def get_email_confirmation_url(self, request, emailconfirmation): """Constructs the email confirmation (activation) url. Note that if you have architected your system such that email confirmations are sent outside of the request context `request` can be `None` here. """ url = reverse( "account_confirm_email", args=[emailconfirmation.key]) ret = build_absolute_uri( request, url) return ret def send_confirmation_mail(self, request, emailconfirmation, signup): current_site = get_current_site(request) activate_url = self.get_email_confirmation_url( request, emailconfirmation) ctx = { "user": emailconfirmation.email_address.user, "activate_url": activate_url, "current_site": current_site, "key": emailconfirmation.key, } if signup: email_template = 'account/email/email_confirmation_signup' else: email_template = 'account/email/email_confirmation' self.send_mail(email_template, emailconfirmation.email_address.email, ctx) def respond_user_inactive(self, request, user): return HttpResponseRedirect( reverse('account_inactive')) def respond_email_verification_sent(self, request, user): return HttpResponseRedirect( reverse('account_email_verification_sent')) def _get_login_attempts_cache_key(self, request, **credentials): site = get_current_site(request) login = credentials.get('email', credentials.get('username', '')) login_key = hashlib.sha256(login.encode('utf8')).hexdigest() return 'allauth/login_attempts@{site_id}:{login}'.format( site_id=site.pk, login=login_key) def pre_authenticate(self, request, **credentials): if app_settings.LOGIN_ATTEMPTS_LIMIT: cache_key = self._get_login_attempts_cache_key( request, **credentials) login_data = cache.get(cache_key, None) if login_data: dt = timezone.now() current_attempt_time = time.mktime(dt.timetuple()) if (len(login_data) >= app_settings.LOGIN_ATTEMPTS_LIMIT and current_attempt_time < ( login_data[-1] + app_settings.LOGIN_ATTEMPTS_TIMEOUT)): raise forms.ValidationError( self.error_messages['too_many_login_attempts']) def authenticate(self, request, **credentials): """Only authenticates, does not actually login. See `login`""" self.pre_authenticate(request, **credentials) user = authenticate(request, **credentials) if user: cache_key = self._get_login_attempts_cache_key( request, **credentials) cache.delete(cache_key) else: self.authentication_failed(request, **credentials) return user def authentication_failed(self, request, **credentials): cache_key = self._get_login_attempts_cache_key(request, **credentials) data = cache.get(cache_key, []) dt = timezone.now() data.append(time.mktime(dt.timetuple())) cache.set(cache_key, data, app_settings.LOGIN_ATTEMPTS_TIMEOUT) def is_ajax(self, request): return request.is_ajax() def get_adapter(request=None): return import_attribute(app_settings.ADAPTER)(request) django-allauth-0.35.0/allauth/account/management/0000755000076500000240000000000013235133532022652 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/account/management/__init__.py0000644000076500000240000000000012357313011024745 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/account/management/commands/0000755000076500000240000000000013235133532024453 5ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/account/management/commands/account_unsetmultipleprimaryemails.py0000644000076500000240000000323313117447114034256 0ustar pennersrstaff00000000000000from django.core.management.base import BaseCommand from django.db.models import Count from allauth.account.models import EmailAddress from allauth.account.utils import user_email from allauth.utils import get_user_model class Command(BaseCommand): def handle(self, *args, **options): for user in self.get_users_with_multiple_primary_email(): self.unprimary_extra_primary_emails(user) def get_users_with_multiple_primary_email(self): user_pks = [] for email_address_dict in EmailAddress.objects.filter( primary=True).values('user').annotate( Count('user')).filter(user__count__gt=1): user_pks.append(email_address_dict['user']) return get_user_model().objects.filter(pk__in=user_pks) def unprimary_extra_primary_emails(self, user): primary_email_addresses = EmailAddress.objects.filter( user=user, primary=True) for primary_email_address in primary_email_addresses: if primary_email_address.email == user_email(user): break else: # Didn't find the main email addresses and break the for loop print( "WARNING: Multiple primary without a user.email match for" "user pk %s; (tried: %s, using: %s)") % ( user.pk, ", ".join([ email_address.email for email_address in primary_email_addresses]), primary_email_address) primary_email_addresses.exclude( pk=primary_email_address.pk).update(primary=False) django-allauth-0.35.0/allauth/account/management/commands/__init__.py0000644000076500000240000000000012357313011026546 0ustar pennersrstaff00000000000000django-allauth-0.35.0/allauth/account/__init__.py0000644000076500000240000000007213055274502022651 0ustar pennersrstaff00000000000000default_app_config = 'allauth.account.apps.AccountConfig' django-allauth-0.35.0/allauth/account/apps.py0000644000076500000240000000027213117447114022057 0ustar pennersrstaff00000000000000from django.apps import AppConfig from django.utils.translation import ugettext_lazy as _ class AccountConfig(AppConfig): name = 'allauth.account' verbose_name = _('Accounts') django-allauth-0.35.0/allauth/account/auth_backends.py0000644000076500000240000000401313235130412023673 0ustar pennersrstaff00000000000000from django.contrib.auth.backends import ModelBackend from . import app_settings from ..utils import get_user_model from .app_settings import AuthenticationMethod from .utils import filter_users_by_email, filter_users_by_username class AuthenticationBackend(ModelBackend): def authenticate(self, request, **credentials): ret = None if app_settings.AUTHENTICATION_METHOD == AuthenticationMethod.EMAIL: ret = self._authenticate_by_email(**credentials) elif app_settings.AUTHENTICATION_METHOD \ == AuthenticationMethod.USERNAME_EMAIL: ret = self._authenticate_by_email(**credentials) if not ret: ret = self._authenticate_by_username(**credentials) else: ret = self._authenticate_by_username(**credentials) return ret def _authenticate_by_username(self, **credentials): username_field = app_settings.USER_MODEL_USERNAME_FIELD username = credentials.get('username') password = credentials.get('password') User = get_user_model() if not username_field or username is None or password is None: return None try: # Username query is case insensitive user = filter_users_by_username(username).get() if user.check_password(password): return user except User.DoesNotExist: return None def _authenticate_by_email(self, **credentials): # Even though allauth will pass along `email`, other apps may # not respect this setting. For example, when using # django-tastypie basic authentication, the login is always # passed as `username`. So let's place nice with other apps # and use username as fallback email = credentials.get('email', credentials.get('username')) if email: for user in filter_users_by_email(email): if user.check_password(credentials["password"]): return user return None django-allauth-0.35.0/allauth/account/forms.py0000644000076500000240000005301713235130412022236 0ustar pennersrstaff00000000000000from __future__ import absolute_import import warnings from importlib import import_module from django import forms from django.contrib.auth.tokens import PasswordResetTokenGenerator from django.contrib.sites.shortcuts import get_current_site from django.core import exceptions, validators from django.urls import reverse from django.utils.translation import pgettext, ugettext, ugettext_lazy as _ from . import app_settings from ..utils import ( build_absolute_uri, get_username_max_length, set_form_field_order, ) from .adapter import get_adapter from .app_settings import AuthenticationMethod from .models import EmailAddress from .utils import ( filter_users_by_email, get_user_model, perform_login, setup_user_email, sync_user_email_addresses, url_str_to_user_pk, user_email, user_pk_to_url_str, user_username, ) class EmailAwarePasswordResetTokenGenerator(PasswordResetTokenGenerator): def _make_hash_value(self, user, timestamp): ret = super( EmailAwarePasswordResetTokenGenerator, self)._make_hash_value( user, timestamp) sync_user_email_addresses(user) emails = set([user.email]) emails.update( EmailAddress.objects .filter(user=user) .values_list('email', flat=True)) ret += '|'.join(sorted(emails)) return ret default_token_generator = EmailAwarePasswordResetTokenGenerator() class PasswordVerificationMixin(object): def clean(self): cleaned_data = super(PasswordVerificationMixin, self).clean() password1 = cleaned_data.get('password1') password2 = cleaned_data.get('password2') if (password1 and password2) and password1 != password2: self.add_error( 'password2', _("You must type the same password each time.") ) return cleaned_data class PasswordField(forms.CharField): def __init__(self, *args, **kwargs): render_value = kwargs.pop('render_value', app_settings.PASSWORD_INPUT_RENDER_VALUE) kwargs['widget'] = forms.PasswordInput(render_value=render_value, attrs={'placeholder': kwargs.get("label")}) super(PasswordField, self).__init__(*args, **kwargs) class SetPasswordField(PasswordField): def __init__(self, *args, **kwargs): super(SetPasswordField, self).__init__(*args, **kwargs) self.user = None def clean(self, value): value = super(SetPasswordField, self).clean(value) value = get_adapter().clean_password(value, user=self.user) return value class LoginForm(forms.Form): password = PasswordField(label=_("Password")) remember = forms.BooleanField(label=_("Remember Me"), required=False) user = None error_messages = { 'account_inactive': _("This account is currently inactive."), 'email_password_mismatch': _("The e-mail address and/or password you specified are not correct."), 'username_password_mismatch': _("The username and/or password you specified are not correct."), } def __init__(self, *args, **kwargs): self.request = kwargs.pop('request', None) super(LoginForm, self).__init__(*args, **kwargs) if app_settings.AUTHENTICATION_METHOD == AuthenticationMethod.EMAIL: login_widget = forms.TextInput(attrs={'type': 'email', 'placeholder': _('E-mail address'), 'autofocus': 'autofocus'}) login_field = forms.EmailField(label=_("E-mail"), widget=login_widget) elif app_settings.AUTHENTICATION_METHOD \ == AuthenticationMethod.USERNAME: login_widget = forms.TextInput(attrs={'placeholder': _('Username'), 'autofocus': 'autofocus'}) login_field = forms.CharField( label=_("Username"), widget=login_widget, max_length=get_username_max_length()) else: assert app_settings.AUTHENTICATION_METHOD \ == AuthenticationMethod.USERNAME_EMAIL login_widget = forms.TextInput(attrs={'placeholder': _('Username or e-mail'), 'autofocus': 'autofocus'}) login_field = forms.CharField(label=pgettext("field label", "Login"), widget=login_widget) self.fields["login"] = login_field set_form_field_order(self, ["login", "password", "remember"]) if app_settings.SESSION_REMEMBER is not None: del self.fields['remember'] def user_credentials(self): """ Provides the credentials required to authenticate the user for login. """ credentials = {} login = self.cleaned_data["login"] if app_settings.AUTHENTICATION_METHOD == AuthenticationMethod.EMAIL: credentials["email"] = login elif ( app_settings.AUTHENTICATION_METHOD == AuthenticationMethod.USERNAME): credentials["username"] = login else: if self._is_login_email(login): credentials["email"] = login credentials["username"] = login credentials["password"] = self.cleaned_data["password"] return credentials def clean_login(self): login = self.cleaned_data['login'] return login.strip() def _is_login_email(self, login): try: validators.validate_email(login) ret = True except exceptions.ValidationError: ret = False return ret def clean(self): super(LoginForm, self).clean() if self._errors: return credentials = self.user_credentials() user = get_adapter(self.request).authenticate( self.request, **credentials) if user: self.user = user else: auth_method = app_settings.AUTHENTICATION_METHOD if auth_method == app_settings.AuthenticationMethod.USERNAME_EMAIL: login = self.cleaned_data['login'] if self._is_login_email(login): auth_method = app_settings.AuthenticationMethod.EMAIL else: auth_method = app_settings.AuthenticationMethod.USERNAME raise forms.ValidationError( self.error_messages['%s_password_mismatch' % auth_method]) return self.cleaned_data def login(self, request, redirect_url=None): ret = perform_login(request, self.user, email_verification=app_settings.EMAIL_VERIFICATION, redirect_url=redirect_url) remember = app_settings.SESSION_REMEMBER if remember is None: remember = self.cleaned_data['remember'] if remember: request.session.set_expiry(app_settings.SESSION_COOKIE_AGE) else: request.session.set_expiry(0) return ret class _DummyCustomSignupForm(forms.Form): def signup(self, request, user): """ Invoked at signup time to complete the signup of the user. """ pass def _base_signup_form_class(): """ Currently, we inherit from the custom form, if any. This is all not very elegant, though it serves a purpose: - There are two signup forms: one for local accounts, and one for social accounts - Both share a common base (BaseSignupForm) - Given the above, how to put in a custom signup form? Which form would your custom form derive from, the local or the social one? """ if not app_settings.SIGNUP_FORM_CLASS: return _DummyCustomSignupForm try: fc_module, fc_classname = app_settings.SIGNUP_FORM_CLASS.rsplit('.', 1) except ValueError: raise exceptions.ImproperlyConfigured('%s does not point to a form' ' class' % app_settings.SIGNUP_FORM_CLASS) try: mod = import_module(fc_module) except ImportError as e: raise exceptions.ImproperlyConfigured('Error importing form class %s:' ' "%s"' % (fc_module, e)) try: fc_class = getattr(mod, fc_classname) except AttributeError: raise exceptions.ImproperlyConfigured('Module "%s" does not define a' ' "%s" class' % (fc_module, fc_classname)) if not hasattr(fc_class, 'signup'): if hasattr(fc_class, 'save'): warnings.warn("The custom signup form must offer" " a `def signup(self, request, user)` method", DeprecationWarning) else: raise exceptions.ImproperlyConfigured( 'The custom signup form must implement a "signup" method') return fc_class class BaseSignupForm(_base_signup_form_class()): username = forms.CharField(label=_("Username"), min_length=app_settings.USERNAME_MIN_LENGTH, widget=forms.TextInput( attrs={'placeholder': _('Username'), 'autofocus': 'autofocus'})) email = forms.EmailField(widget=forms.TextInput( attrs={'type': 'email', 'placeholder': _('E-mail address')})) def __init__(self, *args, **kwargs): email_required = kwargs.pop('email_required', app_settings.EMAIL_REQUIRED) self.username_required = kwargs.pop('username_required', app_settings.USERNAME_REQUIRED) super(BaseSignupForm, self).__init__(*args, **kwargs) username_field = self.fields['username'] username_field.max_length = get_username_max_length() username_field.validators.append( validators.MaxLengthValidator(username_field.max_length)) username_field.widget.attrs['maxlength'] = str( username_field.max_length) default_field_order = [ 'email', 'email2', # ignored when not present 'username', 'password1', 'password2' # ignored when not present ] if app_settings.SIGNUP_EMAIL_ENTER_TWICE: self.fields["email2"] = forms.EmailField( label=_("E-mail (again)"), widget=forms.TextInput( attrs={ 'type': 'email', 'placeholder': _('E-mail address confirmation') } ) ) if email_required: self.fields['email'].label = ugettext("E-mail") self.fields['email'].required = True else: self.fields['email'].label = ugettext("E-mail (optional)") self.fields['email'].required = False self.fields['email'].widget.is_required = False if self.username_required: default_field_order = [ 'username', 'email', 'email2', # ignored when not present 'password1', 'password2' # ignored when not present ] if not self.username_required: del self.fields["username"] set_form_field_order( self, getattr(self, 'field_order', None) or default_field_order) def clean_username(self): value = self.cleaned_data["username"] value = get_adapter().clean_username(value) return value def clean_email(self): value = self.cleaned_data['email'] value = get_adapter().clean_email(value) if value and app_settings.UNIQUE_EMAIL: value = self.validate_unique_email(value) return value def validate_unique_email(self, value): return get_adapter().validate_unique_email(value) def clean(self): cleaned_data = super(BaseSignupForm, self).clean() if app_settings.SIGNUP_EMAIL_ENTER_TWICE: email = cleaned_data.get('email') email2 = cleaned_data.get('email2') if (email and email2) and email != email2: self.add_error( 'email2', _("You must type the same email each time.") ) return cleaned_data def custom_signup(self, request, user): custom_form = super(BaseSignupForm, self) if hasattr(custom_form, 'signup') and callable(custom_form.signup): custom_form.signup(request, user) else: warnings.warn("The custom signup form must offer" " a `def signup(self, request, user)` method", DeprecationWarning) # Historically, it was called .save, but this is confusing # in case of ModelForm custom_form.save(user) class SignupForm(BaseSignupForm): def __init__(self, *args, **kwargs): super(SignupForm, self).__init__(*args, **kwargs) self.fields['password1'] = PasswordField(label=_("Password")) if app_settings.SIGNUP_PASSWORD_ENTER_TWICE: self.fields['password2'] = PasswordField( label=_("Password (again)")) if hasattr(self, 'field_order'): set_form_field_order(self, self.field_order) def clean(self): super(SignupForm, self).clean() # `password` cannot be of type `SetPasswordField`, as we don't # have a `User` yet. So, let's populate a dummy user to be used # for password validaton. dummy_user = get_user_model() user_username(dummy_user, self.cleaned_data.get("username")) user_email(dummy_user, self.cleaned_data.get("email")) password = self.cleaned_data.get('password1') if password: try: get_adapter().clean_password( password, user=dummy_user) except forms.ValidationError as e: self.add_error('password1', e) if app_settings.SIGNUP_PASSWORD_ENTER_TWICE \ and "password1" in self.cleaned_data \ and "password2" in self.cleaned_data: if self.cleaned_data["password1"] \ != self.cleaned_data["password2"]: self.add_error( 'password2', _("You must type the same password each time.")) return self.cleaned_data def save(self, request): adapter = get_adapter(request) user = adapter.new_user(request) adapter.save_user(request, user, self) self.custom_signup(request, user) # TODO: Move into adapter `save_user` ? setup_user_email(request, user, []) return user class UserForm(forms.Form): def __init__(self, user=None, *args, **kwargs): self.user = user super(UserForm, self).__init__(*args, **kwargs) class AddEmailForm(UserForm): email = forms.EmailField( label=_("E-mail"), required=True, widget=forms.TextInput( attrs={"type": "email", "size": "30", "placeholder": _('E-mail address')})) def clean_email(self): value = self.cleaned_data["email"] value = get_adapter().clean_email(value) errors = { "this_account": _("This e-mail address is already associated" " with this account."), "different_account": _("This e-mail address is already associated" " with another account."), } users = filter_users_by_email(value) on_this_account = [u for u in users if u.pk == self.user.pk] on_diff_account = [u for u in users if u.pk != self.user.pk] if on_this_account: raise forms.ValidationError(errors["this_account"]) if on_diff_account and app_settings.UNIQUE_EMAIL: raise forms.ValidationError(errors["different_account"]) return value def save(self, request): return EmailAddress.objects.add_email(request, self.user, self.cleaned_data["email"], confirm=True) class ChangePasswordForm(PasswordVerificationMixin, UserForm): oldpassword = PasswordField(label=_("Current Password")) password1 = SetPasswordField(label=_("New Password")) password2 = PasswordField(label=_("New Password (again)")) def __init__(self, *args, **kwargs): super(ChangePasswordForm, self).__init__(*args, **kwargs) self.fields['password1'].user = self.user def clean_oldpassword(self): if not self.user.check_password(self.cleaned_data.get("oldpassword")): raise forms.ValidationError(_("Please type your current" " password.")) return self.cleaned_data["oldpassword"] def save(self): get_adapter().set_password(self.user, self.cleaned_data["password1"]) class SetPasswordForm(PasswordVerificationMixin, UserForm): password1 = SetPasswordField(label=_("Password")) password2 = PasswordField(label=_("Password (again)")) def __init__(self, *args, **kwargs): super(SetPasswordForm, self).__init__(*args, **kwargs) self.fields['password1'].user = self.user def save(self): get_adapter().set_password(self.user, self.cleaned_data["password1"]) class ResetPasswordForm(forms.Form): email = forms.EmailField( label=_("E-mail"), required=True, widget=forms.TextInput(attrs={ "type": "email", "size": "30", "placeholder": _("E-mail address"), }) ) def clean_email(self): email = self.cleaned_data["email"] email = get_adapter().clean_email(email) self.users = filter_users_by_email(email) if not self.users: raise forms.ValidationError(_("The e-mail address is not assigned" " to any user account")) return self.cleaned_data["email"] def save(self, request, **kwargs): current_site = get_current_site(request) email = self.cleaned_data["email"] token_generator = kwargs.get("token_generator", default_token_generator) for user in self.users: temp_key = token_generator.make_token(user) # save it to the password reset model # password_reset = PasswordReset(user=user, temp_key=temp_key) # password_reset.save() # send the password reset email path = reverse("account_reset_password_from_key", kwargs=dict(uidb36=user_pk_to_url_str(user), key=temp_key)) url = build_absolute_uri( request, path) context = {"current_site": current_site, "user": user, "password_reset_url": url, "request": request} if app_settings.AUTHENTICATION_METHOD \ != AuthenticationMethod.EMAIL: context['username'] = user_username(user) get_adapter(request).send_mail( 'account/email/password_reset_key', email, context) return self.cleaned_data["email"] class ResetPasswordKeyForm(PasswordVerificationMixin, forms.Form): password1 = SetPasswordField(label=_("New Password")) password2 = PasswordField(label=_("New Password (again)")) def __init__(self, *args, **kwargs): self.user = kwargs.pop("user", None) self.temp_key = kwargs.pop("temp_key", None) super(ResetPasswordKeyForm, self).__init__(*args, **kwargs) self.fields['password1'].user = self.user def save(self): get_adapter().set_password(self.user, self.cleaned_data["password1"]) class UserTokenForm(forms.Form): uidb36 = forms.CharField() key = forms.CharField() reset_user = None token_generator = default_token_generator error_messages = { 'token_invalid': _('The password reset token was invalid.'), } def _get_user(self, uidb36): User = get_user_model() try: pk = url_str_to_user_pk(uidb36) return User.objects.get(pk=pk) except (ValueError, User.DoesNotExist): return None def clean(self): cleaned_data = super(UserTokenForm, self).clean() uidb36 = cleaned_data.get('uidb36', None) key = cleaned_data.get('key', None) if not key: raise forms.ValidationError(self.error_messages['token_invalid']) self.reset_user = self._get_user(uidb36) if (self.reset_user is None or not self.token_generator.check_token(self.reset_user, key)): raise forms.ValidationError(self.error_messages['token_invalid']) return cleaned_data django-allauth-0.35.0/allauth/account/admin.py0000644000076500000240000000155613235130412022201 0ustar pennersrstaff00000000000000from django.contrib import admin from . import app_settings from .adapter import get_adapter from .models import EmailAddress, EmailConfirmation class EmailAddressAdmin(admin.ModelAdmin): list_display = ('email', 'user', 'primary', 'verified') list_filter = ('primary', 'verified') search_fields = [] raw_id_fields = ('user',) def get_search_fields(self, request): base_fields = get_adapter(request).get_user_search_fields() return ['email'] + list(map(lambda a: 'user__' + a, base_fields)) class EmailConfirmationAdmin(admin.ModelAdmin): list_display = ('email_address', 'created', 'sent', 'key') list_filter = ('sent',) raw_id_fields = ('email_address',) if not app_settings.EMAIL_CONFIRMATION_HMAC: admin.site.register(EmailConfirmation, EmailConfirmationAdmin) admin.site.register(EmailAddress, EmailAddressAdmin) django-allauth-0.35.0/allauth/account/utils.py0000644000076500000240000003601113235130412022243 0ustar pennersrstaff00000000000000from collections import OrderedDict from datetime import timedelta from django.conf import settings from django.contrib import messages from django.contrib.auth import update_session_auth_hash from django.core.exceptions import FieldDoesNotExist, ValidationError from django.db import models from django.db.models import Q from django.http import HttpResponseRedirect from django.utils import six from django.utils.encoding import force_text from django.utils.http import urlencode from django.utils.timezone import now from allauth.compat import base36_to_int, int_to_base36 from . import app_settings, signals from ..exceptions import ImmediateHttpResponse from ..utils import ( get_request_param, get_user_model, import_callable, valid_email_or_none, ) from .adapter import get_adapter from .app_settings import EmailVerificationMethod def get_next_redirect_url(request, redirect_field_name="next"): """ Returns the next URL to redirect to, if it was explicitly passed via the request. """ redirect_to = get_request_param(request, redirect_field_name) if not get_adapter(request).is_safe_url(redirect_to): redirect_to = None return redirect_to def get_login_redirect_url(request, url=None, redirect_field_name="next"): if url and callable(url): # In order to be able to pass url getters around that depend # on e.g. the authenticated state. url = url() redirect_url = ( url or get_next_redirect_url( request, redirect_field_name=redirect_field_name) or get_adapter(request).get_login_redirect_url(request)) return redirect_url _user_display_callable = None def logout_on_password_change(request, user): # Since it is the default behavior of Django to invalidate all sessions on # password change, this function actually has to preserve the session when # logout isn't desired. if not app_settings.LOGOUT_ON_PASSWORD_CHANGE: update_session_auth_hash(request, user) def default_user_display(user): if app_settings.USER_MODEL_USERNAME_FIELD: return getattr(user, app_settings.USER_MODEL_USERNAME_FIELD) else: return force_text(user) def user_display(user): global _user_display_callable if not _user_display_callable: f = getattr(settings, "ACCOUNT_USER_DISPLAY", default_user_display) _user_display_callable = import_callable(f) return _user_display_callable(user) def user_field(user, field, *args): """ Gets or sets (optional) user model fields. No-op if fields do not exist. """ if not field: return User = get_user_model() try: field_meta = User._meta.get_field(field) max_length = field_meta.max_length except FieldDoesNotExist: if not hasattr(user, field): return max_length = None if args: # Setter v = args[0] if v: v = v[0:max_length] setattr(user, field, v) else: # Getter return getattr(user, field) def user_username(user, *args): if args and not app_settings.PRESERVE_USERNAME_CASING and args[0]: args = [args[0].lower()] return user_field(user, app_settings.USER_MODEL_USERNAME_FIELD, *args) def user_email(user, *args): return user_field(user, app_settings.USER_MODEL_EMAIL_FIELD, *args) def perform_login(request, user, email_verification, redirect_url=None, signal_kwargs=None, signup=False): """ Keyword arguments: signup -- Indicates whether or not sending the email is essential (during signup), or if it can be skipped (e.g. in case email verification is optional and we are only logging in). """ # Local users are stopped due to form validation checking # is_active, yet, adapter methods could toy with is_active in a # `user_signed_up` signal. Furthermore, social users should be # stopped anyway. adapter = get_adapter(request) if not user.is_active: return adapter.respond_user_inactive(request, user) from .models import EmailAddress has_verified_email = EmailAddress.objects.filter(user=user, verified=True).exists() if email_verification == EmailVerificationMethod.NONE: pass elif email_verification == EmailVerificationMethod.OPTIONAL: # In case of OPTIONAL verification: send on signup. if not has_verified_email and signup: send_email_confirmation(request, user, signup=signup) elif email_verification == EmailVerificationMethod.MANDATORY: if not has_verified_email: send_email_confirmation(request, user, signup=signup) return adapter.respond_email_verification_sent( request, user) try: adapter.login(request, user) response = HttpResponseRedirect( get_login_redirect_url(request, redirect_url)) if signal_kwargs is None: signal_kwargs = {} signals.user_logged_in.send(sender=user.__class__, request=request, response=response, user=user, **signal_kwargs) adapter.add_message( request, messages.SUCCESS, 'account/messages/logged_in.txt', {'user': user}) except ImmediateHttpResponse as e: response = e.response return response def complete_signup(request, user, email_verification, success_url, signal_kwargs=None): if signal_kwargs is None: signal_kwargs = {} signals.user_signed_up.send(sender=user.__class__, request=request, user=user, **signal_kwargs) return perform_login(request, user, email_verification=email_verification, signup=True, redirect_url=success_url, signal_kwargs=signal_kwargs) def cleanup_email_addresses(request, addresses): """ Takes a list of EmailAddress instances and cleans it up, making sure only valid ones remain, without multiple primaries etc. Order is important: e.g. if multiple primary e-mail addresses exist, the first one encountered will be kept as primary. """ from .models import EmailAddress adapter = get_adapter(request) # Let's group by `email` e2a = OrderedDict() # maps email to EmailAddress primary_addresses = [] verified_addresses = [] primary_verified_addresses = [] for address in addresses: # Pick up only valid ones... email = valid_email_or_none(address.email) if not email: continue # ... and non-conflicting ones... if (app_settings.UNIQUE_EMAIL and EmailAddress.objects.filter(email__iexact=email).exists()): continue a = e2a.get(email.lower()) if a: a.primary = a.primary or address.primary a.verified = a.verified or address.verified else: a = address a.verified = a.verified or adapter.is_email_verified(request, a.email) e2a[email.lower()] = a if a.primary: primary_addresses.append(a) if a.verified: primary_verified_addresses.append(a) if a.verified: verified_addresses.append(a) # Now that we got things sorted out, let's assign a primary if primary_verified_addresses: primary_address = primary_verified_addresses[0] elif verified_addresses: # Pick any verified as primary primary_address = verified_addresses[0] elif primary_addresses: # Okay, let's pick primary then, even if unverified primary_address = primary_addresses[0] elif e2a: # Pick the first primary_address = e2a.keys()[0] else: # Empty primary_address = None # There can only be one primary for a in e2a.values(): a.primary = primary_address.email.lower() == a.email.lower() return list(e2a.values()), primary_address def setup_user_email(request, user, addresses): """ Creates proper EmailAddress for the user that was just signed up. Only sets up, doesn't do any other handling such as sending out email confirmation mails etc. """ from .models import EmailAddress assert not EmailAddress.objects.filter(user=user).exists() priority_addresses = [] # Is there a stashed e-mail? adapter = get_adapter(request) stashed_email = adapter.unstash_verified_email(request) if stashed_email: priority_addresses.append(EmailAddress(user=user, email=stashed_email, primary=True, verified=True)) email = user_email(user) if email: priority_addresses.append(EmailAddress(user=user, email=email, primary=True, verified=False)) addresses, primary = cleanup_email_addresses( request, priority_addresses + addresses) for a in addresses: a.user = user a.save() EmailAddress.objects.fill_cache_for_user(user, addresses) if (primary and email and email.lower() != primary.email.lower()): user_email(user, primary.email) user.save() return primary def send_email_confirmation(request, user, signup=False): """ E-mail verification mails are sent: a) Explicitly: when a user signs up b) Implicitly: when a user attempts to log in using an unverified e-mail while EMAIL_VERIFICATION is mandatory. Especially in case of b), we want to limit the number of mails sent (consider a user retrying a few times), which is why there is a cooldown period before sending a new mail. This cooldown period can be configured in ACCOUNT_EMAIL_CONFIRMATION_COOLDOWN setting. """ from .models import EmailAddress, EmailConfirmation cooldown_period = timedelta( seconds=app_settings.EMAIL_CONFIRMATION_COOLDOWN ) email = user_email(user) if email: try: email_address = EmailAddress.objects.get_for_user(user, email) if not email_address.verified: if app_settings.EMAIL_CONFIRMATION_HMAC: send_email = True else: send_email = not EmailConfirmation.objects.filter( sent__gt=now() - cooldown_period, email_address=email_address).exists() if send_email: email_address.send_confirmation(request, signup=signup) else: send_email = False except EmailAddress.DoesNotExist: send_email = True email_address = EmailAddress.objects.add_email(request, user, email, signup=signup, confirm=True) assert email_address # At this point, if we were supposed to send an email we have sent it. if send_email: get_adapter(request).add_message( request, messages.INFO, 'account/messages/' 'email_confirmation_sent.txt', {'email': email}) if signup: get_adapter(request).stash_user(request, user_pk_to_url_str(user)) def sync_user_email_addresses(user): """ Keep user.email in sync with user.emailaddress_set. Under some circumstances the user.email may not have ended up as an EmailAddress record, e.g. in the case of manually created admin users. """ from .models import EmailAddress email = user_email(user) if email and not EmailAddress.objects.filter(user=user, email__iexact=email).exists(): if app_settings.UNIQUE_EMAIL \ and EmailAddress.objects.filter(email__iexact=email).exists(): # Bail out return EmailAddress.objects.create(user=user, email=email, primary=False, verified=False) def filter_users_by_username(*username): if app_settings.PRESERVE_USERNAME_CASING: qlist = [ Q(**{app_settings.USER_MODEL_USERNAME_FIELD + '__iexact': u}) for u in username] q = qlist[0] for q2 in qlist[1:]: q = q | q2 ret = get_user_model().objects.filter(q) else: ret = get_user_model().objects.filter( **{app_settings.USER_MODEL_USERNAME_FIELD + '__in': [u.lower() for u in username]}) return ret def filter_users_by_email(email): """Return list of users by email address Typically one, at most just a few in length. First we look through EmailAddress table, than customisable User model table. Add results together avoiding SQL joins and deduplicate. """ from .models import EmailAddress User = get_user_model() mails = EmailAddress.objects.filter(email__iexact=email) users = [e.user for e in mails.prefetch_related('user')] if app_settings.USER_MODEL_EMAIL_FIELD: q_dict = {app_settings.USER_MODEL_EMAIL_FIELD + '__iexact': email} users += list(User.objects.filter(**q_dict)) return list(set(users)) def passthrough_next_redirect_url(request, url, redirect_field_name): assert url.find("?") < 0 # TODO: Handle this case properly next_url = get_next_redirect_url(request, redirect_field_name) if next_url: url = url + '?' + urlencode({redirect_field_name: next_url}) return url def user_pk_to_url_str(user): """ This should return a string. """ User = get_user_model() if issubclass(type(User._meta.pk), models.UUIDField): if isinstance(user.pk, six.string_types): return user.pk return user.pk.hex ret = user.pk if isinstance(ret, six.integer_types): ret = int_to_base36(user.pk) return str(ret) def url_str_to_user_pk(s): User = get_user_model() # TODO: Ugh, isn't there a cleaner way to determine whether or not # the PK is a str-like field? if getattr(User._meta.pk, 'remote_field', None): pk_field = User._meta.pk.remote_field.to._meta.pk else: pk_field = User._meta.pk if issubclass(type(pk_field), models.UUIDField): return s try: pk_field.to_python('a') pk = s except ValidationError: pk = base36_to_int(s) return pk django-allauth-0.35.0/allauth/account/tests.py0000644000076500000240000012552613235130412022257 0ustar pennersrstaff00000000000000from __future__ import absolute_import import json import uuid from datetime import timedelta from django import forms from django.conf import settings from django.contrib.auth.models import AbstractUser, AnonymousUser from django.contrib.sites.models import Site from django.core import mail, validators from django.core.exceptions import ValidationError from django.db import models from django.test.client import Client, RequestFactory from django.test.utils import override_settings from django.urls import reverse from django.utils.timezone import now from allauth.account.forms import BaseSignupForm, SignupForm from allauth.account.models import ( EmailAddress, EmailConfirmation, EmailConfirmationHMAC, ) from allauth.tests import Mock, TestCase, patch from allauth.utils import get_user_model, get_username_max_length from . import app_settings from .adapter import get_adapter from .auth_backends import AuthenticationBackend from .signals import user_logged_out from .utils import ( filter_users_by_username, url_str_to_user_pk, user_pk_to_url_str, user_username, ) test_username_validators = [ validators.RegexValidator( regex=r'^[a-c]+$', message='not abc', flags=0)] @override_settings( ACCOUNT_DEFAULT_HTTP_PROTOCOL='https', ACCOUNT_EMAIL_VERIFICATION=app_settings.EmailVerificationMethod.MANDATORY, ACCOUNT_AUTHENTICATION_METHOD=app_settings.AuthenticationMethod.USERNAME, ACCOUNT_SIGNUP_FORM_CLASS=None, ACCOUNT_EMAIL_SUBJECT_PREFIX=None, LOGIN_REDIRECT_URL='/accounts/profile/', ACCOUNT_ADAPTER='allauth.account.adapter.DefaultAccountAdapter', ACCOUNT_USERNAME_REQUIRED=True) class AccountTests(TestCase): def setUp(self): if 'allauth.socialaccount' in settings.INSTALLED_APPS: # Otherwise ImproperlyConfigured exceptions may occur from ..socialaccount.models import SocialApp sa = SocialApp.objects.create(name='testfb', provider='facebook') sa.sites.add(Site.objects.get_current()) @override_settings( ACCOUNT_AUTHENTICATION_METHOD=app_settings.AuthenticationMethod .USERNAME_EMAIL) def test_username_containing_at(self): user = get_user_model().objects.create(username='@raymond.penners') user.set_password('psst') user.save() EmailAddress.objects.create(user=user, email="raymond.penners@example.com", primary=True, verified=True) resp = self.client.post(reverse('account_login'), {'login': '@raymond.penners', 'password': 'psst'}) self.assertRedirects(resp, settings.LOGIN_REDIRECT_URL, fetch_redirect_response=False) def test_signup_same_email_verified_externally(self): user = self._test_signup_email_verified_externally("john@example.com", "john@example.com") self.assertEqual(EmailAddress.objects.filter(user=user).count(), 1) EmailAddress.objects.get(verified=True, email="john@example.com", user=user, primary=True) def test_signup_other_email_verified_externally(self): """ John is invited on john@example.org, but signs up via john@example.com. E-mail verification is by-passed, their home e-mail address is used as a secondary. """ user = self._test_signup_email_verified_externally("john@example.com", "john@example.org") self.assertEqual(EmailAddress.objects.filter(user=user).count(), 2) EmailAddress.objects.get(verified=False, email="john@example.com", user=user, primary=False) EmailAddress.objects.get(verified=True, email="john@example.org", user=user, primary=True) def _test_signup_email_verified_externally(self, signup_email, verified_email): username = 'johndoe' request = RequestFactory().post(reverse('account_signup'), {'username': username, 'email': signup_email, 'password1': 'johndoe', 'password2': 'johndoe'}) # Fake stash_verified_email from django.contrib.messages.middleware import MessageMiddleware from django.contrib.sessions.middleware import SessionMiddleware SessionMiddleware().process_request(request) MessageMiddleware().process_request(request) request.user = AnonymousUser() request.session['account_verified_email'] = verified_email from .views import signup resp = signup(request) self.assertEqual(resp.status_code, 302) self.assertEqual(resp['location'], get_adapter().get_login_redirect_url(request)) self.assertEqual(len(mail.outbox), 0) return get_user_model().objects.get(username=username) @override_settings( ACCOUNT_USERNAME_REQUIRED=True, ACCOUNT_SIGNUP_PASSWORD_ENTER_TWICE=True) def test_signup_password_twice_form_error(self): resp = self.client.post( reverse('account_signup'), data={ 'username': 'johndoe', 'email': 'john@example.org', 'password1': 'johndoe', 'password2': 'janedoe'}) self.assertFormError( resp, 'form', 'password2', 'You must type the same password each time.' ) @override_settings( ACCOUNT_USERNAME_REQUIRED=True, ACCOUNT_SIGNUP_EMAIL_ENTER_TWICE=True) def test_signup_email_twice(self): request = RequestFactory().post(reverse('account_signup'), {'username': 'johndoe', 'email': 'john@example.org', 'email2': 'john@example.org', 'password1': 'johndoe', 'password2': 'johndoe'}) from django.contrib.messages.middleware import MessageMiddleware from django.contrib.sessions.middleware import SessionMiddleware SessionMiddleware().process_request(request) MessageMiddleware().process_request(request) request.user = AnonymousUser() from .views import signup signup(request) user = get_user_model().objects.get(username='johndoe') self.assertEqual(user.email, "john@example.org") def _create_user(self, username='john', password='doe'): user = get_user_model().objects.create( username=username, is_active=True) if password: user.set_password(password) else: user.set_unusable_password() user.save() return user def _create_user_and_login(self, usable_password=True): password = 'doe' if usable_password else False user = self._create_user(password=password) self.client.force_login(user) return user def test_redirect_when_authenticated(self): self._create_user_and_login() c = self.client resp = c.get(reverse('account_login')) self.assertRedirects( resp, "/accounts/profile/", fetch_redirect_response=False ) def test_password_reset_get(self): resp = self.client.get(reverse('account_reset_password')) self.assertTemplateUsed(resp, 'account/password_reset.html') def test_password_set_redirect(self): resp = self._password_set_or_change_redirect( 'account_set_password', True) self.assertRedirects( resp, reverse('account_change_password'), fetch_redirect_response=False) def test_set_password_not_allowed(self): user = self._create_user_and_login(True) pwd = '!*123i1uwn12W23' self.assertFalse(user.check_password(pwd)) resp = self.client.post( reverse('account_set_password'), data={'password1': pwd, 'password2': pwd}) user.refresh_from_db() self.assertFalse(user.check_password(pwd)) self.assertTrue(user.has_usable_password()) self.assertEqual(resp.status_code, 302) def test_password_change_no_redirect(self): resp = self._password_set_or_change_redirect( 'account_change_password', True) self.assertEqual(resp.status_code, 200) def test_password_set_no_redirect(self): resp = self._password_set_or_change_redirect( 'account_set_password', False) self.assertEqual(resp.status_code, 200) def test_password_change_redirect(self): resp = self._password_set_or_change_redirect( 'account_change_password', False) self.assertRedirects( resp, reverse('account_set_password'), fetch_redirect_response=False) def _password_set_or_change_redirect(self, urlname, usable_password): self._create_user_and_login(usable_password) return self.client.get(reverse(urlname)) def test_ajax_password_change(self): self._create_user_and_login() resp = self.client.post( reverse('account_change_password'), data={'oldpassword': 'doe', 'password1': 'AbCdEf!123', 'password2': 'AbCdEf!123456'}, HTTP_X_REQUESTED_WITH='XMLHttpRequest') self.assertEqual(resp['content-type'], 'application/json') data = json.loads(resp.content.decode('utf8')) assert ('same password' in data['form']['fields']['password2']['errors'][0]) def test_password_forgotten_username_hint(self): user = self._request_new_password() body = mail.outbox[0].body assert user.username in body @override_settings( ACCOUNT_AUTHENTICATION_METHOD=app_settings.AuthenticationMethod.EMAIL) def test_password_forgotten_no_username_hint(self): user = self._request_new_password() body = mail.outbox[0].body assert user.username not in body def _request_new_password(self): user = get_user_model().objects.create( username='john', email="john@example.org", is_active=True) user.set_password('doe') user.save() self.client.post( reverse('account_reset_password'), data={'email': 'john@example.org'}) self.assertEqual(len(mail.outbox), 1) self.assertEqual(mail.outbox[0].to, ["john@example.org"]) return user def test_password_reset_flow_with_empty_session(self): """ Test the password reset flow when the session is empty: requesting a new password, receiving the reset link via email, following the link, getting redirected to the new link (without the token) Copying the link and using it in a DIFFERENT client (Browser/Device). """ # Request new password self._request_new_password() body = mail.outbox[0].body self.assertGreater(body.find('https://'), 0) # Extract URL for `password_reset_from_key` view url = body[body.find('/password/reset/'):].split()[0] resp = self.client.get(url) reset_pass_url = resp.url # Accesing the url via a different session resp = self.client_class().get(reset_pass_url) # We should receive the token_fail context_data self.assertTemplateUsed( resp, 'account/password_reset_from_key.%s' % app_settings.TEMPLATE_EXTENSION) self.assertTrue(resp.context_data['token_fail']) def test_password_reset_flow(self): """ Tests the password reset flow: requesting a new password, receiving the reset link via email and finally resetting the password to a new value. """ # Request new password user = self._request_new_password() body = mail.outbox[0].body self.assertGreater(body.find('https://'), 0) # Extract URL for `password_reset_from_key` view and access it url = body[body.find('/password/reset/'):].split()[0] resp = self.client.get(url) # Follow the redirect the actual password reset page with the key # hidden. url = resp.url resp = self.client.get(url) self.assertTemplateUsed( resp, 'account/password_reset_from_key.%s' % app_settings.TEMPLATE_EXTENSION) self.assertFalse('token_fail' in resp.context_data) # Reset the password resp = self.client.post(url, {'password1': 'newpass123', 'password2': 'newpass123'}) self.assertRedirects(resp, reverse('account_reset_password_from_key_done')) # Check the new password is in effect user = get_user_model().objects.get(pk=user.pk) self.assertTrue(user.check_password('newpass123')) # Trying to reset the password against the same URL (or any other # invalid/obsolete URL) returns a bad token response resp = self.client.post(url, {'password1': 'newpass123', 'password2': 'newpass123'}) self.assertTemplateUsed( resp, 'account/password_reset_from_key.%s' % app_settings.TEMPLATE_EXTENSION) self.assertTrue(resp.context_data['token_fail']) # Same should happen when accessing the page directly response = self.client.get(url) self.assertTemplateUsed( response, 'account/password_reset_from_key.%s' % app_settings.TEMPLATE_EXTENSION) self.assertTrue(response.context_data['token_fail']) # When in XHR views, it should respond with a 400 bad request # code, and the response body should contain the JSON-encoded # error from the adapter response = self.client.post(url, {'password1': 'newpass123', 'password2': 'newpass123'}, HTTP_X_REQUESTED_WITH='XMLHttpRequest') self.assertEqual(response.status_code, 400) data = json.loads(response.content.decode('utf8')) assert 'invalid' in data['form']['errors'][0] def test_password_reset_flow_with_email_changed(self): """ Test that the password reset token is invalidated if the user email address was changed. """ user = self._request_new_password() body = mail.outbox[0].body self.assertGreater(body.find('https://'), 0) EmailAddress.objects.create( user=user, email='other@email.org') # Extract URL for `password_reset_from_key` view url = body[body.find('/password/reset/'):].split()[0] resp = self.client.get(url) self.assertTemplateUsed( resp, 'account/password_reset_from_key.%s' % app_settings.TEMPLATE_EXTENSION) self.assertTrue('token_fail' in resp.context_data) @override_settings(ACCOUNT_LOGIN_ON_PASSWORD_RESET=True) def test_password_reset_ACCOUNT_LOGIN_ON_PASSWORD_RESET(self): user = self._request_new_password() body = mail.outbox[0].body url = body[body.find('/password/reset/'):].split()[0] resp = self.client.get(url) # Follow the redirect the actual password reset page with the key # hidden. resp = self.client.post( resp.url, {'password1': 'newpass123', 'password2': 'newpass123'}) self.assertTrue(user.is_authenticated) # EmailVerificationMethod.MANDATORY sends us to the confirm-email page self.assertRedirects(resp, '/confirm-email/') @override_settings(ACCOUNT_EMAIL_CONFIRMATION_HMAC=False) def test_email_verification_mandatory(self): c = Client() # Signup resp = c.post(reverse('account_signup'), {'username': 'johndoe', 'email': 'john@example.com', 'password1': 'johndoe', 'password2': 'johndoe'}, follow=True) self.assertEqual(resp.status_code, 200) self.assertEqual(mail.outbox[0].to, ['john@example.com']) self.assertGreater(mail.outbox[0].body.find('https://'), 0) self.assertEqual(len(mail.outbox), 1) self.assertTemplateUsed( resp, 'account/verification_sent.%s' % app_settings.TEMPLATE_EXTENSION) # Attempt to login, unverified for attempt in [1, 2]: resp = c.post(reverse('account_login'), {'login': 'johndoe', 'password': 'johndoe'}, follow=True) # is_active is controlled by the admin to manually disable # users. I don't want this flag to flip automatically whenever # users verify their email adresses. self.assertTrue(get_user_model().objects.filter( username='johndoe', is_active=True).exists()) self.assertTemplateUsed( resp, 'account/verification_sent.' + app_settings.TEMPLATE_EXTENSION) # Attempt 1: no mail is sent due to cool-down , # but there was already a mail in the outbox. self.assertEqual(len(mail.outbox), attempt) self.assertEqual( EmailConfirmation.objects.filter( email_address__email='john@example.com').count(), attempt) # Wait for cooldown EmailConfirmation.objects.update(sent=now() - timedelta(days=1)) # Verify, and re-attempt to login. confirmation = EmailConfirmation \ .objects \ .filter(email_address__user__username='johndoe')[:1] \ .get() resp = c.get(reverse('account_confirm_email', args=[confirmation.key])) self.assertTemplateUsed( resp, 'account/email_confirm.%s' % app_settings.TEMPLATE_EXTENSION) c.post(reverse('account_confirm_email', args=[confirmation.key])) resp = c.post(reverse('account_login'), {'login': 'johndoe', 'password': 'johndoe'}) self.assertRedirects(resp, settings.LOGIN_REDIRECT_URL, fetch_redirect_response=False) def test_email_escaping(self): site = Site.objects.get_current() site.name = '' site.save() u = get_user_model().objects.create( username='test', email="user@example.com") request = RequestFactory().get('/') EmailAddress.objects.add_email(request, u, u.email, confirm=True) self.assertTrue(mail.outbox[0].subject[1:].startswith(site.name)) @override_settings( ACCOUNT_EMAIL_VERIFICATION=app_settings.EmailVerificationMethod .OPTIONAL) def test_login_unverified_account_optional(self): """Tests login behavior when email verification is optional.""" user = get_user_model().objects.create(username='john') user.set_password('doe') user.save() EmailAddress.objects.create(user=user, email="user@example.com", primary=True, verified=False) resp = self.client.post(reverse('account_login'), {'login': 'john', 'password': 'doe'}) self.assertRedirects(resp, settings.LOGIN_REDIRECT_URL, fetch_redirect_response=False) @override_settings( ACCOUNT_EMAIL_VERIFICATION=app_settings.EmailVerificationMethod .OPTIONAL, ACCOUNT_LOGIN_ATTEMPTS_LIMIT=3) def test_login_failed_attempts_exceeded(self): user = get_user_model().objects.create(username='john') user.set_password('doe') user.save() EmailAddress.objects.create(user=user, email="user@example.com", primary=True, verified=False) for i in range(5): is_valid_attempt = (i == 4) is_locked = (i >= 3) resp = self.client.post( reverse('account_login'), {'login': 'john', 'password': ( 'doe' if is_valid_attempt else 'wrong')}) self.assertFormError( resp, 'form', None, 'Too many failed login attempts. Try again later.' if is_locked else 'The username and/or password you specified are not correct.') def test_login_unverified_account_mandatory(self): """Tests login behavior when email verification is mandatory.""" user = get_user_model().objects.create(username='john') user.set_password('doe') user.save() EmailAddress.objects.create(user=user, email="user@example.com", primary=True, verified=False) resp = self.client.post(reverse('account_login'), {'login': 'john', 'password': 'doe'}) self.assertRedirects(resp, reverse('account_email_verification_sent')) def test_login_inactive_account(self): """ Tests login behavior with inactive accounts. Inactive user accounts should be prevented from performing any actions, regardless of their verified state. """ # Inactive and verified user account user = get_user_model().objects.create(username='john', is_active=False) user.set_password('doe') user.save() EmailAddress.objects.create(user=user, email='john@example.com', primary=True, verified=True) resp = self.client.post(reverse('account_login'), {'login': 'john', 'password': 'doe'}) self.assertRedirects(resp, reverse('account_inactive')) # Inactive and unverified user account user = get_user_model().objects.create(username='doe', is_active=False) user.set_password('john') user.save() EmailAddress.objects.create(user=user, email="user@example.com", primary=True, verified=False) resp = self.client.post(reverse('account_login'), {'login': 'doe', 'password': 'john'}) self.assertRedirects(resp, reverse('account_inactive')) def test_ajax_password_reset(self): get_user_model().objects.create( username='john', email="john@example.org", is_active=True) resp = self.client.post( reverse('account_reset_password'), data={'email': 'john@example.org'}, HTTP_X_REQUESTED_WITH='XMLHttpRequest') self.assertEqual(len(mail.outbox), 1) self.assertEqual(mail.outbox[0].to, ["john@example.org"]) self.assertEqual(resp['content-type'], 'application/json') def test_ajax_login_fail(self): resp = self.client.post(reverse('account_login'), {}, HTTP_X_REQUESTED_WITH='XMLHttpRequest') self.assertEqual(resp.status_code, 400) json.loads(resp.content.decode('utf8')) # TODO: Actually test something @override_settings( ACCOUNT_EMAIL_VERIFICATION=app_settings.EmailVerificationMethod .OPTIONAL) def test_ajax_login_success(self): user = get_user_model().objects.create(username='john', is_active=True) user.set_password('doe') user.save() resp = self.client.post(reverse('account_login'), {'login': 'john', 'password': 'doe'}, HTTP_X_REQUESTED_WITH='XMLHttpRequest') self.assertEqual(resp.status_code, 200) data = json.loads(resp.content.decode('utf8')) self.assertEqual(data['location'], '/accounts/profile/') def test_email_view(self): self._create_user_and_login() self.client.get(reverse('account_email')) # TODO: Actually test something @override_settings(ACCOUNT_LOGOUT_ON_GET=True) def test_logout_view_on_get(self): c, resp = self._logout_view('get') self.assertTemplateUsed(resp, 'account/messages/logged_out.txt') @override_settings(ACCOUNT_LOGOUT_ON_GET=False) def test_logout_view_on_post(self): c, resp = self._logout_view('get') self.assertTemplateUsed( resp, 'account/logout.%s' % app_settings.TEMPLATE_EXTENSION) receiver_mock = Mock() user_logged_out.connect(receiver_mock) resp = c.post(reverse('account_logout')) self.assertTemplateUsed(resp, 'account/messages/logged_out.txt') receiver_mock.assert_called_once_with( sender=get_user_model(), request=resp.wsgi_request, user=get_user_model().objects.get(username='john'), signal=user_logged_out, ) user_logged_out.disconnect(receiver_mock) def _logout_view(self, method): c = Client() user = get_user_model().objects.create(username='john', is_active=True) user.set_password('doe') user.save() c = Client() c.login(username='john', password='doe') return c, getattr(c, method)(reverse('account_logout')) @override_settings(ACCOUNT_EMAIL_VERIFICATION=app_settings .EmailVerificationMethod.OPTIONAL) def test_optional_email_verification(self): c = Client() # Signup c.get(reverse('account_signup')) resp = c.post(reverse('account_signup'), {'username': 'johndoe', 'email': 'john@example.com', 'password1': 'johndoe', 'password2': 'johndoe'}) # Logged in self.assertRedirects(resp, settings.LOGIN_REDIRECT_URL, fetch_redirect_response=False) self.assertEqual(mail.outbox[0].to, ['john@example.com']) self.assertEqual(len(mail.outbox), 1) # Logout & login again c.logout() # Wait for cooldown EmailConfirmation.objects.update(sent=now() - timedelta(days=1)) # Signup resp = c.post(reverse('account_login'), {'login': 'johndoe', 'password': 'johndoe'}) self.assertRedirects(resp, settings.LOGIN_REDIRECT_URL, fetch_redirect_response=False) self.assertEqual(mail.outbox[0].to, ['john@example.com']) # There was an issue that we sent out email confirmation mails # on each login in case of optional verification. Make sure # this is not the case: self.assertEqual(len(mail.outbox), 1) @override_settings(ACCOUNT_AUTHENTICATED_LOGIN_REDIRECTS=False) def test_account_authenticated_login_redirects_is_false(self): self._create_user_and_login() resp = self.client.get(reverse('account_login')) self.assertEqual(resp.status_code, 200) @override_settings(AUTH_PASSWORD_VALIDATORS=[{ 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', 'OPTIONS': { 'min_length': 9, } }]) def test_django_password_validation(self): resp = self.client.post( reverse('account_signup'), {'username': 'johndoe', 'email': 'john@example.com', 'password1': 'johndoe', 'password2': 'johndoe'}) self.assertFormError(resp, 'form', None, []) self.assertFormError( resp, 'form', 'password1', ['This password is too short.' ' It must contain at least 9 characters.']) @override_settings(ACCOUNT_EMAIL_CONFIRMATION_HMAC=True) def test_email_confirmation_hmac_falls_back(self): user = self._create_user() email = EmailAddress.objects.create( user=user, email='a@b.com', verified=False, primary=True) confirmation = EmailConfirmation.create(email) confirmation.sent = now() confirmation.save() self.client.post( reverse('account_confirm_email', args=[confirmation.key])) email = EmailAddress.objects.get(pk=email.pk) self.assertTrue(email.verified) @override_settings(ACCOUNT_EMAIL_CONFIRMATION_HMAC=True) def test_email_confirmation_hmac(self): user = self._create_user() email = EmailAddress.objects.create( user=user, email='a@b.com', verified=False, primary=True) confirmation = EmailConfirmationHMAC(email) confirmation.send() self.assertEqual(len(mail.outbox), 1) self.client.post( reverse('account_confirm_email', args=[confirmation.key])) email = EmailAddress.objects.get(pk=email.pk) self.assertTrue(email.verified) @override_settings( ACCOUNT_EMAIL_CONFIRMATION_HMAC=True, ACCOUNT_EMAIL_CONFIRMATION_EXPIRE_DAYS=0) def test_email_confirmation_hmac_timeout(self): user = self._create_user() email = EmailAddress.objects.create( user=user, email='a@b.com', verified=False, primary=True) confirmation = EmailConfirmationHMAC(email) confirmation.send() self.assertEqual(len(mail.outbox), 1) self.client.post( reverse('account_confirm_email', args=[confirmation.key])) email = EmailAddress.objects.get(pk=email.pk) self.assertFalse(email.verified) @override_settings( ACCOUNT_USERNAME_VALIDATORS='allauth.account.tests' '.test_username_validators') def test_username_validator(self): get_adapter().clean_username('abc') self.assertRaises( ValidationError, lambda: get_adapter().clean_username('def')) class EmailFormTests(TestCase): def setUp(self): User = get_user_model() self.user = User.objects.create(username='john', email="john1@example.org") self.user.set_password('doe') self.user.save() self.email_address = EmailAddress.objects.create( user=self.user, email=self.user.email, verified=True, primary=True) self.email_address2 = EmailAddress.objects.create( user=self.user, email="john2@example.org", verified=False, primary=False) self.client.login(username='john', password='doe') def test_add(self): resp = self.client.post( reverse('account_email'), {'action_add': '', 'email': 'john3@example.org'}) EmailAddress.objects.get( email="john3@example.org", user=self.user, verified=False, primary=False) self.assertTemplateUsed(resp, 'account/messages/email_confirmation_sent.txt') def test_ajax_get(self): resp = self.client.get( reverse('account_email'), HTTP_X_REQUESTED_WITH='XMLHttpRequest') data = json.loads(resp.content.decode('utf8')) assert data['data'] == [ {'email': 'john1@example.org', 'primary': True, 'verified': True}, {'email': 'john2@example.org', 'primary': False, 'verified': False}] def test_ajax_add(self): resp = self.client.post( reverse('account_email'), {'action_add': '', 'email': 'john3@example.org'}, HTTP_X_REQUESTED_WITH='XMLHttpRequest') data = json.loads(resp.content.decode('utf8')) self.assertEqual(data['location'], reverse('account_email')) def test_ajax_add_invalid(self): resp = self.client.post( reverse('account_email'), {'action_add': '', 'email': 'john3#example.org'}, HTTP_X_REQUESTED_WITH='XMLHttpRequest') data = json.loads(resp.content.decode('utf8')) assert 'valid' in data['form']['fields']['email']['errors'][0] def test_remove_primary(self): resp = self.client.post( reverse('account_email'), {'action_remove': '', 'email': self.email_address.email}) EmailAddress.objects.get(pk=self.email_address.pk) self.assertTemplateUsed( resp, 'account/messages/cannot_delete_primary_email.txt') def test_ajax_remove_primary(self): resp = self.client.post( reverse('account_email'), {'action_remove': '', 'email': self.email_address.email}, HTTP_X_REQUESTED_WITH='XMLHttpRequest') self.assertTemplateUsed( resp, 'account/messages/cannot_delete_primary_email.txt') data = json.loads(resp.content.decode('utf8')) self.assertEqual(data['location'], reverse('account_email')) def test_remove_secondary(self): resp = self.client.post( reverse('account_email'), {'action_remove': '', 'email': self.email_address2.email}) self.assertRaises(EmailAddress.DoesNotExist, lambda: EmailAddress.objects.get( pk=self.email_address2.pk)) self.assertTemplateUsed( resp, 'account/messages/email_deleted.txt') def test_set_primary_unverified(self): resp = self.client.post( reverse('account_email'), {'action_primary': '', 'email': self.email_address2.email}) email_address = EmailAddress.objects.get(pk=self.email_address.pk) email_address2 = EmailAddress.objects.get(pk=self.email_address2.pk) self.assertFalse(email_address2.primary) self.assertTrue(email_address.primary) self.assertTemplateUsed( resp, 'account/messages/unverified_primary_email.txt') def test_set_primary(self): email_address2 = EmailAddress.objects.get(pk=self.email_address2.pk) email_address2.verified = True email_address2.save() resp = self.client.post( reverse('account_email'), {'action_primary': '', 'email': self.email_address2.email}) email_address = EmailAddress.objects.get(pk=self.email_address.pk) email_address2 = EmailAddress.objects.get(pk=self.email_address2.pk) self.assertFalse(email_address.primary) self.assertTrue(email_address2.primary) self.assertTemplateUsed( resp, 'account/messages/primary_email_set.txt') def test_verify(self): resp = self.client.post( reverse('account_email'), {'action_send': '', 'email': self.email_address2.email}) self.assertTemplateUsed( resp, 'account/messages/email_confirmation_sent.txt') class BaseSignupFormTests(TestCase): @override_settings( ACCOUNT_USERNAME_REQUIRED=True, ACCOUNT_USERNAME_BLACKLIST=['username']) def test_username_in_blacklist(self): data = { 'username': 'username', 'email': 'user@example.com', } form = BaseSignupForm(data, email_required=True) self.assertFalse(form.is_valid()) @override_settings( ACCOUNT_USERNAME_REQUIRED=True, ACCOUNT_USERNAME_BLACKLIST=['username']) def test_username_not_in_blacklist(self): data = { 'username': 'theusername', 'email': 'user@example.com', } form = BaseSignupForm(data, email_required=True) self.assertTrue(form.is_valid()) @override_settings(ACCOUNT_USERNAME_REQUIRED=True) def test_username_maxlength(self): data = { 'username': 'username', 'email': 'user@example.com', } form = BaseSignupForm(data, email_required=True) max_length = get_username_max_length() field = form.fields['username'] self.assertEqual(field.max_length, max_length) widget = field.widget self.assertEqual(widget.attrs.get('maxlength'), str(max_length)) @override_settings( ACCOUNT_USERNAME_REQUIRED=True, ACCOUNT_SIGNUP_EMAIL_ENTER_TWICE=True) def test_signup_email_verification(self): data = { 'username': 'username', 'email': 'user@example.com', } form = BaseSignupForm(data, email_required=True) self.assertFalse(form.is_valid()) data = { 'username': 'username', 'email': 'user@example.com', 'email2': 'user@example.com', } form = BaseSignupForm(data, email_required=True) self.assertTrue(form.is_valid()) data['email2'] = 'anotheruser@example.com' form = BaseSignupForm(data, email_required=True) self.assertFalse(form.is_valid()) class CustomSignupFormTests(TestCase): @override_settings( ACCOUNT_SIGNUP_EMAIL_ENTER_TWICE=True, ACCOUNT_SIGNUP_PASSOWRD_ENTER_TWICE=True) def test_custom_form_field_order(self): expected_field_order = [ 'email', 'email2', 'password1', 'password2', 'username', 'last_name', 'first_name' ] class TestSignupForm(forms.Form): first_name = forms.CharField(max_length=30) last_name = forms.CharField(max_length=30) field_order = expected_field_order class CustomSignupForm(SignupForm, TestSignupForm): # ACCOUNT_SIGNUP_FORM_CLASS is only abided by when the # BaseSignupForm definition is loaded the first time on Django # startup. @override_settings() has therefore no effect. pass form = CustomSignupForm() self.assertEqual(list(form.fields.keys()), expected_field_order) class AuthenticationBackendTests(TestCase): def setUp(self): user = get_user_model().objects.create( is_active=True, email='john@example.com', username='john') user.set_password(user.username) user.save() self.user = user @override_settings( ACCOUNT_AUTHENTICATION_METHOD=app_settings.AuthenticationMethod.USERNAME) # noqa def test_auth_by_username(self): user = self.user backend = AuthenticationBackend() self.assertEqual( backend.authenticate( request=None, username=user.username, password=user.username).pk, user.pk) self.assertEqual( backend.authenticate( request=None, username=user.email, password=user.username), None) @override_settings( ACCOUNT_AUTHENTICATION_METHOD=app_settings.AuthenticationMethod.EMAIL) # noqa def test_auth_by_email(self): user = self.user backend = AuthenticationBackend() self.assertEqual( backend.authenticate( request=None, username=user.email, password=user.username).pk, user.pk) self.assertEqual( backend.authenticate( request=None, username=user.username, password=user.username), None) @override_settings( ACCOUNT_AUTHENTICATION_METHOD=app_settings.AuthenticationMethod.USERNAME_EMAIL) # noqa def test_auth_by_username_or_email(self): user = self.user backend = AuthenticationBackend() self.assertEqual( backend.authenticate( request=None, username=user.email, password=user.username).pk, user.pk) self.assertEqual( backend.authenticate( request=None, username=user.username, password=user.username).pk, user.pk) class UUIDUser(AbstractUser): id = models.UUIDField( primary_key=True, default=uuid.uuid4, editable=False ) class Meta(AbstractUser.Meta): swappable = "AUTH_USER_MODEL" class UtilsTests(TestCase): def setUp(self): self.user_id = uuid.uuid4().hex def test_url_str_to_pk_identifies_UUID_as_stringlike(self): with patch('allauth.account.utils.get_user_model') as mocked_gum: mocked_gum.return_value = UUIDUser self.assertEqual(url_str_to_user_pk(self.user_id), self.user_id) def test_pk_to_url_string_identifies_UUID_as_stringlike(self): user = UUIDUser( is_active=True, email='john@example.com', username='john') self.assertEqual(user_pk_to_url_str(user), str(user.pk)) @override_settings(ACCOUNT_PRESERVE_USERNAME_CASING=False) def test_username_lower_cased(self): user = get_user_model()() user_username(user, 'CamelCase') self.assertEqual(user_username(user), 'camelcase') # TODO: Actually test something filter_users_by_username('CamelCase', 'FooBar') @override_settings(ACCOUNT_PRESERVE_USERNAME_CASING=True) def test_username_case_preserved(self): user = get_user_model()() user_username(user, 'CamelCase') self.assertEqual(user_username(user), 'CamelCase') # TODO: Actually test something filter_users_by_username('camelcase', 'foobar') django-allauth-0.35.0/allauth/account/urls.py0000644000076500000240000000241713117447114022104 0ustar pennersrstaff00000000000000from django.conf.urls import url from . import views urlpatterns = [ url(r"^signup/$", views.signup, name="account_signup"), url(r"^login/$", views.login, name="account_login"), url(r"^logout/$", views.logout, name="account_logout"), url(r"^password/change/$", views.password_change, name="account_change_password"), url(r"^password/set/$", views.password_set, name="account_set_password"), url(r"^inactive/$", views.account_inactive, name="account_inactive"), # E-mail url(r"^email/$", views.email, name="account_email"), url(r"^confirm-email/$", views.email_verification_sent, name="account_email_verification_sent"), url(r"^confirm-email/(?P[-:\w]+)/$", views.confirm_email, name="account_confirm_email"), # password reset url(r"^password/reset/$", views.password_reset, name="account_reset_password"), url(r"^password/reset/done/$", views.password_reset_done, name="account_reset_password_done"), url(r"^password/reset/key/(?P[0-9A-Za-z]+)-(?P.+)/$", views.password_reset_from_key, name="account_reset_password_from_key"), url(r"^password/reset/key/done/$", views.password_reset_from_key_done, name="account_reset_password_from_key_done"), ] django-allauth-0.35.0/allauth/account/views.py0000644000076500000240000007431513235130412022251 0ustar pennersrstaff00000000000000from django.contrib import messages from django.contrib.auth.decorators import login_required from django.contrib.sites.shortcuts import get_current_site from django.http import ( Http404, HttpResponsePermanentRedirect, HttpResponseRedirect, ) from django.shortcuts import redirect from django.urls import reverse, reverse_lazy from django.utils.decorators import method_decorator from django.views.decorators.debug import sensitive_post_parameters from django.views.generic.base import TemplateResponseMixin, TemplateView, View from django.views.generic.edit import FormView from . import app_settings, signals from ..exceptions import ImmediateHttpResponse from ..utils import get_form_class, get_request_param from .adapter import get_adapter from .forms import ( AddEmailForm, ChangePasswordForm, LoginForm, ResetPasswordForm, ResetPasswordKeyForm, SetPasswordForm, SignupForm, UserTokenForm, ) from .models import EmailAddress, EmailConfirmation, EmailConfirmationHMAC from .utils import ( complete_signup, get_login_redirect_url, get_next_redirect_url, logout_on_password_change, passthrough_next_redirect_url, perform_login, sync_user_email_addresses, url_str_to_user_pk, ) INTERNAL_RESET_URL_KEY = "set-password" INTERNAL_RESET_SESSION_KEY = "_password_reset_key" sensitive_post_parameters_m = method_decorator( sensitive_post_parameters('password', 'password1', 'password2')) def _ajax_response(request, response, form=None, data=None): adapter = get_adapter(request) if adapter.is_ajax(request): if (isinstance(response, HttpResponseRedirect) or isinstance( response, HttpResponsePermanentRedirect)): redirect_to = response['Location'] else: redirect_to = None response = adapter.ajax_response( request, response, form=form, data=data, redirect_to=redirect_to) return response class RedirectAuthenticatedUserMixin(object): def dispatch(self, request, *args, **kwargs): if request.user.is_authenticated and \ app_settings.AUTHENTICATED_LOGIN_REDIRECTS: redirect_to = self.get_authenticated_redirect_url() response = HttpResponseRedirect(redirect_to) return _ajax_response(request, response) else: response = super(RedirectAuthenticatedUserMixin, self).dispatch(request, *args, **kwargs) return response def get_authenticated_redirect_url(self): redirect_field_name = self.redirect_field_name return get_login_redirect_url(self.request, url=self.get_success_url(), redirect_field_name=redirect_field_name) class AjaxCapableProcessFormViewMixin(object): def get(self, request, *args, **kwargs): response = super(AjaxCapableProcessFormViewMixin, self).get( request, *args, **kwargs) form = self.get_form() return _ajax_response( self.request, response, form=form, data=self._get_ajax_data_if()) def post(self, request, *args, **kwargs): form_class = self.get_form_class() form = self.get_form(form_class) if form.is_valid(): response = self.form_valid(form) else: response = self.form_invalid(form) return _ajax_response( self.request, response, form=form, data=self._get_ajax_data_if()) def get_form(self, form_class=None): form = getattr(self, '_cached_form', None) if form is None: form = super(AjaxCapableProcessFormViewMixin, self).get_form( form_class) self._cached_form = form return form def _get_ajax_data_if(self): return ( self.get_ajax_data() if get_adapter(self.request).is_ajax(self.request) else None) def get_ajax_data(self): return None class LoginView(RedirectAuthenticatedUserMixin, AjaxCapableProcessFormViewMixin, FormView): form_class = LoginForm template_name = "account/login." + app_settings.TEMPLATE_EXTENSION success_url = None redirect_field_name = "next" @sensitive_post_parameters_m def dispatch(self, request, *args, **kwargs): return super(LoginView, self).dispatch(request, *args, **kwargs) def get_form_kwargs(self): kwargs = super(LoginView, self).get_form_kwargs() kwargs['request'] = self.request return kwargs def get_form_class(self): return get_form_class(app_settings.FORMS, 'login', self.form_class) def form_valid(self, form): success_url = self.get_success_url() try: return form.login(self.request, redirect_url=success_url) except ImmediateHttpResponse as e: return e.response def get_success_url(self): # Explicitly passed ?next= URL takes precedence ret = (get_next_redirect_url( self.request, self.redirect_field_name) or self.success_url) return ret def get_context_data(self, **kwargs): ret = super(LoginView, self).get_context_data(**kwargs) signup_url = passthrough_next_redirect_url(self.request, reverse("account_signup"), self.redirect_field_name) redirect_field_value = get_request_param(self.request, self.redirect_field_name) site = get_current_site(self.request) ret.update({"signup_url": signup_url, "site": site, "redirect_field_name": self.redirect_field_name, "redirect_field_value": redirect_field_value}) return ret login = LoginView.as_view() class CloseableSignupMixin(object): template_name_signup_closed = ( "account/signup_closed." + app_settings.TEMPLATE_EXTENSION) def dispatch(self, request, *args, **kwargs): try: if not self.is_open(): return self.closed() except ImmediateHttpResponse as e: return e.response return super(CloseableSignupMixin, self).dispatch(request, *args, **kwargs) def is_open(self): return get_adapter(self.request).is_open_for_signup(self.request) def closed(self): response_kwargs = { "request": self.request, "template": self.template_name_signup_closed, } return self.response_class(**response_kwargs) class SignupView(RedirectAuthenticatedUserMixin, CloseableSignupMixin, AjaxCapableProcessFormViewMixin, FormView): template_name = "account/signup." + app_settings.TEMPLATE_EXTENSION form_class = SignupForm redirect_field_name = "next" success_url = None @sensitive_post_parameters_m def dispatch(self, request, *args, **kwargs): return super(SignupView, self).dispatch(request, *args, **kwargs) def get_form_class(self): return get_form_class(app_settings.FORMS, 'signup', self.form_class) def get_success_url(self): # Explicitly passed ?next= URL takes precedence ret = ( get_next_redirect_url( self.request, self.redirect_field_name) or self.success_url) return ret def form_valid(self, form): # By assigning the User to a property on the view, we allow subclasses # of SignupView to access the newly created User instance self.user = form.save(self.request) try: return complete_signup( self.request, self.user, app_settings.EMAIL_VERIFICATION, self.get_success_url()) except ImmediateHttpResponse as e: return e.response def get_context_data(self, **kwargs): ret = super(SignupView, self).get_context_data(**kwargs) form = ret['form'] email = self.request.session.get('account_verified_email') if email: email_keys = ['email'] if app_settings.SIGNUP_EMAIL_ENTER_TWICE: email_keys.append('email2') for email_key in email_keys: form.fields[email_key].initial = email login_url = passthrough_next_redirect_url(self.request, reverse("account_login"), self.redirect_field_name) redirect_field_name = self.redirect_field_name redirect_field_value = get_request_param(self.request, redirect_field_name) ret.update({"login_url": login_url, "redirect_field_name": redirect_field_name, "redirect_field_value": redirect_field_value}) return ret signup = SignupView.as_view() class ConfirmEmailView(TemplateResponseMixin, View): template_name = "account/email_confirm." + app_settings.TEMPLATE_EXTENSION def get(self, *args, **kwargs): try: self.object = self.get_object() if app_settings.CONFIRM_EMAIL_ON_GET: return self.post(*args, **kwargs) except Http404: self.object = None ctx = self.get_context_data() return self.render_to_response(ctx) def post(self, *args, **kwargs): self.object = confirmation = self.get_object() confirmation.confirm(self.request) get_adapter(self.request).add_message( self.request, messages.SUCCESS, 'account/messages/email_confirmed.txt', {'email': confirmation.email_address.email}) if app_settings.LOGIN_ON_EMAIL_CONFIRMATION: resp = self.login_on_confirm(confirmation) if resp is not None: return resp # Don't -- allauth doesn't touch is_active so that sys admin can # use it to block users et al # # user = confirmation.email_address.user # user.is_active = True # user.save() redirect_url = self.get_redirect_url() if not redirect_url: ctx = self.get_context_data() return self.render_to_response(ctx) return redirect(redirect_url) def login_on_confirm(self, confirmation): """ Simply logging in the user may become a security issue. If you do not take proper care (e.g. don't purge used email confirmations), a malicious person that got hold of the link will be able to login over and over again and the user is unable to do anything about it. Even restoring their own mailbox security will not help, as the links will still work. For password reset this is different, this mechanism works only as long as the attacker has access to the mailbox. If they no longer has access they cannot issue a password request and intercept it. Furthermore, all places where the links are listed (log files, but even Google Analytics) all of a sudden need to be secured. Purging the email confirmation once confirmed changes the behavior -- users will not be able to repeatedly confirm (in case they forgot that they already clicked the mail). All in all, opted for storing the user that is in the process of signing up in the session to avoid all of the above. This may not 100% work in case the user closes the browser (and the session gets lost), but at least we're secure. """ user_pk = None user_pk_str = get_adapter(self.request).unstash_user(self.request) if user_pk_str: user_pk = url_str_to_user_pk(user_pk_str) user = confirmation.email_address.user if user_pk == user.pk and self.request.user.is_anonymous: return perform_login(self.request, user, app_settings.EmailVerificationMethod.NONE, # passed as callable, as this method # depends on the authenticated state redirect_url=self.get_redirect_url) return None def get_object(self, queryset=None): key = self.kwargs['key'] emailconfirmation = EmailConfirmationHMAC.from_key(key) if not emailconfirmation: if queryset is None: queryset = self.get_queryset() try: emailconfirmation = queryset.get(key=key.lower()) except EmailConfirmation.DoesNotExist: raise Http404() return emailconfirmation def get_queryset(self): qs = EmailConfirmation.objects.all_valid() qs = qs.select_related("email_address__user") return qs def get_context_data(self, **kwargs): ctx = kwargs ctx["confirmation"] = self.object site = get_current_site(self.request) ctx.update({'site': site}) return ctx def get_redirect_url(self): return get_adapter(self.request).get_email_confirmation_redirect_url( self.request) confirm_email = ConfirmEmailView.as_view() class EmailView(AjaxCapableProcessFormViewMixin, FormView): template_name = "account/email." + app_settings.TEMPLATE_EXTENSION form_class = AddEmailForm success_url = reverse_lazy('account_email') def get_form_class(self): return get_form_class(app_settings.FORMS, 'add_email', self.form_class) def dispatch(self, request, *args, **kwargs): sync_user_email_addresses(request.user) return super(EmailView, self).dispatch(request, *args, **kwargs) def get_form_kwargs(self): kwargs = super(EmailView, self).get_form_kwargs() kwargs["user"] = self.request.user return kwargs def form_valid(self, form): email_address = form.save(self.request) get_adapter(self.request).add_message( self.request, messages.INFO, 'account/messages/' 'email_confirmation_sent.txt', {'email': form.cleaned_data["email"]}) signals.email_added.send(sender=self.request.user.__class__, request=self.request, user=self.request.user, email_address=email_address) return super(EmailView, self).form_valid(form) def post(self, request, *args, **kwargs): res = None if "action_add" in request.POST: res = super(EmailView, self).post(request, *args, **kwargs) elif request.POST.get("email"): if "action_send" in request.POST: res = self._action_send(request) elif "action_remove" in request.POST: res = self._action_remove(request) elif "action_primary" in request.POST: res = self._action_primary(request) res = res or HttpResponseRedirect(self.success_url) # Given that we bypassed AjaxCapableProcessFormViewMixin, # we'll have to call invoke it manually... res = _ajax_response(request, res, data=self._get_ajax_data_if()) else: # No email address selected res = HttpResponseRedirect(self.success_url) res = _ajax_response(request, res, data=self._get_ajax_data_if()) return res def _action_send(self, request, *args, **kwargs): email = request.POST["email"] try: email_address = EmailAddress.objects.get( user=request.user, email=email, ) get_adapter(request).add_message( request, messages.INFO, 'account/messages/' 'email_confirmation_sent.txt', {'email': email}) email_address.send_confirmation(request) return HttpResponseRedirect(self.get_success_url()) except EmailAddress.DoesNotExist: pass def _action_remove(self, request, *args, **kwargs): email = request.POST["email"] try: email_address = EmailAddress.objects.get( user=request.user, email=email ) if email_address.primary: get_adapter(request).add_message( request, messages.ERROR, 'account/messages/' 'cannot_delete_primary_email.txt', {"email": email}) else: email_address.delete() signals.email_removed.send(sender=request.user.__class__, request=request, user=request.user, email_address=email_address) get_adapter(request).add_message( request, messages.SUCCESS, 'account/messages/email_deleted.txt', {"email": email}) return HttpResponseRedirect(self.get_success_url()) except EmailAddress.DoesNotExist: pass def _action_primary(self, request, *args, **kwargs): email = request.POST["email"] try: email_address = EmailAddress.objects.get_for_user( user=request.user, email=email ) # Not primary=True -- Slightly different variation, don't # require verified unless moving from a verified # address. Ignore constraint if previous primary email # address is not verified. if not email_address.verified and \ EmailAddress.objects.filter(user=request.user, verified=True).exists(): get_adapter(request).add_message( request, messages.ERROR, 'account/messages/' 'unverified_primary_email.txt') else: # Sending the old primary address to the signal # adds a db query. try: from_email_address = EmailAddress.objects \ .get(user=request.user, primary=True) except EmailAddress.DoesNotExist: from_email_address = None email_address.set_as_primary() get_adapter(request).add_message( request, messages.SUCCESS, 'account/messages/primary_email_set.txt') signals.email_changed \ .send(sender=request.user.__class__, request=request, user=request.user, from_email_address=from_email_address, to_email_address=email_address) return HttpResponseRedirect(self.get_success_url()) except EmailAddress.DoesNotExist: pass def get_context_data(self, **kwargs): ret = super(EmailView, self).get_context_data(**kwargs) # NOTE: For backwards compatibility ret['add_email_form'] = ret.get('form') # (end NOTE) return ret def get_ajax_data(self): data = [] for emailaddress in self.request.user.emailaddress_set.all(): data.append({ 'email': emailaddress.email, 'verified': emailaddress.verified, 'primary': emailaddress.primary, }) return data email = login_required(EmailView.as_view()) class PasswordChangeView(AjaxCapableProcessFormViewMixin, FormView): template_name = ( "account/password_change." + app_settings.TEMPLATE_EXTENSION) form_class = ChangePasswordForm success_url = reverse_lazy("account_change_password") def get_form_class(self): return get_form_class(app_settings.FORMS, 'change_password', self.form_class) @sensitive_post_parameters_m def dispatch(self, request, *args, **kwargs): return super(PasswordChangeView, self).dispatch( request, *args, **kwargs) def render_to_response(self, context, **response_kwargs): if not self.request.user.has_usable_password(): return HttpResponseRedirect(reverse('account_set_password')) return super(PasswordChangeView, self).render_to_response( context, **response_kwargs) def get_form_kwargs(self): kwargs = super(PasswordChangeView, self).get_form_kwargs() kwargs["user"] = self.request.user return kwargs def form_valid(self, form): form.save() logout_on_password_change(self.request, form.user) get_adapter(self.request).add_message( self.request, messages.SUCCESS, 'account/messages/password_changed.txt') signals.password_changed.send(sender=self.request.user.__class__, request=self.request, user=self.request.user) return super(PasswordChangeView, self).form_valid(form) def get_context_data(self, **kwargs): ret = super(PasswordChangeView, self).get_context_data(**kwargs) # NOTE: For backwards compatibility ret['password_change_form'] = ret.get('form') # (end NOTE) return ret password_change = login_required(PasswordChangeView.as_view()) class PasswordSetView(AjaxCapableProcessFormViewMixin, FormView): template_name = "account/password_set." + app_settings.TEMPLATE_EXTENSION form_class = SetPasswordForm success_url = reverse_lazy("account_set_password") def get_form_class(self): return get_form_class(app_settings.FORMS, 'set_password', self.form_class) @sensitive_post_parameters_m def dispatch(self, request, *args, **kwargs): if self.request.user.has_usable_password(): return HttpResponseRedirect(reverse('account_change_password')) return super(PasswordSetView, self).dispatch(request, *args, **kwargs) def render_to_response(self, context, **response_kwargs): return super(PasswordSetView, self).render_to_response( context, **response_kwargs) def get_form_kwargs(self): kwargs = super(PasswordSetView, self).get_form_kwargs() kwargs["user"] = self.request.user return kwargs def form_valid(self, form): form.save() logout_on_password_change(self.request, form.user) get_adapter(self.request).add_message( self.request, messages.SUCCESS, 'account/messages/password_set.txt') signals.password_set.send(sender=self.request.user.__class__, request=self.request, user=self.request.user) return super(PasswordSetView, self).form_valid(form) def get_context_data(self, **kwargs): ret = super(PasswordSetView, self).get_context_data(**kwargs) # NOTE: For backwards compatibility ret['password_set_form'] = ret.get('form') # (end NOTE) return ret password_set = login_required(PasswordSetView.as_view()) class PasswordResetView(AjaxCapableProcessFormViewMixin, FormView): template_name = "account/password_reset." + app_settings.TEMPLATE_EXTENSION form_class = ResetPasswordForm success_url = reverse_lazy("account_reset_password_done") redirect_field_name = "next" def get_form_class(self): return get_form_class(app_settings.FORMS, 'reset_password', self.form_class) def form_valid(self, form): form.save(self.request) return super(PasswordResetView, self).form_valid(form) def get_context_data(self, **kwargs): ret = super(PasswordResetView, self).get_context_data(**kwargs) login_url = passthrough_next_redirect_url(self.request, reverse("account_login"), self.redirect_field_name) # NOTE: For backwards compatibility ret['password_reset_form'] = ret.get('form') # (end NOTE) ret.update({"login_url": login_url}) return ret password_reset = PasswordResetView.as_view() class PasswordResetDoneView(TemplateView): template_name = ( "account/password_reset_done." + app_settings.TEMPLATE_EXTENSION) password_reset_done = PasswordResetDoneView.as_view() class PasswordResetFromKeyView(AjaxCapableProcessFormViewMixin, FormView): template_name = ( "account/password_reset_from_key." + app_settings.TEMPLATE_EXTENSION) form_class = ResetPasswordKeyForm success_url = reverse_lazy("account_reset_password_from_key_done") def get_form_class(self): return get_form_class(app_settings.FORMS, 'reset_password_from_key', self.form_class) def dispatch(self, request, uidb36, key, **kwargs): self.request = request self.key = key if self.key == INTERNAL_RESET_URL_KEY: self.key = self.request.session.get(INTERNAL_RESET_SESSION_KEY, '') # (Ab)using forms here to be able to handle errors in XHR #890 token_form = UserTokenForm( data={'uidb36': uidb36, 'key': self.key}) if token_form.is_valid(): self.reset_user = token_form.reset_user return super(PasswordResetFromKeyView, self).dispatch(request, uidb36, self.key, **kwargs) else: token_form = UserTokenForm( data={'uidb36': uidb36, 'key': self.key}) if token_form.is_valid(): # Store the key in the session and redirect to the # password reset form at a URL without the key. That # avoids the possibility of leaking the key in the # HTTP Referer header. self.request.session[INTERNAL_RESET_SESSION_KEY] = self.key redirect_url = self.request.path.replace( self.key, INTERNAL_RESET_URL_KEY) return redirect(redirect_url) self.reset_user = None response = self.render_to_response( self.get_context_data(token_fail=True) ) return _ajax_response(self.request, response, form=token_form) def get_context_data(self, **kwargs): ret = super(PasswordResetFromKeyView, self).get_context_data(**kwargs) ret['action_url'] = reverse( 'account_reset_password_from_key', kwargs={'uidb36': self.kwargs['uidb36'], 'key': self.kwargs['key']}) return ret def get_form_kwargs(self): kwargs = super(PasswordResetFromKeyView, self).get_form_kwargs() kwargs["user"] = self.reset_user kwargs["temp_key"] = self.key return kwargs def form_valid(self, form): form.save() get_adapter(self.request).add_message( self.request, messages.SUCCESS, 'account/messages/password_changed.txt') signals.password_reset.send(sender=self.reset_user.__class__, request=self.request, user=self.reset_user) if app_settings.LOGIN_ON_PASSWORD_RESET: return perform_login( self.request, self.reset_user, email_verification=app_settings.EMAIL_VERIFICATION) return super(PasswordResetFromKeyView, self).form_valid(form) password_reset_from_key = PasswordResetFromKeyView.as_view() class PasswordResetFromKeyDoneView(TemplateView): template_name = ( "account/password_reset_from_key_done." + app_settings.TEMPLATE_EXTENSION) password_reset_from_key_done = PasswordResetFromKeyDoneView.as_view() class LogoutView(TemplateResponseMixin, View): template_name = "account/logout." + app_settings.TEMPLATE_EXTENSION redirect_field_name = "next" def get(self, *args, **kwargs): if app_settings.LOGOUT_ON_GET: return self.post(*args, **kwargs) if not self.request.user.is_authenticated: return redirect(self.get_redirect_url()) ctx = self.get_context_data() return self.render_to_response(ctx) def post(self, *args, **kwargs): url = self.get_redirect_url() if self.request.user.is_authenticated: self.logout() return redirect(url) def logout(self): adapter = get_adapter(self.request) adapter.add_message( self.request, messages.SUCCESS, 'account/messages/logged_out.txt') adapter.logout(self.request) def get_context_data(self, **kwargs): ctx = kwargs redirect_field_value = get_request_param(self.request, self.redirect_field_name) ctx.update({ "redirect_field_name": self.redirect_field_name, "redirect_field_value": redirect_field_value}) return ctx def get_redirect_url(self): return ( get_next_redirect_url( self.request, self.redirect_field_name) or get_adapter( self.request).get_logout_redirect_url( self.request)) logout = LogoutView.as_view() class AccountInactiveView(TemplateView): template_name = ( 'account/account_inactive.' + app_settings.TEMPLATE_EXTENSION) account_inactive = AccountInactiveView.as_view() class EmailVerificationSentView(TemplateView): template_name = ( 'account/verification_sent.' + app_settings.TEMPLATE_EXTENSION) email_verification_sent = EmailVerificationSentView.as_view() django-allauth-0.35.0/allauth/account/managers.py0000644000076500000240000000466713117447114022725 0ustar pennersrstaff00000000000000from datetime import timedelta from django.db import models from django.db.models import Q from django.utils import timezone from . import app_settings class EmailAddressManager(models.Manager): def add_email(self, request, user, email, confirm=False, signup=False): email_address, created = self.get_or_create( user=user, email__iexact=email, defaults={"email": email} ) if created and confirm: email_address.send_confirmation(request, signup=signup) return email_address def get_primary(self, user): try: return self.get(user=user, primary=True) except self.model.DoesNotExist: return None def get_users_for(self, email): # this is a list rather than a generator because we probably want to # do a len() on it right away return [address.user for address in self.filter(verified=True, email__iexact=email)] def fill_cache_for_user(self, user, addresses): """ In a multi-db setup, inserting records and re-reading them later on may result in not being able to find newly inserted records. Therefore, we maintain a cache for the user so that we can avoid database access when we need to re-read.. """ user._emailaddress_cache = addresses def get_for_user(self, user, email): cache_key = '_emailaddress_cache' addresses = getattr(user, cache_key, None) if addresses is None: ret = self.get(user=user, email__iexact=email) # To avoid additional lookups when e.g. # EmailAddress.set_as_primary() starts touching self.user ret.user = user return ret else: for address in addresses: if address.email.lower() == email.lower(): return address raise self.model.DoesNotExist() class EmailConfirmationManager(models.Manager): def all_expired(self): return self.filter(self.expired_q()) def all_valid(self): return self.exclude(self.expired_q()) def expired_q(self): sent_threshold = timezone.now() \ - timedelta(days=app_settings.EMAIL_CONFIRMATION_EXPIRE_DAYS) return Q(sent__lt=sent_threshold) def delete_expired_confirmations(self): self.all_expired().delete() django-allauth-0.35.0/allauth/account/decorators.py0000644000076500000240000000312613117447114023262 0ustar pennersrstaff00000000000000from django.contrib.auth import REDIRECT_FIELD_NAME from django.contrib.auth.decorators import login_required from django.shortcuts import render from .models import EmailAddress from .utils import send_email_confirmation def verified_email_required(function=None, login_url=None, redirect_field_name=REDIRECT_FIELD_NAME): """ Even when email verification is not mandatory during signup, there may be circumstances during which you really want to prevent unverified users to proceed. This decorator ensures the user is authenticated and has a verified email address. If the former is not the case then the behavior is identical to that of the standard `login_required` decorator. If the latter does not hold, email verification mails are automatically resend and the user is presented with a page informing them they needs to verify their email address. """ def decorator(view_func): @login_required(redirect_field_name=redirect_field_name, login_url=login_url) def _wrapped_view(request, *args, **kwargs): if not EmailAddress.objects.filter(user=request.user, verified=True).exists(): send_email_confirmation(request, request.user) return render(request, 'account/verified_email_required.html') return view_func(request, *args, **kwargs) return _wrapped_view if function: return decorator(function) return decorator django-allauth-0.35.0/allauth/urls.py0000644000076500000240000000115613117447116020451 0ustar pennersrstaff00000000000000from importlib import import_module from django.conf.urls import include, url from allauth.socialaccount import providers from . import app_settings urlpatterns = [url(r'^', include('allauth.account.urls'))] if app_settings.SOCIALACCOUNT_ENABLED: urlpatterns += [url(r'^social/', include('allauth.socialaccount.urls'))] for provider in providers.registry.get_list(): try: prov_mod = import_module(provider.get_package() + '.urls') except ImportError: continue prov_urlpatterns = getattr(prov_mod, 'urlpatterns', None) if prov_urlpatterns: urlpatterns += prov_urlpatterns django-allauth-0.35.0/MANIFEST.in0000644000076500000240000000031412672343321017207 0ustar pennersrstaff00000000000000include AUTHORS include LICENSE include README.rst include ChangeLog.rst include test_settings.py recursive-include allauth *.html *.txt *.xml *.po *.mo *.js recursive-include docs Makefile conf.py *.rst django-allauth-0.35.0/docs/0000755000076500000240000000000013235133533016401 5ustar pennersrstaff00000000000000django-allauth-0.35.0/docs/templates.rst0000644000076500000240000000555013067642763021153 0ustar pennersrstaff00000000000000Templates ========= Overridable templates --------------------- ``allauth`` ships many templates, viewable in the `allauth/templates `__ directory. For instance, the view corresponding to the ``account_login`` URL uses the template ``account/login.html``. If you create a file with this name in your code layout, it can override the one shipped with ``allauth``. Template Tags ------------- The following template tag libraries are available: - ``account``: tags for dealing with accounts in general - ``socialaccount``: tags focused on social accounts Account Tags ************ Use ``user_display`` to render a user name without making assumptions on how the user is represented (e.g. render the username, or first name?):: {% load account %} {% user_display user %} Or, if you need to use in a ``{% blocktrans %}``:: {% load account %} {% user_display user as user_display %} {% blocktrans %}{{ user_display }} has logged in...{% endblocktrans %} Then, override the ``ACCOUNT_USER_DISPLAY`` setting with your project specific user display callable. Social Account Tags ******************* Use the ``provider_login_url`` tag to generate provider specific login URLs:: {% load socialaccount %} Google Twitter Here, you can pass along an optional ``process`` parameter that indicates how to process the social login. You can choose between ``login`` and ``connect``:: Connect a Twitter account Furthermore, you can pass along an ``action`` parameter with value ``reauthenticate`` to indicate that you want the user to be re-prompted for authentication even if they already signed in before. For now, this is supported by Facebook, Google and Twitter only. For Javascript based logins (e.g. when you enable the Facebook JS SDK), you will need to make sure that the required Javascript is loaded. The following tag loads all scripts for the enabled providers:: {% providers_media_js %} For easy access to the social accounts for a user use:: {% get_social_accounts user as accounts %} Then:: {{accounts.twitter}} -- a list of connected Twitter accounts {{accounts.twitter.0}} -- the first Twitter account {% if accounts %} -- if there is at least one social account Finally, social authentication providers configured for the current site can be retrieved via:: {% get_providers as socialaccount_providers %} Which will populate the ``socialaccount_providers`` variable in the template context with a list of configured social authentication providers. This supersedes the context processor used in version 0.21 and below. django-allauth-0.35.0/docs/index.rst0000644000076500000240000000065613055377464020266 0ustar pennersrstaff00000000000000.. django-allauth documentation master file, created by sphinx-quickstart on Wed Jun 6 22:58:42 2012. .. include:: ../README.rst Contents ======== .. toctree:: :maxdepth: 2 overview installation configuration providers signals views templates decorators advanced faq release-notes support ================== Indices and tables ================== * :ref:`genindex` * :ref:`search` django-allauth-0.35.0/docs/signals.rst0000644000076500000240000000532013235130412020564 0ustar pennersrstaff00000000000000Signals ======= There are several signals emitted during authentication flows. You can hook to them for your own needs. allauth.account --------------- - ``allauth.account.signals.user_logged_in(request, user)`` Sent when a user logs in. - ``allauth.account.signals.user_logged_out(request, user)`` Sent when a user logs out. - ``allauth.account.signals.user_signed_up(request, user)`` Sent when a user signs up for an account. This signal is typically followed by a ``user_logged_in``, unless e-mail verification prohibits the user to log in. - ``allauth.account.signals.password_set(request, user)`` Sent when a password has been successfully set for the first time. - ``allauth.account.signals.password_changed(request, user)`` Sent when a password has been successfully changed. - ``allauth.account.signals.password_reset(request, user)`` Sent when a password has been successfully reset. - ``allauth.account.signals.email_confirmed(request, email_address)`` Sent after the email address in the db was updated and set to confirmed. - ``allauth.account.signals.email_confirmation_sent(request, confirmation, signup)`` Sent right after the email confirmation is sent. - ``allauth.account.signals.email_changed(request, user, from_email_address, to_email_address)`` Sent when a primary email address has been changed. - ``allauth.account.signals.email_added(request, user, email_address)`` Sent when a new email address has been added. - ``allauth.account.signals.email_removed(request, user, email_address)`` Sent when an email address has been deleted. allauth.socialaccount --------------------- - ``allauth.socialaccount.signals.pre_social_login(request, sociallogin)`` Sent after a user successfully authenticates via a social provider, but before the login is fully processed. This signal is emitted as part of the social login and/or signup process, as well as when connecting additional social accounts to an existing account. Access tokens and profile information, if applicable for the provider, is provided. - ``allauth.socialaccount.signals.social_account_added(request, sociallogin)`` Sent after a user connects a social account to a their local account. - ``allauth.socialaccount.signals.social_account_updated(request, sociallogin)`` Sent after a social account has been updated. This happens when a user logs in using an already connected social account, or completes a `connect` flow for an already connected social account. Useful if you need to unpack extra data for social accounts as they are updated. - ``allauth.socialaccount.signals.social_account_removed(request, socialaccount)`` Sent after a user disconnects a social account from their local account. django-allauth-0.35.0/docs/release-notes.rst0000644000076500000240000000011312672343321021676 0ustar pennersrstaff00000000000000============= Release Notes ============= .. include:: ../ChangeLog.rst django-allauth-0.35.0/docs/support.rst0000644000076500000240000000011012671004326020637 0ustar pennersrstaff00000000000000.. include:: ../README.rst :start-after: with flows that just work. django-allauth-0.35.0/docs/Makefile0000644000076500000240000001273412357313011020043 0ustar pennersrstaff00000000000000# Makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = BUILDDIR = _build # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . # the i18n builder cannot share the environment and doctrees with the others I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . .PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext help: @echo "Please use \`make ' where is one of" @echo " html to make standalone HTML files" @echo " dirhtml to make HTML files named index.html in directories" @echo " singlehtml to make a single large HTML file" @echo " pickle to make pickle files" @echo " json to make JSON files" @echo " htmlhelp to make HTML files and a HTML help project" @echo " qthelp to make HTML files and a qthelp project" @echo " devhelp to make HTML files and a Devhelp project" @echo " epub to make an epub" @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " latexpdf to make LaTeX files and run them through pdflatex" @echo " text to make text files" @echo " man to make manual pages" @echo " texinfo to make Texinfo files" @echo " info to make Texinfo files and run them through makeinfo" @echo " gettext to make PO message catalogs" @echo " changes to make an overview of all changed/added/deprecated items" @echo " linkcheck to check all external links for integrity" @echo " doctest to run all doctests embedded in the documentation (if enabled)" clean: -rm -rf $(BUILDDIR)/* html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." dirhtml: $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." singlehtml: $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml @echo @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." pickle: $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle @echo @echo "Build finished; now you can process the pickle files." json: $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json @echo @echo "Build finished; now you can process the JSON files." htmlhelp: $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp @echo @echo "Build finished; now you can run HTML Help Workshop with the" \ ".hhp project file in $(BUILDDIR)/htmlhelp." qthelp: $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp @echo @echo "Build finished; now you can run "qcollectiongenerator" with the" \ ".qhcp project file in $(BUILDDIR)/qthelp, like this:" @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/django-allauth.qhcp" @echo "To view the help file:" @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/django-allauth.qhc" devhelp: $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp @echo @echo "Build finished." @echo "To view the help file:" @echo "# mkdir -p $$HOME/.local/share/devhelp/django-allauth" @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/django-allauth" @echo "# devhelp" epub: $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub @echo @echo "Build finished. The epub file is in $(BUILDDIR)/epub." latex: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." @echo "Run \`make' in that directory to run these through (pdf)latex" \ "(use \`make latexpdf' here to do that automatically)." latexpdf: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo "Running LaTeX files through pdflatex..." $(MAKE) -C $(BUILDDIR)/latex all-pdf @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." text: $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text @echo @echo "Build finished. The text files are in $(BUILDDIR)/text." man: $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man @echo @echo "Build finished. The manual pages are in $(BUILDDIR)/man." texinfo: $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo @echo @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." @echo "Run \`make' in that directory to run these through makeinfo" \ "(use \`make info' here to do that automatically)." info: $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo @echo "Running Texinfo files through makeinfo..." make -C $(BUILDDIR)/texinfo info @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." gettext: $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale @echo @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." changes: $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes @echo @echo "The overview file is in $(BUILDDIR)/changes." linkcheck: $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck @echo @echo "Link check complete; look for any errors in the above output " \ "or in $(BUILDDIR)/linkcheck/output.txt." doctest: $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest @echo "Testing of doctests in the sources finished, look at the " \ "results in $(BUILDDIR)/doctest/output.txt." django-allauth-0.35.0/docs/configuration.rst0000644000076500000240000002457313235130412022006 0ustar pennersrstaff00000000000000Configuration ============= Available settings: ACCOUNT_ADAPTER (="allauth.account.adapter.DefaultAccountAdapter") Specifies the adapter class to use, allowing you to alter certain default behaviour. ACCOUNT_AUTHENTICATED_LOGIN_REDIRECTS (=True) The default behaviour is to redirect authenticated users to ``LOGIN_REDIRECT_URL`` when they try accessing login/signup pages. By changing this setting to ``False``, logged in users will not be redirected when they access login/signup pages. ACCOUNT_AUTHENTICATION_METHOD (="username" | "email" | "username_email") Specifies the login method to use -- whether the user logs in by entering their username, e-mail address, or either one of both. Setting this to "email" requires ACCOUNT_EMAIL_REQUIRED=True ACCOUNT_CONFIRM_EMAIL_ON_GET (=False) Determines whether or not an e-mail address is automatically confirmed by a GET request. `GET is not designed to modify the server state `_, though it is commonly used for email confirmation. To avoid requiring user interaction, consider using POST via Javascript in your email confirmation template as an alternative to setting this to True. ACCOUNT_EMAIL_CONFIRMATION_ANONYMOUS_REDIRECT_URL (=settings.LOGIN_URL) The URL to redirect to after a successful e-mail confirmation, in case no user is logged in. ACCOUNT_EMAIL_CONFIRMATION_AUTHENTICATED_REDIRECT_URL (=None) The URL to redirect to after a successful e-mail confirmation, in case of an authenticated user. Set to ``None`` to use ``settings.LOGIN_REDIRECT_URL``. ACCOUNT_EMAIL_CONFIRMATION_EXPIRE_DAYS (=3) Determines the expiration date of email confirmation mails (# of days). ACCOUNT_EMAIL_CONFIRMATION_HMAC (=True) In order to verify an email address a key is mailed identifying the email address to be verified. In previous versions, a record was stored in the database for each ongoing email confirmation, keeping track of these keys. Current versions use HMAC based keys that do not require server side state. ACCOUNT_EMAIL_REQUIRED (=False) The user is required to hand over an e-mail address when signing up. ACCOUNT_EMAIL_VERIFICATION (="optional") Determines the e-mail verification method during signup -- choose one of ``"mandatory"``, ``"optional"``, or ``"none"``. When set to "mandatory" the user is blocked from logging in until the email address is verified. Choose "optional" or "none" to allow logins with an unverified e-mail address. In case of "optional", the e-mail verification mail is still sent, whereas in case of "none" no e-mail verification mails are sent. ACCOUNT_EMAIL_SUBJECT_PREFIX (="[Site] ") Subject-line prefix to use for email messages sent. By default, the name of the current ``Site`` (``django.contrib.sites``) is used. ACCOUNT_DEFAULT_HTTP_PROTOCOL (="http") The default protocol used for when generating URLs, e.g. for the password forgotten procedure. Note that this is a default only -- see the section on HTTPS for more information. ACCOUNT_EMAIL_CONFIRMATION_COOLDOWN (=180) The cooldown period (in seconds) after a confirmation email is sent, during which further emails are not sent. ACCOUNT_EMAIL_MAX_LENGTH(=254) Maximum length of the email field. You won't need to alter this unless using MySQL with the InnoDB storage engine and the ``utf8mb4`` charset, and only in versions lower than 5.7.7, because the default InnoDB settings don't allow indexes bigger than 767 bytes. When using ``utf8mb4``, characters are 4-bytes wide, so at maximum column indexes can be 191 characters long (767/4). Unfortunately Django doesn't allow specifying index lengths, so the solution is to reduce the length in characters of indexed text fields. More information can be found at `MySQL's documentation on converting between 3-byte and 4-byte Unicode character sets `_. ACCOUNT_FORMS (={}) Used to override forms, for example: ``{'login': 'myapp.forms.LoginForm'}`` ACCOUNT_LOGIN_ATTEMPTS_LIMIT (=5) Number of failed login attempts. When this number is exceeded, the user is prohibited from logging in for the specified ``ACCOUNT_LOGIN_ATTEMPTS_TIMEOUT`` seconds. Set to ``None`` to disable this functionality. Important: while this protects the allauth login view, it does not protect Django's admin login from being brute forced. ACCOUNT_LOGIN_ATTEMPTS_TIMEOUT (=300) Time period, in seconds, from last unsuccessful login attempt, during which the user is prohibited from trying to log in. ACCOUNT_LOGIN_ON_EMAIL_CONFIRMATION (=False) The default behaviour is not log users in and to redirect them to ``ACCOUNT_EMAIL_CONFIRMATION_ANONYMOUS_REDIRECT_URL``. By changing this setting to ``True``, users will automatically be logged in once they confirm their email address. Note however that this only works when confirming the email address **immediately after signing up**, assuming users didn't close their browser or used some sort of private browsing mode. ACCOUNT_LOGOUT_ON_GET (=False) Determines whether or not the user is automatically logged out by a GET request. `GET is not designed to modify the server state `_, and in this case it can be dangerous. See `LogoutView in the documentation `_ for details. ACCOUNT_LOGOUT_ON_PASSWORD_CHANGE (=False) Determines whether or not the user is automatically logged out after changing or setting their password. See documentation for `Django's session invalidation on password change `_. ACCOUNT_LOGIN_ON_PASSWORD_RESET (=False) By changing this setting to ``True``, users will automatically be logged in once they have reset their password. By default they are redirected to the password reset done page. ACCOUNT_LOGOUT_REDIRECT_URL (="/") The URL (or URL name) to return to after the user logs out. This is the counterpart to Django's ``LOGIN_REDIRECT_URL``. ACCOUNT_PASSWORD_INPUT_RENDER_VALUE (=False) ``render_value`` parameter as passed to ``PasswordInput`` fields. ACCOUNT_PRESERVE_USERNAME_CASING (=True) This setting determines whether the username is stored in lowercase (``False``) or whether its casing is to be preserved (``True``). Note that when casing is preserved, potentially expensive ``__iexact`` lookups are performed when filter on username. For now, the default is set to ``True`` to maintain backwards compatibility. ACCOUNT_SESSION_REMEMBER (=None) Controls the life time of the session. Set to ``None`` to ask the user ("Remember me?"), ``False`` to not remember, and ``True`` to always remember. ACCOUNT_SIGNUP_EMAIL_ENTER_TWICE (=False) When signing up, let the user type in their email address twice to avoid typo's. ACCOUNT_SIGNUP_FORM_CLASS (=None) A string pointing to a custom form class (e.g. 'myapp.forms.SignupForm') that is used during signup to ask the user for additional input (e.g. newsletter signup, birth date). This class should implement a ``def signup(self, request, user)`` method, where user represents the newly signed up user. ACCOUNT_SIGNUP_PASSWORD_ENTER_TWICE (=True) When signing up, let the user type in their password twice to avoid typos. ACCOUNT_TEMPLATE_EXTENSION (="html") A string defining the template extension to use, defaults to ``html``. ACCOUNT_USERNAME_BLACKLIST (=[]) A list of usernames that can't be used by user. ACCOUNT_UNIQUE_EMAIL (=True) Enforce uniqueness of e-mail addresses. The ``emailaddress.email`` model field is set to ``UNIQUE``. Forms prevent a user from registering with or adding an additional email address if that email address is in use by another account. ACCOUNT_USER_DISPLAY (=a callable returning ``user.username``) A callable (or string of the form ``'some.module.callable_name'``) that takes a user as its only argument and returns the display name of the user. The default implementation returns ``user.username``. ACCOUNT_USER_MODEL_EMAIL_FIELD (="email") The name of the field containing the ``email``, if any. See custom user models. ACCOUNT_USER_MODEL_USERNAME_FIELD (="username") The name of the field containing the ``username``, if any. See custom user models. ACCOUNT_USERNAME_MIN_LENGTH (=1) An integer specifying the minimum allowed length of a username. ACCOUNT_USERNAME_REQUIRED (=True) The user is required to enter a username when signing up. Note that the user will be asked to do so even if ``ACCOUNT_AUTHENTICATION_METHOD`` is set to ``email``. Set to ``False`` when you do not wish to prompt the user to enter a username. ACCOUNT_USERNAME_VALIDATORS (=None) A path (``'some.module.validators.custom_username_validators'``) to a list of custom username validators. If left unset, the validators setup within the user model username field are used. Example:: # In validators.py from django.contrib.auth.validators import ASCIIUsernameValidator custom_username_validators = [ASCIIUsernameValidator()] # In settings.py ACCOUNT_USERNAME_VALIDATORS = 'some.module.validators.custom_username_validators' SOCIALACCOUNT_ADAPTER (="allauth.socialaccount.adapter.DefaultSocialAccountAdapter") Specifies the adapter class to use, allowing you to alter certain default behaviour. SOCIALACCOUNT_AUTO_SIGNUP (=True) Attempt to bypass the signup form by using fields (e.g. username, email) retrieved from the social account provider. If a conflict arises due to a duplicate e-mail address the signup form will still kick in. SOCIALACCOUNT_EMAIL_VERIFICATION (=ACCOUNT_EMAIL_VERIFICATION) As ``ACCOUNT_EMAIL_VERIFICATION``, but for social accounts. SOCIALACCOUNT_EMAIL_REQUIRED (=ACCOUNT_EMAIL_REQUIRED) The user is required to hand over an e-mail address when signing up using a social account. SOCIALACCOUNT_FORMS (={}) Used to override forms, for example: ``{'signup': 'myapp.forms.SignupForm'}`` SOCIALACCOUNT_PROVIDERS (= dict) Dictionary containing provider specific settings. SOCIALACCOUNT_QUERY_EMAIL (=ACCOUNT_EMAIL_REQUIRED) Request e-mail address from 3rd party account provider? E.g. using OpenID AX, or the Facebook "email" permission. SOCIALACCOUNT_STORE_TOKENS (=True) Indicates whether or not the access tokens are stored in the database. django-allauth-0.35.0/docs/conf.py0000644000076500000240000001716313235130412017701 0ustar pennersrstaff00000000000000# -*- coding: utf-8 -*- # # django-allauth documentation build configuration file, created by # sphinx-quickstart on Wed Jun 6 22:58:42 2012. # # This file is execfile()d with the current directory set to its containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. #sys.path.insert(0, os.path.abspath('.')) # -- General configuration ----------------------------------------------------- # If your documentation needs a minimal Sphinx version, state it here. #needs_sphinx = '1.0' # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. extensions = [] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # The suffix of source filenames. source_suffix = '.rst' # The encoding of source files. #source_encoding = 'utf-8-sig' # The master toctree document. master_doc = 'index' # General information about the project. project = u'django-allauth' copyright = u'2017, Raymond Penners' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. version = '0.32.0' # The full version, including alpha/beta/rc tags. release = '0.32.0' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. #language = None # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: #today = '' # Else, today_fmt is used as the format for a strftime call. #today_fmt = '%B %d, %Y' # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. exclude_patterns = ['_build'] # The reST default role (used for this markup: `text`) to use for all documents. #default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. #add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). #add_module_names = True # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. #show_authors = False # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. #modindex_common_prefix = [] # -- Options for HTML output --------------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. html_theme = 'default' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. #html_theme_options = {} # Add any paths that contain custom themes here, relative to this directory. #html_theme_path = [] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". #html_title = None # A shorter title for the navigation bar. Default is the same as html_title. #html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. #html_logo = None # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. #html_favicon = None # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". #html_static_path = ['_static'] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. #html_last_updated_fmt = '%b %d, %Y' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. #html_use_smartypants = True # Custom sidebar templates, maps document names to template names. #html_sidebars = {} # Additional templates that should be rendered to pages, maps page names to # template names. #html_additional_pages = {} # If false, no module index is generated. #html_domain_indices = True # If false, no index is generated. #html_use_index = True # If true, the index is split into individual pages for each letter. #html_split_index = False # If true, links to the reST sources are added to the pages. #html_show_sourcelink = True # If true, "Created using Sphinx" is shown in the HTML footer. Default is True. #html_show_sphinx = True # If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. #html_show_copyright = True # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. #html_use_opensearch = '' # This is the file name suffix for HTML files (e.g. ".xhtml"). #html_file_suffix = None # Output file base name for HTML help builder. htmlhelp_basename = 'django-allauthdoc' # -- Options for LaTeX output -------------------------------------------------- latex_elements = { # The paper size ('letterpaper' or 'a4paper'). #'papersize': 'letterpaper', # The font size ('10pt', '11pt' or '12pt'). #'pointsize': '10pt', # Additional stuff for the LaTeX preamble. #'preamble': '', } # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [ ('index', 'django-allauth.tex', u'django-allauth Documentation', u'Raymond Penners', 'manual'), ] # The name of an image file (relative to this directory) to place at the top of # the title page. #latex_logo = None # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. #latex_use_parts = False # If true, show page references after internal links. #latex_show_pagerefs = False # If true, show URL addresses after external links. #latex_show_urls = False # Documents to append as an appendix to all manuals. #latex_appendices = [] # If false, no module index is generated. #latex_domain_indices = True # -- Options for manual page output -------------------------------------------- # One entry per manual page. List of tuples # (source start file, name, description, authors, manual section). man_pages = [ ('index', 'django-allauth', u'django-allauth Documentation', [u'Raymond Penners'], 1) ] # If true, show URL addresses after external links. #man_show_urls = False # -- Options for Texinfo output ------------------------------------------------ # Grouping the document tree into Texinfo files. List of tuples # (source start file, target name, title, author, # dir menu entry, description, category) texinfo_documents = [ ('index', 'django-allauth', u'django-allauth Documentation', u'Raymond Penners', 'django-allauth', 'One line description of project.', 'Miscellaneous'), ] # Documents to append as an appendix to all manuals. #texinfo_appendices = [] # If false, no module index is generated. #texinfo_domain_indices = True # How to display URL addresses: 'footnote', 'no', or 'inline'. #texinfo_show_urls = 'footnote' django-allauth-0.35.0/docs/views.rst0000644000076500000240000000653713235130412020274 0ustar pennersrstaff00000000000000Views ===== Login (``account_login``) ------------------------- Users login via the ``allauth.account.views.LoginView`` view over at ``/accounts/login/`` (URL name ``account_login``). When users attempt to login while their account is inactive (``user.is_active``) they are presented with the ``account/account_inactive.html`` template. Signup (``account_signup``) --------------------------- Users sign up via the ``allauth.account.views.SignupView`` view over at ``/accounts/signup/`` (URL name ``account_signup``). Logout (``account_logout``) ---------------------------- The logout view (``allauth.account.views.LogoutView``) over at ``/accounts/logout/`` (URL name ``account_logout``) requests for confirmation before logging out. The user is logged out only when the confirmation is received by means of a POST request. If you are wondering why, consider what happens when a malicious user embeds the following image in a post:: For this and more background information on the subject, see: - https://code.djangoproject.com/ticket/15619 - http://stackoverflow.com/questions/3521290/logout-get-or-post If you insist on having logout on GET, then please consider adding a bit of Javascript to automatically turn a click on a logout link into a POST. As a last resort, you can set ``ACCOUNT_LOGOUT_ON_GET`` to ``True``. Password Management ------------------- Authenticated users can manage their password account using the ``allauth.account.views.PasswordSetView`` and ``allauth.account.views.PasswordChangeView`` views, over at ``/accounts/password/set/`` respectively ``/accounts/password/change/`` (URL names ``account_set_password`` and ``account_change_password`` respectively). Users are redirected between these views, according to whether or not they have setup a password (``user.has_usable_password()``). Typically, when users signup via a social provider they will not have a password set. Password Reset (``account_reset_password``) ------------------------------------------- Users can request a password reset using the ``allauth.account.views.PasswordResetView`` view over at ``/accounts/password/reset/`` (URL name ``account_reset_password``). An e-mail will be sent containing a reset link pointing to ``PasswordResetFromKeyView`` view. E-mails Management (``account_email``) -------------------------------------- Users manage the e-mail addresses tied to their account using the ``allauth.account.views.EmailView`` view over at ``/accounts/email/`` (URL name ``account_email``). Here, users can add (and verify) e-mail addresses, remove e-mail addresses, and choose a new primary e-mail address. E-mail Verification ------------------- Depending on the setting ``ACCOUNT_EMAIL_VERIFICATION``, a verification e-mail is sent pointing to the ``allauth.account.views.ConfirmEmailView`` view. The setting ``ACCOUNT_CONFIRM_EMAIL_ON_GET`` determines whether users have to manually confirm the address by submiting a confirmation form, or whether the address is automatically confirmed by a mere GET request. Social Connections (``socialaccount_connections``) -------------------------------------------------- The ``allauth.socialaccount.views.ConnectionsView`` view over at ``/accounts/social/connections/`` (URL name ``socialaccount_connections``) allows users to manage the social accounts tied to their local account. django-allauth-0.35.0/docs/overview.rst0000644000076500000240000000614013235130412020773 0ustar pennersrstaff00000000000000Overview ======== Requirements ------------ - Python 2.7, 3.3, 3.4, or 3.5 - Django (1.10+) - python-openid or python3-openid (depending on your Python version) - requests and requests-oauthlib Supported Flows --------------- - Signup of both local and social accounts - Connecting more than one social account to a local account - Disconnecting a social account -- requires setting a password if only the local account remains - Optional instant-signup for social accounts -- no questions asked - E-mail address management (multiple e-mail addresses, setting a primary) - Password forgotten flow - E-mail address verification flow Supported Providers ------------------- - 23andMe (OAuth2) - 500px - Amazon (OAuth2) - AngelList (OAuth2) - Asana (OAuth2) - Auth0 (OAuth2) - Authentiq (OAuth2) - Azure (OAuth2) - Basecamp (OAuth2) - Baidu (OAuth2) - Battle.net (OAuth2) - Bitbucket (OAuth, OAuth2) - Bitly (OAuth2) - Box (OAuth2) - Dataporten (OAuth2) - Daum (OAuth2) - Douban (OAuth2) - Doximity (OAuth2) - Dropbox (OAuth, OAuth2) - Dwolla (OAuth2) - Edmodo (OAuth2) - Eve Online (OAuth2) - Eventbrite (OAuth2) - Evernote (OAuth) - Facebook (both OAuth2 and JS SDK) - Feedly (OAuth2) - Firefox Accounts (OAuth2) - Flickr (OAuth) - Github (OAuth2) - GitLab (OAuth2) - Google (OAuth2) - Hubic (OAuth2) - Instagram (OAuth2) - Kakao (OAuth2) - Line (OAuth2) - LinkedIn (OAuth, OAuth2) - Mail.Ru (OAuth2) - MailChimp (OAuth2) - Meetup (OAuth2) - Microsoft (Graph) (OAuth2) - Naver (OAuth2) - Odnoklassniki (OAuth2) - OpenId - ORCID (OAuth2) - Patreon (OAuth2) - Paypal (OAuth2) - Persona - Pinterest (OAuth2) - Reddit (OAuth2) - Salesforce (OAuth2) - Shopify (OAuth2) - Slack (OAuth2) - SoundCloud (OAuth2) - Spotify (OAuth2) - Stack Exchange (OAuth2) - Stripe (OAuth2) - Trello (OAuth) - Tumblr (OAuth) - Twitch (OAuth2) - Twitter (OAuth) - Untappd (OAuth2) - Vimeo (OAuth) - VK (OAuth2) - Weibo (OAuth2) - Weixin (OAuth2) - Windows Live (OAuth2) - Xing (OAuth) - Yahoo (OAuth2) Note: OAuth/OAuth2 support is built using a common code base, making it easy to add support for additional OAuth/OAuth2 providers. More will follow soon... Features -------- - Supports multiple authentication schemes (e.g. login by user name, or by e-mail), as well as multiple strategies for account verification (ranging from none to e-mail verification). - All access tokens are consistently stored so that you can publish wall updates etc. Architecture & Design --------------------- - Pluggable signup form for asking additional questions during signup. - Support for connecting multiple social accounts to a Django user account. - The required consumer keys and secrets for interacting with Facebook, Twitter and the likes are to be configured in the database via the Django admin using the SocialApp model. - Consumer keys, tokens make use of the Django sites framework. This is especially helpful for larger multi-domain projects, but also allows for for easy switching between a development (localhost) and production setup without messing with your settings and database. django-allauth-0.35.0/docs/decorators.rst0000644000076500000240000000141413235130412021271 0ustar pennersrstaff00000000000000Decorators ========== Verified E-mail Required ------------------------ Even when email verification is not mandatory during signup, there may be circumstances during which you really want to prevent unverified users from proceeding. For this purpose you can use the following decorator:: from allauth.account.decorators import verified_email_required @verified_email_required def verified_users_only_view(request): ... The behavior is as follows: - If the user isn't logged in, it acts identically to the ``login_required`` decorator. - If the user is logged in but has no verified e-mail address, an e-mail verification mail is automatically resent and the user is presented with a page informing them they need to verify their email address. django-allauth-0.35.0/docs/installation.rst0000644000076500000240000001307613235130412021634 0ustar pennersrstaff00000000000000Installation ============ Django ------ Python package:: pip install django-allauth settings.py (Important - Please note 'django.contrib.sites' is required as INSTALLED_APPS):: # Specify the context processors as follows: TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ # Already defined Django-related contexts here # `allauth` needs this from django 'django.template.context_processors.request', ], }, }, ] AUTHENTICATION_BACKENDS = ( ... # Needed to login by username in Django admin, regardless of `allauth` 'django.contrib.auth.backends.ModelBackend', # `allauth` specific authentication methods, such as login by e-mail 'allauth.account.auth_backends.AuthenticationBackend', ... ) INSTALLED_APPS = ( ... # The following apps are required: 'django.contrib.auth', 'django.contrib.sites', 'allauth', 'allauth.account', 'allauth.socialaccount', # ... include the providers you want to enable: 'allauth.socialaccount.providers.amazon', 'allauth.socialaccount.providers.angellist', 'allauth.socialaccount.providers.asana', 'allauth.socialaccount.providers.auth0', 'allauth.socialaccount.providers.authentiq', 'allauth.socialaccount.providers.baidu', 'allauth.socialaccount.providers.basecamp', 'allauth.socialaccount.providers.bitbucket', 'allauth.socialaccount.providers.bitbucket_oauth2', 'allauth.socialaccount.providers.bitly', 'allauth.socialaccount.providers.coinbase', 'allauth.socialaccount.providers.dataporten', 'allauth.socialaccount.providers.daum', 'allauth.socialaccount.providers.digitalocean', 'allauth.socialaccount.providers.discord', 'allauth.socialaccount.providers.douban', 'allauth.socialaccount.providers.draugiem', 'allauth.socialaccount.providers.dropbox', 'allauth.socialaccount.providers.dwolla', 'allauth.socialaccount.providers.edmodo', 'allauth.socialaccount.providers.eveonline', 'allauth.socialaccount.providers.evernote', 'allauth.socialaccount.providers.facebook', 'allauth.socialaccount.providers.feedly', 'allauth.socialaccount.providers.fivehundredpx', 'allauth.socialaccount.providers.flickr', 'allauth.socialaccount.providers.foursquare', 'allauth.socialaccount.providers.fxa', 'allauth.socialaccount.providers.github', 'allauth.socialaccount.providers.gitlab', 'allauth.socialaccount.providers.google', 'allauth.socialaccount.providers.hubic', 'allauth.socialaccount.providers.instagram', 'allauth.socialaccount.providers.kakao', 'allauth.socialaccount.providers.line', 'allauth.socialaccount.providers.linkedin', 'allauth.socialaccount.providers.linkedin_oauth2', 'allauth.socialaccount.providers.mailru', 'allauth.socialaccount.providers.mailchimp', 'allauth.socialaccount.providers.meetup', 'allauth.socialaccount.providers.naver', 'allauth.socialaccount.providers.odnoklassniki', 'allauth.socialaccount.providers.openid', 'allauth.socialaccount.providers.orcid', 'allauth.socialaccount.providers.paypal', 'allauth.socialaccount.providers.persona', 'allauth.socialaccount.providers.pinterest', 'allauth.socialaccount.providers.reddit', 'allauth.socialaccount.providers.robinhood', 'allauth.socialaccount.providers.shopify', 'allauth.socialaccount.providers.slack', 'allauth.socialaccount.providers.soundcloud', 'allauth.socialaccount.providers.spotify', 'allauth.socialaccount.providers.stackexchange', 'allauth.socialaccount.providers.stripe', 'allauth.socialaccount.providers.trello', 'allauth.socialaccount.providers.tumblr', 'allauth.socialaccount.providers.twentythreeandme', 'allauth.socialaccount.providers.twitch', 'allauth.socialaccount.providers.twitter', 'allauth.socialaccount.providers.untappd', 'allauth.socialaccount.providers.vimeo', 'allauth.socialaccount.providers.vk', 'allauth.socialaccount.providers.weibo', 'allauth.socialaccount.providers.weixin', 'allauth.socialaccount.providers.windowslive', 'allauth.socialaccount.providers.xing', ... ) SITE_ID = 1 urls.py:: urlpatterns = [ ... url(r'^accounts/', include('allauth.urls')), ... ] Note that you do not necessarily need the URLs provided by ``django.contrib.auth.urls``. Instead of the URLs ``login``, ``logout``, and ``password_change`` (among others), you can use the URLs provided by ``allauth``: ``account_login``, ``account_logout``, ``account_set_password``... Post-Installation ----------------- In your Django root execute the command below to create your database tables:: ./manage.py migrate Now start your server, visit your admin pages (e.g. http://localhost:8000/admin/) and follow these steps: 1. Add a ``Site`` for your domain, matching ``settings.SITE_ID`` (``django.contrib.sites`` app). 2. For each OAuth based provider, add a ``Social App`` (``socialaccount`` app). 3. Fill in the site and the OAuth app credentials obtained from the provider. django-allauth-0.35.0/docs/advanced.rst0000644000076500000240000002224613235130412020677 0ustar pennersrstaff00000000000000Advanced Usage ============== HTTPS ----- This app currently provides no functionality for enforcing views to be HTTPS only, or switching from HTTP to HTTPS (and back) on demand. There are third party packages aimed at providing precisely this, so please use these. What is provided is the following: - The protocol to be used for generating links (e.g. password forgotten) for e-mails is configurable by means of the ``ACCOUNT_DEFAULT_HTTP_PROTOCOL`` setting. - Automatically switching to HTTPS is built-in for OAuth providers that require this (e.g. Amazon). However, remembering the original protocol before the switch and switching back after the login is not provided. Custom User Models ------------------ If you use a custom user model you need to specify what field represents the ``username``, if any. Here, ``username`` really refers to the field representing the nickname that the user uses to login, and not to some unique identifier (possibly including an e-mail address) as is the case for Django's ``AbstractBaseUser.USERNAME_FIELD``. Therefore, if your custom user model does not have a ``username`` field (again, not to be mistaken with an e-mail address or user id), you will need to set ``ACCOUNT_USER_MODEL_USERNAME_FIELD`` to ``None``. This will disable username related functionality in ``allauth``. Remember to also set ``ACCOUNT_USERNAME_REQUIRED`` to ``False``. Similarly, you will need to set ``ACCOUNT_USER_MODEL_EMAIL_FIELD`` to ``None`` or to the proper field (if other than ``email``). For example, if you want to use a custom user model that has ``email`` as the identifying field, and you don't want to collect usernames, you need the following in your settings.py:: ACCOUNT_USER_MODEL_USERNAME_FIELD = None ACCOUNT_EMAIL_REQUIRED = True ACCOUNT_USERNAME_REQUIRED = False ACCOUNT_AUTHENTICATION_METHOD = 'email' Creating and Populating User instances -------------------------------------- The following adapter methods can be used to intervene in how User instances are created and populated with data - ``allauth.account.adapter.DefaultAccountAdapter``: - ``is_open_for_signup(self, request)``: The default function returns ``True``. You can override this method by returning ``False`` if you want to disable account signup. - ``new_user(self, request)``: Instantiates a new, empty ``User``. - ``save_user(self, request, user, form)``: Populates and saves the ``User`` instance using information provided in the signup form. - ``populate_username(self, request, user)``: Fills in a valid username, if required and missing. If the username is already present, then it is assumed to be valid (unique). - ``confirm_email(self, request, email_address)``: Marks the email address as confirmed and saves to the db. - ``generate_unique_username(self, txts, regex=None)``: Returns a unique username from the combination of strings present in txts iterable. A regex pattern can be passed to the method to make sure the generated username matches it. - ``allauth.socialaccount.adapter.DefaultSocialAccountAdapter``: - ``is_open_for_signup(self, request)``: The default function returns that is the same as ``ACCOUNT_ADAPTER`` in ``settings.py``. You can override this method by returning ``True``/``False`` if you want to enable/disable socialaccount signup. - ``new_user(self, request, sociallogin)``: Instantiates a new, empty ``User``. - ``save_user(self, request, sociallogin, form=None)``: Populates and saves the ``User`` instance (and related social login data). The signup form is not available in case of auto signup. - ``populate_user(self, request, sociallogin, data)``: Hook that can be used to further populate the user instance (``sociallogin.account.user``). Here, ``data`` is a dictionary of common user properties (``first_name``, ``last_name``, ``email``, ``username``, ``name``) that the provider already extracted for you. Invitations ----------- Invitation handling is not supported, and most likely will not be any time soon. An invitation app could cover anything ranging from invitations of new users, to invitations of existing users to participate in restricted parts of the site. All in all, the scope of invitation handling is large enough to warrant being addressed in an app of its own. Still, everything is in place to easily hook up any third party invitation app. The account adapter (``allauth.account.adapter.DefaultAccountAdapter``) offers the following methods: - ``is_open_for_signup(self, request)``. You can override this method to, for example, inspect the session to check if an invitation was accepted. - ``stash_verified_email(self, request, email)``. If an invitation was accepted by following a link in an email, then there is no need to send email verification mails after the signup is completed. Use this method to record the fact that an email address was verified. Sending Email -------------- Emails sent (e.g. in case of password forgotten or email confirmation) can be altered by providing your own templates. Templates are named as follows:: account/email/email_confirmation_subject.txt account/email/email_confirmation_message.txt In case you want to include an HTML representation, add an HTML template as follows:: account/email/email_confirmation_message.html The project does not contain any HTML email templates out of the box. When you do provide these yourself, note that both the text and HTML versions of the message are sent. If this does not suit your needs, you can hook up your own custom mechanism by overriding the ``send_mail`` method of the account adapter (``allauth.account.adapter.DefaultAccountAdapter``). Custom Redirects ---------------- If redirecting to statically configurable URLs (as specified in your project settings) is not flexible enough, then you can override the following adapter methods: - ``allauth.account.adapter.DefaultAccountAdapter``: - ``get_login_redirect_url(self, request)`` - ``get_logout_redirect_url(self, request)`` - ``get_email_confirmation_redirect_url(self, request)`` - ``allauth.socialaccount.adapter.DefaultSocialAccountAdapter``: - ``get_connect_redirect_url(self, request, socialaccount)`` For example, redirecting to ``/accounts//`` can be implemented as follows:: # project/settings.py: ACCOUNT_ADAPTER = 'project.users.adapter.MyAccountAdapter' # project/users/adapter.py: from django.conf import settings from allauth.account.adapter import DefaultAccountAdapter class MyAccountAdapter(DefaultAccountAdapter): def get_login_redirect_url(self, request): path = "/accounts/{username}/" return path.format(username=request.user.username) Messages -------- The Django messages framework (``django.contrib.messages``) is used if it is listed in ``settings.INSTALLED_APPS``. All messages (as in ``django.contrib.messages``) are configurable by overriding their respective template. If you want to disable a message, simply override the message template with a blank one. Admin ----- The Django admin site (``django.contrib.admin``) does not use Django allauth by default. Since Django admin provides a custom login view, it does not go through the normal Django allauth workflow. .. warning:: This limitation means that Django allauth features are not applied to the Django admin site: * ``ACCOUNT_LOGIN_ATTEMPTS_LIMIT`` and ``ACCOUNT_LOGIN_ATTEMPTS_TIMEOUT`` do not protect Django’s admin login from being brute forced. * Any other custom workflow that overrides the Django allauth adapter's login method will not be applied. An easy workaround for this is to require users to login before going to the Django admin site's login page (note that the following would need to be applied to every instance of ``AdminSite``): .. code-block:: python from django.contrib import admin from django.contrib.auth.decorators import login_required admin.site.login = login_required(admin.site.login) Customizing providers --------------------- When an existing provider doesn't quite meet your needs, you might find yourself needing to customize a provider. This can be achieved by subclassing an existing provider and making your changes there. Providers are defined as django applications, so typically customizing one will mean creating a django application in your project. This application will contain your customized urls.py, views.py and provider.py files. The behaviour that can be customized is beyond the scope of this documentation. .. warning:: In your ``provider.py`` file, you will need to expose the provider class by having a module level attribute called ``provider_classes`` with your custom classes in a list. This allows your custom provider to be registered properly on the basis of the ``INSTALLED_APPS`` setting. Be sure to use a custom id property on your provider class such that its default URLs do not clash with the provider you are subclassing. .. code-block:: python class GoogleNoDefaultScopeProvider(GoogleProvider): id = 'google_no_scope' def get_default_scope(self): return [] provider_classes = [GoogleNoDefaultScopeProvider] django-allauth-0.35.0/docs/faq.rst0000644000076500000240000000665113067642763017727 0ustar pennersrstaff00000000000000Frequently Asked Questions ========================== Overall ------- Why don't you implement support for ... ? ***************************************** This app is just about authentication. Anything that is project specific, such as making choices on what to display in a profile page, or, what information is stored for a user (e.g. home address, or favorite color?), is beyond scope and therefore not offered. This information is nice and all, but... I need more! ***************************************************** Here are a few third party resources to help you get started: - https://speakerdeck.com/tedtieken/signing-up-and-signing-in-users-in-django-with-django-allauth - https://stackoverflow.com/questions/tagged/django-allauth - http://www.sarahhagstrom.com/2013/09/the-missing-django-allauth-tutorial/ - https://github.com/aellerton/demo-allauth-bootstrap I think I found a security issue... now what? ********************************************* Please report security issues only to django-allauth-security@googlegroups.com. This is a private list only open to long-time, highly trusted django-allauth developers, and its archives are not public. You may also want to subscribe to django-allauth-announce@googlegroups.com to get notified about security releases. Troubleshooting --------------- The /accounts/ URL is giving me a 404 ************************************* There is no such URL. Try ``/accounts/login/`` instead. When I attempt to login I run into a 404 on /accounts/profile/ ************************************************************** When you end up here you have successfully logged in. However, you will need to implement a view for this URL yourself, as whatever is to be displayed here is project specific. You can also decide to redirect elsewhere: https://docs.djangoproject.com/en/dev/ref/settings/#login-redirect-url When I sign up I run into connectivity errors (connection refused et al) ************************************************************************ You probably have not got an e-mail (SMTP) server running on the machine you are developing on. Therefore, ``allauth`` is unable to send verification mails. You can work around this by adding the following line to ``settings.py``: EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' This will avoid the need for an SMTP server as e-mails will be printed to the console. For more information, please refer to: https://docs.djangoproject.com/en/dev/ref/settings/#email-host Why did you just close my issue? ******************************** Time is limited and I have to pick my battles. Please do not file the following types of issues: - **Support questions, installation instructions, "How do I...?":** please direct these questions elsewhere, for example here: https://stackoverflow.com/questions/tagged/django-allauth - **Documentation related complaints:** while the documentation can most certainly be improved, I am adhering to the debatable principle that keeping open issues around with respect to documentation is not very helpful in improving things. Please step in and file a pull request if you feel there is something unclear. - **Project specific integration trouble:** In cases where ``allauth`` is just one piece of the puzzle and for example a stack trace indicates another module crashing, please try to come up stripped version of the issue where it is clear that ``allauth`` is the one that is misbehaving. django-allauth-0.35.0/docs/providers.rst0000644000076500000240000011723013235130412021145 0ustar pennersrstaff00000000000000Providers ========= Most providers require you to sign up for a so called API client or app, containing a client ID and API secret. You must add a ``SocialApp`` record per provider via the Django admin containing these app credentials. When creating the OAuth app on the side of the provider pay special attention to the callback URL (sometimes also referred to as redirect URL). If you do not configure this correctly, you will receive login failures when attempting to log in, such as:: An error occurred while attempting to login via your social network account. Use a callback URL of the form:: http://example.com/accounts/twitter/login/callback/ http://example.com/accounts/soundcloud/login/callback/ ... For local development, use the following:: http://127.0.0.1:8000/accounts/twitter/login/callback/ 23andMe ------- App registration (get your key and secret here) https://api.23andme.com/dev/ Development callback URL http://localhost:8000/accounts/23andme/login/callback/ 500px ----- App registration (get your key and secret here) https://500px.com/settings/applications Development callback URL http://localhost:8000/accounts/500px/login/callback/ Amazon ------ Amazon requires secure OAuth callback URLs (``redirect_uri``), please see the section on HTTPS about how this is handled. App registration (get your key and secret here) http://login.amazon.com/manageApps Development callback URL https://example.com/accounts/amazon/login/callback/ AngelList --------- App registration (get your key and secret here) https://angel.co/api/oauth/clients Development callback URL http://localhost:8000/accounts/angellist/login/callback/ Auth0 ----- App registration (get your key and secret here) https://manage.auth0.com/#/clients Development callback URL http://localhost:8000/accounts/auth0/login/callback/ You'll need to specify the base URL for your Auth0 domain: .. code-block:: python SOCIALACCOUNT_PROVIDERS = { 'auth0': { 'AUTH0_URL': 'https://your.auth0domain.auth0.com', } } Authentiq --------- Browse to https://www.authentiq.com/developers to get started. App registration https://dashboard.authentiq.com/ Sign in or register with your Authentiq ID (select ``Download the app`` while signing in if you don't have Authentiq ID yet). Development redirect URL http://localhost:8000/accounts/authentiq/login/callback/ While testing you can leave the ``Redirect URIs`` field empty in the dashboard. You can specify what identity details to request via the ``SCOPE`` parameter. .. code-block:: python SOCIALACCOUNT_PROVIDERS = { 'authentiq': { 'SCOPE': ['email', 'aq:name'] } } Valid scopes include: ``email``, ``phone``, ``address``, ``aq:name``, ``aq:location``. The default is to request a user's name, and email address if ``SOCIALACCOUNT_QUERY_EMAIL=True``. You can request and require a verified email address by setting ``SOCIALACCOUNT_EMAIL_VERIFICATION=True`` and ``SOCIALACCOUNT_EMAIL_REQUIRED=True``. Baidu ----- The Baidu OAuth2 authentication documentation: http://developer.baidu.com/wiki/index.php?title=docs/oauth/refresh http://developer.baidu.com/wiki/index.php?title=docs/oauth/rest/file_data_apis_lista Basecamp -------- App registration (get your key and secret here) https://integrate.37signals.com/ The Basecamp OAuth2 authentication documentation https://github.com/basecamp/api/blob/master/sections/authentication.md#oauth-2 Development callback URL https://localhost:8000/accounts/basecamp/login/callback/ Battle.net ---------- The Battle.net OAuth2 authentication documentation https://dev.battle.net/docs/read/oauth Register your app here (Mashery account required) https://dev.battle.net/apps/register Development callback URL https://localhost:8000/accounts/battlenet/login/callback/ Note that in order to use battletags as usernames, you are expected to override either the ``username`` field on your User model, or to pass a custom validator which will accept the ``#`` character using the ``ACCOUNT_USERNAME_VALIDATORS`` setting. Such a validator is available in ``socialaccount.providers.battlenet.validators.BattletagUsernameValidator``. Bitbucket --------- App registration (get your key and secret here) https://bitbucket.org/account/user/{{yourusername}}/oauth-consumers/new Make sure you select the Account:Read permission. Development callback URL http://127.0.0.1:8000/accounts/bitbucket_oauth2/login/callback/ Note that Bitbucket calls the ``client_id`` *Key* in their user interface. Don't get confused by that; use the *Key* value for your ``client_id`` field. Box --- App registration (get your key and secret here) https://app.box.com/developers/services/edit/ Development callback URL http://localhost:8000/accounts/box/login/callback/ Dataporten ---------- App registration (get your key and secret here) https://docs.dataporten.no/docs/gettingstarted/ Development callback URL http://localhost:8000/accounts/dataporten/login/callback daum ---- App registration (get your key and secret here) https://developers.daum.net/console Development callback URL http://127.0.0.1:8000/accounts/daum/login/callback/ DigitalOcean ------------ App registration (get your key and secret here) https://cloud.digitalocean.com/settings/applications Development callback URL http://127.0.0.1:8000/accounts/digitalocean/login/callback/ With the acquired access token you will have read permissions on the API by default. If you also need write access specify the scope as follows. See https://developers.digitalocean.com/documentation/oauth/#scopes for details. .. code-block:: python SOCIALACCOUNT_PROVIDERS = { 'digitalocean': { 'SCOPE': [ 'read write', ], } } Discord ------- App registration and management (get your key and secret here) https://discordapp.com/developers/applications/me Make sure to Add Redirect URI to your application. Development callback (redirect) URL http://127.0.0.1:8000/accounts/discord/login/callback/ Doximity -------- Doximity OAuth2 implementation documentation https://www.doximity.com/developers/documentation#oauth Request API keys here https://www.doximity.com/developers/api_signup Development callback URL http://localhost:8000/accounts/doximity/login/callback/ Draugiem -------- App registration (get your key and secret here) https://www.draugiem.lv/applications/dev/create/?type=4 Authentication documentation https://www.draugiem.lv/applications/dev/docs/passport/ Development callback URL http://localhost:8000/accounts/draugiem/login/callback/ Dropbox ------- App registration (get your key and secret here) https://www.dropbox.com/developers/apps/ Development callback URL http://localhost:8000/accounts/dropbox/login/callback/ Dwolla ------------ App registration (get your key and secret here) https://dashboard-uat.dwolla.com/applications Development callback URL http://127.0.0.1:8000/accounts/dwolla/login/callback/ .. code-block:: python SOCIALACCOUNT_PROVIDERS = { 'dwolla': { 'SCOPE': [ 'Send', 'Transactions', 'Funding', 'AccountInfoFull', ], 'ENVIROMENT':'sandbox', } } Dwolla ------------ App registration (get your key and secret here) https://dashboard-uat.dwolla.com/applications Development callback URL http://127.0.0.1:8000/accounts/dwolla/login/callback/ .. code-block:: python SOCIALACCOUNT_PROVIDERS = { 'dwolla': { 'SCOPE': [ 'Send', 'Transactions', 'Funding', 'AccountInfoFull', ], 'ENVIROMENT':'sandbox', } } Edmodo ------ Edmodo OAuth2 documentation https://developers.edmodo.com/edmodo-connect/edmodo-connect-overview-getting-started/ You can optionally specify additional permissions to use. If no ``SCOPE`` value is set, the Edmodo provider will use ``basic`` by default: .. code-block:: python SOCIALACCOUNT_PROVIDERS = { 'edmodo': { 'SCOPE': [ 'basic', 'read_groups', 'read_connections', 'read_user_email', 'create_messages', 'write_library_items', ] } } Eve Online ---------- Register your application at ``https://developers.eveonline.com/applications/create``. Note that if you have ``STORE_TOKENS`` enabled (the default), you will need to set up your application to be able to request an OAuth scope. This means you will need to set it as having "CREST Access". The least obtrusive scope is "publicData". Eventbrite ------------------ Log in and click your profile name in the top right navigation, then select ``Account Settings``. Choose ``App Management`` near the bottom of the left navigation column. You can then click ``Create A New App`` on the upper left corner. App registration https://www.eventbrite.com/myaccount/apps/ Fill in the form with the following link Development callback URL http://127.0.0.1:8000/accounts/eventbrite/login/callback/ for both the ``Application URL`` and ``OAuth Redirect URI``. Evernote -------- Register your OAuth2 application at ``https://dev.evernote.com/doc/articles/authentication.php``: .. code-block:: python SOCIALACCOUNT_PROVIDERS = { 'evernote': { 'EVERNOTE_HOSTNAME': 'evernote.com' # defaults to sandbox.evernote.com } } Facebook -------- For Facebook both OAuth2 and the Facebook Connect Javascript SDK are supported. You can even mix the two. An advantage of the Javascript SDK may be a more streamlined user experience as you do not leave your site. Furthermore, you do not need to worry about tailoring the login dialog depending on whether or not you are using a mobile device. Yet, relying on Javascript may not be everybody's cup of tea. To initiate a login use: .. code-block:: python {% load socialaccount %} {% providers_media_js %} Facebook Connect or: .. code-block:: python {% load socialaccount %} Facebook OAuth2 The following Facebook settings are available: .. code-block:: python SOCIALACCOUNT_PROVIDERS = { 'facebook': { 'METHOD': 'oauth2', 'SCOPE': ['email', 'public_profile', 'user_friends'], 'AUTH_PARAMS': {'auth_type': 'reauthenticate'}, 'INIT_PARAMS': {'cookie': True}, 'FIELDS': [ 'id', 'email', 'name', 'first_name', 'last_name', 'verified', 'locale', 'timezone', 'link', 'gender', 'updated_time', ], 'EXCHANGE_TOKEN': True, 'LOCALE_FUNC': 'path.to.callable', 'VERIFIED_EMAIL': False, 'VERSION': 'v2.5', } } METHOD: Either ``js_sdk`` or ``oauth2``. The default is ``oauth2``. SCOPE: By default, the ``email`` scope is required depending on whether or not ``SOCIALACCOUNT_QUERY_EMAIL`` is enabled. Apps using permissions beyond ``email``, ``public_profile`` and ``user_friends`` require review by Facebook. See `Permissions with Facebook Login `_ for more information. AUTH_PARAMS: Use ``AUTH_PARAMS`` to pass along other parameters to the ``FB.login`` JS SDK call. FIELDS: The fields to fetch from the Graph API ``/me/?fields=`` endpoint. For example, you could add the ``'friends'`` field in order to capture the user's friends that have also logged into your app using Facebook (requires ``'user_friends'`` scope). EXCHANGE_TOKEN: The JS SDK returns a short-lived token suitable for client-side use. Set ``EXCHANGE_TOKEN = True`` to make a server-side request to upgrade to a long-lived token before storing in the ``SocialToken`` record. See `Expiration and Extending Tokens `_. LOCALE_FUNC: The locale for the JS SDK is chosen based on the current active language of the request, taking a best guess. This can be customized using the ``LOCALE_FUNC`` setting, which takes either a callable or a path to a callable. This callable must take exactly one argument, the request, and return `a valid Facebook locale `_ as a string, e.g. US English: .. code-block:: python SOCIALACCOUNT_PROVIDERS = { 'facebook': { 'LOCALE_FUNC': lambda request: 'en_US' } } VERIFIED_EMAIL: It is not clear from the Facebook documentation whether or not the fact that the account is verified implies that the e-mail address is verified as well. For example, verification could also be done by phone or credit card. To be on the safe side, the default is to treat e-mail addresses from Facebook as unverified. But, if you feel that is too paranoid, then use this setting to mark them as verified. Due to lack of an official statement from the side of Facebook, attempts have been made to `reverse engineer the meaning of the verified flag `_. Do know that by setting this to ``True`` you may be introducing a security risk. VERSION: The Facebook Graph API version to use. The default is ``v2.5``. App registration (get your key and secret here) A key and secret key can be obtained by `creating an app `_. After registration you will need to make it available to the public. In order to do that your app first has to be `reviewed by Facebook `_. Development callback URL Leave your App Domains empty and put ``http://localhost:8000`` in the section labeled ``Website with Facebook Login``. Note that you'll need to add your site's actual domain to this section once it goes live. Firefox Accounts ---------------- The Firefox Accounts provider is currently limited to Mozilla relying services but there is the intention, in the future, to allow third-party services to delegate authentication. There is no committed timeline for this. The provider is OAuth2 based. More info: https://developer.mozilla.org/en-US/Firefox_Accounts Note: This is not the same as the Mozilla Persona provider below. The following Firefox Accounts settings are available: .. code-block:: python SOCIALACCOUNT_PROVIDERS = { 'fxa': { 'SCOPE': ['profile'], 'OAUTH_ENDPOINT': 'https://oauth.accounts.firefox.com/v1', 'PROFILE_ENDPOINT': 'https://profile.accounts.firefox.com/v1', } } SCOPE: Requested OAuth2 scope. Default is ['profile'], which will work for applications on the Mozilla trusted whitelist. If your application is not on the whitelist, then define SCOPE to be ['profile:email', 'profile:uid']. OAUTH_ENDPOINT: Explicitly set the OAuth2 endpoint. Default is the production endpoint "https://oauth.accounts.firefox.com/v1". PROFILE_ENDPOINT: Explicitly set the profile endpoint. Default is the production endpoint and is "https://profile.accounts.firefox.com/v1". Flickr ------ App registration (get your key and secret here) https://www.flickr.com/services/apps/create/ You can optionally specify the application permissions to use. If no ``perms`` value is set, the Flickr provider will use ``read`` by default. .. code-block:: python SOCIALACCOUNT_PROVIDERS = { 'flickr': { 'AUTH_PARAMS': { 'perms': 'write', } } } More info: https://www.flickr.com/services/api/auth.oauth.html#authorization GitHub ------ App registration (get your key and secret here) https://github.com/settings/applications/new Development callback URL http://127.0.0.1:8000/accounts/github/login/callback/ If you want more than just read-only access to public data, specify the scope as follows. See https://developer.github.com/v3/oauth/#scopes for details. .. code-block:: python SOCIALACCOUNT_PROVIDERS = { 'github': { 'SCOPE': [ 'user', 'repo', 'read:org', ], } } Enterprise Support ****************** If you use GitHub Enterprise add your server URL to your Django settings as follows: .. code-block:: python SOCIALACCOUNT_PROVIDERS = { 'github': { 'GITHUB_URL': 'https://your.github-server.domain', } } GitLab ------ The GitLab provider works by default with https://gitlab.com. It allows you to connect to your private GitLab server and use GitLab as an OAuth2 authentication provider as described in GitLab docs at http://doc.gitlab.com/ce/integration/oauth_provider.html The following GitLab settings are available, if unset https://gitlab.com will be used. GITLAB_URL: Override endpoint to request an authorization and access token. For your private GitLab server you use: ``https://your.gitlab.server.tld`` SCOPE: The ``read_user`` scope is required for the login procedure. Example: .. code-block:: python SOCIALACCOUNT_PROVIDERS = { 'gitlab': { 'GITLAB_URL': 'https://your.gitlab.server.tld', 'SCOPE': ['read_user'], }, } Google ------ The Google provider is OAuth2 based. More info: http://code.google.com/apis/accounts/docs/OAuth2.html#Registering App registration **************** Create a google app to obtain a key and secret through the developer console. Google Developer Console https://console.developers.google.com/ After you create a project you will have to create a "Client ID" and fill in some project details for the consent form that will be presented to the client. Under "APIs & auth" go to "Credentials" and create a new Client ID. Probably you will want a "Web application" Client ID. Provide your domain name or test domain name in "Authorized JavaScript origins". Finally fill in ``http://127.0.0.1:8000/accounts/google/login/callback/`` in the "Authorized redirect URI" field. You can fill multiple URLs, one for each test domain. After creating the Client ID you will find all details for the Django configuration on this page. Users that login using the app will be presented a consent form. For this to work additional information is required. Under "APIs & auth" go to "Consent screen" and at least provide an email and product name. Django configuration ******************** The app credentials are configured for your Django installation via the admin interface. Create a new socialapp through ``/admin/socialaccount/socialapp/``. Fill in the form as follows: * Provider, "Google" * Name, your pick, suggest "Google" * Client id, is called "Client ID" by Google * Secret key, is called "Client secret" by Google * Key, is not needed, leave blank. Optionally, you can specify the scope to use as follows: .. code-block:: python SOCIALACCOUNT_PROVIDERS = { 'google': { 'SCOPE': [ 'profile', 'email', ], 'AUTH_PARAMS': { 'access_type': 'online', } } } By default, ``profile`` scope is required, and optionally ``email`` scope depending on whether or not ``SOCIALACCOUNT_QUERY_EMAIL`` is enabled. Instagram --------- App registration (get your key and secret here) https://www.instagram.com/developer/clients/manage/ Development callback URL http://localhost:8000/accounts/instagram/login/callback/ Kakao ----- App registration (get your key here) https://developers.kakao.com/apps Development callback URL http://localhost:8000/accounts/kakao/login/callback/ Line ---- App registration (get your key and secret here) https://business.line.me Development callback URL http://127.0.0.1:8000/accounts/line/login/callback/ LinkedIn -------- The LinkedIn provider comes in two flavors: OAuth 1.0 (``allauth.socialaccount.providers.linkedin``) and OAuth 2.0 (``allauth.socialaccount.providers.linkedin_oauth2``). You can specify the scope and fields to fetch as follows: .. code-block:: python SOCIALACCOUNT_PROVIDERS = { 'linkedin': { 'SCOPE': [ 'r_emailaddress', ], 'PROFILE_FIELDS': [ 'id', 'first-name', 'last-name', 'email-address', 'picture-url', 'public-profile-url', ] } } By default, ``r_emailaddress`` scope is required depending on whether or not ``SOCIALACCOUNT_QUERY_EMAIL`` is enabled. Note: if you are experiencing issues where it seems as if the scope has no effect you may be using an old LinkedIn app that is not scope enabled. Please refer to ``https://developer.linkedin.com/forum/when-will-old-apps-have-scope-parameter-enabled`` for more background information. Furthermore, we have experienced trouble upgrading from OAuth 1.0 to OAuth 2.0 using the same app. Attempting to do so resulted in a weird error message when fetching the access token:: missing required parameters, includes an invalid parameter value, parameter more then once. : Unable to retrieve access token : authorization code not found App registration (get your key and secret here) https://www.linkedin.com/secure/developer?newapp= Authorized Redirect URLs (OAuth2) ********************************* Add any you need (up to 200) consisting of: {``ACCOUNT_DEFAULT_HTTP_PROTOCOL``}://{hostname}{:optional_port}/{allauth_base_url}/linkedin_oauth2/login/callback/ For example when using the built-in django server and default settings: http://localhost:8000/accounts/linkedin_oauth2/login/callback/ Development "Accept" and "Cancel" redirect URL (OAuth 1.0a) *********************************************************** Leave the OAuth1 redirect URLs empty. MailChimp (OAuth2) ------------------ MailChimp has a simple API for working with your own data and a `good library`_ already exists for this use. However, to allow other MailChimp users to use an app you develop, the OAuth2 API allows those users to give or revoke access without creating a key themselves. .. _good library: https://pypi.python.org/pypi/mailchimp3 Registering a new app ********************* Instructions for generating your own OAuth2 app can be found at https://developer.mailchimp.com/documentation/mailchimp/guides/how-to-use-oauth2/. It is worth reading that carefully before following the instructions below. Login via https://login.mailchimp.com/, which will redirect you to ``https://usX.admin.mailchimp.com/`` where the prefix ``usX`` (``X`` is an integer) is the subdomain you need to connect to. Click on your username in the top right corner and select *Profile*. On the next page select *Extras* then click API keys, which should lead you to: App registration (where ``X`` is dependent on your account) https://usX.admin.mailchimp.com/account/oauth2/ Fill in the form with the following URL for local development: Development callback URL https://127.0.0.1:8000/accounts/mailchimp/login/callback/ Testing Locally *************** Note the requirement of **https**. If you would like to test OAuth2 authentication locally before deploying a default django project will raise errors because development mode does not support ``https``. One means of circumventing this is to install ``django-extensions``:: pip install django-extensions add it to your ``INSTALLED_APPS`` .. code-block:: python INSTALLED_APPS = ( ... 'django_extensions', ... ) and then run:: ./manage.py runserver_plus --cert cert which should allow you to test locally via https://127.0.0.1:8000. Some browsers may require enabling this on localhost and not support by default and ask for permission. Microsoft Graph ----------------- Microsoft Graph API is the gateway to connect to mail, calendar, contacts, documents, directory, devices and more. Apps can be registered (for consumer key and secret) here https://apps.dev.microsoft.com/ By default, `common` (`organizations` and `consumers`) tenancy is configured for the login. To restrict it, change the `tenant` setting as shown below. .. code-block:: python SOCIALACCOUNT_PROVIDERS = { 'microsoft': { 'tenant': 'organizations', } } Naver ----- App registration (get your key and secret here) https://developers.naver.com/appinfo Development callback URL http://localhost:8000/accounts/naver/login/callback/ Odnoklassniki ------------- App registration (get your key and secret here) http://apiok.ru/wiki/pages/viewpage.action?pageId=42476486 Development callback URL http://example.com/accounts/odnoklassniki/login/callback/ OpenID ------ The OpenID provider does not require any settings per se. However, a typical OpenID login page presents the user with a predefined list of OpenID providers and allows the user to input their own OpenID identity URL in case their provider is not listed by default. The list of providers displayed by the builtin templates can be configured as follows: .. code-block:: python SOCIALACCOUNT_PROVIDERS = { 'openid': { 'SERVERS': [ dict(id='yahoo', name='Yahoo', openid_url='http://me.yahoo.com'), dict(id='hyves', name='Hyves', openid_url='http://hyves.nl'), dict(id='google', name='Google', openid_url='https://www.google.com/accounts/o8/id'), ] } } You can manually specify extra_data you want to request from server as follows:: SOCIALACCOUNT_PROVIDERS = \ { 'openid': { 'SERVERS': [ dict(id='mojeid', name='MojeId', openid_url='https://mojeid.cz/endpoint/', extra_attributes = [ ('phone', 'http://axschema.org/contact/phone/default', False), ('birth_date', 'http://axschema.org/birthDate', False,), ])]}} Attributes are in form (id, name, required) where id is key in extra_data field of socialaccount, name is identifier of requested attribute and required specifies whether attribute is required. If you want to manually include login links yourself, you can use the following template tag: .. code-block:: python {% load socialaccount %} Google ORCID ----- The ORCID provider should work out of the box provided that you are using the Production ORCID registry and the public API. In other settings, you will need to define the API you are using in your site's settings, as follows: .. code-block:: python SOCIALACCOUNT_PROVIDERS = { 'orcid': { # Base domain of the API. Default value: 'orcid.org', for the production API 'BASE_DOMAIN':'sandbox.orcid.org', # for the sandbox API # Member API or Public API? Default: False (for the public API) 'MEMBER_API': True, # for the member API } } Patreon ------- App registration (get your key and secret here) https://www.patreon.com/platform/documentation/clients Development callback URL http://127.0.0.1:8000/accounts/patreon/login/callback/ Paypal ------ The following Paypal settings are available: .. code-block:: python SOCIALACCOUNT_PROVIDERS = { 'paypal': { 'SCOPE': ['openid', 'email'], 'MODE': 'live', } } SCOPE: In the Paypal developer site, you must also check the required attributes for your application. For a full list of scope options, see https://developer.paypal.com/docs/integration/direct/identity/attributes/ MODE: Either ``live`` or ``test``. Set to test to use the Paypal sandbox. App registration (get your key and secret here) https://developer.paypal.com/webapps/developer/applications/myapps Development callback URL http://example.com/accounts/paypal/login/callback Persona ------- Note: Mozilla Persona was shut down on November 30th 2016. See `the announcement `_ for details. Mozilla Persona requires one setting, the "AUDIENCE" which needs to be the hardcoded hostname and port of your website. See https://developer.mozilla.org/en-US/Persona/Security_Considerations#Explicitly_specify_the_audience_parameter for more information why this needs to be set explicitly and can't be derived from user provided data: .. code-block:: python SOCIALACCOUNT_PROVIDERS = { 'persona': { 'AUDIENCE': 'https://www.example.com', } } The optional ``REQUEST_PARAMETERS`` dictionary contains parameters that are passed as is to the ``navigator.id.request()`` method to influence the look and feel of the Persona dialog: .. code-block:: python SOCIALACCOUNT_PROVIDERS = { 'persona': { 'AUDIENCE': 'https://www.example.com', 'REQUEST_PARAMETERS': {'siteName': 'Example'}, } } Pinterest --------- The Pinterest OAuth2 documentation: https://developers.pinterest.com/docs/api/overview/#authentication You can optionally specify additional permissions to use. If no ``SCOPE`` value is set, the Pinterest provider will use ``read_public`` by default. .. code-block:: python SOCIALACCOUNT_PROVIDERS = { 'pinterest': { 'SCOPE': [ 'read_public', 'read_relationships', ] } } SCOPE: For a full list of scope options, see https://developers.pinterest.com/docs/api/overview/#scopes Reddit ------ App registration (get your key and secret here) https://www.reddit.com/prefs/apps/ Development callback URL http://localhost:8000/accounts/reddit/login/callback/ By default, access to Reddit is temporary. You can specify the ``duration`` auth parameter to make it ``permanent``. You can optionally specify additional permissions to use. If no ``SCOPE`` value is set, the Reddit provider will use ``identity`` by default. In addition, you should override your user agent to comply with Reddit's API rules, and specify something in the format ``:: (by /u/)``. Otherwise, you will risk additional rate limiting in your application. .. code-block:: python SOCIALACCOUNT_PROVIDERS = { 'reddit': { 'AUTH_PARAMS': {'duration': 'permanent'}, 'SCOPE': ['identity', 'submit'], 'USER_AGENT': 'django:myappid:1.0 (by /u/yourredditname)', } } Salesforce ---------- The Salesforce provider requires you to set the login VIP as the provider model's 'key' (in addition to client id and secret). Production environments use https://login.salesforce.com/. Sandboxes use https://test.salesforce.com/. HTTPS is required for the callback. Development callback URL https://localhost:8000/accounts/salesforce/login/callback/ Salesforce OAuth2 documentation https://developer.salesforce.com/page/Digging_Deeper_into_OAuth_2.0_on_Force.com To Use: - Include allauth.socialaccount.providers.salesforce in INSTALLED_APPS - In a new Salesforce Developer Org, create a Connected App with OAuth (minimum scope id, openid), and a callback URL - Create a Social application in Django admin, with client id, client key, and login_url (in "key" field) Shopify ------- The Shopify provider requires a ``shop`` parameter to login. For example, for a shop ``petstore.myshopify.com``, use this:: /accounts/shopify/login/?shop=petstore You can create login URLs like these as follows: .. code-block:: python {% provider_login_url "shopify" shop="petstore" %} For setting up authentication in your app, use this url as your ``App URL`` (if your server runs at localhost:8000):: http://localhost:8000/accounts/shopify/login/ And set ``Redirection URL`` to:: http://localhost:8000/accounts/shopify/login/callback/ **Embedded Apps** If your Shopify app is embedded you will want to tell allauth to do the required JS (rather than server) redirect.:: SOCIALACCOUNT_PROVIDERS = { 'shopify': { 'IS_EMBEDDED': True, } } Note that there is more an embedded app creator must do in order to have a page work as an iFrame within Shopify (building the x_frame_exempt landing page, handing session expiration, etc...). However that functionality is outside the scope of django-allauth. **Online/per-user access mode** Shopify has two access modes, offline (the default) and online/per-user. Enabling 'online' access will cause all-auth to tie the logged in Shopify user to the all-auth account (rather than the shop as a whole).:: SOCIALACCOUNT_PROVIDERS = { 'shopify': { 'AUTH_PARAMS': {'grant_options[]': 'per-user'}, } } Slack ----- App registration (get your key and secret here) https://api.slack.com/apps/new Development callback URL http://example.com/accounts/slack/login/callback/ API documentation https://api.slack.com/docs/sign-in-with-slack SoundCloud ---------- SoundCloud allows you to choose between OAuth1 and OAuth2. Choose the latter. App registration (get your key and secret here) http://soundcloud.com/you/apps/new Development callback URL http://example.com/accounts/soundcloud/login/callback/ Stack Exchange -------------- Register your OAuth2 app over at ``http://stackapps.com/apps/oauth/register``. Do not enable "Client Side Flow". For local development you can simply use "localhost" for the OAuth domain. As for all providers, provider specific data is stored in ``SocialAccount.extra_data``. For Stack Exchange we need to choose what data to store there by choosing the Stack Exchange site (e.g. Stack Overflow, or Server Fault). This can be controlled by means of the ``SITE`` setting: .. code-block:: python SOCIALACCOUNT_PROVIDERS = { 'stackexchange': { 'SITE': 'stackoverflow', } } Stripe ------ You register your OAUth2 app via the Connect->Settings page of the Stripe dashboard: https://dashboard.stripe.com/account/applications/settings This page will provide you with both a Development and Production `client_id`. You can also register your OAuth2 app callback on the Settings page in the "Website URL" box, e.g.: http://example.com/accounts/stripe/login/callback/ However, the OAuth2 secret key is not on this page. The secret key is the same secret key that you use with the Stripe API generally. This can be found on the Stripe dashboard API page: https://dashboard.stripe.com/account/apikeys See more in documentation https://stripe.com/docs/connect/standalone-accounts Twitch ------ App registration (get your key and secret here) http://www.twitch.tv/kraken/oauth2/clients/new Twitter ------- You will need to create a Twitter app and configure the Twitter provider for your Django application via the admin interface. App registration **************** To register an app on Twitter you will need a Twitter account. With an account, you can create a new app via:: https://apps.twitter.com/app/new In the app creation form fill in the development callback URL:: http://127.0.0.1:8000/accounts/twitter/login/callback/ Twitter won't allow using http://localhost:8000. For production use a callback URL such as:: http://{{yourdomain}}.com/accounts/twitter/login/callback/ To allow users to login without authorizing each session, select "Allow this application to be used to Sign in with Twitter" under the application's "Settings" tab. App database configuration through admin **************************************** The second part of setting up the Twitter provider requires you to configure your Django application. Configuration is done by creating a Socialapp object in the admin. Add a social app on the admin page:: /admin/socialaccount/socialapp/ Use the twitter keys tab of your application to fill in the form. It's located:: https://apps.twitter.com/app/{{yourappid}}/keys The configuration is as follows: * Provider, "Twitter" * Name, your pick, suggest "Twitter" * Client id, is called "Consumer Key (API Key)" on Twitter * Secret key, is called "Consumer Secret (API Secret)" on Twitter * Key, is not needed, leave blank Untappd ------- App registration **************** https://untappd.com/api/register?register=new In the app creation form fill in the development callback URL, e.g.:: http://127.0.0.1:8000/accounts/untappd/login/callback/ For production, make it your production host, e.g.:: http://yoursite.com/accounts/untappd/login/callback/ SocialApp configuration *********************** The configuration values come from your API dashboard on Untappd: https://untappd.com/api/dashboard * Provider: "Untappd" * Name: "Untappd" * Client id: "Client ID" from Untappd * Secret key: "Client Secret" from Untappd * Sites: choose your site Vimeo ----- App registration (get your key and secret here) https://developer.vimeo.com/apps Development callback URL http://localhost:8000 VK -- App registration https://vk.com/editapp?act=create Development callback URL ("Site address") http://localhost Windows Live ------------ The Windows Live provider currently does not use any settings in ``SOCIALACCOUNT_PROVIDERS``. App registration (get your key and secret here) https://apps.dev.microsoft.com/#/appList Development callback URL http://localhost:8000/accounts/windowslive/login/callback/ Microsoft calls the "client_id" an "Application Id" and it is a UUID. Also, the "client_secret" is not created by default, you must edit the application after it is created, then click "Generate New Password" to create it. Weibo ----- Register your OAuth2 app over at ``http://open.weibo.com/apps``. Unfortunately, Weibo does not allow for specifying a port number in the authorization callback URL. So for development purposes you have to use a callback url of the form ``http://127.0.0.1/accounts/weibo/login/callback/`` and run ``runserver 127.0.0.1:80``. Weixin ------ The Weixin OAuth2 documentation: https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419316505&token=&lang=zh_CN Weixin supports two kinds of oauth2 authorization, one for open platform and one for media platform, AUTHORIZE_URL is the only difference between them, you can specify ``AUTHORIZE_URL`` in setting, If no ``AUTHORIZE_URL`` value is set will support open platform by default, which value is ``https://open.weixin.qq.com/connect/qrconnect``. You can optionally specify additional scope to use. If no ``SCOPE`` value is set, will use ``snsapi_login`` by default(for Open Platform Account, need registration). Other ``SCOPE`` options are: snsapi_base, snsapi_userinfo. .. code-block:: python SOCIALACCOUNT_PROVIDERS = { 'weixin': { 'AUTHORIZE_URL': 'https://open.weixin.qq.com/connect/oauth2/authorize', # for media platform 'SCOPE': ['snsapi_base'], } } Xing ---- App registration (get your key and secret here) https://dev.xing.com/applications Development callback URL http://localhost:8000 Yahoo ------ Register your OAuth2 app below and enter the resultant client id and secret into admin https://developer.yahoo.com/apps/create/ django-allauth-0.35.0/setup.py0000644000076500000240000001277313235130467017200 0ustar pennersrstaff00000000000000#!/usr/bin/env python import io import os import sys from fnmatch import fnmatchcase from setuptools import convert_path, find_packages, setup # Provided as an attribute, so you can append to these instead # of replicating them: standard_exclude = ["*.py", "*.pyc", "*~", ".*", "*.bak", "Makefile"] standard_exclude_directories = [ ".*", "CVS", "_darcs", "./build", "./dist", "EGG-INFO", "*.egg-info", "./example" ] # Copied from paste/util/finddata.py def find_package_data(where=".", package="", exclude=standard_exclude, exclude_directories=standard_exclude_directories, only_in_packages=True, show_ignored=False): """ Return a dictionary suitable for use in ``package_data`` in a distutils ``setup.py`` file. The dictionary looks like:: {"package": [files]} Where ``files`` is a list of all the files in that package that don't match anything in ``exclude``. If ``only_in_packages`` is true, then top-level directories that are not packages won't be included (but directories under packages will). Directories matching any pattern in ``exclude_directories`` will be ignored; by default directories with leading ``.``, ``CVS``, and ``_darcs`` will be ignored. If ``show_ignored`` is true, then all the files that aren't included in package data are shown on stderr (for debugging purposes). Note patterns use wildcards, or can be exact paths (including leading ``./``), and all searching is case-insensitive. """ out = {} stack = [(convert_path(where), "", package, only_in_packages)] while stack: where, prefix, package, only_in_packages = stack.pop(0) for name in os.listdir(where): fn = os.path.join(where, name) if os.path.isdir(fn): bad_name = False for pattern in exclude_directories: if (fnmatchcase(name, pattern) or fn.lower() == pattern.lower()): bad_name = True if show_ignored: print >> sys.stderr, ( "Directory %s ignored by pattern %s" % (fn, pattern)) break if bad_name: continue if (os.path.isfile(os.path.join(fn, "__init__.py")) and not prefix): if not package: new_package = name else: new_package = package + "." + name stack.append((fn, "", new_package, False)) else: stack.append((fn, prefix + name + "/", package, only_in_packages)) elif package or not only_in_packages: # is a file bad_name = False for pattern in exclude: if (fnmatchcase(name, pattern) or fn.lower() == pattern.lower()): bad_name = True if show_ignored: print >> sys.stderr, ( "File %s ignored by pattern %s" % (fn, pattern)) break if bad_name: continue out.setdefault(package, []).append(prefix+name) return out excluded_directories = standard_exclude_directories package_data = find_package_data(exclude_directories=excluded_directories) test_requirements = [] IS_PY2 = sys.version_info[0] < 3 if IS_PY2: openid_package = 'python-openid >= 2.2.5' test_requirements.append('mock >= 1.0.1') else: openid_package = 'python3-openid >= 3.0.8' long_description = io.open('README.rst', encoding='utf-8').read() # Dynamically calculate the version based on allauth.VERSION. version = __import__('allauth').__version__ METADATA = dict( name='django-allauth', version=version, author='Raymond Penners', author_email='raymond.penners@intenct.nl', description='Integrated set of Django applications addressing' ' authentication, registration, account management as well as' ' 3rd party (social) account authentication.', long_description=long_description, url='http://github.com/pennersr/django-allauth', keywords='django auth account social openid twitter facebook oauth' ' registration', tests_require=test_requirements, install_requires=['Django >= 1.11', openid_package, 'requests-oauthlib >= 0.3.0', "requests"], include_package_data=True, classifiers=[ 'Development Status :: 4 - Beta', 'Intended Audience :: Developers', 'Topic :: Software Development :: Libraries :: Python Modules', 'Environment :: Web Environment', 'Topic :: Internet', 'License :: OSI Approved :: MIT License', 'Operating System :: OS Independent', 'Programming Language :: Python', 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3.4', 'Programming Language :: Python :: 3.5', 'Programming Language :: Python :: 3.6', 'Framework :: Django', 'Framework :: Django :: 1.11', 'Framework :: Django :: 2.0', ], packages=find_packages(exclude=['example']), package_data=package_data, ) if __name__ == '__main__': setup(**METADATA) django-allauth-0.35.0/setup.cfg0000644000076500000240000000007313235133533017272 0ustar pennersrstaff00000000000000[egg_info] tag_build = tag_date = 0 tag_svn_revision = 0 django-allauth-0.35.0/README.rst0000644000076500000240000000540213235130412017132 0ustar pennersrstaff00000000000000========================== Welcome to django-allauth! ========================== .. image:: https://badge.fury.io/py/django-allauth.svg :target: http://badge.fury.io/py/django-allauth .. image:: https://travis-ci.org/pennersr/django-allauth.svg :target: http://travis-ci.org/pennersr/django-allauth .. image:: https://img.shields.io/pypi/v/django-allauth.svg :target: https://pypi.python.org/pypi/django-allauth .. image:: https://coveralls.io/repos/pennersr/django-allauth/badge.svg?branch=master :alt: Coverage Status :target: https://coveralls.io/r/pennersr/django-allauth .. image:: https://pennersr.github.io/img/bitcoin-badge.svg :target: https://blockchain.info/address/1AJXuBMPHkaDCNX2rwAy34bGgs7hmrePEr .. image:: https://img.shields.io/badge/code%20style-pep8-green.svg :target: https://www.python.org/dev/peps/pep-0008/ .. image:: https://img.shields.io/badge/code_style-standard-brightgreen.svg :target: http://standardjs.com Integrated set of Django applications addressing authentication, registration, account management as well as 3rd party (social) account authentication. Home page http://www.intenct.nl/projects/django-allauth/ Source code http://github.com/pennersr/django-allauth Mailinglist http://groups.google.com/group/django-allauth Documentation https://django-allauth.readthedocs.io/en/latest/ Stack Overflow http://stackoverflow.com/questions/tagged/django-allauth Rationale ========= Most existing Django apps that address the problem of social authentication focus on just that. You typically need to integrate another app in order to support authentication via a local account. This approach separates the worlds of local and social authentication. However, there are common scenarios to be dealt with in both worlds. For example, an e-mail address passed along by an OpenID provider is not guaranteed to be verified. So, before hooking an OpenID account up to a local account the e-mail address must be verified. So, e-mail verification needs to be present in both worlds. Integrating both worlds is quite a tedious process. It is definitely not a matter of simply adding one social authentication app, and one local account registration app to your ``INSTALLED_APPS`` list. This is the reason this project got started -- to offer a fully integrated authentication app that allows for both local and social authentication, with flows that just work. Commercial Support ================== This project is sponsored by IntenCT_. If you require assistance on your project(s), please contact us: info@intenct.nl. .. _IntenCT: http://www.intenct.info Cross-Selling ============= If you like this, you may also like: - django-trackstats: https://github.com/pennersr/django-trackstats - netwell: https://github.com/pennersr/netwell django-allauth-0.35.0/ChangeLog.rst0000644000076500000240000012727013235131622020040 0ustar pennersrstaff000000000000000.35.0 (2017-02-02) ******************* Security notice --------------- - As an extra security measure on top of what the standard Django password reset token generator is already facilitating, allauth now adds the user email address to the hash such that whenever the user's email address changes the token is invalidated. Note worthy changes ------------------- - New provider: Azure, Microsoft Graph, Salesforce, Yahoo. 0.34.0 (2017-10-29) ******************* Security notice --------------- - The "Set Password" view did not properly check whether or not the user already had a usable password set. This allowed an attacker to set the password without providing the current password, but only in case the attacker already gained control over the victim's session. Note worthy changes ------------------- - New provider: Meetup. 0.33.0 (2017-08-20) ******************* Note worthy changes ------------------- - Security: password reset tokens are now prevented from being leaked through the password reset URL. - New providers: Patreon, Authentiq, Dataporten. - Dropbox has been upgraded to API V2. - New translation: Norwegian. Backwards incompatible changes ------------------------------ - Dropped support for Django 1.9. 0.32.0 (2017-04-27) ******************* Note worthy changes ------------------- - Improved AJAX support: the account management views (change/set password, manage e-mail addresses and social connections) now support AJAX GET requests. These views hand over all the required data for you to build your frontend application upon. - New providers: Dwolla, Trello. - Shopify: support for per-user access mode. Backwards incompatible changes ------------------------------ - In previous versions, the views only responded with JSON responses when issuing AJAX requests of type POST. Now, the views also respond in JSON when making AJAX GET requests. - The structure of the response for AJAX requests has changed. Previously, it contained a ``form_errors`` key containing all form validation errors, if any. Now, it contains a ``form`` key that describes the complete form, including the fields. Field specific errors are placed in ``form.fields['some_field'].errors``, non-field errors in ``form.errors``. - The parameters passed to the Facebook JS SDK ``FB.init()`` method used to contain ``cookie``, ``status``, and ``xfbml``, all set to ``true``. These parameters are no longer explicitly passed. You can use the newly introduced ``INIT_PARAMS`` provider setting to provide your own values. 0.31.0 (2017-02-28) ******************* Note worthy changes ------------------- - Added a new ``user_logged_out`` signal. - OpenId: Added support for requesting additional data. - New providers: Auth0, Box, Line, Naver, Kakao, Daum, MailChimp, Eventbrite. Backwards incompatible changes ------------------------------ - Django 1.7 / Python 3.2 compatibility has been dropped. - Due to providers being registered in the same file as their definition it was impossible to subclass a provider without having the parent be registered. This has been addressed. If you have implemented a custom provider, you will need to change ``providers.registry.register(CustomProvider)`` into ``provider_classes = [CustomProvider]``. 0.30.0 (2017-01-01) ******************* Note worthy changes ------------------- - Changed the algorithm that generates unique usernames. Previously, in case the provider did not hand over any information to base the username on, the username "user" extended with an ever increasing numeric suffix would be attempted until a free username was found. In case of a large number of existing users, this could result in many queries being executed before a free username would be found, potentially resulting in a denial of service. The new algorithm uses a random suffix and only one query to determine the final username. - Added a new setting: ``ACCOUNT_PRESERVE_USERNAME_CASING``. This setting determines whether the username is stored in lowercase (``False``) or whether its casing is to be preserved (``True``). Note that when casing is preserved, potentially expensive ``__iexact`` lookups are performed when filter on username. For now, the default is set to ``True`` to maintain backwards compatibility. - The OAuth2Adapter class has gained a ``get_callback_url`` method for when customizing the callback URL is desired. - The Battle.net login backend now accepts the ``region`` GET parameter. - New providers: 500px, Discord. Backwards incompatible changes ------------------------------ - In previous versions, the ``DefaultAccountAdapter`` contained a ``username_regex`` property and accompanying ``error_messages['invalid_username']`` validation error message. These have been removed in favor of using the regex validation already defined at the user model level. Alternatively, you can use the newly introduced ``ACCOUNT_USERNAME_VALIDATORS`` setting. - The Battle.net backend no longer overrides username regex validation. In order to use battletags as usernames, you are expected to override either the ``username`` field on your User model, or to pass a custom validator which will accept the ``#`` character using the new ``ACCOUNT_USERNAME_VALIDATORS`` setting. Such a validator is available in ``socialaccount.providers.battlenet.validators.BattletagUsernameValidator``. 0.29.0 (2016-11-21) ******************* Note worthy changes ------------------- - Addressed Django 1.10 deprecation warnings. 0.28.0 (2016-10-13) ******************* Security notice --------------- - Previous versions contained a vulnerability allowing an attacker to alter the provider specific settings for ``SCOPE`` and/or ``AUTH_PARAMS`` (part of the larger ``SOCIALACCOUNT_PROVIDERS`` setting). The changes would persist across subsequent requests for all users, provided these settings were explicitly set within your project. These settings translate directly into request parameters, giving the attacker undesirable control over the OAuth(2) handshake. You are not affected if you did not explicitly configure these settings. Thanks to Ryan Kelly for reporting! Note worthy changes ------------------- - New providers: Doximity. - New translations: Korean. 0.27.0 (2016-08-18) ******************* Note worthy changes ------------------- - Django 1.10 compatibility. - The Twitter and GitHub providers now support querying of the email address. Backwards incompatible changes ------------------------------ - When ``ACCOUNT_SIGNUP_EMAIL_ENTER_TWICE`` was turned on, the e-mail field key changed from ``email`` to ``email1``, which could introduce subtle bugs. This has now been changed: there always is an ``email`` field, and optionally an ``email2`` field. - The "You must type the same password each time" form validation error that can be triggered during signup is now added to the ``password2`` field instead of being added to the non field errors. - The ``email_confirmation_sent`` signal is now passed ``request``, ``confirmation`` and ``signup`` instead of only the ``confirmation``. - ``ACCOUNT_PASSWORD_MIN_LENGTH`` was already deprecated, but is now completely ignored if ``AUTH_PASSWORD_VALIDATORS`` is not empty. 0.26.1 (2016-07-25) ******************* Note worthy changes ------------------- - Locale files wrongly packaged, fixed. - Fixed bug (``KeyError``) when ``ACCOUNT_SIGNUP_EMAIL_ENTER_TWICE`` was set to ``True``. 0.26.0 (2016-07-24) ******************* Note worthy changes ------------------- - New providers: Weixin, Battle.net, Asana, Eve Online, 23andMe, Slack - Django's password validation mechanism (see ``AUTH_PASSWORD_VALIDATORS``) is now used to validate passwords. - By default, email confirmations are no longer stored in the database. Instead, the email confirmation mail contains an HMAC based key identifying the email address to confirm. The verification lookup includes a fallback to the previous strategy so that there is no negative impact on pending verification emails. - A new setting ``ACCOUNT_SIGNUP_EMAIL_ENTER_TWICE`` was added, requiring users to input their email address twice. The setting ``ACCOUNT_SIGNUP_PASSWORD_VERIFICATION`` has been renamed to ``ACCOUNT_SIGNUP_PASSWORD_ENTER_TWICE``. - New translations: Latvian, Kyrgyz. Backwards incompatible changes ------------------------------ - Dropped support for Django 1.6 - In order to accomodate for Django's password validation, the ``clean_password`` method of the adapter now takes an (optional) ``user`` parameter as its second argument. - The new HMAC based keys may contain colons. If you have forked ``account/urls.py``, be sure to sync the ``account_confirm_email`` pattern. 0.25.2 (2016-03-13) ******************* Note worthy changes ------------------- - Bug fix release (MemcachedKeyCharacterError: "Control characters not allowed") 0.25.1 (2016-03-13) ******************* Note worthy changes ------------------- - Bug fix release (AttributeError in password reset view). 0.25.0 (2016-03-12) ******************* Note worthy changes ------------------- - Many providers were added: Reddit, Untappd, GitLab, Stripe, Pinterest, Shopify, Draugiem, DigitalOcean, Robinhood, Bitbucket(OAuth2). - The account connections view is now AJAX aware. - You can now customize the template extension that is being used to render all HTML templates (``ACCOUNT_TEMPLATE_EXTENSION``) - In order to be secure by default, users are now blocked from logging in after exceeding a maximum number of failed login attempts (see ``ACCOUNT_LOGIN_ATTEMPTS_LIMIT``, ``ACCOUNT_LOGIN_ATTEMPTS_TIMEOUT``). Set ``ACCOUNT_LOGIN_ATTEMPTS_LIMIT`` to ``None`` to disable this functionality. Important: while this protects the allauth login view, it does not protect Django's admin login from being brute forced. - New translations: Arabic, Lithuanian Backwards incompatible changes ------------------------------ None 0.24.1 (2015-11-09) ******************* Note worthy changes ------------------- - Non-test code accidentally had test packages as a dependency. Backwards incompatible changes ------------------------------ - Setting a password after logging in with a social account no longer logs out the user by default on Django 1.7+. Setting an initial password and changing the password both respect ``settings.ACCOUNT_LOGOUT_ON_PASSWORD_CHANGE``. 0.24.0 (2015-11-08) ******************* Note worthy changes ------------------- - Django 1.9b1 compatibility. - Seppo Erviälä contributed a Finnish translation, thanks! - Iurii Kriachko contributed a Basecamp provider, thanks! Backwards incompatible changes ------------------------------ - Increased ``SocialApp`` key/secret/token sizes to 191, decreased ``SocialAccount.uid`` size to 191. The latter was done in order to accomodate for MySQL in combination with utf8mb4 and contraints on ``uid``. Note that ``uid`` is used to store OpenID URLs, which can theoretically be longer than 191 characters, although in practice this does not seem to be the case. In case you really need to control the ``uid`` length, set ``settings.SOCIALACCOUNT_UID_MAX_LENGTH`` accordingly. Migrations are in place. 0.23.0 (2015-08-02) ******************* Note worthy changes ------------------- - David Friedman contributed Edmodo support, thanks! - Added support for ``ACCOUNT_LOGIN_ON_PASSWORD_RESET`` (thanks Julen!) Backwards incompatible changes ------------------------------ None 0.22.0 (2015-07-23) ******************* Note worthy changes ------------------- - Reversal of the email confirmation url can now be overridden in the adapter (``get_email_confirmation_url``). Additionally, the complete confirmation email handling can be overridden via ``send_confirmation_mail``. - Template context processors are no longer used. - The Facebook Graph API fields (/me/?fields=...) can now be configured using the provider ``FIELDS`` setting. Backwards incompatible changes ------------------------------ - Dropped support for Python 2.6 and Django <1.6. - The default Facebook Graph API version is now v2.4. - Template context processors are no longer used. The context processor for ``allauth.account`` was already empty, and the context processor for ``allauth.socialaccount`` has been converted into the :doc:``{% get_providers %} `` template tag. 0.21.0 (2015-07-02) ******************* Note worthy changes ------------------- - You can now tweak the authentication params per OAuth provider, as you already could for OAuth2. Contributed by Peter Rowlands, thanks. - Nattaphoom Ch. contributed a Thai translation, thanks! - Guoyu Hao contributed a Baidu provider, thanks! - Rod Xavier Bondoc contributed support logging out on password change (see setting: ``ACCOUNT_LOGOUT_ON_PASSWORD_CHANGE``) Backwards incompatible changes ------------------------------ - In version 0.20.0 an ``account`` migration (``0002_email_max_length``) was added to alter the maximum length of the email field. Unfortunately, a side effect of this migration was that the ``unique=True`` setting slipped through as well. Hardcoding this to ``True`` is wrong, as uniqueness actually depends on the ``ACCOUNT_UNIQUE_EMAIL`` setting. We cannot create a followup ``0003`` migration to set things straight, as the ``0002`` migration may fail on installations where email addresses are not unique. Therefore, we had to resort to changing an existing migration which is normally not the right thing to do. In case your installation has ``ACCOUNT_UNIQUE_EMAIL`` set to ``True``, you need not take any further action. In case it is set to ``False`` and migration ``0002`` already ran, please issue a ``--fake`` migration down to ``0001``, followed by a re-run of the updated ``0002``. 0.20.0 (2015-05-25) ******************* Note worthy changes ------------------- - Patrick Paul contributed a provider for Evernote, thanks! - Josh Wright contributed a provider for Spotify, thanks! - Björn Andersson added support for Dropbox OAuth2, thanks! - guoqiao contributed a provider for Douban, thanks! Backwards incompatible changes ------------------------------ - Given that the ``max_length`` for the Django 1.8 ``EmailField`` has been bumped to 254, allauth is following up. Migrations (``account``) are in place. 0.19.1 (2015-02-05) ******************* Note worthy changes ------------------- - Fixed migrations when using South & Django 1.6. 0.19.0 (2015-01-04) ******************* Note worthy changes ------------------- - Basil Shubin contributed an Odnoklassniki provider, thanks! - Facebook: If the JS SDK is not available, for example due to a browser plugin like Disconnect.me that blocks it, login falls back to the regular non JS handshake. - ``is_safe_url`` can now be overriden - Facebook: The Graph API version is now configurable via ``SOCIALACCOUNT_PROVIDERS``. - A Firefox Accounts provider was added by Jannis Leidel, thanks! - Josh Owen contributed Coinbase support, thanks! - Tomas Babej contributed a Slovak translation, thanks! - Moved existing migrations into ``south_migrations`` - "zbryikt" contributed a Taiwanese Chinese translation, thanks! - Added support for custom password rules via ``clean_password``. Backwards incompatible changes ------------------------------ - In the upcoming Django 1.8 it is no longer possible to hookup an unsaved ``User`` instance to a ``SocialAccount``. Therefore, if you are inspecting the ``sociallogin`` object, you should now use ``sociallogin.user`` instead of ``sociallogin.account.user``. - When users logged in while ``User.is_active`` was ``False``, they were sent to ``/accounts/inactive/`` in case of a social login, and received a form validation error in case of a local login. This needless inconsistency has been removed. The validation error no longer appears and local logins are also redirected to ``/accounts/inactive/``. - In case you were overriding the ``ResetPasswordForm``: the save method now takes ``request`` as its first argument. - All existing migrations have been moved into ``south_migrations`` packages, this in order not to conflict with Django's built-in support for migrations. South 1.0 automatically picks up this new location. Upgrade South if you are still dependent on these migrations. 0.18.0 (2014-08-12) ******************* Note worthy changes ------------------- - Storing social access tokens is now optional (``SOCIALACCOUNT_STORE_TOKENS``). - ``nimiq`` contributed ORCID support, thanks. - All forms are now pluggable via a new setting: ``(SOCIAL)ACCOUNT_FORMS``. - James Thompson contributed Windows Live support, thanks! Backwards incompatible changes ------------------------------ - SECURITY: The Persona provider now requires the ``AUDIENCE`` parameter to be explicitly configured, as required by the Persona specification for security reasons. - The inline Javascript is removed from the ``fbconnect.html`` template, which allows for a more strict ``Content-Security-Policy``. If you were using the builtin ``fbconnect.html`` this change should go by unnoticed. 0.17.0 (2014-06-16) ******************* Note worthy changes ------------------- - ``sourenaraya`` contributed Mail.Ru support, thanks. - account: Justin Michalicek contributed support to control session life time and age: ``ACCOUNT_SESSION_COOKIE_AGE`` and ``ACCOUNT_SESSION_REMEMBER``. - Serafeim Papastefanos contributed an Ukrainian translation, thanks! - ``kkarwows`` contributed AppConfig support, thanks. - socialaccount: Added Xing provider. - socialaccount: Marcin Skarbek contributed Hubic support, thanks! - Volodymyr Yatsyk contributed an Ukrainian translation, thanks! - ``joke2k`` contributed an Italian translation, thanks! - socialaccount: All providers now support the ``VERIFIED_EMAIL`` property have e-mail addresses forced to be interpreted as verified. Backwards incompatible changes ------------------------------ None 0.16.1 (2014-03-12) ******************* Note worthy changes ------------------- - Facebook login via Javascript was broken if ``auth_type`` was not set to ``reauthenticate``, fixed. - Support for hooking up a callback when ``FB.init()`` is ready (``allauth.facebook.onInit``) Backwards incompatible changes ------------------------------ None 0.16.0 (2014-03-10) ******************* Note worthy changes ------------------- - Nariman Gharib contributed a Persian translation, thanks! - The custom signup form ``save`` has been deprecated in favour of a ``def signup(request, user)`` method. - Facebook reauthentication now uses an ``auth_nonce``. - Added a new option ``ACCOUNT_LOGIN_ON_EMAIL_CONFIRMATION``, to indicate whether or not e-mail confirmation is to automatically log in. - socialaccount: Added Bitbucket provider. - Jack Shedd contributed Tumblr support, thanks! - Romanos Tsouroplis contributed Foursquare support, thanks! - "excessivedemon" contributed Flickr support, thanks! - Luis Diego García contributed Amazon and Paypal support, thanks! - Stuart Ross contributed LinkedIn OAuth 2.0 support, thanks! Backwards incompatible changes ------------------------------ - Previously, the ``save(user)`` was called on the custom signup form. However, this shadowed the existing ``save`` method in case a model form was used. To avoid confusion, the ``save`` method has been deprecated in favour of a ``def signup(request, user)`` method. - The Amazon provider requires more space for ``token_secret``, so the maximum length restriction has been dropped. Migrations are in place. 0.15.0 (2013-12-01) ******************* Note worthy changes ------------------- - socialaccount: Added ``is_auto_signup_allowed`` to social account adapter. - facebook: Added a new setting: VERIFIED_EMAIL. - socialaccount: a collision on e-mail address when you sign up using a third party social account is now more clearly explained: "An account already exists with this e-mail address. Please sign in to that account first, then connect your Google account". - account: You are now automatically logged in after confirming your e-mail address during sign up. - account: The ``/accounts/login/`` view now supports AJAX requests. - facebook: The fbconnect.js script is now more pluggable. - socialaccount: Markus Kaiserswerth contributed a Feedly provider, thanks! - socialaccount: Dropped django-avatar support. - openid: First, last and full name are now also queried together with the e-mail address. Thanks, @andrvb. - openid: Compatibility fix for Django 1.6 (JSON serializer). - account: Added support for ``ACCOUNT_CONFIRM_EMAIL_ON_GET``. Backwards incompatible changes ------------------------------ - Instead of directly rendering and returning a template, logging in while the account is inactive or not yet confirmed now redirects to two new views: ``/accounts/inactive/`` respectively ``/accounts/confirm-email/``. - The ``account/verification_sent.html`` template no longer receives the e-mail address in the context (``email``). Note that a message containing that e-mail address is still emitted using the messages framework. - The ``/accounts/confirm_email/key/`` view has been renamed to ``/accounts/confirm-email/`` (human friendlier). Redirects are in place to handle old still pending confirmations. - Built-in support for django-avatar has been removed. Offering such functionality means making choices which may not be valid for everyone. For example, allauth was downloading the image (which can take some time, or even block) in the context of the login, whereas a better place might be some celery background job. Additionally, in case of an error it simply ignored this. How about retries et al? Also, do you want to copy the avatar once at sign up, or do you want to update on each login? All in all, this functionality goes way beyond authentication and should be addressed elsewhere, beyond allauth scope. The original code has been preserved here so that you can easily reinstate it in your own project: https://gist.github.com/pennersr/7571752 0.14.2 (2013-11-16) ******************* Note worthy changes ------------------- - Compatibility fix for logging in with Django 1.6. - Maksim Rukomoynikov contributed a Russian translation, thanks! Backwards incompatible changes ------------------------------ - In case you were using the internal method ``generate_unique_username``, note that its signature has changed. It now takes a list of candidates to base the username on. 0.14.1 (2013-10-28) ******************* Note worthy changes ------------------- - PyPi did not render the README.rst properly. Backwards incompatible changes ------------------------------ None 0.14.0 (2013-10-28) ******************* Note worthy changes ------------------- - Stuart Ross contributed AngelList support, thanks! - LinkedIn: profile fields that are to be fetched are now configurable (``PROFILE_FIELDS`` provider-level setting). - Udi Oron contributed a Hebrew translation, thanks! - Add setting ``ACCOUNT_DEFAULT_HTTP_PROTOCOL`` (HTTPS support). - George Whewell contributed Instagram support, thanks! - Refactored adapter methods relating to creating and populating ``User`` instances. - User creation methods in the ``Default(Social)AccountAdapter`` now have access to the ``request``. Backwards incompatible changes ------------------------------ - The ``socialaccount/account_inactive.html`` template has been moved to ``account/account_inactive.html``. - The adapter API for creating and populating users has been overhauled. As a result, the ``populate_new_user`` adapter methods have disappeared. Please refer to the section on "Creating and Populating User Instances" for more information. 0.13.0 (2013-08-31) ******************* Note worthy changes ------------------- - Koichi Harakawa contributed a Japanese translation, thanks! - Added ``is_open_for_signup`` to DefaultSocialAccountAdapter. - Added VK provider support. - Marcin Spoczynski contributed a Polish translation, thanks! - All views are now class-based. - ``django.contrib.messages`` is now optional. - "jresins" contributed a simplified Chinese, thanks! Backwards incompatible changes ------------------------------ - The password reset from key success response now redirects to a "done" view (``/accounts/password/reset/key/done/``). This view has its own ``account/password_reset_from_key_done.html`` template. In previous versions, the success template was intertwined with the ``account/password_reset_from_key.html`` template. 0.12.0 (2013-07-01) ******************* Note worthy changes ------------------- - Added support for re-authenticated (forced prompt) by means of a new ``action="reauthenticate"`` parameter to the ``{% provider_login_url %}`` - Roberto Novaes contributed a Brazilian Portuguese translation, thanks! - Daniel Eriksson contributed a Swedish translation, thanks! - You can now logout from both allauth and Facebook via a Javascript helper: ``window.allauth.facebook.logout()``. - Connecting a social account is now a flow that needs to be explicitly triggered, by means of a ``process="connect"`` parameter that can be passed along to the ``{% provider_login_url %}``, or a ``process=connect`` GET parameter. - Tomas Marcik contributed a Czech translation, thanks! Backwards incompatible changes ------------------------------ - The ``{% provider_login_url %}`` tag now takes an optional process parameter that indicates how to process the social login. As a result, if you include the template ``socialaccount/snippets/provider_list.html`` from your own overriden ``socialaccount/connections.html`` template, you now need to pass along the process parameter as follows: ``{% include "socialaccount/snippets/provider_list.html" with process="connect" %}``. - Instead of inlining the required Facebook SDK Javascript wrapper code into the HTML, it now resides into its own .js file (served with ``{% static %}``). If you were using the builtin ``fbconnect.html`` this change should go by unnoticed. 0.11.1 (2013-06-04) ******************* Note worthy changes ------------------- - Released (due to issue in disconnecting social accounts). Backwards incompatible changes ------------------------------ None 0.11.0 (2013-06-02) ******************* Note worthy changes ------------------- - Moved logic whether or not a social account can be disconnected to the ``SocialAccountAdapter`` (``validate_disconnect``). - Added ``social_account_removed`` signal. - Implemented CSRF protection (http://tools.ietf.org/html/draft-ietf-oauth-v2-30#section-10.12). - The ``user_logged_in`` signal now optionally receives a ``sociallogin`` parameter, in case of a social login. - Added ``social_account_added`` (contributed by orblivion, thanks). - Hatem Nassrat contributed Bitly support, thanks! - Bojan Mihelac contributed a Croatian translation, thanks! - Messages (as in ``django.contrib.messages``) are now configurable through templates. - Added support for differentiating e-mail handling (verification, required) between local and social accounts: ``SOCIALACCOUNT_EMAIL_REQUIRED`` and ``SOCIALACCOUNT_EMAIL_VERIFICATION``. Backwards incompatible changes ------------------------------ None 0.10.1 (2013-04-16) ******************* Note worthy changes ------------------- - Cleaning of ``username`` can now be overriden via ``DefaultAccountAdapter.clean_username`` - Fixed potential error (``assert``) when connecting social accounts. - Added support for custom username handling in case of custom user models (``ACCOUNT_USER_MODEL_USERNAME_FIELD``). Backwards incompatible changes ------------------------------ None 0.10.0 (2013-04-12) ******************* Note worthy changes ------------------- - Chris Davis contributed Vimeo support, thanks! - Added support for overriding the URL to return to after connecting a social account (``allauth.socialaccount.adapter.DefaultSocialAccountAdapter.get_connect_redirect_url``). - Python 3 is now supported! - Dropped dependency on (unmaintained?) oauth2 package, in favor of requests-oauthlib. - account: E-mail confirmation mails generated at signup can now be differentiated from regular e-mail confirmation mails by placing e.g. a welcome message into the ``account/email/email_confirmation_signup*`` templates. Thanks to Sam Solomon for the patch. - account: Moved User instance creation to adapter so that e.g. username generation can be influenced. Thanks to John Bazik for the patch. - Robert Balfre contributed Dropbox support, thanks! - socialaccount: Added support for Weibo. - account: Added support for sending HTML e-mail. Add ``*_message.html`` templates and they will be automatically picked up. - Added support for passing along extra parameters to the OAuth2 authentication calls, such as ``access_type`` (Google) or ``auth_type`` (Facebook). - Both the login and signup view now immediately redirect to the login redirect url in case the user was already authenticated. - Added support for closing down signups in a pluggable fashion, making it easy to hookup your own invitation handling mechanism. - Added support for passing along extra parameters to the ``FB.login`` API call. Backwards incompatible changes ------------------------------ - Logout no longer happens on GET request. Refer to the ``LogoutView`` documentation for more background information. Logging out on GET can be restored by the setting ``ACCOUNT_LOGOUT_ON_GET``. Furthermore, after logging out you are now redirected to ``ACCOUNT_LOGOUT_REDIRECT_URL`` instead of rendering the ``account/logout.html`` template. - ``LOGIN_REDIRECT_URLNAME`` is now deprecated. Django 1.5 accepts both URL names and URLs for ``LOGIN_REDIRECT_URL``, so we do so as well. - ``DefaultAccountAdapter.stash_email_verified`` is now named ``stash_verified_email``. - Django 1.4.3 is now the minimal requirement. - Dropped dependency on (unmaintained?) oauth2 package, in favor of requests-oauthlib. So you will need to update your (virtual) environment accordingly. - We noticed a very rare bug that affects end users who add Google social login to existing accounts. The symptom is you end up with users who have multiple primary email addresses which conflicts with assumptions made by the code. In addition to fixing the code that allowed duplicates to occur, there is a managegement command you can run if you think this effects you (and if it doesn't effect you there is no harm in running it anyways if you are unsure): - ``python manage.py account_unsetmultipleprimaryemails`` - Will silently remove primary flags for email addresses that aren't the same as ``user.email``. - If no primary ``EmailAddress`` is ``user.email`` it will pick one at random and print a warning. - The expiry time, if any, is now stored in a new column ``SocialToken.expires_at``. Migrations are in place. - Furthermore, Facebook started returning longer tokens, so the maximum token length was increased. Again, migrations are in place. - Login and signup views have been turned into class-based views. - The template variable ``facebook_perms`` is no longer passed to the "facebook/fbconnect.html" template. Instead, ``fb_login_options`` containing all options is passed. 0.9.0 (2013-01-30) ****************** Note worthy changes ------------------- - account: ``user_signed_up`` signal now emits an optional ``sociallogin`` parameter so that receivers can easily differentiate between local and social signups. - account: Added ``email_removed`` signal. - socialaccount: Populating of User model fields is now centralized in the adapter, splitting up ``name`` into ``first_name`` and ``last_name`` if these were not individually available. - Ahmet Emre Aladağ contributed a Turkish translation, thanks! - socialaccount: Added SocialAccountAdapter hook to allow for intervention in social logins. - google: support for Google's ``verified_email`` flag to determine whether or not to send confirmation e-mails. - Fábio Santos contributed a Portugese translation, thanks! - socialaccount: Added support for Stack Exchange. - socialaccount: Added ``get_social_accounts`` template tag. - account: Default URL to redirect to after login can now be overriden via the adapter, both for login and e-mail confirmation redirects. Backwards incompatible changes ------------------------------ - ``requests`` is now a dependency (dropped ``httplib2``). - Added a new column ``SocialApp.client_id``. The value of ``key`` needs to be moved to the new ``client_id`` column. The ``key`` column is required for Stack Exchange. Migrations are in place to handle all of this automatically. 0.8.3 (2012-12-06) ****************** Note worthy changes ------------------- - Markus Thielen contributed a German translation, thanks! - The ``site`` foreign key from ``SocialApp`` to ``Site`` has been replaced by a ``ManyToManyField``. Many apps can be used across multiple domains (Facebook cannot). - account: Added adapter class for increased pluggability. Added hook for 3rd party invitation system to by pass e-mail verification (``stash_email_verified``). Moved sending of mail to adapter. - account: Added option to completely disable e-mail verification during signup. Backwards incompatible changes ------------------------------ - The ``ACCOUNT_EMAIL_VERIFICATION`` setting is no longer a boolean based setting. Use a string value of "none", "optional" or "mandatory" instead. - The template "account/password_reset_key_message.txt" has been moved to "account/email/password_reset_key_message.txt". The subject of the message has been moved into a template ("account/email/password_reset_key_subject.txt"). - The ``site`` foreign key from ``SocialApp`` to ``Site`` has been replaced by a ``ManyToManyField``. Many apps can be used across multiple domains (Facebook cannot). 0.8.2 (2012-10-10) ****************** Note worthy changes ------------------- - Twitter: Login was broken due to change at in URLs at Twitter, fixed. - LinkedIn: Added support for passing along the OAuth scope. - account: Improved e-mail confirmation error handling, no more confusing 404s. - account: Aldiantoro Nugroho contributed support for a new setting: ACCOUNT_USERNAME_MIN_LENGTH - socialaccount: Added preliminary support for Mozilla Persona. - account: Sam Solomon added various signals for email and password related changes. - account: Usernames may now contain @, +, . and - characters. Backwards incompatible changes ------------------------------ - Dropped support for ``CONTACT_EMAIL`` from the ``account`` template context processor. It was never documented and only used in the templates as an example -- there is no need to pollute the ``allauth`` settings with that. If your templates rely on it then you will have to put it in a context processor yourself. 0.8.1 (2012-09-03) ****************** Note worthy changes ------------------- - Python 2.6.2 compatibility issue, fixed. - The example project was unintentionally packaged, fixed. Backwards incompatible changes ------------------------------ None 0.8.0 (2012-09-01) ****************** Note worthy changes ------------------- - account: Dropped dependency on the emailconfirmation app, integrating its functionality into the account app. This change is of major impact, please refer to the documentation on how to upgrade. - account: Documented ACCOUNT_USERNAME_REQUIRED. This is actually not a new setting, but it somehow got overlooked in the documentation. - account/socialaccount: Dropped the _tags postfix from the template tag libraries. Simply use {% load account %} and {% load socialaccount %}. - Added signup and social login signals. - SoundCloud: Rabi Alam contributed a SoundCloud provider, thanks! - account: Sam Solomon cleaned up the e-mail management view: added proper redirect after POSTs, prevent deletion of primary e-mail. Thanks. - account: When signing up, instead of generating a completely random username a more sensible username is automatically derived from first/last name or e-mail. Backwards incompatible changes ------------------------------ - ``allauth`` now depends on Django 1.4 or higher. - Major impact: dropped dependency on the ``emailconfirmation`` app, as this project is clearly left unmaintained. Important tickets such as https://github.com/pinax/django-email-confirmation/pull/5 are not being addressed. All models and related functionality have been directly integrated into the ``allauth.account`` app. When upgrading take care of the following: - The ``emailconfirmation`` setting ``EMAIL_CONFIRMATION_DAYS`` has been replaced by ``ACCOUNT_EMAIL_CONFIRMATION_EXPIRE_DAYS``. - Instead of directly confirming the e-mail address upon the GET request the confirmation is now processed as part of an explicit POST. Therefore, a new template ``account/email_confirm.html`` must be setup. - Existing ``emailconfirmation`` data should be migrated to the new tables. For this purpose a special management command is available: ``python manage.py account_emailconfirmationmigration``. This command does not drop the old ``emailconfirmation`` tables -- you will have to do this manually yourself. Why not use South? EmailAddress uniqueness depends on the configuration (``ACCOUNT_UNIQUE_EMAIL``), South does not handle settings dependent database models. - ``{% load account_tags %}`` is deprecated, simply use: ``{% load account %}`` - ``{% load socialaccount_tags %}`` is deprecated, simply use: ``{% load socialaccount %}`` 0.7.0 (2012-07-18) ****************** Note worthy changes ------------------- - Facebook: Facundo Gaich contributed support for dynamically deriving the Facebook locale from the Django locale, thanks!. - OAuth: All OAuth/OAuth2 tokens are now consistently stored across the board. Cleaned up OAuth flow removing superfluous redirect. - Facebook: Dropped Facebook SDK dependency. - socialaccount: DRY focused refactoring of social login. - socialaccount: Added support for Google OAuth2 and Facebook OAuth2. Fixed GitHub. - account: Added verified_email_required decorator. - socialaccount: When signing up, user.first/last_name where always taken from the provider signup data, even when a custom signup form was in place that offered user inputs for editting these fields. Fixed. Backwards incompatible changes ------------------------------ None 0.6.0 (2012-06-20) ****************** Note worthy changes ------------------- - account: Added ACCOUNT_USER_DISPLAY to render a user name without making assumptions on how the user is represented. - allauth, socialaccount: Removed the last remaining bits of hardcodedness with respect to the enabled social authentication providers. - account: Added ACCOUNT_AUTHENTICATION_METHOD setting, supporting login by username, e-mail or both. Backwards incompatible changes ------------------------------ - The ``ACCOUNT_EMAIL_AUTHENTICATION`` setting has been dropped in favor of ``ACCOUNT_AUTHENTICATION_METHOD``. - The login form field is now always named ``login``. This used to by either ``username`` or ``email``, depending on the authentication method. If needed, update your templates accordingly. - The ``allauth`` template tags (containing template tags for OpenID, Twitter and Facebook) have been removed. Use the ``socialaccount`` template tags instead (specifically: ``{% provider_login_url ... %}``). - The ``allauth.context_processors.allauth`` context processor has been removed, in favor of ``allauth.socialaccount.context_processors.socialaccount``. In doing so, all hardcodedness with respect to providers (e.g ``allauth.facebook_enabled``) has been removed. 0.5.0 (2012-06-08) ****************** Note worthy changes ------------------- - account: Added setting ACCOUNT_PASSWORD_MIN_LENGTH for specifying the minimum password length. - socialaccount: Added generic OAuth2 support. Added GitHub support as proof of concept. - socialaccount: More refactoring: generic provider & OAuth consumer approach. Added LinkedIn support to test this approach. - socialaccount: Introduced generic models for storing social apps, accounts and tokens in a central and consistent manner, making way for adding support for more account providers. Note: there is more refactoring to be done -- this first step only focuses on the database models. - account: E-mail confirmation mails are now automatically resent whenever a user attempts to login with an unverified e-mail address (if ACCOUNT_EMAIL_VERIFICATION=True). Backwards incompatible changes ------------------------------ - Upgrade your ``settings.INSTALLED_APPS``: Replace ``allauth.`` (where provider is one of ``twitter``, ``facebook`` or ``openid``) with ``allauth.socialaccount.providers.`` - All provider related models (``FacebookAccount``, ``FacebookApp``, ``TwitterAccount``, ``TwitterApp``, ``OpenIDAccount``) have been unified into generic ``SocialApp`` and ``SocialAccount`` models. South migrations are in place to move the data over to the new models, after which the original tables are dropped. Therefore, be sure to run migrate using South. 0.4.0 (2012-03-25) ****************** Note worthy changes ------------------- - account: The render_value parameter of all PasswordInput fields used can now be configured via a setting. - account: Added support for prefixing the subject of sent emails. - account: Added support for a plugging in a custom signup form used for additional questions to ask during signup. - account: ``is_active`` is no longer used to keep users with an unverified e-mail address from loging in. - Dropping uniform dependency. Moved uniform templates into example project. Backwards incompatible changes ------------------------------ None 0.3.0 (2012-01-19) ****************** Note worthy changes ------------------- - The e-mail authentication backend now attempts to use the 'username' parameter as an e-mail address. This is needed to properly integrate with other apps invoking authenticate. - SmileyChris contributed support for automatically generating a user name at signup when ``ACCOUNT_USERNAME_REQUIRED`` is set to False. - Vuong Nguyen contributed support for (optionally) asking for the password just once during signup (``ACCOUNT_SIGNUP_PASSWORD_VERIFICATION``). - The Twitter oauth sequence now respects the "oauth_callback" parameter instead of defaulting to the callback URL configured at Twitter. - Pass along ``?next=`` parameter between login and signup views. - Added Dutch translation. - Added template tags for pointing to social login URLs. These tags automatically pass along any ``?next=`` parameter. Additionally, added an overall allauth_tags that gracefully degrades when e.g. allauth.facebook is not installed. - Pass along next URL, if any, at ``/accounts/social/signup/``. - Duplicate email address handling could throw a MultipleObjectsReturned exception, fixed. - Removed separate social account login view, in favour of having a single unified login view including both forms of login. - Added support for passing along a next URL parameter to Facebook, OpenID logins. - Added support for django-avatar, copying the Twitter profile image locally on signup. - ``allauth/account/forms.py`` (``BaseSignupForm.clean_email``): With ``ACCOUNT_EMAIL_REQUIRED=False``, empty email addresses were considered duplicates. Fixed. - The existing migrations for allauth.openid were not compatible with MySQL due to the use of an URLField with max_length above 255. The issue has now been addressed but unfortunately at the cost of the existing migrations for this app. Existing installations will have to be dealt with manually (altering the "identity" column of OpenIDAccount, deleting ghost migrations). Backwards incompatible changes ------------------------------ - None django-allauth-0.35.0/test_settings.py0000644000076500000240000001212613235130412020715 0ustar pennersrstaff00000000000000SECRET_KEY = 'psst' SITE_ID = 1 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': ':memory:', 'USER': '', 'PASSWORD': '', 'HOST': '', 'PORT': '', } } ROOT_URLCONF = 'allauth.urls' TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages' ], }, }, ] MIDDLEWARE = ( 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ) INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.admin', 'allauth', 'allauth.account', 'allauth.socialaccount', 'allauth.socialaccount.providers.amazon', 'allauth.socialaccount.providers.angellist', 'allauth.socialaccount.providers.asana', 'allauth.socialaccount.providers.auth0', 'allauth.socialaccount.providers.authentiq', 'allauth.socialaccount.providers.azure', 'allauth.socialaccount.providers.baidu', 'allauth.socialaccount.providers.basecamp', 'allauth.socialaccount.providers.battlenet', 'allauth.socialaccount.providers.bitbucket', 'allauth.socialaccount.providers.bitbucket_oauth2', 'allauth.socialaccount.providers.bitly', 'allauth.socialaccount.providers.box', 'allauth.socialaccount.providers.coinbase', 'allauth.socialaccount.providers.dataporten', 'allauth.socialaccount.providers.daum', 'allauth.socialaccount.providers.digitalocean', 'allauth.socialaccount.providers.discord', 'allauth.socialaccount.providers.douban', 'allauth.socialaccount.providers.doximity', 'allauth.socialaccount.providers.draugiem', 'allauth.socialaccount.providers.dropbox', 'allauth.socialaccount.providers.dwolla', 'allauth.socialaccount.providers.edmodo', 'allauth.socialaccount.providers.eveonline', 'allauth.socialaccount.providers.evernote', 'allauth.socialaccount.providers.eventbrite', 'allauth.socialaccount.providers.facebook', 'allauth.socialaccount.providers.feedly', 'allauth.socialaccount.providers.fivehundredpx', 'allauth.socialaccount.providers.flickr', 'allauth.socialaccount.providers.foursquare', 'allauth.socialaccount.providers.fxa', 'allauth.socialaccount.providers.github', 'allauth.socialaccount.providers.gitlab', 'allauth.socialaccount.providers.google', 'allauth.socialaccount.providers.hubic', 'allauth.socialaccount.providers.instagram', 'allauth.socialaccount.providers.kakao', 'allauth.socialaccount.providers.line', 'allauth.socialaccount.providers.linkedin', 'allauth.socialaccount.providers.linkedin_oauth2', 'allauth.socialaccount.providers.mailchimp', 'allauth.socialaccount.providers.mailru', 'allauth.socialaccount.providers.meetup', 'allauth.socialaccount.providers.microsoft', 'allauth.socialaccount.providers.naver', 'allauth.socialaccount.providers.odnoklassniki', 'allauth.socialaccount.providers.openid', 'allauth.socialaccount.providers.orcid', 'allauth.socialaccount.providers.patreon', 'allauth.socialaccount.providers.paypal', 'allauth.socialaccount.providers.persona', 'allauth.socialaccount.providers.pinterest', 'allauth.socialaccount.providers.reddit', 'allauth.socialaccount.providers.robinhood', 'allauth.socialaccount.providers.salesforce', 'allauth.socialaccount.providers.shopify', 'allauth.socialaccount.providers.slack', 'allauth.socialaccount.providers.soundcloud', 'allauth.socialaccount.providers.spotify', 'allauth.socialaccount.providers.stackexchange', 'allauth.socialaccount.providers.stripe', 'allauth.socialaccount.providers.trello', 'allauth.socialaccount.providers.tumblr', 'allauth.socialaccount.providers.twentythreeandme', 'allauth.socialaccount.providers.twitch', 'allauth.socialaccount.providers.twitter', 'allauth.socialaccount.providers.untappd', 'allauth.socialaccount.providers.vimeo', 'allauth.socialaccount.providers.vk', 'allauth.socialaccount.providers.weibo', 'allauth.socialaccount.providers.weixin', 'allauth.socialaccount.providers.windowslive', 'allauth.socialaccount.providers.xing', 'allauth.socialaccount.providers.yahoo', ) AUTHENTICATION_BACKENDS = ( "django.contrib.auth.backends.ModelBackend", "allauth.account.auth_backends.AuthenticationBackend", ) STATIC_ROOT = '/tmp/' # Dummy STATIC_URL = '/static/'