Page MenuHomePhorge

__init__.py
No OneTemporary

Authored By
Unknown
Size
9 KB
Referenced Files
None
Subscribers
None

__init__.py

import json
import httplib
import sys
sys.path.append('../..')
from pykolab import utils
API_HOSTNAME = "localhost"
API_PORT = "80"
API_SCHEME = "http"
API_BASE = "/kolab-webadmin/api"
session_id = None
conn = None
from connect import connect
from request import request
def authenticate(username=None, password=None):
global session_id
if username == None:
username = utils.ask_question("Login", "cn=Directory Manager")
if password == None:
password = utils.ask_question("Password", password=True)
params = json.dumps(
{
'username': username,
'password': password
}
)
response = request('POST', "system.authenticate", params)
if response.has_key('session_token'):
session_id = response['session_token']
def connect():
global conn
if conn == None:
conn = httplib.HTTPConnection(API_HOSTNAME, API_PORT)
conn.connect()
return conn
def domains_capabilities():
return request('GET', 'domains.capabilities')
def domains_list():
return request('GET', 'domains.list')
def domain_info(domain):
return request('GET', 'domain.info?domain=%s' % (domain))
def get_group_input():
group_types = group_types_list()
if len(group_types.keys()) > 1:
for key in group_types.keys():
if not key == "status":
print "%s) %s" % (key,group_types[key]['name'])
group_type_id = utils.ask_question("Please select the group type")
elif len(group_types.keys()) > 0:
print "Automatically selected the only group type available"
group_type_id = group_types.keys()[0]
else:
print "No group types available"
sys.exit(1)
if group_types.has_key(group_type_id):
group_type_info = group_types[group_type_id]['attributes']
else:
print "No such group type"
sys.exit(1)
params = {
'group_type_id': group_type_id
}
for attribute in group_type_info['form_fields'].keys():
params[attribute] = utils.ask_question(attribute)
for attribute in group_type_info['auto_form_fields'].keys():
exec("retval = group_form_value_generate_%s(params)" % (attribute))
params[attribute] = retval[attribute]
return params
def get_user_input():
user_types = user_types_list()
if user_types['count'] > 1:
for key in user_types['list'].keys():
if not key == "status":
print "%s) %s" % (key,user_types['list'][key]['name'])
user_type_id = utils.ask_question("Please select the user type")
elif user_types['count'] > 0:
print "Automatically selected the only user type available"
user_type_id = user_types['list'].keys()[0]
else:
print "No user types available"
sys.exit(1)
if user_types['list'].has_key(user_type_id):
user_type_info = user_types['list'][user_type_id]['attributes']
else:
print "No such user type"
sys.exit(1)
params = {
'user_type_id': user_type_id
}
print user_type_info
for attribute in user_type_info['form_fields'].keys():
params[attribute] = utils.ask_question(attribute)
for attribute in user_type_info['auto_form_fields'].keys():
exec("retval = form_value_generate_%s(params)" % (attribute))
params[attribute] = retval[attribute]
return params
def group_add(params=None):
if params == None:
params = get_group_input()
params = json.dumps(params)
return request('POST', 'group.add', params)
def group_form_value_generate_mail(params=None):
if params == None:
params = get_user_input()
params = json.dumps(params)
return request('POST', 'group_form_value.generate_mail', params)
def group_info():
group = utils.ask_question("Group email address")
group = request('GET', 'group.info?group=%s' % (group))
return group
def group_members_list(group=None):
if group == None:
group = utils.ask_question("Group email address")
group = request('GET', 'group.members_list?group=%s' % (group))
return group
def group_types_list():
return request('GET', 'group_types.list')
def groups_list():
return request('GET', 'groups.list')
def request(method, api_uri, params=None, headers={}):
global session_id
if not session_id == None:
headers["X-Session-Token"] = session_id
conn = connect()
conn.request(method.upper(), "%s/%s" % (API_BASE,api_uri), params, headers)
response = conn.getresponse()
data = response.read()
print method, api_uri, params
print data
try:
response_data = json.loads(data)
except ValueError, e:
# Some data is not JSON
print "Response data is not JSON"
sys.exit(1)
print response_data
if response_data['status'] == "OK":
del response_data['status']
return response_data['result']
else:
return response_data['result']
def role_capabilities():
return request('GET', 'role.capabilities')
def system_capabilities():
return request('GET', 'system.capabilities')
def system_get_domain():
return request('GET', 'system.get_domain')
def system_select_domain(domain=None):
if domain == None:
domain = utils.ask_question("Domain name")
return request('GET', 'system.select_domain?domain=%s' % (domain))
def user_add(params=None):
if params == None:
params = get_user_input()
params = json.dumps(params)
return request('POST', 'user.add', params)
def user_delete(params=None):
if params == None:
params = {
'user': utils.ask_question("Username for user to delete", "user")
}
params = json.dumps(params)
return request('POST', 'user.delete', params)
def user_edit(params=None):
if params == None:
params = {
'user': utils.ask_question("Username for user to edit", "user")
}
params = json.dumps(params)
user = request('GET', 'user.info', params)
return user
def user_form_value_generate_cn(params=None):
if params == None:
params = get_user_input()
params = json.dumps(params)
return request('POST', 'user_form_value.generate_cn', params)
def user_form_value_generate_displayname(params=None):
if params == None:
params = get_user_input()
params = json.dumps(params)
return request('POST', 'user_form_value.generate_displayname', params)
def user_form_value_generate_mail(params=None):
if params == None:
params = get_user_input()
params = json.dumps(params)
return request('POST', 'user_form_value.generate_mail', params)
def form_value_generate_password(*args, **kw):
return request('GET', 'form_value.generate_password')
def form_value_list_options(attribute_name, *args, **kw):
params = json.dumps({'attribute': attribute_name})
return request('POST', 'form_value.list_options', params)
def form_value_select_options(attribute_name, *args, **kw):
params = json.dumps({'attributes': [attribute_name]})
return request('POST', 'form_value.select_options', params)
def role_find_by_attribute(params=None):
if params == None:
role_name = utils.ask_question("Role name")
else:
role_name = params['cn']
role = request('GET', 'role.find_by_attribute?cn=%s' % (role_name))
return role
def role_add(params=None):
if params == None:
role_name = utils.ask_question("Role name")
params = {
'cn': role_name
}
params = json.dumps(params)
return request('POST', 'role.add', params)
def role_delete(params=None):
if params == None:
role_name = utils.ask_question("Role name")
role = role_find_by_attribute({'cn': role_name})
params = {
'role': role.keys()[0]
}
if not params.has_key('role'):
role = role_find_by_attribute(params)
params = {
'role': role.keys()[0]
}
params = json.dumps(params)
return request('POST', 'role.delete', params)
def role_info(params=None):
if params == None:
role_name = utils.ask_question("Role name")
role = role_find_by_attribute({'cn': role_name})
params = {
'role': role
}
if not params.has_key('role'):
role = role_find_by_attribute(params)
params = {
'role': role
}
print role
role = request('GET', 'role.info?role=%s' % (params['role'].keys()[0]))
return role
def roles_list():
return request('GET', 'roles.list')
def user_form_value_generate_uid(params=None):
if params == None:
params = get_user_input()
params = json.dumps(params)
return request('POST', 'user_form_value.generate_uid', params)
def user_form_value_generate_userpassword(*args, **kw):
result = form_value_generate_password()
return { 'userpassword': result['password'] }
def user_info():
user = utils.ask_question("User email address")
user = request('GET', 'user.info?user=%s' % (user))
return user
def user_types_list():
return request('GET', 'user_types.list')
def users_list():
return request('GET', 'users.list')

File Metadata

Mime Type
text/x-script.python
Expires
Sun, Apr 5, 11:57 PM (1 w, 4 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
18736953
Default Alt Text
__init__.py (9 KB)

Event Timeline