From 0ac8ac8d5c576d20602f728eb5f3954c9b19588e Mon Sep 17 00:00:00 2001 From: badbl0cks <4161747+badbl0cks@users.noreply.github.com> Date: Sat, 15 Mar 2025 15:22:41 -0700 Subject: [PATCH] fix friend_code editing --- accounts/migrations/0001_initial.py | 2 +- accounts/urls.py | 10 +++- accounts/views.py | 25 +++++++++- .../friend_codes/edit_friend_code.html | 50 +++++++++++++++++++ .../friend_codes/list_friend_codes.html | 10 ++-- 5 files changed, 88 insertions(+), 9 deletions(-) create mode 100644 theme/templates/friend_codes/edit_friend_code.html diff --git a/accounts/migrations/0001_initial.py b/accounts/migrations/0001_initial.py index cc88c8d..28426c2 100644 --- a/accounts/migrations/0001_initial.py +++ b/accounts/migrations/0001_initial.py @@ -1,4 +1,4 @@ -# Generated by Django 5.1.2 on 2025-03-14 05:35 +# Generated by Django 5.1.2 on 2025-03-15 22:05 import django.contrib.auth.models import django.contrib.auth.validators diff --git a/accounts/urls.py b/accounts/urls.py index 206a6c0..f56852f 100644 --- a/accounts/urls.py +++ b/accounts/urls.py @@ -1,10 +1,18 @@ from django.urls import path -from .views import ListFriendCodesView, AddFriendCodeView, DeleteFriendCodeView, ChangeDefaultFriendCodeView, SettingsView +from .views import ( + ListFriendCodesView, + AddFriendCodeView, + DeleteFriendCodeView, + ChangeDefaultFriendCodeView, + EditFriendCodeView, + SettingsView, +) urlpatterns = [ # ... other account URLs ... path("friend-codes/", ListFriendCodesView.as_view(), name="list_friend_codes"), path("friend-codes/add/", AddFriendCodeView.as_view(), name="add_friend_code"), + path("friend-codes/edit//", EditFriendCodeView.as_view(), name="edit_friend_code"), path("friend-codes/delete//", DeleteFriendCodeView.as_view(), name="delete_friend_code"), path("friend-codes/default//", ChangeDefaultFriendCodeView.as_view(), name="change_default_friend_code"), path("settings/", SettingsView.as_view(), name="settings"), diff --git a/accounts/views.py b/accounts/views.py index e3a4e6a..c73f8a3 100644 --- a/accounts/views.py +++ b/accounts/views.py @@ -2,7 +2,7 @@ from django.contrib import messages 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 +from django.views.generic import ListView, CreateView, DeleteView, View, TemplateView, UpdateView from accounts.models import FriendCode from accounts.forms import FriendCodeForm from django.db.models import Case, When, Value, BooleanField @@ -127,4 +127,25 @@ class SettingsView(LoginRequiredMixin, TemplateView): """ Display the user's settings. """ - template_name = "account/settings.html" \ No newline at end of file + template_name = "account/settings.html" + +class EditFriendCodeView(LoginRequiredMixin, UpdateView): + """ + Edit the in-game name for a friend code. + The friend code itself is displayed as plain text. + Also includes "Set Default" and "Delete" buttons in the template. + """ + model = FriendCode + # Only the in_game_name field is editable + fields = ['in_game_name'] + template_name = "friend_codes/edit_friend_code.html" + context_object_name = "friend_code" + success_url = reverse_lazy("list_friend_codes") + + def get_queryset(self): + # Ensure the user can only edit their own friend codes + return FriendCode.objects.filter(user=self.request.user) + + def form_valid(self, form): + messages.success(self.request, "Friend code updated successfully.") + return super().form_valid(form) \ No newline at end of file diff --git a/theme/templates/friend_codes/edit_friend_code.html b/theme/templates/friend_codes/edit_friend_code.html new file mode 100644 index 0000000..bd06ee0 --- /dev/null +++ b/theme/templates/friend_codes/edit_friend_code.html @@ -0,0 +1,50 @@ +{% extends 'base.html' %} +{% load crispy_forms_tags %} + +{% block title %}Edit Friend Code{% endblock %} + +{% block content %} +
+

Edit Friend Code

+ + +
+ Friend Code: {{ friend_code.friend_code }} +
+ + +
+ {% csrf_token %} +
+ {{ form.in_game_name.as_widget }} + {% if form.in_game_name.errors %} +
+ {{ form.in_game_name.errors }} +
+ {% endif %} +
+
+ +
+ +
+
+ {% csrf_token %} + {% if not friend_code.is_default %} + + {% else %} + + {% endif %} +
+ Delete +
+ + +
+ Cancel + + +
+
+
+{% endblock %} \ No newline at end of file diff --git a/theme/templates/friend_codes/list_friend_codes.html b/theme/templates/friend_codes/list_friend_codes.html index bdd0747..45753dd 100644 --- a/theme/templates/friend_codes/list_friend_codes.html +++ b/theme/templates/friend_codes/list_friend_codes.html @@ -11,22 +11,22 @@ {% for code in friend_codes %}
  • - {{ code.in_game_name }} + {{ code.in_game_name }} {% if code.is_default %} - Default + Default {% endif %}
    - {{ code.friend_code }} + {{ code.friend_code }}
    {% if not code.is_default %}
    {% csrf_token %} - +
    {% endif %} - Delete + Delete
  • {% endfor %}