diff --git a/app/bloonsa_api/views.py b/app/bloonsa_api/views.py
index 70c5ba1..621734a 100644
--- a/app/bloonsa_api/views.py
+++ b/app/bloonsa_api/views.py
@@ -32,7 +32,7 @@ class LoadLevel(CSRFexemptTemplateView):
if request.user.is_authenticated:
bloonsa_util.tag_player(request=request)
- player: Player = Player.objects.get(user=request.user)
+ player: Player = request.user.player
player.bloonsa_levels_played.add(level)
bloonsa_util.log(player=player,
action=actions.bloonsa_load_level_by_id,
@@ -46,7 +46,7 @@ class RandomLevel(CSRFexemptTemplateView):
def post(self, request, *args, **kwargs):
if request.user.is_authenticated:
bloonsa_util.tag_player(request=request)
- player: Player = Player.objects.get(user=request.user)
+ player: Player = request.user.player
level: Level = Level.objects.order_by("?").filter(~Q(played_by=player)).first()
if not level:
@@ -82,7 +82,7 @@ class CompleteLevel(CSRFexemptTemplateView):
pops = int(request.POST.get("pops"))
level: Level = Level.objects.get(level_id=level_id)
- player: Player = Player.objects.get(user=request.user)
+ player: Player = request.user.player
score = LevelScore.objects.filter(player=player,
level=level).first()
@@ -137,7 +137,7 @@ class RateLevel(CSRFexemptTemplateView):
rating = int(request.POST.get("rating"))
level_id = int(request.POST.get("level_id"))
level: Level = Level.objects.get(level_id=level_id)
- player: Player = Player.objects.get(user=request.user)
+ player: Player = request.user.player
ratingObject = player.bloonsa_level_ratings.filter(level=level).first()
bloonsa_util.log(player=player,
action=actions.bloonsa_rate_level,
@@ -185,7 +185,7 @@ class GetStatusData(CSRFexemptTemplateView):
}
if request.user.is_authenticated:
- player: Player = Player.objects.get(user=request.user)
+ player: Player = request.user.player
score: LevelScore = LevelScore.objects.filter(player=player,
level=level).first()
level_cleared = player.has_beaten_bloonsa_level(level=level)
diff --git a/app/bloonsa_game/templates/bloonsa_game/modules/profilebox.html b/app/bloonsa_game/templates/bloonsa_game/modules/profilebox.html
index 4cc014e..8f1cae5 100644
--- a/app/bloonsa_game/templates/bloonsa_game/modules/profilebox.html
+++ b/app/bloonsa_game/templates/bloonsa_game/modules/profilebox.html
@@ -15,7 +15,7 @@
class="level-plays-img filter-grey"
id="profile-plays-img"
type="image/svg+xml">
- {{ player.bloonsa_levels_played_count }}
+ {{ user.player.bloonsa_levels_played_count }}
/
{{ total_levels }}
@@ -24,7 +24,7 @@
class="level-wins-img filter-orange"
id="profile-clears-img"
type="image/svg+xml">
- {{ player.bloonsa_levels_beaten_count }}
+ {{ user.player.bloonsa_levels_beaten_count }}
/
{{ total_levels }}
diff --git a/app/bloonsa_game/views.py b/app/bloonsa_game/views.py
index 9538ad1..e2f1106 100644
--- a/app/bloonsa_game/views.py
+++ b/app/bloonsa_game/views.py
@@ -32,13 +32,11 @@ class GameView(TemplateView):
action=actions.bloonsa_load_level_by_url,
note=level)
return render(request, "bloonsa_game/game.html", context={
- "player": player,
"total_levels": total_levels,
"flashVars": level.get_flash_vars(seperator="&"),
})
return render(request, "bloonsa_game/game.html",
- context={"player": player,
- "total_levels": total_levels,})
+ context={"total_levels": total_levels,})
class WIPView(TemplateView):
diff --git a/app/users/forms.py b/app/users/forms.py
index be33494..25dd0a4 100644
--- a/app/users/forms.py
+++ b/app/users/forms.py
@@ -71,4 +71,4 @@ class UserLoginForm(AuthenticationForm):
]
class UserConfigForm():
- raise NotImplementedError()
\ No newline at end of file
+ ...
\ No newline at end of file
diff --git a/app/users/migrations/0024_player_avatar_player_bio.py b/app/users/migrations/0024_player_avatar_player_bio.py
new file mode 100644
index 0000000..38348a2
--- /dev/null
+++ b/app/users/migrations/0024_player_avatar_player_bio.py
@@ -0,0 +1,24 @@
+# Generated by Django 5.1.6 on 2025-02-18 14:08
+
+import django_resized.forms
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('users', '0023_alter_player_user'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='player',
+ name='avatar',
+ field=django_resized.forms.ResizedImageField(crop=None, default='default.jpg', force_format='JPEG', keep_meta=False, quality=75, scale=None, size=[256, 256], upload_to='avatars'),
+ ),
+ migrations.AddField(
+ model_name='player',
+ name='bio',
+ field=models.TextField(max_length=128, null=True),
+ ),
+ ]
diff --git a/app/users/util.py b/app/users/util.py
index d0817dc..07142af 100644
--- a/app/users/util.py
+++ b/app/users/util.py
@@ -23,7 +23,7 @@ class BloonsaUtil:
def init_player(self, request):
if not request.user.is_authenticated:
return
- player = Player.objects.filter(user=request.user).first()
+ player = request.user.player
if player:
return player
ip = self.get_ip(request=request)
@@ -39,7 +39,7 @@ class BloonsaUtil:
return
if not request.user.is_authenticated:
return
- player = Player.objects.filter(user=request.user).first()
+ player = request.user.player
if not player:
player = self.init_player(request=request)
if player.banned:
diff --git a/app/users/views.py b/app/users/views.py
index 42dd452..54f27bf 100644
--- a/app/users/views.py
+++ b/app/users/views.py
@@ -19,9 +19,8 @@ class LoginView(TemplateView):
if not form.is_valid():
return render(request=request, template_name="users/login.html", context={"form": form})
user = form.get_user()
- player = bloonsa_util.init_player(request=request)
login(request=request, user=user)
- bloonsa_util.log(player=player,
+ bloonsa_util.log(player=user.player,
action=actions.login)
return redirect("bloonsa_game:game")
@@ -39,7 +38,8 @@ class RegisterView(TemplateView):
user = form.save()
player = bloonsa_util.init_player(request=request)
login(request=request, user=user)
- bloonsa_util.log(player=player,
+
+ bloonsa_util.log(player=user.player,
action=actions.login)
return redirect("bloonsa_game:game")
@@ -70,7 +70,6 @@ class ConfigView(TemplateView):
template_name="users/config.html",
context={"form": form})
user = form.save()
- player = bloonsa_util.init_player(request=request)
login(request=request, user=user)
#bloonsa_util.log(player=player,
# action=actions.login)