Browse Source

displaying data from a Django form works now. Next step would be editing.

Natenom/support-murmur-13-1446181288462
Michael Ziegler 16 years ago
parent
commit
ebc4e223b0
  1. 46
      cli.py
  2. 9
      pyweb/mumble/forms.py

46
cli.py

@ -45,6 +45,7 @@ import curses
from django.db.models.fields.related import ForeignKey
from mumble.models import *
from mumble.forms import *
locale.setlocale(locale.LC_ALL, '')
@ -246,6 +247,30 @@ class BaseWindow( object ):
def border( self ):
self.win.border();
def enter( self ):
while( True ):
key = self.win.getch();
if key == curses.KEY_UP:
return;
class FormEditor( object ):
def __init__( self, win, form ):
self.win = win;
self.form = form;
def draw( self ):
curr_y = 1;
for fname in self.form.fields:
field = self.form.fields[fname];
value = unicode( getattr( self.form.data, fname ) );
self.win.addstr( curr_y, 1, field.label.encode(locale.getpreferredencoding()) );
self.win.addstr( curr_y, 30, value.encode(locale.getpreferredencoding()) );
curr_y += 1;
class WndChannels( BaseWindow ):
tabName = 'Channels';
@ -264,9 +289,18 @@ class WndChannels( BaseWindow ):
self.curr_y = 1;
self.mm.rootchan.visit( self.printItem );
class WndSettings( BaseWindow ):
class WndSettings( BaseWindow, FormEditor ):
tabName = 'Server settings';
def __init__( self, parentwin, mumble, pos_x, pos_y ):
BaseWindow.__init__( self, parentwin, mumble, pos_x, pos_y );
FormEditor.__init__( self, self.win, MumbleAdminForm( mumble ) );
def draw( self ):
FormEditor.draw( self );
class WndUsers( BaseWindow ):
tabName = 'Registered users';
@ -297,7 +331,7 @@ class MumbleForm( object ):
self.win.mvwin( self.pos[1], self.pos[0] );
def draw( self ):
self.win.addstr( 0, 0, self.mm.name );
self.win.addstr( 0, 0, self.mm.name.encode(locale.getpreferredencoding()) );
def drawTabs( self ):
first = True;
@ -325,9 +359,12 @@ class MumbleForm( object ):
elif key == curses.KEY_RIGHT and self.curridx < self.currmax:
self.curridx += 1;
elif key in ( ord('q'), ord('Q') ):
elif key in ( ord('q'), ord('Q'), curses.KEY_UP ):
return;
elif key in ( curses.KEY_ENTER, curses.KEY_DOWN, ord('\n') ):
self.currwin.enter();
self.win.clear();
self.draw();
self.drawTabs();
@ -337,6 +374,7 @@ class MumbleForm( object ):
def main( stdscr ):
first_y = 3;
curr_y = first_y;
@ -368,7 +406,7 @@ def main( stdscr ):
stdscr.addstr( first_y + selectedIdx, 3, ' ' );
selectedIdx += 1;
elif key in ( curses.KEY_ENTER, ord('\n') ):
elif key in ( curses.KEY_RIGHT, curses.KEY_ENTER, ord('\n') ):
stdscr.clear();
selectedObj.mvwin( 5, first_y );
selectedObj.draw();

9
pyweb/mumble/forms.py

@ -18,6 +18,15 @@ from django import forms
from django.forms import Form, ModelForm
from models import *
class MumbleAdminForm( ModelForm ):
"""
A Mumble Server admin form intended to be used by the server hoster.
"""
class Meta:
model = Mumble;
exclude = ( 'sslcrt', 'sslkey' );
class MumbleForm( ModelForm ):
"""
The Mumble Server admin form that allows to configure settings which do not necessarily

Loading…
Cancel
Save