def create_vacancy(self, partners, categories): """ Create a new random vacancy :param partners: the partners to choose a partner from :param categories: the categories to choose this vacancy from """ vacancy = Vacancy() vacancy.title = _faker.job() vacancy.description = _faker.paragraph(nb_sentences=10) vacancy.link = _faker.uri() if random.random() < 0.75: vacancy.partner = random.choice(partners) else: vacancy.company_name = "{} {}".format(_faker.company(), _faker.company_suffix()) igen = IconGenerator(5, 5) # 5x5 blocks icon = igen.generate( vacancy.company_name, 480, 480, padding=(10, 10, 10, 10), output_format="jpeg", ) # 620x620 pixels, with 10 pixels padding on each side vacancy.company_logo.save(vacancy.company_name + ".jpeg", ContentFile(icon)) vacancy.save() vacancy.categories.set( random.sample(list(categories), random.randint(0, 3)))
def create_partner(self): """Create a new random partner""" partner = Partner() partner.is_active = random.random() < 0.75 partner.name = "{} {}".format(_faker.company(), _faker.company_suffix()) partner.slug = _faker.slug() partner.link = _faker.uri() igen = IconGenerator(5, 5) # 5x5 blocks icon = igen.generate( partner.name, 480, 480, padding=(10, 10, 10, 10), output_format="jpeg", ) # 620x620 pixels, with 10 pixels padding on each side partner.logo.save(partner.name + ".jpeg", ContentFile(icon)) partner.address = _faker.street_address() partner.zip_code = _faker.postcode() partner.city = _faker.city() partner.save()
def create_member_group(self, group_model): """ Create a MemberGroup """ members = Member.objects.all() if len(members) < 6: self.stdout.write("Your database does not contain 6 users.") self.stdout.write(f"Creating {6 - len(members)} more users.") for __ in range(6 - len(members)): self.create_user() members = Member.objects.all() member_group = group_model() member_group.name_nl = _generate_title() member_group.name_en = member_group.name_nl member_group.description_nl = _faker.paragraph() member_group.description_en = _faker.paragraph() igen = IconGenerator(5, 5) # 5x5 blocks icon = igen.generate( member_group.name_nl, 480, 480, padding=(10, 10, 10, 10), output_format="jpeg", ) # 620x620 pixels, with 10 pixels padding on each side member_group.photo.save(member_group.name_nl + ".jpeg", ContentFile(icon)) member_group.since = _faker.date_time_between("-10y", "+30d") if random.random() < 0.1: now = date.today() month = timedelta(days=30) member_group.until = _faker.date_time_between_dates( member_group.since, now + 2 * month).date() member_group.active = random.random() < 0.9 member_group.contact_email = _faker.safe_email() member_group.save() # Add members committee_members = random.sample(list(members), random.randint(2, 6)) for member in committee_members: self.create_member_group_membership(member, member_group) # Make one member the chair chair = random.choice(member_group.membergroupmembership_set.all()) chair.until = None chair.chair = True chair.save()
def create_board(self, lecture_year): """ Create a new board :param int lecture_year: the lecture year this board was active """ self.stdout.write("Creating a board") members = Member.objects.all() if len(members) < 6: self.stdout.write("Your database does not contain 6 users.") self.stdout.write(f"Creating {6 - len(members)} more users.") for __ in range(6 - len(members)): self.create_user() board = Board() board.name = "Board {}-{}".format(lecture_year, lecture_year + 1) while Board.objects.filter(name=board.name).exists(): lecture_year = lecture_year - 1 board.name = "Board {}-{}".format(lecture_year, lecture_year + 1) board.description = _faker.paragraph() igen = IconGenerator(5, 5) # 5x5 blocks icon = igen.generate( board.name, 480, 480, padding=(10, 10, 10, 10), output_format="jpeg" ) # 620x620 pixels, with 10 pixels padding on each side board.photo.save(f"{board.name}.jpeg", ContentFile(icon)) board.since = date(year=lecture_year, month=9, day=1) board.until = date(year=lecture_year + 1, month=8, day=31) board.active = True board.contact_email = _faker.safe_email() board.save() # Add members board_members = random.sample(list(members), random.randint(5, 6)) for member in board_members: self.create_member_group_membership(member, board) # Make one member the chair chair = random.choice(board.membergroupmembership_set.all()) chair.until = None chair.chair = True chair.save()
def create_user(self): """Create a new random user""" self.stdout.write("Creating a user") fakeprofile = _faker.profile() fakeprofile["password"] = "".join( random.choice(string.ascii_uppercase + string.digits) for _ in range(16)) user = get_user_model().objects.create_user(fakeprofile["username"], fakeprofile["mail"], fakeprofile["password"]) user.first_name = fakeprofile["name"].split()[0] user.last_name = " ".join(fakeprofile["name"].split()[1:]) profile = _ProfileFactory() profile.user_id = user.id profile.birthday = fakeprofile["birthdate"] profile.website = fakeprofile["website"][0] igen = IconGenerator(5, 5) # 5x5 blocks icon = igen.generate( user.username, 480, 480, padding=(10, 10, 10, 10), output_format="jpeg", ) # 620x620 pixels, with 10 pixels padding on each side profile.photo.save(fakeprofile["username"] + ".jpeg", ContentFile(icon)) membership = Membership() membership.user_id = user.id membership.since = _faker.date_time_between(start_date="-4y", end_date="now", tzinfo=None) membership.until = random.choice([ _faker.date_time_between(start_date=membership.since, end_date="+2y", tzinfo=None), None, ]) membership.type = random.choice( [t[0] for t in Membership.MEMBERSHIP_TYPES]) user.save() profile.save() membership.save()
def create_photo(self, album): photo = Photo() photo.album = album name = _generate_title() igen = IconGenerator(5, 5) # 5x5 blocks icon = igen.generate( name, 480, 480, padding=(10, 10, 10, 10), output_format="jpeg", ) # 620x620 pixels, with 10 pixels padding on each side photo.file.save(f"{name}.jpeg", ContentFile(icon)) photo.save()