diff --git a/apps/orders/admin.py b/apps/orders/admin.py
index 8c38f3f..996d636 100644
--- a/apps/orders/admin.py
+++ b/apps/orders/admin.py
@@ -1,3 +1,31 @@
from django.contrib import admin
+from django.utils.html import format_html
+from import_export.admin import ImportExportModelAdmin
-# Register your models here.
+from apps.orders.models import Product, ShoppingCar
+
+@admin.register(Product)
+class ProductAdmin(admin.ModelAdmin):
+ search_fields = ['name', 'description']
+ list_display = ('name', 'foto', 'price', 'is_active')
+ list_filter = ('is_active',)
+ fields = ('name', 'imagen', 'description', 'price', 'is_active')
+
+ def foto(self, obj):
+ if obj.imagen:
+ return format_html('
'.format(obj.imagen.url))
+ return ""
+
+@admin.register(ShoppingCar)
+class ShoppingCarAdmin(admin.ModelAdmin):
+ search_fields = ['name', 'description']
+ list_display = ('item', 'foto', 'price')
+ fields = ('name', 'imagen', 'description', 'price')
+
+ def carrito(self, obj):
+ return ""
+
+ def foto(self, obj):
+ if obj.item.imagen:
+ return format_html('
'.format(obj.imagen.url))
+ return ""
\ No newline at end of file
diff --git a/apps/orders/models/__init__.py b/apps/orders/models/__init__.py
index e69de29..aded5ae 100644
--- a/apps/orders/models/__init__.py
+++ b/apps/orders/models/__init__.py
@@ -0,0 +1,2 @@
+from .product import Product
+from .shopping_car import ShoppingCar
\ No newline at end of file
diff --git a/apps/orders/models/shoping_car.py b/apps/orders/models/shopping_car.py
similarity index 64%
rename from apps/orders/models/shoping_car.py
rename to apps/orders/models/shopping_car.py
index b419181..289a9b0 100644
--- a/apps/orders/models/shoping_car.py
+++ b/apps/orders/models/shopping_car.py
@@ -1,16 +1,16 @@
from django.db import models
from apps.users.models import CustomUser
+from apps.orders.models import Product
class ShoppingCar(models.Model):
user = models.ForeignKey(
CustomUser,
- on_delete = models.CASCADE,
+ on_delete = models.CASCADE,
blank=True, null=True
)
- name = models.ForeignKey(
- CustomUser,
- on_delete = models.CASCADE,
- blank=True, null=True
+ item = models.ForeignKey(
+ Product,
+ on_delete = models.CASCADE
)
quantity = models.FloatField(default=1)
price = models.DecimalField(max_digits=10, decimal_places=2)
@@ -21,6 +21,6 @@ class ShoppingCar(models.Model):
return self.name
class Meta:
- verbose_name = 'Producto'
- verbose_name_plural = 'Productos'
- ordering = ['name']
+ verbose_name = 'Carro de Producto'
+ verbose_name_plural = 'Carro de Productos'
+ ordering = ['-modified_at']
diff --git a/apps/users/admin.py b/apps/users/admin.py
index 8c38f3f..87bb70f 100644
--- a/apps/users/admin.py
+++ b/apps/users/admin.py
@@ -1,3 +1,16 @@
from django.contrib import admin
+from django.contrib.auth.admin import UserAdmin
+from apps.users.models import CustomUser
-# Register your models here.
+@admin.register(CustomUser)
+class CustomUserAdmin(UserAdmin):
+ list_display = ('email', 'groups', 'is_active',)
+ list_filter = ('groups', 'is_active',)
+ search_fields = ('email', 'first_name', 'last_name')
+ ordering = ('email',)
+ filter_horizontal = ()
+ fieldsets = (
+ (None, {'fields': ('email', 'password')}),
+ ('Permissions', {'fields': ('is_active', 'groups')}),
+ ('Important dates', {'fields': ('last_login',)}),
+ )
\ No newline at end of file
diff --git a/common/const_and_variables.py b/common/const_and_variables.py
new file mode 100644
index 0000000..dcd4a55
--- /dev/null
+++ b/common/const_and_variables.py
@@ -0,0 +1 @@
+BOOLEAN_VALIDS = ['True', 'true', True, 1, '1']
\ No newline at end of file
diff --git a/common/utils.py b/common/utils.py
new file mode 100644
index 0000000..325658d
--- /dev/null
+++ b/common/utils.py
@@ -0,0 +1,37 @@
+def create_roles() -> None:
+ from django.contrib.auth.models import Group, Permission
+ from django.contrib.contenttypes.models import ContentType
+ from apps.users.models import CustomUser
+ from apps.orders.models import Product, ShoppingCar
+
+ # Crear grupos
+ superadmin_group, created = Group.objects.get_or_create(name='Super Administrador')
+ admin_group, created = Group.objects.get_or_create(name='Administrador')
+ client_group, created = Group.objects.get_or_create(name='Cliente')
+
+ # Obtener permisos
+ # Permisos para CustomUser
+ user_content_type = ContentType.objects.get_for_model(CustomUser)
+ user_permissions = Permission.objects.filter(content_type=user_content_type)
+
+ product_content_type = ContentType.objects.get_for_model(Product)
+ product_permissions = Permission.objects.filter(content_type=product_content_type)
+
+ shoppingcar_product_content_type = ContentType.objects.get_for_model(ShoppingCar)
+ shoppingcar_permissions = Permission.objects.filter(content_type=shoppingcar_content_type)
+
+ # Asignar permisos a Super Administrador
+ superadmin_content_type = ContentType.objects.get_for_models()
+ superadmin_group.permissions.set(Permission.objects.filter(content_type__in=superadmin_content_type))
+
+ # Asignar permisos a Administrador
+ admin_permissions = user_permissions.filter(codename__in=['add_customuser', 'change_customuser', 'view_customuser']) | \
+ useraddress_permissions.filter(codename__in=['add_useraddress', 'change_useraddress', 'view_useraddress']) | \
+ product_permissions.filter(codename__in=['add_product', 'change_product', 'view_product']) | \
+ shoppingcar_permissions.filter(codename__in=['view_shoppingcar'])
+ admin_group.permissions.set(admin_permissions)
+
+ # Asignar permisos a Cliente
+ client_permissions = user_permissions | useraddress_permissions | shoppingcar_permissions | \
+ product_permissions.filter(codename__in=['view_order'])
+ client_group.permissions.set(client_permissions)
\ No newline at end of file