Improve assigned users filter to have old US's

remotes/origin/3.4.0rc
Álex Hermida 2018-05-22 18:25:55 +02:00 committed by Alex Hermida
parent 4001c57359
commit 1dc19695b5
6 changed files with 38 additions and 2 deletions

View File

@ -423,6 +423,29 @@ class AssignedToFilter(BaseRelatedFieldsFilter):
class AssignedUsersFilter(BaseRelatedFieldsFilter): class AssignedUsersFilter(BaseRelatedFieldsFilter):
filter_name = 'assigned_users' filter_name = 'assigned_users'
def get_lookup_expression(self, field_name, value):
if None in value:
qs_in_kwargs = {
"{}__in".format(field_name): [v for v in value if
v is not None]}
qs_isnull_kwargs = {"{}__isnull".format(field_name): True}
return Q(**qs_in_kwargs) | Q(**qs_isnull_kwargs)
else:
return Q(**{"{}__in".format(field_name): value})
def _get_queryparams(self, params):
param_name = self.param_name or self.filter_name
raw_value = params.get(param_name, None)
if raw_value:
value = self._prepare_filter_data(raw_value)
assigned_user_filter = self.get_lookup_expression(param_name, value)
assigned_to_filter = self.get_lookup_expression('assigned_to', value)
return Q(assigned_user_filter | assigned_to_filter)
return None
class StatusesFilter(BaseRelatedFieldsFilter): class StatusesFilter(BaseRelatedFieldsFilter):
filter_name = 'status' filter_name = 'status'

View File

@ -74,6 +74,7 @@ class UserAdminValidator(UserValidator):
return attrs return attrs
class RecoveryValidator(validators.Validator): class RecoveryValidator(validators.Validator):
token = serializers.CharField(max_length=200) token = serializers.CharField(max_length=200)
password = serializers.CharField(min_length=6) password = serializers.CharField(min_length=6)

View File

@ -188,6 +188,8 @@ class UserFactory(Factory):
username = factory.Sequence(lambda n: "user{}".format(n)) username = factory.Sequence(lambda n: "user{}".format(n))
email = factory.LazyAttribute(lambda obj: '%s@email.com' % obj.username) email = factory.LazyAttribute(lambda obj: '%s@email.com' % obj.username)
password = factory.PostGeneration(lambda obj, *args, **kwargs: obj.set_password(obj.username)) password = factory.PostGeneration(lambda obj, *args, **kwargs: obj.set_password(obj.username))
accepted_terms = True
read_new_terms = True
class MembershipFactory(Factory): class MembershipFactory(Factory):

View File

@ -61,6 +61,7 @@ def test_auth_action_register(client, settings):
"password": "test", "password": "test",
"full_name": "test", "full_name": "test",
"email": "test@test.com", "email": "test@test.com",
"accepted_terms": True,
}) })
result = client.post(url, register_data, content_type="application/json") result = client.post(url, register_data, content_type="application/json")

View File

@ -22,7 +22,7 @@ from tempfile import NamedTemporaryFile
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from taiga.base.utils import json from taiga.base.utils import json
from taiga.users.serializers import UserSerializer from taiga.users.serializers import UserAdminSerializer
from tests import factories as f from tests import factories as f
from tests.utils import helper_test_http_method, disconnect_signals, reconnect_signals from tests.utils import helper_test_http_method, disconnect_signals, reconnect_signals
@ -102,7 +102,7 @@ def test_user_update(client, data):
data.superuser, data.superuser,
] ]
user_data = UserSerializer(data.registered_user).data user_data = UserAdminSerializer(data.registered_user).data
user_data["full_name"] = "test" user_data["full_name"] = "test"
user_data = json.dumps(user_data) user_data = json.dumps(user_data)

View File

@ -33,6 +33,7 @@ def register_form():
"password": "password", "password": "password",
"full_name": "fname", "full_name": "fname",
"email": "user@email.com", "email": "user@email.com",
"accepted_terms": True,
"type": "public"} "type": "public"}
@ -87,6 +88,7 @@ def test_response_200_in_public_registration(client, settings):
"full_name": "martin seamus mcfly", "full_name": "martin seamus mcfly",
"email": "mmcfly@bttf.com", "email": "mmcfly@bttf.com",
"password": "password", "password": "password",
"accepted_terms": True,
} }
response = client.post(reverse("auth-register"), form) response = client.post(reverse("auth-register"), form)
@ -129,6 +131,7 @@ def test_auth_uppercase_ignore(client, settings):
"password": "password", "password": "password",
"full_name": "fname", "full_name": "fname",
"email": "User@email.com", "email": "User@email.com",
"accepted_terms": True,
"type": "public"} "type": "public"}
response = client.post(reverse("auth-register"), register_form) response = client.post(reverse("auth-register"), register_form)
@ -153,6 +156,7 @@ def test_auth_uppercase_ignore(client, settings):
"password": "password", "password": "password",
"full_name": "fname", "full_name": "fname",
"email": "user@email.com", "email": "user@email.com",
"accepted_terms": True,
"type": "public"} "type": "public"}
response = client.post(reverse("auth-register"), register_form) response = client.post(reverse("auth-register"), register_form)
@ -194,6 +198,7 @@ def test_login_fail_throttling(client, settings):
"password": "valid_password", "password": "valid_password",
"full_name": "fullname", "full_name": "fullname",
"email": "valid_username_login_fail@email.com", "email": "valid_username_login_fail@email.com",
"accepted_terms": True,
"type": "public"} "type": "public"}
response = client.post(reverse("auth-register"), register_form) response = client.post(reverse("auth-register"), register_form)
@ -235,6 +240,7 @@ def test_register_success_throttling(client, settings):
"password": "valid_password", "password": "valid_password",
"full_name": "fullname", "full_name": "fullname",
"email": "", "email": "",
"accepted_terms": True,
"type": "public"} "type": "public"}
response = client.post(reverse("auth-register"), register_form) response = client.post(reverse("auth-register"), register_form)
assert response.status_code == 400 assert response.status_code == 400
@ -243,6 +249,7 @@ def test_register_success_throttling(client, settings):
"password": "valid_password", "password": "valid_password",
"full_name": "fullname", "full_name": "fullname",
"email": "valid_username_register_success@email.com", "email": "valid_username_register_success@email.com",
"accepted_terms": True,
"type": "public"} "type": "public"}
response = client.post(reverse("auth-register"), register_form) response = client.post(reverse("auth-register"), register_form)
assert response.status_code == 201 assert response.status_code == 201
@ -251,6 +258,7 @@ def test_register_success_throttling(client, settings):
"password": "valid_password2", "password": "valid_password2",
"full_name": "fullname", "full_name": "fullname",
"email": "valid_username_register_success2@email.com", "email": "valid_username_register_success2@email.com",
"accepted_terms": True,
"type": "public"} "type": "public"}
response = client.post(reverse("auth-register"), register_form) response = client.post(reverse("auth-register"), register_form)
assert response.status_code == 429 assert response.status_code == 429
@ -259,6 +267,7 @@ def test_register_success_throttling(client, settings):
"password": "valid_password2", "password": "valid_password2",
"full_name": "fullname", "full_name": "fullname",
"email": "", "email": "",
"accepted_terms": True,
"type": "public"} "type": "public"}
response = client.post(reverse("auth-register"), register_form) response = client.post(reverse("auth-register"), register_form)
assert response.status_code == 429 assert response.status_code == 429