diff options
author | Simo Sorce <simo@redhat.com> | 2013-12-18 22:44:25 -0500 |
---|---|---|
committer | Simo Sorce <simo@redhat.com> | 2013-12-18 23:05:57 -0500 |
commit | ee0d1ce71d1f4883aecc426595ac86322a91260e (patch) | |
tree | d3f068d9bca5ef9ead0ca77ab3a5ae4c25c1cfbf /src/util | |
parent | 13a58ef5cb599d3e8e3a9484bd84fa6fae3f3390 (diff) | |
download | ipsilon-ee0d1ce71d1f4883aecc426595ac86322a91260e.tar.gz ipsilon-ee0d1ce71d1f4883aecc426595ac86322a91260e.tar.xz ipsilon-ee0d1ce71d1f4883aecc426595ac86322a91260e.zip |
Move template and user retrieval to page class
Signed-off-by: Simo Sorce <simo@redhat.com>
Diffstat (limited to 'src/util')
-rwxr-xr-x | src/util/page.py | 7 | ||||
-rwxr-xr-x | src/util/user.py | 79 |
2 files changed, 86 insertions, 0 deletions
diff --git a/src/util/page.py b/src/util/page.py index 4236e9f..15cbed0 100755 --- a/src/util/page.py +++ b/src/util/page.py @@ -17,6 +17,7 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. +from util import user import cherrypy def protect(): @@ -31,10 +32,12 @@ def protect(): class Page(object): def __init__(self, template_env): self._env = template_env + self.basepath = cherrypy.config.get('base.mount', "") self.username = None def __call__(self, *args, **kwargs): self.username = cherrypy.session.get('user', None) + self.user = user.User(self.username) if len(args) > 0: op = getattr(self, args[0], None) @@ -47,6 +50,10 @@ class Page(object): return self.default(*args, **kwargs) + def _template(self, *args, **kwargs): + t = self._env.get_template(args[0]) + return t.render(basepath=self.basepath, user=self.user, **kwargs) + def default(self, *args, **kwargs): raise cherrypy.HTTPError(404) diff --git a/src/util/user.py b/src/util/user.py new file mode 100755 index 0000000..1241340 --- /dev/null +++ b/src/util/user.py @@ -0,0 +1,79 @@ +#!/usr/bin/python +# +# Copyright (C) 2013 Simo Sorce <simo@redhat.com> +# +# 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, either version 3 of the License, or +# (at your option) any later version. +# +# 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, see <http://www.gnu.org/licenses/>. + +from util import data + +class Site(object): + def __init__(self, value): + # implement lookup of sites id for link/name + self.link = value + self.name = value + +class User(object): + def __init__(self, username): + if username is None: + self.name = None + self._userdata = dict() + else: + self._userdata = self._get_user_data(username) + self.name = username + + def _get_user_data(self, username): + store = data.Store() + return store._get_user_preferences(username) + + @property + def is_admin(self): + if 'is_admin' in self._userdata: + if self._userdata['is_admin'] == '1': + return True + return False + + @is_admin.setter + def is_admin(self, value): + if value is True: + self._userdata['is_admin'] = '1' + else: + self._userdata['is_admin'] = '0' + + @property + def fullname(self): + if 'fullname' in self._userdata: + return self._userdata['fullname'] + else: + return self.name + + @fullname.setter + def fullname(self, value): + self._userdata['fullname'] = value + + @property + def sites(self): + if 'sites' in self._userdata: + d = [] + for site in self._userdata['sites']: + d.append(Site(site)) + else: + return [] + + @sites.setter + def sites(self): + #TODO: implement setting sites via the user object ? + raise AttributeError + |