Skip to content

Commit

Permalink
Merge pull request #42 from vicenteneto/dev
Browse files Browse the repository at this point in the history
Adicionando pontuação dos times na busca de ligas no modo autenticado
  • Loading branch information
vicenteneto authored May 31, 2017
2 parents 42328d0 + 73de79c commit ea4f617
Show file tree
Hide file tree
Showing 10 changed files with 49 additions and 19 deletions.
8 changes: 8 additions & 0 deletions CHANGES
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,14 @@ Changelog

Aqui você pode ver a lista completa de modificações entre cada versão.

Versão 0.5.30
-------------

Lançada em 30 de maio de 2017

- Adicionando pontuação no modelo de TimeInfo, utilizado na obtenção de times pertencentes a ligas (autenticada)


Versão 0.5.27
-------------

Expand Down
2 changes: 1 addition & 1 deletion cartolafc/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,5 @@
:license: MIT, veja LICENSE para mais detalhes.
"""

from .api import Api, CAMPEONATO, TURNO, MES, RODADA, PATRIMONIO
from .api import Api, CAMPEONATO, TURNO, MERCADO_ABERTO, MERCADO_FECHADO, MES, RODADA, PATRIMONIO
from .error import CartolaFCError, CartolaFCOverloadError
30 changes: 24 additions & 6 deletions cartolafc/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,8 @@ def __init__(self, email=None, password=None, attempts=1):
""" Instancia um novo objeto de cartolafc.Api.
Args:
email (str, opcional): O e-mail da sua conta no CartolaFC. Requerido se o password for informado.
password (str, opcional): A senha da sua conta no CartolaFC. Requerido se o email for informado.
email (str): O e-mail da sua conta no CartolaFC. Requerido se o password for informado.
password (str): A senha da sua conta no CartolaFC. Requerido se o email for informado.
attempts (int): Quantidade de tentativas que serão efetuadas se os servidores estiverem sobrecarregados.
Raises:
Expand Down Expand Up @@ -130,7 +130,7 @@ def liga(self, nome=None, slug=None, page=1, order_by=CAMPEONATO):
slug = slug if slug else convert_team_name_to_slug(nome)
url = '{api_url}/auth/liga/{slug}'.format(api_url=self._api_url, slug=slug)
data = self._request(url, params=dict(page=page, orderBy=order_by))
return Liga.from_dict(data)
return Liga.from_dict(data, order_by)

@RequiresAuthentication
def pontuacao_atleta(self, id):
Expand All @@ -151,6 +151,15 @@ def clubes(self):
return {int(clube_id): Clube.from_dict(clube) for clube_id, clube in data.items()}

def ligas(self, query):
""" Retorna o resultado da busca ao Cartola por um determinado termo de pesquisa.
Args:
query (str): Termo para utilizar na busca.
Returns:
Uma lista de instâncias de cartolafc.Liga, uma para cada liga contento o termo utilizado na busca.
"""

url = '{api_url}/ligas'.format(api_url=self._api_url)
data = self._request(url, params=dict(q=query))
return [Liga.from_dict(liga_info) for liga_info in data]
Expand Down Expand Up @@ -179,6 +188,15 @@ def mercado_atletas(self):
return [Atleta.from_dict(atleta, clubes=clubes) for atleta in data['atletas']]

def parciais(self):
""" Obtém um mapa com todos os atletas que já pontuaram na rodada atual (aberta).
Returns:
Uma mapa, onde a key é um inteiro representando o id do atleta e o valor é uma instância de cartolafc.Atleta
Raises:
CartolaFCError: Se o mercado atual estiver com o status fechado.
"""

if self.mercado().status.id == MERCADO_FECHADO:
url = '{api_url}/atletas/pontuados'.format(api_url=self._api_url)
data = self._request(url)
Expand All @@ -201,9 +219,9 @@ def time(self, id=None, nome=None, slug=None):
Ao menos um dos dois devem ser informado.
Args:
id (int, opcional): Id to time que se deseja obter. *Este argumento sempre será utilizado primeiro*
nome (str, opcional): Nome do time que se deseja obter. Requerido se o slug não for informado.
slug (str, opcional): Slug do time que se deseja obter. *Este argumento tem prioridade sobre o nome*
id (int): Id to time que se deseja obter. *Este argumento sempre será utilizado primeiro*
nome (str): Nome do time que se deseja obter. Requerido se o slug não for informado.
slug (str): Slug do time que se deseja obter. *Este argumento tem prioridade sobre o nome*
Returns:
Uma instância de cartolafc.Time se o time foi encontrado.
Expand Down
12 changes: 7 additions & 5 deletions cartolafc/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -91,9 +91,9 @@ def __init__(self, liga_id, nome, slug, descricao, times):
self.times = times

@classmethod
def from_dict(cls, data):
def from_dict(cls, data, ranking=None):
data_liga = data.get('liga', data)
times = [TimeInfo.from_dict(time) for time in data['times']] if 'times' in data else None
times = [TimeInfo.from_dict(time, ranking=ranking) for time in data['times']] if 'times' in data else None
return cls(data_liga['liga_id'], data_liga['nome'], data_liga['slug'], data_liga['descricao'], times)


Expand Down Expand Up @@ -163,13 +163,15 @@ def from_dict(cls, data, clubes):
class TimeInfo(object):
""" Time Info """

def __init__(self, time_id, nome, nome_cartola, slug, assinante):
def __init__(self, time_id, nome, nome_cartola, slug, assinante, pontos):
self.id = time_id
self.nome = nome
self.nome_cartola = nome_cartola
self.slug = slug
self.assinante = assinante
self.pontos = pontos

@classmethod
def from_dict(cls, data):
return cls(data['time_id'], data['nome'], data['nome_cartola'], data['slug'], data['assinante'])
def from_dict(cls, data, ranking=None):
pontos = data['pontos'][ranking] if ranking and ranking in data['pontos'] else None
return cls(data['time_id'], data['nome'], data['nome_cartola'], data['slug'], data['assinante'], pontos)
4 changes: 2 additions & 2 deletions docs/source/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,9 +57,9 @@
# built documents.
#
# The short X.Y version.
version = u'0.5.27'
version = u'0.5.30'
# The full version, including alpha/beta/rc tags.
release = u'0.5.27'
release = u'0.5.30'

# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
Expand Down
4 changes: 3 additions & 1 deletion examples/examples.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
print api.amigos()
print api.clubes()
print api.liga(nome='Virtus Premier League')
print api.liga(nome='Nacional', page=2)
print api.liga(nome='Nacional', page=3, order_by=cartolafc.RODADA)
print api.liga(slug='virtus-premier-league')
print api.ligas(query='Virtus')
print api.ligas_patrocinadores()
Expand All @@ -16,8 +18,8 @@
print api.time(id=471815)
print api.time(nome='Falydos FC')
print api.time(slug='falydos-fc')
print api.time_logado()
print api.time_parcial(id=471815)
print api.time_parcial(nome='Falydos FC')
print api.time_parcial(slug='falydos-fc')
print api.time_logado()
print api.times(query='Faly')
2 changes: 1 addition & 1 deletion examples/requirements.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
Python-CartolaFC==0.5.27
Python-CartolaFC==0.5.30
2 changes: 1 addition & 1 deletion requirements/common.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
requests==2.14.2
requests==2.17.3
2 changes: 1 addition & 1 deletion requirements/development.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@ coverage==4.4.1
mock==2.0.0
nose==1.3.7
requests_mock==1.3.0
sphinx==1.6.1
sphinx==1.6.2
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
"""
from setuptools import setup

version = '0.5.27'
version = '0.5.30'
packages = ['cartolafc']
install_requires = ['requests']
python_cartolafc_pkg_data = []
Expand Down

0 comments on commit ea4f617

Please sign in to comment.