diff --git a/evennia/web/website/tests.py b/evennia/web/website/tests.py index a45ec2d17a..6a6c6ae7e1 100644 --- a/evennia/web/website/tests.py +++ b/evennia/web/website/tests.py @@ -1,6 +1,6 @@ from django.conf import settings from django.utils.text import slugify -from django.test import Client +from django.test import Client, override_settings from django.urls import reverse from evennia.utils.test_resources import EvenniaTest @@ -97,7 +97,29 @@ class CharacterCreateView(EvenniaWebTest): url_name = 'character-create' unauthenticated_response = 302 - def test_valid_access(self): + @override_settings(MULTISESSION_MODE=0) + def test_valid_access_multisession_0(self): + "Account1 with no characters should be able to create a new one" + self.account.db._playable_characters = [] + + # Login account + self.login() + + # Post data for a new character + data = { + 'db_key': 'gannon', + 'desc': 'Some dude.' + } + + response = self.client.post(reverse(self.url_name), data=data, follow=True) + self.assertEqual(response.status_code, 200) + + # Make sure the character was actually created + self.assertTrue(len(self.account.db._playable_characters) == 1, 'Account only has the following characters attributed to it: %s' % self.account.db._playable_characters) + + @override_settings(MULTISESSION_MODE=2) + @override_settings(MAX_NR_CHARACTERS=10) + def test_valid_access_multisession_2(self): "Account1 should be able to create a new character" # Login account self.login() diff --git a/evennia/web/website/views.py b/evennia/web/website/views.py index f07e7f80f0..c044623e8d 100644 --- a/evennia/web/website/views.py +++ b/evennia/web/website/views.py @@ -363,28 +363,8 @@ class CharacterCreateView(CharacterMixin, ObjectCreateView): description = self.attributes.pop('desc') # Create a character - permissions = settings.PERMISSION_ACCOUNT_DEFAULT - typeclass = self.model - default_home = ObjectDB.objects.get_id(settings.DEFAULT_HOME) - - from evennia.utils import create try: - character = create.create_object(typeclass, key=charname, home=default_home, permissions=permissions) - # set playable character list - account.db._playable_characters.append(character) - - # allow only the character itself and the account to puppet this character (and Developers). - character.locks.add("puppet:id(%i) or pid(%i) or perm(Developer) or pperm(Developer)" % - (character.id, account.id)) - - # If no description is set, set a default description - if not description: - character.db.desc = "This is a character." - else: - character.db.desc = description - - # We need to set this to have @ic auto-connect to this character - account.db._last_puppet = character + character, errors = self.model.create(charname, account, description=description) # Assign attributes from form [setattr(character.db, key, value) for key,value in self.attributes.items()]