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
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
db.sqlite3
Binary file added ExEcommerce/__pycache__/__init__.cpython-39.pyc
Binary file not shown.
Binary file added ExEcommerce/__pycache__/settings.cpython-39.pyc
Binary file not shown.
Binary file added ExEcommerce/__pycache__/urls.cpython-39.pyc
Binary file not shown.
Binary file added ExEcommerce/__pycache__/wsgi.cpython-39.pyc
Binary file not shown.
6 changes: 6 additions & 0 deletions ExEcommerce/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -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 = {
Expand Down
4 changes: 4 additions & 0 deletions ExEcommerce/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -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'))

]
Binary file added Productos/__pycache__/__init__.cpython-39.pyc
Binary file not shown.
Binary file added Productos/__pycache__/admin.cpython-39.pyc
Binary file not shown.
Binary file added Productos/__pycache__/apps.cpython-39.pyc
Binary file not shown.
Binary file added Productos/__pycache__/models.cpython-39.pyc
Binary file not shown.
Binary file added Productos/__pycache__/serializers.cpython-39.pyc
Binary file not shown.
Binary file added Productos/__pycache__/urls.cpython-39.pyc
Binary file not shown.
Binary file added Productos/__pycache__/views.cpython-39.pyc
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
19 changes: 18 additions & 1 deletion Productos/urls.py
Original file line number Diff line number Diff line change
@@ -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
#localhost:8000/productos/api/crud/tipo

Empty file.
Binary file not shown.
Binary file not shown.
Binary file added checkout1098681166_1/__pycache__/apps.cpython-39.pyc
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file added checkout1098681166_1/__pycache__/urls.cpython-39.pyc
Binary file not shown.
Binary file not shown.
10 changes: 10 additions & 0 deletions checkout1098681166_1/admin.py
Original file line number Diff line number Diff line change
@@ -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)
6 changes: 6 additions & 0 deletions checkout1098681166_1/apps.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
from django.apps import AppConfig


class Checkout1098681166Config(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'checkout1098681166_1'
49 changes: 49 additions & 0 deletions checkout1098681166_1/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-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')),
],
),
]
Empty file.
Binary file not shown.
Binary file not shown.
53 changes: 53 additions & 0 deletions checkout1098681166_1/models.py
Original file line number Diff line number Diff line change
@@ -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__()
22 changes: 22 additions & 0 deletions checkout1098681166_1/serializers.py
Original file line number Diff line number Diff line change
@@ -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__'
3 changes: 3 additions & 0 deletions checkout1098681166_1/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.
17 changes: 17 additions & 0 deletions checkout1098681166_1/urls.py
Original file line number Diff line number Diff line change
@@ -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
90 changes: 90 additions & 0 deletions checkout1098681166_1/views.py
Original file line number Diff line number Diff line change
@@ -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)
Empty file added prueba.txt
Empty file.