Handle unicode, utf8, and windows-1252
(cherry picked from commit 0d4f24a)
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
#===============================================================================
|
||||
# ===============================================================================
|
||||
# Copyright (C) 2010 Diego Duclos
|
||||
#
|
||||
# This file is part of pyfa.
|
||||
@@ -15,33 +15,41 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with pyfa. If not, see <http://www.gnu.org/licenses/>.
|
||||
#===============================================================================
|
||||
# ===============================================================================
|
||||
|
||||
import cPickle
|
||||
import os.path
|
||||
import config
|
||||
import urllib2
|
||||
|
||||
import config
|
||||
|
||||
|
||||
class SettingsProvider():
|
||||
BASE_PATH = os.path.join(config.savePath, "settings")
|
||||
BASE_PATH = config.getSavePath("settings")
|
||||
settings = {}
|
||||
_instance = None
|
||||
|
||||
@classmethod
|
||||
def getInstance(cls):
|
||||
if cls._instance == None:
|
||||
if cls._instance is None:
|
||||
cls._instance = SettingsProvider()
|
||||
|
||||
return cls._instance
|
||||
|
||||
def __init__(self):
|
||||
if not os.path.exists(self.BASE_PATH):
|
||||
os.mkdir(self.BASE_PATH);
|
||||
os.mkdir(self.BASE_PATH)
|
||||
|
||||
def getSettings(self, area, defaults=None):
|
||||
|
||||
s = self.settings.get(area)
|
||||
if s is None:
|
||||
p = os.path.join(self.BASE_PATH, area)
|
||||
if type(p) == str: # leave unicode ones alone
|
||||
try:
|
||||
p = p.decode('utf8')
|
||||
except UnicodeDecodeError:
|
||||
p = p.decode('windows-1252')
|
||||
|
||||
if not os.path.exists(p):
|
||||
info = {}
|
||||
@@ -71,6 +79,7 @@ class SettingsProvider():
|
||||
for settings in self.settings.itervalues():
|
||||
settings.save()
|
||||
|
||||
|
||||
class Settings():
|
||||
def __init__(self, location, info):
|
||||
self.location = location
|
||||
@@ -115,13 +124,13 @@ class NetworkSettings():
|
||||
_instance = None
|
||||
|
||||
# constants for serviceNetworkDefaultSettings["mode"] parameter
|
||||
PROXY_MODE_NONE = 0 # 0 - No proxy
|
||||
PROXY_MODE_NONE = 0 # 0 - No proxy
|
||||
PROXY_MODE_AUTODETECT = 1 # 1 - Auto-detected proxy settings
|
||||
PROXY_MODE_MANUAL = 2 # 2 - Manual proxy settings
|
||||
PROXY_MODE_MANUAL = 2 # 2 - Manual proxy settings
|
||||
|
||||
@classmethod
|
||||
def getInstance(cls):
|
||||
if cls._instance == None:
|
||||
if cls._instance is None:
|
||||
cls._instance = NetworkSettings()
|
||||
|
||||
return cls._instance
|
||||
@@ -184,12 +193,11 @@ class NetworkSettings():
|
||||
def setAccess(self, access):
|
||||
self.serviceNetworkSettings["access"] = access
|
||||
|
||||
def autodetect(self):
|
||||
@staticmethod
|
||||
def autodetect():
|
||||
|
||||
proxy = None
|
||||
proxAddr = proxPort = ""
|
||||
proxydict = urllib2.ProxyHandler().proxies
|
||||
txt = "Auto-detected: "
|
||||
|
||||
validPrefixes = ("http", "https")
|
||||
|
||||
@@ -237,53 +245,57 @@ class NetworkSettings():
|
||||
self.serviceNetworkSettings["password"] = password
|
||||
|
||||
|
||||
|
||||
"""
|
||||
Settings used by the HTML export feature.
|
||||
"""
|
||||
|
||||
|
||||
class HTMLExportSettings():
|
||||
_instance = None
|
||||
|
||||
@classmethod
|
||||
def getInstance(cls):
|
||||
if cls._instance == None:
|
||||
if cls._instance is None:
|
||||
cls._instance = HTMLExportSettings()
|
||||
|
||||
return cls._instance
|
||||
|
||||
def __init__(self):
|
||||
serviceHTMLExportDefaultSettings = {"enabled": False, "path": config.pyfaPath + os.sep + 'pyfaFits.html', "minimal": False }
|
||||
self.serviceHTMLExportSettings = SettingsProvider.getInstance().getSettings("pyfaServiceHTMLExportSettings", serviceHTMLExportDefaultSettings)
|
||||
serviceHTMLExportDefaultSettings = {"enabled": False, "path": config.pyfaPath + os.sep + 'pyfaFits.html',
|
||||
"minimal": False}
|
||||
self.serviceHTMLExportSettings = SettingsProvider.getInstance().getSettings("pyfaServiceHTMLExportSettings",
|
||||
serviceHTMLExportDefaultSettings)
|
||||
|
||||
def getEnabled(self):
|
||||
return self.serviceHTMLExportSettings["enabled"]
|
||||
|
||||
def setEnabled(self, enabled):
|
||||
self.serviceHTMLExportSettings["enabled"] = enabled
|
||||
|
||||
|
||||
|
||||
def getMinimalEnabled(self):
|
||||
return self.serviceHTMLExportSettings["minimal"]
|
||||
|
||||
def setMinimalEnabled(self, minimal):
|
||||
self.serviceHTMLExportSettings["minimal"] = minimal
|
||||
|
||||
|
||||
def getPath(self):
|
||||
return self.serviceHTMLExportSettings["path"]
|
||||
|
||||
def setPath(self, path):
|
||||
self.serviceHTMLExportSettings["path"] = path
|
||||
|
||||
|
||||
"""
|
||||
Settings used by update notification
|
||||
"""
|
||||
|
||||
|
||||
class UpdateSettings():
|
||||
_instance = None
|
||||
|
||||
@classmethod
|
||||
def getInstance(cls):
|
||||
if cls._instance == None:
|
||||
if cls._instance is None:
|
||||
cls._instance = UpdateSettings()
|
||||
|
||||
return cls._instance
|
||||
@@ -293,8 +305,9 @@ class UpdateSettings():
|
||||
# Updates are completely suppressed via network settings
|
||||
# prerelease - If True, suppress prerelease notifications
|
||||
# version - Set to release tag that user does not want notifications for
|
||||
serviceUpdateDefaultSettings = {"prerelease": True, 'version': None }
|
||||
self.serviceUpdateSettings = SettingsProvider.getInstance().getSettings("pyfaServiceUpdateSettings", serviceUpdateDefaultSettings)
|
||||
serviceUpdateDefaultSettings = {"prerelease": True, 'version': None}
|
||||
self.serviceUpdateSettings = SettingsProvider.getInstance().getSettings("pyfaServiceUpdateSettings",
|
||||
serviceUpdateDefaultSettings)
|
||||
|
||||
def get(self, type):
|
||||
return self.serviceUpdateSettings[type]
|
||||
@@ -302,6 +315,7 @@ class UpdateSettings():
|
||||
def set(self, type, value):
|
||||
self.serviceUpdateSettings[type] = value
|
||||
|
||||
|
||||
class CRESTSettings():
|
||||
_instance = None
|
||||
|
||||
@@ -313,13 +327,13 @@ class CRESTSettings():
|
||||
return cls._instance
|
||||
|
||||
def __init__(self):
|
||||
|
||||
# mode
|
||||
# 0 - Implicit authentication
|
||||
# 1 - User-supplied client details
|
||||
serviceCRESTDefaultSettings = {"mode": 0, "server": 0, "clientID": "", "clientSecret": "", "timeout": 60}
|
||||
|
||||
self.serviceCRESTSettings = SettingsProvider.getInstance().getSettings("pyfaServiceCRESTSettings", serviceCRESTDefaultSettings)
|
||||
self.serviceCRESTSettings = SettingsProvider.getInstance().getSettings("pyfaServiceCRESTSettings",
|
||||
serviceCRESTDefaultSettings)
|
||||
|
||||
def get(self, type):
|
||||
return self.serviceCRESTSettings[type]
|
||||
@@ -327,5 +341,4 @@ class CRESTSettings():
|
||||
def set(self, type, value):
|
||||
self.serviceCRESTSettings[type] = value
|
||||
|
||||
|
||||
# @todo: migrate fit settings (from fit service) here?
|
||||
|
||||
Reference in New Issue
Block a user