Change coupon CSV download to only include counts for coupons redeemed all the way through purchase

updated the failed unit test case and removed the unnessary import
This commit is contained in:
Chris Dodge
2015-01-22 12:27:39 -05:00
committed by Muhammad Shoaib
parent 3d4a853e00
commit 74f6380e9e
3 changed files with 9 additions and 12 deletions

View File

@@ -3406,7 +3406,7 @@ class TestCourseRegistrationCodes(ModuleStoreTestCase):
self.assertEqual(response.status_code, 200, response.content)
# filter all the coupons
for coupon in Coupon.objects.all():
self.assertIn('"{code}","{course_id}","{discount}","0","{description}","{expiration_date}"'.format(
self.assertIn('"{code}","{course_id}","{discount}","0","{description}","{expiration_date}","True"'.format(
code=coupon.code,
course_id=coupon.course_id,
discount=coupon.percentage_discount,

View File

@@ -18,7 +18,6 @@ from django.views.decorators.cache import cache_control
from django.core.exceptions import ValidationError, PermissionDenied
from django.core.mail.message import EmailMessage
from django.db import IntegrityError
from django.db.models import Q
from django.core.urlresolvers import reverse
from django.core.validators import validate_email
from django.utils.translation import ugettext as _
@@ -1044,16 +1043,12 @@ def get_coupon_codes(request, course_id): # pylint: disable=unused-argument
Respond with csv which contains a summary of all Active Coupons.
"""
course_id = SlashSeparatedCourseKey.from_deprecated_string(course_id)
active_coupons = Coupon.objects.filter(
Q(course_id=course_id),
Q(is_active=True),
Q(expiration_date__gt=datetime.datetime.now(pytz.UTC)) |
Q(expiration_date__isnull=True)
)
coupons = Coupon.objects.filter(course_id=course_id)
query_features = [
'code', 'course_id', 'percentage_discount', 'code_redeemed_count', 'description', 'expiration_date'
'code', 'course_id', 'percentage_discount', 'code_redeemed_count', 'description', 'expiration_date', 'is_active'
]
coupons_list = instructor_analytics.basic.coupon_codes_features(query_features, active_coupons)
coupons_list = instructor_analytics.basic.coupon_codes_features(query_features, coupons)
header, data_rows = instructor_analytics.csvs.format_dictlist(coupons_list, query_features)
return instructor_analytics.csvs.create_csv_response('Coupons.csv', header, data_rows)

View File

@@ -33,7 +33,7 @@ SALE_ORDER_FEATURES = ('id', 'company_name', 'company_contact_name', 'company_co
AVAILABLE_FEATURES = STUDENT_FEATURES + PROFILE_FEATURES
COURSE_REGISTRATION_FEATURES = ('code', 'course_id', 'created_by', 'created_at')
COUPON_FEATURES = ('code', 'course_id', 'percentage_discount', 'description', 'expiration_date')
COUPON_FEATURES = ('code', 'course_id', 'percentage_discount', 'description', 'expiration_date', 'is_active')
def sale_order_record_features(course_id, features):
@@ -225,7 +225,9 @@ def coupon_codes_features(features, coupons_list):
coupon_features = [x for x in COUPON_FEATURES if x in features]
coupon_dict = dict((feature, getattr(coupon, feature)) for feature in coupon_features)
coupon_dict['code_redeemed_count'] = coupon.couponredemption_set.all().count()
coupon_dict['code_redeemed_count'] = coupon.couponredemption_set.filter(
order__status="purchased"
).count()
# we have to capture the redeemed_by value in the case of the downloading and spent registration
# codes csv. In the case of active and generated registration codes the redeemed_by value will be None.