sogo/Tests/Integration/preferences.py

107 lines
3.4 KiB
Python
Raw Normal View History

from config import hostname, port, username, password
import webdavlib
import urllib
import base64
import simplejson
import sogoLogin
SOGoSupportedLanguages = [ "Catalan", "Czech", "Welsh", "English", "SpanishSpain", "SpanishArgentina",
"French", "German", "Icelandic", "Italian", "Hungarian", "Danish",
"Dutch", "BrazilianPortuguese", "NorwegianBokmal",
"NorwegianNynorsk", "Polish", "Russian", "Ukrainian", "Swedish" ]
daysBetweenResponseList=[1,2,3,5,7,14,21,30]
class HTTPPreferencesPOST (webdavlib.HTTPPOST):
cookie = None
def prepare_headers (self):
headers = webdavlib.HTTPPOST.prepare_headers(self)
if self.cookie:
headers["Cookie"] = self.cookie
return headers
class HTTPPreferencesGET (webdavlib.HTTPGET):
cookie = None
def prepare_headers (self):
headers = webdavlib.HTTPGET.prepare_headers(self)
if self.cookie:
headers["Cookie"] = self.cookie
return headers
class preferences:
login = username
passw = password
def __init__(self, otherLogin = None, otherPassword = None):
if otherLogin and otherPassword:
self.login = otherLogin
self.passw = otherPassword
self.client = webdavlib.WebDAVClient(hostname, port)
authCookie = sogoLogin.getAuthCookie(hostname, port, username, password)
self.cookie = authCookie
self.preferencesMap = {
"SOGoLanguage": "2.1.0.3.0.1.4.3.1.3.1.1.2",
"SOGoSieveFilters": "sieveFilters",
# Vacation stuff
"Vacation": "enableVacation", # to disable, don't specify it
"autoReplyText": "autoReplyText", # string
"autoReplyEmailAddresses": "autoReplyEmailAddresses", # LIST
"daysBetweenResponse": "2.1.0.3.0.1.4.3.1.3.7.1.5.1.1.3.7.2", # see daysBetweenResponseList
"ignoreLists": "ignoreLists", #bool
# forward stuff
"Forward": "enableForward", # to disable, don't specify it
"forwardAddress": "forwardAddress",
"keepCopy": "forwardKeepCopy",
}
def set(self, preference, value=None):
# if preference is a dict, set all prefs found in the dict
content=""
try:
for k,v in preference.items():
content+="%s=%s&" % (self.preferencesMap[k], v)
except AttributeError:
# preference wasn't a dict
formKey = self.preferencesMap[preference]
content = "%s=%s&hasChanged=1" % (formKey, value)
url = "/SOGo/so/%s/preferences" % self.login
post = HTTPPreferencesPOST (url, content)
post.content_type = "application/x-www-form-urlencoded"
post.cookie = self.cookie
self.client.execute (post)
# Raise an exception if the language wasn't properly set
if post.response["status"] != 200:
raise Exception ("failure setting language, (code = %d)" \
% post.response["status"])
def get(self, preference):
url = "/SOGo/so/%s/preferences/jsonDefaults" % self.login
get = HTTPPreferencesGET (url)
get.cookie = self.cookie
self.client.execute (get)
content = simplejson.loads(get.response['body'])
result = None
try:
result = content[preference]
except:
pass
return result
# Simple main to test this class
if __name__ == "__main__":
p = preferences ()
p.set ("SOGoLanguage", SOGoSupportedLanguages.index("French"))
print p.get ("SOGoLanguage")