예제 #1
0
def create_human(n):
    """

    :param n: язык генерации данных
    :return: сгенерированные фейковые данные
    """
    log.info("Генерируем тестовые данные")
    if n == 1:
        person = Person('ru')
    else:
        person = Person('en')
    log.info("person: " + str(person))

    client_info = generate_id_passport()

    print('\nфамилия:\t', person.last_name())
    print('имя:\t\t', person.name())
    print('отчество:\t', person.surname(), '\n')

    passport = generate_number_passport()
    print('личный №:\t', client_info.get('idn'))
    print('документ:\t', passport)

    print('пол:\t\t', client_info.get('sex'))
    print('возраст:\t', person.age(13, 70), '\n')
    # print('аватар\t', person.avatar())
    print('гражд-во:\t', person.get_current_locale())
    print('Нац-сть:\t',person.nationality())
    print('телефон:\t', person.telephone('+37529#######'))
    print('email:\t\t', person.email())
    print('проф-ия:\t', person.occupation(), '\n')
    print('обращение:\t', person.title())
    print('взгляды:\t', person.views_on())
    print('вера:\t\t', person.worldview(), '\n')
def insert_in_batches(col, total, batch_size):
    many_people = []
    inserted_count = 0
    start_time = datetime.utcnow()
    previous_time = start_time
    p = Person("en", seed=0xBEE)
    for i in range(total):
        proxy_person = {
            "name": p.first_name(),
            "surname": p.surname(),
            "email": p.email(),
            "password": p.password()
        }
        many_people.append(proxy_person)
        if (len(many_people) % batch_size) == 0:
            col.insert_many(many_people)
            inserted_count = inserted_count + len(many_people)
            time_now = datetime.utcnow()
            elapsed_time = time_now - previous_time
            previous_time = time_now
            print(f"Inserted {len(many_people)} people in {elapsed_time}")
            many_people.clear()

    if len(many_people) > 0:
        col.insert_many(many_people)
        inserted_count = inserted_count + len(many_people)
    end_time = datetime.utcnow()
    duration = end_time - start_time
    print(f"Inserting {inserted_count} records took {duration}")
예제 #3
0
def create_human(n):  # function of creating new client
    if n == 1:
        person = Person('ru')
    else:
        person = Person('en')

    # Выводим исландские мужские имена.
    client_info = generate_id_passport()

    print('\nфамилия:\t', person.last_name())
    print('имя:\t\t', person.name())
    print('отчество:\t', person.surname(), '\n')

    passport = generate_number_passport()
    print('личный №:\t', client_info.get('idn'))
    print('документ:\t', passport)

    print('пол:\t\t', client_info.get('sex'))
    print('возраст:\t', person.age(13, 70), '\n')
    # print('аватар\t', person.avatar())
    print('гражд-во:\t', person.get_current_locale())
    print('Нац-сть:\t', person.nationality())
    print('телефон:\t', person.telephone('+37529#######'))
    print('email:\t\t', '*****@*****.**')
    # print('email:\t\t', person.email())
    print('проф-ия:\t', person.occupation(), '\n')
    print('обращение:\t', person.title())
    print('взгляды:\t', person.views_on())
    print('вера:\t\t', person.worldview(), '\n')
예제 #4
0
def fill_persondata():
    db = MySQLdb.connect(host=config.DB_HOST,
                         user=config.DB_USER,
                         passwd=config.DB_PASSWORD,
                         db=config.DB_NAME)
    cursor = db.cursor()

    # Zero client, anon
    cursor.execute(
        """INSERT INTO PersonData (first_name, last_name, birth_date, email, mobile, gender) VALUES (%s, %s, %s, %s,
            %s, %s);""", [
            'anon', 'anon',
            Datetime().date(start=1950, end=2001), None, None, None
        ])
    for _ in range(config.N_PERSONS):
        p = Person('ru')
        cursor.execute(
            """INSERT INTO PersonData (first_name, last_name, birth_date, email, mobile, gender) VALUES (%s, %s, %s,
                %s, %s, %s);""", [
                p.name(),
                p.surname(),
                Datetime().date(start=1950, end=2001),
                p.email(),
                p.telephone('#' * 11),
                'M' if p.gender(iso5218=True) == 1 else 'F'
            ])

    db.commit()
    cursor.close()
    db.close()
예제 #5
0
def generate_people():
    person = Person('en-gb')
    firstname = person.first_name()
    surname = person.surname()
    university = person.university()
    return {
        "id": 0,
        "firstName": firstname,
        "surname": surname,
        "uni": university
    }
예제 #6
0
def _generate_user_data(locale='ru'):
    person = Person(locale)
    date = Datetime(locale)
    gender = get_random_item(Gender)
    return {
        'password': _generate_password(),
        'first_name': person.surname(gender=gender),
        'last_name': person.name(gender=gender),
        'email': person.email(),
        'date_joined': date.datetime(start=2014, end=2015).replace(tzinfo=utc),
    }
예제 #7
0
def create_personalData():  # function of generate new client data
    passport = ''
    person = Person('ru')

    # Выводим исландские мужские имена.

    lastname = person.last_name()
    personalData['lastname'] = lastname
    # print('\nфамилия:\t', personalData['lastname'])

    name = person.name()
    personalData['name'] = name
    # print('имя:\t\t', personalData['name'])

    surname = person.surname()
    personalData['surname'] = surname
    # print('отчество:\t', personalData['surname'])

    gender = person.gender()
    personalData['gender'] = gender
    # print('пол:\t\t', personalData['gender'])

    for _ in range(2):
        varLet = random.choice(string.ascii_uppercase)
        passport += varLet
    passport += person.telephone('#######')
    personalData['passport'] = passport
    # print('паспорт:\t', personalData['passport'])

    ### birthday
    currentDate()
    personalData['age'] = age
    personalData['age'][2] = str(
        int(personalData['age'][2]) - person.age(16, 70))
    # print('возраст:\t', personalData['age'], '\n')
    ###

    # print('гражд-во:\t', person.get_current_locale())
    # print('Нац-сть:\t',person.nationality())

    ### mobile
    mobile = person.telephone('+37529#######')
    personalData['mobile'] = mobile
    # print('телефон:\t', personalData['mobile'])
    ###
    ### email
    # personalData['email'] = person.email()
    # print('email:\t\t', personalData['email'])
    ###
    # print('проф-ия:\t', person.occupation(), '\n')
    # print('обращение:\t', person.title())
    # print('взгляды:\t', person.views_on())
    # print('вера:\t\t', person.worldview(), '\n')
    return personalData
예제 #8
0
def inf_file_unpack(path_to_file):
    with open(path_to_file, 'r', encoding='UTF-8') as inf_file:
        inf_file_dic = yaml.load(inf_file, Loader=yaml.FullLoader)
        logger.debug(f'Распаковали inf.txt')
        token = inf_file_dic['token']
        logger.debug(f'Ваш токен: {token}')
        country_name = inf_file_dic['country_name']
        country_auto_select = inf_file_dic['country_auto_select']
        logger.debug(f'Выбранная страна: {country_name}')
        sex = inf_file_dic['sex']
        logger.debug(f'Выбранный пол: {sex}')
        person = Person('ru')
        if sex == 'FEMALE':
            name = person.name(gender=Gender.FEMALE)
            surname = person.surname(gender=Gender.FEMALE)
        else:
            name = person.name(gender=Gender.MALE)
            surname = person.surname(gender=Gender.MALE)

        return token, country_name, name, surname, country_auto_select
예제 #9
0
def generate_users(count=1024, locale="en"):
    logging.info(f"Generating {count} users.")
    person = Person(locale)
    for i in range(count):
        user = UserModel()
        user.first_name = person.name()
        user.last_name = person.surname()
        user.email = person.email()
        user.password = person.password()
        user.phone = person.telephone(mask="###.###.####")
        user.save()
예제 #10
0
def create_person():
    from mimesis import Person as MimesisPerson, locales, Address

    person = MimesisPerson(locales.RU)
    address = Address(locales.RU)

    with transaction.atomic():
        first_name = person.name()
        last_name = person.surname()

        gender = person.gender()
        if gender == 'Муж.':
            patronymic = choice([
                'Сергеевич', 'Николаевич', 'Артурович', 'Константинович',
                'Игоревич'
            ])
        else:
            patronymic = choice([
                'Александровна', 'Борисовна', 'Петровна', 'Юрьевна',
                'Анатольевна'
            ])

        birth_date = generate_birthdate()
        address = '{}, {}'.format(address.federal_subject(), address.address())

        passport_series = randint(1000, 7000)
        passport_number = randint(100000, 999999)

        pair = generate_RSA_pair()

        signature_public_key = pair[1]
        load_key_to_file(
            '../../../person_signature_private_keys/{}_{}_{}_{}.pem'.format(
                passport_series, passport_number, last_name, first_name),
            pair[0])

        person_info = '{} {} {} {} {} {} {} {}'.format(
            first_name, last_name, patronymic, birth_date, address,
            passport_series, passport_number, signature_public_key)

        signature_i = sign_person_info(person_info)

        Person(first_name=first_name,
               last_name=last_name,
               patronymic=patronymic,
               birth_date=birth_date,
               address=address,
               passport_series=passport_series,
               passport_number=passport_number,
               signature_public_key=signature_public_key,
               signature_i=signature_i).save()
예제 #11
0
    def setUp(self):
        """Generate some fake data."""
        self.app = Flask('test')
        util.init_app(self.app)
        self.app.config['CLASSIC_DATABASE_URI'] = 'sqlite:///test.db'
        self.app.config['CLASSIC_SESSION_HASH'] = 'foohash'

        with self.app.app_context():
            util.create_all()
            with util.transaction() as session:
                person = Person('en')
                net = Internet('en')
                ip_addr = net.ip_v4()
                email = person.email()
                approved = 1
                deleted = 0
                banned = 0
                first_name = person.name()
                last_name = person.surname()
                suffix_name = person.title()
                joined_date = util.epoch(
                    Datetime('en').datetime().replace(tzinfo=EASTERN))
                db_user = models.DBUser(
                    first_name=first_name,
                    last_name=last_name,
                    suffix_name=suffix_name,
                    share_first_name=1,
                    share_last_name=1,
                    email=email,
                    flag_approved=approved,
                    flag_deleted=deleted,
                    flag_banned=banned,
                    flag_edit_users=0,
                    flag_edit_system=0,
                    flag_email_verified=1,
                    share_email=8,
                    email_bouncing=0,
                    policy_class=2,  # Public user. TODO: consider admin.
                    joined_date=joined_date,
                    joined_ip_num=ip_addr,
                    joined_remote_host=ip_addr)
                session.add(db_user)

                self.user = domain.User(user_id=str(db_user.user_id),
                                        username='******',
                                        email=db_user.email,
                                        name=domain.UserFullName(
                                            forename=db_user.first_name,
                                            surname=db_user.last_name,
                                            suffix=db_user.suffix_name))
예제 #12
0
    def make_full_name(self, loc, value):
        global sex
        per = Person(loc)
        rsp = RussiaSpecProvider()

        if value == 'male':
            sex = Gender.MALE
        elif value == 'famale':
            sex = Gender.FEMALE
        name = per.name(sex)
        surname = per.surname(sex)
        patron = rsp.patronymic(sex)
        age = per.age(16, 66)
        occup = per.occupation()
        return name, surname, patron, age, occup
def insert_one_at_a_time(col, total):
    start_time = datetime.utcnow()
    p = Person("en", seed=0xBEE)
    for i in range(total):  # 0..total-1
        proxy_person = {
            "name": p.first_name(),
            "surname": p.surname(),
            "email": p.email(),
            "password": p.password()
        }
        col.insert_one(proxy_person)
        if ((i + 1) % 10) == 0:
            print(f"Inserted {i+1} docs")
    end_time = datetime.utcnow()
    duration = end_time - start_time
    print(f"Inserting {i + 1} records took {duration}")
예제 #14
0
    def _bootstrap(count):
        from mimesis import Person

        person = Person("en")

        for _ in range(count):
            u = User(
                email=person.email(),
                confirmed=True,
                first_name=person.name(),
                last_name=person.surname(),
            )

            db.session.add(u)
            try:
                db.session.commit()
            except IntegrityError:
                db.session.rollback()
예제 #15
0
def _generate_questionnaire_data(locale='ru') -> dict:
    person = Person(locale)
    rus_spec = RussiaSpecProvider()
    datetime = Datetime(locale)
    g = get_random_item(Gender)
    created = datetime.datetime(start=2015, end=2018)
    return {
        'id': uuid.uuid4(),
        'created': created.replace(tzinfo=utc),
        'updated': created.replace(tzinfo=utc),
        'surname': person.surname(gender=g),
        'first_name': person.name(gender=g),
        'patronymic': rus_spec.patronymic(gender=g),
        'birth_date': datetime.datetime(start=1960, end=1998).date(),
        'phone_num': person.telephone(),
        'pass_ser': rus_spec.passport_series(),
        'pass_num': rus_spec.passport_number(),
        'score': randint(0, 2000),
    }
예제 #16
0
def generate():
    inserts = []
    counter = 330

    person = Person('en')
    business = Business('en')
    address = Address('en')
    internet = Internet('en')

    for index in range(counter, 15000, 1):
        inserts.append(template.substitute(id=index,
                                           name=person.name().replace("'", "''"),
                                           surname=person.surname().replace("'", "''"),
                                           email=person.email().replace("'", "''"),
                                           phone=person.telephone(),
                                           customer_id=random.randint(330, 14999)
                                           ))

    inserts_file = open('result_scripts/contacts.sql', 'w', encoding='utf-8')
    inserts_file.writelines('\n'.join(inserts))
    inserts_file.close()
예제 #17
0
def users(count: int = 500) -> List[models.User]:
    """Generate a bunch of random users."""
    _users = []
    for i in range(count):
        locale = _get_locale()
        person = Person(locale)
        net = Internet(locale)
        ip_addr = net.ip_v4()
        _users.append(
            models.User(
                first_name=person.name(),
                last_name=person.surname(),
                suffix_name=person.title(),
                share_first_name=1,
                share_last_name=1,
                email=person.email(),
                share_email=8,
                email_bouncing=0,
                policy_class=2,  # Public user.
                joined_date=_epoch(Datetime(locale).datetime()),
                joined_ip_num=ip_addr,
                joined_remote_host=ip_addr))
    return _users
예제 #18
0

##################################################

##################################################
### Generate a DataFrame of user information
##################################################
# Generate 10,000 rows of the following:
# user_id, first_name, last_name, email, password, address,
# birth_date, credit_card_num, credit_card_exp, security_answer,
# account_balance

user_df = pd.DataFrame([[
    x,
    person.name(),
    person.surname(),
    person.gender(),
    person.email(),
    hashed_passwd(person.password()),
    address.address(),
    person.age(),
    payment.credit_card_number(),
    payment.credit_card_expiration_date(),
    text.word(),
    account_balance(),
    np.random.randint(1, 11)
] for x in range(10000)])

user_df.columns = [
    "user_id", "first_name", "last_name", "gender", "email", "password_hashed",
    "address", "age", "credit_card_num", "credit_card_exp", "security_answer",
예제 #19
0
    def setUp(self):
        """Generate some fake data."""
        self.app = Flask('test')
        util.init_app(self.app)
        self.app.config['CLASSIC_DATABASE_URI'] = 'sqlite:///test.db'
        self.app.config['CLASSIC_SESSION_HASH'] = 'foohash'

        with self.app.app_context():
            util.create_all()
            with util.transaction() as session:
                person = Person('en')
                net = Internet('en')
                ip_addr = net.ip_v4()
                email = "*****@*****.**"
                approved = 1
                deleted = 0
                banned = 0
                first_name = person.name()
                last_name = person.surname()
                suffix_name = person.title()
                joined_date = util.epoch(
                    Datetime('en').datetime().replace(tzinfo=EASTERN))
                db_user = models.DBUser(
                    first_name=first_name,
                    last_name=last_name,
                    suffix_name=suffix_name,
                    share_first_name=1,
                    share_last_name=1,
                    email=email,
                    flag_approved=approved,
                    flag_deleted=deleted,
                    flag_banned=banned,
                    flag_edit_users=0,
                    flag_edit_system=0,
                    flag_email_verified=1,
                    share_email=8,
                    email_bouncing=0,
                    policy_class=2,  # Public user. TODO: consider admin.
                    joined_date=joined_date,
                    joined_ip_num=ip_addr,
                    joined_remote_host=ip_addr)
                session.add(db_user)

                self.user = domain.User(user_id=str(db_user.user_id),
                                        username='******',
                                        email=db_user.email,
                                        name=domain.UserFullName(
                                            forename=db_user.first_name,
                                            surname=db_user.last_name,
                                            suffix=db_user.suffix_name))

            ok_patterns = ['%w3.org', '%aaas.org', '%agu.org', '%ams.org']
            bad_patterns = ['%.com', '%.net', '%.biz.%']

            with util.transaction() as session:
                for pattern in ok_patterns:
                    session.add(models.DBEmailWhitelist(pattern=str(pattern)))
                for pattern in bad_patterns:
                    session.add(models.DBEmailBlacklist(pattern=str(pattern)))

                session.add(
                    models.DBEndorsementDomain(
                        endorsement_domain='test_domain',
                        endorse_all='n',
                        mods_endorse_all='n',
                        endorse_email='y',
                        papers_to_endorse=3))

                for category, definition in taxonomy.CATEGORIES_ACTIVE.items():
                    if '.' in category:
                        archive, subject_class = category.split('.', 1)
                    else:
                        archive, subject_class = category, ''
                    session.add(
                        models.DBCategory(archive=archive,
                                          subject_class=subject_class,
                                          definitive=1,
                                          active=1,
                                          endorsement_domain='test_domain'))
예제 #20
0
    def setUpClass(cls):
        """Generate some fake data."""
        cls.app = Flask('test')
        util.init_app(cls.app)
        cls.app.config['CLASSIC_DATABASE_URI'] = 'sqlite:///test.db'
        cls.app.config['CLASSIC_SESSION_HASH'] = 'foohash'
        cls.app.config['CLASSIC_SESSION_TIMEOUT'] = '36000'

        with cls.app.app_context():
            util.create_all()
            COUNT = 50

            cls.users = []

            _users = []
            _domain_users = []
            for i in range(COUNT):
                with util.transaction() as session:
                    locale = _get_locale()
                    person = Person(locale)
                    net = Internet(locale)
                    ip_addr = net.ip_v4()
                    email = person.email()
                    approved = 1 if _prob(90) else 0
                    deleted = 1 if _prob(2) else 0
                    banned = 1 if random.randint(0, 100) <= 1 else 0
                    first_name = person.name()
                    last_name = person.surname()
                    suffix_name = person.title()
                    name = (first_name, last_name, suffix_name)
                    joined_date = util.epoch(
                        Datetime(locale).datetime().replace(tzinfo=EASTERN))
                    db_user = models.DBUser(
                        first_name=first_name,
                        last_name=last_name,
                        suffix_name=suffix_name,
                        share_first_name=1,
                        share_last_name=1,
                        email=email,
                        flag_approved=approved,
                        flag_deleted=deleted,
                        flag_banned=banned,
                        flag_edit_users=0,
                        flag_edit_system=0,
                        flag_email_verified=1,
                        share_email=8,
                        email_bouncing=0,
                        policy_class=2,  # Public user. TODO: consider admin.
                        joined_date=joined_date,
                        joined_ip_num=ip_addr,
                        joined_remote_host=ip_addr)
                    session.add(db_user)

                    # Create a username.
                    username_is_valid = 1 if _prob(90) else 0
                    username = person.username()
                    db_nick = models.DBUserNickname(
                        user=db_user,
                        nickname=username,
                        flag_valid=username_is_valid,
                        flag_primary=1)

                    # Create the user's profile.
                    archive, subject_class = _random_category()
                    db_profile = models.DBProfile(
                        user=db_user,
                        country=locale,
                        affiliation=person.university(),
                        url=net.home_page(),
                        rank=random.randint(1, 5),
                        archive=archive,
                        subject_class=subject_class,
                        original_subject_classes='',
                        flag_group_math=1 if _prob(5) else 0,
                        flag_group_cs=1 if _prob(5) else 0,
                        flag_group_nlin=1 if _prob(5) else 0,
                        flag_group_q_bio=1 if _prob(5) else 0,
                        flag_group_q_fin=1 if _prob(5) else 0,
                        flag_group_stat=1 if _prob(5) else 0)

                    # Set the user's password.
                    password = person.password()
                    db_password = models.DBUserPassword(
                        user=db_user,
                        password_storage=2,
                        password_enc=util.hash_password(password))

                    # Create some endorsements.
                    archive, subject_class = _random_category()
                    net_points = 0
                    for _ in range(0, random.randint(1, 4)):
                        etype = random.choice(['auto', 'user', 'admin'])
                        point_value = random.randint(-10, 10)
                        net_points += point_value
                        if len(_users) > 0 and etype == 'auto':
                            endorser_id = random.choice(_users).user_id
                        else:
                            endorser_id = None
                        issued_when = util.epoch(
                            Datetime(locale).datetime().replace(
                                tzinfo=EASTERN))
                        session.add(
                            models.DBEndorsement(endorsee=db_user,
                                                 endorser_id=endorser_id,
                                                 archive=archive,
                                                 subject_class=subject_class,
                                                 flag_valid=1,
                                                 endorsement_type=etype,
                                                 point_value=point_value,
                                                 issued_when=issued_when))

                    session.add(db_password)
                    session.add(db_nick)
                    session.add(db_profile)
                    _users.append(db_user)
                    _domain_users.append(
                        (domain.User(user_id=str(db_user.user_id),
                                     username=db_nick.nickname,
                                     email=db_user.email,
                                     name=domain.UserFullName(
                                         forename=db_user.first_name,
                                         surname=db_user.last_name,
                                         suffix=db_user.suffix_name),
                                     verified=bool(
                                         db_user.flag_email_verified)),
                         domain.Authorizations(
                             classic=util.compute_capabilities(db_user), )))
                    session.commit()
                    # We'll use these data to run tests.
                    cls.users.append((
                        email,
                        username,
                        password,
                        name,
                        (archive, subject_class, net_points),
                        (approved, deleted, banned),
                    ))
from mimesis import Person


# Connection object
c = pymongo.MongoClient(
    host="mongodb+srv://livedemo:[email protected]/test_db?retryWrites=true&w=majority")

# database object
database = c["test_db"]

# collection/table object
collection = database["users"]

p = Person("en", seed=0xBEEF)
person = {"name": p.first_name(),
          "surname": p.surname(),
          "email": p.email(),
          "password": p.password()}

collection.insert_one(person)
print("Inserted:")
pprint.pprint(person)

collection.update_one({"_id": person["_id"]}, {"$set": {"session_id": 20}})
collection.update_one({"_id": person["_id"]}, {"$push": {"phone": {"cell": "+1 123456789"}}})
doc = collection.find_one({"_id": person["_id"]})
print("Updated:")
pprint.pprint(doc)

collection.update_many({"surname": "Taylor"}, {"$push": {"assets": {"laptop": "MacPro laptop"}}})
laptop_count = collection.count_documents({"surname": "Taylor", "assets.laptop": "MacPro laptop"})
예제 #22
0
    noise = noise_ampl*np.random.normal(0.01, 1.7, df.shape[0])
    gated_age = np.heaviside(df[age] - min_age, 0.5) - np.heaviside(df[age] - max_age, 0.5)
    return 0.01*pow(np.abs(df[age] - 30), 2.5) + df[age] + 50*df[marketing_level]*gated_age + 2*df[account_balance] + noise


##################################################

##################################################
### Generate a DataFrame of user information
##################################################
# Generate 10,000 rows of the following:
# user_id, first_name, last_name, email, password, address,
# birth_date, credit_card_num, credit_card_exp, security_answer,
# account_balance

user_df = pd.DataFrame([[x, person.name(), person.surname(), person.gender(),
                        person.email(), hashed_passwd(person.password()),
                        address.address(), person.age(),
                        payment.credit_card_number(),
                        payment.credit_card_expiration_date(), text.word(),
                        account_balance(), np.random.randint(1, 11)]
                        for x in range(10000)])

user_df.columns = ["user_id", "first_name", "last_name",
                   "gender", "email", "password_hashed", "address",
                   "age", "credit_card_num", "credit_card_exp",
                   "security_answer", "account_balance",
                   "marketing_level"]

# Generate sales, based on a noisy linear model
user_df['sales'] = generate_sales(user_df)
예제 #23
0
from mimesis import Person
import random

person = Person('uk')
name = person.name()
email = person.email()
surname = person.surname()
phone = int("63" + str(random.randint(1000000, 9999999)))

print(name)
print(surname)
print(phone)
print(person)
print(email)