Fix create trade offer flow and other related bugs

This commit is contained in:
badblocks 2025-03-26 11:38:02 -07:00
parent f3a1366269
commit 65ca344582
40 changed files with 867 additions and 278 deletions

View file

@ -3,6 +3,8 @@ from django.contrib.auth.forms import UserCreationForm, UserChangeForm
from .models import CustomUser, FriendCode
from allauth.account.forms import SignupForm
from crispy_tailwind.tailwind import CSSContainer
from crispy_forms.helper import FormHelper
from crispy_forms.layout import Layout, Field, Submit
class CustomUserChangeForm(UserChangeForm):
@ -79,4 +81,9 @@ class CustomUserCreationForm(SignupForm):
)
user.default_friend_code = friend_code_pk
user.save()
return user
return user
class UserSettingsForm(forms.ModelForm):
class Meta:
model = CustomUser
fields = ['show_friend_code_on_link_previews']

View file

@ -1,4 +1,4 @@
# Generated by Django 5.1.2 on 2025-03-20 00:08
# Generated by Django 5.1.2 on 2025-03-22 04:08
import django.contrib.auth.models
import django.contrib.auth.validators
@ -31,6 +31,7 @@ class Migration(migrations.Migration):
('is_staff', models.BooleanField(default=False, help_text='Designates whether the user can log into this admin site.', verbose_name='staff status')),
('is_active', models.BooleanField(default=True, help_text='Designates whether this user should be treated as active. Unselect this instead of deleting accounts.', verbose_name='active')),
('date_joined', models.DateTimeField(default=django.utils.timezone.now, verbose_name='date joined')),
('show_friend_code_on_link_previews', models.BooleanField(default=False, help_text='This will primarily affect share link previews on X, Discord, etc.', verbose_name='Show Friend Code on Link Previews')),
('groups', models.ManyToManyField(blank=True, help_text='The groups this user belongs to. A user will get all permissions granted to each of their groups.', related_name='user_set', related_query_name='user', to='auth.group', verbose_name='groups')),
('user_permissions', models.ManyToManyField(blank=True, help_text='Specific permissions for this user.', related_name='user_set', related_query_name='user', to='auth.permission', verbose_name='user permissions')),
],

View file

@ -4,6 +4,11 @@ from django.core.exceptions import ValidationError
class CustomUser(AbstractUser):
default_friend_code = models.ForeignKey("FriendCode", on_delete=models.SET_NULL, null=True, blank=True)
show_friend_code_on_link_previews = models.BooleanField(
default=False,
verbose_name="Show Friend Code on Link Previews",
help_text="This will primarily affect share link previews on X, Discord, etc."
)
def __str__(self):
return self.email

View file

@ -3,8 +3,8 @@ from django.contrib.auth.mixins import LoginRequiredMixin
from django.urls import reverse_lazy
from django.shortcuts import redirect, get_object_or_404
from django.views.generic import ListView, CreateView, DeleteView, View, TemplateView, UpdateView
from accounts.models import FriendCode
from accounts.forms import FriendCodeForm
from accounts.models import FriendCode, CustomUser
from accounts.forms import FriendCodeForm, UserSettingsForm
from django.db.models import Case, When, Value, BooleanField
class ListFriendCodesView(LoginRequiredMixin, ListView):
@ -123,11 +123,23 @@ class ChangeDefaultFriendCodeView(LoginRequiredMixin, View):
messages.success(request, "Default friend code updated successfully.")
return redirect("list_friend_codes")
class SettingsView(LoginRequiredMixin, TemplateView):
# Updated SettingsView to update the new user setting.
class SettingsView(LoginRequiredMixin, UpdateView):
"""
Display the user's settings.
Display account navigation links and allow the user to update their friend code
visibility setting.
"""
model = CustomUser
form_class = UserSettingsForm
template_name = "account/settings.html"
success_url = reverse_lazy("settings")
def get_object(self):
return self.request.user
def form_valid(self, form):
messages.success(self.request, "Settings updated successfully.")
return super().form_valid(form)
class ProfileView(LoginRequiredMixin, TemplateView):
"""