Commit 054fdb8d by Christopher Lee Committed by christopher lee

Declare deprecation of traverse_pagination method

parent aad11982
...@@ -5,6 +5,7 @@ import logging ...@@ -5,6 +5,7 @@ import logging
from urlparse import parse_qs, urlparse from urlparse import parse_qs, urlparse
import six import six
import waffle
from django.core.exceptions import ValidationError from django.core.exceptions import ValidationError
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
...@@ -48,10 +49,13 @@ def get_cache_key(**kwargs): ...@@ -48,10 +49,13 @@ def get_cache_key(**kwargs):
return hashlib.md5(key).hexdigest() return hashlib.md5(key).hexdigest()
def traverse_pagination(response, endpoint): def deprecated_traverse_pagination(response, endpoint):
""" """
Traverse a paginated API response. Traverse a paginated API response.
Note: This method should be deprecated since it defeats the purpose
of pagination.
Extracts and concatenates "results" (list of dict) returned by DRF-powered Extracts and concatenates "results" (list of dict) returned by DRF-powered
APIs. APIs.
...@@ -63,6 +67,9 @@ def traverse_pagination(response, endpoint): ...@@ -63,6 +67,9 @@ def traverse_pagination(response, endpoint):
list of dict. list of dict.
""" """
if waffle.switch_is_active("debug_logging_for_deprecated_traverse_pagination"): # pragma: no cover
logger.info("deprecated_traverse_pagination method is called for endpoint %s", endpoint)
results = response.get('results', []) results = response.get('results', [])
next_page = response.get('next') next_page = response.get('next')
......
...@@ -5,7 +5,7 @@ from django.core.cache import cache ...@@ -5,7 +5,7 @@ from django.core.cache import cache
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from opaque_keys.edx.keys import CourseKey from opaque_keys.edx.keys import CourseKey
from ecommerce.core.utils import traverse_pagination from ecommerce.core.utils import deprecated_traverse_pagination
def mode_for_product(product): def mode_for_product(product):
...@@ -77,7 +77,7 @@ def get_course_catalogs(site, resource_id=None): ...@@ -77,7 +77,7 @@ def get_course_catalogs(site, resource_id=None):
if resource_id: if resource_id:
results = response results = response
else: else:
results = traverse_pagination(response, endpoint) results = deprecated_traverse_pagination(response, endpoint)
cache.set(cache_key, results, settings.COURSES_API_CACHE_TIMEOUT) cache.set(cache_key, results, settings.COURSES_API_CACHE_TIMEOUT)
return results return results
......
...@@ -16,7 +16,7 @@ from oscar.core.loading import get_model ...@@ -16,7 +16,7 @@ from oscar.core.loading import get_model
from requests.exceptions import ConnectionError, Timeout from requests.exceptions import ConnectionError, Timeout
from slumber.exceptions import SlumberHttpBaseException from slumber.exceptions import SlumberHttpBaseException
from ecommerce.core.utils import traverse_pagination from ecommerce.core.utils import deprecated_traverse_pagination
from ecommerce.enterprise.exceptions import EnterpriseDoesNotExist from ecommerce.enterprise.exceptions import EnterpriseDoesNotExist
from ecommerce.extensions.offer.models import OFFER_PRIORITY_ENTERPRISE from ecommerce.extensions.offer.models import OFFER_PRIORITY_ENTERPRISE
...@@ -86,7 +86,7 @@ def get_enterprise_customers(site): ...@@ -86,7 +86,7 @@ def get_enterprise_customers(site):
'name': each['name'], 'name': each['name'],
'id': each['uuid'], 'id': each['uuid'],
} }
for each in traverse_pagination(response, endpoint) for each in deprecated_traverse_pagination(response, endpoint)
], ],
key=lambda k: k['name'].lower() key=lambda k: k['name'].lower()
) )
......
...@@ -7,7 +7,6 @@ from django.db import transaction ...@@ -7,7 +7,6 @@ from django.db import transaction
from oscar.core.loading import get_class, get_model from oscar.core.loading import get_class, get_model
from oscar.test.factories import UserFactory from oscar.test.factories import UserFactory
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
Order = get_model('order', 'Order') Order = get_model('order', 'Order')
Basket = get_model('basket', 'Basket') Basket = get_model('basket', 'Basket')
......
...@@ -10,7 +10,7 @@ from requests.exceptions import ConnectionError, Timeout ...@@ -10,7 +10,7 @@ from requests.exceptions import ConnectionError, Timeout
from slumber.exceptions import HttpNotFoundError, SlumberBaseException from slumber.exceptions import HttpNotFoundError, SlumberBaseException
from ecommerce.cache_utils.utils import TieredCache from ecommerce.cache_utils.utils import TieredCache
from ecommerce.core.utils import get_cache_key, traverse_pagination from ecommerce.core.utils import deprecated_traverse_pagination, get_cache_key
from ecommerce.extensions.offer.decorators import check_condition_applicability from ecommerce.extensions.offer.decorators import check_condition_applicability
from ecommerce.extensions.offer.mixins import SingleItemConsumptionConditionMixin from ecommerce.extensions.offer.mixins import SingleItemConsumptionConditionMixin
from ecommerce.programs.utils import get_program from ecommerce.programs.utils import get_program
...@@ -85,7 +85,8 @@ class ProgramCourseRunSeatsCondition(SingleItemConsumptionConditionMixin, Condit ...@@ -85,7 +85,8 @@ class ProgramCourseRunSeatsCondition(SingleItemConsumptionConditionMixin, Condit
basket, 'entitlements', site_configuration.entitlement_api_client.entitlements basket, 'entitlements', site_configuration.entitlement_api_client.entitlements
) )
if isinstance(response, dict): if isinstance(response, dict):
entitlements = traverse_pagination(response, site_configuration.entitlement_api_client.entitlements) entitlements = deprecated_traverse_pagination(
response, site_configuration.entitlement_api_client.entitlements)
else: else:
entitlements = response entitlements = response
return enrollments, entitlements return enrollments, entitlements
......
...@@ -267,7 +267,7 @@ class ProgramCourseRunSeatsConditionTests(ProgramTestMixin, TestCase): ...@@ -267,7 +267,7 @@ class ProgramCourseRunSeatsConditionTests(ProgramTestMixin, TestCase):
if seat.attr.id_verification_required: if seat.attr.id_verification_required:
basket.add_product(seat) basket.add_product(seat)
with mock.patch('ecommerce.programs.conditions.traverse_pagination') as mock_processing_entitlements: with mock.patch('ecommerce.programs.conditions.deprecated_traverse_pagination') as mock_processing_entitlements:
self.assertFalse(self.condition.is_satisfied(offer, basket)) self.assertFalse(self.condition.is_satisfied(offer, basket))
mock_processing_entitlements.assert_not_called() mock_processing_entitlements.assert_not_called()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment