Unset the uTorrent read only flags

Fix for #1871

Note that this is a fix for Windows only. I am unaware if this issue
arises on Linux/Mac and what happens with this fix on those systems.
This commit is contained in:
mano3m
2013-07-23 19:07:36 +02:00
parent f12d878c0b
commit 470fde0890
+12 -1
View File
@@ -10,7 +10,9 @@ from multipartpost import MultipartPostHandler
import cookielib import cookielib
import httplib import httplib
import json import json
import os
import re import re
import stat
import time import time
import urllib import urllib
import urllib2 import urllib2
@@ -52,7 +54,7 @@ class uTorrent(Downloader):
new_settings['seed_prio_limitul_flag'] = True new_settings['seed_prio_limitul_flag'] = True
log.info('Updated uTorrent settings to set a torrent to complete after it the seeding requirements are met.') log.info('Updated uTorrent settings to set a torrent to complete after it the seeding requirements are met.')
if settings.get('bt.read_only_on_complete'): #This doesnt work as this option seems to be not available through the api if settings.get('bt.read_only_on_complete'): #This doesn't work as this option seems to be not available through the api. Mitigated with removeReadOnly function
new_settings['bt.read_only_on_complete'] = False new_settings['bt.read_only_on_complete'] = False
log.info('Updated uTorrent settings to not set the files to read only after completing.') log.info('Updated uTorrent settings to not set the files to read only after completing.')
@@ -130,8 +132,10 @@ class uTorrent(Downloader):
status = 'busy' status = 'busy'
if 'Finished' in item[21]: if 'Finished' in item[21]:
status = 'completed' status = 'completed'
self.removeReadOnly(item[26])
elif 'Seeding' in item[21]: elif 'Seeding' in item[21]:
status = 'seeding' status = 'seeding'
self.removeReadOnly(item[26])
statuses.append({ statuses.append({
'id': item[0], 'id': item[0],
@@ -161,6 +165,13 @@ class uTorrent(Downloader):
if not self.connect(): if not self.connect():
return False return False
return self.utorrent_api.remove_torrent(item['id'], remove_data = delete_files) return self.utorrent_api.remove_torrent(item['id'], remove_data = delete_files)
def removeReadOnly(self, folder):
#Removes all read-only flags in a folder
if folder and os.path.isdir(folder):
for root, folders, filenames in os.walk(folder):
for filename in filenames:
os.chmod(os.path.join(root, filename), stat.S_IWRITE)
class uTorrentAPI(object): class uTorrentAPI(object):