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
Binary file modified ExEcommerce/__pycache__/__init__.cpython-38.pyc
Binary file not shown.
Binary file modified ExEcommerce/__pycache__/settings.cpython-38.pyc
Binary file not shown.
Binary file modified ExEcommerce/__pycache__/urls.cpython-38.pyc
Binary file not shown.
Binary file modified ExEcommerce/__pycache__/wsgi.cpython-38.pyc
Binary file not shown.
2 changes: 1 addition & 1 deletion ExEcommerce/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
'django.contrib.staticfiles',
'Productos',
'rest_framework',
'rest_framework.authtoken'
'rest_framework.authtoken','checkout_80159226',
]

REST_FRAMEWORK = {
Expand Down
3 changes: 2 additions & 1 deletion ExEcommerce/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,6 @@

urlpatterns = [
path('admin/', admin.site.urls),
path('productos/api/', include('Productos.urls'))
path('productos/api/', include('Productos.urls')),
path("checkout/api/", include("checkout_80159226.urls"))
]
Binary file modified Productos/__pycache__/__init__.cpython-38.pyc
Binary file not shown.
Binary file modified Productos/__pycache__/admin.cpython-38.pyc
Binary file not shown.
Binary file added Productos/__pycache__/apps.cpython-38.pyc
Binary file not shown.
Binary file modified Productos/__pycache__/models.cpython-38.pyc
Binary file not shown.
Binary file modified Productos/__pycache__/serializers.cpython-38.pyc
Binary file not shown.
Binary file modified Productos/__pycache__/urls.cpython-38.pyc
Binary file not shown.
Binary file modified Productos/__pycache__/views.cpython-38.pyc
Binary file not shown.
Binary file modified Productos/migrations/__pycache__/0001_initial.cpython-38.pyc
Binary file not shown.
Binary file not shown.
Binary file modified Productos/migrations/__pycache__/__init__.cpython-38.pyc
Binary file not shown.
Empty file added checkout_80159226/__init__.py
Empty file.
Binary file not shown.
Binary file added checkout_80159226/__pycache__/admin.cpython-38.pyc
Binary file not shown.
Binary file added checkout_80159226/__pycache__/apps.cpython-38.pyc
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file added checkout_80159226/__pycache__/urls.cpython-38.pyc
Binary file not shown.
Binary file not shown.
6 changes: 6 additions & 0 deletions checkout_80159226/admin.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
from django.contrib import admin

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


class Checkout80159226Config(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'checkout_80159226'
49 changes: 49 additions & 0 deletions checkout_80159226/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 00:52

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')),
('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='checkout_80159226.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_80159226.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.
57 changes: 57 additions & 0 deletions checkout_80159226/models.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
from django.db import models
from django.contrib.auth import get_user_model
#SE DEDE IMPORTAR LA CLASE PRODUCTO
# PORQUE ASI LO INDICA EL MODELO UML

from Productos.models import Producto

class CarritoCompras(models.Model):
#ATRIBUTOS
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)

#METODOS

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

@property
def total(self):
total=0
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 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__()

class Articulo(models.Model):
carrito = models.ForeignKey(CarritoCompras, on_delete=models.CASCADE)
producto= models.ForeignKey(Producto, on_delete=models.SET_NULL, null=True) #Se hace esta confifiguracicion porque es una relacion tio asociacion
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
18 changes: 18 additions & 0 deletions checkout_80159226/serializers.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
from rest_framework import serializers

from .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 checkout_80159226/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.
13 changes: 13 additions & 0 deletions checkout_80159226/urls.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
from django.urls import path, include

from rest_framework.routers import DefaultRouter

#viesets trabajan las direcciones internas con Routers

from .views import *
router = DefaultRouter()
router.register("carrito", CarritoComprasAPI, basename="carrito")
router.register("articulos", ArticulosAPI,basename="articulos")
urlpatterns =[
path("crud/", include(router.urls))
]
73 changes: 73 additions & 0 deletions checkout_80159226/views.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
from rest_framework import viewsets
from rest_framework.response import Response
from rest_framework.status import HTTP_400_BAD_REQUEST
from django.shortcuts import get_object_or_404

from .serializers import *


class CarritoComprasAPI(viewsets.ViewSet):
def list (self, request): #lista una serie de componentes de la base de datos
# request peticiones de usuario (GET, POST)
carritos = CarritoCompras.objects.all()
serializador = CarritoSerial(carritos, many=True)
return Response(serializador.data)

def create (self, request):

#nuevoCarritos = CarritoCompras.objects.create(usuario = request.data["usuario"], dcto=request.data["dcto"], cantMinima=request.data["cantMinima"])

serialCarrito = CarritoSerial(data=request.data)
if serialCarrito.is_valid():
serialCarrito.save()
return Response({"Exito": True})
return Response(serialCarrito.errors)

def retrieve(selfself, request, pk=None):
#pk primary key es decir argumento que permite indentificar u obtener
#retrieve enviar la informacion de uno o varios objetos
carritosUsuarios = CarritoCompras.objects.filter(usuario=pk)
carritoS= CarritoSerial(carritosUsuarios, many= True)
return Response(carritoS.data)

def partial_update(self, request, pk=None):
carrito = get_object_or_404(CarritoCompras, pk=pk)
data = {'pagado': True}
serializer = CarritoSerial(carrito, data, partial=True)
if serializer.is_valid():
serializer.save()
return Response({'update': True})
return Response(serializer.errors, HTTP_400_BAD_REQUEST)


class ArticulosAPI(viewsets.ViewSet):
def list(self, request):
articulos = Articulo.objects.all()
serializador = ArticuloSerial(articulos, many=True)
return Response(serializador.data)

def create(self, request):
serializadorArticulo = ArticuloSerial(data=request.data)
if serializadorArticulo.is_valid():
serializadorArticulo.save()
return Response({"Exito":True})
return Response(serializadorArticulo.errors)

def retrieve(self, request, pk= None):
articulos= Articulo.objects.get(pk=pk)
serializador= ArticuloSerial(articulos)
return Response(serializador.data)


def partial_update(self, request, pk=None):
artModificar = Articulo.objects.get(pk=pk)
serializador=ArticuloSerial(artModificar, request.data, partial= True)
if serializador.is_valid():
serializador.save()
return Response({"Actualizado":True})
return Response (serializador.errors)

def destroy(self, request, pk=None):
pass


Binary file removed db.sqlite3
Binary file not shown.