def get_options(self):
     '''
     A helper method to retrieve a list of options in this OptionGroup
     '''
     OPTION_MODEL = getattr(settings, 'SHOP_OPTION_MODEL',
                            'shop_optiongroups.models.defaults.Option')
     Option = load_class(OPTION_MODEL, 'SHOP_OPTION_MODEL')
     options = Option.objects.filter(group=self)
     return options
Exemple #2
0
def get_cart_item_modelform_class():
    """
    Return the class of the CartItem ModelForm.

    The default `shop.forms.CartItemModelForm` can be overridden settings
    ``SHOP_CART_ITEM_FORM`` parameter in settings
    """
    cls_name = getattr(settings, 'SHOP_CART_ITEM_FORM', 'shop.forms.CartItemModelForm')
    cls = load_class(cls_name)
    return cls
Exemple #3
0
def get_cart_item_modelform_class():
    """
    Return the class of the CartItem ModelForm.

    The default `shop.forms.CartItemModelForm` can be overridden settings
    ``SHOP_CART_ITEM_FORM`` parameter in settings
    """
    cls_name = getattr(settings, 'SHOP_CART_ITEM_FORM',
                       'shop.forms.CartItemModelForm')
    cls = load_class(cls_name)
    return cls
Exemple #4
0
class CartItemOption(models.Model):
    '''
    This holds the relation to product options from the cart item.
    It allows to know which options where selected for what cartItem.

    Generally, this is used by
    shop.cart.modifiers.product_options.ProductOptionsModifier
    '''
    cartitem = models.ForeignKey(CartItem)
    option = models.ForeignKey(load_class(OPTION_MODEL))

    class Meta:
        app_label = 'shop_simplevariations'
 def _load_backends_list(self, setting_name, shop_object):
     """ This actually loads the backends from disk"""
     result = []
     if not getattr(settings, setting_name, None):
         return result
     
     for backend_path in getattr(settings, setting_name, None):
         # The load_class function takes care of the classloading. It returns
         # a CLASS, not an INSTANCE!
         mod_class = load_class(backend_path,setting_name)
         
         # Seems like it is a real, valid class - let's instanciate it!
         # This is where the backends receive their self.shop reference!
         mod_instance = mod_class(shop=shop_object)
         
         self._check_backend_for_validity(mod_instance)
         
         # The backend seems valid (nothing raised), let's add it to the 
         # return list.
         result.append(mod_instance)
         
     return result
Exemple #6
0
    def _load_backends_list(self, setting_name, shop_object):
        """ This actually loads the backends from disk"""
        result = []
        if not getattr(settings, setting_name, None):
            return result

        for backend_path in getattr(settings, setting_name, None):
            # The load_class function takes care of the classloading. It returns
            # a CLASS, not an INSTANCE!
            mod_class = load_class(backend_path, setting_name)

            # Seems like it is a real, valid class - let's instanciate it!
            # This is where the backends receive their self.shop reference!
            mod_instance = mod_class(shop=shop_object)

            self._check_backend_for_validity(mod_instance)

            # The backend seems valid (nothing raised), let's add it to the
            # return list.
            result.append(mod_instance)

        return result
Exemple #7
0
    def _load_backends_list(self, setting_name, shop_object):
        """ This actually loads the backends from disk"""
        result = []
        if not getattr(settings, setting_name, None):
            return result

        for backend_path in getattr(settings, setting_name, None):
            # The load_class function takes care of the classloading. It
            # returns a CLASS, not an INSTANCE!
            mod_class = load_class(backend_path, setting_name)

            # Seems like it is a real, valid class - let's instanciate it!
            # This is where the backends receive their self.shop reference!
            mod_instance = mod_class(shop=shop_object)

            self._check_backend_for_validity(mod_instance)

            # The backend seems valid (nothing raised), let's add it to the
            # return list.
            result.append(mod_instance)

        return result


BACKENDS_POOL = getattr(
    settings, 'SHOP_BACKENDS_POOL', 'shop.backends_pool.BackendsPool')
BackendsPoolClass = load_class(BACKENDS_POOL, 'SHOP_BACKENDS_POOL')

backends_pool = BackendsPoolClass()
Exemple #8
0
 def test_loader_without_a_name_works_tuple(self):
     class_to_load = tuple(['shop.tests.util.Mock', 'tests'])
     res = load_class(class_to_load)
     self.assertEqual(res, Mock)
Exemple #9
0
from django.db.models import Q

from shop.models.cartmodel import CartItem
from shop.models.productmodel import Product
from shop.util.cart import get_or_create_cart
from shop.views.cart import CartDetails
from shop.util.loader import load_class

from shop_simplevariations.models import TextOption, CartItemTextOption, CartItemOption

OPTION_MODEL = getattr(settings, 'SHOP_PRODUCTVARIATION_MODEL', 'shop_simplevariations.models.defaults.Option')
Option = load_class(OPTION_MODEL)


class SimplevariationCartDetails(CartDetails):
    """Cart view that answers GET and POSTS request."""

    def post(self, *args, **kwargs):
        #it starts similar to the original post method
        product_id = self.request.POST['add_item_id']
        product_quantity = self.request.POST.get('add_item_quantity')
        if not product_quantity:
            product_quantity = 1
        product = Product.objects.get(pk=product_id)
        cart_object = get_or_create_cart(self.request)

        #now we need to find out which options have been chosen by the user
        option_ids = []
        text_option_ids = {} # A dict of {TextOption.id:CartItemTextOption.text}
        for key in self.request.POST.keys():
            if key.startswith('add_item_option_group_'):
Exemple #10
0
from shop.util.fields import CurrencyField
from shop.util.loader import load_class
import django


        
#===============================================================================
# Extensibility
#===============================================================================
"""
This overrides the various models with classes loaded from the corresponding
setting if it exists.
"""
# Order model
ORDER_MODEL = getattr(settings, 'SHOP_ORDER_MODEL', 'shop.models.defaults.order.Order')
Order = load_class(ORDER_MODEL, 'SHOP_ORDER_MODEL')
    
# Order item model
ORDERITEM_MODEL = getattr(settings, 'SHOP_ORDERITEM_MODEL', 'shop.models.defaults.orderitem.OrderItem')
OrderItem = load_class(ORDERITEM_MODEL, 'SHOP_ORDERITEM_MODEL')

# Order item model
ORDEREXTRAINFO_MODEL = getattr(settings, 'SHOP_ORDEREXTRAINFO_MODEL', 
                               'shop.models.defaults.orderextras.OrderExtraInfo')
OrderExtraInfo = load_class(ORDEREXTRAINFO_MODEL, 'SHOP_ORDEREXTRAINFO_MODEL')

# Order item model
EXTRAORDERPRICEFIELD_MODEL = getattr(settings, 'SHOP_EXTRAORDERPRICEFIELD_MODEL', 
                                     'shop.models.defaults.orderextras.ExtraOrderPriceField')
ExtraOrderPriceField = load_class(EXTRAORDERPRICEFIELD_MODEL, 'SHOP_EXTRAORDERPRICEFIELD_MODEL')
Exemple #11
0
 def get_options(self):
     Option = load_class(OPTION_MODEL, 'SHOP_PRODUCTVARIATION_MODEL')
     options = Option.objects.filter(group=self)
     return options
Exemple #12
0
# -*- coding: utf-8 -*-
from django.conf import settings
from shop.util.loader import load_class



#===============================================================================
# Extensibility
#===============================================================================
"""
This overrides the Product model with the class loaded from the SHOP_PRODUCT_MODEL
setting if it exists.
"""
PRODUCT_MODEL = getattr(settings, 'SHOP_PRODUCT_MODEL', 'shop.models.defaults.product.Product')
Product = load_class(PRODUCT_MODEL, 'SHOP_PRODUCT_MODEL')
Exemple #13
0
from django.conf import settings

from cartmodel import *  # NOQA
from ordermodel import *  # NOQA
from productmodel import *  # NOQA
from shop.order_signals import *  # NOQA
from shop.util.loader import load_class

# Load the class specified by the user as the Address Model.
ShippingAddressModel = load_class(
    getattr(
        settings, 'SHOP_SHIPPING_ADDRESS_MODEL',
        getattr(settings, 'SHOP_ADDRESS_MODEL',
                'shop.addressmodel.models.Address')))
BillingAddressModel = load_class(
    getattr(
        settings, 'SHOP_BILLING_ADDRESS_MODEL',
        getattr(settings, 'SHOP_ADDRESS_MODEL',
                'shop.addressmodel.models.Address')))
Exemple #14
0
    def update(self):
        self.line_subtotal = self.product.get_price() * self.quantity
        self.line_total = self.line_subtotal

        for modifier in cart_modifiers_pool.get_modifiers_list():
            # We now loop over every registered price modifier,
            # most of them will simply add a field to extra_payment_fields
            modifier.process_cart_item(self)

        for label, value in self.extra_price_fields:
            self.line_total = self.line_total + value

        return self.line_total


# ===============================================================================
# Extensibility
# ===============================================================================
"""
This overrides the various models with classes loaded from the corresponding
setting if it exists.
"""
# Cart model
CART_MODEL = getattr(settings, "SHOP_CART_MODEL", None)
if CART_MODEL:
    Cart = load_class(CART_MODEL, "SHOP_CART_MODEL")
# Cart item model
CARTITEM_MODEL = getattr(settings, "SHOP_CARTITEM_MODEL", None)
if CARTITEM_MODEL:
    CartItem = load_class(CARTITEM_MODEL, "SHOP_CARTITEM_MODEL")
Exemple #15
0
from django.utils.translation import ugettext_lazy as _
from shop.models.productmodel import Product
from shop.util.fields import CurrencyField
from shop.util.loader import load_class
import django

#==============================================================================
# Extensibility
#==============================================================================
# This overrides the various models with classes loaded from the corresponding
# setting if it exists.

# Order model
ORDER_MODEL = getattr(settings, 'SHOP_ORDER_MODEL',
                      'shop.models.defaults.order.Order')
Order = load_class(ORDER_MODEL, 'SHOP_ORDER_MODEL')

# Order item model
ORDERITEM_MODEL = getattr(settings, 'SHOP_ORDERITEM_MODEL',
                          'shop.models.defaults.orderitem.OrderItem')
OrderItem = load_class(ORDERITEM_MODEL, 'SHOP_ORDERITEM_MODEL')


# Now we clear refrence to product from every OrderItem
def clear_products(sender, instance, using, **kwargs):
    for oi in OrderItem.objects.filter(product=instance):
        oi.product = None
        oi.save()


if LooseVersion(django.get_version()) < LooseVersion('1.3'):
Exemple #16
0
 def test_loader_without_a_name_works_tuple(self):
     class_to_load = tuple(['shop.tests.util.Mock', 'tests'])
     res = load_class(class_to_load)
     self.assertEqual(res, Mock)
# -*- coding: utf-8 -*-
from django.conf import settings
from shop.util.loader import load_class


TEXTOPTION_MODEL = getattr(settings, 'SHOP_TEXTOPTION_MODEL',
    'shop_textoptions.models.defaults.TextOption')
TextOption = load_class(TEXTOPTION_MODEL, 'SHOP_TEXTOPTION_MODEL')

Exemple #18
0
from django.conf import settings
from shop.util.loader import load_class


PAYMENT_BACKEND_MODEL = getattr(settings, 'SHOP_PAYMENTBACKEND_MODEL',
    'shop.models.defaults.payment.PaymentBackend')
PaymentBackend = load_class(PAYMENT_BACKEND_MODEL, 'SHOP_PAYMENTBACKEND_MODEL')
Exemple #19
0
from django.conf import settings

from cartmodel import *  # NOQA
from ordermodel import *  # NOQA
from productmodel import *  # NOQA
from shop.order_signals import *  # NOQA
from shop.util.loader import load_class

# Load the class specified by the user as the Address Model.
ShippingAddressModel = load_class(getattr(settings, 'SHOP_SHIPPING_ADDRESS_MODEL',
    getattr(settings, 'SHOP_ADDRESS_MODEL',
    'shop.addressmodel.models.Address')))
BillingAddressModel = load_class(getattr(settings, 'SHOP_BILLING_ADDRESS_MODEL',
    getattr(settings, 'SHOP_ADDRESS_MODEL',
    'shop.addressmodel.models.Address')))
# -*- coding: utf-8 -*-
"""
This overrides the Category  with the class loaded from the
CATEGORYPRODUCT_CATEGORY_MODEL setting if it exists.
"""
from django.conf import settings
from shop.util.loader import load_class

#==============================================================================
# Extensibility
#==============================================================================
CATEGORY_MODEL = getattr(settings, 'SHOP_CATEGORIES_CATEGORY_MODEL',
                         'shop_categories.models.defaults.category.default.Category')
Category = load_class(CATEGORY_MODEL, 'SHOP_CATEGORIES_CATEGORY_MODEL')
from django.conf import settings

from shop.util.loader import load_class
from defaults import *
from bases import *

# Load the class specified by the user as the Option Model.
OPTION_MODEL = getattr(settings, 'SHOP_PRODUCTVARIATION_MODEL', 'shop_simplevariations.models.defaults.Option')

Option = load_class(OPTION_MODEL, 'SHOP_PRODUCTVARIATION_MODEL')
Exemple #22
0
from django.conf import settings

from cartmodel import *
from ordermodel import *
from productmodel import *
from shop.order_signals import *
from shop.util.loader import load_class

"""
Load the class specified by the user as the Address Model.
"""
AddressModel = load_class(getattr(settings, 'SHOP_ADDRESS_MODEL', 'shop.addressmodel.models.Address'))
Exemple #23
0
# -*- coding: utf-8 -*-
from django.conf import settings
from shop.util.loader import load_class

#===============================================================================
# Extensibility
#===============================================================================
"""
This overrides the Product model with the class loaded from the SHOP_PRODUCT_MODEL
setting if it exists.
"""
PRODUCT_MODEL = getattr(settings, 'SHOP_PRODUCT_MODEL',
                        'shop.models.defaults.product.Product')
Product = load_class(PRODUCT_MODEL, 'SHOP_PRODUCT_MODEL')
Exemple #24
0
 def test_loader_without_a_name_works(self):
     class_to_load = 'shop.tests.util.Mock'
     res = load_class(class_to_load)
     self.assertEqual(res, Mock)
Exemple #25
0
from django.utils.translation import ugettext_lazy as _
from shop.models.productmodel import Product
from shop.util.fields import CurrencyField
from shop.util.loader import load_class
import django


# ==============================================================================
# Extensibility
# ==============================================================================
# This overrides the various models with classes loaded from the corresponding
# setting if it exists.

# Order model
ORDER_MODEL = getattr(settings, "SHOP_ORDER_MODEL", "shop.models.defaults.order.Order")
Order = load_class(ORDER_MODEL, "SHOP_ORDER_MODEL")

# Order item model
ORDERITEM_MODEL = getattr(settings, "SHOP_ORDERITEM_MODEL", "shop.models.defaults.orderitem.OrderItem")
OrderItem = load_class(ORDERITEM_MODEL, "SHOP_ORDERITEM_MODEL")


# Now we clear refrence to product from every OrderItem
def clear_products(sender, instance, using, **kwargs):
    for oi in OrderItem.objects.filter(product=instance):
        oi.product = None
        oi.save()


if LooseVersion(django.get_version()) < LooseVersion("1.3"):
    pre_delete.connect(clear_products, sender=Product)
# -*- coding: utf-8 -*-
from django.conf import settings
from shop.util.loader import load_class


OPTIONGROUP_MODEL = getattr(settings, 'SHOP_OPTIONGROUP_MODEL',
    'shop_optiongroups.models.defaults.OptionGroup')
OptionGroup = load_class(OPTIONGROUP_MODEL, 'SHOP_OPTIONGROUP_MODEL')


OPTION_MODEL = getattr(settings, 'SHOP_OPTION_MODEL',
    'shop_optiongroups.models.defaults.Option')
Option = load_class(OPTION_MODEL, 'SHOP_OPTION_MODEL')
 def get_options(self):
     Option = load_class(OPTION_MODEL, 'SHOP_PRODUCTVARIATION_MODEL')
     options = Option.objects.filter(group=self)
     return options
# -*- coding: utf-8 -*-
"""
This overrides the Category  with the class loaded from the
CATEGORYPRODUCT_CATEGORY_MODEL setting if it exists.
"""
from django.conf import settings
from shop.util.loader import load_class

#==============================================================================
# Extensibility
#==============================================================================
CATEGORY_MODEL = getattr(settings, 'CATEGORYPRODUCT_CATEGORY_MODEL',
    'category_product.models.defaults.productcategory.Category')
Category = load_class(CATEGORY_MODEL, 'CATEGORYPRODUCT_CATEGORY_MODEL')
Exemple #29
0
# -*- coding: utf-8 -*-
"""
This overrides the various models with classes loaded from the corresponding
setting if it exists.
"""
from django.conf import settings
from shop.util.loader import load_class


#==============================================================================
# Extensibility
#==============================================================================
# Cart model
CART_MODEL = getattr(settings, 'SHOP_CART_MODEL',
    'shop.models.defaults.cart.Cart')
Cart = load_class(CART_MODEL, 'SHOP_CART_MODEL')

# Cart item model
CARTITEM_MODEL = getattr(settings, 'SHOP_CARTITEM_MODEL',
    'shop.models.defaults.cartitem.CartItem')
CartItem = load_class(CARTITEM_MODEL, 'SHOP_CARTITEM_MODEL')
# -*- coding: utf-8 -*-
"""
This overrides the Category  with the class loaded from the
CATEGORYPRODUCT_CATEGORY_MODEL setting if it exists.
"""
from django.conf import settings
from shop.util.loader import load_class

#==============================================================================
# Extensibility
#==============================================================================
CATEGORY_MODEL = getattr(
    settings, 'CATEGORYPRODUCT_CATEGORY_MODEL',
    'category_product.models.defaults.productcategory.Category')
Category = load_class(CATEGORY_MODEL, 'CATEGORYPRODUCT_CATEGORY_MODEL')
# -*- coding: utf-8 -*-
from django.conf import settings
from shop.util.loader import load_class

TEXTOPTION_MODEL = getattr(settings, 'SHOP_TEXTOPTION_MODEL',
                           'shop_textoptions.models.defaults.TextOption')
TextOption = load_class(TEXTOPTION_MODEL, 'SHOP_TEXTOPTION_MODEL')
Exemple #32
0
 def test_loader_without_a_name_works(self):
     class_to_load = 'shop.tests.util.Mock'
     res = load_class(class_to_load)
     self.assertEqual(res, Mock)
Exemple #33
0
from shop.models.productmodel import Product
from shop.util.fields import CurrencyField
from shop.util.loader import load_class
import django


#==============================================================================
# Extensibility
#==============================================================================
# This overrides the various models with classes loaded from the corresponding
# setting if it exists.

# Order model
ORDER_MODEL = getattr(settings, 'SHOP_ORDER_MODEL',
    'shop.models.defaults.order.Order')
Order = load_class(ORDER_MODEL, 'SHOP_ORDER_MODEL')

# Order item model
ORDERITEM_MODEL = getattr(settings, 'SHOP_ORDERITEM_MODEL',
    'shop.models.defaults.orderitem.OrderItem')
OrderItem = load_class(ORDERITEM_MODEL, 'SHOP_ORDERITEM_MODEL')


# Now we clear refrence to product from every OrderItem
def clear_products(sender, instance, using, **kwargs):
    for oi in OrderItem.objects.filter(product=instance):
        oi.product = None
        oi.save()

if LooseVersion(django.get_version()) < LooseVersion('1.3'):
    pre_delete.connect(clear_products, sender=Product)
from django.conf import settings

from shop.util.loader import load_class
from defaults import *
from bases import *

# Load the class specified by the user as the Option Model.
OPTION_MODEL = getattr(settings, 'SHOP_PRODUCTVARIATION_MODEL',
                       'shop_simplevariations.models.defaults.Option')

Option = load_class(OPTION_MODEL, 'SHOP_PRODUCTVARIATION_MODEL')