mirror of
https://github.com/inverse-inc/sogo.git
synced 2026-05-16 17:05:25 +00:00
d1af8b7801
Added sieve tests (vacation, forwarding and simple sieve scripts) Added some caldav scheduling tests cases and resources planning tests. Added new variables to config.py.in for sieve resources planning tests. Monotone-Parent: d3ab72b923ee1d1bbd604ea5e7e14b54346aa0b3 Monotone-Revision: 53dfb1b04415248644ed626184df1362cd4ee2f1 Monotone-Author: jraby@inverse.ca Monotone-Date: 2011-05-03T12:37:34 Monotone-Branch: ca.inverse.sogo
107 lines
3.4 KiB
Python
107 lines
3.4 KiB
Python
from config import hostname, port, username, password
|
|
import webdavlib
|
|
import urllib
|
|
import base64
|
|
import simplejson
|
|
|
|
import sogoLogin
|
|
|
|
SOGoSupportedLanguages = [ "Catalan", "Czech", "Welsh", "English", "Spanish",
|
|
"French", "German", "Italian", "Hungarian",
|
|
"Dutch", "BrazilianPortuguese", "Norwegian", "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")
|