diff options
author | Siddharth Ravikumar <sravik@bgsu.edu> | 2015-08-26 10:40:10 -0400 |
---|---|---|
committer | Siddharth Ravikumar <sravik@bgsu.edu> | 2015-08-26 10:40:10 -0400 |
commit | 50fbaf03131bdf025b71d716879191a1db4fb172 (patch) | |
tree | 2fe4a28a2039da443207182ff798d01e5b8d11b3 | |
parent | ef5cbad2f1aa2014853bde35596c0812d1c6b079 (diff) |
combox/events.py: fixed a Dropox specific issue :|
-rw-r--r-- | combox/events.py | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/combox/events.py b/combox/events.py index 7774bbd..de0196d 100644 --- a/combox/events.py +++ b/combox/events.py @@ -293,7 +293,11 @@ class NodeDirMonitor(LoggingEventHandler): def on_moved(self, event): super(NodeDirMonitor, self).on_moved(event) + src_cb_path = cb_path(event.src_path, self.config) + dest_cb_path = cb_path(event.dest_path, self.config) + silo_node_dict = 'file_moved' + cb_filename = src_cb_path if (not self.shardp(event.src_path) and not self.shardp(event.dest_path) and @@ -309,6 +313,7 @@ class NodeDirMonitor(LoggingEventHandler): # the shard appears in this node directory -- it is # created. silo_node_dict = 'file_created' + cb_filename = dest_cb_path elif (self.shardp(event.src_path) and self.shardp(event.dest_path) and '.dropbox_cache' in event.dest_path and @@ -320,17 +325,29 @@ class NodeDirMonitor(LoggingEventHandler): # this treat as a file delete. silo_node_dict = 'file_deleted' - src_cb_path = cb_path(event.src_path, self.config) - dest_cb_path = cb_path(event.dest_path, self.config) - if not path.exists(dest_cb_path): # means this path was moved on another computer that is # running combox. with self.lock: - self.silo.node_set(silo_node_dict, src_cb_path) - num = self.silo.node_get(silo_node_dict, src_cb_path) + self.silo.node_set(silo_node_dict, cb_filename) + num = self.silo.node_get(silo_node_dict, cb_filename) if num != self.num_nodes: return + elif silo_node_dict == 'file_created': + # This is Dropbox specific :| + # create file in cb directory. + decrypt_and_glue(cb_filename, self.config) + # update db. + self.silo.update(cb_filename) + self.silo.node_rem('file_created', cb_filename) + elif silo_node_dict == 'file_deleted': + # This is Dropbox specify :| + # remove the corresponding file under the combox + # directory. + rm_path(cb_filename) + # remove file info from silo. + self.silo.remove(cb_filename) + self.silo.node_rem('file_deleted', cb_filename) else: try: os.rename(src_cb_path, dest_cb_path) |