def handle(self, *args, **options): for pep in Pep.objects.exclude(last_employer=''): pep.last_employer_en = transliterate( translate_company_type_in_string(pep.last_employer)) pep.save(update_fields=['last_employer_en']) for pep in Pep.objects.exclude(last_job_title=''): pep.last_job_title_en = transliterate( translate_last_position_in_string(pep.last_job_title)) pep.save(update_fields=['last_job_title_en'])
def address_en(self): if self.address: return transliterate(translate_country_in_string(self.address)) else: return None
def last_job_title_en(self): if self.last_job_title: return transliterate(translate_last_position_in_string(self.last_job_title)) else: return None
def last_employer_en(self): if self.last_employer: return transliterate(translate_company_type_in_string(self.last_employer)) else: return None
def place_of_birth_en(self): if self.place_of_birth: return transliterate(translate_country_in_string(self.place_of_birth)) else: return None
def transliterate(self, text): new_text = transliterate(text) if new_text == text: new_text = translit(text, 'el', reversed=True) # Greek transliteration try return new_text
def save_or_update_peps_companies(self, peps_companies_data): address_converter = AddressConverter() for link in peps_companies_data: is_changed = False pep_source_id = link[0] pep = self.peps_dict.get(str(pep_source_id)) if not pep: logger.info( f'No such pep in our DB. ' f'Check records in the source DB with id {pep_source_id}') self.invalid_data_counter += 1 continue company_antac_id = link[1] start_date = link[2] confirmation_date = link[3] end_date = link[4] category = link[5] edrpou = link[6] is_state_company = link[7] company_name = link[9] country_name = link[10] source_id = link[11] company_name_en = link[12] if not company_name_en: company_name_en = transliterate( translate_company_type_in_string(company_name)) relationship_type = link[13] relationship_type_en = link[14] country = address_converter.save_or_get_country( country_name) if country_name else None company = Company.include_deleted_objects.filter( antac_id=company_antac_id).first() company_update_fields = [] if not company and edrpou: company = Company.include_deleted_objects.filter( edrpou=edrpou, source=Company.UKRAINE_REGISTER).first() if company: company.antac_id = company_antac_id company_update_fields.append('antac_id') if not company: company = Company.objects.create(name=company_name, name_en=company_name_en, edrpou=edrpou, country=country, code=company_name + edrpou, source=Company.ANTAC, antac_id=company_antac_id, from_antac_only=True) self.create_company_link_with_pep(company, pep, category, start_date, confirmation_date, end_date, is_state_company, source_id, relationship_type, relationship_type_en) is_changed = True else: if company.name_en != company_name_en: company.name_en = company_name_en company_update_fields.append('name_en') if company_update_fields: company_update_fields.append('updated_at') company.save(update_fields=company_update_fields) already_stored_link = self.peps_companies_dict.get(source_id) if not already_stored_link: self.create_company_link_with_pep( company, pep, category, start_date, confirmation_date, end_date, is_state_company, source_id, relationship_type, relationship_type_en) is_changed = True else: update_fields = [] if already_stored_link.category != category: already_stored_link.category = category update_fields.append('category') if already_stored_link.relationship_type != relationship_type: already_stored_link.relationship_type = relationship_type update_fields.append('relationship_type') if already_stored_link.relationship_type_en != relationship_type_en: already_stored_link.relationship_type_en = relationship_type_en update_fields.append('relationship_type_en') if already_stored_link.start_date != start_date: already_stored_link.start_date = start_date update_fields.append('start_date') if already_stored_link.confirmation_date != confirmation_date: already_stored_link.confirmation_date = confirmation_date update_fields.append('confirmation_date') if already_stored_link.end_date != end_date: already_stored_link.end_date = end_date update_fields.append('end_date') if already_stored_link.is_state_company != is_state_company: already_stored_link.is_state_company = is_state_company update_fields.append('is_state_company') if already_stored_link.source_id != source_id: already_stored_link.source_id = source_id update_fields.append('source_id') if update_fields: update_fields.append('updated_at') already_stored_link.save(update_fields=update_fields) is_changed = True if self.outdated_peps_companies_dict.get(source_id): del self.outdated_peps_companies_dict[source_id] if is_changed and self.refresh_updated_at_field: pep.save(update_fields=[ 'updated_at', ]) if self.outdated_peps_companies_dict: for link in self.outdated_peps_companies_dict.values(): link.soft_delete() link.pep.save(update_fields=[ 'updated_at', ])