def _entity_id_document(ent, ent_key, offset, total_ent_list): sent = clean_text(ent[0]) if (get_cc_module('es', 'dni').is_valid(sent) or get_cc_module('es', 'cif').is_valid(sent) or get_cc_module('es', 'nie').is_valid(sent)): total_ent_list.append((ent[0], ent_key, ent[1], str(ent[2] + offset), str(ent[3] + offset))) else: logger.debug("Invalid data ID document {}.{}".format(sent, ent[0]))
def transition_check(self): Party = Pool().get('party.party') parties_succeed = [] parties_failed = [] parties = Party.browse(Transaction().context.get('active_ids')) for party in parties: for identifier in party.identifiers: if identifier.type != 'eu_vat': continue eu_vat = get_cc_module('eu', 'vat') try: if not eu_vat.check_vies(identifier.code)['valid']: parties_failed.append(party.id) else: parties_succeed.append(party.id) except Exception as e: if hasattr(e, 'faultstring') \ and hasattr(e.faultstring, 'find'): if e.faultstring.find('INVALID_INPUT'): parties_failed.append(party.id) continue if e.faultstring.find('SERVICE_UNAVAILABLE') \ or e.faultstring.find('MS_UNAVAILABLE') \ or e.faultstring.find('TIMEOUT') \ or e.faultstring.find('SERVER_BUSY'): raise VIESUnavailable( gettext('party.msg_vies_unavailable')) from e raise self.result.parties_succeed = parties_succeed self.result.parties_failed = parties_failed return 'result'
def __register__(cls, module_name): pool = Pool() Party = pool.get('party.party') cursor = Transaction().connection.cursor() party = Party.__table__() super().__register__(module_name) party_h = Party.__table_handler__(module_name) if (party_h.column_exist('vat_number') and party_h.column_exist('vat_country')): identifiers = [] cursor.execute(*party.select(party.id, party.vat_number, party.vat_country, where=(party.vat_number != Null) | (party.vat_country != Null))) for party_id, number, country in cursor.fetchall(): code = (country or '') + (number or '') if not code: continue for type in Party.tax_identifier_types(): module = get_cc_module(*type.split('_', 1)) if module.is_valid(code): break else: type = None identifiers.append(cls(party=party_id, code=code, type=type)) cls.save(identifiers) party_h.drop_column('vat_number') party_h.drop_column('vat_country')
def validate_cuit(cuit_to_validate): try: validator = stdnum.get_cc_module('ar', 'cuit') return validator.validate(cuit_to_validate) except (InvalidChecksum, InvalidFormat): raise ValidationError(_('El CUIT ingresado no es correcto')) except InvalidLength as err: raise ValidationError(_(str(err)))
def on_change_with_code(self): if self.type and '_' in self.type: module = get_cc_module(*self.type.split('_', 1)) if module: try: return module.compact(self.code) except stdnum.exceptions.ValidationError: pass return self.code
def set_vsf_tax_identifier(self, code): pool = Pool() Party = pool.get('party.party') for type in Party.tax_identifier_types(): module = get_cc_module(*type.split('_', 1)) if module and module.is_valid(code): self.type = type self.code = code break else: raise BadRequest( gettext('web_shop_vue_storefront.msg_invalid_tax_identifier', code=code))
def check_code(self): if self.type and '_' in self.type: module = get_cc_module(*self.type.split('_', 1)) if module: if not module.is_valid(self.code): if self.party and self.party.id > 0: party = self.party.rec_name else: party = '' raise InvalidIdentifierCode( gettext('party.msg_invalid_code', type=self.type_string, code=self.code, party=party))
def validate(self, ent): if (get_cc_module('es', 'dni').is_valid(ent) or get_cc_module('es', 'cif').is_valid(ent) or get_cc_module('es', 'nie').is_valid(ent)): return True return False
from events.helpers.models import AuditUserTime, SaveReversionMixin, ActiveManager from events.constants import ( CAN_CLOSE_SPONSORING_CODENAME, CAN_SET_APPROVED_INVOICE_CODENAME, CAN_SET_COMPLETE_PAYMENT_CODENAME, CAN_SET_PARTIAL_PAYMENT_CODENAME, CAN_SET_SPONSORS_ENABLED_CODENAME, CAN_VIEW_EVENT_ORGANIZERS_CODENAME, CAN_VIEW_EXPENSES_CODENAME, CAN_VIEW_ORGANIZERS_CODENAME, CAN_VIEW_SPONSORS_CODENAME, CAN_VIEW_PROVIDERS_CODENAME, IMAGE_FORMATS, SPONSOR_STATE_CHECKED, SPONSOR_STATE_CLOSED, SPONSOR_STATE_COMPLETELY_PAID, SPONSOR_STATE_INVOICED, SPONSOR_STATE_PARTIALLY_PAID, SPONSOR_STATE_UNBILLED) from members.models import DEFAULT_MAX_LEN, LONG_MAX_LEN User = get_user_model() validation_module = stdnum.get_cc_module('ar', 'cbu') def validate_cuit(cuit_to_validate): try: validator = stdnum.get_cc_module('ar', 'cuit') return validator.validate(cuit_to_validate) except (InvalidChecksum, InvalidFormat): raise ValidationError(_('El CUIT ingresado no es correcto')) except InvalidLength as err: raise ValidationError(_(str(err))) def lower_non_spaces(text): return text.lower().replace(' ', '')
def validate(self, ent): return get_cc_module('es', 'ccc').is_valid(ent) or get_cc_module( 'es', 'iban').is_valid(ent)
def _get_kpis(self, sent_list): """ Extract KPIs from document """ # full_text is used for proximity detection full_text = "".join(sent_list) total_ent_list = [] # Flag to indicate that a sign entity is expected (if True) next_person_has_signed = False person_signed_idx = 0 offset = 0 for sent in sent_list: # extract entities (ML) if self.ml_ner is not None: ent_list_ner = self.ml_ner.get_model_entities(sent) for ent in ent_list_ner: # storing as entity/label pair new_ent = [ent[0], ent[1], "NER", str(int(ent[2]) + offset), str(int(ent[3]) + offset)] total_ent_list.append(new_ent) # extract entities (Regex) ent_list_regex = self.regex_ner.regex_detection( sent, full_text, offset) for ent_key in ent_list_regex.keys(): for ent in ent_list_regex[ent_key]: # We treat differently common corporative/personal emails if ent_key == "Email": if not self.corp_email_class.is_not_corp_email( ent[0]): total_ent_list.append(( ent[0], "Corp_Email", ent[1], str(ent[2] + offset), str(ent[3] + offset))) else: total_ent_list.append((ent[0], "Email", ent[1], str(ent[2] + offset), str(ent[3] + offset))) elif ent_key == "SIGNATURE": next_person_has_signed = True person_signed_idx = int(ent[3]) + offset elif ent_key == "CreditCard": sent = clean_text(ent[0]) try: if validate(sent): logger.debug( "Credit card accepted {}.{}".format( sent, ent[0])) total_ent_list.append((ent[0], "FinancialData", ent[1], str(ent[2] + offset), str(ent[3] + offset))) except (InvalidChecksum, InvalidFormat): logger.debug("Wrong credit card {}.{}.".format( sent, ent[0])) elif ent_key in ["FinancialData", "DNI_SPAIN"]: sent = clean_text(ent[0]) if (get_cc_module('es', 'dni').is_valid(sent) or get_cc_module('es', 'ccc').is_valid(sent) or get_cc_module('es', 'cif').is_valid(sent) or get_cc_module('es', 'iban').is_valid(sent) or get_cc_module('es', 'nie').is_valid(sent)): total_ent_list.append((ent[0], ent_key, ent[1], str(ent[2] + offset), str(ent[3] + offset))) else: logger.debug("Invalid data {}.{}".format( sent, ent[0])) else: total_ent_list.append((ent[0], ent_key, ent[1], str(ent[2] + offset), str(ent[3] + offset))) if next_person_has_signed: min_itx_signed = self.signature_max_distance id_min_itx = -1 for i in range(len(total_ent_list)): _ent = total_ent_list[i] if _ent[1] == "PER": if int(_ent[3]) > person_signed_idx: if (int(_ent[3]) - person_signed_idx < min_itx_signed): min_itx_signed = (int(_ent[3]) - person_signed_idx) id_min_itx = i next_person_has_signed = False if id_min_itx != -1: _ent = total_ent_list[id_min_itx] total_ent_list.append((_ent[0], "SIGNATURE", _ent[2], _ent[3], _ent[4])) # detection of custom words custom_list = self.custom_detector.search_custom_words(sent) for _ent in custom_list: total_ent_list.append((_ent[0], _ent[1], _ent[0], str(_ent[2] + offset), str(_ent[3] + offset))) offset += len(sent) if next_person_has_signed: min_itx_signed = self.signature_max_distance id_min_itx = -1 for i in range(len(total_ent_list)): ent = total_ent_list[i] if ent[1] == "PER": if int(ent[3]) > person_signed_idx: if int(ent[3]) - person_signed_idx < min_itx_signed: min_itx_signed = int(ent[3]) - person_signed_idx id_min_itx = i next_person_has_signed = False if id_min_itx != -1: ent = total_ent_list[id_min_itx] total_ent_list.append((ent[0], "SIGNATURE", ent[2], ent[3], ent[4])) return total_ent_list
def _entity_financial_data(ent, ent_key, offset, total_ent_list): sent = clean_text(ent[0]) if get_cc_module('es', 'ccc').is_valid(sent) or get_cc_module('es', 'iban').is_valid(sent): total_ent_list.append((ent[0], ent_key, ent[1], str(ent[2] + offset), str(ent[3] + offset))) else: logger.debug("Invalid financial data {}.{}".format(sent, ent[0]))