def _create_trainings(self): self.csv_reader = CSVReader(self.file_name, delimiter=self.delimiter, newline='') lines = self.csv_reader.read_file() if self.keyword_skipper: lines = self.keyword_skipper.skip_rows_by_keywords(lines) self.training_pool = TrainingPoolCrafter(self.title_column_num, self.time_column_num, lines)
class TrainingTimeCalculator(object): def __init__(self, file_name, exclude_file): self.file_name = file_name self.exclude_file = exclude_file self.csv_reader = None self.total_time = tuple() self.delimiter = None self.title_column_num = 0 self.time_column_num = 1 self.keyword_skipper = None self.training_pool = None def _create_trainings(self): self.csv_reader = CSVReader(self.file_name, delimiter=self.delimiter, newline='') lines = self.csv_reader.read_file() if self.keyword_skipper: lines = self.keyword_skipper.skip_rows_by_keywords(lines) self.training_pool = TrainingPoolCrafter(self.title_column_num, self.time_column_num, lines) def _setup_training_pool(self): if not self.training_pool: self._create_trainings() def setup_options(self, delimiter='|', title_column_num=0, time_column_num=0): self.delimiter = delimiter self.title_column_num = title_column_num self.time_column_num = time_column_num def print_report(self): self._setup_training_pool() self.training_pool.print_report() def _filter_trainings(self, trainings=None): training_filter = TrainingsPoolFilter(self.training_pool, self.exclude_file) return training_filter.filter_trainings(trainings) def _interactive_exclusion(self): exclude_question = 'Do you want to exclude any of the trainings?(y/n)' exclude_answers = ('y', 'n') prompt = PromptWrapper(exclude_question, accepted_answers=exclude_answers) exclude_choice = prompt.get_prompt_answer() return exclude_choice == 'y' def exclude(self, exclusions=None): filtered_pool = self._filter_trainings(exclusions) if len(filtered_pool.trainings) != len(self.training_pool.trainings): self.training_pool = filtered_pool def autorun(self): self._setup_training_pool() if self.exclude_file or self._interactive_exclusion(): self.exclude() self.print_report() def get_report(self): return self.training_pool.get_report() def gui_report(self): self._setup_training_pool() if self.exclude_file: self.exclude() return self.get_report()