def get_by_path(self, path): path_patterns = path.split('/') slug = path_patterns[-1] try: return self.get(slug=slug) except ObjectDoesNotExist: raise load_class(settings.CATEGORY_MODEL).DoesNotExist
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)
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")
from django import forms from django.utils.translation import ugettext as _ from django.contrib.auth.models import User from plugshop import settings from plugshop.utils import load_class PRODUCT_CLASS = load_class(settings.PRODUCT_MODEL) ORDER_CLASS = load_class(settings.ORDER_MODEL) ORDER_PRODUCTS_CLASS = load_class(settings.ORDER_PRODUCTS_MODEL) NAME_ERROR = _('Name is required') EMAIL_ERROR = _('Invalid email address') EMAIL_ERROR_EXISTS = _("Email address '%s' already exits, must be unique") class ProductForm(forms.Form): product = forms.ModelChoiceField(queryset=PRODUCT_CLASS.objects) quantity = forms.IntegerField(required=False) class OrderForm(forms.ModelForm): class Meta: model = ORDER_CLASS exclude = ( 'number', 'status', 'created_at', 'updated_at', 'delivered_at', 'user', 'products', )
from django.utils import simplejson as json from django.contrib import messages from django.template.loader import render_to_string from django.core.mail import EmailMessage, mail_managers from plugshop import settings from plugshop.utils import load_class, get_model from plugshop.forms import * from plugshop.cart import get_cart 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) ORDER_FORM_CLASS = load_class(settings.ORDER_FORM) class ProductListView(ListView): context_object_name = 'products' template_name = 'plugshop/product_list.html' model = PRODUCT_CLASS def get_context_data(self, **kwargs): context = super(ProductListView, self).get_context_data(**kwargs) context['categories'] = CATEGORY_CLASS.objects.all() return context class ProductView(DetailView): model = PRODUCT_CLASS
from django.utils import simplejson as json from django.contrib.auth.models import User from django.contrib import messages from django.utils.html import strip_tags from django.template.loader import render_to_string from django.core.mail import EmailMessage, mail_managers, \ mail_admins from plugshop.utils import serialize_queryset from plugshop import settings from plugshop.utils import load_class, serialize_model, serialize_queryset from plugshop.forms import * from plugshop.cart import get_cart PRODUCT_CLASS = load_class(settings.PRODUCT_MODEL) CATEGORY_CLASS = load_class(settings.CATEGORY_MODEL) ORDER_CLASS = load_class(settings.ORDER_MODEL) ORDER_PRODUCTS_CLASS = load_class(settings.ORDER_PRODUCTS_MODEL) ORDER_FORM_CLASS = load_class(settings.ORDER_FORM) class ProductListView(ListView): context_object_name = 'products' template_name = 'plugshop/product_list.html' model = PRODUCT_CLASS def get_context_data(self, **kwargs): context = super(ProductListView, self).get_context_data(**kwargs) categories = CATEGORY_CLASS.objects.all() context.update(