예제 #1
0
def get_learner_dashboard_activities(user_id):
    """Returns the ids of each of the activities that are present in the various
    sections of the learner dashboard, namely the completed section, the
    incomplete section and the playlist section.

    Args:
        user_id: str. The id of the learner.

    Returns:
        ActivityIdsInLearnerDashboard. The domain object containing the ids of
            all activities in the learner dashboard.
    """
    learner_progress_models = (
        datastore_services.fetch_multiple_entities_by_ids_and_models(
            [
                ('CompletedActivitiesModel', [user_id]),
                ('IncompleteActivitiesModel', [user_id]),
                ('LearnerPlaylistModel', [user_id])
            ]))

    # If completed model is present.
    if learner_progress_models[0][0]:
        activities_completed = _get_completed_activities_from_model(
            learner_progress_models[0][0])
        completed_exploration_ids = activities_completed.exploration_ids
        completed_collection_ids = activities_completed.collection_ids
    else:
        completed_collection_ids = []
        completed_exploration_ids = []

    # If incomplete model is present.
    if learner_progress_models[1][0]:
        incomplete_activities = _get_incomplete_activities_from_model(
            learner_progress_models[1][0])
        incomplete_exploration_ids = incomplete_activities.exploration_ids
        incomplete_collection_ids = incomplete_activities.collection_ids
    else:
        incomplete_exploration_ids = []
        incomplete_collection_ids = []

    # If learner playlist model is present.
    if learner_progress_models[2][0]:
        learner_playlist = (
            learner_playlist_services.get_learner_playlist_from_model(
                learner_progress_models[2][0]))
        exploration_playlist_ids = learner_playlist.exploration_ids
        collection_playlist_ids = learner_playlist.collection_ids
    else:
        exploration_playlist_ids = []
        collection_playlist_ids = []

    activity_ids = learner_progress_domain.ActivityIdsInLearnerDashboard(
        completed_exploration_ids, completed_collection_ids,
        incomplete_exploration_ids, incomplete_collection_ids,
        exploration_playlist_ids, collection_playlist_ids)

    return activity_ids
예제 #2
0
def _remove_activity_ids_from_playlist(user_id, exploration_ids,
                                       collection_ids):
    """Removes the explorations and collections from the playlist of the user.

    Args:
        user_id: str. The id of the user.
        exploration_ids: list(str). The ids of the explorations to be removed.
        collection_ids: list(str). The ids of the collections to be removed.
    """
    learner_playlist_model = user_models.LearnerPlaylistModel.get(user_id,
                                                                  strict=False)

    if learner_playlist_model:
        learner_playlist = (
            learner_playlist_services.get_learner_playlist_from_model(
                learner_playlist_model))

        for exploration_id in exploration_ids:
            learner_playlist.remove_exploration_id(exploration_id)

        for collection_id in collection_ids:
            learner_playlist.remove_collection_id(collection_id)

        learner_playlist_services.save_learner_playlist(learner_playlist)