Hey hi please go through this document attached here .
Detailed steps :
Custom Registration Fields in Open edX (Tutor Plugin Documentation)
Plugin Structure
Location: ~/.local/share/tutor-plugins/custom-registration-fields
custom_registration_fields/
├── init.py
├── plugin.py
├── overrides/
├── templates/
setup.py
tutor_custom_registration_fields.egg-info/
setup.py
Defines the plugin’s entry point for Tutor.
from setuptools import setup
setup(
name=“tutor-custom-registration-fields”,
version=“0.1”,
packages=[“custom_registration_fields”],
include_package_data=True,
entry_points={
“tutor.plugin.v1”: [
“custom-registration-fields = custom_registration_fields.plugin”
]
},
classifiers=[
“Programming Language :: Python :: 3”,
“Framework :: Tutor”,
],
)
plugin.py
Adds extra fields to LMS and CMS environments.
from tutor import hooks
LMS patch
hooks.Filters.ENV_PATCHES.add_item((
“lms-env”,
“”"
REGISTRATION_EXTRA_FIELDS:
phone_number:
default: “”
label: “Phone Number”
required: true
skills:
default: “”
label: “Skills”
required: false
“”"
))
CMS patch
hooks.Filters.ENV_PATCHES.add_item((
“cms-env”,
“”"
REGISTRATION_EXTRA_FIELDS:
phone_number:
default: “”
label: “Phone Number”
required: true
skills:
default: “”
label: “Skills”
required: false
“”"
))
init.py
Defines default field config and environment template variables.
from tutor import hooks
def config_defaults():
return {
“CUSTOM_REGISTRATION_FIELDS”: [
{“name”: “phone_number”, “label”: “Phone Number”, “required”: True},
{“name”: “skills”, “label”: “Skills”, “required”: False},
]
}
hooks.Filters.CONFIG_DEFAULTS.add(config_defaults)
def env_template_vars():
return {
“CUSTOM_REGISTRATION_FIELDS”: [
{“name”: “phone_number”, “label”: “Phone Number”, “required”: True},
{“name”: “skills”, “label”: “Skills”, “required”: False},
]
}
hooks.Filters.ENV_TEMPLATE_VARIABLES.add(env_template_vars)
Frontend Code: RegistrationPage.jsx
Located at: /frontend-app-authn/src/register
Added two form fields (Phone Number and Skills) with validation using React/Paragon.
azureuser@RP2lmsVM:~/.local/share/tutor-plugins/custom-registration-fields$ ls
custom_registration_fields setup.py tutor_custom_registration_fields.egg-info
nano RegistrationPages.jsx
=========================================================================================================
Main steps which i followed
- tutor local restart
- npm install
- npm run build
- tutor build image openedx
- tutor config save
- pip install -e .
- tutor plugins list
azureuser@RP2lmsVM:~/.local/share/tutor-plugins$ tutor plugins list
NAME STATUS VERSION
android installed 18.0.0
cairn installed 18.0.0
credentials installed 18.0.0
custom-registration-fields
enabled 0.1
discovery installed 18.0.0
ecommerce installed 18.0.0
forum
enabled 18.1.1
indigo
enabled 18.2.2
jupyter installed 18.1.0
mfe
enabled 18.0.2
minio installed 18.0.1
notes installed 18.0.0
webui installed 18.0.0
xqueue installed 18.0.0
- tutor config save --set REGISTRATION_EXTRA_FIELDS=‘{“phone_number”: “required”, “skills”: “optional”}’
- tutor images build mfe
Commands Executed
- tutor local restart
- npm install
- npm run build
- tutor build image openedx
- tutor config save
- pip install -e .
- tutor plugins list
- tutor config save --set REGISTRATION_EXTRA_FIELDS=‘{“phone_number”: “required”, “skills”: “optional”}’
- tutor images build mfe
Verification
Run tutor plugins list
and ensure the plugin is enabled:
custom-registration-fields
enabled 0.1
Visit the registration page in MFE to confirm new fields appear.