Exemple #1
0
        verbose_name  = _('product')
        verbose_name_plural = _('products')

    name = models.CharField(_('name'), blank=False, max_length=200)
    slug = models.SlugField(_('slug'), blank=False, unique=True)
    price = models.PositiveIntegerField(_('price'), blank=False)

    def __unicode__(self):
        return self.name

    @models.permalink
    def get_absolute_url(self):
        categories = get_categories()
        try:
            category = filter(lambda x: x.pk == self.category_id, categories)[0]
            category_path = category.get_path()
        except IndexError:
            category_path = "-"
        
        return ('plugshop-product', None, {
            'category_path': category_path,
            'slug': self.slug,
        })

if is_default_model('PRODUCT'):
    class Product(ProductAbstract):
        class Meta:
            app_label = 'plugshop'
            verbose_name  = _('product')
            verbose_name_plural = _('products')
    parent = TreeForeignKey('self', null=True, blank=True,
                            verbose_name=_(u'parent node'))
    name = models.CharField(_(u'name'), blank=False, max_length=80)
    slug = models.SlugField(_(u'slug'), blank=False, unique=True)

    def __unicode__(self):
        return self.name

    def get_ancestor_list(self):
        categories = get_categories()
        return [n for n in categories if n.lft <= self.lft and
                n.rght >= self.rght and n.tree_id == self.tree_id]

    def get_path(self):
        ancestors = self.get_ancestor_list()
        return "/".join([a.slug for a in ancestors])

    @models.permalink
    def get_absolute_url(self):
        return ('plugshop-category', None, {'category_path': self.get_path()})


if is_default_model('CATEGORY'):

    class Category(CategoryAbstract):

        class Meta:
            verbose_name = _(u'category')
            verbose_name_plural = _(u'categories')
            app_label = 'plugshop'
Exemple #3
0
                                default=settings.STATUS_CHOICES_START)
    created_at = models.DateTimeField(_('creation date'), blank=False, 
                                        default=datetime.datetime.now,
                                        editable=False)
    updated_at = models.DateTimeField(_('updated at'), blank=True, null=True,
                                        editable=False)
    delivered_at = models.DateTimeField(_('delivery date'), blank=True, 
                                        null=True,
                                        editable=False)
                                        
    def price_total(self):
        items = load_class(settings.ORDER_PRODUCTS_MODEL).objects.filter(
                                                                    order=self)
        return sum(item.quantity * item.product.price for item in items)
    price_total.short_description = _('Total price')
    
    def __unicode__(self):
        return str(self.pk)
        
    @models.permalink
    def get_absolute_url(self):
        return ('plugshop-order', None, {'number': self.number})


if is_default_model('ORDER'):
    class Order(OrderAbstract):
        class Meta:
            ordering = ['-created_at']
            verbose_name = _('order')
            verbose_name_plural = _('orders')
            app_label = 'plugshop'
from django.db import models
from django.utils.translation import ugettext as _
from plugshop.utils import is_default_model

class OrderProductsAbstract(models.Model):
    class Meta:
        abstract = True
        verbose_name = _('order product')
        verbose_name_plural = _('order product')

    quantity = models.PositiveIntegerField(_('quantity'), blank=False, 
                                            null=False, default=1)

    def price(self):
        return self.product.price * self.quantity
    price.short_description = _('Total price')

if is_default_model('ORDER_PRODUCTS'):
    class OrderProducts(OrderProductsAbstract):
        class Meta:
            app_label = 'plugshop'
            verbose_name = _('order product')
            verbose_name_plural = _('order product')
Exemple #5
0
    search_fields = ("name",)
    prepopulated_fields = {"slug": ("name",)}
    list_display = (
        "name",
        "slug",
        "price",
        #'category',
    )
    list_filter = ("category",)

    def changelist_view(self, request, extra_context=None):
        context = {}
        return super(BaseProductAdmin, self).changelist_view(request, extra_context=context)


if is_default_model("PRODUCT"):
    admin.site.register(load_class(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):
        return "<br/>".join(p.name for p in instance.products.all())

    get_products.allow_tags = True
    get_products.short_description = _("products")
Exemple #6
0
    list_display = (
        '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',
    )