From 6f1a2ed531068cef22c3097e7b72cbc685de571a Mon Sep 17 00:00:00 2001 From: cewing Date: Tue, 6 Jan 2015 10:42:17 -0800 Subject: [PATCH] MIT: CCX. Fix issues identified in code review Remove over-cautious assertion and allow calling errors to be calling errors fix problems in auto_enroll method ensure that the active poc is wiped out if the user has no poc membership --- lms/djangoapps/pocs/models.py | 19 +++++++++++++------ lms/djangoapps/pocs/overrides.py | 4 +++- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/lms/djangoapps/pocs/models.py b/lms/djangoapps/pocs/models.py index 19ef31e4eb..1129d2f1cd 100644 --- a/lms/djangoapps/pocs/models.py +++ b/lms/djangoapps/pocs/models.py @@ -23,18 +23,25 @@ class PocMembership(models.Model): active = models.BooleanField(default=False) @classmethod - def auto_enroll(cls, student=None, future_membership=None): - assert student is not None and future_membership is not None + def auto_enroll(cls, student, future_membership): + """convert future_membership to an active membership + """ + if not future_membership.auto_enroll: + msg = "auto enrollment not allowed for {}" + raise ValueError(msg.format(future_membership)) membership = cls( poc=future_membership.poc, student=student, active=True ) try: - CourseEnrollment.enroll(student, future_membership.poc.course_id) + CourseEnrollment.enroll( + student, future_membership.poc.course_id, check_access=True + ) except AlreadyEnrolledError: + # if the user is already enrolled in the course, great! pass - else: - membership.save() - future_membership.delete() + + membership.save() + future_membership.delete() class PocFutureMembership(models.Model): diff --git a/lms/djangoapps/pocs/overrides.py b/lms/djangoapps/pocs/overrides.py index bc2506165d..f93713dc7f 100644 --- a/lms/djangoapps/pocs/overrides.py +++ b/lms/djangoapps/pocs/overrides.py @@ -147,7 +147,9 @@ class PocMiddleware(object): ) _POC_CONTEXT.poc = membership.poc except PocMembership.DoesNotExist: - pass + # if there is no membership, be sure to unset the active poc + _POC_CONTEXT.poc = None + request.session.pop(ACTIVE_POC_KEY) def process_response(self, request, response): """