From c798a4da0bd6bfdd387247d594eb5bfaebdd9219 Mon Sep 17 00:00:00 2001 From: Anders Gustafsson Date: Fri, 14 Sep 2018 14:08:18 +0200 Subject: [PATCH] P5-3075 - Change price caluclation for the largest canvases --- README.md | 6 ++++++ api/lib/prices.py | 14 +++++++++++++- fabfile.py | 5 ++++- requirements.txt | 4 +++- tests/lib/test_prices.py | 7 +++++++ 5 files changed, 33 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 54c45ff..a85dc35 100644 --- a/README.md +++ b/README.md @@ -46,3 +46,9 @@ Starting the application: Running the eSales import `$ python manage.py run_esales_import` + +## Testing + +To run unit tests: + +`$ python -m unittest` diff --git a/api/lib/prices.py b/api/lib/prices.py index e7aadf5..64e6d03 100644 --- a/api/lib/prices.py +++ b/api/lib/prices.py @@ -78,6 +78,14 @@ def canvas_cm2_price(cm2): return cm2_price +def package_price(width, height, market): + longest_side = max(width, height) + if longest_side > 119 and market.territory in ['US', 'EU']: + return 800 + + return 0 + + def canvas_price(width, height, market, framed=True, designer=None, reseller=None, inquiry=None, rounded=True, inc_vat=True): cm2 = width * height @@ -90,6 +98,11 @@ def canvas_price(width, height, market, framed=True, designer=None, reseller=Non if not framed: price *= 0.7 + price *= market.price_adjustments + + # Package price should be added after market price adjustment but before other price adjustments. + price += package_price(width, height, market) + if designer: price *= (float(designer.pricepremium) / 100) + 1 @@ -100,7 +113,6 @@ def canvas_price(width, height, market, framed=True, designer=None, reseller=Non price *= (float(inquiry.pricepremium) / 100) + 1 price *= market.exchange_rate - price *= market.price_adjustments if inc_vat: price *= market.vat diff --git a/fabfile.py b/fabfile.py index 7143b41..5221bcb 100644 --- a/fabfile.py +++ b/fabfile.py @@ -1,9 +1,10 @@ from fabric.api import * env.user = 'ubuntu' +env.key_filename = '~/.ssh/ukad.pem' env.hosts = ( - 'ec2-52-51-154-66.eu-west-1.compute.amazonaws.com', + 'ec2-52-51-154-66.eu-west-1.compute.amazonaws.com', #api2-dev ) @@ -14,5 +15,7 @@ def deploy(): with cd('/srv/api'): run('tar xzf /tmp/api.tar.gz') run('rm /tmp/api.tar.gz') + sudo('service nginx stop') sudo('service api-uwsgi restart') + sudo('service nginx start') local('rm /tmp/api.tar.gz') diff --git a/requirements.txt b/requirements.txt index de5227f..f8b3a49 100644 --- a/requirements.txt +++ b/requirements.txt @@ -11,4 +11,6 @@ psycopg2==2.6.1 Flask-Testing==0.5.0 unittest2==1.1.0 factory-boy==2.7.0 -jsonschema==2.5.1 \ No newline at end of file +jsonschema==2.5.1 +mock==2.0.0 +Faker==0.9.0 diff --git a/tests/lib/test_prices.py b/tests/lib/test_prices.py index 77ba3b8..8375fd7 100644 --- a/tests/lib/test_prices.py +++ b/tests/lib/test_prices.py @@ -137,6 +137,9 @@ class TestPrice(unittest2.TestCase): self.assertEqual(1800, canvas_price(width=150, height=150, market=sweden, framed=True, inc_vat=True)) + self.assertEqual(277, canvas_price(width=150, height=150, + market=us, framed=True, inc_vat=True)) + self.assertEqual(672, canvas_price( width=100, height=100, market=sweden, framed=False, inc_vat=False)) @@ -240,3 +243,7 @@ class TestPrice(unittest2.TestCase): # it does not add dealer_store.pricepremium to the frame price self.assertEqual(131, inquiry_price(inquiry)) self.assertEqual(91, inquiry_price(inquiry, framed=False)) + + def test_package_price(self): + self.assertEqual(800, package_price(150, 40, market=us)) + self.assertEqual(0, package_price(150, 40, market=sweden))