207
207
def getProxyAuthenticationType(self):
208
208
return self.__settings["proxyAuthenticationType"]
210
def __initSettingsFromDatabaseAndFixThemIfNeeded(self):
211
"""tries to load settings from db.
212
If it don't exist uses default values
213
If it exist but don't have keys writes defaults to database
214
If it exist but settings are incorrect(probably because program version missmatch) merges correct database settings with defaults and writes them to database"""
210
def _load_settings(self):
211
"""try to load settings from database.
213
If db don't exist uses default values and writes defaults to database
214
If db exist but settings are incorrect(probably because program version
215
missmatch) merges correct database settings with defaults and writes them to database.
216
return merged settings
216
overwriteDatabaseSettings = False
218
databeseSettings = db.getSettings()
219
if not databeseSettings:
220
overwriteDatabaseSettings = True # database was empty
221
settings = self.__settingsDefault
221
databaseSettings = db.getSettings()
222
if not databaseSettings:
223
result = self._settingsDefault # use defaults
223
"""itarate over settings default keys.
224
if key exist in databaseSettings use their value
225
otherwise set overwriteDatabaseSettings to true and use default value"""
226
for key, value in self.__settingsDefault.iteritems():
227
if key in databeseSettings:
228
settings[key] = databeseSettings[key]
230
overwriteDatabaseSettings = True
231
settings[key] = value
232
settings, settingsChanged = _fix_preffered_uploaders_if_needed(settings)
234
overwriteDatabaseSettings = True
235
self.__settings = settings
236
if overwriteDatabaseSettings:
225
# Merge defaults with settings.
226
# If setting exist in both defaults and database
227
# use value from database
228
# preffered_uploaders_defaults = self._settingsDefault["preferredUploaders"]
229
# preffered_uploaders_defaults.update(self._settingsDefault["preferredUploaders"])
230
# self._settingsDefault["preferredUploaders"] = preffered_uploaders_defaults
231
# result = self._settingsDefault
233
result = dict(self._settingsDefault, **databaseSettings)
234
result["preferredUploaders"] = dict(self._settingsDefault["preferredUploaders"], **databaseSettings["preferredUploaders"])
236
result = _fix_preffered_uploaders_if_needed(result)
237
settings_changed = databaseSettings != result
237
239
self.saveSettingsToDB()
240
243
def putUseUploadersCredentialsIntoSettings(self, pluginsWithPasswords):
241
"""puts 'usePasswordFor' = False in settings
244
"""Fills settings with lacking usePasswordForUploader
246
put 'usePasswordFor' = False in settings
242
247
for each plugin that can use credentials, that did not have
243
value for this setting stored."""
248
value for this setting stored.
244
251
for plugin in pluginsWithPasswords:
245
252
settingName = self.getSettingNameForUsingUploaderPassword(plugin.NAME)
246
253
if not settingName in self.__settings:
250
257
def __init__(self):
251
self.__initSettingsFromDatabaseAndFixThemIfNeeded()
258
settings = self._load_settings()
259
self.__settings = settings
254
262
def _fix_preffered_uploaders_if_needed(settings):
255
263
"""change preffered uploaders if they have list as values
257
return dictionary of correct uploaders and boolean indicating if change occured
265
return dictionary of correct uploaders
258
266
this function is for transition between PyShare o.5.* to 0.6
261
269
preferredUploaders = settings["preferredUploaders"]
262
change_occured = False
263
270
for type, uploader in preferredUploaders.items():
264
271
if isinstance(uploader, list):
265
272
preferredUploaders[type] = uploader[0]
266
change_occured = True
267
return settings, change_occured