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
Esempio n. 2
0
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] + ")")
Esempio n. 3
0
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)
Esempio n. 4
0
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
Esempio n. 5
0
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()
Esempio n. 6
0
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()
Esempio n. 7
0
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()
Esempio n. 8
0
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.")
Esempio n. 9
0
 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
Esempio n. 10
0
    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'])
Esempio n. 11
0
    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
Esempio n. 12
0
    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)
Esempio n. 13
0
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)