-
Notifications
You must be signed in to change notification settings - Fork 44
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
add min_weight value #33
Conversation
correios/models/posting.py
Outdated
@@ -331,6 +331,9 @@ def validate(cls, | |||
if service and service.max_weight and weight > service.max_weight: | |||
raise InvalidPackageWeightError("Max weight exceeded {!r}g (max. {!r}g)".format(weight, service.max_weight)) | |||
|
|||
if service and service.min_weight and weight > service.min_weight: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Aqui não deveria ser weight < service.min_weight
É bom adicionar um ou mais testes no test_posting_models.py para esse valor mínimo |
👍 escrevendo os testes. |
tests/test_user_models.py
Outdated
@@ -208,6 +209,7 @@ def test_basic_service(): | |||
assert service.get_symbol_filename("png") == os.path.join(DATADIR, "premium.png") | |||
assert isinstance(service.symbol_image, Image) | |||
assert service.max_weight == 10000 | |||
assert service min_weight == 1 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
não tá faltando um .
aqui?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
HUAHsduhaushduahsudhASD
correios/models/posting.py
Outdated
@@ -331,6 +331,9 @@ def validate(cls, | |||
if service and service.max_weight and weight > service.max_weight: | |||
raise InvalidPackageWeightError("Max weight exceeded {!r}g (max. {!r}g)".format(weight, service.max_weight)) | |||
|
|||
if service and service.min_weight and weight > service.min_weight: | |||
raise InvalidPackageWeightError("The minimum weight is {!r}g".format(service.min_weight)) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
a correios sempre trabalha com "gramas" como unidade fixada ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
parece que sim, pelo que olhei no código inteiro sim.
@allison adicionado testes e corrigido mais uma porradinha de coisas. |
@@ -273,6 +273,7 @@ | |||
'description': 'SEDEX 10', | |||
'category': 'SERVICO_COM_RESTRICAO', | |||
'max_weight': 10000, | |||
'min_weight': 1, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Esse valor 1 ta na listagem do SEDEX? Porque se eu não me engano abaixo de 500g a pesagem fica com a tabela de cartas e mala direta.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
foi o que é pedido na task.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
e sedex e encomenda é um serviço que você compra, tem peso maximo, e esse minimo.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
Olhando a documentação sobre limites dos correios [1] não existe peso mínimo para os serviços de entregas. Então, ao meu ver, colocar o dado Ao meu ver o correto seria fazer essa mesma validação de peso sem alterar os dicts. |
correios/models/user.py
Outdated
@@ -140,6 +140,7 @@ def __init__(self, | |||
display_name: Optional[str] = "", | |||
symbol: Optional[str] = None, | |||
max_weight: Optional[int] = None, | |||
min_weight: Optional[int] = None, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Acho que mudaria pra zero como default.
@lamenezes acho meio inofensiva essa mudança, só alteraria o default do peso mínimo ser 0 ao invés de None (se entendi bem o código). |
já mudei o valor default p/ zero |
a questão é que quando se altera o dict de serviços no módulo |
essa validação de peso é realmente necessária e importante para o serviço, só acho que deve ser feita diretamente no |
bom, é um regra "prática".. |
exato @georgeyk foi exatamente por isso que alterei os dicts, p/ a regra não ficar só em um lugar. |
mas as duas regras (de max e min) já estão no |
a impressão que eu tenho desse PR é: "a olist não aceita pacotes (ou produtos) com peso menor que 1g, então vamos mudar a lib dos correios para injetar uma regra nos serviços SEDEX, PAC, E-SEDEX etc. dizendo que eles não aceitam pacotes com peso de 1g ou menos" |
vou tirar meu review daqui, façam como achar melhor. |
sua sugestão recapitulando é; retirar do "data" e manter a vlidação somente no posting.package? posso fazer essa alteração, o seu último comentário fez sentido, parece o correto a se fazer. Sem stress @lamenezes , estamos discutindo pq é o que gostamos de fazer :) |
Não é "façam como achar melhor", somos um time, nós fazemos o que time acha melhor =) Eu quero entender o que tem de errado com isso, pode não ser uma regra escrita nos docs dos correios, mas é uma regra que tá implícita físicamente (afinal, uma folha A4 > 4g). |
Lembrem-se que esse projeto é OSS e aberto... vamos limitar as referências à questões internas da olist aqui nesse espaço, ok? (referência à regras de negócio interna ou à tickets no nosso jira não são boas idéias). Se for o caso podemos fazer um fork private e exportar para cá somente o resultado final dos PRs, ok? |
Veja... existe peso mínimo para encomendas dos correios para fins de tarifação apenas. Eu posso enviar um pacote de 100g mas pagarei por 300g porque é o valor mínimo para preço. Então, IMHO, a lib dos correios deveria levantar uma exception para peso <=0 porque isso realmente é fisicamente impossível (e isso não precisa ficar nos dicts porque peso > 0 é o limite para qualquer objeto real em um ambiente com gravidade). Ao mesmo tempo eu sou 👍 para adicionar a informação de peso mínimo para cobrança na lib. Essa informação pode ser usada por serviços de cálculo de frete e como limitador mínimo para cálculos de peso cúbico. |
@@ -65,6 +65,10 @@ class InvalidPackageWeightError(InvalidPackageError): | |||
pass | |||
|
|||
|
|||
class InvalidMinPackageWeightError(InvalidPackageError): | |||
pass |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
acho que talvez seja bom usar InvalidPackageWeightError e colocar uma mensagem indicando o peso mínimo na hora de fazer o raise.
Bom, eu vou fechar esse PR, seguindo a sugestão do @georgeyk por dois motivos:
|
@allisson @georgeyk @luizdepra