Init Django-SHOP
This commit is contained in:
130
weirdlittleempire/admin.py
Normal file
130
weirdlittleempire/admin.py
Normal file
@@ -0,0 +1,130 @@
|
||||
from django.contrib import admin
|
||||
from django.template.context import Context
|
||||
from django.template.loader import get_template
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from filer.models import ThumbnailOption
|
||||
from cms.admin.placeholderadmin import PlaceholderAdminMixin, FrontendEditableAdminMixin
|
||||
from shop.admin.defaults import customer
|
||||
from shop.admin.defaults.order import OrderAdmin
|
||||
from shop.models.defaults.order import Order
|
||||
from shop.admin.order import PrintInvoiceAdminMixin
|
||||
from shop.admin.delivery import DeliveryOrderAdminMixin
|
||||
from adminsortable2.admin import SortableAdminMixin, PolymorphicSortableAdminMixin
|
||||
from shop.admin.product import CMSPageAsCategoryMixin, UnitPriceMixin, ProductImageInline, InvalidateProductCacheMixin, SearchProductIndexMixin, CMSPageFilter
|
||||
from polymorphic.admin import (PolymorphicParentModelAdmin, PolymorphicChildModelAdmin,
|
||||
PolymorphicChildModelFilter)
|
||||
from weirdlittleempire.models import Product, Commodity, SmartPhoneVariant, SmartPhoneModel, OperatingSystem
|
||||
from weirdlittleempire.models import Manufacturer, SmartCard
|
||||
|
||||
|
||||
admin.site.site_header = "Weird Little Empire Administration"
|
||||
admin.site.unregister(ThumbnailOption)
|
||||
|
||||
|
||||
@admin.register(Order)
|
||||
class OrderAdmin(PrintInvoiceAdminMixin, DeliveryOrderAdminMixin, OrderAdmin):
|
||||
pass
|
||||
|
||||
|
||||
admin.site.register(Manufacturer, admin.ModelAdmin)
|
||||
|
||||
__all__ = ['customer']
|
||||
|
||||
|
||||
@admin.register(Commodity)
|
||||
class CommodityAdmin(InvalidateProductCacheMixin, SearchProductIndexMixin, SortableAdminMixin, FrontendEditableAdminMixin,
|
||||
PlaceholderAdminMixin, CMSPageAsCategoryMixin, PolymorphicChildModelAdmin):
|
||||
"""
|
||||
Since our Commodity model inherits from polymorphic Product, we have to redefine its admin class.
|
||||
"""
|
||||
base_model = Product
|
||||
fields = [
|
||||
('product_name', 'slug'),
|
||||
('product_code', 'unit_price'),
|
||||
'quantity',
|
||||
'active',
|
||||
'caption',
|
||||
'manufacturer',
|
||||
]
|
||||
filter_horizontal = ['cms_pages']
|
||||
inlines = [ProductImageInline]
|
||||
prepopulated_fields = {'slug': ['product_name']}
|
||||
|
||||
|
||||
@admin.register(SmartCard)
|
||||
class SmartCardAdmin(InvalidateProductCacheMixin, SearchProductIndexMixin, SortableAdminMixin, FrontendEditableAdminMixin,
|
||||
CMSPageAsCategoryMixin, PlaceholderAdminMixin, PolymorphicChildModelAdmin):
|
||||
base_model = Product
|
||||
fieldsets = (
|
||||
(None, {
|
||||
'fields': [
|
||||
('product_name', 'slug'),
|
||||
('product_code', 'unit_price'),
|
||||
'quantity',
|
||||
'active',
|
||||
'caption',
|
||||
'description',
|
||||
],
|
||||
}),
|
||||
(_("Properties"), {
|
||||
'fields': ['manufacturer', 'storage', 'card_type', 'speed'],
|
||||
}),
|
||||
)
|
||||
filter_horizontal = ['cms_pages']
|
||||
inlines = [ProductImageInline]
|
||||
prepopulated_fields = {'slug': ['product_name']}
|
||||
|
||||
|
||||
admin.site.register(OperatingSystem, admin.ModelAdmin)
|
||||
|
||||
|
||||
class SmartPhoneInline(admin.TabularInline):
|
||||
model = SmartPhoneVariant
|
||||
extra = 0
|
||||
|
||||
|
||||
@admin.register(SmartPhoneModel)
|
||||
class SmartPhoneAdmin(InvalidateProductCacheMixin, SearchProductIndexMixin, SortableAdminMixin, FrontendEditableAdminMixin,
|
||||
CMSPageAsCategoryMixin, PlaceholderAdminMixin, PolymorphicChildModelAdmin):
|
||||
base_model = Product
|
||||
fieldsets = [
|
||||
(None, {
|
||||
'fields': [
|
||||
('product_name', 'slug'),
|
||||
'active',
|
||||
'caption',
|
||||
'description',
|
||||
],
|
||||
}),
|
||||
(_("Properties"), {
|
||||
'fields': ['manufacturer', 'battery_type', 'battery_capacity', 'ram_storage',
|
||||
'wifi_connectivity', 'bluetooth', 'gps', 'operating_system',
|
||||
('width', 'height', 'weight',), 'screen_size'],
|
||||
}),
|
||||
]
|
||||
filter_horizontal = ['cms_pages']
|
||||
inlines = [ProductImageInline, SmartPhoneInline]
|
||||
prepopulated_fields = {'slug': ['product_name']}
|
||||
|
||||
def render_text_index(self, instance):
|
||||
template = get_template(
|
||||
'search/indexes/weirdlittleempire/commodity_text.txt')
|
||||
return template.render(Context({'object': instance}))
|
||||
render_text_index.short_description = _("Text Index")
|
||||
|
||||
|
||||
@admin.register(Product)
|
||||
class ProductAdmin(PolymorphicSortableAdminMixin, PolymorphicParentModelAdmin):
|
||||
base_model = Product
|
||||
child_models = [SmartPhoneModel, SmartCard, Commodity]
|
||||
list_display = ['product_name', 'get_price', 'product_type', 'active']
|
||||
list_display_links = ['product_name']
|
||||
search_fields = ['product_name']
|
||||
list_filter = [PolymorphicChildModelFilter, CMSPageFilter]
|
||||
list_per_page = 250
|
||||
list_max_show_all = 1000
|
||||
|
||||
def get_price(self, obj):
|
||||
return str(obj.get_real_instance().get_price(None))
|
||||
|
||||
get_price.short_description = _("Price starting at")
|
||||
Reference in New Issue
Block a user