Commit ebc3c1ad by Ivan Ivic

Revert "[SOL-1975] Code | Offer Page - Display in order of Course Launch Date"

This reverts commit 4067da49.
parent 0d27093d
...@@ -8,7 +8,7 @@ from oscar.core.loading import get_model ...@@ -8,7 +8,7 @@ from oscar.core.loading import get_model
Product = get_model('catalogue', 'Product') Product = get_model('catalogue', 'Product')
def get_range_catalog_query_results(limit, query, site, offset=None, ordering=None): def get_range_catalog_query_results(limit, query, site, offset=None):
""" """
Get catalog query results Get catalog query results
...@@ -17,22 +17,20 @@ def get_range_catalog_query_results(limit, query, site, offset=None, ordering=No ...@@ -17,22 +17,20 @@ def get_range_catalog_query_results(limit, query, site, offset=None, ordering=No
query (str): ElasticSearch Query query (str): ElasticSearch Query
site (Site): Site object containing Site Configuration data site (Site): Site object containing Site Configuration data
offset (int): Page offset offset (int): Page offset
ordering (str): Course Discovery results ordering (only start is enabled for now)
Returns: Returns:
dict: Query search results received from Course Catalog API dict: Query seach results received from Course Catalog API
""" """
partner_code = site.siteconfiguration.partner.short_code partner_code = site.siteconfiguration.partner.short_code
cache_key = 'course_runs_{}_{}_{}_{}_{}'.format(query, limit, offset, partner_code, ordering) cache_key = 'course_runs_{}_{}_{}_{}'.format(query, limit, offset, partner_code)
cache_hash = hashlib.md5(cache_key).hexdigest() cache_hash = hashlib.md5(cache_key).hexdigest()
response = cache.get(cache_hash) response = cache.get(cache_hash)
if not response: if not response:
response = site.siteconfiguration.course_catalog_api_client.course_runs.get( response = site.siteconfiguration.course_catalog_api_client.course_runs.get(
limit=limit, limit=limit,
offset=offset, offset=offset,
ordering=ordering,
partner=partner_code,
q=query, q=query,
partner=partner_code
) )
cache.set(cache_hash, response, settings.COURSES_API_CACHE_TIMEOUT) cache.set(cache_hash, response, settings.COURSES_API_CACHE_TIMEOUT)
return response return response
......
...@@ -82,29 +82,28 @@ class VoucherViewSetTests(CourseCatalogMockMixin, CourseCatalogTestMixin, LmsApi ...@@ -82,29 +82,28 @@ class VoucherViewSetTests(CourseCatalogMockMixin, CourseCatalogTestMixin, LmsApi
'next': 'path/to/the/next/page', 'next': 'path/to/the/next/page',
'results': [] 'results': []
} }
dates = ['2015-05-01T00:00:00Z', '2016-05-01T00:00:00Z', '2014-05-01T00:00:00Z']
products = [] products = []
new_range, __ = Range.objects.get_or_create(catalog_query='*:*', course_seat_types=seat_type) new_range, __ = Range.objects.get_or_create(catalog_query='*:*', course_seat_types=seat_type)
if seats: if seats:
for i, seat in enumerate(seats): for seat in seats:
course_run_info['results'].append({ course_run_info['results'].append({
'image': { 'image': {
'src': 'path/to/the/course/image' 'src': 'path/to/the/course/image'
}, },
'key': seat.course_id, 'key': seat.course_id,
'start': dates[i % 3], 'start': '2016-05-01T00:00:00Z',
'title': seat.title, 'title': seat.title,
}) })
new_range.add_product(seat) new_range.add_product(seat)
else: else:
for i in range(quantity): for _ in range(quantity):
course, seat = self.create_course_and_seat(seat_type=seat_type) course, seat = self.create_course_and_seat(seat_type=seat_type)
course_run_info['results'].append({ course_run_info['results'].append({
'image': { 'image': {
'src': 'path/to/the/course/image' 'src': 'path/to/the/course/image'
}, },
'key': course.id, 'key': course.id,
'start': dates[i % 3], 'start': '2016-05-01T00:00:00Z',
'title': course.name, 'title': course.name,
}) })
new_range.add_product(seat) new_range.add_product(seat)
...@@ -123,16 +122,6 @@ class VoucherViewSetTests(CourseCatalogMockMixin, CourseCatalogTestMixin, LmsApi ...@@ -123,16 +122,6 @@ class VoucherViewSetTests(CourseCatalogMockMixin, CourseCatalogTestMixin, LmsApi
@httpretty.activate @httpretty.activate
@mock_course_catalog_api_client @mock_course_catalog_api_client
def test_get_offers_return_sorted_offers(self):
""" Verify get_offers sorts the offers returned by start date """
__, request, voucher = self.prepare_get_offers_response(quantity=3)
offers = VoucherViewSet().get_offers(request=request, voucher=voucher)['results']
self.assertTrue(
offers[0]['course_start_date'] < offers[1]['course_start_date'] < offers[2]['course_start_date']
)
@httpretty.activate
@mock_course_catalog_api_client
def test_omitting_unavailable_seats(self): def test_omitting_unavailable_seats(self):
""" Verify an unavailable seat is omitted from offer page results. """ """ Verify an unavailable seat is omitted from offer page results. """
products, request, voucher = self.prepare_get_offers_response(quantity=2) products, request, voucher = self.prepare_get_offers_response(quantity=2)
......
...@@ -109,14 +109,13 @@ class VoucherViewSet(NonDestroyableModelViewSet): ...@@ -109,14 +109,13 @@ class VoucherViewSet(NonDestroyableModelViewSet):
stock_records = StockRecord.objects.filter(product__in=products) stock_records = StockRecord.objects.filter(product__in=products)
return products, stock_records return products, stock_records
def get_offers_from_query(self, request, voucher, catalog_query, ordering=None): def get_offers_from_query(self, request, voucher, catalog_query):
""" Helper method for collecting offers from catalog query. """ Helper method for collecting offers from catalog query.
Args: Args:
request (WSGIRequest): Request data. request (WSGIRequest): Request data.
voucher (Voucher): Oscar Voucher for which the offers are returned. voucher (Voucher): Oscar Voucher for which the offers are returned.
catalog_query (str): The query for the Course Discovery. catalog_query (str): The query for the Course Discovery.
ordering (str): Course Discovery results ordering (only start is enabled for now)
Returns: Returns:
A list of dictionaries with retrieved offers and a link to the next A list of dictionaries with retrieved offers and a link to the next
...@@ -131,9 +130,8 @@ class VoucherViewSet(NonDestroyableModelViewSet): ...@@ -131,9 +130,8 @@ class VoucherViewSet(NonDestroyableModelViewSet):
response = get_range_catalog_query_results( response = get_range_catalog_query_results(
limit=request.GET.get('limit', DEFAULT_CATALOG_PAGE_SIZE), limit=request.GET.get('limit', DEFAULT_CATALOG_PAGE_SIZE),
offset=request.GET.get('offset'), offset=request.GET.get('offset'),
ordering=ordering,
query=catalog_query, query=catalog_query,
site=request.site, site=request.site
) )
next_page = response['next'] next_page = response['next']
products, stock_records = self.retrieve_course_objects(response['results'], course_seat_types) products, stock_records = self.retrieve_course_objects(response['results'], course_seat_types)
...@@ -191,7 +189,7 @@ class VoucherViewSet(NonDestroyableModelViewSet): ...@@ -191,7 +189,7 @@ class VoucherViewSet(NonDestroyableModelViewSet):
voucher=voucher voucher=voucher
)) ))
return sorted(offers, key=lambda offer: offer['course_start_date']), next_page return offers, next_page
def get_offers(self, request, voucher): def get_offers(self, request, voucher):
""" """
...@@ -209,7 +207,7 @@ class VoucherViewSet(NonDestroyableModelViewSet): ...@@ -209,7 +207,7 @@ class VoucherViewSet(NonDestroyableModelViewSet):
offers = [] offers = []
if catalog_query: if catalog_query:
offers, next_page = self.get_offers_from_query(request, voucher, catalog_query, ordering='start') offers, next_page = self.get_offers_from_query(request, voucher, catalog_query)
else: else:
product_range = voucher.offers.first().benefit.range product_range = voucher.offers.first().benefit.range
products = product_range.all_products() products = product_range.all_products()
......
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