The new "country access" implementation replaces the old
implementation. Middleware and tests have been updated
accordingly, but deprecated models are preserved
for backwards compatibility.
Block users from enrolling in a course if the user
is blocked by country access rules.
1) Enrollment via the login/registration page.
2) Enrollment from the marketing iframe (via student.views.change_enrollment)
3) Enrollment using 100% redeem codes.
4) Enrollment via upgrade.
This does NOT cover enrollment through third party authentication,
which is sufficiently complex to deserve its own commit.
The existing pattern of using `override_settings(MODULESTORE=...)` prevented
us from having more than one layer of subclassing in modulestore tests.
In a structure like:
@override_settings(MODULESTORE=store_a)
class BaseTestCase(ModuleStoreTestCase):
def setUp(self):
# use store
@override_settings(MODULESTORE=store_b)
class ChildTestCase(BaseTestCase):
def setUp(self):
# use store
In this case, the store actions performed in `BaseTestCase` on behalf of
`ChildTestCase` would still use `store_a`, even though the `ChildTestCase`
had specified to use `store_b`. This is because the `override_settings`
decorator would be the innermost wrapper around the `BaseTestCase.setUp` method,
no matter what `ChildTestCase` does.
To remedy this, we move the call to `override_settings` into the
`ModuleStoreTestCase.setUp` method, and use a cleanup to remove the override.
Subclasses can just defined the `MODULESTORE` class attribute to specify which
modulestore to use _for the entire `setUp` chain_.
[PLAT-419]
Removes old payment and verification endpoints, views, templates, and tests, making the new split flow the default. The SEPARATE_VERIFICATION_FROM_PAYMENT feature flag is also removed.
Added receipts_pdf.py
Used Paragraph for displaying a large body of text.
added the table
Line breaks in the para text. font size adjusted.
Improved the main table (alignments) and totals (converted to a table as well)
Converted the footer into a table, and allowed for pagination.
Added pagination to item data table.
Handled wrapping of long descriptions into multiple lines.
email attachment for both invoice and receipt
added the currency from the settings
Removed magic numeric literals and added meaningful variables.
Added initial set of substitutions from configuration
add defining logo paths via configuration
Removed font dependencies. Will use the system default fonts which appear good enough to me.
Alignment adjustments as per suggestions.
Fixed the pep8 violations. Added comments to styling
added the decimal points to the price values
Cleanup. Docstrings.
i18n the text in the pdf file
fix pep8/pylint issues
Changed the amounts from string to float.
Overrode the 'pdf_receipt_display_name' property in the OrderItem subclass Donation.
used the PaidCourseRegistration instead of the parent OrderItem to avoid course_id related exceptions.
quality fixes
added the test cases for the pdf
made the changes in the pdf suggested by griff
updated the pdf tests to assert the pdf content
used the pdfminor library
fix quality issues
made the changes suggested by Will
added the text file that says "pdf file not available. please contact support"
in case pdf fails to attach in the email
Update the redeem code schema
Updating the redeem code schema.
Adding migration file.
Adding course mode support when redeeming a code.
Conflicts:
lms/djangoapps/shoppingcart/views.py
Add sales admin privileges for redeem code generation.
Making sure redeem code URLs work for verified courses.
pep8 violations
Code Review and Test Cleanup changes
Added tests, fixed tests.
Updating the boolean checks in ecommerce template
added the functionality of adding the expiration date, and also handled in the shopping cart when the user try to add the expired coupon code in the shopping cart
added expiration date in the coupons list in the ecommerce page
added the unit tests and jasmine tests
fix the quality issues and rebased with master
regenerated the migration file with a different number
i18n and verified te course mode
changes suggested by stephan