def parse_entry(source, entry, url, updated_at): uid = entry.findtext('uid') type_ = ENTITY_TYPES[entry.findtext('./sdnType')] if type_ is None: return entity = source.create_entity(make_uid(url, uid)) entity.type = type_ entity.updated_at = updated_at programs = [p.text for p in entry.findall('./programList/program')] entity.program = '; '.join(programs) entity.summary = entry.findtext('./remarks') entity.function = entry.findtext('./title') entity.first_name = entry.findtext('./firstName') entity.last_name = entry.findtext('./lastName') for aka in entry.findall('./akaList/aka'): alias = entity.create_alias() alias.first_name = aka.findtext('./firstName') alias.last_name = aka.findtext('./lastName') alias.type = aka.findtext('./type') alias.quality = ALIAS_QUALITY[aka.findtext('./category')] for ident in entry.findall('./idList/id'): type_ = ID_TYPES.get(ident.findtext('./idType'), Identifier.TYPE_OTHER) if type_ is None: continue identifier = entity.create_identifier() identifier.type = type_ identifier.number = ident.findtext('./idNumber') identifier.country = ident.findtext('./idCountry') identifier.description = ident.findtext('./idType') for addr in entry.findall('./addressList/address'): address = entity.create_address() address.street = addr.findtext('./address1') address.street_2 = addr.findtext('./address2') address.city = addr.findtext('./city') address.country = addr.findtext('./country') for pob in entry.findall('./placeOfBirthList/placeOfBirthItem'): birth_place = entity.create_birth_place() birth_place.place = pob.findtext('./placeOfBirth') birth_place.quality = BirthPlace.QUALITY_WEAK if pob.findtext('./mainEntry') == 'true': birth_place.quality = BirthPlace.QUALITY_STRONG for pob in entry.findall('./dateOfBirthList/dateOfBirthItem'): birth_date = entity.create_birth_date() birth_date.date = parse_date(pob.findtext('./dateOfBirth')) birth_date.quality = BirthDate.QUALITY_WEAK if pob.findtext('./mainEntry') == 'true': birth_date.quality = BirthDate.QUALITY_STRONG entity.save()
def process_bind_param(self, value, dialect): return parse_date(value)
def add_date(self, obj): date = parse_date(obj) if date is not None and date not in self._dates: self._dates.append(date)
def clean(self, value, record, config): value = super(DateProperty, self).clean(value, record, config) return parse_date(value, date_format=config.get('format'))
def add_date(self, obj): self.meta.setdefault('dates', []) date = parse_date(obj) if date is not None and date not in self.meta['dates']: self.meta['dates'].append(date) self.update_meta()