Ejemplo n.º 1
0
 def get_context_data(self, **kwargs):
     context = super(CloudView, self).get_context_data(**kwargs)
     user_secret = self.request.user.secret
     all_files = btsync.get_files(secret=user_secret, path=kwargs.get('path', None))
     
     if kwargs.get('path'):
         dirs = kwargs.get('path').split('/')
         paths = []
         for i in range(len(dirs)):
             paths.append((dirs[i], '/'.join(dirs[:i+1])))
         context['paths'] = paths
     
     context['folder'] = btsync.get_folders(secret=user_secret)
     context['dirs'] = filter(lambda x: x['type'] == 'folder' and x['state'] != 'deleted', all_files)
     context['files'] = filter(lambda x: x['type'] == 'file' and x['state'] != 'deleted', all_files)
     
     return context
Ejemplo n.º 2
0
def create_user_folder(sender, instance, **kwargs):
    if not instance.folder:
        folder_name = instance.username
        folder_path = os.path.join(settings.MEDIA_ROOT, 'btsync', folder_name)
        
        if not os.path.exists(folder_path):
            os.makedirs(folder_path)
            
        instance.folder = folder_name
        
        add_result = btsync.add_folder(folder_path)
        
        if (add_result['error'] == 101):
            os.chown(folder_path, bt_settings.BTSYNC_SYSTEM_UID, bt_settings.BTSYNC_SYSTEM_GID)
        if not add_result['error'] in IGNORE_ERRORS:
            raise Exception('Error %s: %s' % (add_result['error'], add_result['message']))
        
        folders = btsync.get_folders()
        instance.secret = filter(
            lambda x: os.path.abspath(x['dir']) == os.path.abspath(folder_path), 
            folders
        )[0]['secret']
        instance.save()