webish: add PBURL to the all-peers table on the welcome page

This commit is contained in:
Brian Warner 2007-01-16 21:01:18 -07:00
parent c868f77c71
commit 8e03d19ccc
3 changed files with 22 additions and 6 deletions

View File

@ -29,6 +29,7 @@ class Client(node.Node, Referenceable):
node.Node.__init__(self, basedir)
self.queen = None # self.queen is either None or a RemoteReference
self.all_peers = set()
self.peer_pburls = {}
self.connections = {}
self.add_service(StorageServer(os.path.join(basedir, self.STOREDIR)))
self.add_service(Uploader())
@ -105,6 +106,7 @@ class Client(node.Node, Referenceable):
self.log("weird, I already had an entry for them")
return
self.all_peers.add(nodeid)
self.peer_pburls[nodeid] = pburl
if nodeid not in self.connections:
d = self.tub.getReference(pburl)
def _got_reference(ref, which_nodeid):
@ -122,6 +124,8 @@ class Client(node.Node, Referenceable):
self.all_peers.remove(nodeid)
else:
self.log("weird, I didn't have an entry for them")
if nodeid in self.peer_pburls:
del self.peer_pburls[nodeid]
if nodeid in self.connections:
del self.connections[nodeid]

View File

@ -24,10 +24,12 @@
<tr n:pattern="header">
<td>PeerID</td>
<td>Connected?</td>
<td>PBURL</td>
</tr>
<tr n:pattern="item" n:render="row">
<td><tt><n:slot name="peerid"/></tt></td>
<td><n:slot name="connected"/></td>
<td><n:slot name="pburl"/></td>
</tr>
<tr n:pattern="empty"><td>no peers!</td></tr>
</table>

View File

@ -39,15 +39,25 @@ class Welcome(rend.Page):
return len(client.all_peers)
def data_num_connected_peers(self, ctx, data):
return len(IClient(ctx).connections)
def data_peers(self, ctx, data):
return sorted(IClient(ctx).all_peers)
d = []
client = IClient(ctx)
for nodeid in sorted(client.all_peers):
if nodeid in client.connections:
connected = "yes"
else:
connected = "no"
pburl = client.peer_pburls[nodeid]
row = (idlib.b2a(nodeid), connected, pburl)
d.append(row)
return d
def render_row(self, ctx, data):
if data in IClient(ctx).connections:
connected = "yes"
else:
connected = "no"
ctx.fillSlots("peerid", idlib.b2a(data))
nodeid_a, connected, pburl = data
ctx.fillSlots("peerid", nodeid_a)
ctx.fillSlots("connected", connected)
ctx.fillSlots("pburl", pburl)
return ctx.tag
# this is a form where users can download files by URI