Improve assigned users filter to have old US's
parent
4001c57359
commit
1dc19695b5
|
@ -423,6 +423,29 @@ class AssignedToFilter(BaseRelatedFieldsFilter):
|
|||
class AssignedUsersFilter(BaseRelatedFieldsFilter):
|
||||
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):
|
||||
filter_name = 'status'
|
||||
|
|
|
@ -74,6 +74,7 @@ class UserAdminValidator(UserValidator):
|
|||
|
||||
return attrs
|
||||
|
||||
|
||||
class RecoveryValidator(validators.Validator):
|
||||
token = serializers.CharField(max_length=200)
|
||||
password = serializers.CharField(min_length=6)
|
||||
|
|
|
@ -188,6 +188,8 @@ class UserFactory(Factory):
|
|||
username = factory.Sequence(lambda n: "user{}".format(n))
|
||||
email = factory.LazyAttribute(lambda obj: '%s@email.com' % obj.username)
|
||||
password = factory.PostGeneration(lambda obj, *args, **kwargs: obj.set_password(obj.username))
|
||||
accepted_terms = True
|
||||
read_new_terms = True
|
||||
|
||||
|
||||
class MembershipFactory(Factory):
|
||||
|
|
|
@ -61,6 +61,7 @@ def test_auth_action_register(client, settings):
|
|||
"password": "test",
|
||||
"full_name": "test",
|
||||
"email": "test@test.com",
|
||||
"accepted_terms": True,
|
||||
})
|
||||
|
||||
result = client.post(url, register_data, content_type="application/json")
|
||||
|
|
|
@ -22,7 +22,7 @@ from tempfile import NamedTemporaryFile
|
|||
from django.core.urlresolvers import reverse
|
||||
|
||||
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.utils import helper_test_http_method, disconnect_signals, reconnect_signals
|
||||
|
@ -102,7 +102,7 @@ def test_user_update(client, data):
|
|||
data.superuser,
|
||||
]
|
||||
|
||||
user_data = UserSerializer(data.registered_user).data
|
||||
user_data = UserAdminSerializer(data.registered_user).data
|
||||
user_data["full_name"] = "test"
|
||||
user_data = json.dumps(user_data)
|
||||
|
||||
|
|
|
@ -33,6 +33,7 @@ def register_form():
|
|||
"password": "password",
|
||||
"full_name": "fname",
|
||||
"email": "user@email.com",
|
||||
"accepted_terms": True,
|
||||
"type": "public"}
|
||||
|
||||
|
||||
|
@ -87,6 +88,7 @@ def test_response_200_in_public_registration(client, settings):
|
|||
"full_name": "martin seamus mcfly",
|
||||
"email": "mmcfly@bttf.com",
|
||||
"password": "password",
|
||||
"accepted_terms": True,
|
||||
}
|
||||
|
||||
response = client.post(reverse("auth-register"), form)
|
||||
|
@ -129,6 +131,7 @@ def test_auth_uppercase_ignore(client, settings):
|
|||
"password": "password",
|
||||
"full_name": "fname",
|
||||
"email": "User@email.com",
|
||||
"accepted_terms": True,
|
||||
"type": "public"}
|
||||
response = client.post(reverse("auth-register"), register_form)
|
||||
|
||||
|
@ -153,6 +156,7 @@ def test_auth_uppercase_ignore(client, settings):
|
|||
"password": "password",
|
||||
"full_name": "fname",
|
||||
"email": "user@email.com",
|
||||
"accepted_terms": True,
|
||||
"type": "public"}
|
||||
response = client.post(reverse("auth-register"), register_form)
|
||||
|
||||
|
@ -194,6 +198,7 @@ def test_login_fail_throttling(client, settings):
|
|||
"password": "valid_password",
|
||||
"full_name": "fullname",
|
||||
"email": "valid_username_login_fail@email.com",
|
||||
"accepted_terms": True,
|
||||
"type": "public"}
|
||||
response = client.post(reverse("auth-register"), register_form)
|
||||
|
||||
|
@ -235,6 +240,7 @@ def test_register_success_throttling(client, settings):
|
|||
"password": "valid_password",
|
||||
"full_name": "fullname",
|
||||
"email": "",
|
||||
"accepted_terms": True,
|
||||
"type": "public"}
|
||||
response = client.post(reverse("auth-register"), register_form)
|
||||
assert response.status_code == 400
|
||||
|
@ -243,6 +249,7 @@ def test_register_success_throttling(client, settings):
|
|||
"password": "valid_password",
|
||||
"full_name": "fullname",
|
||||
"email": "valid_username_register_success@email.com",
|
||||
"accepted_terms": True,
|
||||
"type": "public"}
|
||||
response = client.post(reverse("auth-register"), register_form)
|
||||
assert response.status_code == 201
|
||||
|
@ -251,6 +258,7 @@ def test_register_success_throttling(client, settings):
|
|||
"password": "valid_password2",
|
||||
"full_name": "fullname",
|
||||
"email": "valid_username_register_success2@email.com",
|
||||
"accepted_terms": True,
|
||||
"type": "public"}
|
||||
response = client.post(reverse("auth-register"), register_form)
|
||||
assert response.status_code == 429
|
||||
|
@ -259,6 +267,7 @@ def test_register_success_throttling(client, settings):
|
|||
"password": "valid_password2",
|
||||
"full_name": "fullname",
|
||||
"email": "",
|
||||
"accepted_terms": True,
|
||||
"type": "public"}
|
||||
response = client.post(reverse("auth-register"), register_form)
|
||||
assert response.status_code == 429
|
||||
|
|
Loading…
Reference in New Issue