def get(self, request): """Return a form for creating a character.""" form_data = request.session.pop('form_data', None) if form_data is None: form = forms.CharacterForm() else: form = forms.CharacterForm(json.loads(form_data)) return render( request, 'gurps_manager/character_templates/character-create-form.html', {'form': form})
def put(self, request, character_id): """Update character ``character_id``. If update suceeds, redirect user to ``CharacterId`` view. Otherwise, redirect user to ``CharacterIdUpdateForm`` view. """ # Does the requested character exist, and is the user authorized to # update this character? character = _get_model_object_or_404(models.Character, character_id) if not _user_owns_character(request.user, character): return http.HttpResponseForbidden( 'Error: you do not own this character.') # Attempt to save changes. Reply. form = forms.CharacterForm(request.POST, instance=character) if form.is_valid(): form.save() return http.HttpResponseRedirect( reverse('gurps-manager-character-id', args=[character_id])) else: request.session['form_data'] = json.dumps(form.data) return http.HttpResponseRedirect( reverse('gurps-manager-character-id-update-form', args=[character_id]))
def get(self, request, character_id): """Return a form for updating character ``character_id``.""" # Does the requested character exist, and is the user authorized to # update this character? character = _get_model_object_or_404(models.Character, character_id) if not _user_owns_character(request.user, character): return http.HttpResponseForbidden( 'Error: you do not own this character.') # Populate and return an update form. form_data = request.session.pop('form_data', None) if form_data is None: form = forms.CharacterForm(instance=character) else: form = forms.CharacterForm(json.loads(form_data)) return render( request, 'gurps_manager/character_templates/character-id-update-form.html', { 'character': character, 'form': form })
def post(self, request): """Create a new item. If creation succeeds, rediret user to ``CharacterId`` view. Otherwise, redirect user to ``CharacterCreateForm`` view. """ form = forms.CharacterForm(request.POST) if form.is_valid(): new_character = form.save() return http.HttpResponseRedirect( reverse('gurps-manager-character-id', args=[new_character.id])) else: # Put form data into session. Destination view will use it. request.session['form_data'] = json.dumps(form.data) return http.HttpResponseRedirect( reverse('gurps-manager-character-create-form'))
def test_has_description(self): """Create a CharacterForm and set ``description``.""" attributes = self._character_attributes() attributes['description'] = factories.character_description() form = forms.CharacterForm(attributes) self.assertTrue(form.is_valid())
def test_missing_used_fatigue(self): """Create a CharacterForm without setting ``used_fatigue``.""" attributes = self._character_attributes() del attributes['used_fatigue'] form = forms.CharacterForm(attributes) self.assertFalse(form.is_valid())
def test_valid(self): """Create a valid CharacterForm.""" form = forms.CharacterForm(self._character_attributes()) self.assertTrue(form.is_valid())
def test_missing_free_health(self): """Create a CharacterForm without setting ``free_health``.""" attributes = self._character_attributes() del attributes['free_health'] form = forms.CharacterForm(attributes) self.assertFalse(form.is_valid())
def test_missing_total_points(self): """Create a CharacterForm without setting ``total_points``.""" attributes = self._character_attributes() del attributes['total_points'] form = forms.CharacterForm(attributes) self.assertFalse(form.is_valid())
def test_missing_muscle_memory(self): """Create a CharacterForm without setting ``muscle_memory``.""" attributes = self._character_attributes() del attributes['muscle_memory'] form = forms.CharacterForm(attributes) self.assertFalse(form.is_valid())
def test_missing_bonus_initiative(self): """Create a CharacterForm without setting ``bonus_initiative``.""" attributes = self._character_attributes() del attributes['bonus_initiative'] form = forms.CharacterForm(attributes) self.assertFalse(form.is_valid())
def test_missing_appearance(self): """Create a CharacterForm without setting ``appearance``.""" attributes = self._character_attributes() del attributes['appearance'] form = forms.CharacterForm(attributes) self.assertFalse(form.is_valid())
def test_missing_dexterity(self): """Create a CharacterForm without setting ``dexterity``.""" attributes = self._character_attributes() del attributes['dexterity'] form = forms.CharacterForm(attributes) self.assertFalse(form.is_valid())
def test_missing_campaign(self): """Create a CharacterForm without setting ``campaign``.""" attributes = self._character_attributes() del attributes['campaign'] form = forms.CharacterForm(attributes) self.assertFalse(form.is_valid())
def test_missing_everything(self): """Create a CharacterForm and set no fields.""" form = forms.CharacterForm({}) self.assertFalse(form.is_valid())
def test_has_story(self): """Create a CharacterForm and set ``story``.""" attributes = self._character_attributes() attributes['story'] = factories.character_story() form = forms.CharacterForm(attributes) self.assertTrue(form.is_valid())