Commit 0f45724c by Sarina Canelake Committed by Omar Al-Ithawi

Convert shopping cart to use unicode lazy logging

Conflicts:
	lms/djangoapps/shoppingcart/views.py
parent 4e733c6e
...@@ -584,7 +584,9 @@ class ShoppingCartViewsTests(ModuleStoreTestCase): ...@@ -584,7 +584,9 @@ class ShoppingCartViewsTests(ModuleStoreTestCase):
resp = self.client.post(reverse('shoppingcart.views.remove_item', args=[]), resp = self.client.post(reverse('shoppingcart.views.remove_item', args=[]),
{'id': reg_item.id}) {'id': reg_item.id})
debug_log.assert_called_with( debug_log.assert_called_with(
'Code redemption does not exist for order item id={0}.'.format(reg_item.id)) 'Code redemption does not exist for order item id=%s.',
str(reg_item.id)
)
self.assertEqual(resp.status_code, 200) self.assertEqual(resp.status_code, 200)
self.assertEquals(self.cart.orderitem_set.count(), 0) self.assertEquals(self.cart.orderitem_set.count(), 0)
...@@ -604,7 +606,11 @@ class ShoppingCartViewsTests(ModuleStoreTestCase): ...@@ -604,7 +606,11 @@ class ShoppingCartViewsTests(ModuleStoreTestCase):
self.assertEqual(resp.status_code, 200) self.assertEqual(resp.status_code, 200)
self.assertEquals(self.cart.orderitem_set.count(), 0) self.assertEquals(self.cart.orderitem_set.count(), 0)
info_log.assert_called_with( info_log.assert_called_with(
'Coupon "{0}" redemption entry removed for user "{1}" for order item "{2}"'.format(self.coupon_code, self.user, reg_item.id)) 'Coupon "%s" redemption entry removed for user "%s" for order item "%s"',
self.coupon_code,
self.user,
str(reg_item.id)
)
@patch('shoppingcart.views.log.info') @patch('shoppingcart.views.log.info')
def test_reset_redemption_for_coupon(self, info_log): def test_reset_redemption_for_coupon(self, info_log):
...@@ -619,7 +625,10 @@ class ShoppingCartViewsTests(ModuleStoreTestCase): ...@@ -619,7 +625,10 @@ class ShoppingCartViewsTests(ModuleStoreTestCase):
self.assertEqual(resp.status_code, 200) self.assertEqual(resp.status_code, 200)
info_log.assert_called_with( info_log.assert_called_with(
'Coupon redemption entry removed for user {0} for order {1}'.format(self.user, reg_item.id)) 'Coupon redemption entry removed for user %s for order %s',
self.user,
reg_item.id
)
@patch('shoppingcart.views.log.info') @patch('shoppingcart.views.log.info')
def test_coupon_discount_for_multiple_courses_in_cart(self, info_log): def test_coupon_discount_for_multiple_courses_in_cart(self, info_log):
...@@ -648,7 +657,11 @@ class ShoppingCartViewsTests(ModuleStoreTestCase): ...@@ -648,7 +657,11 @@ class ShoppingCartViewsTests(ModuleStoreTestCase):
self.assertEqual(resp.status_code, 200) self.assertEqual(resp.status_code, 200)
self.assertEquals(self.cart.orderitem_set.count(), 1) self.assertEquals(self.cart.orderitem_set.count(), 1)
info_log.assert_called_with( info_log.assert_called_with(
'Coupon "{0}" redemption entry removed for user "{1}" for order item "{2}"'.format(self.coupon_code, self.user, reg_item.id)) 'Coupon "%s" redemption entry removed for user "%s" for order item "%s"',
self.coupon_code,
self.user,
str(reg_item.id)
)
@patch('shoppingcart.views.log.info') @patch('shoppingcart.views.log.info')
def test_delete_certificate_item(self, info_log): def test_delete_certificate_item(self, info_log):
...@@ -664,7 +677,10 @@ class ShoppingCartViewsTests(ModuleStoreTestCase): ...@@ -664,7 +677,10 @@ class ShoppingCartViewsTests(ModuleStoreTestCase):
self.assertEqual(resp.status_code, 200) self.assertEqual(resp.status_code, 200)
self.assertEquals(self.cart.orderitem_set.count(), 1) self.assertEquals(self.cart.orderitem_set.count(), 1)
info_log.assert_called_with( info_log.assert_called_with(
'order item {0} removed for user {1}'.format(cert_item.id, self.user)) 'order item %s removed for user %s',
str(cert_item.id),
self.user
)
@patch('shoppingcart.views.log.info') @patch('shoppingcart.views.log.info')
def test_remove_coupon_redemption_on_clear_cart(self, info_log): def test_remove_coupon_redemption_on_clear_cart(self, info_log):
...@@ -682,7 +698,10 @@ class ShoppingCartViewsTests(ModuleStoreTestCase): ...@@ -682,7 +698,10 @@ class ShoppingCartViewsTests(ModuleStoreTestCase):
self.assertEquals(self.cart.orderitem_set.count(), 0) self.assertEquals(self.cart.orderitem_set.count(), 0)
info_log.assert_called_with( info_log.assert_called_with(
'Coupon redemption entry removed for user {0} for order {1}'.format(self.user, reg_item.id)) 'Coupon redemption entry removed for user %s for order %s',
self.user,
reg_item.id
)
def test_add_course_to_cart_already_registered(self): def test_add_course_to_cart_already_registered(self):
CourseEnrollment.enroll(self.user, self.course_key) CourseEnrollment.enroll(self.user, self.course_key)
...@@ -773,13 +792,18 @@ class ShoppingCartViewsTests(ModuleStoreTestCase): ...@@ -773,13 +792,18 @@ class ShoppingCartViewsTests(ModuleStoreTestCase):
{'id': cert_item.id}) {'id': cert_item.id})
self.assertEqual(resp2.status_code, 200) self.assertEqual(resp2.status_code, 200)
exception_log.assert_called_with( exception_log.assert_called_with(
'Cannot remove cart OrderItem id={0}. DoesNotExist or item is already purchased'.format(cert_item.id)) 'Cannot remove cart OrderItem id=%s. DoesNotExist or item is already purchased', str(cert_item.id)
)
resp3 = self.client.post(reverse('shoppingcart.views.remove_item', args=[]), resp3 = self.client.post(
{'id': -1}) reverse('shoppingcart.views.remove_item', args=[]),
{'id': -1}
)
self.assertEqual(resp3.status_code, 200) self.assertEqual(resp3.status_code, 200)
exception_log.assert_called_with( exception_log.assert_called_with(
'Cannot remove cart OrderItem id={0}. DoesNotExist or item is already purchased'.format(-1)) 'Cannot remove cart OrderItem id=%s. DoesNotExist or item is already purchased',
'-1'
)
@patch('shoppingcart.views.process_postpay_callback', postpay_mock) @patch('shoppingcart.views.process_postpay_callback', postpay_mock)
def test_postpay_callback_success(self): def test_postpay_callback_success(self):
......
...@@ -81,7 +81,7 @@ def add_course_to_cart(request, course_id): ...@@ -81,7 +81,7 @@ def add_course_to_cart(request, course_id):
assert isinstance(course_id, basestring) assert isinstance(course_id, basestring)
if not request.user.is_authenticated(): if not request.user.is_authenticated():
log.info("Anon user trying to add course {} to cart".format(course_id)) log.info(u"Anon user trying to add course %s to cart", course_id)
return HttpResponseForbidden(_('You must be logged-in to add to a shopping cart')) return HttpResponseForbidden(_('You must be logged-in to add to a shopping cart'))
cart = Order.get_cart_for_user(request.user) cart = Order.get_cart_for_user(request.user)
course_key = SlashSeparatedCourseKey.from_deprecated_string(course_id) course_key = SlashSeparatedCourseKey.from_deprecated_string(course_id)
...@@ -131,7 +131,7 @@ def update_user_cart(request): ...@@ -131,7 +131,7 @@ def update_user_cart(request):
try: try:
item = OrderItem.objects.get(id=item_id, status='cart') item = OrderItem.objects.get(id=item_id, status='cart')
except OrderItem.DoesNotExist: except OrderItem.DoesNotExist:
log.exception('Cart OrderItem id={item_id} DoesNotExist'.format(item_id=item_id)) log.exception(u'Cart OrderItem id=%s DoesNotExist', item_id)
return HttpResponseNotFound('Order item does not exist.') return HttpResponseNotFound('Order item does not exist.')
item.qty = qty item.qty = qty
...@@ -200,10 +200,11 @@ def clear_cart(request): ...@@ -200,10 +200,11 @@ def clear_cart(request):
coupon_redemption = CouponRedemption.objects.filter(user=request.user, order=cart.id) coupon_redemption = CouponRedemption.objects.filter(user=request.user, order=cart.id)
if coupon_redemption: if coupon_redemption:
coupon_redemption.delete() coupon_redemption.delete()
log.info(u'Coupon redemption entry removed for user %(user)s for order %(order_id)s', { log.info(
"user": request.user, u'Coupon redemption entry removed for user %s for order %s',
"order_id": cart.id, request.user,
}) cart.id,
)
return HttpResponse('Cleared') return HttpResponse('Cleared')
...@@ -219,17 +220,20 @@ def remove_item(request): ...@@ -219,17 +220,20 @@ def remove_item(request):
items = OrderItem.objects.filter(id=item_id, status='cart').select_subclasses() items = OrderItem.objects.filter(id=item_id, status='cart').select_subclasses()
if not len(items): if not len(items):
log.exception('Cannot remove cart OrderItem id={item_id}. DoesNotExist or item is already purchased'.format( log.exception(
item_id=item_id)) u'Cannot remove cart OrderItem id=%s. DoesNotExist or item is already purchased',
item_id
)
else: else:
item = items[0] item = items[0]
if item.user == request.user: if item.user == request.user:
order_item_course_id = getattr(item, 'course_id') order_item_course_id = getattr(item, 'course_id')
item.delete() item.delete()
log.info(u'order item %(item_id)s removed for user %(user)s', { log.info(
"item_id": item_id, u'order item %s removed for user %s',
"user": request.user, item_id,
}) request.user,
)
remove_code_redemption(order_item_course_id, item_id, item, request.user) remove_code_redemption(order_item_course_id, item_id, item, request.user)
item.order.update_order_type() item.order.update_order_type()
...@@ -249,13 +253,14 @@ def remove_code_redemption(order_item_course_id, item_id, item, user): ...@@ -249,13 +253,14 @@ def remove_code_redemption(order_item_course_id, item_id, item, user):
order=item.order_id order=item.order_id
) )
coupon_redemption.delete() coupon_redemption.delete()
log.info(u'Coupon "%(code)s" redemption entry removed for user "%(user)s" for order item "%(item_id)s"', { log.info(
"code": coupon_redemption.coupon.code, u'Coupon "%s" redemption entry removed for user "%s" for order item "%s"',
"user": user, coupon_redemption.coupon.code,
"item_id": item_id, user,
}) item_id,
)
except CouponRedemption.DoesNotExist: except CouponRedemption.DoesNotExist:
log.debug('Code redemption does not exist for order item id={item_id}.'.format(item_id=item_id)) log.debug(u'Code redemption does not exist for order item id=%s.', item_id)
@login_required @login_required
...@@ -318,7 +323,7 @@ def get_reg_code_validity(registration_code, request, limiter): ...@@ -318,7 +323,7 @@ def get_reg_code_validity(registration_code, request, limiter):
reg_code_already_redeemed = True reg_code_already_redeemed = True
if not reg_code_is_valid: if not reg_code_is_valid:
#tick the rate limiter counter # tick the rate limiter counter
AUDIT_LOG.info("Redemption of a non existing RegistrationCode {code}".format(code=registration_code)) AUDIT_LOG.info("Redemption of a non existing RegistrationCode {code}".format(code=registration_code))
limiter.tick_bad_request_counter(request) limiter.tick_bad_request_counter(request)
raise Http404() raise Http404()
...@@ -439,7 +444,7 @@ def use_registration_code(course_reg, user): ...@@ -439,7 +444,7 @@ def use_registration_code(course_reg, user):
and redirects the user to the Registration code redemption page. and redirects the user to the Registration code redemption page.
""" """
if RegistrationCodeRedemption.is_registration_code_redeemed(course_reg): if RegistrationCodeRedemption.is_registration_code_redeemed(course_reg):
log.warning("Registration code '{registration_code}' already used".format(registration_code=course_reg.code)) log.warning(u"Registration code '%s' already used", course_reg.code)
return HttpResponseBadRequest( return HttpResponseBadRequest(
_("Oops! The code '{registration_code}' you entered is either invalid or expired").format( _("Oops! The code '{registration_code}' you entered is either invalid or expired").format(
registration_code=course_reg.code registration_code=course_reg.code
...@@ -449,8 +454,7 @@ def use_registration_code(course_reg, user): ...@@ -449,8 +454,7 @@ def use_registration_code(course_reg, user):
cart = Order.get_cart_for_user(user) cart = Order.get_cart_for_user(user)
cart_items = cart.find_item_by_course_id(course_reg.course_id) cart_items = cart.find_item_by_course_id(course_reg.course_id)
except ItemNotFoundInCartException: except ItemNotFoundInCartException:
log.warning("Course item does not exist against registration code '{registration_code}'".format( log.warning(u"Course item does not exist against registration code '%s'", course_reg.code)
registration_code=course_reg.code))
return HttpResponseNotFound( return HttpResponseNotFound(
_("Code '{registration_code}' is not valid for any course in the shopping cart.").format( _("Code '{registration_code}' is not valid for any course in the shopping cart.").format(
registration_code=course_reg.code registration_code=course_reg.code
...@@ -489,7 +493,7 @@ def use_coupon_code(coupons, user): ...@@ -489,7 +493,7 @@ def use_coupon_code(coupons, user):
return HttpResponseBadRequest(_("Only one coupon redemption is allowed against an order")) return HttpResponseBadRequest(_("Only one coupon redemption is allowed against an order"))
if not is_redemption_applied: if not is_redemption_applied:
log.warning("Discount does not exist against code '{code}'.".format(code=coupons[0].code)) log.warning(u"Discount does not exist against code '%s'.", coupons[0].code)
return HttpResponseNotFound(_("Discount does not exist against code '{code}'.").format(code=coupons[0].code)) return HttpResponseNotFound(_("Discount does not exist against code '{code}'.").format(code=coupons[0].code))
return HttpResponse( return HttpResponse(
...@@ -568,10 +572,11 @@ def donate(request): ...@@ -568,10 +572,11 @@ def donate(request):
# Course ID may be None if this is a donation to the entire organization # Course ID may be None if this is a donation to the entire organization
Donation.add_to_order(cart, amount, course_id=course_id) Donation.add_to_order(cart, amount, course_id=course_id)
except InvalidCartItem as ex: except InvalidCartItem as ex:
log.exception(( log.exception(
u"Could not create donation item for " u"Could not create donation item for amount '%s' and course ID '%s'",
u"amount '{amount}' and course ID '{course_id}'" amount,
).format(amount=amount, course_id=course_id)) course_id
)
return HttpResponseBadRequest(unicode(ex)) return HttpResponseBadRequest(unicode(ex))
# Start the purchase. # Start the purchase.
......
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