Browse Source

properly handle servers being offline in the server list

Natenom/support-murmur-13-1446181288462
Michael Ziegler 15 years ago
parent
commit
121607468f
  1. 19
      pyweb/mumble/templates/mumble/list.html
  2. 50
      pyweb/mumble/views.py

19
pyweb/mumble/templates/mumble/list.html

@ -51,11 +51,16 @@
singleSelect: true, singleSelect: true,
store: new Ext.data.DirectStore({ store: new Ext.data.DirectStore({
directFn: MumbleList.servers, directFn: MumbleList.servers,
fields: [ 'id', 'name' ],
fields: [ 'id', 'name', 'booted' ],
autoLoad: true, autoLoad: true,
listeners: { listeners: {
load: function( store, records, objects ){ load: function( store, records, objects ){
mainpanel.serverlist.select(0);
for( var i = 0; i < records.length; i++ ){
if( records[i].data.booted ){
mainpanel.serverlist.select(records[i]);
return;
}
}
} }
} }
}), }),
@ -66,16 +71,16 @@
}], }],
listeners: { listeners: {
dblclick: function(listview){ dblclick: function(listview){
selectedstuff = listview.getSelectedRecords();
MumbleList.serverurl( selectedstuff[0].data.id, function(provider, response){
window.location.href = response.result;
});
location.href = mainpanel.selectedServer.detailsurl;
}, },
selectionchange: function(listview, nodes){ selectionchange: function(listview, nodes){
selectedstuff = listview.getSelectedRecords(); selectedstuff = listview.getSelectedRecords();
MumbleList.serverinfo( selectedstuff[0].data.id, function(provider, response){ MumbleList.serverinfo( selectedstuff[0].data.id, function(provider, response){
mainpanel.selectedServer = response.result; mainpanel.selectedServer = response.result;
var info = renderserverinfos(response.result);
if( response.result.booted )
var info = renderserverinfos(response.result);
else
var info = gettext("This server is currently offline.");
mainpanel.descrippanel.el.dom.children[1].children[0].innerHTML = info; mainpanel.descrippanel.el.dom.children[1].children[0].innerHTML = info;
}); });
} }

50
pyweb/mumble/views.py

@ -92,33 +92,37 @@ def mumbles( request, mobile=False ):
@EXT_DIRECT_PROVIDER.register_method( "MumbleList" ) @EXT_DIRECT_PROVIDER.register_method( "MumbleList" )
def servers( request ): def servers( request ):
mms = Mumble.objects.all().order_by( "name" ).values( "id", "name" )
return [{ 'id': mm['id'], 'name': mm['name'] } for mm in mms]
mms = Mumble.objects.all().order_by( "name" )
return [{ 'id': mm.id, 'name': mm.name, 'booted': mm.booted } for mm in mms]
@EXT_DIRECT_PROVIDER.register_method( "MumbleList" ) @EXT_DIRECT_PROVIDER.register_method( "MumbleList" )
def serverinfo( request, server ): def serverinfo( request, server ):
srv = Mumble.objects.get( id=int(server) ) srv = Mumble.objects.get( id=int(server) )
# users_regged users_online channel_cnt uptime upsince minurl
return {
'id': srv.id,
'name': srv.name,
'motd': srv.motd,
'connecturl': srv.connecturl,
'prettyversion': srv.prettyversion,
'url': srv.url,
'users_regged': srv.users_regged,
'users_online': srv.users_online,
'channel_cnt': srv.channel_cnt,
'uptime': srv.uptime,
'upsince': unicode(srv.upsince),
'minurl': reverse( mobile_show, args=(server,) ),
'detailsurl': reverse( show, args=(server,) ),
}
@EXT_DIRECT_PROVIDER.register_method( "MumbleList" )
def serverurl( request, server ):
return reverse( show, args=(int(server),) );
if srv.booted:
return {
'id': srv.id,
'name': srv.name,
'booted': True,
'motd': srv.motd,
'connecturl': srv.connecturl,
'prettyversion': srv.prettyversion,
'url': srv.url,
'users_regged': srv.users_regged,
'users_online': srv.users_online,
'channel_cnt': srv.channel_cnt,
'uptime': srv.uptime,
'upsince': unicode(srv.upsince),
'minurl': reverse( mobile_show, args=(server,) ),
'detailsurl': reverse( show, args=(server,) ),
}
else:
return{
'id': srv.id,
'name': srv.name,
'booted': False,
'minurl': reverse( mobile_show, args=(server,) ),
'detailsurl': reverse( show, args=(server,) ),
}
def show( request, server ): def show( request, server ):
""" Display the channel list for the given Server ID. """ Display the channel list for the given Server ID.

Loading…
Cancel
Save