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)
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)
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
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,