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 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.
1 change: 1 addition & 0 deletions ExEcommerce/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
'django.contrib.messages',
'django.contrib.staticfiles',
'Productos',
'checkout1073246233',
'rest_framework',
'rest_framework.authtoken',
'Checkout',
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('checkout1073246233.urls')),

path('checkout/api/', include('Checkout.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.
Empty file added checkout1073246233/__init__.py
Empty file.
Binary file not shown.
Binary file added checkout1073246233/__pycache__/admin.cpython-39.pyc
Binary file not shown.
Binary file added checkout1073246233/__pycache__/apps.cpython-39.pyc
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file added checkout1073246233/__pycache__/urls.cpython-39.pyc
Binary file not shown.
Binary file not shown.
11 changes: 11 additions & 0 deletions checkout1073246233/admin.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
from django.contrib import admin
from .models import *
# Register your models here.
admin.site.register(CarritoCompras)
admin.site.register(Articulo)
admin.site.register(InfoEnvio)

'''
usuario = juand
contra = 123
'''
6 changes: 6 additions & 0 deletions checkout1073246233/apps.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
from django.apps import AppConfig


class Checkout1073246233Config(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'checkout1073246233'
49 changes: 49 additions & 0 deletions checkout1073246233/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-21 02:54

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=100)),
('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')),
('nombre', models.CharField(max_length=100)),
('apellido', models.CharField(max_length=100)),
('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='checkout1073246233.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='checkout1073246233.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.
48 changes: 48 additions & 0 deletions checkout1073246233/models.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
from django.db import models
from Productos.models import Producto
# Create your models here.

class CarritoCompras(models.Model):
usuario = models.CharField(max_length=100)
fecha = models.DateField(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
articuloscarro = self.articulo_set.all()
for articulo in articuloscarro:
total += articulo.subtotal()
return total
@property
def numArt(self):
articulos = self.articulo_set.all()
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)
nombre = models.CharField(max_length=100)
apellido = models.CharField(max_length=100)
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__()
17 changes: 17 additions & 0 deletions checkout1073246233/serializers.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
from .models import *
from rest_framework import serializers

class CarritoComprasSerial(serializers.ModelSerializer):
class Meta :
model = CarritoCompras
fields ='__all__'

class ArticuloSerial(serializers.ModelSerializer):
class Meta:
model = Articulo
fields = '__all__'

class InfoSerial(serializers.ModelSerializer):
class Meta:
model = InfoEnvio
fields = '__all__'
3 changes: 3 additions & 0 deletions checkout1073246233/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.
15 changes: 15 additions & 0 deletions checkout1073246233/urls.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
from django.urls import path,include
from rest_framework import urlpatterns

from rest_framework.routers import DefaultRouter
from checkout1073246233.views import *

router = DefaultRouter()

router.register('carrito',CarritoComprasAPI,basename='Carrito')
router.register('articulos',ArticulosAPI,basename='Articulo')
router.register('infoenvio',InfoAPI,basename='Info')

urlpatterns = [
path('crud/',include(router.urls))
]
68 changes: 68 additions & 0 deletions checkout1073246233/views.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
from rest_framework import viewsets
from rest_framework.response import Response
from rest_framework.status import HTTP_400_BAD_REQUEST

from checkout1073246233.serializers import *
from checkout1073246233.models import *

class CarritoComprasAPI(viewsets.ViewSet):
def list(self, request):
carritos = CarritoCompras.objects.all()
serializer = CarritoComprasSerial(carritos, many=True)
return Response(serializer.data)

def create(self, request):
serializer = CarritoComprasSerial(data=request.data)
if serializer.is_valid():
carrito = serializer.save()
return Response({'idCarrito':carrito.id})
return Response(serializer.errors, HTTP_400_BAD_REQUEST)
def retrieve(self, request, pk=None):
#Obtener uno o varios objetos de la base de datos
#pk -> llave primaria - metodo de identificacion de objetos
carritos = CarritoCompras.objects.get(pk=pk)
serializador = CarritoComprasSerial(carritos)
return Response(serializador.data)

def partial_update(self, request, pk=None):
carrito = self.get_object()
data = {'pagado':True}
serializer = CarritoComprasSerial(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()
serializer = ArticuloSerial(articulos, many=True)
return Response(serializer.data)

def create(self, request):
serializer = ArticuloSerial(data=request.data, many=True)
if serializer.is_valid():
serializer.save()
return Response({'Creados':True})
return Response(serializer.errors, HTTP_400_BAD_REQUEST)

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

class InfoAPI(viewsets.ViewSet):
def list(self,request):
info = InfoEnvio.objects.all()
serializador = InfoSerial(info,many=True)
return Response(serializador.data)

def create(self,request):
serializador = InfoSerial(data = request.data)
if serializador.is_valid():
serializador.save()
return Response({'DatosListos':True})
return Response(serializador.errors)

def partial_update():
pass