Greetings all! I’ve started a new pet project to create a collection of 26 videos consisting of coding tips and best practices for working with Open edX plugins. See this introduction video for the salient details of the project.
26 Coding Tips To Make You A Better Open edX Programmer
Please DM me – ideally on the Open edX Slack channel – or email me at lpm0073@gmail.com if you’re interested in collaborating with me on this. If you’d be interested in contributing video content explaining any of the 26 subjects below then I will a.) do the post production editing for you, and b.) create a really nice bio video segment to introduce you, and c.) publish the final video to this YouTube series: 26 Tips To Make You A Better Open edX Plugin Programmer. There are other ways to contribute as well, in case you’re camera shy but otherwise would like to help.
The coding tips themselves are already published to this Github repo: Open edX Plugin Examples and include the following topics:
- Iterating and introspecting structured course content
- Creating a custom oauth backend that seamlessly integrates with Open edX third party authentication
- Creating custom urls to auto-enroll students in a course
- Automatically detecting and adapting to browser OS’ locale setting
- Leveraging Open edX’s custom library of Python decorators
- Creating custom Open edX Django configuration settings
- Adding new custom urls to Open edX LMS and Course Management Studio
- Generating log entries to LMS and CMS
- Trapping and act on on Open edX’s Django signals
- Modifying existing REST api endpoints and how to create entirely new REST api end points using Django RestFramework
- Best practices for Django app setup, app self-checks and app configuration
- Creating new Django models
- Adding your custom Django models to the Django Admin console
- Working with Mako templates from inside your plugin
- How to integrate with Open edX’s static asset compilation system
- Using Django middleware to intercept and redirect LMS and CMS url http requests
- Creating custom command-line utilities in Django manage.py custom commands
- Create run-time feature toggles to enable/disable your custom code using Django Waffle flags
- How to detect and consume OS environment variables from your Python code
- Bundling multiple plugins in a single pip package
- Automatically initializing Django model data during app startup
- Adding unit tests to plugin code
- Semantic version control of your repository
- Leveraging Pre-commit, flake8 and black and keep your source code consistent with that found in Open edX projects
- pip configuration, requirements, constraints, setup.py, pyproject.toml
- Publishing to PyPi