Beispiel #1
0
def create_nuban():

    cust = get_random_string(10)
    requestId = get_time()
    faker = Faker()

    url = "{}/v2/api/vnubans/create_customer".format(base_url)

    payload = {
        "customer_reference": cust,
        "name": faker.name().split()[0] + " " + get_random_number(),
        "email": faker.email(),
        "mobile_number": "08123258600",
        "expires_on": str(datetime.date.today() + datetime.timedelta(days=1)),
        "callback_url": os.getenv("CALLBACK_URL"),
        "meta_data": {
            "somedatakey": "somedatavalue"
        },
        "destination_nuban": ""
    }

    headers = {
        'api_secret': api_key,
        'requestId': str(requestId),
        'Content-Type': 'application/json'
    }
    start_time = get_time()
    response = requests.request("POST",
                                url,
                                headers=headers,
                                data=json.dumps(payload))
    stop_time = get_time()
    return response.status_code, response.json(), start_time, stop_time
class StaffStateFactory(DjangoModelFactory):
    class Meta:
        model = UserState

    email = lazy_attribute(lambda x: faker.email())
    staff = True
    is_admin = False
def prefill_users(clean=True, amount=1000):
    if clean:
        session.query(User).delete()
    for counter in range(amount):
        user = User(email=faker.email(), password=generate_password(), name=faker.name())
        session.add(user)
    user = User(email="admin", password="******", name="Administrator")
    session.add(user)
    session.commit()
class UserFactory(DjangoModelFactory):
    class Meta:
        model = User

    username = lazy_attribute(lambda x: faker.user_name())
    first_name = lazy_attribute(lambda x: faker.first_name())
    last_name = lazy_attribute(lambda x: faker.last_name())
    email = lazy_attribute(lambda x: faker.email())
    password = lazy_attribute(lambda x: faker.password())
class StudentStateFactory(DjangoModelFactory):
    class Meta:
        model = UserState

    email = lazy_attribute(lambda x: faker.email())
    staff = False
    is_admin = False
    year = lazy_attribute(lambda x: choice([c[0] for c in YEAR_CHOICES]))
    band = lazy_attribute(lambda x: choice([c[0] for c in BAND_CHOICES]))
    set = lazy_attribute(lambda x: choice([c[0] for c in SET_CHOICES]))
Beispiel #6
0
 def test_create_patient(self):
     test_password = '******'
     username = faker.first_name()
     data = {
         'username': username,
         'email': faker.email(),
         'password1': test_password,
         'password2': test_password,
         'is_doctor': False
     }
     response = self.client.post(self.url, data, format='json')
     self.assertEqual(response.status_code, status.HTTP_201_CREATED)
     self.assertEqual(Patient.objects.count(), 1)
Beispiel #7
0
 def create(self):
     new_person = {
         'name': faker.name(),
         'email': faker.email(),
         'birthday': faker.date()
     }
     person_response = self.client.post('/person',
                                        json=new_person,
                                        name="create person")
     if person_response.status_code != 200:
         raise FlowException(person_response.json())
     person_id = person_response.json().get('id')
     self.created_persons.append(person_id)
Beispiel #8
0
def seed_authors():
    content_type = ContentType.objects.get(app_label='articles',
                                           model='article')
    create_article_permission, created = Permission.objects.get_or_create(
        codename='can_create_articles',
        defaults={
            'name': 'Can create Articles',
            'content_type': content_type
        },
    )
    update_article_permission, created = Permission.objects.get_or_create(
        codename='can_update_articles',
        defaults={
            'name': 'Can update Articles',
            'content_type': content_type
        },
    )
    delete_article_permission, created = Permission.objects.get_or_create(
        codename='can_delete_articles',
        defaults={
            'name': 'Can delete Articles',
            'content_type': content_type
        },
    )

    authors_group, created = Group.objects.get_or_create(name='authors')
    authors_group.permissions.add(create_article_permission)
    authors_group.permissions.add(update_article_permission)
    authors_group.permissions.add(delete_article_permission)

    authors_count = AppUser.objects.filter(
        groups__name__iexact='authors').count()
    authors_to_seed = 5
    sys.stdout.write('[+] Seeding %d authors\n' %
                     (authors_to_seed - authors_count))
    for i in range(authors_count, authors_to_seed):
        username = faker.profile(fields='username')['username']
        first_name = faker.first_name()
        last_name = faker.last_name()
        email = faker.email()
        password = '******'
        # create_user instead of create, to hash
        author = AppUser.objects.create_user(username=username,
                                             first_name=first_name,
                                             last_name=last_name,
                                             email=email,
                                             password=password)
        author.groups.add(authors_group)
Beispiel #9
0
def seed_users():
    users_count = AppUser.objects.count()
    users_to_seed = 23
    sys.stdout.write('[+] Seeding %d users\n' % (users_to_seed - users_count))
    for i in range(users_count, users_to_seed):
        username = faker.profile(fields='username')['username']
        first_name = faker.first_name()
        last_name = faker.last_name()
        email = faker.email()
        password = '******'
        # create_user instead of create, to hash
        AppUser.objects.create_user(username=username,
                                    first_name=first_name,
                                    last_name=last_name,
                                    email=email,
                                    password=password)
Beispiel #10
0
 def test_create_doctor(self):
     """
     Ensure we can create a new account object.
     """
     test_password = '******'
     username = faker.first_name()
     data = {
         'username': username,
         'email': faker.email(),
         'password1': test_password,
         'password2': test_password,
         'is_doctor': True
     }
     response = self.client.post(self.url, data, format='json')
     # import pudb; pudb.set_trace()
     self.assertEqual(response.status_code, status.HTTP_201_CREATED)
     self.assertEqual(Doctor.objects.count(), 1)
Beispiel #11
0
    # 创建会话对象,用来操作数据库
    Session = sessionmaker(bind=engine)
    session = Session()

    # 创建一个faker工厂对象,用来产生虚假信息
    # faker = faker.Factory.create()
    faker = faker.Faker()

    # 生成10个用户
    faker_users = [User(
        # 使用 faker 生成一个人名
        username=faker.name(),
        # 使用 faker 生成一个单词
        password=faker.word(),
        # 使用 faker 生成一个邮箱
        email=faker.email(),
    ) for i in range(10)]
    # add_all 一次性添加多个对象
    session.add_all(faker_users)

    # 生成 5 个分类
    faker_categories = [Category(name=faker.word()) for i in range(5)]
    session.add_all(faker_categories)

    # 生成20个标签
    faker_tags = [Tag(name=faker.word()) for i in range(20)]
    session.add_all(faker_tags)

    # 生成 100 篇文章
    for i in range(100):
        article = Article(
    start_date = faker.date_between(start_date='-20y', end_date='now')
    delta = datetime.timedelta(days=365 * random.randint(18, 40))  # 18y-40y
    birth_date = start_date - delta
    return {'birth_date': birth_date, 'start_date': start_date}


def salary_and_bonus():
    salary = round(random.randint(90000, 120000) / 1000) * 1000
    bonus_ratio = random.uniform(0.15, 0.2)
    bonus = (salary * bonus_ratio / 500) * 500
    return {'salary': salary, 'bonus': bonus}


data = dict()
data['first_name_and_gender'] = first_name_and_gender
data['last_name'] = lambda: {'last_name': faker.last_name()}
data['email_address'] = lambda: {'email_address': faker.email()}
data['ssn'] = lambda: {'ssn': faker.ssn()}
data['birth_data_and_start_date'] = birth_date_and_start_date
data['address'] = lambda: {'address': faker.address()}
data['office'] = lambda: {'office': faker.city()}
data['title'] = lambda: {'title': faker.job()}
data['salary_and_bonus'] = salary_and_bonus

# print([data[k]() for k in data.keys()])

for i in range(10):
    result = [list(data[k]().values()) for k in data.keys()]
    row = [item for sublist in result for item in sublist]
    print(row)
Beispiel #13
0
def run_more():
    faker = Faker('zh-CN')
    driver = webdriver.Firefox()
    driver.set_page_load_timeout(60)
    segmentfaulturs = [
        'https://segmentfault.com/companies?page=' + str(i) for i in range(7)
    ]
    for segmentfaulturl in segmentfaulturls:
        driver.get(segmentfaulturl)
        time.sleep(2)
        html = driver.page_source
        dom_tree = etree.HTML(html)
        # 获取公司的链接
        company_urls = dom_tree.xpath(
            '//div[@class="row"]/div[@class="media"]/div[@class="col-md-9"]/div[@class="media-body"]/h4[@id="media-heading"]/a[1]/@href'
        )
        # 获取公司的名称
        company_names = dom_tree.xpath(
            '//div[@class="row"]/div[@class="media"]/div[@class="col-md-9"]/div[@class="media-body"]/h4[@id="media-heading"]/a/text()'
        )
        # 获取公司图片的url
        company_logos = dom_tree.xpath(
            '//div[@class="row"]/div[@class="media"]/div[@class="col-md-9"]/div[@class="pull-left"]/div[@class="img-warp"]/a[@class="company-logo"]/@style'
        )
        # 获取公司网站
        company_websites = dom_tree.xpath(
            '//div[@class="row"]/div[@class="media"]/div[@class="col-md-9"]/div[@class="media-body"]/a[@class="company-site"]/@href'
        )
        # 获取公司一句话介绍
        company_onewords = dom_tree.xpath(
            '//div[@class="row"]/div[@class="media"]/div[@class="col-md-9"]/div[@class="media-body"]/p[@class="company-desc"]/text()'
        )

        for company_name in company_names:
            print(company_name)

        for company_website in company_websites:
            print(company_website)

        for company_logo in company_logos:
            print(company_logo[company_log.rfind('(') +
                               1:company_logo.rfind(')') - 1])

        for company_oneword in company_onewords:
            print(company_oneword)

        for company_url in company_urls:
            company_url = 'https://segmentfault.com' + company_url
            print(company_url)

        # 获取当前窗口句柄
        now_handle = driver.current_window_handle

        i = 0
        for company_url in company_urls:
            name = company_names[i]
            email = faker.email()
            password = '******'
            logo_img = company_logos[i][company_logos[i].rfind('(') +
                                        1:company_logos[i].rfind(')') - 1]
            if User.query.filter_by(name=name).first():
                # 如果企业存在就不存入数据库
                i += 1
                print('重复')
                continue
            # 把用户加入数据库
            user = User(name=name,
                        email=email,
                        password=password,
                        logo_img=logo_img,
                        role=20)
            db.session.add(user)
            user = User.query.filter_by(name=name).first()
            oneword = faker.sentence(nb_words=25)

            print(name)
            print(logo_img)
            print(website)
            print(oneword)

            description = faker.sentence(nb_words=50)
            # 把公司信息加入数据库
            company = Company(user=user,
                              website=website,
                              oneword=oneword,
                              description=description)
            db.session.add(company)
            # 给公司家入职位信息
            num = User.query.filter_by(name=name).first().id
            ran = random.randint(10, 100)
            for j in range(random.randint(10, 20)):
                job = Job(name=faker.job(),
                          wage=str(ran) + 'K - ' + str(ran + 10) + 'K',
                          location=faker.province(),
                          company=Company.query.filter_by(user_id=num).first(),
                          description=faker.sentence(nb_words=25),
                          requirement=faker.sentence(nb_words=20))
                db.session.add(job)
                i += 1
    driver.close()
    # 向数据库提交
    try:
        db.session.commit()
    except Exception as e:
        print(e)
        db.session.rollback()