summaryrefslogtreecommitdiffstats
path: root/ipa_webui
diff options
context:
space:
mode:
authorJason Gerard DeRose <jderose@redhat.com>2008-10-06 09:37:22 -0600
committerJason Gerard DeRose <jderose@redhat.com>2008-10-06 09:37:22 -0600
commitd38dcb6d39c87e2a35d94e86162a1d870fb1b2bc (patch)
tree6e1d3e9a1b812a4d11b6161a7ef5a4efdc18d144 /ipa_webui
parent3ffbaac64cc3a9ab704c707112f59e041986576c (diff)
downloadfreeipa-d38dcb6d39c87e2a35d94e86162a1d870fb1b2bc.tar.gz
freeipa-d38dcb6d39c87e2a35d94e86162a1d870fb1b2bc.tar.xz
freeipa-d38dcb6d39c87e2a35d94e86162a1d870fb1b2bc.zip
Added basic skeleton in ipa_webui; added new webui-cherry.py script
Diffstat (limited to 'ipa_webui')
-rw-r--r--ipa_webui/__init__.py24
-rw-r--r--ipa_webui/controller.py41
-rw-r--r--ipa_webui/templates/__init__.py21
-rw-r--r--ipa_webui/templates/main.kid12
-rw-r--r--ipa_webui/tests/__init__.py21
-rw-r--r--ipa_webui/tests/test_controllers.py71
6 files changed, 190 insertions, 0 deletions
diff --git a/ipa_webui/__init__.py b/ipa_webui/__init__.py
new file mode 100644
index 00000000..d0b43301
--- /dev/null
+++ b/ipa_webui/__init__.py
@@ -0,0 +1,24 @@
+# Authors: Jason Gerard DeRose <jderose@redhat.com>
+#
+# Copyright (C) 2008 Red Hat
+# see file 'COPYING' for use and warranty information
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; version 2 only
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+"""
+IPA web-based user interface.
+"""
+
+import kid
+kid.enable_import()
diff --git a/ipa_webui/controller.py b/ipa_webui/controller.py
new file mode 100644
index 00000000..f0d627ec
--- /dev/null
+++ b/ipa_webui/controller.py
@@ -0,0 +1,41 @@
+# Authors: Jason Gerard DeRose <jderose@redhat.com>
+#
+# Copyright (C) 2008 Red Hat
+# see file 'COPYING' for use and warranty information
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; version 2 only
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+"""
+Controller classes.
+"""
+
+from ipalib.plugable import ReadOnly
+
+
+class Controller(ReadOnly):
+ def __init__(self, cmd, template):
+ self.cmd = cmd
+ self.template = template
+
+ def serialize(self, **kw):
+ return self.template.serialize(
+ output='xhtml-strict',
+ format='pretty+nice',
+ **kw
+ )
+
+ def __call__(self, **kw):
+ return self.serialize(
+ result=self.cmd(**kw),
+ )
diff --git a/ipa_webui/templates/__init__.py b/ipa_webui/templates/__init__.py
new file mode 100644
index 00000000..710dbb2e
--- /dev/null
+++ b/ipa_webui/templates/__init__.py
@@ -0,0 +1,21 @@
+# Authors: Jason Gerard DeRose <jderose@redhat.com>
+#
+# Copyright (C) 2008 Red Hat
+# see file 'COPYING' for use and warranty information
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; version 2 only
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+"""
+Kid templates.
+"""
diff --git a/ipa_webui/templates/main.kid b/ipa_webui/templates/main.kid
new file mode 100644
index 00000000..2eee036c
--- /dev/null
+++ b/ipa_webui/templates/main.kid
@@ -0,0 +1,12 @@
+<?xml version='1.0' encoding='utf-8'?>
+<html xmlns:py="http://purl.org/kid/ns#">
+
+<head>
+ <title>Hello</title>
+</head>
+
+<body>
+ <div>Hello</div>
+</body>
+
+</html>
diff --git a/ipa_webui/tests/__init__.py b/ipa_webui/tests/__init__.py
new file mode 100644
index 00000000..c0647132
--- /dev/null
+++ b/ipa_webui/tests/__init__.py
@@ -0,0 +1,21 @@
+# Authors: Jason Gerard DeRose <jderose@redhat.com>
+#
+# Copyright (C) 2008 Red Hat
+# see file 'COPYING' for use and warranty information
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; version 2 only
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+"""
+Test the `ipa_webui` package.
+"""
diff --git a/ipa_webui/tests/test_controllers.py b/ipa_webui/tests/test_controllers.py
new file mode 100644
index 00000000..71e5c0e2
--- /dev/null
+++ b/ipa_webui/tests/test_controllers.py
@@ -0,0 +1,71 @@
+# Authors: Jason Gerard DeRose <jderose@redhat.com>
+#
+# Copyright (C) 2008 Red Hat
+# see file 'COPYING' for use and warranty information
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; version 2 only
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+"""
+Test the `ipa_webui.controller` module.
+"""
+
+from ipa_webui import controller
+
+
+class test_Controller(object):
+ """
+ Test the `controller.Controller` class.
+ """
+
+ def test_init(self):
+ """
+ Test the `ipa_webui.controller.Controller.__init__()` method.
+ """
+ cmd = 'The command.'
+ template = 'The template.'
+ o = controller.Controller(cmd, template)
+ assert o.cmd is cmd
+ assert o.template is template
+
+ def test_serialize(self):
+ """
+ Test the `ipa_webui.controller.Controller.serialize` method.
+ """
+ class Template(object):
+ def __init__(self):
+ self.calls = 0
+ self.kw = {}
+
+ def serialize(self, **kw):
+ self.calls += 1
+ self.kw = kw
+ return dict(kw)
+
+ d = dict(output='xhtml-strict', format='pretty+nice')
+ t = Template()
+ o = controller.Controller(None, t)
+ assert o.serialize() == d
+ assert t.calls == 1
+
+ def test_call(self):
+ """
+ Test the `ipa_webui.controller.Controller.__call__` method.
+ """
+ class Template(object):
+ def serialize(self, **kw):
+ return 'Your login is %s.' % kw['result']
+ def cmd(**kw):
+ return kw['first'][0] + kw['last']
+ o = controller.Controller(cmd, Template())
+ assert o(first='John', last='Doe') == 'Your login is JDoe.'