237 lines
7.3 KiB
Python
237 lines
7.3 KiB
Python
import os
|
|
import django
|
|
from django.db import transaction
|
|
|
|
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "server.settings")
|
|
django.setup()
|
|
|
|
from server.models import (
|
|
Game,
|
|
Guild,
|
|
Player,
|
|
PlayerGuild,
|
|
PlayerGameData,
|
|
GuildGameDataSchema,
|
|
WowClasses,
|
|
User,
|
|
)
|
|
|
|
|
|
def populate_games():
|
|
games = ["World of Warcraft", "Counter Strike: Global Offensive"]
|
|
for game in games:
|
|
g = Game.objects.get_or_create(name=game)[0]
|
|
|
|
|
|
def populate_guilds():
|
|
guilds = ["Gamers", "Epic Nerds"]
|
|
for guild in guilds:
|
|
g = Guild.objects.get_or_create(name=guild)[0]
|
|
|
|
|
|
def populate_users():
|
|
users = [
|
|
{"username": "Skip", "password": "password"},
|
|
{"username": "Zman", "password": "password"},
|
|
{"username": "Pixel", "password": "password"},
|
|
]
|
|
for user in users:
|
|
u = User.objects.get_or_create(username=user["username"])[0]
|
|
u.set_password(user["password"])
|
|
u.save()
|
|
|
|
|
|
def populate_player_guilds():
|
|
player_guilds = [
|
|
{"player": "Pixel", "guild": "Gamers"},
|
|
{"player": "Zman", "guild": "Gamers"},
|
|
{"player": "Skip", "guild": "Epic Nerds"},
|
|
]
|
|
for profile in player_guilds:
|
|
p = PlayerGuild.objects.get_or_create(
|
|
player=Player.objects.get(name=profile["player"]),
|
|
guild=Guild.objects.get(name=profile["guild"]),
|
|
)[0]
|
|
|
|
|
|
def populate_wow_classes():
|
|
wow_classes = [
|
|
"Warrior",
|
|
"Mage",
|
|
"Rogue",
|
|
"Priest",
|
|
"Warlock",
|
|
"Druid",
|
|
"Hunter",
|
|
"Shaman",
|
|
"Paladin",
|
|
]
|
|
for wow_class in wow_classes:
|
|
w = WowClasses.objects.get_or_create(name=wow_class)[0]
|
|
|
|
|
|
def populate_guild_game_data_schema():
|
|
wow_gamer_schema = {
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"type": "object",
|
|
"properties": {
|
|
"playerName": {"type": "string"},
|
|
"playerDiscordId": {"type": "string"},
|
|
"playerAvailabilities": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"day": {"type": "string"},
|
|
"time": {"type": "string"},
|
|
"timeZone": {"type": "string"},
|
|
},
|
|
"required": ["day", "time", "timeZone"],
|
|
},
|
|
},
|
|
"playerRaids": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {"type": "string"},
|
|
},
|
|
"required": ["name"],
|
|
},
|
|
},
|
|
"characters": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {"type": "string"},
|
|
"class": {"type": "string"},
|
|
"level": {"type": "number"},
|
|
},
|
|
"required": ["name", "class", "level"],
|
|
},
|
|
},
|
|
},
|
|
"required": ["playerName"],
|
|
}
|
|
wow_gamer1 = {
|
|
"playerName": "Pixel",
|
|
"discordId": "sseagull_caw",
|
|
"playerAvailabilities": [
|
|
{"day": "Monday", "time": "20:00", "timeZone": "America/New_York"},
|
|
{"day": "Wednesday", "time": "20:00", "timeZone": "America/New_York"},
|
|
{"day": "Friday", "time": "20:00", "timeZone": "America/New_York"},
|
|
],
|
|
"playerRaids": [{"name": "Molten Core"}, {"name": "Blackwing Lair"}],
|
|
"characters": [
|
|
{"name": "Pixelwar", "class": "Warrior", "level": 60},
|
|
{"name": "Pixelmage", "class": "Mage", "level": 60},
|
|
],
|
|
}
|
|
wow_gamer2 = {
|
|
"playerName": "Zman",
|
|
"discordId": "zmanplex",
|
|
"playerAvailabilities": [
|
|
{"day": "Monday", "time": "20:30", "timeZone": "America/Chicago"},
|
|
{"day": "Wednesday", "time": "20:30", "timeZone": "America/Chicago"},
|
|
{"day": "Friday", "time": "20:30", "timeZone": "America/Chicago"},
|
|
],
|
|
"playerRaids": [{"name": "Naxxramas"}, {"name": "Blackwing Lair"}],
|
|
"characters": [
|
|
{"name": "Zmanlock", "class": "Warlock", "level": 60},
|
|
{"name": "Zmanhunt", "class": "Hunter", "level": 60},
|
|
],
|
|
}
|
|
|
|
csgo_epic_nerd_schema = {
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"type": "object",
|
|
"properties": {
|
|
"playerName": {"type": "string"},
|
|
"playerDiscordId": {"type": "string"},
|
|
"playerRank": {"type": "string"},
|
|
"playerFavoriteMaps": {
|
|
"type": "array",
|
|
"items": {"type": "string"},
|
|
},
|
|
"playerFavoriteWeapons": {
|
|
"type": "array",
|
|
"items": {"type": "string"},
|
|
},
|
|
"playerAvailabilities": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"day": {"type": "string"},
|
|
"time": {"type": "string"},
|
|
"timeZone": {"type": "string"},
|
|
},
|
|
"required": ["day", "time", "timeZone"],
|
|
},
|
|
},
|
|
},
|
|
"required": ["playerName"],
|
|
}
|
|
csgo_epic_nerd1 = {
|
|
"playerName": "Skip",
|
|
"discordId": "tenpull",
|
|
"playerRank": "Global Elite",
|
|
"playerFavoriteMaps": ["Dust 2", "Mirage"],
|
|
"playerFavoriteWeapons": ["AWP", "AK-47"],
|
|
"playerAvailabilities": [
|
|
{"day": "Monday", "time": "20:00", "timeZone": "America/New_York"},
|
|
{"day": "Wednesday", "time": "20:00", "timeZone": "America/New_York"},
|
|
{"day": "Friday", "time": "20:00", "timeZone": "America/New_York"},
|
|
],
|
|
}
|
|
|
|
# get or create schema
|
|
s = GuildGameDataSchema.objects.get_or_create(
|
|
game=Game.objects.get(name="World of Warcraft"),
|
|
guild=Guild.objects.get(name="Gamers"),
|
|
schema=wow_gamer_schema,
|
|
)[0]
|
|
|
|
# get or create player game data
|
|
p1 = PlayerGameData.objects.get_or_create(
|
|
player=Player.objects.get(name=wow_gamer1["playerName"]),
|
|
schema=s,
|
|
data=wow_gamer1,
|
|
)[0]
|
|
p2 = PlayerGameData.objects.get_or_create(
|
|
player=Player.objects.get(name=wow_gamer2["playerName"]),
|
|
schema=s,
|
|
data=wow_gamer2,
|
|
)[0]
|
|
|
|
# get or create schema
|
|
s = GuildGameDataSchema.objects.get_or_create(
|
|
game=Game.objects.get(name="Counter Strike: Global Offensive"),
|
|
guild=Guild.objects.get(name="Epic Nerds"),
|
|
schema=csgo_epic_nerd_schema,
|
|
)[0]
|
|
|
|
# get or create player game data
|
|
p1 = PlayerGameData.objects.get_or_create(
|
|
player=Player.objects.get(name=csgo_epic_nerd1["playerName"]),
|
|
schema=s,
|
|
data=csgo_epic_nerd1,
|
|
)[0]
|
|
|
|
|
|
def populate():
|
|
with transaction.atomic():
|
|
populate_games()
|
|
populate_guilds()
|
|
populate_users()
|
|
populate_player_guilds()
|
|
populate_wow_classes()
|
|
populate_guild_game_data_schema()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
print("Populating script!")
|
|
populate()
|
|
print("Population complete!")
|