diff --git a/src/accounts/views/connection.py b/src/accounts/views/connection.py index b441b35..19ea53f 100644 --- a/src/accounts/views/connection.py +++ b/src/accounts/views/connection.py @@ -87,7 +87,6 @@ def connect_discord(request): @login_required def authorize_discord(request): if request.user.userprofileinfo.discord_id: - print("Already") return bad_request(request, "Already connected") try: token = oauth.discord.authorize_access_token(request) diff --git a/src/ctfs/migrations/0009_ctf_flags_bonus.py b/src/ctfs/migrations/0009_ctf_flags_bonus.py new file mode 100644 index 0000000..c93799f --- /dev/null +++ b/src/ctfs/migrations/0009_ctf_flags_bonus.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.11 on 2023-09-17 17:57 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('ctfs', '0008_auto_20220215_1713'), + ] + + operations = [ + migrations.AddField( + model_name='ctf_flags', + name='bonus', + field=models.PositiveSmallIntegerField(default=0), + ), + ] diff --git a/src/ctfs/models.py b/src/ctfs/models.py index 50a418b..7c31b62 100644 --- a/src/ctfs/models.py +++ b/src/ctfs/models.py @@ -45,6 +45,7 @@ class CTF_flags(models.Model): user = models.ForeignKey(User, unique=False, on_delete=models.CASCADE) ctf = models.ForeignKey(CTF, unique=False, on_delete=models.CASCADE) flag_date = models.DateTimeField('Flag date') + bonus = models.PositiveSmallIntegerField(default=0) class Meta: ordering = ['-flag_date'] diff --git a/src/events/admin.py b/src/events/admin.py index 8d61ab2..e4d542f 100644 --- a/src/events/admin.py +++ b/src/events/admin.py @@ -1,5 +1,5 @@ from django.contrib import admin -from .models import Event, EventPlayer, Team +from .models import Event, EventPlayer, Team, Bonus @admin.register(Event) class event(admin.ModelAdmin): @@ -27,3 +27,8 @@ class team(admin.ModelAdmin): list_filter = ('event',) # search list search_fields = ['name'] + +@admin.register(Bonus) +class bonus(admin.ModelAdmin): + #list display + list_display = ['points', 'absolute'] diff --git a/src/events/migrations/0011_bonus_points.py b/src/events/migrations/0011_bonus_points.py new file mode 100644 index 0000000..65a2cac --- /dev/null +++ b/src/events/migrations/0011_bonus_points.py @@ -0,0 +1,28 @@ +# Generated by Django 3.2.11 on 2023-09-17 17:00 + +import django.core.validators +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('events', '0010_event_campus'), + ] + + operations = [ + migrations.CreateModel( + name='Bonus', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('absolute', models.BooleanField(default=True)), + ('points', models.CharField(max_length=100, validators=[django.core.validators.int_list_validator])), + ], + ), + migrations.AddField( + model_name='event', + name='bonus', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='events.bonus'), + ), + ] diff --git a/src/events/migrations/0012_auto_20230917_2038.py b/src/events/migrations/0012_auto_20230917_2038.py new file mode 100644 index 0000000..625641a --- /dev/null +++ b/src/events/migrations/0012_auto_20230917_2038.py @@ -0,0 +1,24 @@ +# Generated by Django 3.2.11 on 2023-09-17 18:38 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('events', '0011_bonus_points'), + ] + + operations = [ + migrations.AlterField( + model_name='event', + name='bonus', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='events.bonus'), + ), + migrations.AlterField( + model_name='eventplayer', + name='team', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='events.team'), + ), + ] diff --git a/src/events/models.py b/src/events/models.py index 12124d2..4bf3423 100644 --- a/src/events/models.py +++ b/src/events/models.py @@ -1,10 +1,17 @@ from django.db import models from django.contrib.auth.models import User from django.contrib.auth.models import timezone +from django.core.validators import int_list_validator import uuid from accounts.models import Campus # Create your models here. +class Bonus(models.Model): + absolute = models.BooleanField(default=True) + points = models.CharField(validators=[int_list_validator], max_length=100) + def __str__(self): + return self.points + class Event(models.Model): id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) name = models.CharField(max_length=200) @@ -19,6 +26,7 @@ class Event(models.Model): auto_match = models.BooleanField(default=False) dynamic = models.BooleanField(default=False) campus = models.ManyToManyField(Campus, blank=True) + bonus = models.ForeignKey(Bonus, null=True, on_delete=models.SET_NULL, blank=True) def __str__(self): return self.name @@ -37,8 +45,6 @@ class EventPlayer(models.Model): event = models.ForeignKey(Event, on_delete=models.CASCADE) score = models.PositiveIntegerField(default=0, db_index=True) last_submission_date = models.DateTimeField('Last Submission Date', default=timezone.now) - team = models.ForeignKey(Team, on_delete=models.CASCADE, null=True) + team = models.ForeignKey(Team, on_delete=models.CASCADE, null=True, blank=True) class Meta: ordering = ['-score', 'last_submission_date', 'user__username'] - - diff --git a/src/events/templates/events/ctf_info.html b/src/events/templates/events/ctf_info.html index aca18ef..3513148 100644 --- a/src/events/templates/events/ctf_info.html +++ b/src/events/templates/events/ctf_info.html @@ -21,7 +21,10 @@
diff --git a/src/events/templates/events/profile.html b/src/events/templates/events/profile.html index 873f61c..737a135 100644 --- a/src/events/templates/events/profile.html +++ b/src/events/templates/events/profile.html @@ -22,6 +22,7 @@