def card2client(self, data): "does the actual conversion" countries = dd.resolve_app('countries', strict=True) kw = dict() raw_data = data['card_data'] if not '\n' in raw_data: # a one-line string means that some error occured (e.g. no # card in reader). of course we want to show this to the # user. raise Warning(raw_data) #~ print cd data = AttrDict(yaml.load(raw_data)) #~ raise Exception("20131108 cool: %s" % cd) kw.update(national_id=ssin.format_ssin(str(data.nationalNumber))) kw.update(first_name=join_words( data.firstName, data.middleName)) kw.update(last_name=data.name) card_number = str(data.cardNumber) if data.photo: fn = config.card_number_to_picture_file(card_number) if os.path.exists(fn): logger.warning("Overwriting existing image file %s.", fn) fp = file(fn, 'wb') fp.write(base64.b64decode(data.photo)) fp.close() #~ print 20121117, repr(data['picture']) #~ kw.update(picture_data_encoded=data['picture']) if isinstance(data.dateOfBirth, basestring): data.dateOfBirth = IncompleteDate(*data.dateOfBirth.split('-')) kw.update(birth_date=data.dateOfBirth) kw.update(card_valid_from=data.cardValidityDateBegin) kw.update(card_valid_until=data.cardValidityDateEnd) kw.update(card_number=card_number) kw.update(card_issuer=data.cardDeliveryMunicipality) if data.nobleCondition: kw.update(noble_condition=data.nobleCondition) kw.update(street=data.streetAndNumber) #~ kw.update(street_no=data['streetNumber']) #~ kw.update(street_box=data['boxNumber']) if True: # kw['street'] and not (kw['street_no'] or kw['street_box']): kw = street2kw(kw['street'], **kw) kw.update(zip_code=str(data.zip)) if data.placeOfBirth: kw.update(birth_place=data.placeOfBirth) pk = data.reader.upper() msg1 = "BeIdReadCardToClientAction %s" % kw.get('national_id') #~ try: country = countries.Country.objects.get(isocode=pk) kw.update(country=country) #~ except countries.Country.DoesNotExist,e: #~ except Exception,e: #~ logger.warning("%s : no country with code %r",msg1,pk) #~ BE = countries.Country.objects.get(isocode='BE') #~ fld = countries.Place._meta.get_field() kw.update(city=countries.Place.lookup_or_create( 'name', data.municipality, country=country)) def sex2gender(sex): if sex == 'MALE': return dd.Genders.male if sex == 'FEMALE': 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.documentType)) if config.data_collector_dir: fn = os.path.join( config.data_collector_dir, card_number + '.txt') file(fn, "w").write(raw_data) logger.info("Wrote eid card data to file %s", fn) return kw
def card2client(cls, data): "does the actual conversion" self = cls from lino.utils import ssin from lino.api import dd, rt from lino.mixins.beid import BeIdCardTypes from lino.utils import join_words from lino.utils import IncompleteDate from lino_xl.lib.contacts.utils import street2kw countries = dd.resolve_app('countries', strict=True) kw = dict() #~ def func(fldname,qname): #~ kw[fldname] = data[qname] kw.update(national_id=ssin.format_ssin(data['nationalNumber'])) kw.update(first_name=join_words( data['firstName1'], data['firstName2'], data['firstName3'])) #~ func('first_name','firstName1') kw.update(last_name=data['surname']) card_number = data['cardNumber'] if 'picture' in data: fn = self.card_number_to_picture_file(card_number) if os.path.exists(fn): logger.warning("Overwriting existing image file %s.", fn) fp = file(fn, 'wb') fp.write(base64.b64decode(data['picture'])) fp.close() #~ print 20121117, repr(data['picture']) #~ kw.update(picture_data_encoded=data['picture']) #~ func('card_valid_from','validityBeginDate') #~ func('card_valid_until','validityEndDate') #~ func('birth_date','birthDate') kw.update(birth_date=IncompleteDate( *settings.SITE.parse_date(data['birthDate']))) kw.update(card_valid_from=datetime.date( *settings.SITE.parse_date(data['validityBeginDate']))) kw.update(card_valid_until=datetime.date( *settings.SITE.parse_date(data['validityEndDate']))) kw.update(card_number=card_number) kw.update(card_issuer=data['issuingMunicipality']) kw.update(noble_condition=data['nobleCondition']) kw.update(street=data['street']) kw.update(street_no=data['streetNumber']) kw.update(street_box=data['boxNumber']) if kw['street'] and not (kw['street_no'] or kw['street_box']): kw = street2kw(kw['street'], **kw) kw.update(zip_code=data['zipCode']) kw.update(birth_place=data['birthLocation']) pk = data['country'].upper() msg1 = "BeIdReadCardToClientAction %s" % kw.get('national_id') #~ try: country = countries.Country.objects.get(isocode=pk) kw.update(country=country) #~ except countries.Country.DoesNotExist,e: #~ except Exception,e: #~ logger.warning("%s : no country with code %r",msg1,pk) #~ BE = countries.Country.objects.get(isocode='BE') #~ fld = countries.Place._meta.get_field() kw.update(city=countries.Place.lookup_or_create( 'name', data['municipality'], country=country)) def sex2gender(sex): if sex == 'M': return dd.Genders.male if sex in 'FVW': return dd.Genders.female logger.warning("%s : invalid gender code %r", msg1, sex) kw.update(gender=sex2gender(data['sex'])) if False: def nationality2country(nationality): try: return countries.Country.objects.get( nationalities__icontains=nationality) except countries.Country.DoesNotExist, e: logger.warning("%s : no country for nationality %r", msg1, nationality) except MultipleObjectsReturned, e: logger.warning( "%s : found more than one country for nationality %r", msg1, nationality)
def card2client(cls, data): "does the actual conversion" self = cls from lino.utils import ssin from lino.api import dd, rt from lino.mixins.beid import BeIdCardTypes from lino.utils import join_words from lino.utils import IncompleteDate from lino_xl.lib.contacts.utils import street2kw countries = dd.resolve_app('countries', strict=True) kw = dict() #~ def func(fldname,qname): #~ kw[fldname] = data[qname] kw.update(national_id=ssin.format_ssin(data['nationalNumber'])) kw.update(first_name=join_words(data['firstName1'], data['firstName2'], data['firstName3'])) #~ func('first_name','firstName1') kw.update(last_name=data['surname']) card_number = data['cardNumber'] if 'picture' in data: fn = self.card_number_to_picture_file(card_number) if os.path.exists(fn): logger.warning("Overwriting existing image file %s.", fn) fp = file(fn, 'wb') fp.write(base64.b64decode(data['picture'])) fp.close() #~ print 20121117, repr(data['picture']) #~ kw.update(picture_data_encoded=data['picture']) #~ func('card_valid_from','validityBeginDate') #~ func('card_valid_until','validityEndDate') #~ func('birth_date','birthDate') kw.update(birth_date=IncompleteDate( *settings.SITE.parse_date(data['birthDate']))) kw.update(card_valid_from=datetime.date( *settings.SITE.parse_date(data['validityBeginDate']))) kw.update(card_valid_until=datetime.date( *settings.SITE.parse_date(data['validityEndDate']))) kw.update(card_number=card_number) kw.update(card_issuer=data['issuingMunicipality']) kw.update(noble_condition=data['nobleCondition']) kw.update(street=data['street']) kw.update(street_no=data['streetNumber']) kw.update(street_box=data['boxNumber']) if kw['street'] and not (kw['street_no'] or kw['street_box']): kw = street2kw(kw['street'], **kw) kw.update(zip_code=data['zipCode']) kw.update(birth_place=data['birthLocation']) pk = data['country'].upper() msg1 = "BeIdReadCardToClientAction %s" % kw.get('national_id') #~ try: country = countries.Country.objects.get(isocode=pk) kw.update(country=country) #~ except countries.Country.DoesNotExist,e: #~ except Exception,e: #~ logger.warning("%s : no country with code %r",msg1,pk) #~ BE = countries.Country.objects.get(isocode='BE') #~ fld = countries.Place._meta.get_field() kw.update(city=countries.Place.lookup_or_create( 'name', data['municipality'], country=country)) def sex2gender(sex): if sex == 'M': return dd.Genders.male if sex in 'FVW': return dd.Genders.female logger.warning("%s : invalid gender code %r", msg1, sex) kw.update(gender=sex2gender(data['sex'])) if False: def nationality2country(nationality): try: return countries.Country.objects.get( nationalities__icontains=nationality) except countries.Country.DoesNotExist, e: logger.warning("%s : no country for nationality %r", msg1, nationality) except MultipleObjectsReturned, e: logger.warning( "%s : found more than one country for nationality %r", msg1, nationality)
def card2client_java(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.nationalNumber))) kw.update(first_name=data.firstName or '') kw.update(middle_name=data.middleName or '') kw.update(last_name=data.name or '') card_number = str(data.cardNumber) if data.photo: if not card_number: raise Exception("20150730 photo data but no card_number ") fn = dd.plugins.beid.holder_model.card_number_to_image_path( card_number) if fn.exists(): logger.warning("Overwriting existing image file %s.", fn) try: fp = file(fn, 'wb') fp.write(base64.b64decode(data.photo)) 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.dateOfBirth, basestring): data.dateOfBirth = IncompleteDate(*data.dateOfBirth.split('-')) kw.update(birth_date=data.dateOfBirth) kw.update(card_valid_from=data.cardValidityDateBegin) kw.update(card_valid_until=data.cardValidityDateEnd) kw.update(card_number=card_number) kw.update(card_issuer=data.cardDeliveryMunicipality) if data.nobleCondition: kw.update(noble_condition=data.nobleCondition) if data.streetAndNumber: # kw.update(street=data.streetAndNumber) kw = street2kw(data.streetAndNumber, **kw) if data.zip: kw.update(zip_code=str(data.zip)) if data.placeOfBirth: kw.update(birth_place=data.placeOfBirth) pk = data.reader.upper() msg1 = "BeIdReadCardToClientAction %s" % kw.get('national_id') country = rt.models.countries.Country.objects.get(isocode=pk) kw.update(country=country) if data.municipality: kw.update(city=rt.models.countries.Place.lookup_or_create( 'name', data.municipality, country=country)) def sex2gender(sex): if sex == 'MALE': return dd.Genders.male if sex == 'FEMALE': 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.documentType)) 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) 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(cls,data): "does the actual conversion" kw = dict() #~ assert not settings.SITE.use_eid_jslib #~ assert not settings.SITE.has_plugin(BeIdJsLibPlugin): data = data['card_data'] if not '\n' in data: raise Warning(data) #~ print cd data = AttrDict(yaml.load(data)) #~ raise Exception("20131108 cool: %s" % cd) kw.update(national_id=ssin.format_ssin(str(data.nationalNumber))) kw.update(first_name=join_words( data.firstName, data.middleName)) kw.update(last_name=data.name) card_number = str(data.cardNumber) if data.photo: fn = card_number_to_picture_file(card_number) if os.path.exists(fn): logger.warning("Overwriting existing image file %s.",fn) fp = file(fn,'wb') fp.write(base64.b64decode(data.photo)) fp.close() #~ print 20121117, repr(data['picture']) #~ kw.update(picture_data_encoded=data['picture']) if isinstance(data.dateOfBirth,basestring): data.dateOfBirth = IncompleteDate(*data.dateOfBirth.split('-')) kw.update(birth_date=data.dateOfBirth) kw.update(card_valid_from=data.cardValidityDateBegin) kw.update(card_valid_until=data.cardValidityDateEnd) kw.update(card_number=card_number) kw.update(card_issuer=data.cardDeliveryMunicipality) if data.nobleCondition: kw.update(noble_condition=data.nobleCondition) kw.update(street=data.streetAndNumber) #~ kw.update(street_no=data['streetNumber']) #~ kw.update(street_box=data['boxNumber']) if True: # kw['street'] and not (kw['street_no'] or kw['street_box']): kw = street2kw(kw['street'],**kw) kw.update(zip_code=str(data.zip)) if data.placeOfBirth: kw.update(birth_place=data.placeOfBirth) pk = data.reader.upper() msg1 = "BeIdReadCardToClientAction %s" % kw.get('national_id') #~ try: country = countries.Country.objects.get(isocode=pk) kw.update(country=country) #~ except countries.Country.DoesNotExist,e: #~ except Exception,e: #~ logger.warning("%s : no country with code %r",msg1,pk) #~ BE = countries.Country.objects.get(isocode='BE') #~ fld = countries.City._meta.get_field() kw.update(city=countries.City.lookup_or_create( 'name',data.municipality,country=country)) def sex2gender(sex): if sex == 'MALE' : return dd.Genders.male if sex == 'FEMALE' : 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.documentType)) return kw
def card2client(self, data): """Convert the data coming from the card into database fields to be stored in the card holder. """ countries = dd.resolve_app('countries', strict=True) kw = dict() raw_data = data['card_data'] if not '\n' in raw_data: # a one-line string means that some error occured (e.g. no # card in reader). of course we want to show this to the # user. raise Warning(raw_data) #~ print cd data = AttrDict(yaml.load(raw_data)) #~ raise Exception("20131108 cool: %s" % cd) kw.update(national_id=ssin.format_ssin(str(data.nationalNumber))) kw.update(first_name=data.firstName or '') kw.update(middle_name=data.middleName or '') kw.update(last_name=data.name or '') card_number = str(data.cardNumber) if data.photo: 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 = file(fn, 'wb') fp.write(base64.b64decode(data.photo)) 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.dateOfBirth, basestring): data.dateOfBirth = IncompleteDate(*data.dateOfBirth.split('-')) kw.update(birth_date=data.dateOfBirth) kw.update(card_valid_from=data.cardValidityDateBegin) kw.update(card_valid_until=data.cardValidityDateEnd) kw.update(card_number=card_number) kw.update(card_issuer=data.cardDeliveryMunicipality) if data.nobleCondition: kw.update(noble_condition=data.nobleCondition) if data.streetAndNumber: # kw.update(street=data.streetAndNumber) kw = street2kw(data.streetAndNumber, **kw) if data.zip: kw.update(zip_code=str(data.zip)) if data.placeOfBirth: kw.update(birth_place=data.placeOfBirth) pk = data.reader.upper() msg1 = "BeIdReadCardToClientAction %s" % kw.get('national_id') country = countries.Country.objects.get(isocode=pk) kw.update(country=country) if data.municipality: kw.update(city=countries.Place.lookup_or_create( 'name', data.municipality, country=country)) def sex2gender(sex): if sex == 'MALE': return dd.Genders.male if sex == 'FEMALE': 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.documentType)) if config.data_collector_dir: logger.info("Gonna write raw eid card data: %r", raw_data) fn = os.path.join(config.data_collector_dir, card_number + '.txt') file(fn, "w").write(raw_data.encode('utf-8')) logger.info("Wrote eid card data to file %s", fn) return kw
def card2client(self, data): """Convert the data coming from the card into database fields to be stored in the card holder. """ countries = dd.resolve_app('countries', strict=True) kw = dict() raw_data = data['card_data'] if not '\n' in raw_data: # a one-line string means that some error occured (e.g. no # card in reader). of course we want to show this to the # user. raise Warning(raw_data) #~ print cd data = AttrDict(yaml.load(raw_data)) #~ raise Exception("20131108 cool: %s" % cd) kw.update(national_id=ssin.format_ssin(str(data.nationalNumber))) kw.update(first_name=data.firstName or '') kw.update(middle_name=data.middleName or '') kw.update(last_name=data.name or '') card_number = str(data.cardNumber) if data.photo: 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 = file(fn, 'wb') fp.write(base64.b64decode(data.photo)) 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.dateOfBirth, basestring): data.dateOfBirth = IncompleteDate(*data.dateOfBirth.split('-')) kw.update(birth_date=data.dateOfBirth) kw.update(card_valid_from=data.cardValidityDateBegin) kw.update(card_valid_until=data.cardValidityDateEnd) kw.update(card_number=card_number) kw.update(card_issuer=data.cardDeliveryMunicipality) if data.nobleCondition: kw.update(noble_condition=data.nobleCondition) if data.streetAndNumber: # kw.update(street=data.streetAndNumber) kw = street2kw(data.streetAndNumber, **kw) if data.zip: kw.update(zip_code=str(data.zip)) if data.placeOfBirth: kw.update(birth_place=data.placeOfBirth) pk = data.reader.upper() msg1 = "BeIdReadCardToClientAction %s" % kw.get('national_id') country = countries.Country.objects.get(isocode=pk) kw.update(country=country) if data.municipality: kw.update(city=countries.Place.lookup_or_create( 'name', data.municipality, country=country)) def sex2gender(sex): if sex == 'MALE': return dd.Genders.male if sex == 'FEMALE': 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.documentType)) if config.data_collector_dir: logger.info("Gonna write raw eid card data: %r", raw_data) fn = os.path.join( config.data_collector_dir, card_number + '.txt') file(fn, "w").write(raw_data.encode('utf-8')) logger.info("Wrote eid card data to file %s", fn) 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
def card2client_java(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.nationalNumber))) kw.update(first_name=data.firstName or '') kw.update(middle_name=data.middleName or '') kw.update(last_name=data.name or '') card_number = str(data.cardNumber) if data.photo: 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 = file(fn, 'wb') fp.write(base64.b64decode(data.photo)) 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.dateOfBirth, basestring): data.dateOfBirth = IncompleteDate(*data.dateOfBirth.split('-')) kw.update(birth_date=data.dateOfBirth) kw.update(card_valid_from=data.cardValidityDateBegin) kw.update(card_valid_until=data.cardValidityDateEnd) kw.update(card_number=card_number) kw.update(card_issuer=data.cardDeliveryMunicipality) if data.nobleCondition: kw.update(noble_condition=data.nobleCondition) if data.streetAndNumber: # kw.update(street=data.streetAndNumber) kw = street2kw(data.streetAndNumber, **kw) if data.zip: kw.update(zip_code=str(data.zip)) if data.placeOfBirth: kw.update(birth_place=data.placeOfBirth) pk = data.reader.upper() msg1 = "BeIdReadCardToClientAction %s" % kw.get('national_id') country = rt.models.countries.Country.objects.get(isocode=pk) kw.update(country=country) if data.municipality: kw.update(city=rt.models.countries.Place.lookup_or_create( 'name', data.municipality, country=country)) def sex2gender(sex): if sex == 'MALE': return dd.Genders.male if sex == 'FEMALE': 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.documentType)) return kw