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
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()