Skip to content
Open
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
Empty file added Checkout_79495131/__init__.py
Empty file.
Binary file not shown.
Binary file added Checkout_79495131/__pycache__/admin.cpython-39.pyc
Binary file not shown.
Binary file added Checkout_79495131/__pycache__/apps.cpython-39.pyc
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file added Checkout_79495131/__pycache__/urls.cpython-39.pyc
Binary file not shown.
Binary file not shown.
7 changes: 7 additions & 0 deletions Checkout_79495131/admin.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
from django.contrib import admin

from Checkout_79495131.models import *

admin.site.register(CarritoCompra)
admin.site.register(InfoEnvio)
admin.site.register(Articulo)
6 changes: 6 additions & 0 deletions Checkout_79495131/apps.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
from django.apps import AppConfig


class Checkout79495131Config(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'Checkout_79495131'
49 changes: 49 additions & 0 deletions Checkout_79495131/migrations/0001_initial.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# Generated by Django 3.2.7 on 2021-09-21 19:31

from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

initial = True

dependencies = [
('Productos', '0001_initial'),
]

operations = [
migrations.CreateModel(
name='CarritoCompra',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('usuario', models.CharField(max_length=200)),
('fecha', models.DateField(auto_now_add=True)),
('dcto', models.FloatField(default=0)),
('cantMinima', models.IntegerField(default=0)),
('pagado', models.BooleanField(default=False)),
],
),
migrations.CreateModel(
name='InfoEnvio',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('nombre', models.CharField(max_length=80)),
('apellido', models.CharField(max_length=80)),
('direccion', models.CharField(max_length=200)),
('pais', models.CharField(max_length=50)),
('departamento', models.CharField(max_length=50)),
('ciudad', models.CharField(max_length=50)),
('carrito', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='Checkout_79495131.carritocompra')),
],
),
migrations.CreateModel(
name='Articulo',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('cantidad', models.IntegerField(default=0)),
('carrito', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='Checkout_79495131.carritocompra')),
('producto', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='Productos.producto')),
],
),
]
18 changes: 18 additions & 0 deletions Checkout_79495131/migrations/0002_alter_carritocompra_fecha.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Generated by Django 3.2.7 on 2021-09-21 20:23

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('Checkout_79495131', '0001_initial'),
]

operations = [
migrations.AlterField(
model_name='carritocompra',
name='fecha',
field=models.DateTimeField(auto_now_add=True),
),
]
Empty file.
Binary file not shown.
Binary file not shown.
Binary file not shown.
43 changes: 43 additions & 0 deletions Checkout_79495131/models.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
from Productos.models import Producto
from django.db import models

class CarritoCompra(models.Model):
usuario = models.CharField(max_length=200)
fecha = models.DateTimeField(auto_now_add=True)
dcto = models.FloatField(default=0)
cantMinima = models.IntegerField(default=0)
pagado = models.BooleanField(default=False)

def __str__(self):
return self.usuario + '-' + str(self.fecha)

def total(self) -> float:
pass

def numArt(self) -> int:
pass



class InfoEnvio(models.Model):
carrito = models.ForeignKey(CarritoCompra, on_delete=models.CASCADE)
nombre = models.CharField(max_length=80)
apellido = models.CharField(max_length=80)
direccion = models.CharField(max_length=200)
pais = models.CharField(max_length=50)
departamento = models.CharField(max_length=50)
ciudad = models.CharField(max_length=50)

def __str__(self):
return self.carrito.__str__()

class Articulo(models.Model):
carrito = models.ForeignKey(CarritoCompra, on_delete=models.CASCADE)
producto = models.ForeignKey(Producto, on_delete=models.SET_NULL, null=True)
cantidad = models.IntegerField(default=0)

def __str__(self):
return self.carrito.__str__() + '-' + self.producto.__str__()

def subtotal(self) -> float:
return self.cantidad * self.producto.precio
23 changes: 23 additions & 0 deletions Checkout_79495131/serializers.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
from rest_framework import serializers

from .models import CarritoCompra, InfoEnvio, Articulo

from Checkout_79495131.models import CarritoCompra


class CarritoSerial(serializers.ModelSerializer):
class Meta:
model = CarritoCompra
fields = '__all__'


class InfoEnvioSerial(serializers.ModelSerializer):
class Meta:
model = InfoEnvio
fields = '__all__'


class ArticuloSerial(serializers.ModelSerializer):
class Meta:
model = Articulo
fields = '__all__'
3 changes: 3 additions & 0 deletions Checkout_79495131/tests.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from django.test import TestCase

# Create your tests here.
18 changes: 18 additions & 0 deletions Checkout_79495131/urls.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Contiene las dir locales de la app Checkout
from django.urls import path, include
from rest_framework.routers import DefaultRouter

# ViewSet => especifi las rutas med 'routes'

from .views import CarritoAPI, InfoEnvioAPI, ArticuloAPI

router = DefaultRouter()

router.register('carrito', CarritoAPI, basename='carrito')
router.register('infoenvio', InfoEnvioAPI, basename='infoenvio')
router.register('articulo', ArticuloAPI, basename='articulo')

urlpatterns = [
# lsita de dir locales
path('crud/', include(router.urls))
]
126 changes: 126 additions & 0 deletions Checkout_79495131/views.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
from rest_framework import viewsets
from rest_framework.response import Response
from rest_framework.status import HTTP_400_BAD_REQUEST
from django.shortcuts import get_object_or_404

from .serializers import CarritoSerial, InfoEnvioSerial, ArticuloSerial
from .models import CarritoCompra, InfoEnvio, Articulo


class CarritoAPI(viewsets.ViewSet):
def list(self, request):
# listar infromación
# request => peticion de user. GET, POST, PUT, ...
carritos = CarritoCompra.objects.all() # obj tipo CarritoCompra
serializador = CarritoSerial(carritos, many=True)
return Response(serializador.data)

def create(self, request) :
# crear obj en DB
# nuevoCarrito = CarritoCompra.objects.create(usuario=request.data)
serializador = CarritoCompra(data=request.data)
if serializador.is_valid():
carrito = serializador.save()
return Response({'idCarrito':carrito.id})
return Response(serializador.errors, HTTP_400_BAD_REQUEST)


def retrieve(self, request, pk=None):
# obtetner un solo reg en DB
#pk = primary key
carrito = get_object_or_404(CarritoCompra, id=pk)
seriarizador = CarritoSerial(carrito)
return Response(seriarizador.data)


def partial_update(self, request, pk=None):
# actualizar parcial => PATCH
carrito = get_object_or_404(CarritoCompra, pk=pk)
carrito_s = CarritoSerial(carrito, request.data, partial=True)
if carrito_s.is_valid():
carrito_s.save()
return Response({'Actualizado':True})
return Response(carrito_s.errors, HTTP_400_BAD_REQUEST)


# No recomendado para carrito de compra -- No queremos cambiar user
def update(self, request, pk=None):
# actualizar parcial => PUT
carrito = get_object_or_404(CarritoCompra, pk=pk)
carrito_s = CarritoSerial(carrito, request.data, partial=False)
if carrito_s.is_valid():
carrito_s.save()
return Response({'Actualizado':True})
return Response(carrito_s.errors)


def destroy(self, request, pk=None):
# borramos elementos en DB
carrito = CarritoCompra.objects.get(pk)
carrito.delete()
return Response({'Objeto borrado':True})


# def retrive(self, request, pk=None):
# return Response(pk)


class ArticuloAPI(viewsets.ViewSet):
def list(self, request):
articulo = Articulo.objects.all()
serializer = ArticuloSerial(articulo, many=True)
return Response(serializer.data)


def create(self, request):
serializer = Articulo(data=request.data)
if serializer.is_valid():
serializer.save()
return Response({'Arituculo creado':True})
return Response(serializer.errors, HTTP_400_BAD_REQUEST)


class InfoEnvioAPI(viewsets.ViewSet):
def list(self, request):
info_envio = InfoEnvio.objects.all()
serializer = InfoEnvioSerial(info_envio, many=True)
return Response(serializer.data)


def create(self, request):
serializer = InfoEnvio(data=request.data)
if serializer.is_valid():
info_e = serializer.save()
return Response({'Envio Creado': True, 'infoId':info_e.id})
return Response(serializer.errors, HTTP_400_BAD_REQUEST)


def retrieve(self, request, pk=None):
info_envio = get_object_or_404(InfoEnvio, id=pk)
seriarizer = InfoEnvioSerial(info_envio)
return Response(seriarizer.data)


def partial_update(self, request, pk=None):
# actualizar parcial => PATCH
info_envio = get_object_or_404(InfoEnvio, pk=pk)
info_envio_s = InfoEnvioSerial(info_envio, request.data, partial=True)
if info_envio_s.is_valid():
info_envio_s.save()
return Response({'Info Envio Actualizado':True})
return Response(info_envio_s.errors)


def destroy(self, request, pk=None):
# borramos elementos en DB
info_envio = InfoEnvio.objects.get(pk)
info_envio.delete()
return Response({'Info envio Borrado':True})



'''
class CarritoAPI(viewsets.ModelViewSet):
serializer_class = CarritoSerial
queryset = CarritoCompra.objects.all()
'''
Binary file added ExEcommerce/__pycache__/__init__.cpython-39.pyc
Binary file not shown.
Binary file added ExEcommerce/__pycache__/settings.cpython-39.pyc
Binary file not shown.
Binary file added ExEcommerce/__pycache__/urls.cpython-39.pyc
Binary file not shown.
Binary file added ExEcommerce/__pycache__/wsgi.cpython-39.pyc
Binary file not shown.
1 change: 1 addition & 0 deletions ExEcommerce/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,5 @@
path('admin/', admin.site.urls),
path('productos/api/', include('Productos.urls')),
path('checkout/api/', include('Checkout.urls'))

]
Binary file added Productos/__pycache__/__init__.cpython-39.pyc
Binary file not shown.
Binary file added Productos/__pycache__/admin.cpython-39.pyc
Binary file not shown.
Binary file added Productos/__pycache__/apps.cpython-39.pyc
Binary file not shown.
Binary file added Productos/__pycache__/models.cpython-39.pyc
Binary file not shown.
Binary file added Productos/__pycache__/serializers.cpython-39.pyc
Binary file not shown.
Binary file added Productos/__pycache__/urls.cpython-39.pyc
Binary file not shown.
Binary file added Productos/__pycache__/views.cpython-39.pyc
Binary file not shown.
8 changes: 5 additions & 3 deletions Productos/migrations/0001_initial.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Generated by Django 3.0.8 on 2021-09-16 20:14
# Generated by Django 3.2.7 on 2021-09-21 19:31

from django.db import migrations, models
import django.db.models.deletion
Expand Down Expand Up @@ -29,7 +29,9 @@ class Migration(migrations.Migration):
('descripcion', models.TextField()),
('foto', models.ImageField(blank=True, null=True, upload_to='')),
('calificacion', models.FloatField(default=0)),
('tipo', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='Productos.TipoElectrodomestico')),
('marca', models.CharField(default='', max_length=20)),
('ref', models.CharField(default='', max_length=100)),
('tipo', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='Productos.tipoelectrodomestico')),
],
),
migrations.CreateModel(
Expand All @@ -40,7 +42,7 @@ class Migration(migrations.Migration):
('calificacion', models.FloatField()),
('fecha', models.DateField(auto_now_add=True)),
('contenido', models.TextField()),
('producto', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='Productos.Producto')),
('producto', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='Productos.producto')),
],
),
]
23 changes: 0 additions & 23 deletions Productos/migrations/0002_auto_20210916_1521.py

This file was deleted.

Binary file not shown.
Binary file not shown.
Binary file not shown.
2 changes: 1 addition & 1 deletion Productos/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
# Create your models here.
class TipoElectrodomestico(models.Model):
nombre = models.CharField(max_length=200)
foto = models.ImageField(null =True, blank=True)
foto = models.ImageField(null=True, blank=True)

def __str__(self):
#Identificar un objeto
Expand Down