Fix asset filter
This commit is contained in:
parent
0a89d96b86
commit
b6952767d5
|
@ -14,6 +14,7 @@ class AssetfilterTestCase(TestCase):
|
||||||
user=self.user,
|
user=self.user,
|
||||||
name="Group1",
|
name="Group1",
|
||||||
description="Test group",
|
description="Test group",
|
||||||
|
when_no_data=6,
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_get_allowed_prohibited(self):
|
def test_get_allowed_prohibited(self):
|
||||||
|
@ -87,6 +88,18 @@ class AssetfilterTestCase(TestCase):
|
||||||
|
|
||||||
self.assertTrue(assetfilter.get_allowed(self.group, "EUR", "USD", "long"))
|
self.assertTrue(assetfilter.get_allowed(self.group, "EUR", "USD", "long"))
|
||||||
|
|
||||||
|
def test_get_allowed_no_data_prohibited(self):
|
||||||
|
self.group.when_no_data = 7
|
||||||
|
self.group.save()
|
||||||
|
self.asset_rule = AssetRule.objects.create(
|
||||||
|
user=self.user,
|
||||||
|
group=self.group,
|
||||||
|
asset="EUR",
|
||||||
|
status=0,
|
||||||
|
)
|
||||||
|
self.asset_rule.save()
|
||||||
|
self.assertFalse(assetfilter.get_allowed(self.group, "EUR", "USD", "long"))
|
||||||
|
|
||||||
def test_get_allowed_no_match(self):
|
def test_get_allowed_no_match(self):
|
||||||
self.asset_rule = AssetRule.objects.create(
|
self.asset_rule = AssetRule.objects.create(
|
||||||
user=self.user,
|
user=self.user,
|
||||||
|
@ -118,6 +131,8 @@ class AssetfilterTestCase(TestCase):
|
||||||
)
|
)
|
||||||
self.asset_rule.save()
|
self.asset_rule.save()
|
||||||
|
|
||||||
|
self.assertTrue(assetfilter.get_allowed(self.group, "EUR", "USD", "long"))
|
||||||
|
|
||||||
def test_get_allowed_always_allow(self):
|
def test_get_allowed_always_allow(self):
|
||||||
self.asset_rule = AssetRule.objects.create(
|
self.asset_rule = AssetRule.objects.create(
|
||||||
user=self.user,
|
user=self.user,
|
||||||
|
|
|
@ -14,35 +14,43 @@ def get_allowed(group, base, quote, direction):
|
||||||
# If our base has allowed == False, we can only short it, or long the quote
|
# If our base has allowed == False, we can only short it, or long the quote
|
||||||
base_rule = AssetRule.objects.filter(group=group, asset=base).first()
|
base_rule = AssetRule.objects.filter(group=group, asset=base).first()
|
||||||
if base_rule:
|
if base_rule:
|
||||||
if base_rule.status == 6:
|
mapped_status = update_status_from_mappings(base_rule.status, group)
|
||||||
|
if mapped_status == 6:
|
||||||
# Always allow
|
# Always allow
|
||||||
return True
|
return True
|
||||||
elif base_rule.status == 7:
|
elif mapped_status == 7:
|
||||||
# Always deny
|
# Always deny
|
||||||
return False
|
return False
|
||||||
elif base_rule.status == 3:
|
elif mapped_status == 3:
|
||||||
if direction == "long":
|
if direction == "long":
|
||||||
return False
|
return False
|
||||||
elif base_rule.status == 2:
|
elif mapped_status == 2:
|
||||||
if direction == "short":
|
if direction == "short":
|
||||||
return False
|
return False
|
||||||
|
|
||||||
# If our quote has allowed == False, we can only long it, or short the base
|
# If our quote has allowed == False, we can only long it, or short the base
|
||||||
quote_rule = AssetRule.objects.filter(group=group, asset=quote).first()
|
quote_rule = AssetRule.objects.filter(group=group, asset=quote).first()
|
||||||
if quote_rule:
|
if quote_rule:
|
||||||
if quote_rule.status == 6:
|
mapped_status = update_status_from_mappings(quote_rule.status, group)
|
||||||
|
if mapped_status == 6:
|
||||||
# Always allow
|
# Always allow
|
||||||
return True
|
return True
|
||||||
elif quote_rule.status == 7:
|
elif mapped_status == 7:
|
||||||
# Always deny
|
# Always deny
|
||||||
return False
|
return False
|
||||||
elif quote_rule.status == 3:
|
elif mapped_status == 3:
|
||||||
if direction == "short":
|
if direction == "short":
|
||||||
return False
|
return False
|
||||||
elif quote_rule.status == 2:
|
elif mapped_status == 2:
|
||||||
if direction == "long":
|
if direction == "long":
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
if not base_rule and not quote_rule:
|
||||||
|
if group.when_no_data == 7:
|
||||||
|
# Always deny
|
||||||
|
return False
|
||||||
|
elif group.when_no_data == 6:
|
||||||
|
# Always allow
|
||||||
|
return True
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue