Skip to content
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

parte 2 cores #58 #62

Merged
merged 1 commit into from
Mar 2, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion catalogo/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -195,7 +195,7 @@ class Meta:
ordering = ('created_at', )

def __str__(self):
return self.cor.nome + ' - ' + self.modelo.descricao
return self.modelo.descricao + ' - ' + self.cor.nome


class ProdutoImagem(models.Model):
Expand Down
2 changes: 1 addition & 1 deletion catalogo/tests/test_model.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ def test_create(self):
self.assertTrue(CorModelo.objects.exists())

def test_str(self):
self.assertEqual('Verde Bandeira - T-Shirt', str(self.obj))
self.assertEqual('T-Shirt - Verde Bandeira', str(self.obj))

def test_ativo_default(self):
self.assertTrue(self.obj.ativo)
Expand Down
51 changes: 42 additions & 9 deletions catalogo/tests/test_view.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,32 @@
from re import S
from django.test import TestCase, Client
from django.shortcuts import resolve_url as r
from catalogo.models import Cor, Modelo, ModeloProduto, Produto, SubCategoria, Tamanho
from django.urls import reverse
from catalogo.models import Cor, Modelo, ModeloProduto, Produto, ProdutoImagem, SubCategoria, Tamanho

client = Client()


class SubCategoriaListView(TestCase):
def setUp(self):
self.subcategoria = SubCategoria.objects.create(
nome='Programação', slug='programacao')
self.response = self.client.get(
reverse('catalogo:lista_por_subcategoria', kwargs={'slug': 'programacao'}))

def test_template(self):
self.assertTemplateUsed(
self.response, 'catalogo/list_by_categoria.html')

def test_sub_categoria(self):
self.assertIsNotNone(self.response.context['subcategorias'])
self.assertIsNotNone(
self.response.context['sub_categoria_selecionada'])

def test_sub_categoria_not_found(self):
pass


class ProdutoDetailViewTest(TestCase):
def setUp(self):
subcategoria = SubCategoria.objects.create(
Expand All @@ -15,10 +36,22 @@ def setUp(self):
descricao='Camiseta 100 de Algodão - Malha Final etc tal',
slug=f'camiseta-python-django',
subcategoria=subcategoria,
imagem_principal='Imagem Cloudinary 1',
imagem_principal='/image/upload/camiseta-django',
imagem_design='Imagem Cloudinary 2',
)

self.imagens = ProdutoImagem.objects.create(
produto=self.obj,
imagem='/image/upload/ronaldinho-gaucho',
)

self.tamanho = Tamanho.objects.create(nome='G', slug='g')
self.cor = Cor.objects.create(nome='Vermelho', slug='vermelho')
self.modelo = Modelo.objects.create(descricao='Cropped')

self.modelo_produto = ModeloProduto.objects.create(
produto=self.obj, modelo=self.modelo)

self.response = self.client.get(r('catalogo:produto', self.obj.slug))

def test_template(self):
Expand All @@ -27,6 +60,12 @@ def test_template(self):
def test_get(self):
self.assertEqual(200, self.response.status_code)

def test_imagem_mockup_replace_low(self):
self.assertContains(self.response, '/image/upload/q_auto:low/v1//image/upload/ronaldinho-gaucho')

def test_imagem_principal_mockup_replace_low(self):
self.assertContains(self.response, '/image/upload/q_auto:low/v1//image/upload/camiseta-django')

def test_html(self):
contents = (self.obj.nome, self.obj.descricao, self.obj.subcategoria)

Expand All @@ -35,14 +74,8 @@ def test_html(self):
self.assertContains(self.response, expected)

def test_post(self):
produto = Produto.objects.first()
modelo = Modelo.objects.create(descricao='Cropped')
modelo_produto = ModeloProduto.objects.create(
produto=produto, modelo=modelo)
Cor.objects.create(nome='Vermelho', slug='vermelho')
Tamanho.objects.create(nome='G', slug='g')
data = {
'modelo': str(modelo_produto.pk),
'modelo': str(self.modelo_produto.pk),
'cor': 'vermelho',
'tamanho': 'g',
'quantidade': 5
Expand Down
31 changes: 20 additions & 11 deletions catalogo/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,25 @@ def get_context_data(self, **kwargs):
return context


def __get_mockups(produto, imagens):
# Monta todos os mockups e da um replace na imagem pra ficar com baixo consumo de banda
def replace_low(url):
url_cloudinary = settings.CLOUDINARY_BASE_PATH
return url.replace(
"{0}/image/upload".format(url_cloudinary), "{0}/image/upload/q_auto:low".format(url_cloudinary))

imagem_princial = replace_low(produto.imagem_principal.url)

mockups = {0: imagem_princial}

for imagem in imagens:
imagemPerformada = replace_low(imagem.imagem.url)
mock = {imagem.id: imagemPerformada}
mockups.update(mock)

return mockups


def produto(request, slug):
""" Pagina de detalhes do produto """
produto = Produto.objects.get(slug=slug)
Expand All @@ -41,17 +60,7 @@ def produto(request, slug):
imagens = ProdutoImagem.objects.filter(produto=produto)
# Adiciona no mockup a imagem principal (pelo menos a imagem 0)

mockups = {0: produto.imagem_principal.url}

url_cloudinary = "https://res.cloudinary.com/like-estampa"
if settings.DEBUG:
url_cloudinary = "http://res.cloudinary.com/leonardocintra"

for imagem in imagens:
imagemPerformada = imagem.imagem.url.replace(
"{0}/image/upload".format(url_cloudinary), "{0}/image/upload/q_auto:low".format(url_cloudinary))
mock = {imagem.id: imagemPerformada}
mockups.update(mock)
mockups = __get_mockups(produto, imagens)

# TODO: Cachear essas variaveis
modelos = ModeloProduto.objects.filter(produto=produto)
Expand Down
28 changes: 16 additions & 12 deletions fixtures/fixture.sql
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,23 @@ INSERT INTO categoria (nome, slug, created_at, updated_at, ativo) VALUES('Caneca
INSERT INTO categoria (nome, slug, created_at, updated_at, ativo) VALUES('Moletons', 'moletons', now(), now(), true);


INSERT INTO cor (nome, valor, slug, ativo, created_at, updated_at, order_exibicao) VALUES('Branco', '#FFFFFF', 'branco', true, now(), now(), 0);
INSERT INTO cor (nome, valor, slug, ativo, created_at, updated_at, order_exibicao) VALUES('Amarelo Canário', '#FFDE67', 'amarelo-canario', true, now(), now(), 1);
INSERT INTO cor (nome, valor, slug, ativo, created_at, updated_at, order_exibicao) VALUES('Laranja', '#FF9156', 'laranja', true, now(), now(), 2);
INSERT INTO cor (nome, valor, slug, ativo, created_at, updated_at, order_exibicao) VALUES('Rosa Pink', '#FF109C', 'rosa-pink', true, now(), now(), 4);
INSERT INTO cor (nome, valor, slug, ativo, created_at, updated_at, order_exibicao) VALUES('Roxo', '#7232EF', 'roxo', true, now(), now(), 5);
INSERT INTO cor (nome, valor, slug, ativo, created_at, updated_at, order_exibicao) VALUES('Azul Royal', '#004BAA', 'azul-royal', true, now(), now(), 6);
INSERT INTO cor (nome, valor, slug, ativo, created_at, updated_at, order_exibicao) VALUES('Azul Turquesa', '#009CED', 'azul-turquesa', true, now(), now(), 8);
INSERT INTO cor (nome, valor, slug, ativo, created_at, updated_at, order_exibicao) VALUES('Cinza Chumbo', '#4C4A4C', 'cinza-chumbo', true, now(), now(), 11);
INSERT INTO cor (nome, valor, slug, ativo, created_at, updated_at, order_exibicao) VALUES('Preto', '#000000', 'preto', true, now(), now(), 12);
INSERT INTO cor (nome, valor, slug, ativo, created_at, updated_at, order_exibicao) VALUES('Azul Marinho', '#00547B', 'azul-marinho', true, now(), now(), 7);
INSERT INTO cor (nome, valor, slug, ativo, created_at, updated_at, order_exibicao) VALUES('Verde Bandeira', '#00803C', 'verde-bandeira', true, now(), now(), 9);
INSERT INTO cor (nome, valor, slug, ativo, created_at, updated_at, order_exibicao) VALUES('Cinza Mescla', '#BEC0C3', 'cinza-mescla', true, now(), now(), 10);
INSERT INTO cor (id, nome, valor, slug, ativo, created_at, updated_at, order_exibicao) VALUES(14, 'Branco', '#FFFFFF', 'branco', true, now(), now(), 0);
INSERT INTO cor (id, nome, valor, slug, ativo, created_at, updated_at, order_exibicao) VALUES(15, 'Amarelo Canário', '#FFDE67', 'amarelo-canario', true, now(), now(), 10);
INSERT INTO cor (id, nome, valor, slug, ativo, created_at, updated_at, order_exibicao) VALUES(16, 'Laranja', '#FF9156', 'laranja', true, now(), now(), 20);
INSERT INTO cor (id, nome, valor, slug, ativo, created_at, updated_at, order_exibicao) VALUES(17, 'Rosa Pink', '#FF109C', 'rosa-pink', true, now(), now(), 30);
INSERT INTO cor (id, nome, valor, slug, ativo, created_at, updated_at, order_exibicao) VALUES(26, 'Vermelho', '#FF1616', 'vermelho', true, now(), now(), 40);
INSERT INTO cor (id, nome, valor, slug, ativo, created_at, updated_at, order_exibicao) VALUES(27, 'Vinho', '#9C0419', 'vinho', true, now(), now(), 50);
INSERT INTO cor (id, nome, valor, slug, ativo, created_at, updated_at, order_exibicao) VALUES(18, 'Roxo', '#7232EF', 'roxo', true, now(), now(), 60);
INSERT INTO cor (id, nome, valor, slug, ativo, created_at, updated_at, order_exibicao) VALUES(19, 'Azul Royal', '#004BAA', 'azul-royal', true, now(), now(), 70);
INSERT INTO cor (id, nome, valor, slug, ativo, created_at, updated_at, order_exibicao) VALUES(23, 'Azul Marinho', '#00547B', 'azul-marinho', true, now(), now(), 80);
INSERT INTO cor (id, nome, valor, slug, ativo, created_at, updated_at, order_exibicao) VALUES(20, 'Azul Turquesa', '#009CED', 'azul-turquesa', true, now(), now(), 90);
INSERT INTO cor (id, nome, valor, slug, ativo, created_at, updated_at, order_exibicao) VALUES(24, 'Verde Bandeira', '#00803C', 'verde-bandeira', true, now(), now(), 100);
INSERT INTO cor (id, nome, valor, slug, ativo, created_at, updated_at, order_exibicao) VALUES(25, 'Cinza Mescla', '#BEC0C3', 'cinza-mescla', true, now(), now(), 110);
INSERT INTO cor (id, nome, valor, slug, ativo, created_at, updated_at, order_exibicao) VALUES(21, 'Cinza Chumbo', '#4C4A4C', 'cinza-chumbo', true, now(), now(), 120);
INSERT INTO cor (id, nome, valor, slug, ativo, created_at, updated_at, order_exibicao) VALUES(22, 'Preto', '#000000', 'preto', true, now(), now(), 140);
INSERT INTO cor (id, nome, valor, slug, ativo, created_at, updated_at, order_exibicao) VALUES(28, 'Amarelo Ouro', '#F9BD5F', 'amarelo-ouro', true, now(), now(), 15);

-- FAZER SELECT DA TABELA MODELO_COR

INSERT INTO modelo (id, descricao, created_at, updated_at, descricao_cliente, valor) VALUES(1, 'T-Shirt', now(), now(), 'T-Shirt', 51.99);
INSERT INTO modelo (id, descricao, created_at, updated_at, descricao_cliente, valor) VALUES(2, 'Baby Long', now(), now(), 'T-Shirt Feminina', 51.99);
Expand Down
1 change: 1 addition & 0 deletions likeestampa/settings/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,7 @@
'api_key': os.environ.get('CLOUDINARY_API_KEY', '182946961533113'),
'api_secret': os.environ.get('CLOUDINARY_API_SECRET', 'LAIVTLNHtG5x-TTdUmHgaE3CnsM'),
}
CLOUDINARY_BASE_PATH = "http://res.cloudinary.com/leonardocintra"


# MERCADO PAGO
Expand Down
5 changes: 4 additions & 1 deletion likeestampa/settings/heroku.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,4 +45,7 @@
DIMONA_KEY = env("DIMONA_KEY")

# TELEGRAM
TELEGRAM_TOKEN = env("TELEGRAM_TOKEN")
TELEGRAM_TOKEN = env("TELEGRAM_TOKEN")

# CLOUDINARY
CLOUDINARY_BASE_PATH = "https://res.cloudinary.com/like-estampa"