utils.py 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. from django.core.mail import EmailMultiAlternatives
  2. from django.conf import settings
  3. from django.template.loader import render_to_string
  4. from catalog.constants import (
  5. FOREIGN,
  6. SHIPPING_METHODS_LIST,
  7. SHIPPING_METHODS,
  8. SHIPPING_METHOD_FOREIGN,
  9. )
  10. from catalog.models import Subscription
  11. def valid_subscription_options(shipping_type):
  12. """ Returns a dictionary of valid values based on the type """
  13. options = dict(
  14. subscriptions=Subscription.objects.valid_options(shipping_type=shipping_type),
  15. durations=sorted(
  16. set(Subscription.objects.durations_value_list(shipping_type=shipping_type))
  17. ),
  18. titles=sorted(
  19. set(Subscription.objects.titles_value_list(shipping_type=shipping_type))
  20. ),
  21. )
  22. return options
  23. def unique_tuples(values, reverse=False):
  24. """ Enumerate and remove duplicate sets of tuples """
  25. return [(i, value) for i, value in enumerate(sorted(set(values), reverse=reverse))]
  26. def unique_titles(shipping_type=None):
  27. """ Returns a unique set of tuples which can be used for title choices
  28. """
  29. return unique_tuples(Subscription.objects.titles_value_list(shipping_type))
  30. def unique_durations(shipping_type=None):
  31. """ Returns a unique set of tuples which can be used for duration choices
  32. """
  33. return unique_tuples(Subscription.objects.durations_value_list(shipping_type))
  34. def unique_shipping_methods():
  35. return [(i, value) for i, value in enumerate(SHIPPING_METHODS_LIST)]
  36. def unique_title_images():
  37. """ take set of title/images, flip them into a dictionary """
  38. title_images = {}
  39. subscriptions = Subscription.objects.title_images()
  40. for subscription in subscriptions:
  41. title_images.update({subscription["title"]: subscription["image"]})
  42. return title_images
  43. def get_value_by_index(value_tuple, index):
  44. return value_tuple[int(index)][1]
  45. def shipping_method_options(shipping_type):
  46. if shipping_type == FOREIGN:
  47. return SHIPPING_METHOD_FOREIGN
  48. return SHIPPING_METHODS