diff --git a/Checkout_1095834454/__init__.py b/Checkout_1095834454/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Checkout_1095834454/__pycache__/__init__.cpython-38.pyc b/Checkout_1095834454/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000..3d3333c Binary files /dev/null and b/Checkout_1095834454/__pycache__/__init__.cpython-38.pyc differ diff --git a/Checkout_1095834454/__pycache__/admin.cpython-38.pyc b/Checkout_1095834454/__pycache__/admin.cpython-38.pyc new file mode 100644 index 0000000..919e312 Binary files /dev/null and b/Checkout_1095834454/__pycache__/admin.cpython-38.pyc differ diff --git a/Checkout_1095834454/__pycache__/apps.cpython-38.pyc b/Checkout_1095834454/__pycache__/apps.cpython-38.pyc new file mode 100644 index 0000000..4937997 Binary files /dev/null and b/Checkout_1095834454/__pycache__/apps.cpython-38.pyc differ diff --git a/Checkout_1095834454/__pycache__/models.cpython-38.pyc b/Checkout_1095834454/__pycache__/models.cpython-38.pyc new file mode 100644 index 0000000..39f988f Binary files /dev/null and b/Checkout_1095834454/__pycache__/models.cpython-38.pyc differ diff --git a/Checkout_1095834454/__pycache__/serializers.cpython-38.pyc b/Checkout_1095834454/__pycache__/serializers.cpython-38.pyc new file mode 100644 index 0000000..271a1c8 Binary files /dev/null and b/Checkout_1095834454/__pycache__/serializers.cpython-38.pyc differ diff --git a/Checkout_1095834454/__pycache__/urls.cpython-38.pyc b/Checkout_1095834454/__pycache__/urls.cpython-38.pyc new file mode 100644 index 0000000..9400886 Binary files /dev/null and b/Checkout_1095834454/__pycache__/urls.cpython-38.pyc differ diff --git a/Checkout_1095834454/__pycache__/views.cpython-38.pyc b/Checkout_1095834454/__pycache__/views.cpython-38.pyc new file mode 100644 index 0000000..6b30350 Binary files /dev/null and b/Checkout_1095834454/__pycache__/views.cpython-38.pyc differ diff --git a/Checkout_1095834454/admin.py b/Checkout_1095834454/admin.py new file mode 100644 index 0000000..465868d --- /dev/null +++ b/Checkout_1095834454/admin.py @@ -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) \ No newline at end of file diff --git a/Checkout_1095834454/apps.py b/Checkout_1095834454/apps.py new file mode 100644 index 0000000..0fbd68b --- /dev/null +++ b/Checkout_1095834454/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class Checkout1095834454Config(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'Checkout_1095834454' diff --git a/Checkout_1095834454/migrations/0001_initial.py b/Checkout_1095834454/migrations/0001_initial.py new file mode 100644 index 0000000..519f5b2 --- /dev/null +++ b/Checkout_1095834454/migrations/0001_initial.py @@ -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')), + ], + ), + ] diff --git a/Checkout_1095834454/migrations/0002_alter_articulo_producto.py b/Checkout_1095834454/migrations/0002_alter_articulo_producto.py new file mode 100644 index 0000000..ec2e33c --- /dev/null +++ b/Checkout_1095834454/migrations/0002_alter_articulo_producto.py @@ -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'), + ), + ] diff --git a/Checkout_1095834454/migrations/0003_auto_20210920_2137.py b/Checkout_1095834454/migrations/0003_auto_20210920_2137.py new file mode 100644 index 0000000..7c9a2a8 --- /dev/null +++ b/Checkout_1095834454/migrations/0003_auto_20210920_2137.py @@ -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), + ), + ] diff --git a/Checkout_1095834454/migrations/__init__.py b/Checkout_1095834454/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Checkout_1095834454/migrations/__pycache__/0001_initial.cpython-38.pyc b/Checkout_1095834454/migrations/__pycache__/0001_initial.cpython-38.pyc new file mode 100644 index 0000000..9c5a34a Binary files /dev/null and b/Checkout_1095834454/migrations/__pycache__/0001_initial.cpython-38.pyc differ diff --git a/Checkout_1095834454/migrations/__pycache__/0002_alter_articulo_producto.cpython-38.pyc b/Checkout_1095834454/migrations/__pycache__/0002_alter_articulo_producto.cpython-38.pyc new file mode 100644 index 0000000..ffb1cf9 Binary files /dev/null and b/Checkout_1095834454/migrations/__pycache__/0002_alter_articulo_producto.cpython-38.pyc differ diff --git a/Checkout_1095834454/migrations/__pycache__/0003_auto_20210920_2137.cpython-38.pyc b/Checkout_1095834454/migrations/__pycache__/0003_auto_20210920_2137.cpython-38.pyc new file mode 100644 index 0000000..8e5acfd Binary files /dev/null and b/Checkout_1095834454/migrations/__pycache__/0003_auto_20210920_2137.cpython-38.pyc differ diff --git a/Checkout_1095834454/migrations/__pycache__/__init__.cpython-38.pyc b/Checkout_1095834454/migrations/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000..0d23871 Binary files /dev/null and b/Checkout_1095834454/migrations/__pycache__/__init__.cpython-38.pyc differ diff --git a/Checkout_1095834454/models.py b/Checkout_1095834454/models.py new file mode 100644 index 0000000..1824836 --- /dev/null +++ b/Checkout_1095834454/models.py @@ -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__() + + \ No newline at end of file diff --git a/Checkout_1095834454/serializers.py b/Checkout_1095834454/serializers.py new file mode 100644 index 0000000..acfb43d --- /dev/null +++ b/Checkout_1095834454/serializers.py @@ -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__" diff --git a/Checkout_1095834454/tests.py b/Checkout_1095834454/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/Checkout_1095834454/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/Checkout_1095834454/urls.py b/Checkout_1095834454/urls.py new file mode 100644 index 0000000..4213fe8 --- /dev/null +++ b/Checkout_1095834454/urls.py @@ -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)) +] diff --git a/Checkout_1095834454/views.py b/Checkout_1095834454/views.py new file mode 100644 index 0000000..e1074e5 --- /dev/null +++ b/Checkout_1095834454/views.py @@ -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)