-
Notifications
You must be signed in to change notification settings - Fork 0
/
admin.py
93 lines (78 loc) · 2.46 KB
/
admin.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
"""
Django admin customization.
"""
from django import forms
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
from django.utils.translation import gettext_lazy as _
from django.utils.html import format_html
from cloudinary.forms import CloudinaryFileField
from core import models
class UserAdmin(BaseUserAdmin):
"""Define the admin pages for users."""
ordering = ['id']
list_display = ['email', 'name']
fieldsets = (
(None, {'fields': ('email', 'password')}),
(
_('Permissions'),
{
'fields': (
'is_active',
'is_staff',
'is_superuser',
)
}
),
(_('Important dates'), {'fields': ('last_login', )}),
)
readonly_fields = ['last_login']
add_fieldsets = (
(None, {
'classes': ('wide', ),
'fields': (
'email',
'password1',
'password2',
'name',
'is_active',
'is_staff',
'is_superuser',
)
}),
)
admin.site.register(models.User, UserAdmin)
admin.site.register(models.Category)
class ProductAdminForm(forms.ModelForm):
# Using Cloudinary's file field for the image
image = CloudinaryFileField(
options={
'folder': 'product_images',
'overwrite': True,
'resource_type': 'image'
},
required=False
)
class Meta:
model = models.Product
fields = '__all__'
@admin.register(models.Product)
class ProductAdmin(admin.ModelAdmin):
form = ProductAdminForm
list_display = ['name', 'price', 'stock', 'category', 'user', 'image_tag']
readonly_fields = ['image_tag']
def image_tag(self, obj):
if obj.image:
return format_html('<img src="{}" width="150" height="150" />',
obj.image.url)
return "No Image Uploaded"
image_tag.short_description = 'Image'
fields = ('name', 'description', 'price',
'stock', 'category', 'user', 'image')
# Adjust the fields and fieldsets as per your requirements
fields = ('name', 'description', 'price',
'stock', 'category', 'user', 'image')
admin.site.register(models.Order)
admin.site.register(models.OrderItem)
admin.site.register(models.Cart)
admin.site.register(models.CartItem)