Skip to content

Commit

Permalink
test!: add loggers
Browse files Browse the repository at this point in the history
  • Loading branch information
Muhammad Faraz Maqsood authored and Muhammad Faraz Maqsood committed Dec 22, 2023
1 parent fcf1978 commit 9bedc08
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 13 deletions.
44 changes: 37 additions & 7 deletions lms/djangoapps/badges/events/course_meta.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,15 @@
Events which have to do with a user doing something with more than one course, such
as enrolling in a certain number, completing a certain number, or completing a specific set of courses.
"""

import logging

from lms.djangoapps.badges.models import BadgeClass, CourseEventBadgesConfiguration
from lms.djangoapps.badges.utils import requires_badges_enabled


log = logging.getLogger(__name__)


def award_badge(config, count, user):
"""
Given one of the configurations for enrollments or completions, award
Expand Down Expand Up @@ -62,18 +65,45 @@ def course_group_check(user, course_key):
"""
Awards a badge if a user has completed every course in a defined set.
"""
log.info("\n\n\n inside course_group_check \n\n\n")
from lms.djangoapps.grades.models import PersistentCourseGrade
config = CourseEventBadgesConfiguration.current().course_group_settings
course_groups = CourseEventBadgesConfiguration.current().course_groups
course_groups = course_groups.strip()
programs = course_groups.split("\r\n")
log.info(f"\n\n\n course_key: {course_key} \n\n\n")
log.info(f"\n\n\n programs: {programs} \n\n\n")
awards = []
for slug, keys in config.items():
if course_key in keys:
for program in programs:
group = program.split(",")
program_slug = group and group[0] or None
courses_in_program = group and len(group) > 1 and group[1:] or None
if course_key in courses_in_program:
log.info(f"\n\n\n program: {program} \n\n\n")
passed_courses = PersistentCourseGrade.objects.filter(
passed_timestamp__isnull=False,
course_id__in=keys,
course_id__in=courses_in_program,
user_id=user.id,
).count()
if passed_courses == len(keys):
awards.append(slug)
log.info(f"\n\n\n passed_courses: {passed_courses} \n\n\n")
if passed_courses == len(courses_in_program):
awards.append(program_slug)
break

# config = CourseEventBadgesConfiguration.current().course_group_settings
# log.info(f"\n\n\n course_key: {course_key} \n\n\n")
# log.info(f"\n\n\n config: {config} \n\n\n")
# awards = []
# for slug, keys in config.items():
# if course_key in keys:
# passed_courses = PersistentCourseGrade.objects.filter(
# passed_timestamp__isnull=False,
# course_id__in=keys,
# ).count()
# log.info(f"\n\n\n passed_courses: {passed_courses} \n\n\n")
# log.info(f"\n\n\n len(keys): {len(keys)} \n\n\n")
# if passed_courses == len(keys):
# awards.append(slug)
log.info(f"\n\n\n awards: {awards} \n\n\n")
for slug in awards:
badge_class = BadgeClass.get_badge_class(
slug=slug, issuing_component='openedx__course', create=False,
Expand Down
14 changes: 8 additions & 6 deletions lms/djangoapps/certificates/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -1242,6 +1242,7 @@ def create_course_badge(sender, user, course_id, **kwargs):
Standard signal hook to create course badges when a certificate has been generated.
"""
course_badge_check(user, course_id)
course_group_check(user, course_id)


@receiver(COURSE_CERT_AWARDED, sender=GeneratedCertificate)
Expand All @@ -1252,12 +1253,13 @@ def create_completion_badge(sender, user, course_key, status, **kwargs): # pyli
completion_check(user)


@receiver(COURSE_GRADE_NOW_PASSED, dispatch_uid="new_passing_learner")
def create_course_group_badge(sender, user, course_id, **kwargs): # pylint: disable=unused-argument
"""
Standard signal hook to create badges when a user has completed a prespecified set of courses.
"""
course_group_check(user, course_id)
# @receiver(COURSE_GRADE_NOW_PASSED, dispatch_uid="new_passing_learner")
# def create_course_group_badge(sender, user, course_id, **kwargs): # pylint: disable=unused-argument
# """
# Standard signal hook to create badges when a user has completed a prespecified set of courses.
# """
# log.info("\n\n\n inside create_course_group_badge signal")
# course_group_check(user, course_id)


class CertificateGenerationCommandConfiguration(ConfigurationModel):
Expand Down

0 comments on commit 9bedc08

Please sign in to comment.