Source code for dr_data.randoms
import random
from datetime import datetime, timedelta, timezone
from faker import Faker
from faker.providers import person, file, internet, phone_number
fake = Faker()
fake.add_provider(person)
fake.add_provider(file)
fake.add_provider(internet)
fake.add_provider(phone_number)
[docs]class Randoms:
[docs] @staticmethod
def get_hash(length):
choices = '0123456789abcdefghijklmnopqrstuvwxyz'
results = ''.join(random.choice(choices) for i in range(length))
return results
[docs] @staticmethod
def get_datetime(min_year=1900, max_year=datetime.now().year):
# generate a datetime in format yyyy-mm-dd hh:mm:ss.000000
start = datetime(min_year, 1, 1, 00, 00, 00)
years = max_year - min_year + 1
end = start + timedelta(days=365 * years)
return start + (end - start) * random.random()
[docs] @staticmethod
def get_datetime_with_timezone(min_year=1900, max_year=datetime.now().year):
start = datetime(min_year, 1, 1, 00, 00, 00, tzinfo=timezone.utc)
years = max_year - min_year + 1
end = start + timedelta(days=365 * years)
return start + (end - start) * random.random()
[docs] @staticmethod
def get_number():
return str(random.randint(1, 999))
[docs] @staticmethod
def get_boolean():
return random.choice([True, False])
[docs] @staticmethod
def get_value_from_list(selected_list):
return random.choice(selected_list)
[docs] @staticmethod
def get_custom_text(column_name):
column_name = str(column_name).lower()
if column_name == 'first_name' or column_name == 'firstname':
return fake.first_name()
elif column_name == 'last_name' or column_name == 'lastname':
return fake.last_name()
elif column_name == 'phone_number' or column_name == 'phonenumber':
return fake.phone_number()
elif column_name == 'file_name' or column_name == 'filename':
fake_files = [fake.file_path(depth=5, extension='csv'),
fake.file_path(depth=5, extension='txt'),
fake.file_path(depth=5, extension='bat')]
return Randoms.get_value_from_list(fake_files)
elif column_name == 'uri':
return fake.uri()
else:
return Randoms.get_hash(25)