This commit is contained in:
2023-09-24 17:16:25 -04:00
commit 91d67e7aeb
130 changed files with 10480 additions and 0 deletions

View File

@ -0,0 +1,3 @@
from django.contrib import admin
# Register your models here.

View File

@ -0,0 +1,28 @@
from django.core.exceptions import ValidationError
class Players(models.Model):
username = models.CharField(max_length = 30)
password = models.CharField(max_length = 30)
email = models.CharField(max_length = 50)
created_at = models.DateTimeField('date created')
def clean(self):
if(len(self.password) < 8):
raise ValidationError("password too short")
email_validator = re.compile('^[A-Z0-9-.]+[a-z0-9-]+[a-zA-Z]{4,}$')
if(email_validator.match(self.email) == None):
raise ValidationError("invalid email")
def save(self, **kwargs):
self.full_clean()
return super(Players, self).save(**kwargs)
class Heroes(models.Model):
player = ForeignKey(Players)
name = models.CharField(max_length = 20)
type = models.CharField()
strength = models.IntegerField(default=10)
class Teams(models.Model):
name = models.CharField()
heroes = ManyToManyField(Hero)

View File

@ -0,0 +1,56 @@
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings")
from faker import Factory
import random
from app.models import Players, Heroes
class SeedDatabase:
def __init__(self, **kwargs):
self.fake = Factory.create()
self.player_num = kwargs[players]
self.hero_num = kwargs[heroes]
self.team_num = kwargs[teams]
player_seed = Seed.seed_players()
hero_seed = Seed.seed_heroes()
team_seed = Seed.seed_teams()
if(player_seed == True) and (hero_seed == True) and (team_seed == True):
print("Success!")
def seed_players():
for i in self.player_num:
Players.create(username = ''.split(self.fake.name())[1],\
password = random_password(),\
email = self.fake.email(),\
created_at = __random_datetime())
return True
def seed_heroes():
for i in self.hero_num:
Heroes.create(name = self.fake.text().split()[3],\
type = self.__random_hero(),\
strength = random.randrange(6,55),\
player = self.__random_player())
return True
def seed_teams():
for i in self.team_num:
team = Teams.create(name = self.fake.company())
for j in random.randrange(3,12):
team.heroes.add(self.__random_hero())
return True
def __random_password():
return ''.join(random.sample(string.ascii_lowercase, random.randrange(4,14)))
def __random_datetime():
return datetime.now() - datetime.timedelta(random.randrange(2,3123))
def __random_hero_type():
types = ['Wizard', 'Warrior', 'Ranger', 'Druid', 'Shaman', 'Bard']
return ''.join(random.sample(heroes, 1))
def __random_player():
return Players.objects.filter(pk=random.randrange(1,self.player_num))
def __random_hero():
return Heroes.objects.filter(pk=random.randrange(1,self.hero_num))

View File

@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.

View File

@ -0,0 +1,3 @@
from django.shortcuts import render
# Create your views here.