Skip to content

Commit

Permalink
chore(dep): Mise a jour de DRF de 3.3.1 a 3.3.2.
Browse files Browse the repository at this point in the history
Mise a jour de dependances connexes :
- drf-extensions de 0.2.7 a 0.2.8.
- django-cors-middleware de 1.0.0 a 1.2.0.
- Suppression de get_cache()
- Changement de noms de parametres de configuration pour REST_FRAMEWORK

Merci particulier a @DevHugo pour sa contribution.
  • Loading branch information
GerardPaligot committed Feb 24, 2016
1 parent 821e366 commit addf026
Show file tree
Hide file tree
Showing 9 changed files with 110 additions and 91 deletions.
6 changes: 3 additions & 3 deletions requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -24,14 +24,14 @@ beautifulsoup4==4.3.2
django-recaptcha==1.0.4

# Api dependencies
djangorestframework==3.1.1
djangorestframework==3.3.2
djangorestframework-xml==1.0.1
django-filter==0.12
django-oauth-toolkit==0.10.0
drf-extensions==0.2.7
drf-extensions==0.2.8
# TODO : django-rest-swagger
https://github.com/marcgibbons/django-rest-swagger/archive/master.zip
django-cors-headers==1.0.0
django-cors-middleware==1.2.0
dry-rest-permissions==0.1.6

# Zep 12 dependency
Expand Down
14 changes: 14 additions & 0 deletions zds/api/pagination.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# coding: utf-8


from rest_framework.pagination import PageNumberPagination

REST_PAGE_SIZE = 10
REST_PAGE_SIZE_QUERY_PARAM = 'page_size'
REST_MAX_PAGE_SIZE = 100


class DefaultPagination(PageNumberPagination):
page_size = REST_PAGE_SIZE
page_size_query_param = REST_PAGE_SIZE_QUERY_PARAM
max_page_size = REST_MAX_PAGE_SIZE
3 changes: 3 additions & 0 deletions zds/member/api/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,9 @@ class ProfileValidatorSerializer(serializers.ModelSerializer, ProfileUsernameVal
is_active = serializers.BooleanField(source='user.is_active', required=False)
date_joined = serializers.DateTimeField(source='user.date_joined', required=False)
permissions = DRYPermissionsField(additional_actions=['ban'])
show_sign = serializers.NullBooleanField(required=False)
hover_or_click = serializers.NullBooleanField(required=False)
email_for_answer = serializers.NullBooleanField(required=False)

class Meta:
model = Profile
Expand Down
37 changes: 19 additions & 18 deletions zds/member/api/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,17 @@
from rest_framework.test import APITestCase
from rest_framework.test import APIClient

from zds.api.pagination import REST_PAGE_SIZE, REST_MAX_PAGE_SIZE, REST_PAGE_SIZE_QUERY_PARAM
from zds.member.factories import ProfileFactory, StaffProfileFactory, ProfileNotSyncFactory
from zds.member.models import TokenRegister
from rest_framework_extensions.settings import extensions_api_settings
from django.core.cache import get_cache
from django.core.cache import caches


class MemberListAPITest(APITestCase):
def setUp(self):
self.client = APIClient()
get_cache(extensions_api_settings.DEFAULT_USE_CACHE).clear()
caches[extensions_api_settings.DEFAULT_USE_CACHE].clear()

def test_list_of_users_empty(self):
"""
Expand All @@ -39,27 +40,27 @@ def test_list_of_users(self):

response = self.client.get(reverse('api-member-list'))
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(response.data.get('count'), settings.REST_FRAMEWORK['PAGINATE_BY'])
self.assertEqual(len(response.data.get('results')), settings.REST_FRAMEWORK['PAGINATE_BY'])
self.assertEqual(response.data.get('count'), REST_PAGE_SIZE)
self.assertEqual(len(response.data.get('results')), REST_PAGE_SIZE)
self.assertIsNone(response.data.get('next'))
self.assertIsNone(response.data.get('previous'))

def test_list_of_users_with_several_pages(self):
"""
Gets list of users with several pages in the database.
"""
self.create_multiple_users(settings.REST_FRAMEWORK['PAGINATE_BY'] + 1)
self.create_multiple_users(REST_PAGE_SIZE + 1)

response = self.client.get(reverse('api-member-list'))
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(response.data.get('count'), settings.REST_FRAMEWORK['PAGINATE_BY'] + 1)
self.assertEqual(response.data.get('count'), REST_PAGE_SIZE + 1)
self.assertIsNotNone(response.data.get('next'))
self.assertIsNone(response.data.get('previous'))
self.assertEqual(len(response.data.get('results')), settings.REST_FRAMEWORK['PAGINATE_BY'])
self.assertEqual(len(response.data.get('results')), REST_PAGE_SIZE)

response = self.client.get(reverse('api-member-list') + '?page=2')
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(response.data.get('count'), settings.REST_FRAMEWORK['PAGINATE_BY'] + 1)
self.assertEqual(response.data.get('count'), REST_PAGE_SIZE + 1)
self.assertIsNone(response.data.get('next'))
self.assertIsNotNone(response.data.get('previous'))
self.assertEqual(len(response.data.get('results')), 1)
Expand All @@ -68,7 +69,7 @@ def test_list_of_users_for_a_page_given(self):
"""
Gets list of users with several pages and gets a page different that the first one.
"""
self.create_multiple_users(settings.REST_FRAMEWORK['PAGINATE_BY'] + 1)
self.create_multiple_users(REST_PAGE_SIZE + 1)

response = self.client.get(reverse('api-member-list') + '?page=2')
self.assertEqual(response.status_code, status.HTTP_200_OK)
Expand All @@ -89,7 +90,7 @@ def test_list_of_users_with_a_custom_page_size(self):
Gets list of users with a custom page size. DRF allows to specify a custom
size for the pagination.
"""
self.create_multiple_users(settings.REST_FRAMEWORK['PAGINATE_BY'] * 2)
self.create_multiple_users(REST_PAGE_SIZE * 2)

page_size = 'page_size'
response = self.client.get(reverse('api-member-list') + '?{}=20'.format(page_size))
Expand All @@ -98,22 +99,22 @@ def test_list_of_users_with_a_custom_page_size(self):
self.assertEqual(len(response.data.get('results')), 20)
self.assertIsNone(response.data.get('next'))
self.assertIsNone(response.data.get('previous'))
self.assertEqual(settings.REST_FRAMEWORK['PAGINATE_BY_PARAM'], page_size)
self.assertEqual(REST_PAGE_SIZE_QUERY_PARAM, page_size)

def test_list_of_users_with_a_wrong_custom_page_size(self):
"""
Gets list of users with a custom page size but not good according to the
value in settings.
"""
page_size_value = settings.REST_FRAMEWORK['MAX_PAGINATE_BY'] + 1
page_size_value = REST_MAX_PAGE_SIZE + 1
self.create_multiple_users(page_size_value)

response = self.client.get(reverse('api-member-list') + '?page_size={}'.format(page_size_value))
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(response.data.get('count'), page_size_value)
self.assertIsNotNone(response.data.get('next'))
self.assertIsNone(response.data.get('previous'))
self.assertEqual(settings.REST_FRAMEWORK['MAX_PAGINATE_BY'], len(response.data.get('results')))
self.assertEqual(REST_MAX_PAGE_SIZE, len(response.data.get('results')))

def test_search_in_list_of_users(self):
"""
Expand Down Expand Up @@ -320,14 +321,14 @@ def test_member_list_url_with_delete_method(self):
response = self.client.delete(reverse('api-member-list'))
self.assertEqual(response.status_code, status.HTTP_405_METHOD_NOT_ALLOWED)

def create_multiple_users(self, number_of_users=settings.REST_FRAMEWORK['PAGINATE_BY']):
def create_multiple_users(self, number_of_users=REST_PAGE_SIZE):
for user in xrange(0, number_of_users):
ProfileFactory()


class MemberMyDetailAPITest(APITestCase):
def setUp(self):
get_cache(extensions_api_settings.DEFAULT_USE_CACHE).clear()
caches[extensions_api_settings.DEFAULT_USE_CACHE].clear()

def test_detail_of_the_member(self):
"""
Expand Down Expand Up @@ -374,7 +375,7 @@ def setUp(self):
self.client_authenticated = APIClient()
authenticate_client(self.client_authenticated, client_oauth2, self.profile.user.username, 'hostel77')

get_cache(extensions_api_settings.DEFAULT_USE_CACHE).clear()
caches[extensions_api_settings.DEFAULT_USE_CACHE].clear()

def test_detail_of_a_member(self):
"""
Expand Down Expand Up @@ -666,7 +667,7 @@ def setUp(self):
self.client_authenticated = APIClient()
authenticate_client(self.client_authenticated, client_oauth2, self.staff.user.username, 'hostel77')

get_cache(extensions_api_settings.DEFAULT_USE_CACHE).clear()
caches[extensions_api_settings.DEFAULT_USE_CACHE].clear()

def test_apply_read_only_at_a_member(self):
"""
Expand Down Expand Up @@ -835,7 +836,7 @@ def setUp(self):
self.client_authenticated = APIClient()
authenticate_client(self.client_authenticated, client_oauth2, self.staff.user.username, 'hostel77')

get_cache(extensions_api_settings.DEFAULT_USE_CACHE).clear()
caches[extensions_api_settings.DEFAULT_USE_CACHE].clear()

def test_apply_ban_at_a_member(self):
"""
Expand Down
14 changes: 7 additions & 7 deletions zds/member/api/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -278,12 +278,12 @@ def delete(self, request, *args, **kwargs):

def get_state_instance(self, request):
if request.method == 'POST':
if 'ls-jrs' in request.POST:
return TemporaryReadingOnlySanction(request.POST)
if 'ls-jrs' in request.data:
return TemporaryReadingOnlySanction(request.data)
else:
return ReadingOnlySanction(request.POST)
return ReadingOnlySanction(request.data)
elif request.method == 'DELETE':
return DeleteReadingOnlySanction(request.POST)
return DeleteReadingOnlySanction(request.data)
raise ValueError('Method {0} is not supported in this API route.'.format(request.method))


Expand Down Expand Up @@ -346,10 +346,10 @@ def delete(self, request, *args, **kwargs):

def get_state_instance(self, request):
if request.method == 'POST':
if 'ban-jrs' in request.POST:
return TemporaryBanSanction(request.POST)
if 'ban-jrs' in request.data:
return TemporaryBanSanction(request.data)
else:
return BanSanction(request.POST)
elif request.method == 'DELETE':
return DeleteBanSanction(request.POST)
return DeleteBanSanction(request.data)
raise ValueError('Method {0} is not supported in this API route.'.format(request.method))
Loading

0 comments on commit addf026

Please sign in to comment.