From bd5fd6a6596dd7625019c6c0f0ff043597cda837 Mon Sep 17 00:00:00 2001 From: emkael Date: Mon, 31 Jul 2017 20:45:13 +0200 Subject: Renaming module to avoid ambiguity --- jfr_playoff/db.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 jfr_playoff/db.py (limited to 'jfr_playoff/db.py') diff --git a/jfr_playoff/db.py b/jfr_playoff/db.py new file mode 100644 index 0000000..aa0c2e2 --- /dev/null +++ b/jfr_playoff/db.py @@ -0,0 +1,19 @@ +import mysql.connector + +class PlayoffDB(object): + + db_cursor = None + + def __init__(self, settings): + self.database = mysql.connector.connect( + user=settings['user'], + password=settings['pass'], + host=settings['host'], + port=settings['port'] + ) + self.db_cursor = self.database.cursor(buffered=True) + + def fetch(self, db, sql, params): + self.db_cursor.execute(sql.replace('#db#', db), params) + row = self.db_cursor.fetchone() + return row -- cgit v1.2.3 From 7f76c56ab258c8978c39507eb997852e2280449d Mon Sep 17 00:00:00 2001 From: emkael Date: Tue, 1 Aug 2017 02:50:24 +0200 Subject: Code style improved --- jfr_playoff/data.py | 51 +++++++++++++++++++++++++++++++--------------- jfr_playoff/db.py | 7 +++++-- jfr_playoff/filemanager.py | 4 +++- jfr_playoff/generator.py | 48 ++++++++++++++++++++++++++++++++----------- jfr_playoff/settings.py | 7 +++++-- 5 files changed, 84 insertions(+), 33 deletions(-) (limited to 'jfr_playoff/db.py') diff --git a/jfr_playoff/data.py b/jfr_playoff/data.py index 2a965d1..3952c64 100644 --- a/jfr_playoff/data.py +++ b/jfr_playoff/data.py @@ -1,8 +1,8 @@ from urlparse import urljoin import mysql -from db import PlayoffDB -import sql as p_sql -from dto import * +from jfr_playoff.db import PlayoffDB +from jfr_playoff.dto import Team, Match, Phase +import jfr_playoff.sql as p_sql class PlayoffData(object): def __init__(self, settings): @@ -38,8 +38,12 @@ class PlayoffData(object): for phase in self.phases: for match in phase['matches']: self.match_info[match['id']] = self.get_match_info(match) - self.match_info[match['id']].link = phase['link'] if self.match_info[match['id']].link is None else urljoin( - phase['link'], self.match_info[match['id']].link) + if self.match_info[match['id']].link is None: + self.match_info[match['id']].link = phase['link'] + else: + self.match_info[match['id']].link = urljoin( + phase['link'], self.match_info[match['id']].link + ) return self.match_info def get_match_link(self, match): @@ -54,7 +58,10 @@ class PlayoffData(object): def get_db_match_teams(self, match): teams = [Team(), Team()] - row = self.database.fetch(match['database'], p_sql.MATCH_RESULTS, (match['table'], match['round'])) + row = self.database.fetch( + match['database'], p_sql.MATCH_RESULTS, + (match['table'], match['round']) + ) teams[0].name = row[0] teams[1].name = row[1] teams[0].score = row[3] + row[5] @@ -89,12 +96,12 @@ class PlayoffData(object): self.teams[place-1][0] for place in match['teams'][i]['place'] ] - teams[i].name = '
'.join([ - team if team is not None else '??' - for team in match_teams] - ) if len([ - team for team in match_teams if team is not None - ]) > 0 else '' + known_teams = [team for team in match_teams if team is not None] + if len(known_teams) > 0: + teams[i].name = '
'.join([ + team if team is not None else '??' for team in match_teams]) + else: + teams[i].name = '' return teams @@ -115,14 +122,26 @@ class PlayoffData(object): except (mysql.connector.Error, TypeError, IndexError): info.teams = self.get_config_match_teams(match) try: - towels = self.database.fetch(match['database'], p_sql.TOWEL_COUNT, (match['table'], match['round'])) - row = [0 if r is None else r for r in self.database.fetch(match['database'], p_sql.BOARD_COUNT, (match['table'], match['round']))] + towels = self.database.fetch( + match['database'], p_sql.TOWEL_COUNT, + (match['table'], match['round']) + ) + row = [0 if r is None + else r for r in + self.database.fetch( + match['database'], p_sql.BOARD_COUNT, + (match['table'], match['round']) + )] if row[1] > 0: info.running = int(row[1]) if row[1] >= row[0] - towels[0]: info.running = 0 - info.winner = info.teams[0].name if info.teams[0].score > info.teams[1].score else info.teams[1].name - info.loser = info.teams[1].name if info.teams[0].score > info.teams[1].score else info.teams[0].name + if info.teams[0].score > info.teams[1].score: + info.winner = info.teams[0].name + info.loser = info.teams[1].name + else: + info.loser = info.teams[0].name + info.winner = info.teams[1].name except (mysql.connector.Error, TypeError, KeyError): pass return info diff --git a/jfr_playoff/db.py b/jfr_playoff/db.py index aa0c2e2..8457dd4 100644 --- a/jfr_playoff/db.py +++ b/jfr_playoff/db.py @@ -13,7 +13,10 @@ class PlayoffDB(object): ) self.db_cursor = self.database.cursor(buffered=True) - def fetch(self, db, sql, params): - self.db_cursor.execute(sql.replace('#db#', db), params) + def get_cursor(self): + return self.db_cursor + + def fetch(self, db_name, sql, params): + self.db_cursor.execute(sql.replace('#db#', db_name), params) row = self.db_cursor.fetchone() return row diff --git a/jfr_playoff/filemanager.py b/jfr_playoff/filemanager.py index 8dc8b85..06374dd 100644 --- a/jfr_playoff/filemanager.py +++ b/jfr_playoff/filemanager.py @@ -1,4 +1,6 @@ -import os, shutil, socket +import os +import shutil +import socket import __main__ class PlayoffFileManager(object): diff --git a/jfr_playoff/generator.py b/jfr_playoff/generator.py index 81ca6c9..7237c9f 100644 --- a/jfr_playoff/generator.py +++ b/jfr_playoff/generator.py @@ -1,6 +1,6 @@ from datetime import datetime -import template as p_temp -from data import PlayoffData +import jfr_playoff.template as p_temp +from jfr_playoff.data import PlayoffData class PlayoffGenerator(object): def __init__(self, settings): @@ -14,14 +14,22 @@ class PlayoffGenerator(object): def generate_content(self): return p_temp.PAGE % ( p_temp.PAGE_HEAD % ( - p_temp.PAGE_HEAD_REFRESH % (self.page['refresh']) if self.page['refresh'] > 0 else '', + p_temp.PAGE_HEAD_REFRESH % ( + self.page['refresh'] + ) if self.page['refresh'] > 0 else '', self.page['title'] ), p_temp.PAGE_BODY % ( self.page['logoh'], - self.get_match_grid(self.data.get_dimensions(), self.data.generate_phases(), self.data.fill_match_info()), + self.get_match_grid( + self.data.get_dimensions(), + self.data.generate_phases(), + self.data.fill_match_info() + ), self.get_leaderboard_table(self.data.fill_leaderboard()), - p_temp.PAGE_BODY_FOOTER.decode('utf8') % (datetime.now().strftime('%Y-%m-%d o %H:%M')) + p_temp.PAGE_BODY_FOOTER.decode('utf8') % ( + datetime.now().strftime('%Y-%m-%d o %H:%M') + ) ) ) @@ -29,11 +37,16 @@ class PlayoffGenerator(object): rows = '' for team in match.teams: rows += p_temp.MATCH_TEAM_ROW % ( - ' '.join(['winner' if team.name == match.winner else '', - 'loser' if team.name == match.loser else '']).strip(), + ' '.join([ + 'winner' if team.name == match.winner else '', + 'loser' if team.name == match.loser else '' + ]).strip(), match.link, team.name, - ' / '.join([self.data.get_shortname(name) for name in team.name.split('
')]), + ' / '.join([ + self.data.get_shortname(name) for name in + team.name.split('
') + ]), match.link, team.score ) @@ -74,8 +87,14 @@ class PlayoffGenerator(object): grid_boxes += p_temp.MATCH_BOX % ( grid_x, grid_y, match, - ' '.join([str(m) for m in matches[match].winner_matches]) if matches[match].winner_matches is not None else '', - ' '.join([str(m) for m in matches[match].loser_matches]) if matches[match].loser_matches is not None else '', + ' '.join([ + str(m) for m in + matches[match].winner_matches + ]) if matches[match].winner_matches is not None else '', + ' '.join([ + str(m) for m in + matches[match].loser_matches + ]) if matches[match].loser_matches is not None else '', self.get_match_table(matches[match]) ) row_no += 1 @@ -85,7 +104,12 @@ class PlayoffGenerator(object): canvas_attrs.append( 'data-%s="%s"' % (setting.replace('_', '-'), str(value)) ) - return p_temp.MATCH_GRID % (grid_width, grid_height, grid_width, grid_height, ' '.join(canvas_attrs), grid_boxes) + return p_temp.MATCH_GRID % ( + grid_width, grid_height, + grid_width, grid_height, + ' '.join(canvas_attrs), + grid_boxes + ) def get_leaderboard_table(self, leaderboard): if len([t for t in leaderboard if t is not None]) == 0: @@ -94,7 +118,7 @@ class PlayoffGenerator(object): rows = '' for team in leaderboard: rows += p_temp.LEADERBOARD_ROW % (position, self.get_flag(team), team or '') - position +=1 + position += 1 html = p_temp.LEADERBOARD.decode('utf8') % (rows) return html diff --git a/jfr_playoff/settings.py b/jfr_playoff/settings.py index e69b1d3..3ed1774 100644 --- a/jfr_playoff/settings.py +++ b/jfr_playoff/settings.py @@ -1,9 +1,12 @@ -import glob, json, os, readline, sys +import glob +import json +import readline +import sys def complete_filename(text, state): return (glob.glob(text+'*')+[None])[state] -class PlayoffSettings: +class PlayoffSettings(object): def __init__(self): self.settings = None -- cgit v1.2.3 From 126729817b8626a597b61bcc59f8a6441e480691 Mon Sep 17 00:00:00 2001 From: emkael Date: Tue, 1 Aug 2017 13:42:49 +0200 Subject: Import sort in all files --- jfr_playoff/data.py | 7 +++++-- jfr_playoff/db.py | 1 + jfr_playoff/filemanager.py | 2 ++ jfr_playoff/generator.py | 2 ++ jfr_playoff/settings.py | 1 + playoff.py | 6 ++++-- 6 files changed, 15 insertions(+), 4 deletions(-) (limited to 'jfr_playoff/db.py') diff --git a/jfr_playoff/data.py b/jfr_playoff/data.py index 997b038..b54d1ae 100644 --- a/jfr_playoff/data.py +++ b/jfr_playoff/data.py @@ -1,8 +1,11 @@ from urlparse import urljoin + import mysql -from jfr_playoff.db import PlayoffDB -from jfr_playoff.dto import Team, Match, Phase + import jfr_playoff.sql as p_sql +from jfr_playoff.db import PlayoffDB +from jfr_playoff.dto import Match, Phase, Team + class PlayoffData(object): def __init__(self, settings): diff --git a/jfr_playoff/db.py b/jfr_playoff/db.py index 8457dd4..19ec2fb 100644 --- a/jfr_playoff/db.py +++ b/jfr_playoff/db.py @@ -1,5 +1,6 @@ import mysql.connector + class PlayoffDB(object): db_cursor = None diff --git a/jfr_playoff/filemanager.py b/jfr_playoff/filemanager.py index 06374dd..2c443b4 100644 --- a/jfr_playoff/filemanager.py +++ b/jfr_playoff/filemanager.py @@ -1,8 +1,10 @@ import os import shutil import socket + import __main__ + class PlayoffFileManager(object): def __init__(self, settings): diff --git a/jfr_playoff/generator.py b/jfr_playoff/generator.py index 7b9760e..e3e8221 100644 --- a/jfr_playoff/generator.py +++ b/jfr_playoff/generator.py @@ -1,7 +1,9 @@ from datetime import datetime + import jfr_playoff.template as p_temp from jfr_playoff.data import PlayoffData + class PlayoffGenerator(object): def __init__(self, settings): self.settings = settings diff --git a/jfr_playoff/settings.py b/jfr_playoff/settings.py index 3ed1774..3b765bc 100644 --- a/jfr_playoff/settings.py +++ b/jfr_playoff/settings.py @@ -3,6 +3,7 @@ import json import readline import sys + def complete_filename(text, state): return (glob.glob(text+'*')+[None])[state] diff --git a/playoff.py b/playoff.py index 48da011..c335b55 100644 --- a/playoff.py +++ b/playoff.py @@ -1,7 +1,9 @@ import traceback -from jfr_playoff.settings import PlayoffSettings -from jfr_playoff.generator import PlayoffGenerator + from jfr_playoff.filemanager import PlayoffFileManager +from jfr_playoff.generator import PlayoffGenerator +from jfr_playoff.settings import PlayoffSettings + def main(): -- cgit v1.2.3 From ca6c87f457f49cf33f357984d7642b1c83a0eefb Mon Sep 17 00:00:00 2001 From: emkael Date: Tue, 1 Aug 2017 14:06:25 +0200 Subject: Code formatting --- jfr_playoff/data.py | 38 ++++++++++++++++---------------------- jfr_playoff/db.py | 3 +-- jfr_playoff/dto.py | 4 +++- jfr_playoff/filemanager.py | 11 ++++++----- jfr_playoff/generator.py | 36 +++++++++++++----------------------- jfr_playoff/settings.py | 1 + jfr_playoff/sql.py | 6 ++++-- jfr_playoff/template.py | 2 +- 8 files changed, 45 insertions(+), 56 deletions(-) (limited to 'jfr_playoff/db.py') diff --git a/jfr_playoff/data.py b/jfr_playoff/data.py index db65393..6fc3c4b 100644 --- a/jfr_playoff/data.py +++ b/jfr_playoff/data.py @@ -49,8 +49,7 @@ class PlayoffData(object): self.match_info[match['id']].link = phase['link'] else: self.match_info[match['id']].link = urljoin( - phase['link'], self.match_info[match['id']].link - ) + phase['link'], self.match_info[match['id']].link) return self.match_info def get_match_link(self, match): @@ -67,8 +66,7 @@ class PlayoffData(object): teams = [Team(), Team()] row = self.database.fetch( match['database'], p_sql.MATCH_RESULTS, - (match['table'], match['round']) - ) + (match['table'], match['round'])) teams[0].name = row[0] teams[1].name = row[1] teams[0].score = row[3] + row[5] @@ -91,27 +89,24 @@ class PlayoffData(object): if 'winner' in match['teams'][i]: match_teams += [ self.match_info[winner_match].winner - for winner_match in match['teams'][i]['winner'] - ] + for winner_match in match['teams'][i]['winner']] if 'loser' in match['teams'][i]: match_teams += [ self.match_info[loser_match].loser - for loser_match in match['teams'][i]['loser'] - ] + for loser_match in match['teams'][i]['loser']] if 'place' in match['teams'][i]: match_teams += [ self.teams[place-1][0] - for place in match['teams'][i]['place'] - ] + for place in match['teams'][i]['place']] known_teams = [team for team in match_teams if team is not None] if len(known_teams) > 0: teams[i].name = '
'.join([ - team if team is not None else '??' for team in match_teams]) + team if team is not None + else '??' for team in match_teams]) else: teams[i].name = '' return teams - def get_match_info(self, match): info = Match() info.id = match['id'] @@ -132,14 +127,12 @@ class PlayoffData(object): try: towels = self.database.fetch( match['database'], p_sql.TOWEL_COUNT, - (match['table'], match['round']) - ) + (match['table'], match['round'])) row = [0 if r is None else r for r in self.database.fetch( match['database'], p_sql.BOARD_COUNT, - (match['table'], match['round']) - )] + (match['table'], match['round']))] if row[1] > 0: info.running = int(row[1]) if row[1] >= row[0] - towels[0]: @@ -170,15 +163,18 @@ class PlayoffData(object): winner_key = tuple(match['winner']) if winner_key not in leaderboard_teams: leaderboard_teams[winner_key] = [] - leaderboard_teams[winner_key].append(self.match_info[match['id']].winner) + leaderboard_teams[winner_key].append( + self.match_info[match['id']].winner) if 'loser' in match: loser_key = tuple(match['loser']) if loser_key not in leaderboard_teams: leaderboard_teams[loser_key] = [] - leaderboard_teams[loser_key].append(self.match_info[match['id']].loser) + leaderboard_teams[loser_key].append( + self.match_info[match['id']].loser) for positions, position_teams in leaderboard_teams.iteritems(): positions = list(positions) - if len(positions) == len([team for team in position_teams if team is not None]): + if len(positions) == len([ + team for team in position_teams if team is not None]): for table_team in self.teams: if table_team[0] in position_teams: position = positions.pop(0) @@ -192,9 +188,7 @@ class PlayoffData(object): len(phase['matches']) + len(phase['dummies']) if 'dummies' in phase else len(phase['matches']) - for phase in self.phases - ]) - ) + for phase in self.phases])) def get_shortname(self, fullname): for team in self.teams: diff --git a/jfr_playoff/db.py b/jfr_playoff/db.py index 19ec2fb..b94f3d5 100644 --- a/jfr_playoff/db.py +++ b/jfr_playoff/db.py @@ -10,8 +10,7 @@ class PlayoffDB(object): user=settings['user'], password=settings['pass'], host=settings['host'], - port=settings['port'] - ) + port=settings['port']) self.db_cursor = self.database.cursor(buffered=True) def get_cursor(self): diff --git a/jfr_playoff/dto.py b/jfr_playoff/dto.py index bf3e16a..f5e08ef 100644 --- a/jfr_playoff/dto.py +++ b/jfr_playoff/dto.py @@ -2,6 +2,7 @@ class Team(object): name = '' score = 0.0 + class Match(object): id = None teams = None @@ -12,10 +13,11 @@ class Match(object): winner_matches = None loser_matches = None + class Phase(object): title = None link = None matches = [] running = False -__all__ = ['Team', 'Match', 'Phase'] +__all__ = ('Team', 'Match', 'Phase') diff --git a/jfr_playoff/filemanager.py b/jfr_playoff/filemanager.py index 03dbaf7..5cd2a80 100644 --- a/jfr_playoff/filemanager.py +++ b/jfr_playoff/filemanager.py @@ -22,7 +22,6 @@ class PlayoffFileManager(object): if path.startswith(self.output_path): self.files.add(path.replace(self.output_path, '')) - def write_content(self, content): output = open(self.output_file, 'w') output.write(content.encode('utf8')) @@ -33,16 +32,18 @@ class PlayoffFileManager(object): def copy_scripts(self, script_path='sklady/playoff.js'): script_output_path = os.path.join(self.output_path, script_path) shutil.copy( - unicode(os.path.join(os.path.dirname(__main__.__file__), 'playoff.js')), - unicode(script_output_path) - ) + unicode(os.path.join( + os.path.dirname(__main__.__file__), 'playoff.js')), + unicode(script_output_path)) self.register_file(script_output_path) return script_output_path def send_files(self): if self.goniec['enabled']: try: - content_lines = [self.output_path] + list(self.files) + ['bye', ''] + content_lines = [self.output_path] + \ + list(self.files) + \ + ['bye', ''] print '\n'.join(content_lines) goniec = socket.socket() goniec.connect((self.goniec['host'], self.goniec['port'])) diff --git a/jfr_playoff/generator.py b/jfr_playoff/generator.py index bc2a388..5868750 100644 --- a/jfr_playoff/generator.py +++ b/jfr_playoff/generator.py @@ -16,23 +16,18 @@ class PlayoffGenerator(object): return p_temp.PAGE % ( p_temp.PAGE_HEAD % ( p_temp.PAGE_HEAD_REFRESH % ( - self.page['refresh'] - ) if self.page['refresh'] > 0 else '', - self.page['title'] - ), + self.page['refresh']) + if self.page['refresh'] > 0 else '', + self.page['title']), p_temp.PAGE_BODY % ( self.page['logoh'], self.get_match_grid( self.data.get_dimensions(), self.data.generate_phases(), - self.data.fill_match_info() - ), + self.data.fill_match_info()), self.get_leaderboard_table(self.data.fill_leaderboard()), p_temp.PAGE_BODY_FOOTER.decode('utf8') % ( - datetime.now().strftime('%Y-%m-%d o %H:%M') - ) - ) - ) + datetime.now().strftime('%Y-%m-%d o %H:%M')))) def get_match_table(self, match): rows = '' @@ -46,16 +41,13 @@ class PlayoffGenerator(object): team.name, ' / '.join([ self.data.get_shortname(name) for name in - team.name.split('
') - ]), + team.name.split('
')]), match.link, - team.score - ) + team.score) html = p_temp.MATCH_TABLE.decode('utf8') % ( int(self.page['width'] * 0.75), int(self.page['width'] * 0.25), - rows - ) + rows) if match.running > 0: html += p_temp.MATCH_RUNNING % (match.link, match.running) return html @@ -69,8 +61,7 @@ class PlayoffGenerator(object): phase.link, self.page['width'], position, - phase.title - ) + phase.title) def get_match_box(self, match, position): if match is not None: @@ -83,8 +74,7 @@ class PlayoffGenerator(object): ' '.join([ str(m) for m in match.loser_matches ]) if match.loser_matches is not None else '', - self.get_match_table(match) - ) + self.get_match_table(match)) return '' def get_match_grid(self, dimensions, grid, matches): @@ -94,8 +84,7 @@ class PlayoffGenerator(object): ) - self.page['margin'], dimensions[1] * ( self.page['height'] + self.page['margin'] - ) - self.page['margin'] - ) + ) - self.page['margin']) grid_boxes = '' col_no = 0 for phase in grid: @@ -126,7 +115,8 @@ class PlayoffGenerator(object): position = 1 rows = '' for team in leaderboard: - rows += p_temp.LEADERBOARD_ROW % (position, self.get_flag(team), team or '') + rows += p_temp.LEADERBOARD_ROW % ( + position, self.get_flag(team), team or '') position += 1 html = p_temp.LEADERBOARD.decode('utf8') % (rows) return html diff --git a/jfr_playoff/settings.py b/jfr_playoff/settings.py index 3b765bc..da92458 100644 --- a/jfr_playoff/settings.py +++ b/jfr_playoff/settings.py @@ -7,6 +7,7 @@ import sys def complete_filename(text, state): return (glob.glob(text+'*')+[None])[state] + class PlayoffSettings(object): def __init__(self): diff --git a/jfr_playoff/sql.py b/jfr_playoff/sql.py index 76ea728..b01bd08 100644 --- a/jfr_playoff/sql.py +++ b/jfr_playoff/sql.py @@ -1,5 +1,6 @@ MATCH_RESULTS = ''' -SELECT t1.fullname, t2.fullname, matches.carry, matches.vph, matches.vpv, matches.corrh, matches.corrv +SELECT t1.fullname, t2.fullname, matches.carry, + matches.vph, matches.vpv, matches.corrh, matches.corrv FROM #db#.matches matches JOIN #db#.teams t1 ON t1.id = #db#.matches.homet @@ -9,7 +10,8 @@ WHERE matches.tabl = %s AND matches.rnd = %s ''' BOARD_COUNT = ''' -SELECT segmentsperround*boardspersegment, SUM(sc1.contract IS NOT NULL AND sc2.contract IS NOT NULL) +SELECT segmentsperround*boardspersegment, + SUM(sc1.contract IS NOT NULL AND sc2.contract IS NOT NULL) FROM #db#.scores sc1 JOIN #db#.scores sc2 ON sc1.rnd = sc2.rnd diff --git a/jfr_playoff/template.py b/jfr_playoff/template.py index 8713ab9..99e6225 100644 --- a/jfr_playoff/template.py +++ b/jfr_playoff/template.py @@ -1,4 +1,4 @@ -#encoding=utf-8 +# -*- coding: utf-8 -*- MATCH_TABLE = ''' -- cgit v1.2.3