added data
This commit is contained in:
@@ -9,7 +9,8 @@ services:
|
|||||||
- ./server:/usr/src/app
|
- ./server:/usr/src/app
|
||||||
environment:
|
environment:
|
||||||
- DEBUG=1
|
- 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:
|
frontend:
|
||||||
build: ./client
|
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,6 +2,7 @@ from django.db import models
|
|||||||
|
|
||||||
|
|
||||||
class Guild(models.Model):
|
class Guild(models.Model):
|
||||||
|
id = models.AutoField(primary_key=True)
|
||||||
name = models.CharField(max_length=200)
|
name = models.CharField(max_length=200)
|
||||||
tag = models.CharField(max_length=10)
|
tag = models.CharField(max_length=10)
|
||||||
creation_date = models.DateTimeField("date created", auto_now_add=True)
|
creation_date = models.DateTimeField("date created", auto_now_add=True)
|
||||||
@@ -15,8 +16,8 @@ class Guild(models.Model):
|
|||||||
|
|
||||||
|
|
||||||
class Player(models.Model):
|
class Player(models.Model):
|
||||||
|
id = models.AutoField(primary_key=True)
|
||||||
name = models.CharField(max_length=200)
|
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)
|
creation_date = models.DateTimeField("date created", auto_now_add=True)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
@@ -27,7 +28,22 @@ class Player(models.Model):
|
|||||||
verbose_name_plural = "Players"
|
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):
|
class Game(models.Model):
|
||||||
|
id = models.AutoField(primary_key=True)
|
||||||
name = models.CharField(max_length=200)
|
name = models.CharField(max_length=200)
|
||||||
creation_date = models.DateTimeField("date created", auto_now_add=True)
|
creation_date = models.DateTimeField("date created", auto_now_add=True)
|
||||||
|
|
||||||
@@ -40,6 +56,7 @@ class Game(models.Model):
|
|||||||
|
|
||||||
|
|
||||||
class PlayerGameProfile(models.Model):
|
class PlayerGameProfile(models.Model):
|
||||||
|
id = models.AutoField(primary_key=True)
|
||||||
player = models.ForeignKey(
|
player = models.ForeignKey(
|
||||||
Player, on_delete=models.CASCADE, related_name="game_profiles"
|
Player, on_delete=models.CASCADE, related_name="game_profiles"
|
||||||
)
|
)
|
||||||
@@ -57,6 +74,7 @@ class PlayerGameProfile(models.Model):
|
|||||||
|
|
||||||
|
|
||||||
class WowProfile(models.Model):
|
class WowProfile(models.Model):
|
||||||
|
id = models.AutoField(primary_key=True)
|
||||||
player_game_profile = models.OneToOneField(
|
player_game_profile = models.OneToOneField(
|
||||||
PlayerGameProfile, on_delete=models.CASCADE, related_name="wow_profile"
|
PlayerGameProfile, on_delete=models.CASCADE, related_name="wow_profile"
|
||||||
)
|
)
|
||||||
@@ -73,6 +91,7 @@ class WowProfile(models.Model):
|
|||||||
|
|
||||||
|
|
||||||
class ValorantProfile(models.Model):
|
class ValorantProfile(models.Model):
|
||||||
|
id = models.AutoField(primary_key=True)
|
||||||
player_game_profile = models.OneToOneField(
|
player_game_profile = models.OneToOneField(
|
||||||
PlayerGameProfile, on_delete=models.CASCADE, related_name="valorant_profile"
|
PlayerGameProfile, on_delete=models.CASCADE, related_name="valorant_profile"
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,5 +1,13 @@
|
|||||||
from rest_framework import serializers
|
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):
|
class GuildSerializer(serializers.ModelSerializer):
|
||||||
@@ -42,3 +50,10 @@ class ValorantProfileSerializer(serializers.ModelSerializer):
|
|||||||
model = ValorantProfile
|
model = ValorantProfile
|
||||||
fields = ["id", "player_game_profile", "rank", "creation_date"]
|
fields = ["id", "player_game_profile", "rank", "creation_date"]
|
||||||
read_only_fields = ["id", "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.urls import path, include
|
||||||
|
from django.contrib import admin
|
||||||
from rest_framework.routers import DefaultRouter
|
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 = DefaultRouter()
|
||||||
router.register(r'games', GameViewSet)
|
router.register(r"games", GameViewSet)
|
||||||
router.register(r'guilds', GuildViewSet)
|
router.register(r"guilds", GuildViewSet)
|
||||||
router.register(r'players', PlayerViewSet)
|
router.register(r"players", PlayerViewSet)
|
||||||
router.register(r'player-game-profiles', PlayerGameProfileViewSet)
|
router.register(r"player-game-profiles", PlayerGameProfileViewSet)
|
||||||
router.register(r'wow-profiles', WowProfileViewSet)
|
router.register(r"wow-profiles", WowProfileViewSet)
|
||||||
router.register(r'valorant-profiles', ValorantProfileViewSet)
|
router.register(r"valorant-profiles", ValorantProfileViewSet)
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('', hello_world, name='index'),
|
path("", hello_world, name="index"),
|
||||||
path('', include(router.urls)),
|
path("", include(router.urls)),
|
||||||
|
path("admin/", admin.site.urls),
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -1,7 +1,23 @@
|
|||||||
from django.http import HttpResponse
|
from django.http import HttpResponse
|
||||||
from rest_framework import viewsets
|
from rest_framework import viewsets
|
||||||
from .models import Game, Guild, Player, PlayerGameProfile, WowProfile, ValorantProfile
|
from .models import (
|
||||||
from .serializers import GameSerializer, GuildSerializer, PlayerSerializer, PlayerGameProfileSerializer, WowProfileSerializer, ValorantProfileSerializer
|
Game,
|
||||||
|
Guild,
|
||||||
|
Player,
|
||||||
|
PlayerGameProfile,
|
||||||
|
WowProfile,
|
||||||
|
ValorantProfile,
|
||||||
|
PlayerGuild,
|
||||||
|
)
|
||||||
|
from .serializers import (
|
||||||
|
GameSerializer,
|
||||||
|
GuildSerializer,
|
||||||
|
PlayerSerializer,
|
||||||
|
PlayerGameProfileSerializer,
|
||||||
|
WowProfileSerializer,
|
||||||
|
ValorantProfileSerializer,
|
||||||
|
PlayerGuildSerializer,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def hello_world(request):
|
def hello_world(request):
|
||||||
@@ -36,3 +52,8 @@ class WowProfileViewSet(viewsets.ModelViewSet):
|
|||||||
class ValorantProfileViewSet(viewsets.ModelViewSet):
|
class ValorantProfileViewSet(viewsets.ModelViewSet):
|
||||||
queryset = ValorantProfile.objects.all()
|
queryset = ValorantProfile.objects.all()
|
||||||
serializer_class = ValorantProfileSerializer
|
serializer_class = ValorantProfileSerializer
|
||||||
|
|
||||||
|
|
||||||
|
class PlayerGuildViewSet(viewsets.ModelViewSet):
|
||||||
|
queryset = PlayerGuild.objects.all()
|
||||||
|
serializer_class = PlayerGuildSerializer
|
||||||
|
|||||||
Reference in New Issue
Block a user