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
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)