summaryrefslogtreecommitdiff
path: root/pyranking
diff options
context:
space:
mode:
authoremkael <emkael@tlen.pl>2017-04-06 01:33:22 +0200
committeremkael <emkael@tlen.pl>2017-04-06 01:33:22 +0200
commitcce7440974bbf7999f160d07d99cf22265ceebd5 (patch)
treec67d875ee3f6bd5b8823cde6b421ea23ebb7bb96 /pyranking
parent925e385cbb04977c3e8f5bfb0a3c6c8edfad48ac (diff)
Refactoring re-usable code
Diffstat (limited to 'pyranking')
-rw-r--r--pyranking/__init__.py0
-rw-r--r--pyranking/__init__.pycbin0 -> 155 bytes
-rw-r--r--pyranking/db.py13
-rw-r--r--pyranking/db.pycbin0 -> 550 bytes
-rw-r--r--pyranking/fetch.py42
-rw-r--r--pyranking/fetch.pycbin0 -> 1401 bytes
6 files changed, 55 insertions, 0 deletions
diff --git a/pyranking/__init__.py b/pyranking/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/pyranking/__init__.py
diff --git a/pyranking/__init__.pyc b/pyranking/__init__.pyc
new file mode 100644
index 0000000..549f38c
--- /dev/null
+++ b/pyranking/__init__.pyc
Binary files differ
diff --git a/pyranking/db.py b/pyranking/db.py
new file mode 100644
index 0000000..d28147d
--- /dev/null
+++ b/pyranking/db.py
@@ -0,0 +1,13 @@
+import json
+import mysql.connector
+
+settings = json.load(file('config.json'))
+
+connection = mysql.connector.connect(
+ user=settings['user'],
+ password=settings['pass'],
+ host=settings['host'],
+ port=settings['port'],
+ database=settings['db']
+)
+cursor = connection.cursor(dictionary=True, buffered=True)
diff --git a/pyranking/db.pyc b/pyranking/db.pyc
new file mode 100644
index 0000000..e956b24
--- /dev/null
+++ b/pyranking/db.pyc
Binary files differ
diff --git a/pyranking/fetch.py b/pyranking/fetch.py
new file mode 100644
index 0000000..0d301d4
--- /dev/null
+++ b/pyranking/fetch.py
@@ -0,0 +1,42 @@
+from pyranking.db import cursor
+
+def fetch_ranking(date, assoc=False):
+ sql = '''SELECT
+ rankings.place,
+ rankings.pid,
+ CONCAT(players.name, " ", players.surname) player,
+ players.rank,
+ rankings.region, players.club,
+ REPLACE(rankings.flags, "K", "") age,
+ IF(rankings.flags LIKE 'K%', "K", "") gender,
+ rankings.score
+FROM rankings
+JOIN players
+ ON players.id = rankings.pid
+WHERE rankings.date = %(date)s
+ORDER BY rankings.place
+ '''
+ cursor.execute(sql, {'date': date})
+ ranks = {
+ 'gender': {},
+ 'age': {},
+ 'region': {}
+ }
+ ranking = cursor.fetchall()
+ for row in ranking:
+ if row['gender'] == '':
+ row['gender'] = 'M'
+ for category in ['gender', 'age', 'region']:
+ if row[category] not in ranks[category]:
+ ranks[category][row[category]] = 0
+ ranks[category][row[category]] += 1
+ row[category + '-place'] = ranks[category][row[category]]
+ for category in ['place', 'gender', 'age', 'region']:
+ row[category + '-change'] = 'N'
+ row[category + '-change-class'] = 'info'
+ if assoc:
+ result = {}
+ for row in ranking:
+ result[row['pid']] = row
+ return result
+ return ranking
diff --git a/pyranking/fetch.pyc b/pyranking/fetch.pyc
new file mode 100644
index 0000000..825b456
--- /dev/null
+++ b/pyranking/fetch.pyc
Binary files differ