def handle(self, *args, **options): if options['hours']: hours = options['hours'] else: hours = 0 # check if cron already running prop, created = SettingProperties.objects.get_or_create(key='oppia_cron_lock', int_value=1) if not created: self.stdout.write("Oppia cron is already running") return now = time.time() path = os.path.join(settings.COURSE_UPLOAD_DIR, "temp") if os.path.exists(path): self.stdout.write('Cleaning up: ' + path) for f in os.listdir(path): f = os.path.join(path, f) if os.stat(f).st_mtime < now - 3600 * 6: self.stdout.write("deleting: {file}".format(file=f)) if os.path.isfile(f): os.remove(f) else: self.stdout.write('{path} does not exist. Don\'t need to clean it'.format(path=path)) from oppia.awards import courses_completed courses_completed(int(hours)) # create and new media images call_command('generate_media_images') SettingProperties.set_string('oppia_cron_last_run', timezone.now()) SettingProperties.delete_key('oppia_cron_lock')
def handle(self, *args, **options): if options['hours']: hours=options['hours'] else: hours=0 #check if cron already running prop, created = SettingProperties.objects.get_or_create(key='oppia_cron_lock',int_value=1) if not created: print("Oppia cron is already running") return now = time.time() path = os.path.join(settings.COURSE_UPLOAD_DIR, "temp") if os.path.exists(path): print('Cleaning up: ' + path) for f in os.listdir(path): f = os.path.join(path, f) if os.stat(f).st_mtime < now - 3600 * 6: print("deleting: {file}".format(file=f)) if os.path.isfile(f): os.remove(f) else: print('{path} does not exist. Don\'t need to clean it'.format(path=path)) from oppia.awards import courses_completed courses_completed(int(hours)) # create and new media images call_command('generate_media_images') SettingProperties.set_string('oppia_cron_last_run', timezone.now()) SettingProperties.delete_key('oppia_cron_lock')
def assert_points_and_awards(self, plus_awards=0, plus_points=0, hours=0): points_count_start = Points.objects.all().count() award_count_start = Award.objects.all().count() courses_completed(hours) award_count_end = Award.objects.all().count() points_count_end = Points.objects.all().count() self.assertEqual(award_count_start+plus_awards, award_count_end) self.assertEqual(points_count_start+plus_points, points_count_end)
def handle(self, *args, **options): if options['hours']: hours = options['hours'] else: hours = 0 # check if cron already running prop, created = SettingProperties.objects \ .get_or_create(key='oppia_cron_lock', int_value=1) if not created: self.stdout.write("Oppia cron is already running") return now = time.time() path = os.path.join(settings.COURSE_UPLOAD_DIR, "temp") if os.path.exists(path): self.stdout.write('Cleaning up: ' + path) for f in os.listdir(path): f = os.path.join(path, f) if os.stat(f).st_mtime < now - 3600 * 6: self.stdout.write("deleting: {file}".format(file=f)) if os.path.isfile(f): os.remove(f) else: self.stdout \ .write('{path} does not exist. Don\'t need to clean it' .format(path=path)) from oppia.awards import courses_completed courses_completed(int(hours)) # generate pdf certificates call_command('generate_certificates') # clear any expired sessions call_command('clearsessions') # add any missing api keys for Tastypie call_command('backfill_api_keys') SettingProperties.set_string('oppia_cron_last_run', timezone.now()) SettingProperties.delete_key('oppia_cron_lock') # server registration # deliberately left until after removing cron lock in case issue with # connecting to implementation server call_command('update_server_registration')
def test_final_quiz_passed(self): settings.BADGE_AWARDING_METHOD = settings.BADGE_AWARD_METHOD_FINAL_QUIZ # Load the test data tracker_file = self.file_root + 'tracker_final_quiz_passed.json' self.client.force_login(self.admin_user) tracker_count_start = Tracker.objects.all().count() with open(tracker_file, 'rb') as file: self.client.post(self.url, {'activity_log_file': file}) tracker_count_end = Tracker.objects.all().count() self.assertEqual(tracker_count_start + 1, tracker_count_end) award_count_start = Award.objects.all().count() courses_completed(0) award_count_end = Award.objects.all().count() self.assertEqual(award_count_start + 1, award_count_end)
def test_all_acts_some_attempted(self): settings.BADGE_AWARDING_METHOD = \ settings.BADGE_AWARD_METHOD_ALL_ACTIVITIES # Load the test data tracker_file = self.file_root + 'tracker_all_acts_some_attempted.json' self.client.force_login(self.admin_user) tracker_count_start = Tracker.objects.all().count() with open(tracker_file, 'rb') as file: self.client.post(self.url, {'activity_log_file': file}) tracker_count_end = Tracker.objects.all().count() self.assertEqual(tracker_count_start + 5, tracker_count_end) award_count_start = Award.objects.all().count() courses_completed(0) award_count_end = Award.objects.all().count() self.assertEqual(award_count_start, award_count_end)
def test_invalid_badge(self): settings.BADGE_AWARDING_METHOD = "invalid method" result = courses_completed(0) self.assertFalse(result)
def test_badges_not_loaded(self): result = courses_completed(0) self.assertFalse(result)