diff --git a/.vs/ExEcommerce/v16/.suo b/.vs/ExEcommerce/v16/.suo new file mode 100644 index 0000000..342965d Binary files /dev/null and b/.vs/ExEcommerce/v16/.suo differ diff --git a/.vs/ProjectSettings.json b/.vs/ProjectSettings.json new file mode 100644 index 0000000..f8b4888 --- /dev/null +++ b/.vs/ProjectSettings.json @@ -0,0 +1,3 @@ +{ + "CurrentProjectSetting": null +} \ No newline at end of file diff --git a/.vs/PythonSettings.json b/.vs/PythonSettings.json new file mode 100644 index 0000000..722fed8 --- /dev/null +++ b/.vs/PythonSettings.json @@ -0,0 +1,3 @@ +{ + "TestFramework": "Pytest" +} \ No newline at end of file diff --git a/.vs/VSWorkspaceState.json b/.vs/VSWorkspaceState.json new file mode 100644 index 0000000..cb4b888 --- /dev/null +++ b/.vs/VSWorkspaceState.json @@ -0,0 +1,9 @@ +{ + "ExpandedNodes": [ + "", + "\\checkout_72186587", + "\\Productos" + ], + "SelectedNode": "\\checkout_72186587\\urls.py", + "PreviewInSolutionExplorer": false +} \ No newline at end of file diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite new file mode 100644 index 0000000..629f09b Binary files /dev/null and b/.vs/slnx.sqlite differ diff --git a/ExEcommerce/__pycache__/__init__.cpython-39.pyc b/ExEcommerce/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000..3ab5a61 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..c9844e1 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..4782dfa 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..39ef7d6 Binary files /dev/null and b/ExEcommerce/__pycache__/wsgi.cpython-39.pyc differ diff --git a/ExEcommerce/settings.py b/ExEcommerce/settings.py index 16bb888..8b89841 100644 --- a/ExEcommerce/settings.py +++ b/ExEcommerce/settings.py @@ -38,6 +38,7 @@ 'django.contrib.messages', 'django.contrib.staticfiles', 'Productos', + 'checkout_72186587', 'rest_framework', 'rest_framework.authtoken', 'Checkout', diff --git a/ExEcommerce/urls.py b/ExEcommerce/urls.py index 3b6ef59..e30cc8a 100644 --- a/ExEcommerce/urls.py +++ b/ExEcommerce/urls.py @@ -4,5 +4,7 @@ urlpatterns = [ path('admin/', admin.site.urls), path('productos/api/', include('Productos.urls')), + path('checkout/api/', include('checkout_72186587.urls')), path('checkout/api/', include('Checkout.urls')) + ] diff --git a/Productos/__pycache__/__init__.cpython-39.pyc b/Productos/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000..3d351ca 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..6551c57 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..9be56cd 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..c5fe88c 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..381f76d 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..446eafb 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..e016d55 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..2e5dc6b 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..8051f9c 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..dade9a9 Binary files /dev/null and b/Productos/migrations/__pycache__/__init__.cpython-39.pyc differ diff --git a/checkout_72186587/__init__.py b/checkout_72186587/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/checkout_72186587/__pycache__/__init__.cpython-39.pyc b/checkout_72186587/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000..b5e3cb9 Binary files /dev/null and b/checkout_72186587/__pycache__/__init__.cpython-39.pyc differ diff --git a/checkout_72186587/__pycache__/admin.cpython-39.pyc b/checkout_72186587/__pycache__/admin.cpython-39.pyc new file mode 100644 index 0000000..175ebeb Binary files /dev/null and b/checkout_72186587/__pycache__/admin.cpython-39.pyc differ diff --git a/checkout_72186587/__pycache__/apps.cpython-39.pyc b/checkout_72186587/__pycache__/apps.cpython-39.pyc new file mode 100644 index 0000000..953ae82 Binary files /dev/null and b/checkout_72186587/__pycache__/apps.cpython-39.pyc differ diff --git a/checkout_72186587/__pycache__/models.cpython-39.pyc b/checkout_72186587/__pycache__/models.cpython-39.pyc new file mode 100644 index 0000000..1762215 Binary files /dev/null and b/checkout_72186587/__pycache__/models.cpython-39.pyc differ diff --git a/checkout_72186587/__pycache__/serializer.cpython-39.pyc b/checkout_72186587/__pycache__/serializer.cpython-39.pyc new file mode 100644 index 0000000..f28d56c Binary files /dev/null and b/checkout_72186587/__pycache__/serializer.cpython-39.pyc differ diff --git a/checkout_72186587/__pycache__/urls.cpython-39.pyc b/checkout_72186587/__pycache__/urls.cpython-39.pyc new file mode 100644 index 0000000..00bcadd Binary files /dev/null and b/checkout_72186587/__pycache__/urls.cpython-39.pyc differ diff --git a/checkout_72186587/__pycache__/views.cpython-39.pyc b/checkout_72186587/__pycache__/views.cpython-39.pyc new file mode 100644 index 0000000..e735be9 Binary files /dev/null and b/checkout_72186587/__pycache__/views.cpython-39.pyc differ diff --git a/checkout_72186587/admin.py b/checkout_72186587/admin.py new file mode 100644 index 0000000..4c6dfd2 --- /dev/null +++ b/checkout_72186587/admin.py @@ -0,0 +1,8 @@ +from django.contrib import admin +from checkout_72186587.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_72186587/apps.py b/checkout_72186587/apps.py new file mode 100644 index 0000000..7dc4556 --- /dev/null +++ b/checkout_72186587/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class Checkout72186587Config(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'checkout_72186587' diff --git a/checkout_72186587/migrations/0001_initial.py b/checkout_72186587/migrations/0001_initial.py new file mode 100644 index 0000000..aaaf1bd --- /dev/null +++ b/checkout_72186587/migrations/0001_initial.py @@ -0,0 +1,49 @@ +# Generated by Django 3.2.7 on 2021-09-20 20:48 + +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()), + ('dcto', models.FloatField(default=0)), + ('cantMinima', models.IntegerField()), + ('pagado', models.BooleanField()), + ], + ), + 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=300)), + ('paais', models.CharField(max_length=300)), + ('departamento', models.CharField(max_length=300)), + ('ciudad', models.CharField(max_length=300)), + ('carrito', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='checkout_72186587.carritocompras')), + ], + ), + migrations.CreateModel( + name='Articulo', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('cantidad', models.IntegerField()), + ('carrito', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='checkout_72186587.carritocompras')), + ('producto', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='Productos.producto')), + ], + ), + ] diff --git a/checkout_72186587/migrations/0002_alter_carritocompras_fecha.py b/checkout_72186587/migrations/0002_alter_carritocompras_fecha.py new file mode 100644 index 0000000..468ea60 --- /dev/null +++ b/checkout_72186587/migrations/0002_alter_carritocompras_fecha.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.7 on 2021-09-21 20:27 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('checkout_72186587', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='carritocompras', + name='fecha', + field=models.DateTimeField(auto_now_add=True), + ), + ] diff --git a/checkout_72186587/migrations/0003_auto_20210923_1305.py b/checkout_72186587/migrations/0003_auto_20210923_1305.py new file mode 100644 index 0000000..31d28ef --- /dev/null +++ b/checkout_72186587/migrations/0003_auto_20210923_1305.py @@ -0,0 +1,23 @@ +# Generated by Django 3.2.7 on 2021-09-23 18:05 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('checkout_72186587', '0002_alter_carritocompras_fecha'), + ] + + operations = [ + migrations.AlterField( + model_name='carritocompras', + name='cantMinima', + field=models.IntegerField(default=0), + ), + migrations.AlterField( + model_name='carritocompras', + name='pagado', + field=models.BooleanField(default=False), + ), + ] diff --git a/checkout_72186587/migrations/__init__.py b/checkout_72186587/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/checkout_72186587/migrations/__pycache__/0001_initial.cpython-39.pyc b/checkout_72186587/migrations/__pycache__/0001_initial.cpython-39.pyc new file mode 100644 index 0000000..82a716a Binary files /dev/null and b/checkout_72186587/migrations/__pycache__/0001_initial.cpython-39.pyc differ diff --git a/checkout_72186587/migrations/__pycache__/0002_alter_carritocompras_fecha.cpython-39.pyc b/checkout_72186587/migrations/__pycache__/0002_alter_carritocompras_fecha.cpython-39.pyc new file mode 100644 index 0000000..b4c361a Binary files /dev/null and b/checkout_72186587/migrations/__pycache__/0002_alter_carritocompras_fecha.cpython-39.pyc differ diff --git a/checkout_72186587/migrations/__pycache__/0003_auto_20210923_1305.cpython-39.pyc b/checkout_72186587/migrations/__pycache__/0003_auto_20210923_1305.cpython-39.pyc new file mode 100644 index 0000000..45cd0ab Binary files /dev/null and b/checkout_72186587/migrations/__pycache__/0003_auto_20210923_1305.cpython-39.pyc differ diff --git a/checkout_72186587/migrations/__pycache__/__init__.cpython-39.pyc b/checkout_72186587/migrations/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000..63323a0 Binary files /dev/null and b/checkout_72186587/migrations/__pycache__/__init__.cpython-39.pyc differ diff --git a/checkout_72186587/models.py b/checkout_72186587/models.py new file mode 100644 index 0000000..38c7073 --- /dev/null +++ b/checkout_72186587/models.py @@ -0,0 +1,54 @@ +from django.db import models +from django.db.models.fields import BooleanField +from Productos.models import Producto + + +# Create your models here. +class CarritoCompras(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) + #(null=True, blank=True) + + + def __str__(self): + return self.usuario + + + def total(self): + pass + + def numArt(self): + pass + + +class Articulo(models.Model): + carrito = models.ForeignKey(CarritoCompras, on_delete=models.CASCADE) + producto = models.ForeignKey(Producto, on_delete=models.CASCADE) + cantidad = models.IntegerField() + + # def tipoEl(self): + # from Productos.serializers import TipoSerial + + def __str__(self): + return self.carrito+" - "+self.producto.nombre + + + def subtotal(self): + pass + + +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=300) + paais = models.CharField(max_length=300) + departamento = models.CharField(max_length=300) + ciudad = models.CharField(max_length=300) + + def __str__(self): + return self.nombre + \ No newline at end of file diff --git a/checkout_72186587/serializer.py b/checkout_72186587/serializer.py new file mode 100644 index 0000000..b0570e4 --- /dev/null +++ b/checkout_72186587/serializer.py @@ -0,0 +1,28 @@ +#Creamos los serializadores de nuestra aplicaci�n + +#Serializadores => convertir en diccionarios Python +# los objetos CRUD + +from rest_framework import serializers + +from checkout_72186587.models import * + +class CarritoSerial(serializers.ModelSerializer): + class Meta: + model = CarritoCompras + fields = '__all__' + #fields = ["nombre", "foto"] + + +class ArticuloSerial(serializers.ModelSerializer): + class Meta: + model = Articulo + fields = '__all__' + #fields = ["nombre", "precio", "descripcion", "marca", "ref", "tipoEl"] + + +class InfoSerial(serializers.ModelSerializer): + class Meta: + model = infoEnvio + fields = '__all__' + \ No newline at end of file diff --git a/checkout_72186587/tests.py b/checkout_72186587/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/checkout_72186587/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/checkout_72186587/urls.py b/checkout_72186587/urls.py new file mode 100644 index 0000000..6fb5b7e --- /dev/null +++ b/checkout_72186587/urls.py @@ -0,0 +1,18 @@ +#Especificamos las direcciones de las API's + +from django.urls import path, include +from rest_framework.routers import DefaultRouter +from checkout_72186587.views import * + +#CarritoComprasAPI, ArticuloAPI, infoEnvioAPI + +router = DefaultRouter() +router.register('Carrito', CarritoApi, basename="carrito") +router.register('Articulo', ArticuloApi, basename="articulo") +router.register('infoEnvio', InfoEnvioApi, basename="infoEnvio") + +urlpatterns = [ + path('crud/', include(router.urls)) +] + +#localhost:8000/.../api/crud/tipos \ No newline at end of file diff --git a/checkout_72186587/views.py b/checkout_72186587/views.py new file mode 100644 index 0000000..1da8660 --- /dev/null +++ b/checkout_72186587/views.py @@ -0,0 +1,101 @@ +from functools import partial +from django.http import request +from django.shortcuts import render +from rest_framework import viewsets +from rest_framework import response +from rest_framework.response import Response +from .serializer import * +from django.shortcuts import get_object_or_404 + + +# Create your views here. + +class CarritoApi(viewsets.ViewSet): + def list(self, request): + carritos = CarritoCompras.objects.all() + serializador = CarritoSerial(carritos, many=True) + return Response(serializador.data) + + def create(self, request): + # nuevoCarrito = CarritoCompras.objects.create(usuario=request.data["usuario"]) + serializador = CarritoSerial(data=request.data) + if serializador.is_valid: + serializador.save() + return Response({"Exito":True}) + return Response(serializador.errors) + + def retrieve(self, request, pk=None): + #obtner un solo registro de la base de datos + #pk es primari key + #carrito = CarritoCompras.objects.get(id=pk) + carrito = get_object_or_404(CarritoCompras, pk=pk) + serializador = CarritoSerial(carrito) + return Response(serializador.data) + + def partial_update(self, request, pk=None): + # se actualización parcial con el PATCH + carrito = get_object_or_404(CarritoCompras, pk=pk) + carritoS = CarritoSerial(carrito, request.data, partial=True) + if carritoS.is_valid(): + carritoS.save + return Response("Actualizado") + return Response(carritoS.errors) + + + def update(self, request, pk=None): + # se actualización parcial con el PUT + carrito = get_object_or_404(CarritoCompras, pk=pk) + carritoS = CarritoSerial(carrito, request.data) + if carritoS.is_valid(): + carritoS.save + return Response("Actualizado") + return Response(carritoS.errors) + + def destroy(self, request, pk=None): + carrito = CarritoCompras.objects.get(id = pk) + carrito.delete() + return response("Objeto borrado", True) + + + +class ArticuloApi(viewsets.ViewSet): + def list(self, request): + articulos = Articulo.objects.all() + serializador = ArticuloSerial(articulos, many=True) + return Response(serializador.data) + + def create(self, request): + # nuevoCarrito = CarritoCompras.objects.create(usuario=request.data["usuario"]) + serializador = ArticuloSerial(data=request.data) + if serializador.is_valid: + serializador.save() + return Response({"Exito":True}) + return Response(serializador.errors) + + def retrieve(self, request, pk=None): + #obtner un solo registro de la base de datos + #pk es primari key + articulos = get_object_or_404(CarritoCompras, pk=pk) + serializador = ArticuloSerial() + return Response(pk) + +class InfoEnvioApi(viewsets.ViewSet): + def list(self, request): + info = infoEnvio.objects.all() + serializador = InfoSerial(info, many=True) + return Response(serializador.data) + + def create(self, request): + # nuevoCarrito = CarritoCompras.objects.create(usuario=request.data["usuario"]) + serializador = InfoSerial(data=request.data) + if serializador.is_valid: + serializador.save() + return Response({"Exito":True}) + return Response(serializador.errors) + + def retrieve(self, request, pk=None): + #obtner un solo registro de la base de datos + #pk es primari key + info = get_object_or_404(CarritoCompras, pk=pk) + serializador = ArticuloSerial() + return Response(pk) \ No newline at end of file