P5-6519 add exchange_rate to markets (#35)
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
from api.extensions import db
|
||||
from .product import Currencies
|
||||
from sqlalchemy.orm import validates
|
||||
from sqlalchemy.ext.associationproxy import association_proxy
|
||||
|
||||
|
||||
class Market(db.Model):
|
||||
@@ -11,8 +12,10 @@ class Market(db.Model):
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
name = db.Column(db.String(255))
|
||||
vat = db.Column(db.Float, nullable=False)
|
||||
currency = db.Column(db.String(3))
|
||||
price_adjustment = db.Column(db.Float, nullable=False)
|
||||
currency = db.Column(db.String(3), db.ForeignKey("product-currencies.iso3char"))
|
||||
_pc = db.relationship(Currencies, uselist=False)
|
||||
exchange_rate = association_proxy("_pc", "exchange_rate", creator=lambda v: Currencies(exchange_rate=v))
|
||||
|
||||
@validates("name")
|
||||
def validate_name(self, key, value):
|
||||
@@ -25,6 +28,7 @@ class Market(db.Model):
|
||||
"price_adjustment": str(self.price_adjustment),
|
||||
"vat": str(self.vat),
|
||||
"currency": self.currency,
|
||||
"exchange_rate": str(self.exchange_rate),
|
||||
}
|
||||
|
||||
|
||||
@@ -70,7 +74,7 @@ class LegacyMarket(object):
|
||||
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 = row.exchange_rate
|
||||
else:
|
||||
self._exchange_rate = 1
|
||||
return self._exchange_rate
|
||||
|
||||
@@ -50,7 +50,7 @@ class Currencies(db.Model):
|
||||
__tablename__ = "product-currencies"
|
||||
|
||||
iso3char = db.Column(db.String(3), primary_key=True)
|
||||
exchange_rate = db.Column(db.Numeric, default=1)
|
||||
exchange_rate = db.Column(db.Float, default=1)
|
||||
|
||||
|
||||
class MaterialQuery(BaseQuery):
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
# coding=UTF-8
|
||||
|
||||
import unittest2
|
||||
from api.models import market
|
||||
from api.models import Market
|
||||
|
||||
|
||||
class TestMarket(unittest2.TestCase):
|
||||
def test_sweden(self):
|
||||
sweden = market.from_territory("SE")
|
||||
self.assertEqual("sv", sweden.language)
|
||||
self.assertEqual("SE", sweden.territory)
|
||||
def test_exchange_rate(self):
|
||||
market = Market(exchange_rate=0.123)
|
||||
self.assertEqual(0.123, market.exchange_rate)
|
||||
|
||||
Reference in New Issue
Block a user