From 05a2b54b5a1efe5b2375b42f8c2bd21b61236a39 Mon Sep 17 00:00:00 2001 From: Matt Drayer Date: Wed, 16 Sep 2015 00:09:25 -0400 Subject: [PATCH 1/3] hotfix/2015-09-16-1: Removed signatory org char limit --- cms/static/js/certificates/models/signatory.js | 5 ----- .../js/certificates/spec/views/certificate_editor_spec.js | 4 ---- cms/templates/js/signatory-editor.underscore | 4 ++-- 3 files changed, 2 insertions(+), 11 deletions(-) diff --git a/cms/static/js/certificates/models/signatory.js b/cms/static/js/certificates/models/signatory.js index 416607d222..a74f7ba10d 100644 --- a/cms/static/js/certificates/models/signatory.js +++ b/cms/static/js/certificates/models/signatory.js @@ -54,11 +54,6 @@ function(_, str, Backbone, BackboneRelational, gettext) { } } - if(_.has(attrs, 'organization') && attrs.organization.length > 40) { - errors = _.extend({ - 'organization': gettext('Signatory organization should not be more than 40 characters long.') - }, errors); - } if (errors !== null){ return errors; } diff --git a/cms/static/js/certificates/spec/views/certificate_editor_spec.js b/cms/static/js/certificates/spec/views/certificate_editor_spec.js index 5ccd3794f2..9ea6dbd241 100644 --- a/cms/static/js/certificates/spec/views/certificate_editor_spec.js +++ b/cms/static/js/certificates/spec/views/certificate_editor_spec.js @@ -242,10 +242,6 @@ function(_, Course, CertificateModel, SignatoryModel, CertificatesCollection, Ce inputSignatoryTitle: 'This is a certificate signatory title that has waaaaaaay more than 106 characters, in order to cause an exception.' }); - setValuesToInputs(this.view, { - inputSignatoryOrganization: 'New Signatory Organization longer than 40 characters' - }); - this.view.$(SELECTORS.saveCertificateButton).click(); expect(this.view.$('.certificate-edit-error')).toHaveClass('is-shown'); }); diff --git a/cms/templates/js/signatory-editor.underscore b/cms/templates/js/signatory-editor.underscore index 0595ef3bc5..65789a9eb5 100644 --- a/cms/templates/js/signatory-editor.underscore +++ b/cms/templates/js/signatory-editor.underscore @@ -27,8 +27,8 @@
- " value="<%= organization %>" aria-describedby="signatory-organization-<%= signatory_number %>-tip" maxlength="40" /> - <%= gettext("The organization that this signatory belongs to, as it should appear on certificates. Maximum 40 characters.") %> + " value="<%= organization %>" aria-describedby="signatory-organization-<%= signatory_number %>-tip" /> + <%= gettext("The organization that this signatory belongs to, as it should appear on certificates.") %> <% if(error && error.organization) { %> <%= error.organization %> <% } %> From 011062e5706b6b263a6511cbbbdddcf881e53880 Mon Sep 17 00:00:00 2001 From: Clinton Blackburn Date: Wed, 16 Sep 2015 12:03:06 -0400 Subject: [PATCH 2/3] hotfix/2015-09-16-2: Credit Fixes - Updated checkout page to disallow purchase of credit seats (the credit payment page is hosted in ecommerce) - Corrected path to providers endpoint - Cleaned receipt page styling - Updated receipt page copy - Added provider thumbnail to receipt page ECOM-2172 --- lms/djangoapps/verify_student/views.py | 9 ++++--- lms/static/js/commerce/views/receipt_view.js | 3 ++- lms/static/sass/views/_verification.scss | 27 +++++++------------- lms/templates/commerce/provider.underscore | 6 ++--- 4 files changed, 20 insertions(+), 25 deletions(-) diff --git a/lms/djangoapps/verify_student/views.py b/lms/djangoapps/verify_student/views.py index 09e750b1e4..ea89f8828c 100644 --- a/lms/djangoapps/verify_student/views.py +++ b/lms/djangoapps/verify_student/views.py @@ -273,7 +273,7 @@ class PayAndVerifyView(View): # separate out the payment flow and use the product SKU to figure out what # the user is trying to purchase. # - # Nonethless, for the time being we continue to make the really ugly assumption + # Nonetheless, for the time being we continue to make the really ugly assumption # that at some point there was a paid course mode we can query for the price. relevant_course_mode = self._get_paid_mode(course_key) @@ -509,9 +509,12 @@ class PayAndVerifyView(View): # Retrieve all the modes at once to reduce the number of database queries all_modes, unexpired_modes = CourseMode.all_and_unexpired_modes_for_courses([course_key]) - # Retrieve the first unexpired, paid mode, if there is one + # Retrieve the first mode that matches the following criteria: + # * Unexpired + # * Price > 0 + # * Not credit for mode in unexpired_modes[course_key]: - if mode.min_price > 0: + if mode.min_price > 0 and not CourseMode.is_credit_mode(mode): return mode # Otherwise, find the first expired mode diff --git a/lms/static/js/commerce/views/receipt_view.js b/lms/static/js/commerce/views/receipt_view.js index 665aec401d..4a9b0a30c3 100644 --- a/lms/static/js/commerce/views/receipt_view.js +++ b/lms/static/js/commerce/views/receipt_view.js @@ -64,6 +64,7 @@ var edx = edx || {}; providerDiv = this.$el.find("#receipt-provider"); context.course_key = this.courseKey; context.username = this.username; + context.platformName = this.$el.data('platform-name'); providerDiv.html(_.template(templateHtml, context)).removeClass('hidden'); }, @@ -301,7 +302,7 @@ function completeOrder (event) { ); $.ajax({ - url: '/api/credit/v1/provider/' + providerId + '/request/', + url: '/api/credit/v1/providers/' + providerId + '/request/', type: 'POST', headers: { 'X-CSRFToken': $.cookie('csrftoken') diff --git a/lms/static/sass/views/_verification.scss b/lms/static/sass/views/_verification.scss index da59fac628..979c5cf956 100644 --- a/lms/static/sass/views/_verification.scss +++ b/lms/static/sass/views/_verification.scss @@ -246,42 +246,33 @@ } .report-receipt-provider { @extend %ui-window; - border-top: 3px solid $credit-color-base; + padding: ($baseline*0.75) $baseline; .provider-wrapper { width: 70%; @include float(left); - padding-left: $baseline; .provider-info { - padding: $baseline $baseline $baseline 0; + margin-bottom: $baseline; font-weight: 600; } - .provider-more-info { - } - .provider-instructions { - } } .provider-buttons-logos { - width: 30%; @include float(right); @include text-align(center); - .provider-logo { - padding: $baseline; - } - .provider-logo image { - width: 100px; + .provider-logo img { + width: 100px; } .complete-order { @include text-align(center); - padding: $baseline; - } - .complete-order button { - @extend %btn-pl-primary-base; - white-space: nowrap; + + button { + @extend %btn-pl-primary-base; + white-space: nowrap; + } } } } diff --git a/lms/templates/commerce/provider.underscore b/lms/templates/commerce/provider.underscore index ce4df2e362..a79108f6b4 100644 --- a/lms/templates/commerce/provider.underscore +++ b/lms/templates/commerce/provider.underscore @@ -1,9 +1,9 @@
- <%= interpolate(gettext("You still need to visit %s to complete the credit process."), [display_name]) %> + <%= interpolate(gettext("You still need to visit the %s website to complete the credit process."), [display_name]) %>
- <%= interpolate(gettext("In order to learn credit, %s requires learner to:"), [display_name]) %> + <%= interpolate(gettext("To finalize course credit, %s requires %s learners to submit a credit request."), [provider_id.toUpperCase(), platformName]) %>
<%= fulfillment_instructions %> @@ -12,7 +12,7 @@
<%= interpolate('', [provider_id, course_key, username, gettext( "Complete Order")]) %> From 536783e6c98c2ba7134e224711a95368a89f4d38 Mon Sep 17 00:00:00 2001 From: Andy Armstrong Date: Wed, 16 Sep 2015 12:26:01 -0400 Subject: [PATCH 3/3] hotfix/2015-09-16-3: Re-enable uglification of JavaScript in production. --- lms/envs/aws.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lms/envs/aws.py b/lms/envs/aws.py index 3566c13970..9399a79e6c 100644 --- a/lms/envs/aws.py +++ b/lms/envs/aws.py @@ -131,6 +131,9 @@ if STATIC_URL_BASE: if not STATIC_URL.endswith("/"): STATIC_URL += "/" +# Enable uglification of JavaScript +PIPELINE_JS_COMPRESSOR = 'pipeline.compressors.uglifyjs.UglifyJSCompressor' + # DEFAULT_COURSE_ABOUT_IMAGE_URL specifies the default image to show for courses that don't provide one DEFAULT_COURSE_ABOUT_IMAGE_URL = ENV_TOKENS.get('DEFAULT_COURSE_ABOUT_IMAGE_URL', DEFAULT_COURSE_ABOUT_IMAGE_URL)