Made player config page work
This commit is contained in:
parent
e8f244d279
commit
b3d0510161
@ -50,6 +50,8 @@
|
||||
right: 0;
|
||||
position: absolute;
|
||||
padding: 0;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
}
|
||||
|
||||
#profile-settings-button, #profile-logout-button {
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
|
||||
<div id="profile-box">
|
||||
<div id="avatar-box">
|
||||
<img id="avatar" src="{{ user.player.avatar.url }}">
|
||||
<img id="avatar" src="{{ user.player.avatar.url }}" height=64px width=64px>
|
||||
</div>
|
||||
|
||||
<div id="profile-user">
|
||||
@ -31,12 +31,11 @@
|
||||
|
||||
</div>
|
||||
<div id="profile-buttons">
|
||||
<a href="/users/config">
|
||||
<button id="profile-settings-button">settings</button>
|
||||
</a>
|
||||
<a href="/users/logout">
|
||||
<button id="profile-logout-button">logout</button>
|
||||
</a>
|
||||
<form action="/users/config">
|
||||
<input id="profile-settings-button" type="submit" value="config" />
|
||||
</form>
|
||||
<form action="/users/logout">
|
||||
<input id="profile-logout-button" type="submit" value="logout" />
|
||||
</form>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@ -1,6 +1,6 @@
|
||||
django==5.1.*
|
||||
django-crispy-forms
|
||||
crispy-bulma
|
||||
crispy-bootstrap4
|
||||
django-extensions
|
||||
tqdm
|
||||
Pillow
|
||||
|
||||
@ -39,7 +39,7 @@ INSTALLED_APPS = [
|
||||
|
||||
# Plugins
|
||||
"crispy_forms",
|
||||
"crispy_bulma",
|
||||
"crispy_bootstrap4",
|
||||
"django_extensions",
|
||||
"django_cleanup.apps.CleanupConfig",
|
||||
|
||||
@ -141,7 +141,5 @@ MEDIA_URL = "/media/"
|
||||
|
||||
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
|
||||
|
||||
CRISPY_ALLOWED_TEMPLATE_PACKS = ("bulma",)
|
||||
CRISPY_TEMPLATE_PACK = "bulma"
|
||||
|
||||
|
||||
CRISPY_ALLOWED_TEMPLATE_PACKS = "bootstrap4"
|
||||
CRISPY_TEMPLATE_PACK = "bootstrap4"
|
||||
@ -8,7 +8,8 @@ from crispy_forms.helper import FormHelper
|
||||
from crispy_forms.layout import Submit
|
||||
|
||||
from users.models import Player
|
||||
from users.validators import usernameValidator
|
||||
from users.validators import usernameValidator, username_change_validator
|
||||
from bloonsa_game.models import Config as BloonsaConfig
|
||||
|
||||
class UserRegisterForm(UserCreationForm):
|
||||
field_order = ("username", "password1", "password2")
|
||||
@ -72,21 +73,19 @@ class UserLoginForm(AuthenticationForm):
|
||||
]
|
||||
|
||||
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",]
|
||||
fields = []
|
||||
|
||||
class PlayerUpdateForm(forms.ModelForm):
|
||||
bio = forms.CharField(max_length=128, required=False)
|
||||
|
||||
|
||||
class Meta:
|
||||
model = Player
|
||||
fields = ["avatar", "bio"]
|
||||
|
||||
class BloonsaConfigUpdateForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = BloonsaConfig
|
||||
fields = ["autoplay",]
|
||||
@ -1,10 +1,14 @@
|
||||
#config-box {
|
||||
background-color: black;
|
||||
background-color: #324299;
|
||||
font-family: "Comic Sans MS", "Comic Sans", cursive;
|
||||
color: white;
|
||||
position: relative;
|
||||
width: 640px;
|
||||
height: 600px;
|
||||
}
|
||||
|
||||
#config-box {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
}
|
||||
|
||||
#config-profile-box {
|
||||
text-align: left;
|
||||
}
|
||||
@ -7,16 +7,17 @@
|
||||
{% 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 %}
|
||||
<form method="post" id="config-box">
|
||||
<form method="post" id="config-box" enctype="multipart/form-data">
|
||||
<div id="config-profile-box">
|
||||
<div id="profile-settings-text">Profile settings</div>
|
||||
{% crispy form_player %}
|
||||
{% crispy form_user %}
|
||||
{% csrf_token %}
|
||||
{{ form_user|crispy }}
|
||||
{{ form_player|crispy }}
|
||||
{{ form_config|crispy }}
|
||||
<button type="submit" class="btn btn-primary">Save changes</button>
|
||||
</div>
|
||||
<div id="config-bloonsa-box"></div>
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
from django.contrib.auth import logout
|
||||
from django.utils import timezone
|
||||
|
||||
from bloonsa_game.models import Config
|
||||
from users.models import Player, Log
|
||||
|
||||
actions = Log.Actions
|
||||
@ -24,6 +25,10 @@ class BloonsaUtil:
|
||||
if not request.user.is_authenticated:
|
||||
return
|
||||
if hasattr(request.user, "player"):
|
||||
# TODO Optimize this by only doing it on register
|
||||
if not hasattr(request.user.player, "bloonsa_config"):
|
||||
bloonsa_config = Config(player=request.user.player)
|
||||
bloonsa_config.save()
|
||||
return request.user.player
|
||||
ip = self.get_ip(request=request)
|
||||
player = Player(user=request.user,
|
||||
|
||||
@ -15,3 +15,11 @@ def usernameValidator(username):
|
||||
charset = set(string.ascii_letters + string.digits + "_-")
|
||||
if not all(x in charset for x in username):
|
||||
raise ValidationError("Username may only contain normal letters, numbers and _-")
|
||||
|
||||
def username_change_validator(username):
|
||||
if len(username) < 3 or len(username) > 16:
|
||||
raise ValidationError("Username must be between 3-16 characters long")
|
||||
|
||||
charset = set(string.ascii_letters + string.digits + "_-")
|
||||
if not all(x in charset for x in username):
|
||||
raise ValidationError("Username may only contain normal letters, numbers and _-")
|
||||
|
||||
@ -4,7 +4,7 @@ from django.contrib.auth.mixins import LoginRequiredMixin
|
||||
from django.shortcuts import render, redirect
|
||||
from django.views.generic import TemplateView
|
||||
|
||||
from users.forms import UserRegisterForm, UserLoginForm, PlayerUpdateForm, UserUpdateForm
|
||||
from users.forms import UserRegisterForm, UserLoginForm, PlayerUpdateForm, UserUpdateForm, BloonsaConfigUpdateForm
|
||||
from users.models import Player
|
||||
from users.util import bloonsa_util, actions
|
||||
|
||||
@ -57,32 +57,36 @@ class LogoutView(TemplateView):
|
||||
class ConfigView(LoginRequiredMixin, TemplateView):
|
||||
|
||||
def get(self, request, *args, **kwargs):
|
||||
form_config = BloonsaConfigUpdateForm(instance=request.user.player.bloonsa_config)
|
||||
form_player = PlayerUpdateForm(instance=request.user.player)
|
||||
form_user = UserUpdateForm(instance=request.user)
|
||||
|
||||
return render(request=request,
|
||||
template_name="users/config.html",
|
||||
context={"form_player": form_player,
|
||||
context={"form_config": form_config,
|
||||
"form_player": form_player,
|
||||
"form_user": form_user})
|
||||
|
||||
# TODO add log
|
||||
def post(self, request, *args, **kwargs):
|
||||
form_player = PlayerUpdateForm(request.POST)
|
||||
form_user = UserUpdateForm(request.POST)
|
||||
if any((
|
||||
not form_player.is_valid(),
|
||||
not form_user.is_valid()
|
||||
)):
|
||||
form_config = BloonsaConfigUpdateForm(request.POST,
|
||||
instance=request.user.player.bloonsa_config)
|
||||
form_player = PlayerUpdateForm(request.POST,
|
||||
request.FILES,
|
||||
instance=request.user.player)
|
||||
form_user = UserUpdateForm(request.POST, instance=request.user)
|
||||
"""if not form_player.is_valid() or not form_user.is_valid() or not form_config.is_valid():
|
||||
return render(request=request,
|
||||
template_name="users/config.html",
|
||||
context={
|
||||
"form_config": form_config,
|
||||
"form_player": form_player,
|
||||
"form_user": form_user
|
||||
})
|
||||
user = form_user.save()
|
||||
player = form_player.save()
|
||||
return render(request=request,
|
||||
template_name="users/config.html",
|
||||
context={
|
||||
"form_player": form_player,
|
||||
"form_user": form_user
|
||||
})
|
||||
"form_user": form_user})"""
|
||||
if form_user.is_valid():
|
||||
form_user.save()
|
||||
if form_player.is_valid():
|
||||
form_player.save()
|
||||
if form_config.is_valid():
|
||||
form_config.save()
|
||||
# messages.success(request, "Profile updated successfully")
|
||||
return redirect("users:config")
|
||||
Loading…
Reference in New Issue
Block a user