Пример #1
0
    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')
Пример #2
0
 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')
Пример #3
0
    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)
Пример #4
0
    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')
Пример #5
0
    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)
Пример #6
0
    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)
Пример #7
0
 def test_invalid_badge(self):
     settings.BADGE_AWARDING_METHOD = "invalid method"
     result = courses_completed(0)
     self.assertFalse(result)
Пример #8
0
 def test_badges_not_loaded(self):
     result = courses_completed(0)
     self.assertFalse(result)