Cleanup of html and progress on config page

This commit is contained in:
Walter 2025-02-18 18:54:43 +01:00
parent e3734723a4
commit 95ce4940f2
13 changed files with 134 additions and 21 deletions

View File

@ -98,3 +98,9 @@ class LevelScore(ModelWithUpdate):
score_view = f"🎈{self.pops} | 🎯{self.darts_left} {dart_glitch_state}"
return (f"{self.player.user.username if self.player else ''}'s "
f"{clear_state} @ {self.level}: {score_view}")
class Config(ModelWithUpdate):
player = models.OneToOneField(Player, on_delete=models.CASCADE, related_name="bloonsa_config")
# Automatically start ruffle/flash when page loads
autoplay = models.BooleanField(default=True)

View File

@ -1,5 +1,7 @@
{% load static %}
<!DOCTYPE html>
<!-- avoids flashbang -->
<html lang="en" style="background-color: #20B0FF;"></html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta name="title" content="{% block title %}{% endblock title %}"/>
@ -51,7 +53,6 @@
</div>
<div id="content">
{% block content %}{% endblock content %}
{% include 'bloonsa_game/modules/levelinfo.html' %}
</div>
<div class="skyscraper rhs">

View File

@ -41,5 +41,5 @@
player.style.height = "480px";
});
</script>
{% include 'bloonsa_game/modules/levelinfo.html' %}
{% endblock content %}

View File

@ -7,6 +7,7 @@ from django.utils.translation import gettext_lazy as _
from crispy_forms.helper import FormHelper
from crispy_forms.layout import Submit
from users.models import Player
from users.validators import usernameValidator
class UserRegisterForm(UserCreationForm):
@ -70,5 +71,22 @@ class UserLoginForm(AuthenticationForm):
"username",
]
class UserConfigForm():
...
class UserUpdateForm(forms.ModelForm):
username = forms.CharField(min_length=3,
max_length=16,
label="Username",
required=False,
validators=[usernameValidator, ],
help_text=_("3-16 chars, alphanumeric and _- pls"))
class Meta:
model = User
fields = ["username",]
class PlayerUpdateForm(forms.ModelForm):
bio = forms.CharField(max_length=128, required=False)
class Meta:
model = Player
fields = ["avatar", "bio"]

View File

@ -0,0 +1,19 @@
# Generated by Django 5.1.6 on 2025-02-18 16:57
import django_resized.forms
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('users', '0024_player_avatar_player_bio'),
]
operations = [
migrations.AlterField(
model_name='player',
name='avatar',
field=django_resized.forms.ResizedImageField(crop=None, default='defaults/avatars.jpg', force_format='JPEG', keep_meta=False, quality=75, scale=None, size=[256, 256], upload_to='avatars'),
),
]

View File

@ -8,7 +8,7 @@ class Player(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name="player")
# Profile
bio = models.TextField(max_length=128, null=True)
avatar = ResizedImageField(default="default.jpg",
avatar = ResizedImageField(default="defaults/avatars.jpg",
size=[256, 256],
upload_to="avatars",
keep_meta=False,

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,10 @@
#config-box {
background-color: black;
width: 640px;
height: 480px;
}
#config-box {
display: flex;
flex-direction: row;
}

View File

@ -0,0 +1,12 @@
#users-container {
width: 640px;
height: 480px;
text-align: center;
}
#users-box {
background-color: #20B0FF;
width: 280px;
height: 280px;
margin: auto;
}

View File

@ -1,11 +1,25 @@
{% extends "bloonsa_game/base.html" %}
{% load crispy_forms_tags %}
{% load static %}
{% block title %}
My Profile
{% endblock title %}
{% block head %}
<link rel="stylesheet" href="{% static 'users/css/bulma-1.0.3.css' %}">
<link rel="stylesheet" href="{% static 'users/css/config.css' %}">
{% endblock head %}
{% block content %}
<h1>Profile settings</h1>
{% crispy form %}
<form method="post" id="config-box">
<div id="config-profile-box">
<div id="profile-settings-text">Profile settings</div>
{% csrf_token %}
{% crispy form_player %}
{% crispy form_user %}
<button type="submit" class="btn btn-primary">Save changes</button>
</div>
<div id="config-bloonsa-box">a</div>
</form>
{% endblock %}

View File

@ -1,11 +1,20 @@
{% extends "bloonsa_game/base.html" %}
{% load crispy_forms_tags %}
{% load static %}
{% block title %}
Login
{% endblock title %}
{% block head %}
<link rel="stylesheet" href="{% static 'users/css/users.css' %}">
{% endblock head %}
{% block content %}
<h1>Login!</h1>
{% crispy form %}
<div id="users-container">
<div id="users-box">
<h1>Login!</h1>
{% crispy form %}
</div>
</div>
{% endblock %}

View File

@ -1,11 +1,20 @@
{% extends "bloonsa_game/base.html" %}
{% load crispy_forms_tags %}
{% load static %}
{% block title %}
Register
{% endblock title %}
{% block head %}
<link rel="stylesheet" href="{% static 'users/css/users.css' %}">
{% endblock head %}
{% block content %}
<h1>Register!</h1>
{% crispy form %}
<div id="users-container">
<div id="users-box">
<h1>Register!</h1>
{% crispy form %}
</div>
</div>
{% endblock %}

View File

@ -3,7 +3,7 @@ from django.contrib.auth.forms import UserCreationForm, AuthenticationForm
from django.shortcuts import render, redirect
from django.views.generic import TemplateView
from users.forms import UserRegisterForm, UserLoginForm, UserConfigForm
from users.forms import UserRegisterForm, UserLoginForm, PlayerUpdateForm, UserUpdateForm
from users.models import Player
from users.util import bloonsa_util, actions
@ -56,21 +56,33 @@ class LogoutView(TemplateView):
class ConfigView(TemplateView):
def get(self, request, *args, **kwargs):
form = UserConfigForm()
form_player = PlayerUpdateForm()
form_user = UserUpdateForm()
return render(request=request,
template_name="users/config.html",
context={"form": form})
context={"form_player": form_player,
"form_user": form_user})
def post(self, request, *args, **kwargs):
form = UserConfigForm(request.POST)
if not form.is_valid():
form_player = PlayerUpdateForm(request.POST)
form_user = UserUpdateForm(request.POST)
if any((
not form_player.is_valid(),
not form_user.is_valid()
)):
return render(request=request,
template_name="users/config.html",
context={"form": form})
user = form.save()
login(request=request, user=user)
context={
"form_player": form_player,
"form_user": form_user
})
user = form_user.save()
player = form_player.save()
#bloonsa_util.log(player=player,
# action=actions.login)
return render(request=request,
template_name="users/config.html",
context={"form": form})
context={
"form_player": form_player,
"form_user": form_user
})