|travis-badge| |codecov-badge|
Reporting and data retrieval app for Open edX <https://open.edx.org/>
__.
.. _notice_section:
Figures is on PyPI <https://pypi.org/project/Figures/>
__
This release includes a performance fix for the site-monthly-metric API.
This release includes bug fixes. Of note:
Fix tasks for standalone and fix average progress validation error <https://github.com/appsembler/figures/pull/463>
__Enable daily metrics models backfill of historical data in platform, but not progress <https://github.com/appsembler/figures/pull/452>
__Update SDM historic course count calculation <https://github.com/appsembler/figures/pull/458>
__Enrollment data handling fixes <https://github.com/appsembler/figures/pull/449>
__Fix broken devsite data seeding <https://github.com/appsembler/figures/pull/460>
__Also includes a foundational update for MAU 2:
MAU 2 - Add Monthly Active Enrollment Model <https://github.com/appsembler/figures/pull/446>
__This release adds an optionan new pipeline workflow
For details, please read here <https://github.com/appsembler/figures/issues/428>
__
To enable this feature, you need to update the LMS settings (aka 'server-vars.yml') as follows:
server-vars.yml::
FIGURES: DAILY_TASK: 'figures.tasks.populate_daily_metrics_next'
In Django settigs, you would check the var here::
from django.conf import settings settings.ENV_TOKENS['FIGURES'].get('DAILY_TASK')
PR about the workflow update:
Pipeline improvement prerequisites
Figures pipeline performance improvement
Fix enrollment data backfill Django management command
Other PRs
Revert devsite 'courseware' app namepace back to originial
Bump url-parse from 1.5.1 to 1.5.10 in /frontend
Bump urijs from 1.19.6 to 1.19.8 in /frontend
main
is the new default branch
Figures 0.4.1 is finally here. After several development releases, we realized it was time to just move to production releases.
Figures 0.4.x release series supports Open edX Juniper, Hawthorn, and Ginkgo
Please visit Figures releases page <https://github.com/appsembler/figures/releases>
__ for details on specific releases.
Fix the comparison showing N/A when comparing to zero
Fix Figures devsite settings
FIX - Removed dependency on 'packaging.versions'
packaging
packageReworked SiteMonthlyMetrics registered users metric. This was causing the /figures/api/site-monthly-metrics/registered_users
endpoint to timeout with a 500 error
Fixed Ginkgo (Django Filter 0.11.0) Backward compatibility issues
UI Bug fix: Add success feedback to csv export dialog
Bump http-proxy from 1.18.0 to 1.18.1 in /frontend
Add Learners Progress Overview to main menu
Performance and test improvement for LearnerMetricsViewSet
Fix code that doesn't work on Ginkgo (Django 1.8)
Learner progress overview UI improvements
Added multi-course filtering to the learner-metrics
API endpoint
Small cosmetic issues in new Learners Progress Overview page
Learner metrics Prerelease API and UI
Improve logging for monthly metrics pipeline and set default to run the monthly metrics pipeline task
Bug fix: Site level certificate metrics
Adds enrollment metrics API endpoint
Site monthly metrics API performance improvement
Initial implementation of Celery support for Figures devsite
Fixes incorrect site monthly metrics course completion data
Fixes CourseDailyMetricsSerializer when average_progress is 1.00
Updates pipeline enrollment metrics queries to improve performance
Added site pipeline progress indicator to logging
Bump devsite Django 1.11 to version 1.11.29
Bump websocket-extensions from 0.1.3 to 0.1.4 in /frontend
Improved daily metrics pipeline performance
Bug fixes
organizations
to devsite settings INSTALLED_APPS
Client (UI and API) facing updates
figures/
Developer facing updates
.env
file for Makefile supportdeveloper quickstart guide <./DEVELOPER-QUICKSTART.md/>
__Figures is a reporting and data retrieval app. It plugs into the edx-platform LMS app server. Its goal is to provide site-wide and cross-course analytics that compliment Open edX's traditional course-centric analytics.
To evolve Figures to meet community needs, we are keeping in mind as principles the following features, which Jill Vogel outlined in her lightweight analytics <https://edxchange.opencraft.com/t/analytics-lighter-faster-cheaper/202>
__ post on ed Xchange:
Please refer to the Figures design document <https://docs.google.com/document/d/16orj6Ag1R158-J-zSBfiY31RKQ5FuSu1O5F-zpSKOg4/>
__ for more details on goals and architecture.
For all Open edX releases:
For Hawthorn:
For Ginkgo:
.. _installation:
NOTICE: Installation instructions are out of date and backlogged for update
Go here <docs/source/devstack.rst>
__ for instructions to install and run Figures in devstack.
Go here <docs/source/install.rst>
__ for instructions to install Figures in production.
The Figures user interface is a JavaScript Single Page Application (SPA) built with React and uses the create-react-app <https://github.com/facebook/create-react-app>
_ build scaffolding generator.
The Figures back-end is a reusable Django app. It contains a set of REST API endpoints that serve a dual purpose of providing data to the front-end and to remote clients.
TODO: Improve the testing instructions
The unit tests should be able to run on any OS that supports Python 2.7.x
Clone the repo:
::
git@github.com:appsembler/figures.git
Go to the project directory:
::
cd figures
Create a virtualenv <https://virtualenv.pypa.io/en/stable/>
__ for Python 2.7.x.
Install required Python packages:
::
pip install -r devsite/requirements.txt
From the figures
repository root directory:
::
py.test
If all goes well, the Figures unit tests will all complete succesfully
Figures can be configured via Django settings' FIGURES
key. Open edX reads configuration from
the /edx/etc/lms.yml
file both in devstack and production servers. In releases before Juniper it
was the lms.env.json
file.
A Figures configuration may look like the following:
::
FEATURES: # The standard Open edX feature flags
# ... other features goes here ...
FIGURES_IS_MULTISITE: True
# ... more features goes there ...
FIGURES: # Other Figures configurations
SITES_BACKEND: 'openedx.core.djangoapps.appsembler.sites.utils:get_active_sites'
REQUESTED_SITE_BACKEND: 'tahoe_figures_plugins.sites:get_current_site_or_by_uuid'
FIGURES_PIPELINE_TASKS_ROUTING_KEY: 'edx.lms.core.high'
DAILY_METRICS_IMPORT_HOUR: 13
DAILY_METRICS_IMPORT_MINUTE: 0
Settings like SITES_BACKEND
require a path to a Python function or class. The path is consists of two parts:
a Python module e.g. my_plugin_package.helpers
and an object e.g my_helper
separated by a colon e.g.
my_plugin_package.helpers:my_helper
.
This object would be imported by the import_from_path
helper in the
figures/helpers.py <https://github.com/appsembler/figures/blob/932eeab84c469a34dfcb94232bbe6f7c08146b3f/figures/helpers.py#L84-L98>
__ module.
..................... Configuration options .....................
FEATURES.FIGURES_IS_MULTISITE
(default False
): Boolean feature flag to run Figures in a single-site mode by
default (when set to False
) most popular Open edX installation option.
The multisite mode requires a custom edx-organizations
fork that is used for
Appsembler Tahoe clusters.
FIGURES.SITES_BACKEND
(default None
): A Python path to function to list figures sites.
For example, this is useful to customize which sites are processed and which are considered inactive.
By default (when None
is used) all sites are listed in the multi-site mode.
REQUESTED_SITE_BACKEND
(default None
): Python path to a function that gets the current site.
For example it can be used for API purposes to pass a Site ID to get a different site.
By default (when None
is used) the Django's get_current_site()
helper is used.
TBD: Document FIGURES_PIPELINE_TASKS_ROUTING_KEY
, DAILY_METRICS_IMPORT_HOUR
and DAILY_METRICS_IMPORT_MINUTE
.
TODO: Add details here or separate CONTRIBUTING
file to the root of the repo
.. _reporting_issues:
If you find bugs or run into issues, please submit an issue ticket to the Figures issue tracker <https://github.com/appsembler/figures/issues>
__ on Github.
.. _reporting_security_issues:
Please do not report security issues in public. Please email security@appsembler.com.
.. |travis-badge| image:: https://travis-ci.org/appsembler/figures.svg?branch=master :target: https://travis-ci.org/appsembler/figures/ :alt: Travis
.. |codecov-badge| image:: http://codecov.io/github/appsembler/figures/coverage.svg?branch=master :target: http://codecov.io/github/appsembler/figures?branch=master :alt: Codecov