Skip to content

Commit

Permalink
Merge pull request #60 from edly-io/rehan/EDLY-2100
Browse files Browse the repository at this point in the history
Adds description field in subscription
  • Loading branch information
rehan99000 authored Nov 11, 2020
2 parents 3b486fd + 8d335b6 commit cd34b5d
Show file tree
Hide file tree
Showing 10 changed files with 52 additions and 23 deletions.
1 change: 1 addition & 0 deletions ecommerce/static/js/models/subscription_model.js
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ define([
defaults: {
id: null,
title: null,
description: '',
subscription_type: SUBSCRIPTION_TYPES.limited_access,
subscription_duration_value: 0,
subscription_duration_unit: SUBSCRIPTION_DURATION_UNITS.days,
Expand Down
2 changes: 2 additions & 0 deletions ecommerce/static/js/views/subscription_detail_view.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ define([
templateData,
id = this.model.get('id'),
title = this.model.get('title'),
description = this.model.get('description'),
subscriptionType = SubscriptionUtils.formatSubscriptionType(this.model.get('subscription_type')),
subscriptionStatus = this.model.get('subscription_status'),
dateCreated = this.model.get('date_created'),
Expand All @@ -54,6 +55,7 @@ define([
templateData = {
id,
title,
description,
subscription_type: subscriptionType,
subscription_status: subscriptionStatus,
subscription_actual_price: subscriptionActualPrice,
Expand Down
34 changes: 16 additions & 18 deletions ecommerce/static/js/views/subscription_form_view.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,27 +9,21 @@ define([
'ecommerce',
'underscore',
'underscore.string',
'utils/utils',
'text!templates/_alert_div.html',
'text!templates/subscription_form.html',
'models/subscription_model',
'collections/subscription_collection',
'views/form_view',
],
function($,
Backbone,
BackboneSuper,
BackboneValidation,
BackboneStickit,
ecommerce,
_,
_s,
Utils,
AlertDivTemplate,
SubscriptionFormTemplate,
Subscription,
Subscriptions,
FormView) {
Backbone,
BackboneSuper,
BackboneValidation,
BackboneStickit,
ecommerce,
_,
_s,
AlertDivTemplate,
SubscriptionFormTemplate,
FormView) {
'use strict';

return FormView.extend({
Expand All @@ -56,10 +50,13 @@ define([
},
],

baseCouponBindings: {
baseSubscriptionBindings: {
'input[name=title]': {
observe: 'title'
},
'textarea[name=description]': {
observe: 'description'
},
'input[name=subscription_type]': {
observe: 'subscription_type'
},
Expand Down Expand Up @@ -92,7 +89,7 @@ define([
},

bindings: function() {
return _.extend({}, this.baseCouponBindings);
return _.extend({}, this.baseSubscriptionBindings);
},

events: {
Expand All @@ -103,6 +100,7 @@ define([
getEditableAttributes: function() {
return [
'title',
'description',
'subscription_active_status',
];
},
Expand Down
2 changes: 1 addition & 1 deletion ecommerce/static/js/views/subscription_list_view.js
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ define([
subscription_actual_price: subscription.get('subscription_actual_price') + ' USD',
subscription_price: subscription.get('subscription_price') + ' USD',
subscription_status: subscription.get('subscription_status') ? 'Active': 'Inactive',
date_created: moment(subscription.get('date_created')).format('MMMM DD, YYYY, h:mm A'),
date_created: moment.utc(subscription.get('date_created')).format('MMMM DD, YYYY, h:mm A'),
course_payments: subscription.get('course_payments', true)
};
},
Expand Down
7 changes: 7 additions & 0 deletions ecommerce/static/templates/subscription_detail.html
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,13 @@ <h3 class="hd-3">
<span><%= dateEdited %></span>
</div>
</div>
<% if(description) {%>
<div class="info-item grid-item">
<div class="heading"><%= gettext('Subscription Description:') %></div>
<div class="value"><%= description %></div>
</div>
<%}%>

<% if(subscription_actual_price) {%>
<div class="info-item grid-item">
<div class="heading"><%= gettext('Subscription Actual Price:') %></div>
Expand Down
6 changes: 6 additions & 0 deletions ecommerce/static/templates/subscription_form.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,12 @@
<p class="help-block"></p>
</div>

<div class="form-group">
<label class="hd-4" for="description"><%= gettext('Subscription Description') %></label>
<textarea id="description" class="form-control" name="description" rows="5" placeholder="e.g. A custom subscription description"></textarea>
<p class="help-block"></p>
</div>

<div class="form-group">
<label class="hd-4" ><%= gettext('Subscription Type') %> *</label>
<div class="radio">
Expand Down
8 changes: 6 additions & 2 deletions ecommerce/subscriptions/api/v2/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ def get_is_course_payments_enabled(self, product):
class Meta:
model = Product
fields = [
'id', 'title', 'subscription_type', 'subscription_actual_price', 'subscription_price',
'id', 'title', 'date_created', 'subscription_type', 'subscription_actual_price', 'subscription_price',
'subscription_status', 'display_order', 'partner_sku', 'is_course_payments_enabled'
]

Expand Down Expand Up @@ -212,13 +212,15 @@ def create(self, validated_data):
raise Exception(message)

title = validated_data['title']
description = validated_data['description']
subscription_attributes = self._get_subscription_attributes(validated_data)
partner = self.context['partner']
try:
with transaction.atomic():
product_class = ProductClass.objects.get(name=SUBSCRIPTION_PRODUCT_CLASS_NAME)
subscription = Product.objects.create(
title=title,
description=description,
course=None,
is_discountable=True,
structure=Product.STANDALONE,
Expand All @@ -240,6 +242,7 @@ def update(self, subscription, validated_data):
Update a subscription product.
"""
subscription.title = validated_data['title']
subscription.description = validated_data['description']
attribute_values = self._get_subscription_attributes(validated_data)
self._save_subscription_attributes(subscription, attribute_values)
subscription.save()
Expand Down Expand Up @@ -325,6 +328,7 @@ def _create_conditional_offer(self, subscription, partner):
class Meta:
model = Product
fields = (
'id', 'title', 'subscription_type', 'subscription_actual_price', 'subscription_price', 'subscription_status',
'id', 'title', 'description', 'date_created', 'date_updated',
'subscription_type', 'subscription_status', 'subscription_actual_price', 'subscription_price',
'subscription_number_of_courses', 'subscription_duration_value', 'subscription_duration_unit'
)
1 change: 1 addition & 0 deletions ecommerce/subscriptions/api/v2/tests/factories.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ class Meta(object):
model = Product

title = FuzzyText()
description = FuzzyText()
product_class = SubFactory(ProductClassFactory)
stockrecords = RelatedFactory('oscar.test.factories.StockRecordFactory', 'product')

Expand Down
7 changes: 7 additions & 0 deletions ecommerce/subscriptions/api/v2/tests/test_serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,11 @@ def test_list_serializer(self):
'partner': self.partner
}
subscription = self.create_subscription()
date_created = str(subscription.date_created).replace(' ', 'T').replace('+00:00', 'Z')
expected_data = {
'id': subscription.id,
'title': subscription.title,
'date_created': date_created,
'subscription_type': subscription.attr.subscription_type.option,
'subscription_actual_price': subscription.attr.subscription_actual_price,
'subscription_price': subscription.attr.subscription_price,
Expand Down Expand Up @@ -89,9 +91,14 @@ def test_subscription_serializer(self, subscription_type):
'subscription_duration_value': None
},
}
date_created = str(subscription.date_created).replace(' ', 'T').replace('+00:00', 'Z')
date_updated = str(subscription.date_updated).replace(' ', 'T').replace('+00:00', 'Z')
expected_data = {
'id': subscription.id,
'title': subscription.title,
'description': subscription.description,
'date_created': date_created,
'date_updated': date_updated,
'subscription_type': subscription_type,
'subscription_actual_price': subscription.attr.subscription_actual_price,
'subscription_price': subscription.attr.subscription_price,
Expand Down
7 changes: 5 additions & 2 deletions ecommerce/subscriptions/api/v2/tests/test_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@ def test_list(self):
"""
self.create_subscription(stockrecords__partner=self.site.partner)
expected_keys = [
'id', 'title', 'subscription_type', 'subscription_actual_price', 'subscription_price', 'subscription_status',
'display_order', 'partner_sku', 'is_course_payments_enabled'
'id', 'title', 'date_created', 'subscription_type', 'subscription_actual_price', 'subscription_price',
'subscription_status', 'display_order', 'partner_sku', 'is_course_payments_enabled'
]
request_url = reverse('api:v2:subscriptions-list')
response = self.client.get(request_url)
Expand Down Expand Up @@ -61,6 +61,7 @@ def test_create(self):
"""
subscription_data = {
'title': 'Test subscription',
'description': 'Test subscription description',
'subscription_type': LIMITED_ACCESS,
'subscription_actual_price': 100.00,
'subscription_price': 50.00,
Expand All @@ -85,6 +86,7 @@ def test_update(self):
subscription = self.create_subscription(stockrecords__partner=self.site.partner)
subscription_data = {
'title': 'Test subscription',
'description': 'Test subscription description',
'subscription_type': LIMITED_ACCESS,
'subscription_actual_price': 100.00,
'subscription_price': 50.00,
Expand All @@ -100,6 +102,7 @@ def test_update(self):
response = self.client.get(request_url)
self.assertEqual(response.status_code, 200)
self.assertEqual(response.data.get('title'), subscription_data.get('title'))
self.assertEqual(response.data.get('description'), subscription_data.get('description'))
self.assertFalse(response.data.get('subscription_status'))

def test_toggle_course_payments(self):
Expand Down

0 comments on commit cd34b5d

Please sign in to comment.