From 904f476b1cb17f83a369e1b03440b00809535fc1 Mon Sep 17 00:00:00 2001 From: emkael Date: Tue, 1 Aug 2017 02:35:02 +0200 Subject: Playoff phase is now also stored as DTO, arbitrary setting reads factored out of content generator --- jfr_playoff/data.py | 9 ++++++--- jfr_playoff/dto.py | 7 ++++++- jfr_playoff/generator.py | 14 +++++++------- 3 files changed, 19 insertions(+), 11 deletions(-) diff --git a/jfr_playoff/data.py b/jfr_playoff/data.py index 6c3f0ed..2a965d1 100644 --- a/jfr_playoff/data.py +++ b/jfr_playoff/data.py @@ -19,15 +19,18 @@ class PlayoffData(object): phase_count = len(phase['matches']) if 'dummies' in phase: phase_count += len(phase['dummies']) - phase_grid = [None] * phase_count + phase_object = Phase() + phase_object.title = phase['title'] + phase_object.link = phase['link'] + phase_object.matches = [None] * phase_count phase_pos = 0 for match in phase['matches']: if 'dummies' in phase: while phase_pos in phase['dummies']: phase_pos += 1 - phase_grid[phase_pos] = match['id'] + phase_object.matches[phase_pos] = match['id'] phase_pos += 1 - grid.append(phase_grid) + grid.append(phase_object) return grid def fill_match_info(self): diff --git a/jfr_playoff/dto.py b/jfr_playoff/dto.py index d34b01d..9a72a12 100644 --- a/jfr_playoff/dto.py +++ b/jfr_playoff/dto.py @@ -11,4 +11,9 @@ class Match(object): winner_matches = None loser_matches = None -__all__ = ['Team', 'Match'] +class Phase(object): + title = None + link = None + matches = [] + +__all__ = ['Team', 'Match', 'Phase'] diff --git a/jfr_playoff/generator.py b/jfr_playoff/generator.py index 80405cd..81ca6c9 100644 --- a/jfr_playoff/generator.py +++ b/jfr_playoff/generator.py @@ -55,21 +55,21 @@ class PlayoffGenerator(object): ) - self.page['margin'] grid_boxes = '' col_no = 0 - for column in grid: + for phase in grid: grid_x = col_no * (self.page['width'] + self.page['margin']) grid_header = p_temp.MATCH_GRID_PHASE_RUNNING if len([ - match for match in column if match is not None and matches[match].running > 0 + match for match in phase.matches if match is not None and matches[match].running > 0 ]) > 0 else p_temp.MATCH_GRID_PHASE grid_boxes += grid_header % ( - self.settings.get('phases', col_no, 'link'), + phase.link, self.page['width'], grid_x, - self.settings.get('phases', col_no, 'title') + phase.title ) row_no = 0 - column_height = grid_height / len(column) - for match in column: - grid_y = int(row_no * column_height + 0.5 * (column_height - self.page['height'])) + match_height = grid_height / len(phase.matches) + for match in phase.matches: + grid_y = int(row_no * match_height + 0.5 * (match_height - self.page['height'])) if match is not None: grid_boxes += p_temp.MATCH_BOX % ( grid_x, grid_y, -- cgit v1.2.3