class EditThemeOwnerForm(happyforms.Form): owner = UserEmailField() def __init__(self, *args, **kw): self.instance = kw.pop('instance') super(EditThemeOwnerForm, self).__init__(*args, **kw) addon = self.instance self.fields['owner'].widget.attrs['placeholder'] = _( "Enter a new author's email address") try: self.instance_addonuser = addon.addonuser_set.all()[0] self.initial['owner'] = self.instance_addonuser.user.email except IndexError: # If there was never an author before, then don't require one now. self.instance_addonuser = None self.fields['owner'].required = False def save(self): data = self.cleaned_data if data.get('owner'): changed = (not self.instance_addonuser or self.instance_addonuser != data['owner']) if changed: # Update Persona-specific data. persona = self.instance.persona persona.author = data['owner'].username persona.display_username = data['owner'].name persona.save() if not self.instance_addonuser: # If there previously never another owner, create one. self.instance.addonuser_set.create(user=data['owner'], role=amo.AUTHOR_ROLE_OWNER) elif self.instance_addonuser != data['owner']: # If the owner has changed, update the `AddonUser` object. self.instance_addonuser.user = data['owner'] self.instance_addonuser.role = amo.AUTHOR_ROLE_OWNER self.instance_addonuser.save() self.instance.modified = datetime.now() self.instance.save() return data
def test_empty_email(self): UserProfile.objects.create(email='') with self.assertRaises(forms.ValidationError) as e: UserEmailField().clean('') eq_(e.exception.messages[0], 'This field is required.')
def test_failure(self): with self.assertRaises(forms.ValidationError): UserEmailField().clean('xxx')
def test_success(self): user = UserProfile.objects.get(pk=2519) eq_(UserEmailField().clean(user.email), user)