From d2c471f623965580884d9cad3ceabf14cde5ac4f Mon Sep 17 00:00:00 2001 From: Michael Ziegler Date: Sat, 14 Nov 2009 11:07:50 +0100 Subject: [PATCH] move check if target account is an admin to clean() to get a clean error message. see #56 --- pyweb/mumble/forms.py | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/pyweb/mumble/forms.py b/pyweb/mumble/forms.py index 86583a1..caadd69 100644 --- a/pyweb/mumble/forms.py +++ b/pyweb/mumble/forms.py @@ -101,7 +101,7 @@ class MumbleUserLinkForm( MumbleUserForm ): ); def clean_name( self ): - if not self.cleaned_data['linkacc']: + if 'linkacc' not in self.data: return MumbleUserForm.clean_name( self ); # Check if user exists @@ -113,7 +113,7 @@ class MumbleUserLinkForm( MumbleUserForm ): return name; def clean_password( self ): - if not self.cleaned_data['linkacc']: + if 'linkacc' not in self.data: return MumbleUserForm.clean_password( self ); # Validate password with Murmur @@ -125,20 +125,25 @@ class MumbleUserLinkForm( MumbleUserForm ): return pw; - def save( self, *args, **kwargs ): - if not self.cleaned_data['linkacc']: - inst = MumbleUserForm.save( self, *args, **kwargs ); - inst.isAdmin = False; - inst.server = this.server; - return inst; + def clean( self ): + if 'linkacc' not in self.data: + return self.cleaned_data; mUser = MumbleUser.objects.get( server=self.server, mumbleid=self.mumbleid ); if mUser.getAdmin() and not settings.ALLOW_ACCOUNT_LINKING_ADMINS: - raise SystemError( "Linking Admin accounts is not allowed." ); - + raise forms.ValidationError( "Linking Admin accounts is not allowed." ); self.instance = mUser; - return MumbleUserForm.save( self, *args, **kwargs ); + return self.cleaned_data; + + def save( self, *args, **kwargs ): + inst = MumbleUserForm.save( self, *args, **kwargs ); + + if 'linkacc' not in self.data: + inst.isAdmin = False; + inst.server = this.server; + + return inst; class MumbleTextureForm( Form ):