bigeagle преди 11 години
родител
ревизия
3edc83044e
променени са 2 файла, в които са добавени 37 реда и са изтрити 11 реда
  1. 35 8
      tunasync.py
  2. 2 3
      tunasync/jobs.py

+ 35 - 8
tunasync.py

@@ -15,27 +15,54 @@ class IndexPageHook(JobHook):
         self.parent = parent
         self.dbfile = dbfile
 
-        self.mirrors = {}
+    @property
+    def mirrors(self):
+        mirrors = {}
         try:
             with open(self.dbfile) as f:
                 _mirrors = json.load(f)
                 for m in _mirrors:
-                    self.mirrors[m["name"]] = m
+                    mirrors[m["name"]] = m
         except:
             for name, _ in self.parent.mirrors.iteritems():
-                self.mirrors[name] = {
+                mirrors[name] = {
                     'name': name,
                     'last_update': '-',
                     'status': 'unknown',
                 }
+        return mirrors
 
-    def before_job(self, *args, **kwargs):
-        pass
+    def before_job(self, name=None, *args, **kwargs):
+        if name is None:
+            return
+        mirrors = self.mirrors
+        _m = mirrors.get(name, {
+            'name': name,
+            'last_update': '-',
+            'status': '-',
+        })
+
+        mirrors[name] = {
+            'name': name,
+            'last_update': _m['last_update'],
+            'status': 'syncing'
+        }
+        with open(self.dbfile, 'wb') as f:
+            _mirrors = sorted(
+                [m for _, m in mirrors.items()],
+                key=lambda x: x['name']
+            )
+
+            json.dump(_mirrors, f)
+
+    def after_job(self, name=None, status="unknown", *args, **kwargs):
+        if name is None:
+            return
 
-    def after_job(self, name='unknown', status="unknown", *args, **kwargs):
         print("Updating tunasync.json")
         now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
-        self.mirrors[name] = {
+        mirrors = self.mirrors
+        mirrors[name] = {
             'name': name,
             'last_update': now,
             'status': status
@@ -43,7 +70,7 @@ class IndexPageHook(JobHook):
         with open(self.dbfile, 'wb') as f:
 
             _mirrors = sorted(
-                [m for _, m in self.mirrors.items()],
+                [m for _, m in mirrors.items()],
                 key=lambda x: x['name']
             )
 

+ 2 - 3
tunasync/jobs.py

@@ -27,16 +27,15 @@ def run_job(sema, child_q, manager_q, provider):
         print("start syncing {}".format(provider.name))
 
         for hook in provider.hooks:
-            hook.before_job()
+            hook.before_job(name=provider.name)
 
         provider.run()
 
+        status = "success"
         try:
             provider.wait()
         except sh.ErrorReturnCode:
             status = "fail"
-        else:
-            status = "success"
 
         for hook in provider.hooks[::-1]:
             try: