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]