Commit b9099ef6 authored by Pierre-Elliott Bécue's avatar Pierre-Elliott Bécue

New upstream version 0.38.0+ds

parent 9399f70e
...@@ -47,6 +47,7 @@ Griffith Rees ...@@ -47,6 +47,7 @@ Griffith Rees
Guillaume Vincent Guillaume Vincent
Guoyu Hao Guoyu Hao
Hatem Nassrat Hatem Nassrat
Hyunwoo Shim
J. Erm J. Erm
J. Fernando Sánchez J. Fernando Sánchez
Jack Shedd Jack Shedd
...@@ -68,6 +69,7 @@ Joshua Sorenson ...@@ -68,6 +69,7 @@ Joshua Sorenson
Julen Ruiz Aizpuru Julen Ruiz Aizpuru
Justin Michalicek Justin Michalicek
Justin Pogrob Justin Pogrob
Kevin Dice
Koichi Harakawa Koichi Harakawa
Lee Semel Lee Semel
Luis Diego García Luis Diego García
...@@ -86,10 +88,13 @@ Mauro Stettler ...@@ -86,10 +88,13 @@ Mauro Stettler
Morgante Pell Morgante Pell
Nariman Gharib Nariman Gharib
Niklas A Emanuelsson Niklas A Emanuelsson
Pavel Savchenko
Patrick Paul Patrick Paul
Paulo Eduardo Neves Paulo Eduardo Neves
Peter Bittner Peter Bittner
Peter Rowlands Peter Rowlands
Peter Stein
Philip John James
Rabi Alam Rabi Alam
Radek Czajka Radek Czajka
Rense VanderHoek Rense VanderHoek
...@@ -108,6 +113,7 @@ Stuart Ross ...@@ -108,6 +113,7 @@ Stuart Ross
Terry Jones Terry Jones
Tomas Babej Tomas Babej
Tomas Marcik Tomas Marcik
Tuk Bredsdorff
Udi Oron Udi Oron
Vuong Nguyen Vuong Nguyen
Volodymyr Yatsyk Volodymyr Yatsyk
......
0.38.0 (2018-10-03)
*******************
Security notice
---------------
The ``{% user_display user %}`` tag did not escape properly. Depending on the
username validation rules, this could lead to XSS issues.
Note worthy changes
-------------------
- New provider: Vimeo (OAuth2).
- New translations: Basque.
0.37.1 (2018-08-27)
*******************
Backwards incompatible changes
------------------------------
- Dropped the ``x-li-src: msdk`` headers from the ``linkedin_oauth2`` handshake.
This header is only required for mobile tokens, and breaks the regular flow.
Use the ``HEADERS`` setting to add this header if you need it.
0.37.0 (2018-08-27)
*******************
Note worthy changes
-------------------
- The Battle.net login backend now recognizes ``apac`` as a valid region.
- User model using a ``UUIDField`` as it's primary key can now be logged
in upon email confirmation (if using ``ACCOUNT_LOGIN_ON_EMAIL_CONFIRMATION``).
- New providers: Agave, Cern, Disqus, Globus.
- New translation: Danish.
0.36.0 (2018-05-08) 0.36.0 (2018-05-08)
******************* *******************
...@@ -1060,7 +1104,7 @@ Backwards incompatible changes ...@@ -1060,7 +1104,7 @@ Backwards incompatible changes
social login to existing accounts. The symptom is you end up with social login to existing accounts. The symptom is you end up with
users who have multiple primary email addresses which conflicts users who have multiple primary email addresses which conflicts
with assumptions made by the code. In addition to fixing the code with assumptions made by the code. In addition to fixing the code
that allowed duplicates to occur, there is a managegement command that allowed duplicates to occur, there is a management command
you can run if you think this effects you (and if it doesn't effect you 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): you there is no harm in running it anyways if you are unsure):
......
Metadata-Version: 1.1 Metadata-Version: 1.1
Name: django-allauth Name: django-allauth
Version: 0.36.0 Version: 0.38.0
Summary: Integrated set of Django applications addressing authentication, registration, account management as well as 3rd party (social) account authentication. 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 Home-page: http://github.com/pennersr/django-allauth
Author: Raymond Penners Author: Raymond Penners
...@@ -110,3 +110,4 @@ Classifier: Programming Language :: Python :: 3.6 ...@@ -110,3 +110,4 @@ Classifier: Programming Language :: Python :: 3.6
Classifier: Framework :: Django Classifier: Framework :: Django
Classifier: Framework :: Django :: 1.11 Classifier: Framework :: Django :: 1.11
Classifier: Framework :: Django :: 2.0 Classifier: Framework :: Django :: 2.0
Classifier: Framework :: Django :: 2.1
...@@ -8,7 +8,7 @@ r""" ...@@ -8,7 +8,7 @@ r"""
""" """
VERSION = (0, 36, 0, 'final', 0) VERSION = (0, 38, 0, 'final', 0)
__title__ = 'django-allauth' __title__ = 'django-allauth'
__version_info__ = VERSION __version_info__ = VERSION
......
...@@ -268,7 +268,13 @@ class DefaultAccountAdapter(object): ...@@ -268,7 +268,13 @@ class DefaultAccountAdapter(object):
username_field).error_messages.get('unique') username_field).error_messages.get('unique')
if not error_message: if not error_message:
error_message = self.error_messages['username_taken'] error_message = self.error_messages['username_taken']
raise forms.ValidationError(error_message) raise forms.ValidationError(
error_message,
params={
'model_name': user_model.__name__,
'field_label': username_field,
}
)
return username return username
def clean_email(self, email): def clean_email(self, email):
...@@ -333,8 +339,8 @@ class DefaultAccountAdapter(object): ...@@ -333,8 +339,8 @@ class DefaultAccountAdapter(object):
if hasattr(response, 'render'): if hasattr(response, 'render'):
response.render() response.render()
resp['html'] = response.content.decode('utf8') resp['html'] = response.content.decode('utf8')
if data is not None: if data is not None:
resp['data'] = data resp['data'] = data
return HttpResponse(json.dumps(resp), return HttpResponse(json.dumps(resp),
status=status, status=status,
content_type='application/json') content_type='application/json')
......
...@@ -6,25 +6,8 @@ from allauth.account.utils import user_display ...@@ -6,25 +6,8 @@ from allauth.account.utils import user_display
register = template.Library() register = template.Library()
class UserDisplayNode(template.Node): @register.simple_tag(name='user_display')
def user_display_tag(user):
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:: Example usage::
...@@ -38,15 +21,4 @@ def do_user_display(parser, token): ...@@ -38,15 +21,4 @@ def do_user_display(parser, token):
{% endblocktrans %} {% endblocktrans %}
""" """
bits = token.split_contents() return user_display(user)
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)
...@@ -11,6 +11,8 @@ from django.contrib.sites.models import Site ...@@ -11,6 +11,8 @@ from django.contrib.sites.models import Site
from django.core import mail, validators from django.core import mail, validators
from django.core.exceptions import ValidationError from django.core.exceptions import ValidationError
from django.db import models from django.db import models
from django.http import HttpResponseRedirect
from django.template import Context, Template
from django.test.client import Client, RequestFactory from django.test.client import Client, RequestFactory
from django.test.utils import override_settings from django.test.utils import override_settings
from django.urls import reverse from django.urls import reverse
...@@ -28,7 +30,7 @@ from allauth.utils import get_user_model, get_username_max_length ...@@ -28,7 +30,7 @@ from allauth.utils import get_user_model, get_username_max_length
from . import app_settings from . import app_settings
from .adapter import get_adapter from .adapter import get_adapter
from .auth_backends import AuthenticationBackend from .auth_backends import AuthenticationBackend
from .signals import user_logged_out from .signals import user_logged_in, user_logged_out
from .utils import ( from .utils import (
filter_users_by_username, filter_users_by_username,
url_str_to_user_pk, url_str_to_user_pk,
...@@ -1100,7 +1102,7 @@ class UtilsTests(TestCase): ...@@ -1100,7 +1102,7 @@ class UtilsTests(TestCase):
with patch('allauth.account.utils.get_user_model') as mocked_gum: with patch('allauth.account.utils.get_user_model') as mocked_gum:
mocked_gum.return_value = UUIDUser mocked_gum.return_value = UUIDUser
self.assertEqual(url_str_to_user_pk(self.user_id), self.assertEqual(url_str_to_user_pk(self.user_id),
self.user_id) uuid.UUID(self.user_id))
def test_pk_to_url_string_identifies_UUID_as_stringlike(self): def test_pk_to_url_string_identifies_UUID_as_stringlike(self):
user = UUIDUser( user = UUIDUser(
...@@ -1124,3 +1126,94 @@ class UtilsTests(TestCase): ...@@ -1124,3 +1126,94 @@ class UtilsTests(TestCase):
self.assertEqual(user_username(user), 'CamelCase') self.assertEqual(user_username(user), 'CamelCase')
# TODO: Actually test something # TODO: Actually test something
filter_users_by_username('camelcase', 'foobar') filter_users_by_username('camelcase', 'foobar')
def test_user_display(self):
user = get_user_model()(username='john<br/>doe')
expected_name = 'john&lt;br/&gt;doe'
templates = [
'{% load account %}{% user_display user %}',
'{% load account %}{% user_display user as x %}{{ x }}'
]
for template in templates:
t = Template(template)
content = t.render(Context({'user': user}))
self.assertEqual(content, expected_name)
class ConfirmationViewTests(TestCase):
def _create_user(self, username='john', password='doe'):
user = get_user_model().objects.create(
username=username,
is_active=True)
if password:
user.set_password(password)
else:
user.set_unusable_password()
user.save()
return user
@override_settings(ACCOUNT_EMAIL_CONFIRMATION_HMAC=True,
ACCOUNT_LOGIN_ON_EMAIL_CONFIRMATION=True)
def test_login_on_confirm(self):
user = self._create_user()
email = EmailAddress.objects.create(
user=user,
email='a@b.com',
verified=False,
primary=True)
key = EmailConfirmationHMAC(email).key
receiver_mock = Mock() # we've logged if signal was called
user_logged_in.connect(receiver_mock)
# fake post-signup account_user stash
session = self.client.session
session['account_user'] = user_pk_to_url_str(user)
session.save()
resp = self.client.post(
reverse('account_confirm_email',
args=[key]))
email = EmailAddress.objects.get(pk=email.pk)
self.assertTrue(email.verified)
receiver_mock.assert_called_once_with(
sender=get_user_model(),
request=resp.wsgi_request,
response=resp,
user=get_user_model().objects.get(username='john'),
signal=user_logged_in,
)
user_logged_in.disconnect(receiver_mock)
@override_settings(ACCOUNT_EMAIL_CONFIRMATION_HMAC=True,
ACCOUNT_LOGIN_ON_EMAIL_CONFIRMATION=True)
@patch('allauth.account.views.perform_login')
@patch('allauth.account.utils.get_user_model', return_value=UUIDUser)
def test_login_on_confirm_uuid_user(self, mocked_gum, mock_perform_login):
user = UUIDUser(
is_active=True,
email='john@example.com',
username='john')
# fake post-signup account_user stash
session = self.client.session
session['account_user'] = user_pk_to_url_str(user)
session.save()
# fake email and email confirmation to avoid swappable model hell
email = Mock(verified=False, user=user)
key = 'mockkey'
confirmation = Mock(autospec=EmailConfirmationHMAC, key=key)
confirmation.email_address = email
confirmation.from_key.return_value = confirmation
mock_perform_login.return_value = HttpResponseRedirect(redirect_to='/')
with patch('allauth.account.views.EmailConfirmationHMAC',
confirmation):
self.client.post(
reverse('account_confirm_email',
args=[key]))
assert mock_perform_login.called
...@@ -422,7 +422,7 @@ def url_str_to_user_pk(s): ...@@ -422,7 +422,7 @@ def url_str_to_user_pk(s):
else: else:
pk_field = User._meta.pk pk_field = User._meta.pk
if issubclass(type(pk_field), models.UUIDField): if issubclass(type(pk_field), models.UUIDField):
return s return pk_field.to_python(s)
try: try:
pk_field.to_python('a') pk_field.to_python('a')
pk = s pk = s
......
...@@ -765,15 +765,18 @@ class LogoutView(TemplateResponseMixin, View): ...@@ -765,15 +765,18 @@ class LogoutView(TemplateResponseMixin, View):
if app_settings.LOGOUT_ON_GET: if app_settings.LOGOUT_ON_GET:
return self.post(*args, **kwargs) return self.post(*args, **kwargs)
if not self.request.user.is_authenticated: if not self.request.user.is_authenticated:
return redirect(self.get_redirect_url()) response = redirect(self.get_redirect_url())
return _ajax_response(self.request, response)
ctx = self.get_context_data() ctx = self.get_context_data()
return self.render_to_response(ctx) response = self.render_to_response(ctx)
return _ajax_response(self.request, response)
def post(self, *args, **kwargs): def post(self, *args, **kwargs):
url = self.get_redirect_url() url = self.get_redirect_url()
if self.request.user.is_authenticated: if self.request.user.is_authenticated:
self.logout() self.logout()
return redirect(url) response = redirect(url)
return _ajax_response(self.request, response)
def logout(self): def logout(self):
adapter = get_adapter(self.request) adapter = get_adapter(self.request)
......
...@@ -7,7 +7,7 @@ msgid "" ...@@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: 0.1\n" "Project-Id-Version: 0.1\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-05-08 00:43-0500\n" "POT-Creation-Date: 2018-08-27 05:00-0500\n"
"PO-Revision-Date: 2016-01-19 19:32+0100\n" "PO-Revision-Date: 2016-01-19 19:32+0100\n"
"Last-Translator: David D Lowe <daviddlowe.flimm@gmail.com>\n" "Last-Translator: David D Lowe <daviddlowe.flimm@gmail.com>\n"
"Language-Team: Arabic\n" "Language-Team: Arabic\n"
...@@ -31,7 +31,7 @@ msgstr "" ...@@ -31,7 +31,7 @@ msgstr ""
msgid "A user is already registered with this e-mail address." msgid "A user is already registered with this e-mail address."
msgstr "هنالك مستخدم مسجل سابقا مع نفس عنوان البريد الاكتروني‪.‬" msgstr "هنالك مستخدم مسجل سابقا مع نفس عنوان البريد الاكتروني‪.‬"
#: account/adapter.py:288 #: account/adapter.py:294
#, python-brace-format #, python-brace-format
msgid "Password must be a minimum of {0} characters." msgid "Password must be a minimum of {0} characters."
msgstr "كلمة المرور يجب أن لا تقل عن {0} حروف." msgstr "كلمة المرور يجب أن لا تقل عن {0} حروف."
......
...@@ -8,7 +8,7 @@ msgid "" ...@@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: 0.35\n" "Project-Id-Version: 0.35\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-05-08 00:43-0500\n" "POT-Creation-Date: 2018-08-27 05:00-0500\n"
"PO-Revision-Date: 2018-04-17 16:52+0200\n" "PO-Revision-Date: 2018-04-17 16:52+0200\n"
"Last-Translator: Beda Kosata <beda.kosata@gmail.com>\n" "Last-Translator: Beda Kosata <beda.kosata@gmail.com>\n"
"Language-Team: Czech <>\n" "Language-Team: Czech <>\n"
...@@ -31,7 +31,7 @@ msgstr "Příliš mnoho pokusů o přihlášení. Zkuste to prosím později." ...@@ -31,7 +31,7 @@ msgstr "Příliš mnoho pokusů o přihlášení. Zkuste to prosím později."
msgid "A user is already registered with this e-mail address." msgid "A user is already registered with this e-mail address."
msgstr "Uživatel s tímto e-mailem je již registrován." msgstr "Uživatel s tímto e-mailem je již registrován."
#: account/adapter.py:288 #: account/adapter.py:294
#, python-brace-format #, python-brace-format
msgid "Password must be a minimum of {0} characters." msgid "Password must be a minimum of {0} characters."
msgstr "Heslo musí obsahovat minimálně {0} znaků." msgstr "Heslo musí obsahovat minimálně {0} znaků."
......
This diff is collapsed.
...@@ -8,7 +8,7 @@ msgid "" ...@@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: django-allauth\n" "Project-Id-Version: django-allauth\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-05-08 00:43-0500\n" "POT-Creation-Date: 2018-08-27 05:00-0500\n"
"PO-Revision-Date: 2017-11-04 16:22+0100\n" "PO-Revision-Date: 2017-11-04 16:22+0100\n"
"Last-Translator: Jannis Vajen <jvajen@gmail.com>\n" "Last-Translator: Jannis Vajen <jvajen@gmail.com>\n"
"Language-Team: German (http://www.transifex.com/projects/p/django-allauth/" "Language-Team: German (http://www.transifex.com/projects/p/django-allauth/"
...@@ -34,7 +34,7 @@ msgstr "" ...@@ -34,7 +34,7 @@ msgstr ""
msgid "A user is already registered with this e-mail address." msgid "A user is already registered with this e-mail address."
msgstr "Es ist bereits jemand mit dieser E-Mail-Adresse registriert." msgstr "Es ist bereits jemand mit dieser E-Mail-Adresse registriert."
#: account/adapter.py:288 #: account/adapter.py:294
#, python-brace-format #, python-brace-format
msgid "Password must be a minimum of {0} characters." msgid "Password must be a minimum of {0} characters."
msgstr "Das Passwort muss aus mindestens {0} Zeichen bestehen." msgstr "Das Passwort muss aus mindestens {0} Zeichen bestehen."
......
...@@ -7,7 +7,7 @@ msgid "" ...@@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-05-08 00:43-0500\n" "POT-Creation-Date: 2018-08-27 05:00-0500\n"
"PO-Revision-Date: 2014-08-12 00:29+0200\n" "PO-Revision-Date: 2014-08-12 00:29+0200\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
...@@ -32,7 +32,7 @@ msgstr "" ...@@ -32,7 +32,7 @@ msgstr ""
msgid "A user is already registered with this e-mail address." msgid "A user is already registered with this e-mail address."
msgstr "Ένας χρήστης έχει ήδη εγγραφεί με τη συγκεκριμένη διεύθυνση e-mail." msgstr "Ένας χρήστης έχει ήδη εγγραφεί με τη συγκεκριμένη διεύθυνση e-mail."
#: account/adapter.py:288 #: account/adapter.py:294
#, python-brace-format #, python-brace-format
msgid "Password must be a minimum of {0} characters." msgid "Password must be a minimum of {0} characters."
msgstr "Ο κωδικός πρέπει να είναι κατ' ελάχιστο {0} χαρακτήρες." msgstr "Ο κωδικός πρέπει να είναι κατ' ελάχιστο {0} χαρακτήρες."
......
...@@ -8,7 +8,7 @@ msgid "" ...@@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-05-08 00:43-0500\n" "POT-Creation-Date: 2018-08-27 05:00-0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
...@@ -29,7 +29,7 @@ msgstr "" ...@@ -29,7 +29,7 @@ msgstr ""
msgid "A user is already registered with this e-mail address." msgid "A user is already registered with this e-mail address."
msgstr "" msgstr ""
#: account/adapter.py:288 #: account/adapter.py:294
#, python-brace-format #, python-brace-format
msgid "Password must be a minimum of {0} characters." msgid "Password must be a minimum of {0} characters."
msgstr "" msgstr ""
......
...@@ -7,7 +7,7 @@ msgid "" ...@@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: django-allauth\n" "Project-Id-Version: django-allauth\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-05-08 00:43-0500\n" "POT-Creation-Date: 2018-08-27 05:00-0500\n"
"PO-Revision-Date: 2018-02-14 17:46-0600\n" "PO-Revision-Date: 2018-02-14 17:46-0600\n"
"Last-Translator: Jannis Š\n" "Last-Translator: Jannis Š\n"
"Language-Team: Spanish (http://www.transifex.com/projects/p/django-allauth/" "Language-Team: Spanish (http://www.transifex.com/projects/p/django-allauth/"
...@@ -31,7 +31,7 @@ msgstr "Demasiados intentos fallidos, intenta más tarde." ...@@ -31,7 +31,7 @@ msgstr "Demasiados intentos fallidos, intenta más tarde."
msgid "A user is already registered with this e-mail address." 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." msgstr "Un usuario ya fue registrado con esta dirección de correo electrónico."
#: account/adapter.py:288 #: account/adapter.py:294
#, python-brace-format #, python-brace-format
msgid "Password must be a minimum of {0} characters." msgid "Password must be a minimum of {0} characters."
msgstr "Una contraseña necesita al menos {0} caracteres." msgstr "Una contraseña necesita al menos {0} caracteres."
......
This diff is collapsed.
...@@ -6,7 +6,7 @@ msgid "" ...@@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-05-08 00:43-0500\n" "POT-Creation-Date: 2018-08-27 05:00-0500\n"
"PO-Revision-Date: 2015-09-14 12:40-0000\n" "PO-Revision-Date: 2015-09-14 12:40-0000\n"
"Last-Translator: NARIMAN GHARIB <NARIMAN.GH@GMAIL.COM>\n" "Last-Translator: NARIMAN GHARIB <NARIMAN.GH@GMAIL.COM>\n"
"Language-Team: \n" "Language-Team: \n"
...@@ -28,7 +28,7 @@ msgstr "" ...@@ -28,7 +28,7 @@ msgstr ""
msgid "A user is already registered with this e-mail address." msgid "A user is already registered with this e-mail address."
msgstr "کاربر دیگری قبلا با این نام کاربری ثبت نام کرده است." msgstr "کاربر دیگری قبلا با این نام کاربری ثبت نام کرده است."
#: account/adapter.py:288 #: account/adapter.py:294
#, python-brace-format #, python-brace-format
msgid "Password must be a minimum of {0} characters." msgid "Password must be a minimum of {0} characters."
msgstr "پسورد تنها می‌تواند دارای {0} کاراکتر باشد." msgstr "پسورد تنها می‌تواند دارای {0} کاراکتر باشد."
......
...@@ -8,7 +8,7 @@ msgid "" ...@@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-05-08 00:43-0500\n" "POT-Creation-Date: 2018-08-27 05:00-0500\n"
"PO-Revision-Date: 2015-08-13 15:17+0300\n" "PO-Revision-Date: 2015-08-13 15:17+0300\n"
"Last-Translator: Anonymous User <seppo.erviala@iki.fi>\n" "Last-Translator: Anonymous User <seppo.erviala@iki.fi>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
...@@ -32,7 +32,7 @@ msgstr "" ...@@ -32,7 +32,7 @@ msgstr ""
msgid "A user is already registered with this e-mail address." msgid "A user is already registered with this e-mail address."
msgstr "Tämä sähköpostiosoite on jo käytössä." msgstr "Tämä sähköpostiosoite on jo käytössä."
#: account/adapter.py:288 #: account/adapter.py:294
#, python-brace-format #, python-brace-format
msgid "Password must be a minimum of {0} characters." msgid "Password must be a minimum of {0} characters."
msgstr "Salasanan tulee olla vähintään {0} merkkiä pitkä." msgstr "Salasanan tulee olla vähintään {0} merkkiä pitkä."
......
...@@ -9,7 +9,7 @@ msgid "" ...@@ -9,7 +9,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: django-allauth\n" "Project-Id-Version: django-allauth\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-05-08 00:43-0500\n" "POT-Creation-Date: 2018-08-27 05:00-0500\n"
"PO-Revision-Date: 2016-10-06 15:16+0200\n" "PO-Revision-Date: 2016-10-06 15:16+0200\n"
"Last-Translator: Steve Kossouho <steve.kossouho@yahoo.fr>\n" "Last-Translator: Steve Kossouho <steve.kossouho@yahoo.fr>\n"
"Language-Team: français <>\n" "Language-Team: français <>\n"
...@@ -33,7 +33,7 @@ msgstr "" ...@@ -33,7 +33,7 @@ msgstr ""
msgid "A user is already registered with this e-mail address." msgid "A user is already registered with this e-mail address."
msgstr "Un autre utilisateur utilise déjà cette adresse e-mail." msgstr "Un autre utilisateur utilise déjà cette adresse e-mail."
#: account/adapter.py:288 #: account/adapter.py:294
#, python-brace-format #, python-brace-format
msgid "Password must be a minimum of {0} characters." msgid "Password must be a minimum of {0} characters."
msgstr "Le mot de passe doit contenir au minimum {0} caractères." msgstr "Le mot de passe doit contenir au minimum {0} caractères."
......
...@@ -7,7 +7,7 @@ msgid "" ...@@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: 0.1\n" "Project-Id-Version: 0.1\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-05-08 00:43-0500\n" "POT-Creation-Date: 2018-08-27 05:00-0500\n"
"PO-Revision-Date: 2017-08-26 16:11+0300\n" "PO-Revision-Date: 2017-08-26 16:11+0300\n"
"Last-Translator: Udi Oron <udioron@gmail.com>\n" "Last-Translator: Udi Oron <udioron@gmail.com>\n"
"Language-Team: Hebrew\n" "Language-Team: Hebrew\n"
...@@ -30,7 +30,7 @@ msgstr "יותר מדי ניסיונות התחברות כושלים. אנא נ ...@@ -30,7 +30,7 @@ msgstr "יותר מדי ניסיונות התחברות כושלים. אנא נ
msgid "A user is already registered with this e-mail address." msgid "A user is already registered with this e-mail address."
msgstr "משתמש אחר כבר רשום עם כתובת אימייל זו." msgstr "משתמש אחר כבר רשום עם כתובת אימייל זו."
#: account/adapter.py:288 #: account/adapter.py:294
#, python-brace-format #, python-brace-format
msgid "Password must be a minimum of {0} characters." msgid "Password must be a minimum of {0} characters."
msgstr "הסיסמה חייבת להיות באורך של לפחות {0} תווים." msgstr "הסיסמה חייבת להיות באורך של לפחות {0} תווים."
......
...@@ -10,7 +10,7 @@ msgid "" ...@@ -10,7 +10,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-05-08 00:43-0500\n" "POT-Creation-Date: 2018-08-27 05:00-0500\n"
"PO-Revision-Date: 2014-08-12 00:31+0200\n" "PO-Revision-Date: 2014-08-12 00:31+0200\n"
"Last-Translator: <goran.cetusic@gmail.com>\n" "Last-Translator: <goran.cetusic@gmail.com>\n"
"Language-Team: Bojan Mihelac <bmihelac@mihelac.org>\n"