Draft
Axim has marked Commerce Coordinator related code in edx-platform as business-related
. For Reference see PR
As a result of this, we need to pull out all the references of commerce-coordinator
from edx-platform
while also finding a way to override the edx-platform
code from our tooling to ensure that commerce-coordinator
functionality remains intact.
We have decided to use Django App Plugins from edx_django_utils to override the EcommerceService().payment_page_url and lms.djangoapps.commerce.util.refund_seat functions/methods in edx-platform
in which currently we have implemented commerce-coordinator
specific code.
Django App Plugins provide us with a way to override the application code without modifying the original codebase. Specifically we will be using the pluggable_overrides utility which is designed to override any method/function to point to an alternative implementation.
As a result of this we will be able to pull out the commerce-coordinator
related code from edx-platform
into a private pluggable application and still be able to use the functionality provided by commerce-coordinator
.
For the implementation, we will be creating a new pluggable application that will house all the business specific commerce-coordinator
related code in overridden functions. This new pluggable application will be installed with EDXAPP_PRIVATE_REQUIREMENTS from edx-internal.
This solution also ensures that regular flow for the community remains unaffected.
A lengthy R&D was undertaken to look at several options for pulling out the commerce coordinator related code from edx-platform
.
Alternatives that were investigated and rejected:
- Using EduNext's Ecommerce extension
- Rejected due to:
- The extension solely deals with adding more payment gateways to the ecommerce ecosystem.
- The extension does not provide a way to override the existing code blocks in
edx-platform
. - The extension is not actively maintained.
- Generic Flag names in edx-platform
- Rejected due to:
- This approach is not scalable.
- This approach will not provide a way to override the existing code blocks in
edx-platform
.