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_1095834454/__init__.py
Empty file.
Binary file not shown.
Binary file added Checkout_1095834454/__pycache__/admin.cpython-38.pyc
Binary file not shown.
Binary file added Checkout_1095834454/__pycache__/apps.cpython-38.pyc
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file added Checkout_1095834454/__pycache__/urls.cpython-38.pyc
Binary file not shown.
Binary file not shown.
7 changes: 7 additions & 0 deletions Checkout_1095834454/admin.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
from django.contrib import admin
from .models import *

# Register your models here.
admin.site.register(CarritoCompras)
admin.site.register(Articulo)
admin.site.register(InfoEnvio)
6 changes: 6 additions & 0 deletions Checkout_1095834454/apps.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
from django.apps import AppConfig


class Checkout1095834454Config(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'Checkout_1095834454'
49 changes: 49 additions & 0 deletions Checkout_1095834454/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 01:51

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


class Migration(migrations.Migration):

initial = True

dependencies = [
('Productos', '0002_auto_20210916_1521'),
]

operations = [
migrations.CreateModel(
name='CarritoCompras',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('usuario', models.CharField(max_length=100)),
('fecha', models.DateField(auto_now=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=100)),
('apellido', models.CharField(max_length=100)),
('direccion', models.CharField(max_length=100)),
('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_1095834454.carritocompras')),
],
),
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_1095834454.carritocompras')),
('producto', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='Productos.producto')),
],
),
]
20 changes: 20 additions & 0 deletions Checkout_1095834454/migrations/0002_alter_articulo_producto.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Generated by Django 3.2.7 on 2021-09-21 02:16

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


class Migration(migrations.Migration):

dependencies = [
('Productos', '0002_auto_20210916_1521'),
('Checkout_1095834454', '0001_initial'),
]

operations = [
migrations.AlterField(
model_name='articulo',
name='producto',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='Productos.producto'),
),
]
25 changes: 25 additions & 0 deletions Checkout_1095834454/migrations/0003_auto_20210920_2137.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Generated by Django 3.2.7 on 2021-09-21 02:37

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


class Migration(migrations.Migration):

dependencies = [
('Productos', '0002_auto_20210916_1521'),
('Checkout_1095834454', '0002_alter_articulo_producto'),
]

operations = [
migrations.AlterField(
model_name='articulo',
name='producto',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='Productos.producto'),
),
migrations.AlterField(
model_name='carritocompras',
name='fecha',
field=models.DateField(auto_now_add=True),
),
]
Empty file.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
47 changes: 47 additions & 0 deletions Checkout_1095834454/models.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
from django.db import models
from Productos.models import *

# Create your models here.
class CarritoCompras(models.Model):
usuario = models.CharField(max_length=100)
fecha = models.DateField(auto_now_add=True)
dcto = models.FloatField(default=0)
cantMinima = models.IntegerField(default=0)
pagado = models.BooleanField(default=False)

def __str__(self):
return f"{self.usuario} - {self.fecha}"

def total(self):

pass

def numArticulos(self):
pass

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

def __str__(self):
return f"{self.carrito.__str__()} / {self.producto.nombre}"

def subtotal(self):
subtotal = 0
subtotal += self.producto.precio * self.cantidad
return subtotal

class InfoEnvio(models.Model):
carrito = models.ForeignKey(CarritoCompras, on_delete=models.CASCADE)
nombre = models.CharField(max_length=100)
apellido = models.CharField(max_length=100)
direccion = models.CharField(max_length=100)
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__()


19 changes: 19 additions & 0 deletions Checkout_1095834454/serializers.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
from django.core import exceptions
from rest_framework import serializers
# from Checkout_1095834454.models import *
from .models import * # Funciona para importar dentro de la misma aplicación (Checkout...)

class CarritoComprasSerial(serializers.ModelSerializer):
class Meta:
model = CarritoCompras
fields = "__all__"

class ArticuloSerial(serializers.ModelSerializer):
class Meta:
model = Articulo
fields = "__all__"

class InfoEnvioSerial(serializers.ModelSerializer):
class Meta:
model = InfoEnvio
fields = "__all__"
3 changes: 3 additions & 0 deletions Checkout_1095834454/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.
15 changes: 15 additions & 0 deletions Checkout_1095834454/urls.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Direcciones de las APIS
from django.urls import path, include

from rest_framework.routers import DefaultRouter

from .views import *

router = DefaultRouter()
router.register('carrito', CarritoAPI, basename="Carrito")
router.register('articulo', ArticuloAPI, basename="Articulo")
router.register('info_envio', InfoEnvioAPI, basename="Info Envio")

urlpatterns = [
path('crud/', include(router.urls))
]
105 changes: 105 additions & 0 deletions Checkout_1095834454/views.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
from django.shortcuts import render

# Create your views here.

# APIS
from django.shortcuts import render
from django.http import HttpResponse
from rest_framework import viewsets
from rest_framework.response import Response

# Creación de las APIS

# from Checkout_1095834454.serializers import *
from .serializers import *

class CarritoAPI(viewsets.ViewSet):
def list(self, request):
# request => Se trata de la petición de usuario => GET, POST, PUT...
carritos = CarritoCompras.objects.all()
carritoSerializador = CarritoComprasSerial(carritos, many=True)
return Response(carritoSerializador.data)

def create(self, request):
# Crear nuevos elementos en la base de datos
# serializer = CarritoComprasSerial(data=request.data, many=True)
nuevoCarritoSerial = CarritoComprasSerial(data=request.data)
if nuevoCarritoSerial.is_valid():
nuevoCarritoSerial.save()
return Response({"Exito":True})
return Response(nuevoCarritoSerial.errors)

def retrieve(self, request, pk=None):
# Obtener uno o varios objetos de la base de datos
# pk => Llave primaria - método de identificación de nuestros objetos
carrito = CarritoCompras.objects.get(pk=pk)
serializador = CarritoComprasSerial(carrito)

return Response(serializador.data)

def partial_update(self, request, pk=None):
# Permite actualizar atributos de los objetos CRUD
carrito = CarritoCompras.objects.get(pk=pk)
carritoS = CarritoComprasSerial(carrito, request.data, partial=True)
if carritoS.is_valid():
carritoS.save()
return Response({"Actualizado":True})
return Response(carritoS.errors)

def update(self, request):
# Permite actualizar TODOS los argumentos en la base de datos
carrito = CarritoCompras.objects.get(pk=pk)
carritoS = CarritoComprasSerial(carrito, request.data, partial=True)
if carritoS.is_valid():
carritoS.save()
return Response({"Actualizado":True})
return Response(carritoS.errors)

def destroy(self, request, pk=None):
# Permite borrar un objeto de la base de datos
carrito = CarritoCompras.objects.get(pk=pk)
carrito.delet()
return Response({"Delete":True})



class ArticuloAPI(viewsets.ViewSet):
def list(self, request):
articulos = Articulo.objects.all()
articulosSerializador = ArticuloSerial(articulos, many=True)

return Response(articulosSerializador.data)

def create(self, request):
nuevoArticuloSerial = ArticuloSerial(data=request.data)
if nuevoArticuloSerial.is_valid():
nuevoArticuloSerial.save()
return Response({"Exito":True})

return Response(nuevoArticuloSerial.errors)

def retrieve(self, request, pk=None):
articulo = Articulo.objects.get(pk=pk)
serializador = ArticuloSerial(articulo)

return Response(serializador.data)

class InfoEnvioAPI(viewsets.ViewSet):
def list(self, request):
informacionEnvio = InfoEnvio.objects.all()
informacionSerializador = InfoEnvioSerial(informacionEnvio, many=True)

return Response(informacionSerializador.data)

def create(self, request):
nuevoInformacionSerial = InfoEnvioSerial(data=request.data)
if nuevoInformacionSerial.is_valid():
nuevoInformacionSerial.save()
return Response({"Exito":True})
return Response(nuevoInformacionSerial.errors)

def retrieve(self, request, pk=None):
infoEnvio = InfoEnvio.objects.get(pk=pk)
serializador = InfoEnvioSerial(infoEnvio)

return Response(serializador.data)