subject_template_name,
        RequestContext(request, {'order': order})
    )
    subject = subject.join(subject.splitlines())
    body = loader.render_to_string(
        body_template_name,
        RequestContext(request, {'order': order})
    )
    from_email = getattr(settings, 'SN_FROM_EMAIL', settings.DEFAULT_FROM_EMAIL)
    owners = getattr(settings, 'SN_OWNERS', settings.ADMINS)
    send_mail(subject, body, from_email, [owner[1] for owner in owners], fail_silently=False)

if 'confirmed' in getattr(settings, 'SN_BIND_NEW_ORDER_NOTIFICATION_TO', ['confirmed']): 
    confirmed.connect(confirmed_email_notification)
if 'completed' in getattr(settings, 'SN_BIND_NEW_ORDER_NOTIFICATION_TO', []): 
    completed.connect(confirmed_email_notification)


def payment_instructions_email_notification(sender, **kwargs):
    """
    Sends an email with payment instructions to the customer once and order is
    placed.
    """
    subject_template_name = 'shop_simplenotifications/payment_instructions_subject.txt'
    body_template_name = 'shop_simplenotifications/payment_instructions_body.txt'
    
    request = kwargs.get('request')
    order = kwargs.get('order')
    
    emails = []
    if order.user and order.user.email: 
Example #2
0
    except IndexError:
        pass
    else:
        try:
            unique_discount_code = UniqueDiscountCode.objects.get(code=discount_str)
        except:
            discount = DiscountBase.objects.get(code=discount_str)
        else:
            discount = unique_discount_code.discount
            unique_discount_code.delete()
        discount.num_uses += 1
        discount.save()
    DiscountBase.objects.active().filter(code="", is_unique_code_discount=False).update(num_uses=F("num_uses") + 1)


completed_signal.connect(on_order_completed)


class DiscountBaseManager(PolymorphicManager):
    def active(self, at_datetime=None, code=""):
        if not at_datetime:
            at_datetime = datetime.now
        qs = self.filter(
            Q(is_active=True)
            & Q(valid_from__lte=at_datetime)
            & (Q(valid_until__isnull=True) | Q(valid_until__gt=at_datetime))
        )
        if code == "":
            qs = qs.filter(Q(code="") & Q(is_unique_code_discount=False))
        else:
            qs = qs.filter(Q(code="") | Q(code=code))
Example #3
0
# -*- coding: utf-8 -*-
from django.db import models
from shop.order_signals import completed

from base.models import BaseProduct, BaseProductImage
from signals import confirmed_email_notification


class CustomProduct(BaseProduct):
    """Master data: info about product"""
    long_text = models.TextField(u'Описание для страницы товара')

    class Meta:
        abstract = False
        verbose_name = u'Товар'
        verbose_name_plural = u'Товары'

    def __unicode__(self):
        return u'{0}'.format(self.name)


class ProductImage(BaseProductImage):
    product = models.ForeignKey(CustomProduct, related_name='images')


completed.connect(confirmed_email_notification)
Example #4
0
# -*- coding: utf-8 -*-
from django.db import models
from shop.order_signals import completed

from base import BaseProductImage, BaseProduct
from morozoff.apps.customshop.signals import confirmed_email_notification


class CustomProduct(BaseProduct):
    """Master data: info about product"""
    long_text = models.TextField(u'Описание для страницы товара')

    class Meta:
        abstract = False
        verbose_name = u'Товар'
        verbose_name_plural = u'Товары'

    def __unicode__(self):
        return u'{0}'.format(self.name)


class ProductImage(BaseProductImage):
    product = models.ForeignKey(CustomProduct, related_name='images')


completed.connect(confirmed_email_notification)