Skip to content

Instantly share code, notes, and snippets.

@agritheory
Created April 1, 2020 17:28
Show Gist options
  • Save agritheory/8943fd3f4acd5baf65b8b0f8606fa919 to your computer and use it in GitHub Desktop.
Save agritheory/8943fd3f4acd5baf65b8b0f8606fa919 to your computer and use it in GitHub Desktop.
Generate Company and User with Mimesis
import csv
import random
import typing
from pathlib import Path
import mimesis
def write_to_file(filename: str, data: list) -> typing.NoReturn:
raw_path = Path(__file__).parent / filename
with open(raw_path, "w", newline="\n") as csvfile:
writer = csv.writer(csvfile, delimiter=",", quotechar='"')
for row in data:
writer.writerow(row)
def create_company() -> list:
company = []
company.append(
mimesis.Person("en").last_name()
+ " "
+ mimesis.Business().company_type(abbr=True)
)
company.append("United States")
return company
def create_user(company: str, role: str) -> list:
user = []
person = mimesis.Person("en")
user.append(person.name())
user.append(person.last_name())
user.append(person.email())
user.append('"' + person.password(random.randint(6, 14)) + '"')
user.append(company)
user.append(role)
return user
def create_data(company_count=4, user_count=80) -> typing.NoReturn:
roles = ("Administrator", "Base User", "Guest")
companies = [create_company() for c in range(0, company_count)]
write_to_file("company.csv", companies)
users = [
create_user(random.choice(companies)[0], random.choice(roles))
for c in range(0, user_count)
]
write_to_file("user.csv", users)
if __name__ == "__main__":
create_data()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment