Пример #1
0
def billship_handler(request, order_form):
    """
    Calculates Shipping(Processing)
    """
    shipping = Decimal(0)
    if not request.session.get("free_shipping"):
        cart = Cart.objects.from_request(request)
        for item in cart.items.all():
            if not item.sku.startswith('PRO-') and not item.sku.startswith('ORG-') and not item.sku.startswith('EVENT-'):
                shipping += item.unit_price * Decimal(Settings.get_setting('SHOP_DEFAULT_SHIPPING_VALUE')) 
        set_shipping(request, "Shipping", shipping)
Пример #2
0
def tax_handler(request, order_form):
    """
    Calculates Tax
    """
    tax = Decimal(0)
    cart = Cart.objects.from_request(request)
    for item in cart.items.all():
        variation = ProductVariation.objects.get(sku=item.sku)
        if not variation.tax_exempt:
            tax += item.unit_price * Decimal(Settings.get_setting('SHOP_DEFAULT_TAX_RATE'))
    set_tax(request, "GST 5%", tax)
Пример #3
0
def handle_event(request, user, order):
    """
    Check if the order has events in it. Process the even and register
    the user.
    """
    for order_item in order.items.all():
        variation = ProductVariation.objects.get(sku=order_item.sku)
        if order_item.sku.startswith('EVENT-'):
            sku_parts = order_item.sku.split('EVENT-')
            event = Event.objects.get(id=int(sku_parts[1]))
            paid = False
            
            # If payment is paypal everything is good!
            if order.payment_method == 'paypal':
                order.status = 2
                order.save()
                paid = True
                
                # Adds a the payment to the total payment for the professional after a cut
                if not event.provider.is_superuser:
                    cut = event.price * Decimal(Settings.get_setting('BCCF_PERCENTAGE_CUT'))
                    price = event.price - cut
                    profile = event.provider.profile
                    if not profile.payment:
                        profile.payment = price
                    else:
                        profile.payment += price
                    profile.save()
                    
            if user.profile.is_organization:
                user_ids = request.session.get('register_selected_members', [])
                event_id = request.session.get('register_selected_event', None)
                
                if not event_id:
                    log.debug('event ID is None')
                    return
                if event_id != event:
                    continue                
                    
                event = Event.objects.get(id=event_id)
                members = []
                for user_id in user_ids:
                    u = User.objects.get(id=user_id)
                    members.append(u)
                    EventRegistration.objects.create(user=user, event=event,
                                            event_order=order, paid=paid)
                    send_reminder("Event Registration Complete.", u, context={'event':event})
                    
                send_reminder("Event Registration Complete.", request.user, context={'event': event, 'members': members})
                                            
                del request.session['register_selected_members']
                del request.session['register_selected_event']
                                    
            else:        
                EventRegistration.objects.create(user=user, event=event, 
                                         event_order=order, paid=paid)
                
                # Send confirmation
                send_reminder("Event Registration Complete.", request.user, context={'event':event})

            return
Пример #4
0
import logging
log = logging.getLogger(__name__)

from django.db.models.loading import get_model
from django.core.mail import send_mail, BadHeaderError, EmailMultiAlternatives
from django.template import Context
from django.template.loader import render_to_string

from mezzanine.utils.email import send_mail_template

from bccf.models import Event, EventRegistration, Settings
from cartridge.shop.models import Order

TEMPLATE_DIR = "email/%s"
NO_EMAIL = Settings.get_setting('NO_REPLY_EMAIL')
MOD_EMAIL = Settings.get_setting('MODERATOR_EMAIL')
    
def send_welcome(user, subject="Welcome to BCCF", fr=NO_EMAIL, template="email_welcome.txt", template_html="email_welcome.html"):
    """
    Helper function that sends a welcome email to users upon registration.
    """
    to = user.email
    c = Context({'user': user})
    plain_content = render_to_string(TEMPLATE_DIR % template, {}, context_instance=c)
    html_content = render_to_string(TEMPLATE_DIR % template_html, {}, context_instance=c)
    
    msg = EmailMultiAlternatives(subject, plain_content, fr, [to])
    msg.attach_alternative(html_content, "text/html")
    msg.send()
    
def send_moderate(subject, context={}, to=MOD_EMAIL, fr=NO_EMAIL,