def getPeople(): cfList = [] people = [] i = 0 for name in NameList: for surname in SurnameList: for city in BirthPlace: for birthDay in BirthDayList: sensors = selectSensors(0) cf = codicefiscale.encode(name=name[0], surname=surname, birthdate=birthDay, birthplace=city, sex=name[1]) if cf not in cfList: cfList.append(cf) addperson = { "Id": i, "Name": name[0], "Surname": surname, "BirthPlace": city, "Sex": name[1], "BirthDate": birthDay, "CodiceFiscale": cf, "Sensors": sensors, "ActualZone": 0 } i += 1 people.append(addperson) personList = [] for person in people: personList.append(person["CodiceFiscale"]) personSet = set(personList) # controllo se per sbaglio ci sono CF uguali return people
def creazione_personale(): # codice fiscale, nome, cognome, data nascita, residenza, dipartimento names = pd.read_csv("../res/datasets/nomi.csv") surnames = pd.read_csv("../res/datasets/cognomi.csv") hospitals = pd.read_csv("../res/datasets/ospedali.csv") cities = pd.read_csv("../res/datasets/comuni.csv", sep=";") for db in ["bdm_unipa", "bdm_unina", "bdm_unito", "bdm_unimi"]: sql = database_connection(db) dipartimenti = list(sql.execute_query("SELECT id_dipartimento, nome FROM dipartimento")) for i in range(0, 500): name = names.iloc[np.random.randint(0, 100), 0] name = name[0] + str(name[1:]).lower() surname = surnames.iloc[np.random.randint(0, 100), 0] surname = surname[0] + str(surname[1:]).lower() date = data_random(1950, 1992) sex = "" if name[-1] == "A": sex = "F" else: sex = "M" city = hospitals.iloc[np.random.randint(0, len(hospitals)), 1] if city.find("/") > 0: city = city[:city.find("/")] codice_fiscale = codicefiscale.encode(surname=surname, name=name, sex=sex, birthdate=date, birthplace=city) city = cities.iloc[np.random.randint(0, len(cities)), 1] person = (codice_fiscale, name, surname, date, city, dipartimenti[np.random.randint(0, len(dipartimenti))][0]) query = "INSERT INTO personale VALUES(" for value in person: query += "'" + str(value) + "'," sql.execute_query(query[:-1] + ")")
def post_italian_fiscal_code(): surname = request.form.get('surname', 'Caccamo') name = request.form.get('name', 'Fabio') sex = request.form.get('sex', 'M') birthdate = request.form.get('birthdate', '03/04/1985') birthplace = request.form.get('birthplace', 'Torino') cf = codicefiscale.encode(surname=surname, name=name, sex=sex, birthdate=birthdate, birthplace=birthplace) result = {"italianFiscalCode": cf} return jsonify(result)
def verify_cf(request): """ Verifica che il codice fiscale sia conforme ai dati inseriti nel form, altrimenti mostra quali dati sono errati :request: request contenente i dati del cittadino :return: dic con True/False """ try: fiscal_code = request.POST.get('fiscalNumber').upper() belfiore_code = request.POST.get('placeOfBirth') if request.POST.get('placeOfBirth') else request.POST.get( 'nationOfBirth') verify_fiscal_code = { 'familyName': fiscal_code[0:3] == codicefiscale.encode_surname(request.POST.get('familyName')), 'name': fiscal_code[3:6] == codicefiscale.encode_surname(request.POST.get('name')), 'gender': codicefiscale.decode(fiscal_code)['sex'] == request.POST.get('gender'), 'dateOfBirth': codicefiscale.decode(fiscal_code)['birthdate'] == datetime.datetime.strptime( request.POST.get('dateOfBirth'), '%d/%m/%Y'), 'belfiore_code': codicefiscale.decode(fiscal_code)['birthplace']['code'] == belfiore_code } if belfiore_code == 'Z998': verify_fiscal_code['status_code'] = StatusCode.BAD_REQUEST.value return verify_fiscal_code calculated_cf = codicefiscale.encode(request.POST.get('familyName'), request.POST.get('name'), request.POST.get('gender'), request.POST.get('dateOfBirth'), belfiore_code ) if fiscal_code == calculated_cf.upper(): verify_fiscal_code = { 'status_code': StatusCode.OK.value, 'familyName': True, 'name': True, 'gender': True, 'dateOfBirth': True, 'belfiore_code': True, } else: verify_fiscal_code['status_code'] = StatusCode.ERROR.value except Exception as e: LOG.error("Exception: {}".format(str(e)), extra=set_client_ip()) verify_fiscal_code = { 'status_code': StatusCode.EXC.value, } return verify_fiscal_code
def computeFiscalCode(): with open('../../settings/attributes.json') as configFile: personList = json.load(configFile) for person in personList: if "CodiceFiscale" not in person: cf = codicefiscale.encode(name=person["Name"], surname=person["Surname"], birthdate=person["BirthDate"], birthplace=person["BirthPlace"], sex=person["Sex"]) person["CodiceFiscale"] = cf with open('settings/attributes.json', "w") as configFile: json.dump(personList, configFile) configFile.close()
def users(n=50): """ Add a random number of users in the database, together with the default user. This method is not stable yet. Avoid using big numbers. Args: n (int, optional): Number of user to generate. Defaults to 50. """ users_number = db.session.query(User).count() if users_number == 0: default_user() users = list() for i in range(0, n - 1): profile = fake.profile(["mail", "birthdate", "sex"]) profile["first_name"] = fake.first_name() profile["last_name"] = fake.last_name() # Generate fiscal code fiscalcode = None while fiscalcode is None: try: fiscalcode = cf.encode( name=profile["first_name"], surname=profile["last_name"], sex=profile["sex"], birthdate=profile["birthdate"].strftime("%d/%m/%Y"), birthplace=fake.city(), ) except ValueError: pass users.append( User( email=profile["mail"], firstname=profile["first_name"], lastname=profile["last_name"], phonenumber=fake.phone_number().replace(" ", ""), password=fake.password(length=fake.pyint(8, 24)), birthdate=profile["birthdate"], fiscalcode=fiscalcode, )) for user in users: user.update_avatar_seed() db.session.add_all(users) db.session.commit()
def operators(n=50): """ Add a random number of operators in the database, together with the default operators. This method is not stable yet. Avoid using big numbers. Args: n (int, optional): Number of operators to generate. Defaults to 50. """ operators_number = db.session.query(Operator).count() if operators_number == 0: default_operator() operators = list() for i in range(0, n - 1): profile = fake.profile(["mail", "birthdate", "sex"]) profile["first_name"] = fake.first_name() profile["last_name"] = fake.last_name() # Generate fiscal code # ! This is not a nice solution # TODO should be refactored fiscal_code = None while fiscal_code is None: try: fiscal_code = cf.encode( name=profile["first_name"], surname=profile["last_name"], sex=profile["sex"], birthdate=profile["birthdate"].strftime("%d/%m/%Y"), birthplace=fake.city(), ) except ValueError: pass operators.append( Operator( email=profile["mail"], firstname=profile["first_name"], lastname=profile["last_name"], phone_number=fake.phone_number().replace(" ", ""), password=fake.password(length=fake.pyint(8, 24)), dateofbirth=profile["birthdate"], fiscal_code=fiscal_code, )) db.session.add_all(operators) db.session.commit()
def resolve_interpolate( root: T.Any, info: ResolveInfo, **args: T.Any ) -> T.Dict[T.Text, T.Text]: name = args.get("name") surname = args.get("surname") gender = args.get("gender") place_of_birth = args.get("placeOfBirth") date_of_birth = args.get("dateOfBirth") if all( [ arg is not None for arg in (name, surname, gender, place_of_birth, date_of_birth) ] ): return { "codiceFiscale": codicefiscale.encode( surname, name, gender, date_of_birth, place_of_birth ) } raise ValueError("Missing argument.")
def _generate_fake_users(self): FAKER = Faker('it_IT') _users = {} for idx, _ in enumerate(range(10)): _is_even = (idx % 2 == 0) name = FAKER.first_name_male() if _is_even \ else FAKER.first_name_female() lastname = FAKER.last_name_male() if _is_even \ else FAKER.last_name_female() gender = 'M' if _is_even else 'F' birth_date = FAKER.date() fiscal_number = fiscalcode.encode( surname=lastname, name=name, sex=gender, birthdate=birth_date, birthplace=random.choice(italian_municipalities)['code']) spid_code = 'TENV{}'.format( FAKER.lexify('??????????', string.ascii_letters + string.digits)) _users[FAKER.user_name() if idx > 0 else 'test'] = { 'attrs': { 'spidCode': spid_code, 'name': name, 'familyName': lastname, 'gender': gender, 'dateOfBirth': birth_date, 'companyName': FAKER.company(), 'registeredOffice': FAKER.address(), 'fiscalNumber': 'TINIT-{}'.format(fiscal_number), 'email': FAKER.email() }, 'pwd': 'test', 'sp': None } return _users
def test_encode(self): data = [ { 'input': { 'surname': 'Ait Hadda', 'name': 'Saad', 'sex': 'M', 'birthdate': '08/09/1995', 'birthplace': 'Marocco' }, 'result': 'THDSDA95P08Z330H', }, { 'input': { 'surname': 'Belousovs', 'name': 'Olegs', 'sex': 'M', 'birthdate': '22/03/1984', 'birthplace': 'Lettonia' }, 'result': 'BLSLGS84C22Z145O', }, { 'input': { 'surname': 'Bruno', 'name': 'Giovanni', 'sex': 'M', 'birthdate': '26/02/1971', 'birthplace': 'Torino' }, 'result': 'BRNGNN71B26L219T', }, { 'input': { 'surname': 'Caccamo', 'name': 'Fabio', 'sex': 'M', 'birthdate': '03/04/1985', 'birthplace': 'Torino' }, 'result': 'CCCFBA85D03L219P', }, { 'input': { 'surname': 'Gomba', 'name': 'Alessandro', 'sex': 'M', 'birthdate': '05/01/1984', 'birthplace': 'Pinerolo' }, 'result': 'GMBLSN84A05G674H', }, { 'input': { 'surname': 'Martini', 'name': 'Maria', 'sex': 'F', 'birthdate': '16/12/1983', 'birthplace': 'Anagni' }, 'result': 'MRTMRA83T56A269B', }, { 'input': { 'surname': 'Panella', 'name': 'Michele', 'sex': 'M', 'birthdate': '27/10/1979', 'birthplace': 'San Severo (FG)' }, 'result': 'PNLMHL79R27I158P', }, { 'input': { 'surname': 'Quatrini', 'name': 'Dario', 'sex': 'M', 'birthdate': '13/09/1971', 'birthplace': 'Pavia' }, 'result': 'QTRDRA71P13G388J', }, { 'input': { 'surname': 'Takakura', 'name': 'Yuuki', 'sex': 'F', 'birthdate': '28/02/1987', 'birthplace': 'Torino' }, 'result': 'TKKYKU87B68L219F', }, ] for obj in data: # with self.subTest(obj=obj): code = codicefiscale.encode(**obj['input']) self.assertEqual(code, obj['result'])
def clean(self): data = self.cleaned_data # controllo codice fiscale richiedente if data.get('so_cod_fis'): codice_fiscale = data.get('so_cod_fis').upper() if not codicefiscale.is_valid(codice_fiscale): raise forms.ValidationError('Codice fiscale del richiedente non corretto') dt_nascita=data.get('so_nasc_dt') str_dtnascita = str(dt_nascita.day) + '/' + str(dt_nascita.month) + '/' + str(dt_nascita.year) dati_decodecf = codicefiscale.decode(codice_fiscale) #if dati_decodecf['birthplace']['name'] != data.get('so_nasc_com').upper(): # raise forms.ValidationError('Luogo di nascita non coerente con quello ricavato dal codice fiscale del richiedente.') # cf_calcolato = codicefiscale.encode(surname=data.get('so_cognome'), name=data.get('so_nome'), sex=data.get('so_sesso'), birthdate=str_dtnascita, birthplace=data.get('so_nasc_com')) #if (cf_calcolato != codice_fiscale) and (codice_fiscale not in codicefiscale.decode(cf_calcolato)['omocodes']): # alert_msg = 'Codice fiscale del richiedente non coerente con i dati anagrafici indicati' # raise forms.ValidationError(alert_msg) data['so_cod_fis'] = codice_fiscale if data.get('pr_codfiscale'): codice_fiscale = data.get('pr_codfiscale').upper() if not codicefiscale.is_valid(codice_fiscale): raise forms.ValidationError('Codice fiscale del minore non corretto') dt_nascita=data.get('pr_nasc_dt') str_dtnascita = str(dt_nascita.day) + '/' + str(dt_nascita.month) + '/' + str(dt_nascita.year) dati_decodecf = codicefiscale.decode(codice_fiscale) # if dati_decodecf['birthplace']['name'] != data.get('pr_nasc_com').upper(): # raise forms.ValidationError('Luogo di nascita non coerente con quello ricavato dal codice fiscale del minore.') #cf_calcolato= build_cf(data.get('pr_cognome'), data.get('pr_nome'), datetime.datetime(dt_nascita.year, dt_nascita.month, dt_nascita.day), data.get('pr_sesso'), comune_cf) cf_calcolato = codicefiscale.encode(surname=data.get('pr_cognome'), name=data.get('pr_nome'), sex=data.get('pr_sesso'), birthdate=str_dtnascita, birthplace=data.get('pr_nasc_com')) #print("CF calcolato:"+cf_calcolato) #if (cf_calcolato != codice_fiscale) and (codice_fiscale not in codicefiscale.decode(cf_calcolato)['omocodes']): # raise forms.ValidationError('Codice fiscale del minore non coerente con i dati anagrafici') # controllo presenza domanda con stesso codice fiscale alunno domande_alunno = Domande.objects.filter(pr_codfiscale=codice_fiscale, pr_stato__gte=0, pr_stato__lt=5) if domande_alunno.count() > 1: if not self.instance.pk: # siamo in inserimento raise forms.ValidationError( 'Già presente in archivio una richiesta di buoni Miur per minore con cod.fiscale:' + codice_fiscale) elif self.instance.pk != domande_alunno[0].id: # in fase di modifica raise forms.ValidationError( 'Già presente in archivio una richiesta di buoni Miur per minore con cod.fiscale:' + codice_fiscale) # controllo valid. data di nascita if data.get('pr_nasc_dt'): if data.get('pr_nasc_dt') < datetime.date(2013, 1, 1): raise forms.ValidationError("Anno di nascita minimo 2013") elif data.get('pr_nasc_dt') >= date.today(): raise forms.ValidationError("Ammesse solo date passate per data nascita") # controllo presenza tutti i campi IBAN per riscossione banca if data.get('so_risc_diretta') == 'N': if not data.get('so_banca_iban'): raise forms.ValidationError("Indicare l'IBAN dell'intestatario") if data.get('pr_tipo_asilo')=='P' and (not data.get('pr_num_tot_ricevute') or not data.get('pr_importo_tot_ricevute')): raise forms.ValidationError("Indicare il numero delle ricevute di spesa da allegare con il loro importo complessivo.") # controlli sui dati domicilio per non residenti if data.get('so_flag_residente') == 0: if not (data.get('so_domicilio')): raise forms.ValidationError("Obbligatorio, per in non residenti, indicare il domicilio") if not data.get('pr_data_richiesta'): data['pr_data_richiesta'] = timezone.now #controllo su spesa mensile if data.get('pr_fascia_asilo') == 'N': if data.get('pr_spesa_mese') <= 168: raise forms.ValidationError("Si accettano solo domande con spesa mensile superiore a 168 euro.") else: if data.get('pr_spesa_mese') <= 120: raise forms.ValidationError("Si accettano solo domande con spesa mensile superiore a 120 euro.") data['so_cognome'] = data.get('so_cognome').upper() data['so_nome'] = data.get('so_nome').upper() data['so_nasc_com'] = data.get('so_nasc_com').upper() data['pr_cognome'] = data.get('pr_cognome').upper() data['pr_nome'] = data.get('pr_nome').upper() data['pr_nasc_com'] = data.get('pr_nasc_com').upper() data['so_flag_residente'] = data.get('so_flag_residente') data['pr_stato'] = 0 if data.get('pr_fascia_asilo')=='N': # controlli per fascia nido # obbligatori tutti i dati della DSU if not (data.get('pr_prot_isee_inps') and data.get('pr_data_isee_inps') and data.get('pr_isee')): raise forms.ValidationError("Riempire tutti i campi dell'attestazione DSU" ) #controllo protocollo INPS currdata = timezone.now() curranno = currdata.strftime("%Y") protdsu=data.get('pr_prot_isee_inps').upper() prefix = 'INPS-ISEE-' prima_parte_curranno = prefix + curranno + '-' prima_parte_annoprec = prefix + str(int(curranno)-1) + '-' if ((protdsu[0:15] != prima_parte_curranno) and (protdsu[0:15] != prima_parte_annoprec)) or (protdsu[24:27] != '-00') or (protdsu == prefix + curranno +'-XXXXXXXXX-00'): #or (protdsu == 'INPS-ISEE-' + curranno + '-XXXXXXXXX-00') raise forms.ValidationError('Inserire un numero protocollo DSU nel formato INPS-ISEE-anno-XXXXXXXXX-00 con anno '+ str(int(curranno)-1) + ' oppure ' + curranno) data['pr_prot_isee_inps'] = protdsu # controlli sulla data DSU datadsu=data.get('pr_data_isee_inps') if datadsu < datetime.date(int(curranno)-1, 1, 1): raise forms.ValidationError("Ammesse solo date dal I gennaio " + str(int(curranno)-1)) elif datadsu > datetime.date.today(): raise forms.ValidationError("Ammesse solo date passate") if data.get('pr_tipo_asilo') == 'C': #svuota i campi delle ricevute se l'asilo è pubblico data['pr_num_tot_ricevute'] = None data['pr_importo_tot_ricevute'] = None return data
def mutate_and_get_payload(cls, root, info, **input): try: _data = input.get('contatto') # Ente (M) if 'ente' in _data: _ente = _data.pop('ente') if is_RUP(info.context.user): _ente = Organization.objects.get(code=_ente['code']) else: _ente = Organization.objects.get(usermembership__member=info.context.user, code=_ente['code']) _data['ente'] = _ente if info.context.user and not info.context.user.is_anonymous: # Tipologia (M) if 'tipologia' in _data: _tipologia = _data.pop('tipologia') if _tipologia and _tipologia in TIPOLOGIA_CONTATTO: _data['tipologia'] = _tipologia _contatto = Contatto() nuovo_contatto = update_create_instance(_contatto, _data) if nuovo_contatto.user is None: # #### # Creating a Temporary User to be associate to this 'Contatto' # ### first_name = nuovo_contatto.nome.split(' ')[0] if len(nuovo_contatto.nome.split(' ')) > 0 \ else nuovo_contatto.nome last_name = nuovo_contatto.nome.split(' ')[1] if len(nuovo_contatto.nome.split(' ')) > 1 \ else nuovo_contatto.nome fiscal_code = codicefiscale.encode( surname=last_name, name=first_name, sex='M', birthdate=datetime.datetime.now(timezone.get_current_timezone()).strftime('%m/%d/%Y'), birthplace=nuovo_contatto.ente.name if nuovo_contatto.ente.type.code == 'C' else settings.DEFAULT_MUNICIPALITY ) nuovo_contatto.user, created = AppUser.objects.get_or_create( fiscal_code=fiscal_code, defaults={ 'first_name': nuovo_contatto.nome, 'last_name': None, 'email': nuovo_contatto.email, 'is_staff': False, 'is_active': True } ) _new_role_type = MembershipType.objects.get( code=settings.TEMP_USER_CODE, organization_type=nuovo_contatto.ente.type ) _new_role_name = '%s-%s-membership' % (fiscal_code, nuovo_contatto.ente.code) _new_role, created = UserMembership.objects.get_or_create( name=_new_role_name, defaults={ 'member': nuovo_contatto.user, 'organization': nuovo_contatto.ente, 'type': _new_role_type } ) _new_role.save() nuovo_contatto.save() return cls(nuovo_contatto=nuovo_contatto) else: return GraphQLError(_("Forbidden"), code=403) except BaseException as e: tb = traceback.format_exc() logger.error(tb) return GraphQLError(e, code=500)
def main(): print('succefull connection') check = True while (check == True): print('0-exit') print('1-Registrazione') print('2-login') print('3-richiesta') sel = int(input('inserie opzione: ')) if sel == 0: print('uscita') check = False elif sel == 1: i = 0 p = 0 while i == 0: email = input("inserisci email: ") emailControllo = input("Conferma email: ") while p == 0: if (email == emailControllo): pw = input("inserisci password: "******"Conferma password: "******"Credenziali corrette") i = 1 p = 1 else: print("le password non corrispondono") pw = '' pwControllo = '' p = 0 else: print("l'email inserita non corrisponde") email = '' emailControllo = '' i = 0 p = 1 t = input("Vuoi essere cliente (C) o lavoratore (L)? ") cf = input('inserisci Codice fiscale: ') nome = input('inserisci nome: ') cognome = input('inserisci cognome: ') eta = input('inserisci età: ') dataNascita = input('inserisci data nascita [aaaammgg]: ') luogoNascita = input('inserisci luogo di nascita: ') indirizzo = input('inserisci indirizzo: ') sesso = input('inserisci sesso: ') cartaIdentita = input('inserisci carta di identità: ') tel = input('inserisci numero telefonico: ') nazionalita = input('inserisci nazionalità: ') tipo = t c = 0 contolloCF = '' while c == 0: contolloCF = codicefiscale.encode(surname=cognome, name=nome, sex=sesso, birthdate=dataNascita, birthplace=luogoNascita) if (cf == contolloCF): c = 1 else: print("il codice fiscale inserito è ERRATO") cf = input("inserisci Codice fiscale:") c = 0 print("I dati inseriti sono CORRETTI") if (t == "C"): q = "insert into utente values(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)" insert(q, cf, nome, cognome, eta, dataNascita, luogoNascita, indirizzo, sesso, cartaIdentita, tel, nazionalita, email, pw, tipo, 'null', 'null', 'null', 'null', 'null') elif (t == "L"): colCap = input('inserisci colore capelli: ') colOcc = input('inserisci colore occhi: ') altezza = input('inserisci altezza: ') peso = input('inserisci peso: ') tipoCap = input('inserisci tipo capelli: ') q = "insert into utente values(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)" insert(q, cf, nome, cognome, eta, dataNascita, luogoNascita, indirizzo, sesso, cartaIdentita, tel, nazionalita, email, pw, tipo, colCap, colOcc, altezza, peso, tipoCap) if sel == 3: cfCliente = input("inserisci codice fiscale: ") codice = selectAll("select cf from utente where tipo='C'") print(codice) for i in codice: for codiceR in range(len(codice)): print(codiceR) print( 'inserisci le caratteristiche che vuoi che abbia la persona che cerchi' ) colOcchi = input("inserisci colore occhi: ") colCapelli = input("inserisci colore capelli: ") tipoCapelli = input("inserisci il tipo di capelli: ") pesoRichiesta = input("inserisci peso: ") altezzaRichiesta = input("inserisci altezza: ") naz = input("inserisci nazionalita: ") insert3( "insert into richiesta values(%d,%s,%s,%s,%s,%s,%s,%s)", codiceR, colOcchi, colCapelli, tipoCapelli, naz, pesoRichiesta, altezzaRichiesta, cfCliente)