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 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() return rcpt
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 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 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) 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 = 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_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(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 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 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 = 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 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_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 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 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_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_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_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_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_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_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, 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 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