From 524df146e20751e04c14dff112a8f3cb35fa2371 Mon Sep 17 00:00:00 2001 From: Johnny Date: Wed, 24 Oct 2018 22:53:04 +0000 Subject: [PATCH] Fixes redirect bug after character update, updates tests. --- evennia/web/website/tests.py | 8 ++++++++ evennia/web/website/views.py | 14 +++++++++----- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/evennia/web/website/tests.py b/evennia/web/website/tests.py index daf8614b28..f2b321b652 100644 --- a/evennia/web/website/tests.py +++ b/evennia/web/website/tests.py @@ -182,6 +182,14 @@ class CharacterUpdateView(EvenniaWebTest): response = self.client.get(reverse(self.url_name, kwargs=self.get_kwargs()), follow=True) self.assertEqual(response.status_code, 200) + # Try to update char1 desc + data = {'db_key': self.char1.db_key, 'desc': "Just a regular type of dude."} + response = self.client.post(reverse(self.url_name, kwargs=self.get_kwargs()), data=data, follow=True) + self.assertEqual(response.status_code, 200) + + # Make sure the change was made successfully + self.assertEqual(self.char1.db.desc, data['desc']) + def test_invalid_access(self): "Account1 should not be able to update Account2:Char2" # Login account diff --git a/evennia/web/website/views.py b/evennia/web/website/views.py index cc62878d2e..a993a8258e 100644 --- a/evennia/web/website/views.py +++ b/evennia/web/website/views.py @@ -233,6 +233,10 @@ class ObjectUpdateView(LoginRequiredMixin, ObjectDetailView, EvenniaUpdateView): model = class_from_module(settings.BASE_OBJECT_TYPECLASS) access_type = 'edit' + def get_success_url(self): + if self.success_url: return self.success_url + return self.object.web_get_detail_url() + def get_initial(self): """ Override of Django hook. @@ -273,7 +277,7 @@ class ObjectUpdateView(LoginRequiredMixin, ObjectDetailView, EvenniaUpdateView): # Do not return super().form_valid; we don't want to update the model # instance, just its attributes. - return HttpResponseRedirect(self.success_url) + return HttpResponseRedirect(self.get_success_url()) # # Account views @@ -317,6 +321,7 @@ class CharacterMixin(object): model = class_from_module(settings.BASE_CHARACTER_TYPECLASS) form_class = CharacterForm + success_url = reverse_lazy('character-manage') def get_queryset(self): # Get IDs of characters owned by account @@ -330,7 +335,7 @@ class CharacterPuppetView(LoginRequiredMixin, CharacterMixin, RedirectView, Obje def get_redirect_url(self, *args, **kwargs): # Get the requested character, if it belongs to the authenticated user char = self.get_object() - next = self.kwargs.get('next', reverse('character-manage')) + next = self.kwargs.get('next', self.success_url) if char: self.request.session['puppet'] = int(char.pk) @@ -353,12 +358,11 @@ class CharacterUpdateView(CharacterMixin, ObjectUpdateView): template_name = 'website/character_form.html' class CharacterDeleteView(CharacterMixin, ObjectDeleteView): - success_url = reverse_lazy('character-manage') + pass class CharacterCreateView(CharacterMixin, ObjectCreateView): - + template_name = 'website/character_form.html' - success_url = reverse_lazy('character-manage') def form_valid(self, form): # Get account ref