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

Add filter to block students to obtain certificate #42

Open
igobranco opened this issue Feb 20, 2024 · 0 comments
Open

Add filter to block students to obtain certificate #42

igobranco opened this issue Feb 20, 2024 · 0 comments

Comments

@igobranco
Copy link
Member

From the internal ticket: https://plataforma-nau.atlassian.net/browse/FAN-107


Add a new filter that allows to block the students to obtain course certificate if the proctoring services are enabled on the course. This is needed for the course team to be able to check if any irregular activities were reported by the proctoring system.

Add a flag on STUDIO > Advanced settings > Other course settings

If the flag is true, then execute more code. Alternatively, if the key to the service is set in other course settings and the course is instructor paced activate this feature.

I think we should include the openedx_filters.learning.filters.CertificateCreationRequested filter available since Open edX Release Olive, on the NAU Open edX Lilac branch.

https://github.com/openedx/openedx-filters/blob/f61c59988f9a5d50dcb4cbcfe1d122ab05eb97f9/openedx_filters/learning/filters.py#L122

The custom code would be implemented by NAU. Nevertheless we need that eduNEXT send us a code block to be called by this code, that allow us to find all course activities in a course for an user of a specific type (SMOWL xblock).

Arguments:

  • course ( course_id ? )
  • user ( the user that the certificate would be generated)
  • xblock type

Output:

  • list of activities (ids)

Then for each list of activities for the course and user, we would call the SMOWL API and verify if the user is ok on all the activities. If not raise an error and disallow the certificate emission. There should also be a way to communicate this with the user, via a message on the progress tab.

This would be NAU responsibility to implement.


from opaque_keys.edx.keys import CourseKey
from xmodule.modulestore.django import modulestore
from django.contrib.auth import get_user_model
from lms.djangoapps.course_blocks.api import get_course_blocks
User = get_user_model()
def get_activities_ids(user_id, course_id, xblock_type):
    """function that returns the identifiers of the 
    blocks corresponding to the type of xblock consulted.
    Arguments:
    user_id -- User's integer identifier
    course_id -- String representation of the course to be consulted
    xblock_type -- String representation of the xblock to be consulted
    Returns:
        xblock_keys - A list of block_id corresponding to the xblock_type
    """
    xblock_keys =[]
    user = User.objects.get(id=user_id)
    course_key = CourseKey.from_string(course_id)
    course_usage_key = modulestore().make_course_usage_key(course_key)
    course_blocks = get_course_blocks(user, course_usage_key)
    block_keys = course_blocks.get_block_keys()
    for block_key in block_keys:
        if xblock_type in str(block_key):
            xblock_keys.append(block_key)
    return xblock_keys
# Example data
course_id = 'course-v1:org+id+run'
user_id = 4
xblock_type = 'scorm'
scorms = get_activities_ids(user_id, course_id, xblock_type)
print(scorms)
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

No branches or pull requests

1 participant