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
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
/db.sqlite3
/ExEcommerce/settings.py
/ExEcommerce/urls.py
Empty file added Checkout/__init__.py
Empty file.
Binary file added Checkout/__pycache__/__init__.cpython-39.pyc
Binary file not shown.
Binary file added Checkout/__pycache__/admin.cpython-39.pyc
Binary file not shown.
Binary file added Checkout/__pycache__/apps.cpython-39.pyc
Binary file not shown.
Binary file added Checkout/__pycache__/models.cpython-39.pyc
Binary file not shown.
Binary file added Checkout/__pycache__/serializers.cpython-39.pyc
Binary file not shown.
Binary file added Checkout/__pycache__/urls.cpython-39.pyc
Binary file not shown.
Binary file added Checkout/__pycache__/views.cpython-39.pyc
Binary file not shown.
7 changes: 7 additions & 0 deletions Checkout/admin.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
from Checkout.models import Articulo, CarritoCompras, InfoEnvio
from django.contrib import admin

# Register your models here.
admin.site.register(CarritoCompras)
admin.site.register(Articulo)
admin.site.register(InfoEnvio)
6 changes: 6 additions & 0 deletions Checkout/apps.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
from django.apps import AppConfig


class CheckoutConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'Checkout'
48 changes: 48 additions & 0 deletions Checkout/migrations/0001_initial.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# Generated by Django 3.2.7 on 2021-09-20 20:47

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=30)),
('fecha', models.DateField(auto_now=True)),
('dcto', models.FloatField()),
('cantMinima', models.IntegerField()),
('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=30)),
('apellido', models.CharField(max_length=30)),
('pais', models.CharField(max_length=30)),
('departamento', models.CharField(max_length=30)),
('ciudad', models.CharField(max_length=30)),
('carrito', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='Checkout.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.carritocompras')),
('producto', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='Productos.producto')),
],
),
]
60 changes: 60 additions & 0 deletions Checkout/migrations/0002_auto_20210921_1544.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
# Generated by Django 3.2.7 on 2021-09-21 20:44

from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

dependencies = [
('Productos', '0002_auto_20210916_1521'),
('Checkout', '0001_initial'),
]

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='cantMinima',
field=models.IntegerField(default=0),
),
migrations.AlterField(
model_name='carritocompras',
name='fecha',
field=models.DateTimeField(auto_now_add=True),
),
migrations.AlterField(
model_name='carritocompras',
name='usuario',
field=models.CharField(max_length=200),
),
migrations.AlterField(
model_name='infoenvio',
name='apellido',
field=models.CharField(max_length=200),
),
migrations.AlterField(
model_name='infoenvio',
name='ciudad',
field=models.CharField(max_length=200),
),
migrations.AlterField(
model_name='infoenvio',
name='departamento',
field=models.CharField(max_length=200),
),
migrations.AlterField(
model_name='infoenvio',
name='nombre',
field=models.CharField(max_length=200),
),
migrations.AlterField(
model_name='infoenvio',
name='pais',
field=models.CharField(max_length=200),
),
]
Empty file added Checkout/migrations/__init__.py
Empty file.
Binary file not shown.
Binary file not shown.
Binary file not shown.
46 changes: 46 additions & 0 deletions Checkout/models.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
from Productos.models import Producto
from django.db import models
from django.db.models.fields import BooleanField, CharField, IntegerField
from django.db.models.fields.related import ForeignKey

# Create your models here.
class CarritoCompras(models.Model):
usuario = models.CharField(max_length=200)
fecha = models.DateTimeField(auto_now_add=True)
dcto = models.FloatField()
cantMinima = models.IntegerField(default=0)
pagado = models.BooleanField(default=False)

def __str__(self):
return self.usuario + " - " + str(self.fecha)

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.SET_NULL, null=True)
cantidad = models.IntegerField(default=0)

def __str__(self):
return self.carrito.__str__() + " / " + self.producto.__str__()


def subtotal(self): # => precio unitario * cantidad
return self.cantidad*self.producto.precio

class InfoEnvio(models.Model):
carrito = models.ForeignKey(CarritoCompras, on_delete=models.CASCADE)
nombre = models.CharField(max_length=200)
apellido = 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__()


19 changes: 19 additions & 0 deletions Checkout/serializers.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
from django.db.models import fields
from rest_framework import serializers

from .models import * # => from checkout.models import *

class CarritoSerial(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__'
3 changes: 3 additions & 0 deletions Checkout/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.
16 changes: 16 additions & 0 deletions Checkout/urls.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
from django.urls import path, include
from rest_framework import urlpatterns
from rest_framework.routers import DefaultRouter
from .views import *
# Viewset => especificamos las rutas mediante 'routers'

router = DefaultRouter() #> agregamos las direccines de nuestros viewsets

router.register('carrito', CarritoAPI, basename="carrito")
router.register('articulo', ArticuloAPI, basename="articulo")
router.register('infoEnvio', InfoEnvioAPI, basename="infoEnvio")

urlpatterns = [
#Lista de direcciones locales
path('crud/', include(router.urls))
]
152 changes: 152 additions & 0 deletions Checkout/views.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,152 @@
from django.shortcuts import render
from rest_framework import viewsets
from rest_framework.response import Response
from django.shortcuts import get_object_or_404
from .serializers import *

# Create your views here.

class CarritoAPI(viewsets.ViewSet):
def list(self, request):
#Listar Informacion
#request => peticion de usuarios. GET, POST, PUT, ...
carritos = CarritoCompras.objects.all()
serializador = CarritoSerial(carritos, many = True)
return Response(serializador.data)


def create(self, request):
# Crear registros en bases de datos
#nuevoCarrito = CarritoCompras.objects.create(usuario=request.data["usuario"])
serializador = CarritoSerial(data=request.data)
if serializador.is_valid():
serializador.save() #Grauda el nuevo objeto
return Response({"Exito":True}) #Creo el objeto
return Response(serializador.errors)


def retrieve(self, request, pk=None):
#Obtener un solo registro de la base de datos
#pk => Primary key
carrito = get_object_or_404(CarritoCompras, pk = pk)
serializador = CarritoSerial(carrito)
return Response(serializador.data)

def partial_update(self, request, pk=None):
#Actualización parcial => 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):
#Actualiza registros => 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):
#borramos elementos en base de datos
carrito = CarritoCompras.objects.get(id=pk)
carrito.delete()
return Response({"Objeto borrado":True})

class ArticuloAPI(viewsets.ViewSet):
def list(self, request):
#Listar Informacion
#request => peticion de usuarios. GET, POST, PUT, ...
articulo = Articulo.objects.all()
serializador = ArticuloSerial(articulo, many = True)
return Response(serializador.data)

def create(self, request):
# Crear registros en bases de datos
serializador = ArticuloAPI(data=request.data)
if serializador.is_valid():
serializador.save()
return Response({"Exito":True})
return Response(serializador.errors)

def retrieve(self, request, pk=None):
#Obtener un solo registro de la base de datos
#pk => Primary key
articulo = get_object_or_404(Articulo, pk=pk)
serializador = ArticuloSerial(articulo)
return Response(serializador.data)

def partial_update(self, request, pk=None):
#Actualización parcial => PATCH
carrito = get_object_or_404(Articulo, pk=pk)
articuloS = ArticuloSerial(Articulo, request.data, partial=True)
if articuloS.is_valid():
articuloS.save()
return Response("Actualizado")
return Response(articuloS.errors)

def update(self, request, pk=None):
#Actualiza registros => PUT
articulo = get_object_or_404(Articulo, pk=pk)
articuloS = ArticuloSerial(articulo, request.data)
if articuloS.is_valid():
articuloS.save()
return Response("Actualizado")
return Response(articuloS.errors)

def destroy(self, request, pk=None):
#borramos elementos en base de datos
articulo = Articulo.objects.get(id=pk)
articulo.delete()
return Response({"Objeto borrado":True})

class InfoEnvioAPI(viewsets.ViewSet):
def list(self, request):
#Listar Informacion
#request => peticion de usuarios. GET, POST, PUT, ...
infoEnvio = InfoEnvio.objects.all()
serializador = InfoEnvioSerial(infoEnvio, many = True)
return Response(serializador.data)

def create(self, request):
# Crear registros en bases de datos
serializador = InfoEnvioAPI(data=request.data)
if serializador.is_valid():
serializador.save()
return Response({"Exito":True})
return Response(serializador.errors)

def retrieve(self, request, pk=None):
#Obtener un solo registro de la base de datos
#pk => Primary key
infoenvio = get_object_or_404(InfoEnvio, pk=pk)
serializador = InfoEnvioSerial(InfoEnvio)
return Response(serializador.data)

def partial_update(self, request, pk=None):
#Actualización parcial => PATCH
infoEnvio = get_object_or_404(InfoEnvio, pk=pk)
infoEnvioS = InfoEnvioSerial(infoEnvio, request.data, partial=True)
if infoEnvioS.is_valid():
infoEnvioS.save()
return Response("Actualizado")
return Response(infoEnvioS.errors)

def update(self, request, pk=None):
#Actualiza registros => PUT
infoEnvio = get_object_or_404(InfoEnvio, pk=pk)
infoEnvioS = InfoEnvioSerial(infoEnvio, request.data)
if infoEnvioS.is_valid():
infoEnvioS.save()
return Response("Actualizado")
return Response(infoEnvioS.errors)

def destroy(self, request, pk=None):
#borramos elementos en base de datos
infoEnvio = InfoEnvio.objects.get(id=pk)
infoEnvio.delete()
return Response({"Objeto borrado":True})
25 changes: 25 additions & 0 deletions Codifo APIS.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
class CarritoAPI(viewsets.ViewS
def partial_update(self, request, pk=None):
#Actualización parcial => 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):
#Actualiza registros => 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):
#borramos elementos en base de datos
carrito = CarritoCompras.objects.get(id=pk)
carrito.delete()
return Response({"Objeto borrado":True})
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.
Loading