diff --git a/modules/groupama/pages.py b/modules/groupama/pages.py index ec84b55b19b8ac56096c1e894de549ab996b9eec..ecbaeac01094eb410649ce3153c5fc15581e4a20 100644 --- a/modules/groupama/pages.py +++ b/modules/groupama/pages.py @@ -27,12 +27,13 @@ from weboob.browser.pages import HTMLPage, pagination, LoggedPage, FormNotFound, JsonPage from weboob.browser.elements import method, TableElement, ItemElement -from weboob.browser.filters.standard import Env, CleanDecimal, CleanText, Date, Regexp, Eval +from weboob.browser.filters.standard import Env, CleanDecimal, CleanText, Date, Regexp, Eval, Field from weboob.browser.filters.html import Attr, Link, TableCell from weboob.browser.filters.javascript import JSVar from weboob.capabilities.bank import Account, Investment from weboob.capabilities.base import NotAvailable from weboob.tools.capabilities.bank.transactions import FrenchTransaction +from weboob.tools.capabilities.bank.investments import is_isin_valid from weboob.browser.filters.json import Dict @@ -206,16 +207,20 @@ class item(ItemElement): klass = Investment def condition(self): - return CleanText('./th')(self) != 'Total épargne constituée' + return (CleanText('./th')(self) != 'Total épargne constituée') and ('Détail' not in Field('label')(self)) obj_label = CleanText('./th') obj_quantity = CleanDecimal(TableCell('quantity'), default=NotAvailable) obj_unitvalue = CleanDecimal(TableCell('unitvalue'), default=NotAvailable) obj_valuation = CleanDecimal(TableCell('valuation'), default=NotAvailable) obj_portfolio_share = Eval(lambda x: x / 100, CleanDecimal(TableCell('portfolio_share'))) - obj_code = Regexp(Link('./th/a'), r'isin=(\w+)|/(\w+)\.pdf') - obj_code = Regexp(Link('./th/a', default=''), r'isin=(\w+)|/(\w+)\.pdf', default=NotAvailable) - obj_code_type = Investment.CODE_TYPE_ISIN + + def obj_code(self): + code = Regexp(Link('./th/a', default=''), r'isin=(\w+)|/(\w+)\.pdf', default=NotAvailable)(self) + return code if is_isin_valid(code) else NotAvailable + + def obj_code_type(self): + return Investment.CODE_TYPE_ISIN if is_isin_valid(Field('code')(self)) else NotAvailable class AvJPage(LoggedPage, JsonPage):