3b5872408aeb67aa4c978e5cb751a73a2fba737f
[cascardo/ipsilon.git] / ipsilon / util / user.py
1 #!/usr/bin/python
2 #
3 # Copyright (C) 2013  Simo Sorce <simo@redhat.com>
4 #
5 # see file 'COPYING' for use and warranty information
6 #
7 # This program is free software; you can redistribute it and/or modify
8 # it under the terms of the GNU General Public License as published by
9 # the Free Software Foundation, either version 3 of the License, or
10 # (at your option) any later version.
11 #
12 # This program is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 # GNU General Public License for more details.
16 #
17 # You should have received a copy of the GNU General Public License
18 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
19
20 from ipsilon.util.data import Store
21
22 class Site(object):
23     def __init__(self, value):
24         # implement lookup of sites id for link/name
25         self.link = value
26         self.name = value
27
28 class User(object):
29     def __init__(self, username):
30         if username is None:
31             self.name = None
32             self._userdata = dict()
33         else:
34             self._userdata = self._get_user_data(username)
35             self.name = username
36
37     def _get_user_data(self, username):
38         store = Store()
39         return store._get_user_preferences(username)
40
41     @property
42     def is_admin(self):
43         if 'is_admin' in self._userdata:
44             if self._userdata['is_admin'] == '1':
45                 return True
46         return False
47
48     @is_admin.setter
49     def is_admin(self, value):
50         if value is True:
51             self._userdata['is_admin'] = '1'
52         else:
53             self._userdata['is_admin'] = '0'
54
55     @property
56     def fullname(self):
57         if 'fullname' in self._userdata:
58             return self._userdata['fullname']
59         else:
60             return self.name
61
62     @fullname.setter
63     def fullname(self, value):
64         self._userdata['fullname'] = value
65
66     @property
67     def sites(self):
68         if 'sites' in self._userdata:
69             d = []
70             for site in self._userdata['sites']:
71                 d.append(Site(site))
72         else:
73             return []
74
75     @sites.setter
76     def sites(self):
77         #TODO: implement setting sites via the user object ?
78         raise AttributeError
79