From 538af99e8c371440c82fe1580e8693a477b2279b Mon Sep 17 00:00:00 2001
From: ZeroNet <git@zeronet.io>
Date: Wed, 10 Aug 2016 12:52:18 +0200
Subject: [PATCH] Dbrebuild button to sidebar

---
 plugins/Sidebar/SidebarPlugin.py | 19 +++++++++++++++----
 1 file changed, 15 insertions(+), 4 deletions(-)

diff --git a/plugins/Sidebar/SidebarPlugin.py b/plugins/Sidebar/SidebarPlugin.py
index a57e0406..57556ded 100644
--- a/plugins/Sidebar/SidebarPlugin.py
+++ b/plugins/Sidebar/SidebarPlugin.py
@@ -274,13 +274,14 @@ class UiWebsocketPlugin(object):
         i = 0
         for bad_file, tries in site.bad_files.iteritems():
             i += 1
-            body.append("""<li class='color-red' title="%s (%s tries)">%s</li>""" % (cgi.escape(bad_file, True), tries, cgi.escape(bad_file, True)))
+            body.append("""<li class='color-red' title="%s (%s tries)">%s</li>""" % (
+                cgi.escape(bad_file, True), tries, cgi.escape(bad_file, True))
+            )
             if i > 30:
                 break
 
         if len(site.bad_files) > 30:
-            body.append("""<li class='color-red'>+ %s more</li>""" % (len(site.bad_files)-30))
-
+            body.append("""<li class='color-red'>+ %s more</li>""" % (len(site.bad_files) - 30))
 
         body.append("""
              </ul>
@@ -300,8 +301,9 @@ class UiWebsocketPlugin(object):
         body.append(u"""
             <li>
              <label>Database <small>({size:.2f}kB, search feeds: {feeds} query)</small></label>
-             <input type='text' class='text disabled' value="{inner_path}" disabled='disabled'/>
+             <input type='text' class='text disabled' value="{inner_path}" disabled='disabled' style='width: 180px;'/>
              <a href='#Reload' id="button-dbreload" class='button'>Reload</a>
+             <a href='#Rebuild' id="button-dbrebuild" class='button'>Rebuild</a>
             </li>
         """.format(**locals()))
 
@@ -588,3 +590,12 @@ class UiWebsocketPlugin(object):
         self.site.storage.getDb()
 
         return self.response(to, "ok")
+
+    def actionDbRebuild(self, to):
+        permissions = self.getPermissions(to)
+        if "ADMIN" not in permissions:
+            return self.response(to, "You don't have permission to run this command")
+
+        self.site.storage.rebuildDb()
+
+        return self.response(to, "ok")