added data
This commit is contained in:
@@ -9,7 +9,8 @@ services:
|
||||
- ./server:/usr/src/app
|
||||
environment:
|
||||
- DEBUG=1
|
||||
command: python manage.py runserver 0.0.0.0:8000
|
||||
command: >
|
||||
sh -c "python manage.py makemigrations && python manage.py migrate && python populate_data.py && python manage.py runserver 0.0.0.0:8000"
|
||||
|
||||
frontend:
|
||||
build: ./client
|
||||
|
||||
106
server/populate_data.py
Normal file
106
server/populate_data.py
Normal file
@@ -0,0 +1,106 @@
|
||||
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,
|
||||
PlayerGameProfile,
|
||||
WowProfile,
|
||||
ValorantProfile,
|
||||
PlayerGuild,
|
||||
)
|
||||
|
||||
|
||||
def populate_games():
|
||||
games = ["World of Warcraft", "Valorant"]
|
||||
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_players():
|
||||
players = ["Pixel", "Zman", "Skip"]
|
||||
for player in players:
|
||||
p = Player.objects.get_or_create(name=player)[0]
|
||||
|
||||
|
||||
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_player_game_profiles():
|
||||
player_game_profiles = [
|
||||
{"player": "Pixel", "game": "World of Warcraft"},
|
||||
{"player": "Zman", "game": "World of Warcraft"},
|
||||
{"player": "Skip", "game": "Valorant"},
|
||||
{"player": "Skip", "game": "World of Warcraft"},
|
||||
]
|
||||
for profile in player_game_profiles:
|
||||
p = PlayerGameProfile.objects.get_or_create(
|
||||
player=Player.objects.get(name=profile["player"]),
|
||||
game=Game.objects.get(name=profile["game"]),
|
||||
)[0]
|
||||
|
||||
|
||||
def populate_wow_profiles():
|
||||
wow_profiles = [
|
||||
{"player": "Pixel", "level": 60, "class_name": "Mage"},
|
||||
{"player": "Zman", "level": 60, "class_name": "Warrior"},
|
||||
{"player": "Skip", "level": 60, "class_name": "Rogue"},
|
||||
]
|
||||
for profile in wow_profiles:
|
||||
p = WowProfile.objects.get_or_create(
|
||||
player_game_profile=PlayerGameProfile.objects.get(
|
||||
player=Player.objects.get(name=profile["player"]),
|
||||
game=Game.objects.get(name="World of Warcraft"),
|
||||
),
|
||||
level=profile["level"],
|
||||
class_name=profile["class_name"],
|
||||
)[0]
|
||||
|
||||
|
||||
def populate_valorant_profiles():
|
||||
valorant_profiles = [{"player": "Skip", "rank": "Diamond"}]
|
||||
for profile in valorant_profiles:
|
||||
p = ValorantProfile.objects.get_or_create(
|
||||
player_game_profile=PlayerGameProfile.objects.get(
|
||||
player=Player.objects.get(name=profile["player"]),
|
||||
game=Game.objects.get(name="Valorant"),
|
||||
),
|
||||
rank=profile["rank"],
|
||||
)[0]
|
||||
|
||||
|
||||
def populate():
|
||||
with transaction.atomic():
|
||||
populate_games()
|
||||
populate_guilds()
|
||||
populate_players()
|
||||
populate_player_game_profiles()
|
||||
populate_wow_profiles()
|
||||
populate_valorant_profiles()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
print("Populating script!")
|
||||
populate()
|
||||
print("Population complete!")
|
||||
@@ -0,0 +1,43 @@
|
||||
# Generated by Django 4.2.7 on 2023-11-30 21:50
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('server', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='game',
|
||||
name='id',
|
||||
field=models.AutoField(primary_key=True, serialize=False),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='guild',
|
||||
name='id',
|
||||
field=models.AutoField(primary_key=True, serialize=False),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='player',
|
||||
name='id',
|
||||
field=models.AutoField(primary_key=True, serialize=False),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='playergameprofile',
|
||||
name='id',
|
||||
field=models.AutoField(primary_key=True, serialize=False),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='valorantprofile',
|
||||
name='id',
|
||||
field=models.AutoField(primary_key=True, serialize=False),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='wowprofile',
|
||||
name='id',
|
||||
field=models.AutoField(primary_key=True, serialize=False),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,31 @@
|
||||
# Generated by Django 4.2.7 on 2023-11-30 21:55
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('server', '0002_alter_game_id_alter_guild_id_alter_player_id_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='player',
|
||||
name='guild',
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='PlayerGuild',
|
||||
fields=[
|
||||
('id', models.AutoField(primary_key=True, serialize=False)),
|
||||
('creation_date', models.DateTimeField(auto_now_add=True, verbose_name='date created')),
|
||||
('guild', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='players', to='server.guild')),
|
||||
('player', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='guilds', to='server.player')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Player Guild',
|
||||
'verbose_name_plural': 'Player Guilds',
|
||||
},
|
||||
),
|
||||
]
|
||||
@@ -2,32 +2,48 @@ from django.db import models
|
||||
|
||||
|
||||
class Guild(models.Model):
|
||||
id = models.AutoField(primary_key=True)
|
||||
name = models.CharField(max_length=200)
|
||||
tag = models.CharField(max_length=10)
|
||||
creation_date = models.DateTimeField("date created", auto_now_add=True)
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.name} [{self.tag}]"
|
||||
|
||||
|
||||
class Meta:
|
||||
verbose_name = "Guild"
|
||||
verbose_name_plural = "Guilds"
|
||||
|
||||
|
||||
class Player(models.Model):
|
||||
id = models.AutoField(primary_key=True)
|
||||
name = models.CharField(max_length=200)
|
||||
guild = models.ForeignKey(Guild, on_delete=models.CASCADE, related_name="players")
|
||||
creation_date = models.DateTimeField("date created", auto_now_add=True)
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
|
||||
class Meta:
|
||||
verbose_name = "Player"
|
||||
verbose_name_plural = "Players"
|
||||
|
||||
|
||||
class PlayerGuild(models.Model):
|
||||
id = models.AutoField(primary_key=True)
|
||||
player = models.ForeignKey(Player, on_delete=models.CASCADE, related_name="guilds")
|
||||
guild = models.ForeignKey(Guild, on_delete=models.CASCADE, related_name="players")
|
||||
creation_date = models.DateTimeField("date created", auto_now_add=True)
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.player} - {self.guild}"
|
||||
|
||||
class Meta:
|
||||
verbose_name = "Player Guild"
|
||||
verbose_name_plural = "Player Guilds"
|
||||
|
||||
|
||||
class Game(models.Model):
|
||||
id = models.AutoField(primary_key=True)
|
||||
name = models.CharField(max_length=200)
|
||||
creation_date = models.DateTimeField("date created", auto_now_add=True)
|
||||
|
||||
@@ -40,6 +56,7 @@ class Game(models.Model):
|
||||
|
||||
|
||||
class PlayerGameProfile(models.Model):
|
||||
id = models.AutoField(primary_key=True)
|
||||
player = models.ForeignKey(
|
||||
Player, on_delete=models.CASCADE, related_name="game_profiles"
|
||||
)
|
||||
@@ -57,6 +74,7 @@ class PlayerGameProfile(models.Model):
|
||||
|
||||
|
||||
class WowProfile(models.Model):
|
||||
id = models.AutoField(primary_key=True)
|
||||
player_game_profile = models.OneToOneField(
|
||||
PlayerGameProfile, on_delete=models.CASCADE, related_name="wow_profile"
|
||||
)
|
||||
@@ -66,13 +84,14 @@ class WowProfile(models.Model):
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.player_game_profile.player} - {self.player_game_profile.game}"
|
||||
|
||||
|
||||
class Meta:
|
||||
verbose_name = "WoW Profile"
|
||||
verbose_name_plural = "WoW Profiles"
|
||||
|
||||
|
||||
class ValorantProfile(models.Model):
|
||||
id = models.AutoField(primary_key=True)
|
||||
player_game_profile = models.OneToOneField(
|
||||
PlayerGameProfile, on_delete=models.CASCADE, related_name="valorant_profile"
|
||||
)
|
||||
@@ -81,7 +100,7 @@ class ValorantProfile(models.Model):
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.player_game_profile.player} - {self.player_game_profile.game}"
|
||||
|
||||
|
||||
class Meta:
|
||||
verbose_name = "Valorant Profile"
|
||||
verbose_name_plural = "Valorant Profiles"
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
from rest_framework import serializers
|
||||
from .models import Guild, Player, Game, PlayerGameProfile, WowProfile, ValorantProfile
|
||||
from .models import (
|
||||
Guild,
|
||||
Player,
|
||||
Game,
|
||||
PlayerGameProfile,
|
||||
WowProfile,
|
||||
ValorantProfile,
|
||||
PlayerGuild,
|
||||
)
|
||||
|
||||
|
||||
class GuildSerializer(serializers.ModelSerializer):
|
||||
@@ -42,3 +50,10 @@ class ValorantProfileSerializer(serializers.ModelSerializer):
|
||||
model = ValorantProfile
|
||||
fields = ["id", "player_game_profile", "rank", "creation_date"]
|
||||
read_only_fields = ["id", "creation_date"]
|
||||
|
||||
|
||||
class PlayerGuildSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = PlayerGuild
|
||||
fields = ["id", "player", "guild", "creation_date"]
|
||||
read_only_fields = ["id", "creation_date"]
|
||||
|
||||
@@ -1,16 +1,26 @@
|
||||
from django.urls import path, include
|
||||
from django.contrib import admin
|
||||
from rest_framework.routers import DefaultRouter
|
||||
from .views import GameViewSet, GuildViewSet, PlayerViewSet, PlayerGameProfileViewSet, WowProfileViewSet, ValorantProfileViewSet, hello_world
|
||||
from .views import (
|
||||
GameViewSet,
|
||||
GuildViewSet,
|
||||
PlayerViewSet,
|
||||
PlayerGameProfileViewSet,
|
||||
WowProfileViewSet,
|
||||
ValorantProfileViewSet,
|
||||
hello_world,
|
||||
)
|
||||
|
||||
router = DefaultRouter()
|
||||
router.register(r'games', GameViewSet)
|
||||
router.register(r'guilds', GuildViewSet)
|
||||
router.register(r'players', PlayerViewSet)
|
||||
router.register(r'player-game-profiles', PlayerGameProfileViewSet)
|
||||
router.register(r'wow-profiles', WowProfileViewSet)
|
||||
router.register(r'valorant-profiles', ValorantProfileViewSet)
|
||||
router.register(r"games", GameViewSet)
|
||||
router.register(r"guilds", GuildViewSet)
|
||||
router.register(r"players", PlayerViewSet)
|
||||
router.register(r"player-game-profiles", PlayerGameProfileViewSet)
|
||||
router.register(r"wow-profiles", WowProfileViewSet)
|
||||
router.register(r"valorant-profiles", ValorantProfileViewSet)
|
||||
|
||||
urlpatterns = [
|
||||
path('', hello_world, name='index'),
|
||||
path('', include(router.urls)),
|
||||
path("", hello_world, name="index"),
|
||||
path("", include(router.urls)),
|
||||
path("admin/", admin.site.urls),
|
||||
]
|
||||
|
||||
@@ -1,7 +1,23 @@
|
||||
from django.http import HttpResponse
|
||||
from rest_framework import viewsets
|
||||
from .models import Game, Guild, Player, PlayerGameProfile, WowProfile, ValorantProfile
|
||||
from .serializers import GameSerializer, GuildSerializer, PlayerSerializer, PlayerGameProfileSerializer, WowProfileSerializer, ValorantProfileSerializer
|
||||
from .models import (
|
||||
Game,
|
||||
Guild,
|
||||
Player,
|
||||
PlayerGameProfile,
|
||||
WowProfile,
|
||||
ValorantProfile,
|
||||
PlayerGuild,
|
||||
)
|
||||
from .serializers import (
|
||||
GameSerializer,
|
||||
GuildSerializer,
|
||||
PlayerSerializer,
|
||||
PlayerGameProfileSerializer,
|
||||
WowProfileSerializer,
|
||||
ValorantProfileSerializer,
|
||||
PlayerGuildSerializer,
|
||||
)
|
||||
|
||||
|
||||
def hello_world(request):
|
||||
@@ -36,3 +52,8 @@ class WowProfileViewSet(viewsets.ModelViewSet):
|
||||
class ValorantProfileViewSet(viewsets.ModelViewSet):
|
||||
queryset = ValorantProfile.objects.all()
|
||||
serializer_class = ValorantProfileSerializer
|
||||
|
||||
|
||||
class PlayerGuildViewSet(viewsets.ModelViewSet):
|
||||
queryset = PlayerGuild.objects.all()
|
||||
serializer_class = PlayerGuildSerializer
|
||||
|
||||
Reference in New Issue
Block a user