Files
vendora/Backend/app/admin.py
T
2025-04-23 22:16:54 +05:45

107 lines
3.6 KiB
Python

from django.contrib import admin
from .models import User, Category, Product, Rating, Order, OrderItem, Cart, CartItem
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
@admin.register(User)
class UserAdmin(BaseUserAdmin):
list_display = ('username', 'email', 'first_name', 'last_name', 'is_staff', 'created_at')
search_fields = ('username', 'email', 'first_name', 'last_name')
list_filter = ('is_staff', 'is_active', 'created_at')
readonly_fields = ('created_at', 'updated_at')
fieldsets = (
('Personal Info', {'fields': ('username', 'first_name', 'last_name', 'email', 'password')}),
('Customer Details', {'fields': ('phone', 'address')}),
('Permissions', {'fields': ('is_active', 'is_staff', 'is_superuser', 'groups', 'user_permissions')}),
('Dates', {'fields': ('created_at', 'updated_at', 'last_login')}),
)
add_fieldsets = (
(None, {
'classes': ('wide',),
'fields': ('username', 'email', 'first_name', 'last_name', 'password1', 'password2', 'phone', 'address'),
}),
)
@admin.register(Category)
class CategoryAdmin(admin.ModelAdmin):
list_display = ('name', 'created_at')
search_fields = ('name',)
list_filter = ('created_at',)
readonly_fields = ('created_at', 'updated_at')
class RatingInline(admin.TabularInline):
model = Rating
extra = 0
readonly_fields = ('created_at',)
@admin.register(Product)
class ProductAdmin(admin.ModelAdmin):
list_display = ('name', 'category', 'price','stock','color','size', 'created_at', 'updated_at')
search_fields = ('name', 'description')
list_filter = ('category', 'created_at')
readonly_fields = ('created_at', 'updated_at')
inlines = [RatingInline]
@admin.register(Rating)
class RatingAdmin(admin.ModelAdmin):
list_display = ('user', 'product', 'rating', 'created_at')
search_fields = ('user__username', 'product__name', 'comment')
list_filter = ('rating', 'created_at')
readonly_fields = ('created_at', 'updated_at')
class OrderItemInline(admin.TabularInline):
model = OrderItem
extra = 0
readonly_fields = ('get_subtotal',)
@admin.register(Order)
class OrderAdmin(admin.ModelAdmin):
list_display = ('id', 'user', 'total_price', 'status', 'created_at')
search_fields = ('user__username', 'shipping_address')
list_filter = ('status', 'created_at')
readonly_fields = ('created_at', 'updated_at', 'total_price')
inlines = [OrderItemInline]
list_editable = ('status',)
class OrderItemAdmin(admin.ModelAdmin):
list_display = ('order', 'product', 'quantity', 'price', 'get_subtotal')
list_filter = ('order__status',)
search_fields = ('order__id', 'product__name')
readonly_fields = ('get_subtotal',)
def get_subtotal(self, obj):
return obj.get_subtotal()
get_subtotal.short_description = 'Subtotal'
admin.site.register(OrderItem, OrderItemAdmin)
class CartItemInline(admin.TabularInline):
model = CartItem
extra = 0
readonly_fields = ['created_at', 'updated_at']
@admin.register(Cart)
class CartAdmin(admin.ModelAdmin):
list_display = ['user', 'get_total', 'created_at', 'updated_at']
list_filter = ['created_at', 'updated_at']
search_fields = ['user__username', 'user__email']
readonly_fields = ['created_at', 'updated_at']
inlines = [CartItemInline]
def get_total(self, obj):
return obj.get_total()
get_total.short_description = 'Total'
def get_subtotal(self, obj):
return obj.get_subtotal()
get_subtotal.short_description = 'Subtotal'