summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoremkael <emkael@tlen.pl>2018-02-20 12:00:27 +0100
committeremkael <emkael@tlen.pl>2018-02-20 12:00:27 +0100
commitb62dfa544bd1212dd84512043abd129e59240792 (patch)
tree8ce87624c08f464d5a2045461d192f1fac9baad1
parentf5c15f61592454e75aec384592f5d0c7f9ff1b07 (diff)
Database configuration is no longer mandatory, emitting warning if it's not provided
-rw-r--r--jfr_playoff/data.py53
-rw-r--r--jfr_playoff/db.py1
2 files changed, 31 insertions, 23 deletions
diff --git a/jfr_playoff/data.py b/jfr_playoff/data.py
index abb73d3..81f40d2 100644
--- a/jfr_playoff/data.py
+++ b/jfr_playoff/data.py
@@ -13,7 +13,9 @@ SWISS_TIE_WARNING = 'WARNING: tie detected in swiss %s.' + \
class PlayoffData(object):
def __init__(self, settings):
- self.database = PlayoffDB(settings.get('database'))
+ self.database = PlayoffDB(settings.get('database')) if settings.has_section('database') else None
+ if self.database is None:
+ print PlayoffDB.DATABASE_NOT_CONFIGURED_WARNING
self.team_settings = settings.get('teams')
self.phases = settings.get('phases')
self.swiss = []
@@ -88,36 +90,41 @@ class PlayoffData(object):
def fill_swiss_leaderboard(self, swiss, teams):
teams = [team[0] for team in teams]
+ if self.database is None:
+ return
for event in swiss:
swiss_finished = self.database.fetch(
event['database'], p_sql.SWISS_ENDED, {})
- if swiss_finished[0] > 0:
- swiss_position = (
- event['swiss_position']
- if 'swiss_position' in event
- else 1
- )
- position_limit = (
- event['position_to']
- if 'position_to' in event
- else 9999
- )
- place = 1
- swiss_results = self.get_swiss_results(
- event['database'], teams)
- for team in swiss_results:
- if place >= swiss_position:
- target_position = event['position'] \
+ if len(swiss_finished) > 0:
+ if swiss_finished[0] > 0:
+ swiss_position = (
+ event['swiss_position']
+ if 'swiss_position' in event
+ else 1
+ )
+ position_limit = (
+ event['position_to']
+ if 'position_to' in event
+ else 9999
+ )
+ place = 1
+ swiss_results = self.get_swiss_results(
+ event['database'], teams)
+ for team in swiss_results:
+ if place >= swiss_position:
+ target_position = event['position'] \
+ place - swiss_position
- if target_position <= min(
- position_limit, len(self.leaderboard)):
- self.leaderboard[
- target_position - 1] = team[0]
- place += 1
+ if target_position <= min(
+ position_limit, len(self.leaderboard)):
+ self.leaderboard[
+ target_position - 1] = team[0]
+ place += 1
def get_swiss_results(self, swiss, ties=None):
if ties is None:
ties = []
+ if self.database is None:
+ return []
swiss_teams = self.database.fetch_all(
swiss, p_sql.SWISS_RESULTS, {})
swiss_results = sorted(
diff --git a/jfr_playoff/db.py b/jfr_playoff/db.py
index c96c95c..6825fd2 100644
--- a/jfr_playoff/db.py
+++ b/jfr_playoff/db.py
@@ -6,6 +6,7 @@ import mysql.connector
class PlayoffDB(object):
db_cursor = None
+ DATABASE_NOT_CONFIGURED_WARNING = 'WARNING: database not configured'
def __init__(self, settings):
reload(sys)