def publish_masters_track(sender, instance, **kwargs): # pylint: disable=unused-argument """ We should only publish the Masters track of the seat in the course_run, if the course_run is part of a Program of Masters type. Publish means we will call the commerce api on LMS to make sure LMS course_run object have the masters enrollment_mode created """ seat = instance if seat.type != Seat.MASTERS: logger.debug('Not going to publish non masters seats') return if not masters_course_mode_enabled(): logger.debug('Masters course mode waffle flag is not enabled') return related_masters = get_related_masters_program(seat.course_run) if related_masters: partner = related_masters.partner if not partner.lms_api_client: logger.info( 'LMS api client is not initiated. Cannot publish [%s] track for [%s] program', seat.type, related_masters.title) return if not partner.lms_coursemode_api_url: logger.info( 'No lms coursemode api url configured. Masters seat for program [%s] not published', related_masters.title) return _create_masters_track_on_lms_if_necessary(seat, partner)
def add_masters_track_on_course(sender, instance, **kwargs): # pylint: disable=unused-argument """ When this waffle flag is enabled we save a "masters" seat type into the included course_runs of the related course """ if masters_course_mode_enabled(): program = instance.curriculum.program if not is_program_masters(program): logger.debug( 'This is a course related only to non-masters program. No need to create Masters seat' ) return us_currency = Currency.objects.get(code='USD') for course_run in instance.course_runs: Seat.objects.update_or_create( course_run=course_run, type=Seat.MASTERS, currency=us_currency, )
def test_masters_course_mode_enabled_true(self): self.assertTrue(masters_course_mode_enabled())
def test_masters_course_mode_enabled_false(self): self.assertFalse(masters_course_mode_enabled())