The only time it should include the suffix is when the handler is
explicilty "xmodule_handler", meaning it's an old-style handler
that routes everything. For example, Capa uses one handler for
all its AJAX requests, and only differentiates actions based on
suffix ("get", "problem_check", etc.).
What prompted this change is that LTIDescriptor defines a handler
"lti_2_0_result_rest_handler" which encodes user-specific
information into the suffix. This is a perfectly valid thing to
do, but it blows out the number of named transactions in our
metrics.
Add configuration model for enrollment refunds.
Use order info from otto in refund window calculation
Delete dupe tests. Extend tests to include window tests
Move ecom client from lib to djangoapps in openedx
The receipt page now retrieves data for orders instead of baskets. Going forward baskets will be deleted after an order has been placed, so there should be no permanent references to baskets. Orders will continue to be persisted permanently.
ECOM-2653
* The LMS now also monkey-patches
xmodule.x_module.descriptor_global_handler_url and
xmodule.x_module.descriptor_global_local_resource_url so that we can
get LMS XBlock URLs from the DescriptorSystem. That functionality is
needed in the block transforms collect() phase for certain XModules
like Video. For instance, say we want to generate the transcripts
URLs. The collect phase is run asynchronously, without a user context.
* The URL handler monkey-patching is now done in the startup.py files
for LMS and Studio. Studio used to do this in the import of
cms/djangoapps/contentstore/views/item.py. This was mostly just
because it seemed like a sane and consistent place to put it.
* LmsHandlerUrls was removed, its handler_url and local_resource_url
methods were moved to be top level functions. The only reason that
class existed seems to be to give a place to store course_id state,
and that can now be derived from the block location.
* To avoid the Module -> Descriptor ProxyAttribute magic that we do
(which explodes with an UndefinedContext error because there is no
user involved), when examining the block's handler method in
handler_url, I made a few changes:
** Check the .__class__ to see if the handler was defined, instead of the
block itself.
** The above required me to relax the check for _is_xblock_handler on the
function, since that will no longer be defined.
90% of this goes away when we kill XModules and do the refactoring we've
wanted to do for a while.
Make the course URL pattern more generic.
Comment newly added functionality.
Fix quality issues.
Address two lint errors, with regex and variable naming.
Changed how we access course_key and course_id.
Replace another instance of self.course.id.to_deprecated_string()
Remove unused import, add missing one.
Improve how the ccx key is extracted from the URL
Use resolve() instead of os.path to get the course_id.
Remove the granting of staff access to coaches.