diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ba520cc --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +db.sqlite3 \ No newline at end of file diff --git a/Checkout1101756167/__init__.py b/Checkout1101756167/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Checkout1101756167/__pycache__/__init__.cpython-39.pyc b/Checkout1101756167/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000..f5547c5 Binary files /dev/null and b/Checkout1101756167/__pycache__/__init__.cpython-39.pyc differ diff --git a/Checkout1101756167/__pycache__/admin.cpython-39.pyc b/Checkout1101756167/__pycache__/admin.cpython-39.pyc new file mode 100644 index 0000000..248c151 Binary files /dev/null and b/Checkout1101756167/__pycache__/admin.cpython-39.pyc differ diff --git a/Checkout1101756167/__pycache__/apps.cpython-39.pyc b/Checkout1101756167/__pycache__/apps.cpython-39.pyc new file mode 100644 index 0000000..68038e1 Binary files /dev/null and b/Checkout1101756167/__pycache__/apps.cpython-39.pyc differ diff --git a/Checkout1101756167/__pycache__/models.cpython-39.pyc b/Checkout1101756167/__pycache__/models.cpython-39.pyc new file mode 100644 index 0000000..b2bb875 Binary files /dev/null and b/Checkout1101756167/__pycache__/models.cpython-39.pyc differ diff --git a/Checkout1101756167/__pycache__/serializers.cpython-39.pyc b/Checkout1101756167/__pycache__/serializers.cpython-39.pyc new file mode 100644 index 0000000..f2f701e Binary files /dev/null and b/Checkout1101756167/__pycache__/serializers.cpython-39.pyc differ diff --git a/Checkout1101756167/__pycache__/urls.cpython-39.pyc b/Checkout1101756167/__pycache__/urls.cpython-39.pyc new file mode 100644 index 0000000..ae6b349 Binary files /dev/null and b/Checkout1101756167/__pycache__/urls.cpython-39.pyc differ diff --git a/Checkout1101756167/__pycache__/views.cpython-39.pyc b/Checkout1101756167/__pycache__/views.cpython-39.pyc new file mode 100644 index 0000000..fd0276f Binary files /dev/null and b/Checkout1101756167/__pycache__/views.cpython-39.pyc differ diff --git a/Checkout1101756167/admin.py b/Checkout1101756167/admin.py new file mode 100644 index 0000000..d1cae78 --- /dev/null +++ b/Checkout1101756167/admin.py @@ -0,0 +1,7 @@ +from django.contrib import admin + +from .models import * + +admin.site.register(CarritoCompras) +admin.site.register(Articulo) +admin.site.register(InfoEnvio) \ No newline at end of file diff --git a/Checkout1101756167/apps.py b/Checkout1101756167/apps.py new file mode 100644 index 0000000..dd9d0da --- /dev/null +++ b/Checkout1101756167/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class Checkout1101756167Config(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'Checkout1101756167' diff --git a/Checkout1101756167/migrations/0001_initial.py b/Checkout1101756167/migrations/0001_initial.py new file mode 100644 index 0000000..5ad7a8e --- /dev/null +++ b/Checkout1101756167/migrations/0001_initial.py @@ -0,0 +1,49 @@ +# Generated by Django 3.2.7 on 2021-09-21 23:07 + +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=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=200)), + ('apellido', models.CharField(max_length=200)), + ('direccion', models.CharField(max_length=200)), + ('pais', models.CharField(max_length=200)), + ('departamento', models.CharField(max_length=200)), + ('ciudad', models.CharField(max_length=200)), + ('carrtio', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='Checkout1101756167.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='Checkout1101756167.carritocompras')), + ('producto', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='Productos.producto')), + ], + ), + ] diff --git a/Checkout1101756167/migrations/0002_rename_carrtio_infoenvio_carrito.py b/Checkout1101756167/migrations/0002_rename_carrtio_infoenvio_carrito.py new file mode 100644 index 0000000..aa9a347 --- /dev/null +++ b/Checkout1101756167/migrations/0002_rename_carrtio_infoenvio_carrito.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.7 on 2021-09-22 23:54 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('Checkout1101756167', '0001_initial'), + ] + + operations = [ + migrations.RenameField( + model_name='infoenvio', + old_name='carrtio', + new_name='carrito', + ), + ] diff --git a/Checkout1101756167/migrations/__init__.py b/Checkout1101756167/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Checkout1101756167/migrations/__pycache__/0001_initial.cpython-39.pyc b/Checkout1101756167/migrations/__pycache__/0001_initial.cpython-39.pyc new file mode 100644 index 0000000..48a9a56 Binary files /dev/null and b/Checkout1101756167/migrations/__pycache__/0001_initial.cpython-39.pyc differ diff --git a/Checkout1101756167/migrations/__pycache__/0002_rename_carrtio_infoenvio_carrito.cpython-39.pyc b/Checkout1101756167/migrations/__pycache__/0002_rename_carrtio_infoenvio_carrito.cpython-39.pyc new file mode 100644 index 0000000..8905cf5 Binary files /dev/null and b/Checkout1101756167/migrations/__pycache__/0002_rename_carrtio_infoenvio_carrito.cpython-39.pyc differ diff --git a/Checkout1101756167/migrations/__pycache__/__init__.cpython-39.pyc b/Checkout1101756167/migrations/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000..ea05d6f Binary files /dev/null and b/Checkout1101756167/migrations/__pycache__/__init__.cpython-39.pyc differ diff --git a/Checkout1101756167/models.py b/Checkout1101756167/models.py new file mode 100644 index 0000000..c780790 --- /dev/null +++ b/Checkout1101756167/models.py @@ -0,0 +1,52 @@ +from django.db import models +from django.contrib.auth import get_user_model + +from Productos.models import Producto + +class CarritoCompras(models.Model): + usuario = models.CharField(max_length=200) + fecha = models.DateField(auto_now_add=True) #16/09/2021 + dcto = models.FloatField(default=0) + cantMinima = models.IntegerField(default=0) + pagado = models.BooleanField(default=False) + + def __str__(self): + return str(self.usuario) + " - " + str(self.fecha) + + @property + def total(self): + total = 0 + for articulo in self.articulo_set.all(): + total += articulo.subtotal() + return total + + def numArt(self): + articulos = Articulo.objects.filter(carrito=self) + return len (articulos) + +class InfoEnvio(models.Model): + carrito = models.ForeignKey(CarritoCompras, on_delete=models.CASCADE) + nombre = models.CharField(max_length=200) + apellido = models.CharField(max_length=200) + direccion = models.CharField(max_length=200) + pais = models.CharField(max_length=200) + departamento = models.CharField(max_length=200) + ciudad = models.CharField(max_length=200) + + def __str__(self): + return self.carrito.__str__() + +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 self.carrito.__str__() + " - " + self.Producto.__str__() + + def subtotal(self): + #subtotal = precioUNitario*cantidad + return self.producto.precio*self.cantidad + + \ No newline at end of file diff --git a/Checkout1101756167/serializers.py b/Checkout1101756167/serializers.py new file mode 100644 index 0000000..6b79113 --- /dev/null +++ b/Checkout1101756167/serializers.py @@ -0,0 +1,20 @@ +from rest_framework import serializers + +from .models import * + +class CarritoComprasSerial(serializers.ModelSerializer): + class Meta: + model = CarritoCompras + fields = '__all__' + #fields = ["nombre", "foto"] + +class InfoEnvioSerial(serializers.ModelSerializer): + class Meta: + model = InfoEnvio + fields = '__all__' + + +class ArticuloSerial(serializers.ModelSerializer): + class Meta: + model = Articulo + fields = '__all__' \ No newline at end of file diff --git a/Checkout1101756167/tests.py b/Checkout1101756167/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/Checkout1101756167/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/Checkout1101756167/urls.py b/Checkout1101756167/urls.py new file mode 100644 index 0000000..0116eba --- /dev/null +++ b/Checkout1101756167/urls.py @@ -0,0 +1,16 @@ + +from django.urls import path, include + +from rest_framework.routers import DefaultRouter + +from .views import * + +router = DefaultRouter() +router.register ('carrito', CarritoComprasAPI, basename="carrito") +router.register ('articulos', ArticuloAPI, basename="articulos") +router.register ('envio', InfoEnvioAPI, basename="envio") + +urlpatterns = [ + path('crud/', include(router.urls)) + +] \ No newline at end of file diff --git a/Checkout1101756167/views.py b/Checkout1101756167/views.py new file mode 100644 index 0000000..d380837 --- /dev/null +++ b/Checkout1101756167/views.py @@ -0,0 +1,84 @@ +from rest_framework import viewsets +from rest_framework.response import Response +from rest_framework.status import HTTP_400_BAD_REQUEST + +from .serializers import * + + +class CarritoComprasAPI(viewsets.ViewSet): + def list(self, request): + carritos = CarritoCompras.objects.all() + serializer = CarritoComprasSerial(carritos, many=True) + return Response(serializer.data) + + def create(self, request): + serializer = CarritoComprasSerial(data=request.data) + if serializer.is_valid(): + carrito = serializer.save() + return Response({'idCarrito':carrito.id}) + return Response(serializer.errors, HTTP_400_BAD_REQUEST) + + def retrieve(self,request,pk=None): + #pk= primaryKey + carritosUsuario = CarritoCompras.objects.filter(usuario=pk) + carritoS= CarritoComprasSerial(carritosUsuario,many=True) + return Response(carritoS.data) + + def partial_update(self, request, pk=None): + carrito = self.get_object() + data = {'pagado':True} + serializer = CarritoComprasSerial(carrito, data, partial=True) + if serializer.is_valid(): + serializer.save() + return Response({'update':True}) + return Response(serializer.errors, HTTP_400_BAD_REQUEST) + + +class ArticuloAPI(viewsets.ViewSet): + def list(self, request): + articulos = Articulo.objects.all() + serializer = ArticuloSerial(articulos, many=True) + return Response(serializer.data) + + def create(self, request): + serializer = ArticuloSerial(data=request.data, many=True) + if serializer.is_valid(): + serializer.save() + return Response({'Exito':True}) + return Response(serializer.errors, HTTP_400_BAD_REQUEST) + + def retrieve(self,request,pk=None): + #pk= primaryKey + articulos = Articulo.objects.get(pk=pk) + artS= ArticuloSerial(articulos,many=True) + return Response(artS.data) + + def partial_update(self, request, pk=None): + artModificar = Articulo.objects.get(pk=pk) + serializer = ArticuloSerial(artModificar, request.data, partial=True) + if serializer.is_valid(): + serializer.save() + return Response({"Actualizado":True}) + return Response(serializer.errors, HTTP_400_BAD_REQUEST) + + def destroy (self, request, pk= None): + pass + +class InfoEnvioAPI(viewsets.ViewSet): + def list(self, request): + envios = InfoEnvio.objects.all() + serializer = InfoEnvioSerial(envios, many=True) + return Response(serializer.data) + + def create(self, request): + serializer = InfoEnvioSerial(data=request.data, many=True) + if serializer.is_valid(): + serializer.save() + return Response({'Creados':True}) + return Response(serializer.errors, HTTP_400_BAD_REQUEST) + + def retrieve(self,request,pk=None): + #pk= primaryKey + enviosUsuario = InfoEnvio.objects.filter(carrito=pk) + envioS= InfoEnvioSerial(enviosUsuario,many=True) + return Response(envioS.data) \ No newline at end of file diff --git a/ExEcommerce/__pycache__/__init__.cpython-39.pyc b/ExEcommerce/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000..d2149d0 Binary files /dev/null and b/ExEcommerce/__pycache__/__init__.cpython-39.pyc differ diff --git a/ExEcommerce/__pycache__/settings.cpython-39.pyc b/ExEcommerce/__pycache__/settings.cpython-39.pyc new file mode 100644 index 0000000..786d9d4 Binary files /dev/null and b/ExEcommerce/__pycache__/settings.cpython-39.pyc differ diff --git a/ExEcommerce/__pycache__/urls.cpython-39.pyc b/ExEcommerce/__pycache__/urls.cpython-39.pyc new file mode 100644 index 0000000..0b31541 Binary files /dev/null and b/ExEcommerce/__pycache__/urls.cpython-39.pyc differ diff --git a/ExEcommerce/__pycache__/wsgi.cpython-39.pyc b/ExEcommerce/__pycache__/wsgi.cpython-39.pyc new file mode 100644 index 0000000..c13052c Binary files /dev/null and b/ExEcommerce/__pycache__/wsgi.cpython-39.pyc differ diff --git a/ExEcommerce/settings.py b/ExEcommerce/settings.py index 0f4ecb1..c5c03a3 100644 --- a/ExEcommerce/settings.py +++ b/ExEcommerce/settings.py @@ -37,6 +37,7 @@ 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', + 'Checkout1101756167', 'Productos', 'rest_framework', 'rest_framework.authtoken', diff --git a/ExEcommerce/urls.py b/ExEcommerce/urls.py index 9ee5187..3c428db 100644 --- a/ExEcommerce/urls.py +++ b/ExEcommerce/urls.py @@ -4,5 +4,9 @@ urlpatterns = [ path('admin/', admin.site.urls), path('productos/api/', include('Productos.urls')), + + path('checkout/api/', include('Checkout1101756167.urls')), + path('checkout/api/', include('Checkout_1098730480.urls')) + ] diff --git a/Productos/__pycache__/__init__.cpython-39.pyc b/Productos/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000..0dd8d0f Binary files /dev/null and b/Productos/__pycache__/__init__.cpython-39.pyc differ diff --git a/Productos/__pycache__/admin.cpython-39.pyc b/Productos/__pycache__/admin.cpython-39.pyc new file mode 100644 index 0000000..2dde640 Binary files /dev/null and b/Productos/__pycache__/admin.cpython-39.pyc differ diff --git a/Productos/__pycache__/apps.cpython-39.pyc b/Productos/__pycache__/apps.cpython-39.pyc new file mode 100644 index 0000000..9568a92 Binary files /dev/null and b/Productos/__pycache__/apps.cpython-39.pyc differ diff --git a/Productos/__pycache__/models.cpython-39.pyc b/Productos/__pycache__/models.cpython-39.pyc new file mode 100644 index 0000000..ee59d61 Binary files /dev/null and b/Productos/__pycache__/models.cpython-39.pyc differ diff --git a/Productos/__pycache__/serializers.cpython-39.pyc b/Productos/__pycache__/serializers.cpython-39.pyc new file mode 100644 index 0000000..aaeae2e Binary files /dev/null and b/Productos/__pycache__/serializers.cpython-39.pyc differ diff --git a/Productos/__pycache__/urls.cpython-39.pyc b/Productos/__pycache__/urls.cpython-39.pyc new file mode 100644 index 0000000..b79bfd3 Binary files /dev/null and b/Productos/__pycache__/urls.cpython-39.pyc differ diff --git a/Productos/__pycache__/views.cpython-39.pyc b/Productos/__pycache__/views.cpython-39.pyc new file mode 100644 index 0000000..e59791f Binary files /dev/null and b/Productos/__pycache__/views.cpython-39.pyc differ diff --git a/Productos/migrations/__pycache__/0001_initial.cpython-39.pyc b/Productos/migrations/__pycache__/0001_initial.cpython-39.pyc new file mode 100644 index 0000000..a96a54d Binary files /dev/null and b/Productos/migrations/__pycache__/0001_initial.cpython-39.pyc differ diff --git a/Productos/migrations/__pycache__/0002_auto_20210916_1521.cpython-39.pyc b/Productos/migrations/__pycache__/0002_auto_20210916_1521.cpython-39.pyc new file mode 100644 index 0000000..c7a51f8 Binary files /dev/null and b/Productos/migrations/__pycache__/0002_auto_20210916_1521.cpython-39.pyc differ diff --git a/Productos/migrations/__pycache__/__init__.cpython-39.pyc b/Productos/migrations/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000..a4fa488 Binary files /dev/null and b/Productos/migrations/__pycache__/__init__.cpython-39.pyc differ