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!")