/
helperfunctions.py
111 lines (102 loc) · 3.72 KB
/
helperfunctions.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
import sys
import re
from google.appengine.ext import db
from dbmodel import Table, Team, Result
from types import NoneType
import translate
import logging
def deletetable(tablek):
tb = db.get(tablek)
tms = Team().all()
tms.filter('table = ', tablek)
for tm in tms:
deleteteam(tm.key(), tablek)
tb.delete()
def transfertables(tempuser, uid):
#get user key from id
uk = db.Key.from_path('User', uid)
for tu in tempuser:
for t in tu.tables:
t.user = uk
t.put()
def deleteteam(teamk , tablek):
teamt = db.get(teamk)
#get all home results for this team
htmrs = Result().all()
htmrs.filter('home_team_id = ', teamk.id())
#delete all home results for this team
for rsk_home in htmrs:
deleteresult(rsk_home.key(), tablek)
#get all away results for this team
atmrs = Result().all()
atmrs.filter('away_team_id = ', teamk.id())
#delete all away results for this team
for rsk_away in atmrs:
deleteresult(rsk_away.key(), tablek)
#delete team
teamt.delete()
def deleteresult(rsk, k):
rs = db.get(rsk)
t = db.get(k)
#update home team
htk = db.Key.from_path('Team', rs.home_team_id)
htm = db.get(htk)
htm.games_played = htm.games_played - 1
pts = 0
if rs.home_team_score > rs.away_team_score:
htm.games_won = htm.games_won - 1
pts = t.points_for_win
elif rs.home_team_score > 0 and (rs.home_team_score == rs.away_team_score):
htm.games_drawn = htm.games_drawn - 1
pts = t.points_for_score_draw
elif rs.home_team_score == 0 and (rs.home_team_score == rs.away_team_score):
htm.games_drawn = htm.games_drawn - 1
pts = t.points_for_draw
else:
htm.games_lost = htm.games_lost - 1
pts = t.points_for_lose
htm.goals_for = htm.goals_for - rs.home_team_score
htm.goals_against = htm.goals_against - rs.away_team_score
htm.goal_difference = htm.goals_for - htm.goals_against
htm.points = htm.points - int(pts)
htm.put()
#update away team
atk = db.Key.from_path('Team', rs.away_team_id)
atm = db.get(atk)
atm.games_played = atm.games_played - 1
pts = 0
if rs.home_team_score < rs.away_team_score:
atm.games_won = atm.games_won - 1
pts = t.points_for_win
elif rs.home_team_score > 0 and (rs.home_team_score == rs.away_team_score):
atm.games_drawn = atm.games_drawn - 1
pts = t.points_for_score_draw
elif rs.home_team_score == 0 and (rs.home_team_score == rs.away_team_score):
atm.games_drawn = atm.games_drawn - 1
pts = t.points_for_draw
else:
atm.games_lost = atm.games_lost - 1
pts = t.points_for_lose
atm.goals_for = atm.goals_for - rs.away_team_score
atm.goals_against = atm.goals_against - rs.home_team_score
atm.goal_difference = atm.goals_for - atm.goals_against
atm.points = atm.points - int(pts)
atm.put()
#delete result
rs.delete()
def parse_accept_language(accept_language):
if not accept_language: return []
ll=[ v.strip().split(';') for v in accept_language.split(',') ]
ll=[ len(l)==1 and l.append(1.0) or l for l in ll]
ll=[ [l[0],float(re.sub('q\s*=\s*','',str(l[1])))] for l in ll]
ll=[ l[0] for l in sorted(ll,lambda l1,l2: l1[1] > l2[1]) ]
ll=[ re.sub('-','_',l).lower() for l in ll ]
return ll
def get_messages(languages=[]):
msgs=translate.en
for lang in languages:
if hasattr(translate,lang):
msgs=getattr(translate,lang)
logging.debug('languages='+str(languages)+', using '+str(lang))
break
return msgs