Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 66d687d9f0 | |||
| 1d69d9fe8a | |||
| 6f11554c18 | |||
| 03fed1e1e4 | |||
| be5ac238bc | |||
| 5015a4e4e1 | |||
| 90f82e677e |
@@ -1,6 +1,6 @@
|
||||
[Application]
|
||||
name=Solo Auswertung
|
||||
version=0.9.2
|
||||
version=0.9.6
|
||||
# How to launch the app - this calls the 'main' function from the 'myapp' package:
|
||||
entry_point=main:main
|
||||
# icon=myapp.ico
|
||||
|
||||
@@ -23,7 +23,8 @@ def main():
|
||||
solo_turnier.flask.startFlask(
|
||||
batchWorker,
|
||||
debug=cli.getLogLevel() > 0,
|
||||
port=cli.getPort()
|
||||
port=cli.getPort(),
|
||||
showOnlyFinalists=not cli.showAllParticipants()
|
||||
)
|
||||
else:
|
||||
combinedData = batchWorker.run(
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
import flask
|
||||
import solo_turnier
|
||||
import logging
|
||||
|
||||
_l = logging.getLogger(__name__)
|
||||
|
||||
def startFlask(
|
||||
batchWorker: solo_turnier.batch.BatchWorker,
|
||||
@@ -12,8 +15,9 @@ def startFlask(
|
||||
@app.route('/')
|
||||
def index():
|
||||
combinedData = batchWorker.run(False)
|
||||
_l.debug('Show only finalists %s', showOnlyFinalists)
|
||||
|
||||
return flask.render_template('index.html', data=combinedData)
|
||||
return flask.render_template('index.html', data=combinedData, onlyFinalists=showOnlyFinalists)
|
||||
|
||||
@app.get('/custom.css')
|
||||
def css():
|
||||
|
||||
@@ -8,6 +8,10 @@ from .types import HtmlPreviewImport as HtmlImport, HtmlResultImport
|
||||
from .group import GroupParser
|
||||
from .competition_class import CompetitionClassParser
|
||||
|
||||
class IncompleteRoundException(Exception):
|
||||
def __init__(self, *args):
|
||||
super(IncompleteRoundException, self).__init__(*args)
|
||||
|
||||
class HtmlParser:
|
||||
|
||||
def __init__(self, text: str, fileName: str = None):
|
||||
@@ -73,7 +77,8 @@ class HtmlParser:
|
||||
def __parseFirstTable(table):
|
||||
roundName = table.tr.td.contents[0]
|
||||
if roundName != 'Endrunde':
|
||||
raise Exception('Could not parse HTML file')
|
||||
self.l.warning('Found table with round name %s.', roundName)
|
||||
raise IncompleteRoundException('Could not parse HTML file')
|
||||
|
||||
__parseRows(table.find_all('tr')[2:], True)
|
||||
|
||||
@@ -82,10 +87,14 @@ class HtmlParser:
|
||||
__parseRows(table.find_all('tr'), False)
|
||||
|
||||
tables = self.soup.find('div', class_='extract').find_all('table')
|
||||
if len(tables) > 0:
|
||||
__parseFirstTable(tables[0])
|
||||
|
||||
try:
|
||||
if len(tables) > 0:
|
||||
__parseFirstTable(tables[0])
|
||||
|
||||
__parseRemainingTables(tables[1:])
|
||||
__parseRemainingTables(tables[1:])
|
||||
except IncompleteRoundException:
|
||||
pass
|
||||
|
||||
# title = self.soup.find('div', class_='eventhead').table.tr.td.contents[0]
|
||||
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
{% if not participant.finalist %}
|
||||
{% set rowCls = "no-finalist" %}
|
||||
{% endif %}
|
||||
{% if participant.finalist or not onlyFinalists %}
|
||||
<tr class="{{ rowCls }}">
|
||||
<td>{{ participant.name }} ({{ participant.id }})</td>
|
||||
{% for dance in data.results[group].dances %}
|
||||
@@ -47,6 +48,7 @@
|
||||
{% endblock %}
|
||||
{% endfor %}
|
||||
</tr>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
{% endfor %}
|
||||
</table>
|
||||
|
||||
@@ -177,10 +177,14 @@ class ResultExtractor:
|
||||
for filePair in files:
|
||||
with open(filePair[0], 'r') as fp:
|
||||
text = fp.read()
|
||||
with open(filePair[1], 'r') as fp:
|
||||
textTab = fp.read()
|
||||
parser = html_parser.HtmlParser(text, filePair[0])
|
||||
parserTab = html_parser.HtmlParser(textTab, filePair[1])
|
||||
|
||||
if filePair[1] is None:
|
||||
parserTab = None
|
||||
else:
|
||||
with open(filePair[1], 'r') as fp:
|
||||
textTab = fp.read()
|
||||
parserTab = html_parser.HtmlParser(textTab, filePair[1])
|
||||
|
||||
try:
|
||||
data = parser.guessDataFromHtmlTitle()
|
||||
@@ -247,8 +251,11 @@ class ResultExtractor:
|
||||
self.l.debug('Extracting data from file %s', fileName)
|
||||
self._analyzeSingleParser(parsers[fileNameTuple][0], ret)
|
||||
|
||||
self.l.debug('Fetching individual result of combined competitions in %s', fileName)
|
||||
self._analyzeIndividualResults(parsers[fileNameTuple][1], ret)
|
||||
if parsers[fileNameTuple][1] is None:
|
||||
self.l.info('Skipping extraction of individual result as class is not yet finished.')
|
||||
else:
|
||||
self.l.debug('Fetching individual result of combined competitions in %s', fileName)
|
||||
self._analyzeIndividualResults(parsers[fileNameTuple][1], ret)
|
||||
|
||||
return ret
|
||||
|
||||
|
||||
Reference in New Issue
Block a user