asset: suche in name, sortiert nach name, sortierer für wkn, isin, symbl
This commit is contained in:
parent
6311dce3d1
commit
620c42fc62
2 changed files with 115 additions and 2 deletions
76
asset.py
76
asset.py
|
@ -23,7 +23,7 @@ class Asset(ModelSQL, ModelView):
|
|||
__name__ = 'investment.asset'
|
||||
|
||||
name = fields.Function(fields.Char(string='Name', readonly=True),
|
||||
'on_change_with_name')
|
||||
'on_change_with_name', searcher='search_rec_name')
|
||||
company = fields.Many2One(string='Company', model_name='company.company',
|
||||
required=True, ondelete="RESTRICT")
|
||||
product = fields.Many2One(string='Product', required=True,
|
||||
|
@ -104,6 +104,11 @@ class Asset(ModelSQL, ModelView):
|
|||
readonly=True, digits=(16,digits_percent)),
|
||||
'get_percentage_change', searcher='search_percentage')
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
super(Asset, cls).__setup__()
|
||||
cls._order.insert(0, ('name', 'ASC'))
|
||||
|
||||
@classmethod
|
||||
def view_attributes(cls):
|
||||
return super().view_attributes() + [
|
||||
|
@ -516,6 +521,70 @@ class Asset(ModelSQL, ModelView):
|
|||
)
|
||||
return query
|
||||
|
||||
@staticmethod
|
||||
def order_name(tables):
|
||||
""" order name
|
||||
"""
|
||||
pool = Pool()
|
||||
Templ = pool.get('product.template')
|
||||
Product = pool.get('product.product')
|
||||
Asset = pool.get('investment.asset')
|
||||
table, _ = tables[None]
|
||||
tab_asset = Asset.__table__()
|
||||
tab_prod = Product.__table__()
|
||||
tab_templ = Templ.__table__()
|
||||
|
||||
query = tab_asset.join(tab_prod,
|
||||
condition=tab_asset.product==tab_prod.id
|
||||
).join(tab_templ,
|
||||
condition=tab_templ.id==tab_prod.template
|
||||
).select(tab_templ.name,
|
||||
where=tab_asset.id==table.id
|
||||
)
|
||||
return [query]
|
||||
|
||||
@staticmethod
|
||||
def order_wkn(tables):
|
||||
""" order wkn
|
||||
"""
|
||||
Asset = Pool().get('investment.asset')
|
||||
tab_ids = Asset.get_identifier_sql(Asset.__table__())
|
||||
table, _ = tables[None]
|
||||
|
||||
query = tab_ids.select(
|
||||
getattr(tab_ids, 'wkn'),
|
||||
where=tab_ids.id==table.id,
|
||||
)
|
||||
return [query]
|
||||
|
||||
@staticmethod
|
||||
def order_isin(tables):
|
||||
""" order isin
|
||||
"""
|
||||
Asset = Pool().get('investment.asset')
|
||||
tab_ids = Asset.get_identifier_sql(Asset.__table__())
|
||||
table, _ = tables[None]
|
||||
|
||||
query = tab_ids.select(
|
||||
getattr(tab_ids, 'isin'),
|
||||
where=tab_ids.id==table.id,
|
||||
)
|
||||
return [query]
|
||||
|
||||
@staticmethod
|
||||
def order_secsymb(tables):
|
||||
""" order secsymb
|
||||
"""
|
||||
Asset = Pool().get('investment.asset')
|
||||
tab_ids = Asset.get_identifier_sql(Asset.__table__())
|
||||
table, _ = tables[None]
|
||||
|
||||
query = tab_ids.select(
|
||||
getattr(tab_ids, 'secsymb'),
|
||||
where=tab_ids.id==table.id,
|
||||
)
|
||||
return [query]
|
||||
|
||||
@classmethod
|
||||
def search_identifier(cls, names, clause):
|
||||
""" search in identifier
|
||||
|
@ -580,7 +649,10 @@ class Asset(ModelSQL, ModelView):
|
|||
def search_rec_name(cls, name, clause):
|
||||
""" search in rec_name
|
||||
"""
|
||||
return [('product.rec_name',) + tuple(clause[1:])]
|
||||
return ['OR',
|
||||
('product.rec_name',) + tuple(clause[1:]),
|
||||
('product.identifiers.code',) + tuple(clause[1:]),
|
||||
]
|
||||
|
||||
@classmethod
|
||||
def cron_update(cls):
|
||||
|
|
|
@ -110,6 +110,7 @@ class AssetTestCase(ModuleTestCase):
|
|||
}])],
|
||||
}])
|
||||
self.assertEqual(asset.rec_name, 'Product 1 - 2.4500 usd/Unit [05/15/2022]')
|
||||
self.assertEqual(Asset.search_count([('name', '=', 'Product 1')]), 1)
|
||||
|
||||
@with_transaction()
|
||||
def test_asset_percentages_daterange(self):
|
||||
|
@ -489,6 +490,16 @@ class AssetTestCase(ModuleTestCase):
|
|||
self.assertEqual(Asset.search_count([('isin', '=', 'XC0009655157')]), 1)
|
||||
self.assertEqual(Asset.search_count([('secsymb', '=', '1472977')]), 1)
|
||||
|
||||
self.assertEqual(Asset.search_count([('rec_name', '=', '965515')]), 1)
|
||||
self.assertEqual(Asset.search_count([('rec_name', '=', 'XC0009655157')]), 1)
|
||||
self.assertEqual(Asset.search_count([('rec_name', '=', '1472977')]), 1)
|
||||
|
||||
self.assertEqual(Asset.search_count([('name', '=', '965515')]), 1)
|
||||
self.assertEqual(Asset.search_count([('name', '=', 'XC0009655157')]), 1)
|
||||
self.assertEqual(Asset.search_count([('name', '=', '1472977')]), 1)
|
||||
|
||||
self.assertEqual(Asset.search_count([('name', '=', 'Product unit')]), 1)
|
||||
|
||||
self.assertEqual(Asset.search_count([
|
||||
('wkn', 'ilike', '9655%'),
|
||||
]), 1)
|
||||
|
@ -500,6 +511,36 @@ class AssetTestCase(ModuleTestCase):
|
|||
self.assertEqual(asset2.isin, 'XC0009653103')
|
||||
self.assertEqual(asset2.secsymb, '1431157')
|
||||
|
||||
# order wkn
|
||||
assets = Asset.search([], order=[('wkn', 'ASC')])
|
||||
self.assertEqual(len(assets), 2)
|
||||
self.assertEqual(assets[0].wkn, '965310')
|
||||
self.assertEqual(assets[1].wkn, '965515')
|
||||
assets = Asset.search([], order=[('wkn', 'DESC')])
|
||||
self.assertEqual(len(assets), 2)
|
||||
self.assertEqual(assets[0].wkn, '965515')
|
||||
self.assertEqual(assets[1].wkn, '965310')
|
||||
|
||||
# order isin
|
||||
assets = Asset.search([], order=[('isin', 'ASC')])
|
||||
self.assertEqual(len(assets), 2)
|
||||
self.assertEqual(assets[0].isin, 'XC0009653103')
|
||||
self.assertEqual(assets[1].isin, 'XC0009655157')
|
||||
assets = Asset.search([], order=[('wkn', 'DESC')])
|
||||
self.assertEqual(len(assets), 2)
|
||||
self.assertEqual(assets[0].isin, 'XC0009655157')
|
||||
self.assertEqual(assets[1].isin, 'XC0009653103')
|
||||
|
||||
# order secsymb
|
||||
assets = Asset.search([], order=[('secsymb', 'ASC')])
|
||||
self.assertEqual(len(assets), 2)
|
||||
self.assertEqual(assets[0].secsymb, '1431157')
|
||||
self.assertEqual(assets[1].secsymb, '1472977')
|
||||
assets = Asset.search([], order=[('wkn', 'DESC')])
|
||||
self.assertEqual(len(assets), 2)
|
||||
self.assertEqual(assets[0].secsymb, '1472977')
|
||||
self.assertEqual(assets[1].secsymb, '1431157')
|
||||
|
||||
@with_transaction()
|
||||
def test_asset_check_product_update(self):
|
||||
""" check update of product on asset
|
||||
|
|
Loading…
Reference in a new issue