Coder Social home page Coder Social logo

kuyesu / eox-core Goto Github PK

View Code? Open in Web Editor NEW

This project forked from edunext/eox-core

0.0 0.0 0.0 1.11 MB

eduNEXT openedX Extensions.

License: GNU Affero General Public License v3.0

Python 88.87% Makefile 0.58% JavaScript 9.74% HTML 0.30% SCSS 0.51%

eox-core's Introduction

EOX core build-status

Eox-core (A.K.A. Edunext Open extensions) is an openedx plugin, for the edx-platform that adds multiple API endpoints in order to extend the functionality of the edx-platform and avoid changing the base code directly. These API endpoints includes bulk creation of pre-activated users (for example, skip sending an activation email), enrollments and pre-enrollment operations.

Usage

Open edX releases before juniper

  1. Create the oauth client at http://localhost:18000/admin/oauth2/client/add/, copy the client-id and client-secret.
  2. Generate an auth-token using that client-id and client-secret:
$ curl -X POST -d "client_id=<YOUR_CLIENT_ID>&client_secret=<YOUR_CLIENT_SECRET>
        &grant_type=client_credentials" http://localhost:18000/oauth2/access_token/
  1. Use the token to call the API as you need:
# User creation API example
curl -X POST --header "Authorization: Bearer <YOUR_AUTH_TOKEN>" -H "Accept: application/json" \
        http://localhost:18000/eox-core/api/v1/user/ --header "Content\-Type: application/json" \
        --data  '{"username": "jsmith", "email": "[email protected]", "password": "qwerty123",
        "fullname": "Jhon Smith"}'

# Enroll api example
curl -X POST --header "Authorization: Bearer <YOUR_AUTH_TOKEN>" -H "Accept: application/json" \
        http://localhost:18000/eox-core/api/v1/enrollment/ --header "Content-Type: application/json" \
        --data '{"course_id": "course-v1:edX+DemoX+Demo_Course", "email": "[email protected]",
        "mode": "audit", "force": 1}'

Open edX releases after juniper

Instead of step #1, follow:

1) Create a Django Oauth Toolkit Application at http://localhost:18000/admin/oauth2_provider/application/add/, copy the client-id and client-secret. Then follow 2 and 3.

Also, to be able to use eox-core in newer Open edX versions like lilac, backend settings must be updated as follows:

EOX_CORE_USERS_BACKEND: "eox_core.edxapp_wrapper.backends.users_l_v1"
EOX_CORE_PRE_ENROLLMENT_BACKEND: "eox_core.edxapp_wrapper.backends.pre_enrollment_l_v1"
EOX_CORE_ENROLLMENT_BACKEND: "eox_core.edxapp_wrapper.backends.enrollment_l_v1"

They can be changed in eox_core/settings/common.py or, for example, in ansible configurations.

NOTE: the current common.py works with Open edX juniper version.

Installation on Open edX Devstack

  • Install either the Ironwood or Juniper version of the Open edX devstack
  • Clone the git repo:
cd ~/Documents/eoxstack/src/  # Assuming that devstack is in  ~/Documents/eoxstack/devstack/
sudo mkdir edxapp
cd edxapp
git clone [email protected]:eduNEXT/eox-core.git
  • Install plugin from your server (in this case the devstack docker lms shell):
cd ~/Documents/eoxstack/devstack  # Change for your devstack path (if you are using devstack)
make lms-shell  # Enter the devstack machine (or server where lms process lives)
cd /edx/src/edxapp/eox-core
pip install -e .

Dependency Management

EOX core now follows OEP-18 so the correct way to update dependencies is to run make upgrade inside your virtualenv.

Integrations with third party services

The plugin offers some integrations listed below:

#. Sentry: This service allows to track the errors generated on edx-platform. Check more details in https://sentry.io/welcome/. To enable the integration, follow the steps below:

  • Install the plugin with Sentry support (extras_require [sentry]).

  • Sign up/in to your sentry account and create a new Django application integration.

  • Get the DSN for your integration. This is an unique identifier for your application.

  • Setup the following configuration values for edx-platform:

    EOX_CORE_SENTRY_INTEGRATION_DSN: <your DSN value>
    EOX_CORE_SENTRY_IGNORED_ERRORS: [] # optional

    By default, EOX_CORE_SENTRY_INTEGRATION_DSN setting is None, which disables the sentry integration. EOX_CORE_SENTRY_IGNORED_ERRORS is optional. It is a list of the exceptions you want to ignore. For instance, it can be defined as:

    EOX_CORE_SENTRY_IGNORED_ERRORS: [
      'xmodule.exceptions.NotFoundError',
      'openedx.core.djangoapps.user_authn.exceptions.AuthFailedError',
    ]

Course Management automation

This component allows Studio users to make changes in multiple courses, such as:

  • Add or remove staff/instructor users across multiple courses in one organization.
  • Change course settings in multiple courses at once.
  • Re-run a course across multiple organizations.

Compilation

We use webpack to bundle the React js application and its dependencies. To compile in a development environment, run this command on the root folder:

npm run build-dev

Otherwise, if you want to compile for use in production environment, run this command instead:

npm run build-prod

These commands are defined in the package.json file and each one exports two bundle files (build.js and course-management.bundle.css) inside of eox_core/static folder.

EOX core migration notes

Migrating to version 2.0.0

From version 2.0.0, middlewares RedirectionsMiddleware and PathRedirectionMiddleware are now included in this plugin. These middlewares were moved from the `eox-tenant`_ plugin.

if you installed eox-core alongside eox-tenant plugin, follow the steps below:

  • Upgrade eox-tenant to version 1.0.0 (previous releases are not compatible with eox-core 2.0.0)
  • Run the plugin migrations as indicated below:
$ python manage.py lms migrate eox_tenant --settings=<your app settings>
$ python manage.py lms migrate eox_core --fake-initial --settings=<your app settings>

In case eox-tenant is not installed on the platform, just run the eox-core migrations.

Auditing Django views

The majority of views in eox-core use an auditing decorator, defined in our custom library called eox-audit-model, that helps saving relevant information about non-idempotent operations. By default this functionality is turned on. To check your auditing records go to Django sysadmin and find DJANGO EDUNEXT AUDIT MODEL.

For more information, check the eox-audit-model documentation.

How to Contribute

Contributions are welcome! See our CONTRIBUTING file for more information โ€“ it also contains guidelines for how to maintain high code quality, which will make your contribution more likely to be accepted.

eox-core's People

Contributors

ivanca avatar felipemontoya avatar mariajgrimaldi avatar jfavellar90 avatar anmrdz avatar andrey-canon avatar squirrel18 avatar moisesgsalas avatar magajh avatar diegomillan avatar jignaciopm avatar vad33r avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.