add markets
This commit is contained in:
@@ -0,0 +1,103 @@
|
||||
# coding=UTF-8
|
||||
from api import db
|
||||
from .product import Currencies
|
||||
|
||||
|
||||
class PriceAdjustments(db.Model):
|
||||
|
||||
__tablename__ = 'price_adjustments'
|
||||
|
||||
territory = db.Column(db.String(2), primary_key=True)
|
||||
adjustment = db.Column(db.Numeric)
|
||||
|
||||
|
||||
class Market(object):
|
||||
|
||||
def __init__(self, name, locale, currency, vat, iso3):
|
||||
self.name = name
|
||||
self.locale = locale
|
||||
self.currency = currency
|
||||
self.vat = vat
|
||||
self.iso3 = iso3
|
||||
self.language = locale.split('_')[0]
|
||||
self.territory = locale.split('_')[1]
|
||||
self._price_adjustments = None
|
||||
self._exchange_rate = None
|
||||
self._price_adjustments = None
|
||||
|
||||
@property
|
||||
def price_adjustments(self):
|
||||
if self._price_adjustments is None:
|
||||
row = PriceAdjustments.query.filter_by(territory=self.territory).first()
|
||||
if row:
|
||||
self._price_adjustments = float(row.adjustment)
|
||||
self._price_adjustments = 1
|
||||
|
||||
return self._price_adjustments
|
||||
|
||||
@price_adjustments.setter
|
||||
def price_adjustments(self, value):
|
||||
self._price_adjustments = value
|
||||
|
||||
@property
|
||||
def exchange_rate(self):
|
||||
if self._exchange_rate is None:
|
||||
row = Currencies.query.filter_by(iso3char=self.currency).first()
|
||||
if row:
|
||||
self._exchange_rate = float(row.exchange_rate)
|
||||
self._exchange_rate = 1
|
||||
return self._exchange_rate
|
||||
|
||||
@exchange_rate.setter
|
||||
def exchange_rate(self, value):
|
||||
self._exchange_rate = value
|
||||
|
||||
def to_json(self):
|
||||
return {
|
||||
'name': self.name,
|
||||
'locale': self.locale,
|
||||
'currency': self.currency,
|
||||
'vat': self.vat,
|
||||
'iso3': self.iso3,
|
||||
'language': self.language,
|
||||
'territory': self.territory,
|
||||
'price_adjustments': self.price_adjustments,
|
||||
'exchange_rate': self.exchange_rate
|
||||
}
|
||||
|
||||
def __repr__(self):
|
||||
return self.locale
|
||||
|
||||
|
||||
_markets = [
|
||||
Market('Sweden', 'sv_SE', 'SEK', 1.25, 'SWE'),
|
||||
Market('Norway', 'nn_NO', 'NOK', 1.25, 'NOR'),
|
||||
Market('United kingdom', 'en_GB', 'GBP', 1.20, 'GBR'),
|
||||
Market('Denmark', 'da_DK', 'DKK', 1.25, 'DNK'),
|
||||
Market('Finland', 'fi_FI', 'EUR', 1.24, 'FIN'),
|
||||
Market('Russia', 'ru_RU', 'RUB', 1, 'RUS'),
|
||||
Market('Germany', 'de_DE', 'EUR', 1.19, 'DEU'),
|
||||
Market('Netherlands', 'nl_NL', 'EUR', 1.21, 'NLD'),
|
||||
Market('Austria', 'de_AT', 'EUR', 1.20, 'AUT'),
|
||||
Market('USA', 'en_US', 'USD', 1, 'USA'),
|
||||
Market('Spain', 'es_ES', 'EUR', 1.25, 'ESP'),
|
||||
Market('France', 'fr_FR', 'EUR', 1.25, 'FRA'),
|
||||
Market('Poland', 'pl_PL', 'PLN', 1.25, 'POL'),
|
||||
Market('International', 'en_EU', 'EUR', 1, None),
|
||||
]
|
||||
|
||||
def iter_markets():
|
||||
for market in _markets:
|
||||
yield market
|
||||
|
||||
def from_locale(locale):
|
||||
for market in iter_markets():
|
||||
if market.locale == locale:
|
||||
return market
|
||||
return None
|
||||
|
||||
def from_territory(territory):
|
||||
for market in iter_markets():
|
||||
if market.territory == territory.upper():
|
||||
return market
|
||||
return None
|
||||
Reference in New Issue
Block a user