stuff
This commit is contained in:
0
16-debugging/debugging_project/game/__init__.py
Normal file
0
16-debugging/debugging_project/game/__init__.py
Normal file
3
16-debugging/debugging_project/game/admin.py
Normal file
3
16-debugging/debugging_project/game/admin.py
Normal file
@ -0,0 +1,3 @@
|
||||
from django.contrib import admin
|
||||
|
||||
# Register your models here.
|
28
16-debugging/debugging_project/game/models.py
Normal file
28
16-debugging/debugging_project/game/models.py
Normal 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)
|
56
16-debugging/debugging_project/game/seeds.py
Normal file
56
16-debugging/debugging_project/game/seeds.py
Normal 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))
|
3
16-debugging/debugging_project/game/tests.py
Normal file
3
16-debugging/debugging_project/game/tests.py
Normal file
@ -0,0 +1,3 @@
|
||||
from django.test import TestCase
|
||||
|
||||
# Create your tests here.
|
3
16-debugging/debugging_project/game/views.py
Normal file
3
16-debugging/debugging_project/game/views.py
Normal file
@ -0,0 +1,3 @@
|
||||
from django.shortcuts import render
|
||||
|
||||
# Create your views here.
|
Reference in New Issue
Block a user