From b3d7e39ecc8d7a07ab23036952ceee087deca40d Mon Sep 17 00:00:00 2001 From: Michael Ziegler Date: Tue, 16 Feb 2010 13:19:40 +0100 Subject: [PATCH] repair MumbleForm and clean up inheritance structure: PropertyModelForm < MumbleForm < MumbleAdminForm --- pyweb/mumble/forms.py | 72 +++++++++++++++++++------------------------ 1 file changed, 32 insertions(+), 40 deletions(-) diff --git a/pyweb/mumble/forms.py b/pyweb/mumble/forms.py index adc878e..37b4b72 100644 --- a/pyweb/mumble/forms.py +++ b/pyweb/mumble/forms.py @@ -55,30 +55,19 @@ class PropertyModelForm( ModelForm ): return inst -def populate_channel_choices( form ): - """ Populate the `default channel' field's choices """ - choices = [ ('', '----------') ] +class MumbleForm( PropertyModelForm ): + """ The Mumble Server admin form that allows to configure settings which do + not necessarily have to be reserved to the server hoster. - def add_item( item, level ): - if item.is_server or item.is_channel: - choices.append( ( str(item.chanid), ( "-"*level + " " + item.name ) ) ) - - form.instance.rootchan.visit(add_item) - - form.fields['defchan'].choices = choices - - -class MumbleAdminForm( PropertyModelForm ): - """ A Mumble Server admin form intended to be used by the server hoster. """ + Server hosters are expected to use the Django admin application instead, + where everything can be configured freely. + """ url = forms.CharField( required=False ) motd = forms.CharField( required=False, widget=forms.Textarea ) passwd = forms.CharField( required=False, help_text=_( "Password required to join. Leave empty for public servers.") ) - users = forms.IntegerField( required=False ) - bwidth = forms.IntegerField( required=False ) - sslcrt = forms.CharField( required=False, widget=forms.Textarea ) - sslkey = forms.CharField( required=False, widget=forms.Textarea ) + supw = forms.CharField( required=False ) obfsc = forms.BooleanField( required=False, help_text=_( "If on, IP adresses of the clients are not logged.") ) player = forms.CharField( required=False ) @@ -87,13 +76,36 @@ class MumbleAdminForm( PropertyModelForm ): "Enter the ID of the default channel here. The Channel viewer displays the ID to " "server admins on the channel detail page.") ) - def __init__( self, *args, **kwargs ): PropertyModelForm.__init__( self, *args, **kwargs ) - populate_channel_choices( self ) + + # Populate the `default channel' field's choices + choices = [ ('', '----------') ] + + def add_item( item, level ): + if item.is_server or item.is_channel: + choices.append( ( str(item.chanid), ( "-"*level + " " + item.name ) ) ) + + self.instance.rootchan.visit(add_item) + self.fields['defchan'].choices = choices class Meta: model = Mumble; + exclude = ( 'dbus', 'addr', 'port', ); + + +class MumbleAdminForm( MumbleForm ): + """ A Mumble Server admin form intended to be used by the server hoster. """ + + users = forms.IntegerField( required=False ) + bwidth = forms.IntegerField( required=False ) + sslcrt = forms.CharField( required=False, widget=forms.Textarea ) + sslkey = forms.CharField( required=False, widget=forms.Textarea ) + booted = forms.BooleanField( required=False ) + + + class Meta: + exclude = None def clean_port( self ): """ If portno == -1 autoassign, and check if the port number is valid. """ @@ -140,26 +152,6 @@ class MumbleAdminForm( PropertyModelForm ): return self.cleaned_data; -class MumbleForm( ModelForm ): - """ - The Mumble Server admin form that allows to configure settings which do not necessarily - have to be reserved to the server hoster. - - Server hosters are expected to use the Django admin application instead, where everything - can be configured freely. - """ - - defchan = forms.TypedChoiceField( choices=(), coerce=int ) - - def __init__( self, *args, **kwargs ): - ModelForm.__init__( self, *args, **kwargs ) - populate_channel_choices( self ) - - class Meta: - model = Mumble; - exclude = ( 'dbus', 'booted', 'addr', 'port', 'users', 'bwidth', 'sslcrt', 'sslkey', ); - - class MumbleUserForm( ModelForm ): """ The user registration form used to register an account. """