def to_python(self, value): if isinstance(value, IncompleteDate): return value if isinstance(value, datetime.date): # ~ return IncompleteDate(value.strftime("%Y-%m-%d")) # ~ return IncompleteDate(d2iso(value)) return IncompleteDate.from_date(value) if value: return IncompleteDate.parse(value) return ""
def to_python(self, value): if isinstance(value, IncompleteDate): return value if isinstance(value, datetime.date): #~ return IncompleteDate(value.strftime("%Y-%m-%d")) #~ return IncompleteDate(d2iso(value)) return IncompleteDate.from_date(value) if value: return IncompleteDate.parse(value) return ''
def from_db_value(self, value, expression, connection, context): return IncompleteDate.parse(value) if value else self.get_default()
def card2client(self, data): """ Convert the data coming from the card into database fields to be stored in the card holder. """ kw = dict() # raw_data = data['card_data'] kw.update(national_id=ssin.format_ssin(str(data.national_number))) kw.update(first_name=data.firstnames or '') kw.update(middle_name=data.first_letter_of_third_given_name or '') kw.update(last_name=data.surname or '') card_number = str(data.card_number) holder_model = dd.plugins.beid.holder_model if data.PHOTO_FILE: if not card_number: raise Exception("20150730 photo data but no card_number ") fn = holder_model.card_number_to_image_path(card_number) if not fn.exists(): # logger.warning("Overwriting existing image file %s.", fn) rt.makedirs_if_missing(os.path.dirname(fn)) try: fp = open(fn, 'wb') # fp.write(data.PHOTO_FILE) fp.write(base64.b64decode(data.PHOTO_FILE)) fp.close() except IOError as e: logger.warning("Failed to store image file %s : %s", fn, e) #~ print 20121117, repr(data['picture']) #~ kw.update(picture_data_encoded=data['picture']) if isinstance(data.date_of_birth, six.string_types): data.date_of_birth = IncompleteDate.parse(data.date_of_birth) # IncompleteDate( # *data.date_of_birth.split('-')) kw.update(birth_date=data.date_of_birth) kw.update( card_valid_from=dateparser.parse(data.validity_begin_date).date()) kw.update( card_valid_until=dateparser.parse(data.validity_end_date).date()) kw.update(card_number=card_number) kw.update(card_issuer=data.issuing_municipality) if data.nobility: kw.update(noble_condition=data.nobility) if data.address_street_and_number: kw = street2kw(data.address_street_and_number, **kw) if data.address_zip: kw.update(zip_code=str(data.address_zip)) if data.location_of_birth: kw.update(birth_place=data.location_of_birth) pk = data.eidreader_country country = rt.models.countries.Country.objects.get(isocode=pk) kw.update(country=country) if data.address_municipality: kw.update(city=rt.models.countries.Place.lookup_or_create( 'name', data.address_municipality, country=country)) msg1 = "BeIdReadCardToClientAction %s" % kw.get('national_id') def sex2gender(sex): c0 = sex[0].upper() if c0 == 'M': return dd.Genders.male if c0 in 'FWV': return dd.Genders.female logger.warning("%s : invalid gender code %r", msg1, sex) kw.update(gender=sex2gender(data.gender)) def doctype2cardtype(dt): #~ if dt == 1: return BeIdCardTypes.get_by_value("1") rv = BeIdCardTypes.get_by_value(str(dt)) # logger.info("20130103 documentType %r --> %r", dt, rv) return rv kw.update(card_type=doctype2cardtype(data.document_type)) return kw
def card2client(self, data): """ Convert the data coming from the card into database fields to be stored in the card holder. """ kw = dict() # raw_data = data['card_data'] kw.update(national_id=ssin.format_ssin(str(data.national_number))) kw.update(first_name=data.firstnames or '') kw.update( middle_name=data.first_letter_of_third_given_name or '') kw.update(last_name=data.surname or '') card_number = str(data.card_number) if data.PHOTO_FILE: if not card_number: raise Exception("20150730 photo data but no card_number ") fn = get_image_path(card_number) if fn.exists(): logger.warning("Overwriting existing image file %s.", fn) try: fp = open(fn, 'wb') # fp.write(data.PHOTO_FILE) fp.write(base64.b64decode(data.PHOTO_FILE)) fp.close() except IOError as e: logger.warning("Failed to store image file %s : %s", fn, e) #~ print 20121117, repr(data['picture']) #~ kw.update(picture_data_encoded=data['picture']) if isinstance(data.date_of_birth, six.string_types): data.date_of_birth = IncompleteDate.parse(data.date_of_birth) # IncompleteDate( # *data.date_of_birth.split('-')) kw.update(birth_date=data.date_of_birth) kw.update(card_valid_from=dateparser.parse( data.validity_begin_date).date()) kw.update(card_valid_until=dateparser.parse( data.validity_end_date).date()) kw.update(card_number=card_number) kw.update(card_issuer=data.issuing_municipality) if data.nobility: kw.update(noble_condition=data.nobility) if data.address_street_and_number: kw = street2kw(data.address_street_and_number, **kw) if data.address_zip: kw.update(zip_code=str(data.address_zip)) if data.location_of_birth: kw.update(birth_place=data.location_of_birth) pk = data.eidreader_country country = rt.models.countries.Country.objects.get(isocode=pk) kw.update(country=country) if data.address_municipality: kw.update(city=rt.models.countries.Place.lookup_or_create( 'name', data.address_municipality, country=country)) msg1 = "BeIdReadCardToClientAction %s" % kw.get('national_id') def sex2gender(sex): c0 = sex[0].upper() if c0 == 'M': return dd.Genders.male if c0 in 'FWV': return dd.Genders.female logger.warning("%s : invalid gender code %r", msg1, sex) kw.update(gender=sex2gender(data.gender)) def doctype2cardtype(dt): #~ if dt == 1: return BeIdCardTypes.get_by_value("1") rv = BeIdCardTypes.get_by_value(str(dt)) # logger.info("20130103 documentType %r --> %r", dt, rv) return rv kw.update(card_type=doctype2cardtype(data.document_type)) return kw