def _get_polymorphic_type_str(self): # If we've already computed it once, let's not do it again. if hasattr(self, "_product_type"): return self._product_type product_type = 'product' for pt in get_product_types(): try: type_attr = attrgetter(pt.lower()) attr_value = type_attr(self) if attr_value is not None: product_type = pt.lower() break except models.ObjectDoesNotExist: pass self._product_type = product_type return self._product_type
from django import forms from django.shortcuts import render_to_response from django.template import RequestContext as Context from django.contrib.formtools.wizard import FormWizard from django.contrib.contenttypes.models import ContentType from django.db.models import Q from django.forms.formsets import formset_factory import settings as cart_settings from utils import get_product_types from models import Order import helpers product_type_queryset = ContentType.objects.filter( reduce(Q.__or__, [Q(app_label=cls._meta.app_label, model=cls._meta.module_name) for cls in get_product_types()]) ) if get_product_types() else ContentType.objects.none() class AddToCartForm(forms.Form): """A generic form for adding a product to a cart - should post to cart.views.add""" quantity = forms.IntegerField(min_value=1, initial=1) def get_options(self): options = {} for field in self.cleaned_data: if field not in ['quantity']: options[field] = self.cleaned_data[field]
from django.shortcuts import render_to_response from django.template import RequestContext as Context from django.contrib.formtools.wizard import FormWizard from django.contrib.contenttypes.models import ContentType from django.db.models import Q from django.forms.formsets import formset_factory import settings as cart_settings from utils import get_order_detail_class, OrderDetailNotAvailable, get_product_types from api import Cart from models import Order product_type_queryset = ContentType.objects.filter( reduce(Q.__or__, [ Q(app_label=cls._meta.app_label, model=cls._meta.module_name) for cls in get_product_types() ])) if get_product_types() else ContentType.objects.none() class AddToCartForm(forms.Form): """A generic form for adding a product to a cart - should post to cart.views.add""" product_type = forms.ModelChoiceField(queryset=product_type_queryset, widget=forms.widgets.HiddenInput()) product_id = forms.IntegerField(min_value=1, widget=forms.widgets.HiddenInput()) quantity = forms.IntegerField(min_value=1, initial=1) def clean_product_id(self): if self.get_product(): return self.cleaned_data['product_id']