summaryrefslogtreecommitdiffstats
path: root/ipa-server/ipa-gui/ipagui/controllers.py
diff options
context:
space:
mode:
Diffstat (limited to 'ipa-server/ipa-gui/ipagui/controllers.py')
-rw-r--r--ipa-server/ipa-gui/ipagui/controllers.py168
1 files changed, 168 insertions, 0 deletions
diff --git a/ipa-server/ipa-gui/ipagui/controllers.py b/ipa-server/ipa-gui/ipagui/controllers.py
new file mode 100644
index 00000000..361a5cbd
--- /dev/null
+++ b/ipa-server/ipa-gui/ipagui/controllers.py
@@ -0,0 +1,168 @@
+import cherrypy
+import turbogears
+from turbogears import controllers, expose, flash
+from turbogears import validators, validate
+from turbogears import widgets, paginate
+from turbogears import error_handler
+# from model import *
+# import logging
+# log = logging.getLogger("ipagui.controllers")
+# import ipa.rpcclient
+import ipa.config
+import ipa.ipaclient
+import ipa.user
+import xmlrpclib
+import forms.user
+
+ipa.config.init_config()
+user_form = forms.user.UserFormWidget()
+
+client = ipa.ipaclient.IPAClient(True)
+client.set_principal("test@FREEIPA.ORG")
+
+def restrict_post():
+ if cherrypy.request.method != "POST":
+ turbogears.flash("This method only accepts posts")
+ raise turbogears.redirect("/")
+
+def user_to_hash(user):
+ return {
+ 'uid' : user.getValue('uid'),
+ 'givenName' : user.getValue('givenName'),
+ 'sn' : user.getValue('sn'),
+ 'mail' : user.getValue('mail'),
+ 'telephoneNumber': user.getValue('telephoneNumber'),
+ 'uidNumber': user.getValue('uidNumber'),
+ 'gidNumber': user.getValue('gidNumber'),
+ }
+
+class Root(controllers.RootController):
+
+ @expose(template="ipagui.templates.welcome")
+ def index(self):
+ return dict()
+
+
+ ########
+ # User #
+ ########
+
+ @expose("ipagui.templates.usernew")
+ def usernew(self, tg_errors=None):
+ """Displays the new user form"""
+ if tg_errors:
+ turbogears.flash("There was a problem with the form!")
+
+ return dict(form=user_form)
+
+ @expose()
+ def usercreate(self, **kw):
+ """Creates a new user"""
+ restrict_post()
+ if kw.get('submit') == 'Cancel':
+ turbogears.flash("Add user cancelled")
+ raise turbogears.redirect('/userlist')
+
+ tg_errors, kw = self.uservalidate(**kw)
+ if tg_errors:
+ return dict(form=user_form, tg_template='ipagui.templates.usernew')
+
+ try:
+ # rv = ipa.rpcclient.add_user(kw)
+ newuser = ipa.user.User(None)
+ newuser.setValue('uid', kw['uid'])
+ newuser.setValue('givenName', kw['givenName'])
+ newuser.setValue('sn', kw['sn'])
+ newuser.setValue('mail', kw['mail'])
+ newuser.setValue('telephoneNumber', kw['telephoneNumber'])
+ newuser2 = {
+ 'uid' : kw['uid'],
+ 'givenName' : kw['givenName'],
+ 'sn' : kw['sn'],
+ 'mail' : kw['mail'],
+ 'telephoneNumber': kw['telephoneNumber']
+ }
+ rv = client.add_user(newuser2)
+ turbogears.flash("%s added!" % kw['uid'])
+ raise turbogears.redirect('/usershow', uid=kw['uid'])
+ except xmlrpclib.Fault, f:
+ turbogears.flash("User add failed: " + str(f.faultString))
+ return dict(form=user_form, tg_template='ipagui.templates.usernew')
+
+
+ @expose("ipagui.templates.useredit")
+ def useredit(self, uid, tg_errors=None):
+ """Displays the edit user form"""
+ if tg_errors:
+ turbogears.flash("There was a problem with the form!")
+
+ # user = ipa.rpcclient.get_user(uid)
+ user = client.get_user(uid)
+ return dict(form=user_form, user=user_to_hash(user))
+
+ @expose()
+ def userupdate(self, **kw):
+ """Updates an existing user"""
+ restrict_post()
+ if kw.get('submit') == 'Cancel':
+ turbogears.flash("Edit user cancelled")
+ raise turbogears.redirect('/usershow', uid=kw.get('uid'))
+
+ tg_errors, kw = self.uservalidate(**kw)
+ if tg_errors:
+ return dict(form=user_form, user={}, tg_template='ipagui.templates.useredit')
+
+ try:
+ # rv = ipa.rpcclient.add_user(kw)
+ turbogears.flash("%s updated!" % kw['uid'])
+ raise turbogears.redirect('/usershow', uid=kw['uid'])
+ except xmlrpclib.Fault, f:
+ turbogears.flash("User add failed: " + str(f.faultString))
+ return dict(form=user_form, user={}, tg_template='ipagui.templates.useredit')
+
+
+ @expose("ipagui.templates.userlist")
+ @paginate('users', limit=3, allow_limit_override=True)
+ def userlist(self):
+ """Retrieve a list of all users and display them in one huge list"""
+ # users = ipa.rpcclient.get_all_users()
+ users = client.get_all_users()
+ return dict(users=users)
+
+
+ @expose("ipagui.templates.usershow")
+ def usershow(self, uid):
+ """Retrieve a single user for display"""
+ try:
+ # user = ipa.rpcclient.get_user(uid)
+ user = client.get_user(uid)
+ return dict(user=user_to_hash(user))
+ except xmlrpclib.Fault, f:
+ turbogears.flash("User show failed: " + str(f.faultString))
+ raise turbogears.redirect("/")
+
+ @validate(form=user_form)
+ def uservalidate(self, tg_errors=None, **kw):
+ return tg_errors, kw
+
+ @expose()
+ def userindex(self):
+ raise turbogears.redirect("/userlist")
+
+
+ #########
+ # Group #
+ #########
+
+ @expose("ipagui.templates.groupindex")
+ def groupindex(self, tg_errors=None):
+ return dict()
+
+
+ ############
+ # Resource #
+ ############
+
+ @expose("ipagui.templates.resindex")
+ def resindex(self, tg_errors=None):
+ return dict()