Skip to content

Latest commit

 

History

History
52 lines (37 loc) · 3.21 KB

0008-pull-commerce-coordinator-code-out-of-platform.rst

File metadata and controls

52 lines (37 loc) · 3.21 KB

8. Pull Commerce Coordinator related code out of edx-platform

Status

Draft

Context

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.

Decision

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.

Rejected Alternatives

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.