| Index: telemetry/telemetry/story/story_set.py
|
| diff --git a/telemetry/telemetry/story/story_set.py b/telemetry/telemetry/story/story_set.py
|
| index 667cbd01ebb7b9b3114da16ae16933335b97f9ef..757c6d0abea7182a0857803893d7465f14448c9a 100644
|
| --- a/telemetry/telemetry/story/story_set.py
|
| +++ b/telemetry/telemetry/story/story_set.py
|
| @@ -31,7 +31,8 @@ class StorySet(object):
|
| containing hash files for non-wpr archive data stored in cloud
|
| storage.
|
| """
|
| - self.stories = []
|
| + self._stories = []
|
| + self._story_names_and_grouping_keys = set()
|
| self._archive_data_file = archive_data_file
|
| self._wpr_archive_info = None
|
| archive_info.AssertValidCloudStorageBucket(cloud_storage_bucket)
|
| @@ -96,16 +97,31 @@ class StorySet(object):
|
| os.path.join(self.base_dir, self.archive_data_file), self.bucket)
|
| return self._wpr_archive_info
|
|
|
| + @property
|
| + def stories(self):
|
| + return self._stories
|
| +
|
| def AddStory(self, story):
|
| assert isinstance(story, story_module.Story)
|
| - self.stories.append(story)
|
| + assert self._IsUnique(story), ('Tried to add story with duplicate display '
|
| + 'name %s. Story display names should be '
|
| + 'unique.' % story.display_name)
|
| + self._stories.append(story)
|
| + self._story_names_and_grouping_keys.add(
|
| + story.display_name_and_grouping_key_tuple)
|
| +
|
| + def _IsUnique(self, story):
|
| + return (story.display_name_and_grouping_key_tuple not in
|
| + self._story_names_and_grouping_keys)
|
|
|
| def RemoveStory(self, story):
|
| """Removes a Story.
|
|
|
| Allows the stories to be filtered.
|
| """
|
| - self.stories.remove(story)
|
| + self._stories.remove(story)
|
| + self._story_names_and_grouping_keys.remove(
|
| + story.display_name_and_grouping_key_tuple)
|
|
|
| @classmethod
|
| def Name(cls):
|
| @@ -152,4 +168,4 @@ class StorySet(object):
|
| return self.stories[key]
|
|
|
| def __setitem__(self, key, value):
|
| - self.stories[key] = value
|
| + self._stories[key] = value
|
|
|