205 lines
6.3 KiB
Python
205 lines
6.3 KiB
Python
from django.conf import settings
|
|
from measurement.measures import Weight
|
|
|
|
|
|
class DiscountValueType:
|
|
FIXED = 'fixed'
|
|
PERCENTAGE = 'percentage'
|
|
|
|
CHOICES = [
|
|
(FIXED, settings.DEFAULT_CURRENCY),
|
|
(PERCENTAGE, '%'),
|
|
]
|
|
|
|
|
|
class VoucherType:
|
|
SHIPPING = 'shipping'
|
|
ENTIRE_ORDER = 'entire_order'
|
|
SPECIFIC_PRODUCT = 'specific_product'
|
|
|
|
CHOICES = [
|
|
(ENTIRE_ORDER, 'Entire order'),
|
|
(SHIPPING, 'Shipping'),
|
|
(SPECIFIC_PRODUCT, 'Specific products, collections and categories'),
|
|
]
|
|
|
|
|
|
class OrderStatus:
|
|
DRAFT = 'draft' # fully editable, not finalized order created by staff users
|
|
UNFULFILLED = 'unfulfilled' # order with no items marked as fulfilled
|
|
PARTIALLY_FULFILLED = (
|
|
'partially_fulfilled' # order with some items marked as fulfilled
|
|
)
|
|
FULFILLED = 'fulfilled' # order with all items marked as fulfilled
|
|
|
|
PARTIALLY_RETURNED = (
|
|
'partially_returned' # order with some items marked as returned
|
|
)
|
|
RETURNED = 'returned' # order with all items marked as returned
|
|
CANCELED = 'canceled' # permanently canceled order
|
|
|
|
CHOICES = [
|
|
(DRAFT, 'Draft'),
|
|
(UNFULFILLED, 'Unfulfilled'),
|
|
(PARTIALLY_FULFILLED, 'Partially fulfilled'),
|
|
(PARTIALLY_RETURNED, 'Partially returned'),
|
|
(RETURNED, 'Returned'),
|
|
(FULFILLED, 'Fulfilled'),
|
|
(CANCELED, 'Canceled'),
|
|
]
|
|
|
|
|
|
class ShippingStatus:
|
|
NOT_SHIPPED = 'Not shipped'
|
|
PARTIALLY_SHIPPED = 'Partially shipped'
|
|
SHIPPED = 'Shipped'
|
|
|
|
CHOICES = [
|
|
(NOT_SHIPPED, 'Not shipped'),
|
|
(PARTIALLY_SHIPPED, 'Partially shipped'),
|
|
(SHIPPED, 'Shipped'),
|
|
]
|
|
|
|
|
|
class TransactionStatus:
|
|
# The order was created with the specified context.
|
|
CREATED = 'CREATED'
|
|
# The order was saved and persisted. The order status continues to
|
|
# be in progress until a capture is made with final_capture = true
|
|
# for all purchase units within the order.
|
|
SAVED = 'SAVED'
|
|
# The customer approved the payment through the PayPal wallet or
|
|
# another form of guest or unbranded payment. For example, a card,
|
|
# bank account, or so on.
|
|
APPROVED = 'APPROVED'
|
|
# All purchase units in the order are voided.
|
|
VOIDED = 'VOIDED'
|
|
# The payment was authorized or the authorized payment was captured
|
|
# for the order.
|
|
COMPLETED = 'COMPLETED'
|
|
# The order requires an action from the payer (e.g. 3DS authentication).
|
|
# Redirect the payer to the 'rel':'payer-action' HATEOAS link returned as
|
|
# part of the response prior to authorizing or capturing the order.
|
|
PAYER_ACTION_REQUIRED = 'PAYER_ACTION_REQUIRED'
|
|
|
|
CHOICES = [
|
|
(CREATED, 'Created'),
|
|
(SAVED, 'Saved'),
|
|
(APPROVED, 'Approved'),
|
|
(VOIDED, 'Voided'),
|
|
(COMPLETED, 'Completed'),
|
|
(PAYER_ACTION_REQUIRED, 'Payer action required')
|
|
]
|
|
|
|
|
|
class ShippingProvider:
|
|
USPS = 'USPS'
|
|
USPS_MAX_SHIPPING_WEIGHT = Weight(lb=70)
|
|
# UPS = 'UPS'
|
|
# FEDEX = 'FEDEX'
|
|
|
|
CHOICES = [
|
|
(USPS, 'USPS'),
|
|
# (UPS, 'UPS'),
|
|
# (FEDEX, 'FedEx'),
|
|
]
|
|
|
|
|
|
class ShippingService:
|
|
FIRST_CLASS = 'FIRST CLASS'
|
|
PRIORITY = 'PRIORITY'
|
|
PRIORITY_COMMERCIAL = 'PRIORITY COMMERCIAL'
|
|
|
|
CHOICES = [
|
|
(FIRST_CLASS, 'First Class'),
|
|
(PRIORITY, 'Priority'),
|
|
(PRIORITY_COMMERCIAL, 'Priority Commercial')
|
|
]
|
|
|
|
|
|
class ShippingContainer:
|
|
PRIORITY = 'PRIORITY'
|
|
PRIORITY_COMMERCIAL = 'PRIORITY COMMERCIAL'
|
|
|
|
# PRIORITY
|
|
FLAT_RATE_ENVELOPE = 'FLAT RATE ENVELOPE'
|
|
LEGAL_FLAT_RATE_ENVELOPE = 'LEGAL FLAT RATE ENVELOPE'
|
|
PADDED_FLAT_RATE_ENVELOPE = 'PADDED FLAT RATE ENVELOPE'
|
|
SM_FLAT_RATE_ENVELOPE = 'SM FLAT RATE ENVELOPE'
|
|
WINDOW_FLAT_RATE_ENVELOPE = 'WINDOW FLAT RATE ENVELOPE'
|
|
GIFT_CARD_FLAT_RATE_ENVELOPE = 'GIFT CARD FLAT RATE ENVELOPE'
|
|
SM_FLAT_RATE_BOX = 'SM FLAT RATE BOX'
|
|
MD_FLAT_RATE_BOX = 'MD FLAT RATE BOX'
|
|
LG_FLAT_RATE_BOX = 'LG FLAT RATE BOX'
|
|
VARIABLE = 'VARIABLE'
|
|
|
|
# PRIORITY_COMMERCIAL
|
|
REGIONAL_RATE_BOX_A = 'REGIONALRATEBOXA'
|
|
REGIONAL_RATE_BOX_B = 'REGIONALRATEBOXB'
|
|
|
|
CHOICES = [
|
|
(
|
|
PRIORITY, (
|
|
(FLAT_RATE_ENVELOPE, 'Flat Rate Envelope'),
|
|
(LEGAL_FLAT_RATE_ENVELOPE, 'Legal Flat Rate Envelope'),
|
|
(PADDED_FLAT_RATE_ENVELOPE, 'Padded Flat Rate Envelope'),
|
|
(SM_FLAT_RATE_ENVELOPE, 'Sm Flat Rate Envelope'),
|
|
(WINDOW_FLAT_RATE_ENVELOPE, 'Window Flat Rate Envelope'),
|
|
(GIFT_CARD_FLAT_RATE_ENVELOPE, 'Gift Card Flat Rate Envelope'),
|
|
(SM_FLAT_RATE_BOX, 'Sm Flat Rate Box'),
|
|
(MD_FLAT_RATE_BOX, 'Md Flat Rate Box'),
|
|
(LG_FLAT_RATE_BOX, 'Lg Flat Rate Box'),
|
|
(VARIABLE, 'Variable'),
|
|
)
|
|
), (
|
|
PRIORITY_COMMERCIAL, (
|
|
(REGIONAL_RATE_BOX_A, 'Regional Rate Box A'),
|
|
(REGIONAL_RATE_BOX_B, 'Regional Rate Box B'),
|
|
)
|
|
),
|
|
]
|
|
|
|
SERVICE_FROM_CONTAINER = {
|
|
# PRIORITY
|
|
FLAT_RATE_ENVELOPE: PRIORITY,
|
|
LEGAL_FLAT_RATE_ENVELOPE: PRIORITY,
|
|
PADDED_FLAT_RATE_ENVELOPE: PRIORITY,
|
|
SM_FLAT_RATE_ENVELOPE: PRIORITY,
|
|
WINDOW_FLAT_RATE_ENVELOPE: PRIORITY,
|
|
GIFT_CARD_FLAT_RATE_ENVELOPE: PRIORITY,
|
|
SM_FLAT_RATE_BOX: PRIORITY,
|
|
MD_FLAT_RATE_BOX: PRIORITY,
|
|
LG_FLAT_RATE_BOX: PRIORITY,
|
|
VARIABLE: PRIORITY,
|
|
|
|
# PRIORITY_COMMERCIAL
|
|
REGIONAL_RATE_BOX_A: PRIORITY_COMMERCIAL,
|
|
REGIONAL_RATE_BOX_B: PRIORITY_COMMERCIAL,
|
|
}
|
|
|
|
def get_shipping_service_from_container(container):
|
|
return ShippingContainer.SERVICE_FROM_CONTAINER[container]
|
|
|
|
|
|
class CoffeeGrind:
|
|
WHOLE = 'whole-beans'
|
|
ESPRESSO = 'espresso'
|
|
CONE_DRIP = 'cone-drip'
|
|
BASKET_DRIP = 'basket-drip'
|
|
FRENCH_PRESS = 'french-press'
|
|
STOVETOP_ESPRESSO = 'stovetop-espresso'
|
|
AEROPRESS = 'aeropress'
|
|
PERCOLATOR = 'percolator'
|
|
CAFE_STYLE = 'cafe-style'
|
|
GRIND_CHOICES = [
|
|
(WHOLE, 'Whole Beans'),
|
|
(ESPRESSO, 'Espresso'),
|
|
(CONE_DRIP, 'Cone Drip'),
|
|
(BASKET_DRIP, 'Basket Drip'),
|
|
(FRENCH_PRESS, 'French Press'),
|
|
(STOVETOP_ESPRESSO, 'Stovetop Espresso (Moka Pot)'),
|
|
(AEROPRESS, 'AeroPress'),
|
|
(PERCOLATOR, 'Percolator'),
|
|
(CAFE_STYLE, 'BLTC cafe pour over')
|
|
]
|