Fixes redirect bug after character update, updates tests.

This commit is contained in:
Johnny 2018-10-24 22:53:04 +00:00
parent a5d0669734
commit 524df146e2
2 changed files with 17 additions and 5 deletions

View file

@ -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

View file

@ -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