123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 |
- import calendar
- from itertools import chain
- from django.conf import settings
- from django.core.mail import EmailMultiAlternatives
- from django.template.loader import render_to_string
- from store_order.models import OrderItem, Order
- def year_list(current_year, num_years=5):
- """ Return a list of years, starting at current year ending with
- (current year + num_years), the default is 5
- """
- return [(i, i) for i in range(current_year, current_year + num_years)]
- def month_list():
- """ Return iterated list of months
- """
- return [(i, calendar.month_name[i]) for i in range(1, len(calendar.month_name))]
- def get_renewals_by_user(user):
- """ Returns subscriptions (OrderItems) by user
- Each subscription
- """
- from accounts.subscriptions import Subscription
- if not user:
- return None
- ordered_items = get_subscriptions().filter(
- order__user=user, gift_detail__exact=None
- )
- order_items = list(chain(ordered_items))
- subscriptions = []
- for order_item in order_items:
- if order_item.product.child().renewal:
- subscriptions.append(
- Subscription(
- order_item.product.title,
- order_item.order.date,
- order_item.product.child().duration,
- )
- )
- return subscriptions
- def get_subscriptions_by_user(user):
- """ Returns subscriptions (OrderItems) by user
- Each subscription
- """
- from accounts.subscriptions import Subscription
- if not user:
- return None
- ordered_items = get_subscriptions().filter(
- order__user=user, gift_detail__exact=None
- )
- gifted_items = get_subscriptions().filter(gift_detail__email__iexact=user.email)
- order_items = list(chain(ordered_items, gifted_items))
- subscriptions = []
- for order_item in order_items:
- if not order_item.product.child().renewal:
- subscriptions.append(
- Subscription(
- order_item.product.title,
- order_item.order.date,
- order_item.product.child().duration,
- )
- )
- return subscriptions
- def get_subscriptions(order=None):
- """ Subscriptions are really OrderItems with a subscription product
- attached.
- """
- from catalog.models import Subscription
- order_items = OrderItem.objects.filter(
- product__subclass_type__iexact=Subscription.__name__.lower()
- )
- if order:
- order_items = order_items.filter(order=order)
- return order_items
- def send_change_of_address_email(
- title, account_number, date_effective, date_from, date_to, old_address, new_address
- ):
- template = "storefront/change_of_address_email.html"
- DEFAULT_FROM_EMAIL = getattr(settings, "DEFAULT_FROM_EMAIL")
- NOTIFICATIONS_EMAIL = getattr(settings, "NOTIFICATIONS_EMAIL", [])
- subject, from_email, to = (
- "Change of Address Update",
- DEFAULT_FROM_EMAIL,
- NOTIFICATIONS_EMAIL,
- )
- data = {"old_address": old_address, "new_address": new_address}
- data.update({"title": title, "account_number": account_number})
- data.update(
- {"date_effective": date_effective, "date_from": date_from, "date_to": date_to}
- )
- text_content = render_to_string(template, dictionary=data)
- html_content = render_to_string(template, dictionary=data)
- msg = EmailMultiAlternatives(subject, text_content, from_email, to)
- msg.attach_alternative(html_content, "text/html")
- msg.send()
- def send_new_account_email(email, password, user, profile, site):
- template = "storefront/new_account_email.html"
- DEFAULT_FROM_EMAIL = getattr(settings, "DEFAULT_FROM_EMAIL")
- subject, from_email, to = ("New Account", DEFAULT_FROM_EMAIL, email)
- data = {"email": email, "password": password, "site": site}
- data.update({"first_name": user.first_name, "last_name": user.last_name})
- data.update(
- {
- "company": profile.company,
- "address1": profile.address1,
- "address2": profile.address2,
- "city": profile.city,
- "region": profile.region,
- "phone": profile.phone,
- "country": profile.country,
- }
- )
- text_content = render_to_string(template, dictionary=data)
- html_content = render_to_string(template, dictionary=data)
- msg = EmailMultiAlternatives(subject, text_content, from_email, [to])
- msg.attach_alternative(html_content, "text/html")
- msg.send()
|