+class MapupdateStatusPage(rend.Page, RateAndTimeMixin):
+ docFactory = getxmlfile("map-update-status.xhtml")
+
+ def __init__(self, data):
+ rend.Page.__init__(self, data)
+ self.update_status = data
+
+ def render_started(self, ctx, data):
+ TIME_FORMAT = "%H:%M:%S %d-%b-%Y"
+ started_s = time.strftime(TIME_FORMAT,
+ time.localtime(data.get_started()))
+ return started_s
+
+ def render_si(self, ctx, data):
+ si_s = base32.b2a_or_none(data.get_storage_index())
+ if si_s is None:
+ si_s = "(None)"
+ return si_s
+
+ def render_helper(self, ctx, data):
+ return {True: "Yes",
+ False: "No"}[data.using_helper()]
+
+ def render_progress(self, ctx, data):
+ progress = data.get_progress()
+ # TODO: make an ascii-art bar
+ return "%.1f%%" % (100.0 * progress)
+
+ def render_status(self, ctx, data):
+ return data.get_status()
+
+ def render_problems(self, ctx, data):
+ problems = data.problems
+ if not problems:
+ return ""
+ l = T.ul()
+ for peerid in sorted(problems.keys()):
+ peerid_s = idlib.shortnodeid_b2a(peerid)
+ l[T.li["[%s]: %s" % (peerid_s, problems[peerid])]]
+ return ctx.tag["Server Problems:", l]
+
+ def render_privkey_from(self, ctx, data):
+ peerid = data.get_privkey_from()
+ if peerid:
+ return ctx.tag["Got privkey from: [%s]"
+ % idlib.shortnodeid_b2a(peerid)]
+ else:
+ return ""
+
+ def data_time_total(self, ctx, data):
+ return self.update_status.timings.get("total")
+
+ def data_time_setup(self, ctx, data):
+ return self.update_status.timings.get("setup")
+
+ def data_time_cumulative_verify(self, ctx, data):
+ return self.update_status.timings.get("cumulative_verify")
+
+ def render_server_timings(self, ctx, data):
+ per_server = self.update_status.timings.get("per_server")
+ if not per_server:
+ return ""
+ l = T.ul()
+ for peerid in sorted(per_server.keys()):
+ peerid_s = idlib.shortnodeid_b2a(peerid)
+ times = []
+ for op,t in per_server[peerid]:
+ if op == "query":
+ times.append( self.render_time(None, t) )
+ else:
+ times.append( "(" + self.render_time(None, t) + ")" )
+ times_s = ", ".join(times)
+ l[T.li["[%s]: %s" % (peerid_s, times_s)]]
+ return T.li["Per-Server Response Times: ", l]
+