Skip to content

Credential Criteria Django app - #589

Closed
bryanlandia wants to merge 17 commits into
appsembler/tahoe/developfrom
appsembler/feature/credential-criteria
Closed

Credential Criteria Django app#589
bryanlandia wants to merge 17 commits into
appsembler/tahoe/developfrom
appsembler/feature/credential-criteria

Conversation

@bryanlandia

@bryanlandia bryanlandia commented May 16, 2020

Copy link
Copy Markdown

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
Copy Markdown
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.

@OmarIthawi OmarIthawi left a comment

Copy link
Copy Markdown

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? 🤷‍♂️

Comment thread openedx/core/djangoapps/credential_criteria/migrations/0002_auto_20200515_1356.py Outdated
Comment thread openedx/core/djangoapps/credential_criteria/models.py Outdated
Comment thread openedx/core/djangoapps/credential_criteria/models.py Outdated
Comment thread openedx/core/djangoapps/credential_criteria/models.py Outdated
Comment thread openedx/core/djangoapps/credential_criteria/models.py Outdated
Comment thread openedx/core/djangoapps/credential_criteria/settings/common.py Outdated
@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
Copy Markdown
Author

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

@bryanlandia

Copy link
Copy Markdown
Author

Will probably pull this out into IDA

@thraxil

thraxil commented Dec 8, 2020

Copy link
Copy Markdown

Is this still being worked on?

@OmarIthawi

Copy link
Copy Markdown

@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