def get_recipients(self): # First, internals recipients table = self.document.xpath('//table[@id="transfer_form:receiptAccount"]') for tr in table[0].xpath('tbody/tr'): tds = tr.xpath('td') id = tds[0].xpath('input')[0].attrib['value'] name = tds[0].xpath('label')[0].text name += u" " + tds[1].xpath('label')[0].text.replace('\n', '') name += u" " + tds[2].xpath('label')[0].text.replace('\n', '') recipient = Recipient() recipient.id = id recipient.label = name recipient._type = "int" yield recipient # Second, externals recipients select = self.document.xpath('//select[@id="transfer_form:externalAccounts"]') if len(select) > 0: recipients = select[0].xpath('option') recipients.pop(0) for option in recipients: recipient = Recipient() recipient.id = option.attrib['value'] recipient.label = option.text recipient._type = "ext" yield recipient
def iter_transfer_recipients(self, ignored): if self.config['website'].get() != 'ppold': raise NotImplementedError() for account in self.browser.get_transfer_accounts().itervalues(): recipient = Recipient() recipient.id = account.id recipient.label = account.label yield recipient
def iter_transfer_recipients(self, ignored): if self.config['website'].get() != 'pp': raise NotImplementedError() for account in self.browser.get_transfer_accounts().itervalues(): recipient = Recipient() recipient.id = account.id recipient.label = account.label yield recipient
def do_add_recipient(self, line): """ add_recipient iban label Add a recipient to a backend. """ iban, label = self.parse_command_args(line, 2, 2) recipient = Recipient() recipient.iban = iban recipient.label = label next(iter(self.do('add_recipient', recipient)))
def find_recipient(self, iban): iban = iban.upper() iban_col = self.get_iban_col() for tr in self.doc.xpath('//table[starts-with(@summary,"Nom et IBAN")]/tbody/tr'): iban_text = re.sub(r'\s', '', CleanText('./td[%s]' % iban_col)(tr)) if iban_text.upper() == 'IBAN:%s' % iban: res = Recipient() res.iban = iban res.id = iban res.label = CleanText('./td[%s]' % (iban_col-1))(tr) return res
def get_recipient(self, recipient): # handle polling response r = Recipient() r.iban = recipient.iban r.id = self.get('data.gestionBeneficiaire.identifiantBeneficiaire') r.label = recipient.label r.category = u'Externe' r.enabled_at = datetime.now().replace(microsecond=0) + timedelta(days=5) r.currency = u'EUR' r.bank_name = NotAvailable r._id_transaction = self.get('data.gestionBeneficiaire.idTransactionAF') or NotAvailable r._transfer_id = self.get('data.gestionBeneficiaire.identifiantBeneficiaire') or NotAvailable return r
def get_recipient_object(self, iban, label): r = Recipient() r.iban = iban r.id = iban r.label = label r.category = u'Externe' r.enabled_at = datetime.now().replace(microsecond=0) + timedelta(days=5) r.currency = u'EUR' r.bank_name = NotAvailable return r
def build_recipient(self, recipient): r = Recipient() r.iban = recipient.iban r.id = recipient.iban r.label = recipient.label r.category = recipient.category r.enabled_at = datetime.now().replace(microsecond=0) r.currency = u'EUR' r.bank_name = recipient.bank_name return r
def build_recipient(self, recipient): r = Recipient() r.iban = recipient.iban r.id = recipient.iban r.label = recipient.label r.category = recipient.category r.enabled_at = date.today() r.currency = u'EUR' r.bank_name = recipient.bank_name return r
def get_recipient_obj(self, recipient): r = Recipient() r.iban = recipient.iban r.id = recipient.iban r.label = recipient.label r.category = u'Externe' r.enabled_at = datetime.datetime.now().replace(microsecond=0) r.currency = u'EUR' r.bank_name = NotAvailable return r
def get_recipient_object(self, recipient): r = Recipient() r.iban = recipient.iban r.id = recipient.iban r.label = recipient.label r.category = recipient.category # On credit mutuel recipients are immediatly available. r.enabled_at = datetime.now().replace(microsecond=0) r.currency = u'EUR' r.bank_name = NotAvailable return r
def get_recipient(self, recipient): r = Recipient() r.iban = recipient.iban r.id = self.get('data.gestionBeneficiaire.identifiantBeneficiaire') r.label = recipient.label r.category = u'Externe' r.enabled_at = datetime.now().replace(microsecond=0) + timedelta( days=5) r.currency = u'EUR' r.bank_name = NotAvailable return r
def get_recipient(self, recipient): r = Recipient() r.iban = recipient.iban r.id = recipient.webid if hasattr(recipient, 'webid') else recipient.id r.label = recipient.label r.category = u'Externe' r.enabled_at = datetime.now().replace(microsecond=0) + timedelta( days=5) r.currency = u'EUR' r.bank_name = self.get('data.activationBeneficiaire.nomBanque') return r
def do_add_recipient(self, line): """ add_recipient iban label Add a recipient to a backend. """ if len(self.enabled_backends) > 1: print('Error: select a single backend to add a recipient (Hint: try the command "backends only")', file=self.stderr) return 1 iban, label, origin_account_id = self.parse_command_args(line, 3, 2) recipient = Recipient() recipient.iban = iban recipient.label = label recipient.origin_account_id = origin_account_id next(iter(self.do('add_recipient', recipient)))
def do_add_recipient(self, line): """ add_recipient iban label Add a recipient to a backend. """ if len(self.enabled_backends) > 1: print( 'Error: select a single backend to add a recipient (Hint: try the command "backends only")', file=self.stderr) return 1 iban, label = self.parse_command_args(line, 2, 2) recipient = Recipient() recipient.iban = iban recipient.label = label next(iter(self.do('add_recipient', recipient)))
def copy_recipient_obj(self, recipient): rcpt = Recipient() rcpt.id = recipient.iban rcpt.iban = recipient.iban rcpt.label = recipient.label rcpt.category = 'Externe' rcpt.enabled_at = date.today() rcpt.currency = 'EUR' return rcpt
def copy_recipient(self, recipient): rcpt = Recipient() rcpt.iban = recipient.iban rcpt.id = recipient.iban rcpt.label = recipient.label rcpt.category = recipient.category rcpt.enabled_at = datetime.now().replace(microsecond=0) + timedelta( days=1) rcpt.currency = u'EUR' return rcpt
def build_recipient(self, recipient): r = Recipient() r.iban = recipient.iban r.id = recipient.iban r.label = recipient.label r.category = recipient.category r.enabled_at = datetime.now().replace(microsecond=0) + timedelta(days=5) r.currency = u'EUR' r.bank_name = recipient.bank_name return r
def get_recipient(self, recipient): r = Recipient() r.iban = recipient.iban r.id = recipient.id r.label = recipient.label r.category = u'Externe' r.enabled_at = datetime.now().replace(microsecond=0) + timedelta(days=5) r.currency = u'EUR' r.bank_name = self.get('data.activationBeneficiaire.nomBanque') return r
def get_recipient(self, recipient): r = Recipient() r.iban = recipient.iban r.id = self.get('data.gestionBeneficiaire.identifiantBeneficiaire') r.label = recipient.label r.category = u'Externe' r.enabled_at = datetime.now().replace(microsecond=0) + timedelta(days=5) r.currency = u'EUR' r.bank_name = NotAvailable return r
def get_recipient_object(self, recipient): r = Recipient() r.iban = recipient.iban r.id = recipient.iban r.label = recipient.label r.category = recipient.category # On credit mutuel recipients are immediatly available. r.enabled_at = datetime.now().replace(microsecond=0) r.currency = 'EUR' r.bank_name = NotAvailable return r
def iter_internal_recipients(self): if self.doc.xpath('//ul[@id="idCmptToInterne"]'): for account in self.doc.xpath('//ul[@id="idCmptToInterne"]/li'): data = Attr('.', 'data-comptecomplet')(account) json_data = json.loads(data.replace('"', '"')) rcpt = Recipient() rcpt.category = 'Interne' rcpt.id = rcpt.iban = json_data['ibanCompte'] rcpt.label = json_data['libelleCompte'] rcpt.enabled_at = date.today() rcpt._formatted_iban = json_data['ibanFormateCompte'] rcpt._account_title = json_data['intituleCompte'] rcpt._bic = json_data['bicCompte'] rcpt._ref = '' rcpt._code_origin = '' rcpt._created_date = '' yield rcpt
def get_recipient_object(self, recipient, get_info=False): r = Recipient() if get_info: recap_iban = CleanText('//div[div[contains(text(), "IBAN")]]/div[has-class("recapTextField")]', replace=[(' ', '')])(self.doc) assert recap_iban == recipient.iban recipient.bank_name = CleanText('//div[div[contains(text(), "Banque du")]]/div[has-class("recapTextField")]', default=NotAvailable)(self.doc) r.iban = recipient.iban r.id = recipient.iban r.label = recipient.label r.category = recipient.category # On societe generale recipients are immediatly available. r.enabled_at = datetime.now().replace(microsecond=0) r.currency = u'EUR' r.bank_name = recipient.bank_name return r
def get_recipient_object(self, recipient, get_info=False): r = Recipient() if get_info: recap_iban = CleanText( '//div[div[contains(text(), "IBAN")]]/div[has-class("recapTextField")]', replace=[(' ', '')])(self.doc) assert recap_iban == recipient.iban recipient.bank_name = CleanText( '//div[div[contains(text(), "Banque du")]]/div[has-class("recapTextField")]', default=NotAvailable)(self.doc) r.iban = recipient.iban r.id = recipient.iban r.label = recipient.label r.category = recipient.category # On societe generale recipients are immediatly available. r.enabled_at = datetime.now().replace(microsecond=0) r.currency = u'EUR' r.bank_name = recipient.bank_name return r
def get_recipient(self): div = self.doc.xpath('//div[@class="confirmation__text"]')[0] ret = Recipient() ret.label = CleanText('//p[b[contains(text(),"Libellé du compte :")]]/text()')(div) ret.iban = ret.id = CleanText('//p[b[contains(text(),"Iban :")]]/text()')(div) ret.bank_name = CleanText(u'//p[b[contains(text(),"Établissement bancaire :")]]/text()')(div) ret.currency = u'EUR' ret.category = u'Externe' ret.enabled_at = datetime.date.today() assert ret.label return ret
def get_new_recipient(self, recipient): recipient_xpath = '//form[@id="CompteExterneActionForm"]//ul' rcpt = Recipient() rcpt.label = Regexp( CleanText( recipient_xpath + '/li[contains(text(), "Nom du titulaire")]', replace=[(' ', '')]), r'(?<=Nomdutitulaire:)(\w+)')(self.doc) rcpt.iban = Regexp( CleanText(recipient_xpath + '/li[contains(text(), "IBAN")]'), r'IBAN : ([A-Za-z]{2}[\dA-Za-z]+)')(self.doc) rcpt.id = rcpt.iban rcpt.category = 'Externe' rcpt.enabled_at = date.today() + timedelta(1) rcpt.currency = 'EUR' return rcpt
def rcpt_after_sms(self, recipient): rcpt_data = self.doc['donnees'] assert recipient.label == Dict('nomRaisonSociale')(rcpt_data) assert recipient.iban == Dict('coordonnee/0/numeroCompte')(rcpt_data) rcpt = Recipient() rcpt.id = Dict('coordonnee/0/refSICoordonnee')(rcpt_data) rcpt.iban = Dict('coordonnee/0/numeroCompte')(rcpt_data) rcpt.label = Dict('nomRaisonSociale')(rcpt_data) rcpt.category = u'Externe' rcpt.enabled_at = date.today() return rcpt
def get_recipients(self): recipients_xpath = '//select[@id="compteDestinataireSelectionne"]/option[not(contains(@selected, "selected"))]' for recipient in self.doc.xpath(recipients_xpath): rcpt = Recipient() rcpt.label = re.sub(r' - \w{2,}\d{6,}', '', CleanText('.')(recipient)) rcpt.iban = CleanText('./@value')(recipient) rcpt.id = rcpt.iban rcpt.enabled_at = date.today() rcpt.category = 'Interne' yield rcpt
def get_new_recipient(self, recipient): recipient_xpath = '//form[@id="CompteExterneActionForm"]//ul' rcpt = Recipient() rcpt.label = Regexp(CleanText( recipient_xpath + '/li[contains(text(), "Nom du titulaire")]', replace=[(' ', '')] ), r'(?<=Nomdutitulaire:)(\w+)')(self.doc) rcpt.iban = Regexp(CleanText( recipient_xpath + '/li[contains(text(), "IBAN")]' ), r'IBAN : ([A-Za-z]{2}[\dA-Za-z]+)')(self.doc) rcpt.id = rcpt.iban rcpt.category = 'Externe' rcpt.enabled_at = date.today() + timedelta(1) rcpt.currency = 'EUR' return rcpt
def get_recipients(self): recipients_xpath = '//select[@id="compteDestinataireSelectionne"]/option[not(contains(@selected, "selected"))]' for recipient in self.doc.xpath(recipients_xpath): rcpt = Recipient() rcpt.label = re.sub(r' - \w{2,}\d{6,}', '', CleanText('.')(recipient)) rcpt.iban = CleanText('./@value')(recipient) rcpt.id = rcpt.iban rcpt.enabled_at = date.today() rcpt.category = 'INTERNE' yield rcpt
def iter_transfer_recipients(self, ignored): for account in self.browser.get_transfer_accounts().itervalues(): recipient = Recipient() recipient.id = account.id recipient.label = account.label yield recipient
def iter_transfer_recipients(self, ignored): for account in self.browser.get_accounts_list(): recipient = Recipient() recipient.id = account.id recipient.label = account.label yield recipient
def parse_recipients(self, items, assume_internal=False): for opt in items: lines = get_text_lines(opt) if opt.attrib['value'].startswith('I') or assume_internal: for n, line in enumerate(lines): if line.strip().startswith('n°'): rcpt = Recipient() rcpt._index = opt.attrib['value'] rcpt._raw_label = ' '.join(lines) rcpt.category = 'Interne' rcpt.id = CleanText().filter(line[2:].strip()) # we don't have iban here, use account number rcpt.label = ' '.join(lines[:n]) rcpt.currency = Currency.get_currency(lines[-1]) rcpt.enabled_at = datetime.now().replace(microsecond=0) yield rcpt break elif opt.attrib['value'].startswith('E'): if len(lines) > 1: # In some cases we observed beneficiaries without label, we skip them rcpt = Recipient() rcpt._index = opt.attrib['value'] rcpt._raw_label = ' '.join(lines) rcpt.category = 'Externe' rcpt.label = lines[0] rcpt.iban = lines[1].upper() rcpt.id = rcpt.iban rcpt.enabled_at = datetime.now().replace(microsecond=0) yield rcpt else: self.logger.warning('The recipient associated with the iban %s has got no label' % lines[0])
def get_recipient(self, recipient): # handle polling response r = Recipient() r.iban = recipient.iban r.id = self.get('data.gestionBeneficiaire.identifiantBeneficiaire') r.label = recipient.label r.category = u'Externe' r.enabled_at = datetime.now().replace(microsecond=0) + timedelta( days=5) r.currency = u'EUR' r.bank_name = NotAvailable r._id_transaction = self.get( 'data.gestionBeneficiaire.idTransactionAF') or NotAvailable r._transfer_id = self.get( 'data.gestionBeneficiaire.identifiantBeneficiaire') or NotAvailable return r