'name', 'slug', 'price', #'category', ) list_filter = ( 'category', ) def changelist_view(self, request, extra_context=None): ctx = {} return super(BaseProductAdmin, self).changelist_view(request, extra_context=ctx) if is_default_model('PRODUCT'): admin.site.register(get_model(settings.PRODUCT_MODEL), BaseProductAdmin) class BaseCategoryAdmin(MPTTModelAdmin): change_list_template = 'admin/category/change_list.html' mptt_level_indent = 20 prepopulated_fields = { 'slug': ('name', ) } list_display = ( 'name', 'get_products', 'slug', ) def get_products(self, instance):
# -*- coding: utf-8 -*- import datetime from django.db.models import Q from plugshop import settings from plugshop.utils import get_categories, get_model from django.db.models.signals import post_save, pre_save from django.dispatch import receiver PRODUCT_CLASS = get_model(settings.PRODUCT_MODEL) CATEGORY_CLASS = get_model(settings.CATEGORY_MODEL) ORDER_CLASS = get_model(settings.ORDER_MODEL) ORDER_PRODUCTS_CLASS = get_model(settings.ORDER_PRODUCTS_MODEL) @receiver(pre_save, sender=ORDER_CLASS) def set_delivered(sender, instance, **kwargs): if instance.status == settings.STATUS_CHOICES_FINISH: instance.delivered_at = datetime.datetime.now() else: instance.delivered_at = None @receiver(pre_save, sender=ORDER_CLASS) def generate_number(sender, instance, **kwargs): if instance.id is None: now = datetime.datetime.now() hour_from = datetime.datetime(now.year, now.month, now.day, now.hour)
def price_total(self): model = get_model(settings.ORDER_PRODUCTS_MODEL) items = model.objects.filter(order=self) return sum(item.quantity * item.product.price for item in items)