diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..49ef255 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +db.sqlite3 diff --git a/ExEcommerce/__pycache__/__init__.cpython-39.pyc b/ExEcommerce/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000..c973a8d 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..19c3d9d 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..5847e8f 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..27a71e7 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..af1eb84 100644 --- a/ExEcommerce/settings.py +++ b/ExEcommerce/settings.py @@ -38,9 +38,15 @@ 'django.contrib.messages', 'django.contrib.staticfiles', 'Productos', + 'checkout1098681166_1', 'rest_framework', + + 'rest_framework.authtoken', + + 'rest_framework.authtoken', 'Checkout_1098730480' + ] REST_FRAMEWORK = { diff --git a/ExEcommerce/urls.py b/ExEcommerce/urls.py index 9ee5187..60ef07f 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('checkout1098681166_1.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..746d027 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..2110996 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..8a00514 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..e0acbe7 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..976c798 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..2c34c4c 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..beef6bd 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..01f731f 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..fe36a26 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..9825021 Binary files /dev/null and b/Productos/migrations/__pycache__/__init__.cpython-39.pyc differ diff --git a/Productos/urls.py b/Productos/urls.py index a157c08..c1518de 100644 --- a/Productos/urls.py +++ b/Productos/urls.py @@ -1,18 +1,35 @@ #Especificamos las direcciones de las API's + +from checkout1098681166_1.views import CarritoComprasAPI from django.urls import path, include from rest_framework.routers import DefaultRouter from Productos.views import ProductoAPI, TipoAPI, ComentarioAPI + +from .views import * + + router = DefaultRouter() router.register('tipo', TipoAPI) router.register('producto', ProductoAPI) router.register('comentario', ComentarioAPI, basename="comentario") +router.register('carrito', CarritoComprasAPI, basename="carrito") + +urlpatterns = [ + path('crud/', include(router.urls)) + +] + +#localhost:8000/productos/api/crud/tipo + + urlpatterns = [ path('crud/', include(router.urls)) ] -#localhost:8000/productos/api/crud/tipo \ No newline at end of file +#localhost:8000/productos/api/crud/tipo + diff --git a/checkout1098681166_1/__init__.py b/checkout1098681166_1/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/checkout1098681166_1/__pycache__/__init__.cpython-39.pyc b/checkout1098681166_1/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000..799b68c Binary files /dev/null and b/checkout1098681166_1/__pycache__/__init__.cpython-39.pyc differ diff --git a/checkout1098681166_1/__pycache__/admin.cpython-39.pyc b/checkout1098681166_1/__pycache__/admin.cpython-39.pyc new file mode 100644 index 0000000..82368f4 Binary files /dev/null and b/checkout1098681166_1/__pycache__/admin.cpython-39.pyc differ diff --git a/checkout1098681166_1/__pycache__/apps.cpython-39.pyc b/checkout1098681166_1/__pycache__/apps.cpython-39.pyc new file mode 100644 index 0000000..d0f726b Binary files /dev/null and b/checkout1098681166_1/__pycache__/apps.cpython-39.pyc differ diff --git a/checkout1098681166_1/__pycache__/models.cpython-39.pyc b/checkout1098681166_1/__pycache__/models.cpython-39.pyc new file mode 100644 index 0000000..1ad75db Binary files /dev/null and b/checkout1098681166_1/__pycache__/models.cpython-39.pyc differ diff --git a/checkout1098681166_1/__pycache__/serializers.cpython-39.pyc b/checkout1098681166_1/__pycache__/serializers.cpython-39.pyc new file mode 100644 index 0000000..5237719 Binary files /dev/null and b/checkout1098681166_1/__pycache__/serializers.cpython-39.pyc differ diff --git a/checkout1098681166_1/__pycache__/urls.cpython-39.pyc b/checkout1098681166_1/__pycache__/urls.cpython-39.pyc new file mode 100644 index 0000000..c5c0d7f Binary files /dev/null and b/checkout1098681166_1/__pycache__/urls.cpython-39.pyc differ diff --git a/checkout1098681166_1/__pycache__/views.cpython-39.pyc b/checkout1098681166_1/__pycache__/views.cpython-39.pyc new file mode 100644 index 0000000..912debb Binary files /dev/null and b/checkout1098681166_1/__pycache__/views.cpython-39.pyc differ diff --git a/checkout1098681166_1/admin.py b/checkout1098681166_1/admin.py new file mode 100644 index 0000000..6e522b0 --- /dev/null +++ b/checkout1098681166_1/admin.py @@ -0,0 +1,10 @@ +from checkout1098681166_1.models import Articulo, CarritoCompras, InfoEnvio +from django.contrib import admin + +from checkout1098681166_1.models import * + +# Register your models here. + +admin.site.register(CarritoCompras) +admin.site.register(Articulo) +admin.site.register(InfoEnvio) diff --git a/checkout1098681166_1/apps.py b/checkout1098681166_1/apps.py new file mode 100644 index 0000000..1791b6c --- /dev/null +++ b/checkout1098681166_1/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class Checkout1098681166Config(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'checkout1098681166_1' diff --git a/checkout1098681166_1/migrations/0001_initial.py b/checkout1098681166_1/migrations/0001_initial.py new file mode 100644 index 0000000..735ddef --- /dev/null +++ b/checkout1098681166_1/migrations/0001_initial.py @@ -0,0 +1,49 @@ +# Generated by Django 3.2.7 on 2021-09-22 02:29 + +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.DateTimeField(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')), + ('nombres', models.CharField(max_length=200)), + ('apellidos', 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)), + ('carrito', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='checkout1098681166_1.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='checkout1098681166_1.carritocompras')), + ('producto', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='Productos.producto')), + ], + ), + ] diff --git a/checkout1098681166_1/migrations/__init__.py b/checkout1098681166_1/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/checkout1098681166_1/migrations/__pycache__/0001_initial.cpython-39.pyc b/checkout1098681166_1/migrations/__pycache__/0001_initial.cpython-39.pyc new file mode 100644 index 0000000..b175bff Binary files /dev/null and b/checkout1098681166_1/migrations/__pycache__/0001_initial.cpython-39.pyc differ diff --git a/checkout1098681166_1/migrations/__pycache__/__init__.cpython-39.pyc b/checkout1098681166_1/migrations/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000..6fc4ebb Binary files /dev/null and b/checkout1098681166_1/migrations/__pycache__/__init__.cpython-39.pyc differ diff --git a/checkout1098681166_1/models.py b/checkout1098681166_1/models.py new file mode 100644 index 0000000..fc0189f --- /dev/null +++ b/checkout1098681166_1/models.py @@ -0,0 +1,53 @@ +from django.db import models +from django.db.models.aggregates import Max +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) + + def __str__(self): + return self.usuario + " - " + str(self.fecha) + + def total(self): + total = 0 + #articulos = Articulo.objects.all() #=> Trae TODOS los artículos de base de datos + # => Obtiene los registrados para este carrito + articulos = Articulo.objects.filter(carrito=self) + for articulo in articulos: + total += articulo.subtotal() + return total + + def numArt(self): + articulos = Articulo.objects.filter(carrito=self) + return len(articulos) + + +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): + return self.producto.precio*self.cantidad + + +class InfoEnvio(models.Model): + carrito = models.ForeignKey(CarritoCompras, on_delete=models.CASCADE) + nombres = models.CharField(max_length=200) + apellidos = 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__() diff --git a/checkout1098681166_1/serializers.py b/checkout1098681166_1/serializers.py new file mode 100644 index 0000000..a4beba4 --- /dev/null +++ b/checkout1098681166_1/serializers.py @@ -0,0 +1,22 @@ +from django.db.models import fields +from rest_framework import serializers + + +from checkout1098681166_1.models import * + +class CarritoSerial(serializers.ModelSerializer): + class Meta: + model = CarritoCompras + fields = '__all__' + + +class InfoSerial(serializers.ModelSerializer): + class Meta: + model = InfoEnvio + fields = '__all__' + + +class ArticuloSerial(serializers.ModelSerializer): + class Meta: + model = Articulo + fields = '__all__' diff --git a/checkout1098681166_1/tests.py b/checkout1098681166_1/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/checkout1098681166_1/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/checkout1098681166_1/urls.py b/checkout1098681166_1/urls.py new file mode 100644 index 0000000..21834cc --- /dev/null +++ b/checkout1098681166_1/urls.py @@ -0,0 +1,17 @@ +from checkout1098681166_1.views import CarritoComprasAPI +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('articulo', ArticuloAPI, basename="articulo") + +urlpatterns = [ + path('crud/', include(router.urls)) + +] + +#localhost:8000/productos/api/crud/tipo \ No newline at end of file diff --git a/checkout1098681166_1/views.py b/checkout1098681166_1/views.py new file mode 100644 index 0000000..409fa5c --- /dev/null +++ b/checkout1098681166_1/views.py @@ -0,0 +1,90 @@ +#from django.shortcuts import render + +# Create your views here. +from checkout1098681166_1.models import CarritoCompras +from rest_framework import viewsets +from rest_framework.response import Response +from rest_framework.status import HTTP_400_BAD_REQUEST + +# Create your views here. + +from .serializers import * + +#----------------------------------CARRITO---------------------------------------# + +class CarritoComprasAPI(viewsets.ViewSet): + def list(self, request): + #request => peticiones de usuario + #List => cumple el objetivo de listar una serie de registros en la DB + carritos = CarritoCompras.objects.all() + serializador = CarritoSerial(carritos, many=True) + return Response(serializador.data) + + def create(self, request): + #Crear registros en la DB + #nuevoCarrito = CarritoCompras.objects.create(usuario=request.data["usuario"]) + serialCarrito = CarritoSerial(data=request.data) + if serialCarrito.is_valid(): + serialCarrito.save() + return Response({"Exito":True}) + return Response(serialCarrito.errors) + + def retrieve(self, request, pk=None): + #pk => identificar y obtener objetos + #retrieve => obtener informacion de uno o varios objetos a partir de la info enviada en la url + carritosUsuario = CarritoCompras.objects.filter(usuario=pk) # filter muchos objetos + carritoS = CarritoSerial(carritosUsuario, many=True) + return(pk) + +#--------------------------------ARTICULO--------------------------------------------# + +class ArticuloAPI(viewsets.ViewSet): + def list(self, request): + #request => peticiones de usuario + #List => cumple el objetivo de listar una serie de registros en la DB + articulos = Articulo.objects.all() + serializador = ArticuloSerial(articulos, many=True) + return Response(serializador.data) + + def create(self, request): + #Crear registros en la DB + #nuevoCarrito = CarritoCompras.objects.create(usuario=request.data["usuario"]) + serialArticulo = ArticuloSerial(data=request.data) + if serialArticulo.is_valid(): + serialArticulo.save() + return Response({"Exito": True}) + return Response(serialArticulo.errors) + + def retrieve(self, request, pk=None): + #pk => identificar y obtener objetos + #retrieve => obtener informacion de uno o varios objetos a partir de la info enviada en la url + articuloUsuario = Articulo.objects.get(pk=pk) # filter muchos objetos + articuloS = ArticuloSerial(articuloUsuario) + return Response(articuloS.data) + +#--------------------------------INFO ENVIO--------------------------------------------# + + +class InfoAPI(viewsets.ViewSet): + def list(self, request): + #request => peticiones de usuario + #List => cumple el objetivo de listar una serie de registros en la DB + envios = InfoEnvio.objects.all() + serializador = InfoSerial(envios, many=True) + return Response(serializador.data) + + def create(self, request): + #Crear registros en la DB + #nuevoCarrito = CarritoCompras.objects.create(usuario=request.data["usuario"]) + serialEnvio = InfoSerial(data=request.data) + if serialEnvio.is_valid(): + serialEnvio.save() + return Response({"Exito": True}) + return Response(serialEnvio.errors) + + def retrieve(self, request, pk=None): + #pk => identificar y obtener objetos + #retrieve => obtener informacion de uno o varios objetos a partir de la info enviada en la url + envioUsuario = Articulo.objects.filter(usuario=pk) # filter muchos objetos + envioS = InfoSerial(envioUsuario, many=True) + return Response(pk) diff --git a/prueba.txt b/prueba.txt new file mode 100644 index 0000000..e69de29