11# -*- coding: utf-8 -*-
22
3+ import json
34from collections import namedtuple
45from datetime import datetime
56
6- import json
7+ from . util import json_default
78
89Posicao = namedtuple ('Posicao' , ['id' , 'nome' , 'abreviacao' ])
910Status = namedtuple ('Status' , ['id' , 'nome' ])
3435}
3536
3637
37- class Atleta (object ):
38+ class BaseModel (object ):
39+ def __repr__ (self ):
40+ return json .dumps (self , default = json_default )
41+
42+
43+ class Atleta (BaseModel ):
3844 """ Representa um atleta (jogador ou técnico), e possui informações como o apelido, clube e pontuação obtida """
3945
4046 def __init__ (self , atleta_id , apelido , pontos , scout , posicao_id , clube , status_id = None ):
@@ -46,10 +52,6 @@ def __init__(self, atleta_id, apelido, pontos, scout, posicao_id, clube, status_
4652 self .clube = clube
4753 self .status = _atleta_status [status_id ] if status_id else None
4854
49- def __repr__ (self ):
50- return json .dumps (self , default = lambda o : o .__dict__ )
51-
52-
5355 @classmethod
5456 def from_dict (cls , data , clubes , atleta_id = None ):
5557 atleta_id = atleta_id if atleta_id else data ['atleta_id' ]
@@ -59,40 +61,34 @@ def from_dict(cls, data, clubes, atleta_id=None):
5961 data .get ('status_id' , None ))
6062
6163
62- class Clube (object ):
64+ class Clube (BaseModel ):
6365 """ Representa um dos 20 clubes presentes no campeonato, e possui informações como o nome e a abreviação """
6466
6567 def __init__ (self , id , nome , abreviacao ):
6668 self .id = id
6769 self .nome = nome
6870 self .abreviacao = abreviacao
6971
70- def __repr__ (self ):
71- return json .dumps (self , default = lambda o : o .__dict__ )
72-
7372 @classmethod
7473 def from_dict (cls , data ):
7574 return cls (data ['id' ], data ['nome' ], data ['abreviacao' ])
7675
7776
78- class DestaqueRodada (object ):
77+ class DestaqueRodada (BaseModel ):
7978 """ Destaque Rodada"""
8079
8180 def __init__ (self , media_cartoletas , media_pontos , mito_rodada ):
8281 self .media_cartoletas = media_cartoletas
8382 self .media_pontos = media_pontos
8483 self .mito_rodada = mito_rodada
8584
86- def __repr__ (self ):
87- return json .dumps (self , default = lambda o : o .__dict__ )
88-
8985 @classmethod
9086 def from_dict (cls , data ):
9187 mito_rodada = TimeInfo .from_dict (data ['mito_rodada' ])
9288 return cls (data ['media_cartoletas' ], data ['media_pontos' ], mito_rodada )
9389
9490
95- class Liga (object ):
91+ class Liga (BaseModel ):
9692 """ Liga """
9793
9894 def __init__ (self , liga_id , nome , slug , descricao , times ):
@@ -102,33 +98,27 @@ def __init__(self, liga_id, nome, slug, descricao, times):
10298 self .descricao = descricao
10399 self .times = times
104100
105- def __repr__ (self ):
106- return json .dumps (self , default = lambda o : o .__dict__ )
107-
108101 @classmethod
109102 def from_dict (cls , data , ranking = None ):
110103 data_liga = data .get ('liga' , data )
111104 times = [TimeInfo .from_dict (time , ranking = ranking ) for time in data ['times' ]] if 'times' in data else None
112105 return cls (data_liga ['liga_id' ], data_liga ['nome' ], data_liga ['slug' ], data_liga ['descricao' ], times )
113106
114107
115- class LigaPatrocinador (object ):
108+ class LigaPatrocinador (BaseModel ):
116109 """ Liga Patrocinador """
117110
118111 def __init__ (self , liga_id , nome , url_link ):
119112 self .id = liga_id
120113 self .nome = nome
121114 self .url_link = url_link
122115
123- def __repr__ (self ):
124- return json .dumps (self , default = lambda o : o .__dict__ )
125-
126116 @classmethod
127117 def from_dict (cls , data ):
128118 return cls (data ['liga_id' ], data ['nome' ], data ['url_link' ])
129119
130120
131- class Mercado (object ):
121+ class Mercado (BaseModel ):
132122 """ Mercado """
133123
134124 def __init__ (self , rodada_atual , status_mercado , times_escalados , aviso , fechamento ):
@@ -138,16 +128,13 @@ def __init__(self, rodada_atual, status_mercado, times_escalados, aviso, fechame
138128 self .aviso = aviso
139129 self .fechamento = fechamento
140130
141- def __repr__ (self ):
142- return json .dumps (self , default = lambda o : o .__dict__ )
143-
144131 @classmethod
145132 def from_dict (cls , data ):
146133 fechamento = datetime .fromtimestamp (data ['fechamento' ]['timestamp' ])
147134 return cls (data ['rodada_atual' ], data ['status_mercado' ], data ['times_escalados' ], data ['aviso' ], fechamento )
148135
149136
150- class Partida (object ):
137+ class Partida (BaseModel ):
151138 """ Partida """
152139
153140 def __init__ (self , data , local , clube_casa , placar_casa , clube_visitante , placar_visitante ):
@@ -158,9 +145,6 @@ def __init__(self, data, local, clube_casa, placar_casa, clube_visitante, placar
158145 self .clube_visitante = clube_visitante
159146 self .placar_visitante = placar_visitante
160147
161- def __repr__ (self ):
162- return json .dumps (self , default = lambda o : o .__dict__ )
163-
164148 @classmethod
165149 def from_dict (cls , data , clubes ):
166150 data_ = datetime .strptime (data ['partida_data' ], '%Y-%m-%d %H:%M:%S' )
@@ -172,7 +156,7 @@ def from_dict(cls, data, clubes):
172156 return cls (data_ , local , clube_casa , placar_casa , clube_visitante , placar_visitante )
173157
174158
175- class PontuacaoInfo (object ):
159+ class PontuacaoInfo (BaseModel ):
176160 """ Pontuação Info """
177161
178162 def __init__ (self , atleta_id , rodada_id , pontos , preco , variacao , media ):
@@ -183,15 +167,12 @@ def __init__(self, atleta_id, rodada_id, pontos, preco, variacao, media):
183167 self .variacao = variacao
184168 self .media = media
185169
186- def __repr__ (self ):
187- return json .dumps (self , default = lambda o : o .__dict__ )
188-
189170 @classmethod
190171 def from_dict (cls , data ):
191172 return cls (data ['atleta_id' ], data ['rodada_id' ], data ['pontos' ], data ['preco' ], data ['variacao' ], data ['media' ])
192173
193174
194- class Time (object ):
175+ class Time (BaseModel ):
195176 """ Time """
196177
197178 def __init__ (self , patrimonio , valor_time , ultima_pontuacao , atletas , info ):
@@ -201,9 +182,6 @@ def __init__(self, patrimonio, valor_time, ultima_pontuacao, atletas, info):
201182 self .atletas = atletas
202183 self .info = info
203184
204- def __repr__ (self ):
205- return json .dumps (self , default = lambda o : o .__dict__ )
206-
207185 @classmethod
208186 def from_dict (cls , data , clubes ):
209187 data ['atletas' ].sort (key = lambda a : a ['posicao_id' ])
@@ -212,7 +190,7 @@ def from_dict(cls, data, clubes):
212190 return cls (data ['patrimonio' ], data ['valor_time' ], data ['pontos' ], atletas , info )
213191
214192
215- class TimeInfo (object ):
193+ class TimeInfo (BaseModel ):
216194 """ Time Info """
217195
218196 def __init__ (self , time_id , nome , nome_cartola , slug , assinante , pontos ):
@@ -223,9 +201,6 @@ def __init__(self, time_id, nome, nome_cartola, slug, assinante, pontos):
223201 self .assinante = assinante
224202 self .pontos = pontos
225203
226- def __repr__ (self ):
227- return json .dumps (self , default = lambda o : o .__dict__ )
228-
229204 @classmethod
230205 def from_dict (cls , data , ranking = None ):
231206 pontos = data ['pontos' ][ranking ] if ranking and ranking in data ['pontos' ] else None
0 commit comments