P5-6519 add exchange_rate to markets (#35)

This commit is contained in:
Martin Carlsson
2021-01-15 10:58:11 +01:00
committed by GitHub
parent 0bf75d3d2b
commit 2692737100
3 changed files with 11 additions and 8 deletions
+6 -2
View File
@@ -3,6 +3,7 @@
from api.extensions import db from api.extensions import db
from .product import Currencies from .product import Currencies
from sqlalchemy.orm import validates from sqlalchemy.orm import validates
from sqlalchemy.ext.associationproxy import association_proxy
class Market(db.Model): class Market(db.Model):
@@ -11,8 +12,10 @@ class Market(db.Model):
id = db.Column(db.Integer, primary_key=True) id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(255)) name = db.Column(db.String(255))
vat = db.Column(db.Float, nullable=False) vat = db.Column(db.Float, nullable=False)
currency = db.Column(db.String(3))
price_adjustment = db.Column(db.Float, nullable=False) 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") @validates("name")
def validate_name(self, key, value): def validate_name(self, key, value):
@@ -25,6 +28,7 @@ class Market(db.Model):
"price_adjustment": str(self.price_adjustment), "price_adjustment": str(self.price_adjustment),
"vat": str(self.vat), "vat": str(self.vat),
"currency": self.currency, "currency": self.currency,
"exchange_rate": str(self.exchange_rate),
} }
@@ -70,7 +74,7 @@ class LegacyMarket(object):
if self._exchange_rate is None: if self._exchange_rate is None:
row = Currencies.query.filter_by(iso3char=self.currency).first() row = Currencies.query.filter_by(iso3char=self.currency).first()
if row: if row:
self._exchange_rate = float(row.exchange_rate) self._exchange_rate = row.exchange_rate
else: else:
self._exchange_rate = 1 self._exchange_rate = 1
return self._exchange_rate return self._exchange_rate
+1 -1
View File
@@ -50,7 +50,7 @@ class Currencies(db.Model):
__tablename__ = "product-currencies" __tablename__ = "product-currencies"
iso3char = db.Column(db.String(3), primary_key=True) 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): class MaterialQuery(BaseQuery):
+4 -5
View File
@@ -1,11 +1,10 @@
# coding=UTF-8 # coding=UTF-8
import unittest2 import unittest2
from api.models import market from api.models import Market
class TestMarket(unittest2.TestCase): class TestMarket(unittest2.TestCase):
def test_sweden(self): def test_exchange_rate(self):
sweden = market.from_territory("SE") market = Market(exchange_rate=0.123)
self.assertEqual("sv", sweden.language) self.assertEqual(0.123, market.exchange_rate)
self.assertEqual("SE", sweden.territory)