def handle(self, *args, **options):
        help = "Command to creaete or update social engagement entries"
        option_list = BaseCommand.option_list + (
            make_option(
                "-c",
                "--course_ids",
                dest="course_ids",
                help="List of courses for which to generate social engagement",
                metavar="first/course/id,second/course/id"
            ),
            make_option(
                "-u",
                "--user_ids",
                dest="user_ids",
                help="List of users for which to generate social engagement",
                metavar="1234,2468,3579"
            ),
        )

        course_ids = options.get('course_ids')
        user_ids = options.get('user_ids')

        if course_ids:
            # over a few specific courses?
            for course_id in course_ids:
                if user_ids:
                    # over a few specific users in those courses?
                    for user_id in user_ids:
                        update_user_engagement_score(course_id, user_id, compute_if_closed_course=True)
                else:
                    update_course_engagement_scores(course_id, compute_if_closed_course=True)
        else:
            print 'Updating social engagement scores in all courses...'
            update_all_courses_engagement_scores(compute_if_closed_course=True)
示例#2
0
    def test_calc_course(self):
        """
        Verifies that we can calculate the whole course enrollments
        """

        with patch('social_engagement.engagement._get_user_social_stats') as mock_func:
            mock_func.return_value = {
                'num_threads': 1,
                'num_comments': 1,
                'num_replies': 1,
                'num_upvotes': 1,
                'num_thread_followers': 1,
                'num_comments_generated': 1,
            }

            # update whole course and re-calc
            update_course_engagement_scores(self.course.id)

        leaderboard = StudentSocialEngagementScore.generate_leaderboard(self.course.id)

        self.assertEqual(len(leaderboard), 2)
    def test_calc_course(self):
        """
        Verifies that we can calculate the whole course enrollments
        """

        with patch('social_engagement.engagement._get_user_social_stats'
                   ) as mock_func:
            mock_func.return_value = {
                'num_threads': 1,
                'num_comments': 1,
                'num_replies': 1,
                'num_upvotes': 1,
                'num_thread_followers': 1,
                'num_comments_generated': 1,
            }

            # update whole course and re-calc
            update_course_engagement_scores(self.course.id)

        course_avg, enrollment_count, leaderboard = StudentSocialEngagementScore.generate_leaderboard(
            self.course.id)

        self.assertEqual(len(leaderboard), 2)