Commit 3ecc2b95 by Malik Shahzad

Merge pull request #724 from edx/malikshahzad228/MAYN-256

Extra Footer removed
parents a95332ce a9700578
......@@ -61,6 +61,7 @@ conf/locale/messages.mo
.mr.developer.cfg
.project
.pydevproject
.pycharm_helpers
# QA
coverage.xml
......
......@@ -168,7 +168,6 @@ class CouponOfferViewTests(CourseCatalogTestMixin, LmsApiMockMixin, TestCase):
def setUp(self):
super(CouponOfferViewTests, self).setUp()
self.mock_footer_api_response()
self.user = self.create_user()
self.client.login(username=self.user.username, password=self.password)
......
......@@ -20,7 +20,6 @@ from ecommerce.core.views import StaffOnlyMixin
from ecommerce.extensions.api import exceptions
from ecommerce.extensions.analytics.utils import prepare_analytics_data
from ecommerce.extensions.api.constants import APIConstants as AC
from ecommerce.extensions.api.data import get_lms_footer
from ecommerce.extensions.basket.utils import prepare_basket
from ecommerce.extensions.checkout.mixins import EdxOrderPlacementMixin
from ecommerce.extensions.offer.utils import format_benefit_value
......@@ -118,7 +117,6 @@ class CouponOfferView(TemplateView):
def get_context_data(self, **kwargs):
context = super(CouponOfferView, self).get_context_data(**kwargs)
footer = get_lms_footer()
code = self.request.GET.get('code', None)
if code is not None:
try:
......@@ -126,12 +124,10 @@ class CouponOfferView(TemplateView):
except Voucher.DoesNotExist:
return {
'error': _('Coupon does not exist'),
'footer': footer,
}
except exceptions.ProductNotFoundError:
return {
'error': _('The voucher is not applicable to your current basket.'),
'footer': footer,
}
valid_voucher, msg = voucher_is_valid(voucher, product, self.request)
if valid_voucher:
......@@ -144,7 +140,6 @@ class CouponOfferView(TemplateView):
logger.exception('Could not get course information. [%s]', e)
return {
'error': _('Could not get course information. [{error}]'.format(error=e)),
'footer': footer
}
course['image_url'] = get_lms_url(course['media']['course_image']['uri'])
benefit = voucher.offers.first().benefit
......@@ -174,16 +169,13 @@ class CouponOfferView(TemplateView):
'new_price': "%.2f" % new_price,
'verified': (product.attr.certificate_type == 'verified'),
'verification_deadline': product.course.verification_deadline,
'footer': footer
})
return context
return {
'error': msg,
'footer': footer
}
return {
'error': _('This coupon code is invalid.'),
'footer': footer
}
def get(self, request, *args, **kwargs):
......
"""Functions used for data retrieval and manipulation by the API."""
import logging
import requests
from oscar.core.loading import get_model, get_class
from ecommerce.core.url_utils import get_lms_url
from ecommerce.extensions.api import exceptions
from ecommerce.extensions.api.constants import APIConstants as AC
......@@ -48,33 +46,3 @@ def get_order_metadata(basket):
}
return metadata
def get_lms_footer():
"""
Retrieve LMS footer via branding API.
Returns:
str: HTML representation of the footer.
"""
try:
footer_api_url = get_lms_url('api/branding/v1/footer')
response = requests.get(
footer_api_url,
data={'language': 'en'}
)
if response.status_code == 200:
return response.text
else:
logger.error(
'Unable to retrieve footer from %s. Branding API returned status code %d.',
footer_api_url,
response.status_code
)
return None
except requests.exceptions.ConnectionError:
logger.exception('Connection error occurred while retrieving footer from %s.', get_lms_url())
return None
except requests.Timeout:
logger.exception('Connection timed out while retrieving footer from %s.', get_lms_url())
return None
import json
import httpretty
import mock
import requests
from ecommerce.core.url_utils import get_lms_url
from ecommerce.extensions.api.data import get_lms_footer
from ecommerce.tests.testcases import TestCase
# TODO: test get_product() and get_order_metadata()
class DataFunctionsTests(TestCase):
"""Tests for API data helpers."""
def setUp(self):
super(DataFunctionsTests, self).setUp()
self.footer_url = get_lms_url('api/branding/v1/footer')
@httpretty.activate
def test_get_lms_footer_success(self):
"""Verify footer information is retrieved."""
content = {
'footer': 'edX Footer'
}
content_json = json.dumps(content)
httpretty.register_uri(httpretty.GET, self.footer_url, body=content_json, content_type='application/json')
response = json.loads(get_lms_footer())
self.assertEqual(response['footer'], 'edX Footer')
@httpretty.activate
def test_get_lms_footer_failure(self):
"""Verify None is returned on a non-200 status code while retrieving LMS footer."""
httpretty.register_uri(httpretty.GET, self.footer_url, status=404, content_type='application/json')
response = get_lms_footer()
self.assertIsNone(response)
def test_get_lms_footer_connection_error(self):
"""Verify behavior in the event of a connection error while retrieving LMS footer."""
with mock.patch('requests.get', side_effect=requests.exceptions.ConnectionError()):
with mock.patch('ecommerce.extensions.api.data.logger.exception') as mock_logger:
response = get_lms_footer()
self.assertTrue(mock_logger.called)
self.assertIsNone(response)
def test_get_lms_footer_timeout(self):
"""Verify behavior in the event of a timeout while retrieving LMS footer."""
with mock.patch('requests.get', side_effect=requests.Timeout()):
with mock.patch('ecommerce.extensions.api.data.logger.exception') as mock_logger:
response = get_lms_footer()
self.assertTrue(mock_logger.called)
self.assertIsNone(response)
import datetime
import hashlib
import json
import ddt
from django.conf import settings
......@@ -99,7 +98,6 @@ class BasketSingleItemViewTests(CouponMixin, CourseCatalogTestMixin, LmsApiMockM
"""
self.create_coupon(catalog=self.catalog, code=COUPON_CODE, benefit_value=5)
self.mock_footer_api_response()
self.mock_course_api_response(course=self.course)
url = '{path}?sku={sku}&code={code}'.format(path=self.path, sku=self.stock_record.partner_sku,
code=COUPON_CODE)
......@@ -164,7 +162,6 @@ class BasketSummaryViewTests(CourseCatalogTestMixin, LmsApiMockMixin, TestCase):
@ddt.data(ConnectionError, SlumberBaseException, Timeout)
def test_course_api_failure(self, error):
""" Verify a connection error and timeout are logged when they happen. """
self.mock_footer_api_response()
seat = self.create_seat(self.course)
basket = self.create_basket_and_add_product(seat)
self.assertEqual(basket.lines.count(), 1)
......@@ -190,7 +187,6 @@ class BasketSummaryViewTests(CourseCatalogTestMixin, LmsApiMockMixin, TestCase):
enrollment_code = Product.objects.get(product_class__name=ENROLLMENT_CODE_PRODUCT_CLASS_NAME)
self.create_basket_and_add_product(enrollment_code)
self.mock_course_api_response(course)
self.mock_footer_api_response()
response = self.client.get(self.path)
self.assertEqual(response.status_code, 200)
line_data = response.context['formset_lines_data'][0][1]
......@@ -210,7 +206,6 @@ class BasketSummaryViewTests(CourseCatalogTestMixin, LmsApiMockMixin, TestCase):
self.assertEqual(basket.lines.count(), 1)
self.mock_course_api_response(self.course)
self.mock_footer_api_response()
benefit, __ = Benefit.objects.get_or_create(type=benefit_type, value=benefit_value)
......@@ -223,7 +218,6 @@ class BasketSummaryViewTests(CourseCatalogTestMixin, LmsApiMockMixin, TestCase):
self.assertEqual(line_data['course_name'], self.course.name)
self.assertFalse(line_data['enrollment_code'])
self.assertEqual(response.context['payment_processors'][0].NAME, DummyProcessor.NAME)
self.assertEqual(json.loads(response.context['footer']), {'footer': 'edX Footer'})
def test_no_basket_response(self):
""" Verify there are no form and line data in the context for a non-existing basket. """
......@@ -253,7 +247,6 @@ class BasketSummaryViewTests(CourseCatalogTestMixin, LmsApiMockMixin, TestCase):
basket = self.create_basket_and_add_product(seat)
self.assertEqual(basket.lines.count(), 1)
self.mock_course_api_response(self.course)
self.mock_footer_api_response()
cache_key = 'courses_api_detail_{}'.format(self.course.id)
cache_hash = hashlib.md5(cache_key).hexdigest()
......
......@@ -18,7 +18,6 @@ from ecommerce.core.constants import ENROLLMENT_CODE_PRODUCT_CLASS_NAME, SEAT_PR
from ecommerce.core.url_utils import get_lms_url
from ecommerce.coupons.views import get_voucher_from_code
from ecommerce.extensions.analytics.utils import prepare_analytics_data
from ecommerce.extensions.api.data import get_lms_footer
from ecommerce.extensions.basket.utils import get_certificate_type_display_value, prepare_basket
from ecommerce.extensions.offer.utils import format_benefit_value
from ecommerce.extensions.partner.shortcuts import get_partner_for_site
......@@ -127,7 +126,6 @@ class BasketSummaryView(BasketView):
'free_basket': context['order_total'].incl_tax == 0,
'payment_processors': self.request.site.siteconfiguration.get_payment_processors(),
'homepage_url': get_lms_url(''),
'footer': get_lms_footer(),
'formset_lines_data': zip(formset, lines_data),
})
return context
......@@ -64,16 +64,6 @@
<div id="app" class="container"></div>
{% endblock %}
{% block footer %}
{% if footer %}
<footer class="footer">
<div class="container">
{{ footer }}
</div>
</footer>
{% endif %}
{% endblock footer %}
{% block javascript %}
<script src="{% static 'js/apps/coupon_admin_app.js' %}"></script>
{% endblock %}
......@@ -28,14 +28,6 @@
{% endif %}
{% endblock %}
{% block footer %}
{% if footer %}
{% autoescape off %}
{{ footer }}
{% endautoescape %}
{% endif %}
{% endblock footer %}
{% block javascript %}
<script src="{% static 'js/apps/coupon_offer_app.js' %}"></script>
{% endblock javascript %}
......@@ -29,12 +29,3 @@
</script>
{% endif %}
{% endblock content %}
{% block footer %}
{% if footer %}
{% autoescape off %}
{{ footer }}
{% endautoescape %}
{% endif %}
{% endblock footer %}
......@@ -298,15 +298,6 @@ class LmsApiMockMixin(object):
course_url = get_lms_url('api/courses/v1/courses/{}/'.format(course_id))
httpretty.register_uri(httpretty.GET, course_url, body=course_info_json, content_type='application/json')
def mock_footer_api_response(self):
""" Helper function to register an API endpoint for the footer information. """
footer_url = get_lms_url('api/branding/v1/footer')
footer_content = {
'footer': 'edX Footer'
}
content_json = json.dumps(footer_content)
httpretty.register_uri(httpretty.GET, footer_url, body=content_json, content_type='application/json')
class CouponMixin(object):
""" Mixin for preparing data for coupons and creating coupons. """
......
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