summaryrefslogtreecommitdiff
path: root/virtual_table.py
diff options
context:
space:
mode:
Diffstat (limited to 'virtual_table.py')
-rw-r--r--virtual_table.py138
1 files changed, 85 insertions, 53 deletions
diff --git a/virtual_table.py b/virtual_table.py
index 66774ca..f8c1bd1 100644
--- a/virtual_table.py
+++ b/virtual_table.py
@@ -19,11 +19,14 @@ class JFRVirtualTable:
traveller_files_match = re.compile(
re.escape(tournament_prefix) + '([0-9]{3})\.txt'
)
- # TODO: refaktoryzacja tych wszystkich path.join
+
+ def get_path(relative_path):
+ return path.join(tournament_path, relative_path)
+
self.__traveller_files = [
f for f
in glob.glob(
- path.join(tournament_path, tournament_prefix) + '*.txt'
+ get_path(tournament_prefix + '*.txt')
)
if re.search(traveller_files_match, f)
]
@@ -33,24 +36,16 @@ class JFRVirtualTable:
self.__pair_records_files = [
f for f
in glob.glob(
- path.join(tournament_path, 'H-' + tournament_prefix + '*.html')
+ get_path('H-' + tournament_prefix + '*.html')
)
if re.search(records_files_match, f)
]
- self.__results_file = path.join(
- tournament_path,
- tournament_prefix + 'WYN.txt'
- )
- self.__full_results_file = path.join(
- tournament_path,
- 'W-' + tournament_prefix + '.html'
- )
- self.__pair_records_list_file = path.join(
- tournament_path,
+ self.__results_file = get_path(tournament_prefix + 'WYN.txt')
+ self.__full_results_file = get_path('W-' + tournament_prefix + '.html')
+ self.__pair_records_list_file = get_path(
'H-' + tournament_prefix + '-lista.html'
)
- self.__collected_scores_file = path.join(
- tournament_path,
+ self.__collected_scores_file = get_path(
tournament_prefix + 'zbior.html'
)
@@ -122,21 +117,54 @@ class JFRVirtualTable:
@__fix_file
def __fix_records_list(self, content):
- # TODO: ułożyć ponownie komórki w tabelce
- cells = content.select('td.u')
+ row_cell_count = int(content.table.select('tr td.o')[0]['colspan'])
+ rows = content.select('tr')
+ link_rows = []
+ link_cells = []
+ for row in rows:
+ cells = row.select('td.u')
+ cells_found = False
+ for cell in cells:
+ cell_links = [
+ link for link
+ in cell.select('a.pa')
+ if link['href'].startswith(
+ 'H-'
+ ) and not link['href'].endswith(
+ 'lista.html'
+ )
+ ]
+ if len(cell_links):
+ if int(cell_links[0].contents[0]) in self.__virtual_pairs:
+ cell.extract()
+ else:
+ link_cells.append(cell)
+ cells_found = True
+ if cells_found:
+ link_rows.append(row)
+ cells = map(lambda cell: cell.extract(), link_cells)
+ for row in link_rows:
+ row.extract()
+ while len(cells) >= 20:
+ new_row = content.new_tag('tr')
+ first_cell = content.new_tag('td', **{'class': 'n'})
+ first_cell.string = u'\xa0'
+ new_row.append(first_cell)
+ for cell in cells[0:20]:
+ new_row.append(cell)
+ content.table.append(new_row)
+ del cells[0:20]
+ last_row = content.new_tag('tr')
+ first_cell = content.new_tag('td', **{'class': 'n'})
+ first_cell.string = u'\xa0'
+ last_row.append(first_cell)
for cell in cells:
- cell_links = [
- link for link
- in cell.select('a.pa')
- if link['href'].startswith(
- 'H-'
- ) and not link['href'].endswith(
- 'lista.html'
- )
- ]
- if len(cell_links):
- if int(cell_links[0].contents[0]) in self.__virtual_pairs:
- cell.extract()
+ last_row.append(cell)
+ if len(cells) < 20:
+ last_cell = content.new_tag('td', colspan=20-len(cells))
+ last_cell.string = u'\xa0'
+ last_row.append(last_cell)
+ content.table.append(last_row)
return content
@__fix_file
@@ -162,34 +190,38 @@ class JFRVirtualTable:
rows = [
row for row
in content.select('tr')
- if len(row.select('td')) >= 10
+ if len(row.select('td')) >= 3
]
header_added = False
for row in rows:
cells = row.select('td')
- if int(cells[1].contents[0]) in self.__virtual_pairs:
- if int(cells[2].contents[0]) in self.__virtual_pairs:
- if header_added:
- row.extract()
- else:
- virtual_row = content.new_tag(
- 'tr',
- **{'class': 'virtualTable'}
- )
- virtual_row.append(
- content.new_tag('td', **{'class': 'n'})
- )
- virtual_row_header = content.new_tag(
- 'td',
- colspan=10, **{'class': 'noc'}
- )
- virtual_row_header.string = 'Wirtualny stolik:'
- virtual_row.append(virtual_row_header)
- row.insert_before(virtual_row)
- for cell in cells[1:3]:
- cell.contents = ''
- header_added = True
- # TODO: przesunąć wiersz wirtualnego stolika na dół tabeli
+ if header_added:
+ row_below = row.extract()
+ if len(cells) >= 10:
+ virtual_row.insert_before(row_below)
+ if len(cells) >= 10:
+ if int(cells[1].contents[0]) in self.__virtual_pairs:
+ if int(cells[2].contents[0]) in self.__virtual_pairs:
+ if header_added:
+ row.extract()
+ else:
+ virtual_row = content.new_tag(
+ 'tr',
+ **{'class': 'virtualTable'}
+ )
+ virtual_row.append(
+ content.new_tag('td', **{'class': 'n'})
+ )
+ virtual_row_header = content.new_tag(
+ 'td',
+ colspan=10, **{'class': 'noc'}
+ )
+ virtual_row_header.string = 'Wirtualny stolik:'
+ virtual_row.append(virtual_row_header)
+ row.insert_before(virtual_row)
+ for cell in cells[1:3]:
+ cell.contents = ''
+ header_added = True
return content.table
__traveller_files = []