Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Credential Criteria Django app #589

Conversation

bryanlandia
Copy link

@bryanlandia bryanlandia commented May 16, 2020

Pluggable django app (only in edx-platform due to time constraints for now) to provide credential earning criteria.

A CredentialCriteria can be completed by one or more CredentialCriterions. So far only criterion model implemented is a CredentialLocationCriterion, bound to a UsageKey. Each criterion instance has a criterion type like 'completed', 'scored', 'passed', etc. which determines how we determine whether criterion is satisfied. So far only 'completed' is handled.

Signal handler implemented to listen to updated Aggregators (from completion_aggregator). When one is updated, evaluate whether any criterion are based on that aggegator's UsageKey, and if so, if the user in question has completed it.

Criteria listen to satisfied Criterions. When all are satisfied for a user, contact Credentials service to issue the credential linked to the Credential (so far only Badge supported).

Functionality enabled globally via Waffle Switch. Which block types are credential-able can be set globally in settings/env tokens and overridden in SiteConfiguration. So effectively, can be disabled on Tahoe site by site basis by keeping the default credential-able types at [] and enabling for some block types (like ['course'] for our guinea pig clients.)

Still needs tests.

melvinsoft and others added 12 commits April 8, 2020 09:30
plugin signal handlers
criterion types,
criterion type constants,
is_satisfied logic,
try at generic relations/keys,
beginnings of evalute/award criteria for user,
UserCredentialCriterion to store user criterion status,
settings for Celery routing keys,
celery task for satisfying credential criterions,
waffle switch to enable the app's functionality
…odel with a credential_type like badge, etc.; make an initial migration
…r LearningContextKey depending on opaque_keys version available.
… handle completion through to emitting SATISFIED_USERCRITERION signal from criterion
…iterion classes

Add a cached self.criterions property to criteria model to get all criterions from all concrete criterion model classes
handle criteria satisfied evalution for user after satisfied criterion signal, through to calling credential award task
…block types can be used as criterion types / to confer credentials (default course, chapter); fix award credentials task;
@bryanlandia
Copy link
Author

FYI @OmarIthawi @melvinsoft this is also going to be needed for Badging.
@grozdanowski this should eventually provide a very flexible way to award credentials of any type based on completion, score, letter grade, participation etc. for activities in the LMS and also could be used in Studio too to award credentials based on actions x block type (like 'published' x 'course') for gamifying learningi to use Studio etc.

Copy link

@OmarIthawi OmarIthawi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I checked it quickly and it looks good, I couldn't check all the logic tbh.

Edit: It's still a draft! Why did I check it? 🤷‍♂️

@OmarIthawi OmarIthawi requested review from OmarIthawi and removed request for OmarIthawi May 18, 2020 11:50
@bryanlandia bryanlandia force-pushed the appsembler/feature/credential-criteria branch from 92b5598 to cc2d256 Compare May 19, 2020 17:13
@bryanlandia
Copy link
Author

appsembler/openedx-completion-aggregator#2 has the new Signal listed to by credential_criteria

@bryanlandia
Copy link
Author

Will probably pull this out into IDA

@thraxil
Copy link

thraxil commented Dec 8, 2020

Is this still being worked on?

@OmarIthawi
Copy link

@bryanlandia I've closed this PR, please feel free to reopen it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants