source file: /home/buildslave/tahoe/edgy/build/src/allmydata/web/checker_results.py
file stats: 64 lines, 58 executed: 90.6% covered
   1. 
   2. import time
   3. from nevow import rend, inevow, tags as T
   4. from allmydata.web.common import getxmlfile, get_arg
   5. from allmydata.interfaces import ICheckerResults, IDeepCheckResults
   6. 
   7. class CheckerResults(rend.Page):
   8.     docFactory = getxmlfile("checker-results.xhtml")
   9. 
  10.     def __init__(self, results):
  11.         assert ICheckerResults(results)
  12.         self.r = results
  13. 
  14.     def render_storage_index(self, ctx, data):
  15.         return self.r.get_storage_index_string()
  16. 
  17.     def render_mutability(self, ctx, data):
  18.         return self.r.get_mutability_string()
  19. 
  20.     def render_results(self, ctx, data):
  21.         return ctx.tag[self.r.to_string()]
  22. 
  23.     def render_return(self, ctx, data):
  24.         req = inevow.IRequest(ctx)
  25.         return_to = get_arg(req, "return_to", None)
  26.         if return_to:
  27.             return T.div[T.a(href=return_to)["Return to parent directory"]]
  28.         return ""
  29. 
  30. class DeepCheckResults(rend.Page):
  31.     docFactory = getxmlfile("deep-check-results.xhtml")
  32. 
  33.     def __init__(self, results):
  34.         assert IDeepCheckResults(results)
  35.         self.r = results
  36. 
  37.     def render_root_storage_index(self, ctx, data):
  38.         return self.r.get_root_storage_index_string()
  39. 
  40.     def data_objects_checked(self, ctx, data):
  41.         return self.r.count_objects_checked()
  42.     def data_objects_healthy(self, ctx, data):
  43.         return self.r.count_objects_healthy()
  44.     def data_repairs_attempted(self, ctx, data):
  45.         return self.r.count_repairs_attempted()
  46.     def data_repairs_successful(self, ctx, data):
  47.         return self.r.count_repairs_successful()
  48. 
  49.     def data_problems(self, ctx, data):
  50.         for cr in self.r.get_problems():
  51.             yield cr
  52.     def render_problem(self, ctx, data):
  53.         cr = data
  54.         text = cr.get_storage_index_string()
  55.         text += ": "
  56.         text += cr.status_report
  57.         return ctx.tag[text]
  58. 
  59.     def data_all_objects(self, ctx, data):
  60.         r = self.r.get_all_results()
  61.         for storage_index in sorted(r.keys()):
  62.             yield r[storage_index]
  63. 
  64.     def render_object(self, ctx, data):
  65.         r = data
  66.         ctx.fillSlots("storage_index", r.get_storage_index_string())
  67.         ctx.fillSlots("healthy", str(r.is_healthy()))
  68.         return ctx.tag
  69. 
  70.     def render_return(self, ctx, data):
  71.         req = inevow.IRequest(ctx)
  72.         return_to = get_arg(req, "return_to", None)
  73.         if return_to:
  74.             return T.div[T.a(href=return_to)["Return to parent directory"]]
  75.         return ""
  76. 
  77.     def render_runtime(self, ctx, data):
  78.         req = inevow.IRequest(ctx)
  79.         runtime = time.time() - req.processing_started_timestamp
  80.         return ctx.tag["runtime: %s seconds" % runtime]