How to write and integrate a custom plugin in tutor

Dipankar_Dey
Fri, 26 May 2023 08:08:27 +0000
Development

Hello. I am new to tutor and openedx. I managed to fork and do customization on openedx and building my custom images. But I would like integrate my custom app(django+react) leveraging tutor plugins. I’ve checked the source codes for tutor plugins and edx plugins, and yet don’t have a clear idea.
Confusions -

1. I see for any particular plugin (say notes), there’s a separate source code GitHub - openedx/edx-notes-api: edx-notes-api and a respective tutor plugin written GitHub - overhangio/tutor-notes: Student notes plugin for Tutor. Am I correct in understanding, that if I try to write my own plugin, I need to create a project using edx-cookiecutters/cookiecutter-django-app at master · openedx/edx-cookiecutters · GitHub and also to write a respective tutor plugin for that using GitHub - overhangio/cookiecutter-tutor-plugin: Cookiecutter for tutor plugins ?

2. I’ve a public repo that hosts the django-app that I’ve created. Would it be sufficient to proceed further with that?

3. I’ve gone through tutor docs that explains hooks and patches. What I understands hooks have options like filters and actions, depending on my needs, if I try to customize like project settings I can use filter and if I need to execute some callback I can do it with actions. Going through the source codes of existing tutor plugins, I found that patches are written for overriding specific template files or am have I incorrectly interpreted that? For prod deployments, which are the files I should override, any single example, if I need to run my custom django-app?

4. I saw tutor docs(Plugin indexes — Tutor documentation) say, we can install a plugin enable disable that, for that we need to add my plugin to plugins index (3 options are there, but probably if I would like to add src indicating my git repo where I’ll write the tutor plugin). I can write that plugins.yml file on my computer(/path/to/my/local/index/plugins.yml), and add that yml to plugins index by running - tutor plugins index add /path/to/my/local/index. Now the problem here is my tutor aws image isn’t allowing me for options like - (plugins) index . What shall I do?

5. If I need to interact with the core openedx db from my custom django-app, is it to be done using REST API only?
Please correct me if I’m wrong. I’m not sure if I’m going towards the right direction

5 posts - 2 participants