def _add_alias(self, alias_name, mapping): project_activity = Project.str_to_tuple(mapping) if project_activity is None: raise UsageError("The mapping must be in the format xxxx/yyyy") if self.settings.activity_exists(alias_name): existing_mapping = self.settings.get_aliases()[alias_name] confirm = self.view.overwrite_alias(alias_name, existing_mapping, False) if not confirm: return self.settings.add_alias(alias_name, project_activity[0], project_activity[1]) self.settings.write_config() self.view.alias_added(alias_name, project_activity)
def run(self): # 2 arguments, add a new alias if self.mode == self.MODE_ADD_ALIAS: self._add_alias(self.alias, self.mapping) # 1 argument, display the alias or the project id/activity id tuple elif self.mode == self.MODE_SHOW_MAPPING: mapping = Project.str_to_tuple(self.alias) if mapping is not None: for m in self.settings.search_aliases(mapping): self.view.mapping_detail(m, self.projects_db.get(m[1][0])) else: self.mode = self.MODE_LIST_ALIASES # No argument, display the mappings if self.mode == self.MODE_LIST_ALIASES: for m in self.settings.search_mappings(self.alias): self.view.alias_detail( m, self.projects_db.get(m[1][0]) if m[1] is not None else None )