Skip to content

Commit

Permalink
Added match configs, map pools and added new flow of creating matches
Browse files Browse the repository at this point in the history
  • Loading branch information
Qwizi committed May 9, 2024
1 parent 3460ea5 commit d1153c2
Show file tree
Hide file tree
Showing 14 changed files with 726 additions and 162 deletions.
7 changes: 6 additions & 1 deletion src/guilds/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,10 @@

from guilds.models import Guild

class GuildAdmin(admin.ModelAdmin):
list_filter = ('created_at', 'updated_at')
search_fields = ('name', 'created_at', 'updated_at')
readonly_fields = ('id', 'created_at', 'updated_at')

# Register your models here.
admin.site.register(Guild)
admin.site.register(Guild, GuildAdmin)
2 changes: 1 addition & 1 deletion src/install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,4 @@ echo -e "${GREEN}Superuser ${RED}$DJANGO_SUPERUSER_USERNAME ${NC}created"

# Create the API key
API_KEY=$(python manage.py shell -c "from rest_framework_api_key.models import APIKey; api_key, key = APIKey.objects.create_key(name='cs2-battle-bot'); print(key);")
echo -e "${GREEN}Api key created: ${RED}$API_KEY${NC}"
echo -e "${GREEN}Api key created: ${RED}$API_KEY${NC}. Put this key to the .env file as API_KEY variable. You will not be able to see it again."
46 changes: 42 additions & 4 deletions src/matches/admin.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,46 @@
from django.contrib import admin

from matches.models import Map, Match, MapBan
from matches.models import Map, Match, MapBan, MapPool, MatchConfig, MapPick


class MatchAdmin(admin.ModelAdmin):
list_filter = ('status', 'created_at', 'updated_at')
search_fields = ('team1__name', 'team2__name', 'status', 'winner_team__name', 'created_at', 'updated_at')
readonly_fields = ('id', 'created_at', 'updated_at')


class MatchConfigAdmin(admin.ModelAdmin):
list_filter = ('game_mode', 'type', 'clinch_series', 'max_players', 'created_at', 'updated_at')
search_fields = ('name', 'game_mode', 'type', 'clinch_series', 'max_players', 'created_at', 'updated_at')
readonly_fields = ('id', 'created_at', 'updated_at')


class MapAdmin(admin.ModelAdmin):
list_filter = ('guild', 'created_at', 'updated_at')
search_fields = ('name', 'guild__name', 'guild__id', 'created_at', 'updated_at')
readonly_fields = ('id', 'created_at', 'updated_at')


class MapPoolAdmin(admin.ModelAdmin):
list_filter = ('guild__name', 'created_at', 'updated_at')
search_fields = ('name', 'guild__name', 'guild__id', 'created_at', 'updated_at')
readonly_fields = ('id', 'created_at', 'updated_at')


class MapBanAdmin(admin.ModelAdmin):
list_filter = ('created_at', 'updated_at')
search_fields = ('created_at', 'updated_at')
readonly_fields = ('id', 'created_at', 'updated_at')


class MapPickAdmin(MapBanAdmin):
pass


# Register your models here.
admin.site.register(Match)
admin.site.register(Map)
admin.site.register(MapBan)
admin.site.register(Match, MatchAdmin)
admin.site.register(MatchConfig, MatchConfigAdmin)
admin.site.register(Map, MapAdmin)
admin.site.register(MapPool, MapPoolAdmin)
admin.site.register(MapBan, MapBanAdmin)
admin.site.register(MapPick, MapPickAdmin)
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
# Generated by Django 5.0.6 on 2024-05-09 20:18

import django.db.models.deletion
import prefix_id.field
from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('guilds', '0004_remove_guild_members'),
('matches', '0019_match_last_map_ban_match_last_map_pick'),
]

operations = [
migrations.RemoveField(
model_name='match',
name='clinch_series',
),
migrations.RemoveField(
model_name='match',
name='map_sides',
),
migrations.RemoveField(
model_name='match',
name='maps',
),
migrations.RemoveField(
model_name='match',
name='num_maps',
),
migrations.RemoveField(
model_name='match',
name='players_per_team',
),
migrations.RemoveField(
model_name='match',
name='type',
),
migrations.CreateModel(
name='MapPool',
fields=[
('id', prefix_id.field.PrefixIDField(editable=False, max_length=31, prefix='map_pool', primary_key=True, serialize=False, unique=True)),
('name', models.CharField(max_length=255, unique=True)),
('created_at', models.DateTimeField(auto_now_add=True)),
('updated_at', models.DateTimeField(auto_now=True)),
('guild', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='map_pools', to='guilds.guild')),
('maps', models.ManyToManyField(related_name='map_pools', to='matches.map')),
],
),
migrations.AddField(
model_name='match',
name='map_pool',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='matches', to='matches.mappool'),
),
migrations.CreateModel(
name='MatchConfig',
fields=[
('id', prefix_id.field.PrefixIDField(editable=False, max_length=35, prefix='match_config', primary_key=True, serialize=False, unique=True)),
('name', models.CharField(max_length=255, unique=True)),
('game_mode', models.CharField(choices=[('COMPETITIVE', 'Competitive'), ('WINGMAN', 'Wingman'), ('AIM', 'Aim')], default='COMPETITIVE', max_length=255)),
('type', models.CharField(choices=[('BO1', 'Bo1'), ('BO3', 'Bo3'), ('BO5', 'Bo5')], default='BO1', max_length=255)),
('map_sides', models.JSONField(null=True)),
('clinch_series', models.BooleanField(default=False)),
('max_players', models.PositiveIntegerField(default=10)),
('cvars', models.JSONField(null=True)),
('created_at', models.DateTimeField(auto_now_add=True)),
('updated_at', models.DateTimeField(auto_now=True)),
('guild', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='match_configs', to='guilds.guild')),
],
),
migrations.AddField(
model_name='match',
name='config',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='matches', to='matches.matchconfig'),
),
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Generated by Django 5.0.6 on 2024-05-09 20:22

import django.db.models.deletion
from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('guilds', '0004_remove_guild_members'),
('matches', '0020_remove_match_clinch_series_remove_match_map_sides_and_more'),
]

operations = [
migrations.AddField(
model_name='map',
name='guild',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='maps', to='guilds.guild'),
),
migrations.AlterField(
model_name='map',
name='name',
field=models.CharField(max_length=255, unique=True),
),
migrations.AlterField(
model_name='map',
name='tag',
field=models.CharField(max_length=255, unique=True),
),
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
# Generated by Django 5.0.6 on 2024-05-09 20:28

import django.db.models.deletion
from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('guilds', '0004_remove_guild_members'),
('matches', '0021_map_guild_alter_map_name_alter_map_tag'),
('players', '0005_alter_player_steam_user'),
('servers', '0006_remove_server_max_players'),
]

operations = [
migrations.AlterField(
model_name='map',
name='guild',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='maps', to='guilds.guild'),
),
migrations.AlterField(
model_name='mappool',
name='guild',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='map_pools', to='guilds.guild'),
),
migrations.AlterField(
model_name='match',
name='author',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='matches', to='players.discorduser'),
),
migrations.AlterField(
model_name='match',
name='config',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='matches', to='matches.matchconfig'),
),
migrations.AlterField(
model_name='match',
name='cvars',
field=models.JSONField(blank=True, null=True),
),
migrations.AlterField(
model_name='match',
name='guild',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='matches', to='guilds.guild'),
),
migrations.AlterField(
model_name='match',
name='last_map_ban',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='matches_last_map_ban', to='matches.mapban'),
),
migrations.AlterField(
model_name='match',
name='last_map_pick',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='matches_last_map_pick', to='matches.mappick'),
),
migrations.AlterField(
model_name='match',
name='map_pool',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='matches', to='matches.mappool'),
),
migrations.AlterField(
model_name='match',
name='maplist',
field=models.JSONField(blank=True, null=True),
),
migrations.AlterField(
model_name='match',
name='message_id',
field=models.CharField(blank=True, max_length=255, null=True),
),
migrations.AlterField(
model_name='match',
name='server',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='matches', to='servers.server'),
),
migrations.AlterField(
model_name='match',
name='status',
field=models.CharField(choices=[('CREATED', 'Created'), ('STARTED', 'Started'), ('LIVE', 'Live'), ('FINISHED', 'Finished'), ('CANCELLED', 'Cancelled')], default='CREATED', max_length=255),
),
migrations.AlterField(
model_name='match',
name='team1',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='matches_team1', to='players.team'),
),
migrations.AlterField(
model_name='match',
name='team2',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='matches_team2', to='players.team'),
),
migrations.AlterField(
model_name='match',
name='winner_team',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='matches_winner', to='players.team'),
),
migrations.AlterField(
model_name='matchconfig',
name='guild',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='match_configs', to='guilds.guild'),
),
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# Generated by Django 5.0.6 on 2024-05-09 21:04

import django.db.models.deletion
from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('matches', '0022_alter_map_guild_alter_mappool_guild_and_more'),
('players', '0005_alter_player_steam_user'),
]

operations = [
migrations.AlterField(
model_name='mappick',
name='map',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='map_picks', to='matches.map'),
),
migrations.AlterField(
model_name='match',
name='author',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='matches', to='players.discorduser'),
),
migrations.AlterField(
model_name='match',
name='map_bans',
field=models.ManyToManyField(blank=True, related_name='matches_map_bans', to='matches.mapban'),
),
migrations.AlterField(
model_name='match',
name='map_picks',
field=models.ManyToManyField(blank=True, related_name='matches_map_picks', to='matches.mappick'),
),
migrations.AlterField(
model_name='matchconfig',
name='cvars',
field=models.JSONField(blank=True, null=True),
),
migrations.AlterField(
model_name='matchconfig',
name='map_sides',
field=models.JSONField(blank=True, null=True),
),
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Generated by Django 5.0.6 on 2024-05-09 21:11

import django.db.models.deletion
from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('matches', '0023_alter_mappick_map_alter_match_author_and_more'),
]

operations = [
migrations.RemoveField(
model_name='match',
name='map_pool',
),
migrations.AddField(
model_name='matchconfig',
name='map_pool',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='match_configs', to='matches.mappool'),
),
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Generated by Django 5.0.6 on 2024-05-09 21:20

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('matches', '0024_remove_match_map_pool_matchconfig_map_pool'),
]

operations = [
migrations.AddField(
model_name='matchconfig',
name='shuffle_teams',
field=models.BooleanField(default=False),
),
migrations.AlterField(
model_name='match',
name='status',
field=models.CharField(choices=[('CREATED', 'Created'), ('STARTED', 'Started'), ('LOADED', 'Loaded'), ('LIVE', 'Live'), ('FINISHED', 'Finished'), ('CANCELLED', 'Cancelled')], default='CREATED', max_length=255),
),
]
Loading

0 comments on commit d1153c2

Please sign in to comment.