diff --git a/essenza/.gitignore b/.gitignore similarity index 79% rename from essenza/.gitignore rename to .gitignore index 6427dc2d..e3b2dd45 100644 --- a/essenza/.gitignore +++ b/.gitignore @@ -7,16 +7,18 @@ __pycache__/ # Entorno virtual venv/ .env/ +.venv # Archivos de base de datos -db.sqlite3 # Archivos de migraciones (si quieres omitirlos) -*/migrations/__pycache__/ -*/migrations/*.py +**/migrations/__pycache__/ +**/migrations/*.py # Archivos de configuración de VSCode .vscode/ # Archivos de Django estáticos staticfiles/ + +**/*.sqlite3 \ No newline at end of file diff --git a/essenza/db.sqlite3 b/essenza/db.sqlite3 new file mode 100644 index 00000000..979deb74 Binary files /dev/null and b/essenza/db.sqlite3 differ diff --git a/essenza/essenza/settings.py b/essenza/essenza/settings.py index a05738be..f1a04d8b 100644 --- a/essenza/essenza/settings.py +++ b/essenza/essenza/settings.py @@ -37,6 +37,9 @@ 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', + 'user', + 'product', + 'order', ] MIDDLEWARE = [ diff --git a/essenza/order/__init__.py b/essenza/order/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/essenza/order/admin.py b/essenza/order/admin.py new file mode 100644 index 00000000..54957e86 --- /dev/null +++ b/essenza/order/admin.py @@ -0,0 +1,6 @@ +from django.contrib import admin +from .models import Order, OrderProduct, Status +# Register your models here. + +admin.site.register(Order) +admin.site.register(OrderProduct) diff --git a/essenza/order/apps.py b/essenza/order/apps.py new file mode 100644 index 00000000..42888e45 --- /dev/null +++ b/essenza/order/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class OrderConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'order' diff --git a/essenza/order/models.py b/essenza/order/models.py new file mode 100644 index 00000000..d623635f --- /dev/null +++ b/essenza/order/models.py @@ -0,0 +1,27 @@ +from django.db import models + +# Create your models here. +class Status(models.TextChoices): + PENDING = 'pending', 'Pending' + PAID = 'paid', 'Paid' + SHIPPED = 'shipped', 'Shipped' + +class Order(models.Model): + user = models.ForeignKey('user.Usuario', on_delete=models.CASCADE, related_name='orders') + adress = models.CharField(max_length=255) + placed_at = models.DateTimeField(auto_now=True) + total_price = models.DecimalField(max_digits=10, decimal_places=2) + status = models.CharField(max_length=10, choices=Status.choices, default=Status.PENDING) + + def __str__(self): + return f"Order {self.id} by {self.user.email}" + + +class OrderProduct(models.Model): + order = models.ForeignKey('order.Order', on_delete=models.CASCADE, related_name='order_products') + product = models.ForeignKey('product.Product', on_delete=models.CASCADE, related_name='product_orders') + quantity = models.IntegerField() + unity_price = models.DecimalField(max_digits=10, decimal_places=2) + + def __str__(self): + return f"{self.quantity} of {self.product.name} in order {self.order.id}" diff --git a/essenza/order/tests.py b/essenza/order/tests.py new file mode 100644 index 00000000..7ce503c2 --- /dev/null +++ b/essenza/order/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/essenza/order/views.py b/essenza/order/views.py new file mode 100644 index 00000000..91ea44a2 --- /dev/null +++ b/essenza/order/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here. diff --git a/essenza/product/__init__.py b/essenza/product/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/essenza/product/admin.py b/essenza/product/admin.py new file mode 100644 index 00000000..3617350c --- /dev/null +++ b/essenza/product/admin.py @@ -0,0 +1,5 @@ +from django.contrib import admin +from .models import Category, Product + +# Register your models here. +admin.site.register(Product) diff --git a/essenza/product/apps.py b/essenza/product/apps.py new file mode 100644 index 00000000..235a3339 --- /dev/null +++ b/essenza/product/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class ProductConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'product' diff --git a/essenza/product/models.py b/essenza/product/models.py new file mode 100644 index 00000000..a095a5c1 --- /dev/null +++ b/essenza/product/models.py @@ -0,0 +1,22 @@ +from django.db import models + +# Create your models here. +class Category(models.TextChoices): + MAQUILLAJE = 'maquillaje', 'Maquillaje' + TRATAMIENTO = 'tratamiento', 'Tratamiento' + CABELLO = 'cabello', 'Cabello' + PERFUME = 'perfume', 'Perfume' + +class Product(models.Model): + name = models.CharField(max_length=255) + description = models.TextField() + categoria = models.CharField(max_length=20, choices=Category.choices) + brand = models.CharField(max_length=255) + price = models.DecimalField(max_digits=10, decimal_places=2) + foto = models.URLField(blank=True, null=True) + stock = models.IntegerField() + is_active = models.BooleanField(default=False) + + def __str__(self): + return self.name + diff --git a/essenza/product/tests.py b/essenza/product/tests.py new file mode 100644 index 00000000..7ce503c2 --- /dev/null +++ b/essenza/product/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/essenza/product/views.py b/essenza/product/views.py new file mode 100644 index 00000000..91ea44a2 --- /dev/null +++ b/essenza/product/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here. diff --git a/essenza/user/__init__.py b/essenza/user/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/essenza/user/admin.py b/essenza/user/admin.py new file mode 100644 index 00000000..34516ebb --- /dev/null +++ b/essenza/user/admin.py @@ -0,0 +1,5 @@ +from django.contrib import admin +from .models import Role, Usuario +# Register your models here. + +admin.site.register(Usuario) diff --git a/essenza/user/apps.py b/essenza/user/apps.py new file mode 100644 index 00000000..36cce4c8 --- /dev/null +++ b/essenza/user/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class UserConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'user' diff --git a/essenza/user/models.py b/essenza/user/models.py new file mode 100644 index 00000000..9eb3d233 --- /dev/null +++ b/essenza/user/models.py @@ -0,0 +1,21 @@ +from django.db import models + +# Create your models here. +class Role(models.TextChoices): + ADMIN = 'admin', 'Admin' + USER = 'user', 'User' + + +class Usuario(models.Model): + name = models.CharField(max_length=255) + email = models.EmailField(max_length=255, unique=True) + foto = models.URLField(blank=True, null=True) + password = models.CharField(max_length=255) + role = models.CharField(max_length=10, choices=Role.choices, default=Role.USER) + + def __str__(self): + return self.email + +# user1@example.com, user +# user2@example.com, user +# admin1@example.com, admin \ No newline at end of file diff --git a/essenza/user/tests.py b/essenza/user/tests.py new file mode 100644 index 00000000..7ce503c2 --- /dev/null +++ b/essenza/user/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/essenza/user/views.py b/essenza/user/views.py new file mode 100644 index 00000000..91ea44a2 --- /dev/null +++ b/essenza/user/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here.