42 @property |
42 @property |
43 def groups(self): |
43 def groups(self): |
44 try: |
44 try: |
45 return self._groups |
45 return self._groups |
46 except AttributeError: |
46 except AttributeError: |
47 self._groups = set(g.cwdb.name for g in self.cwdb.in_group) |
47 self._groups = set(g.name for g in self.in_group) |
48 return self._groups |
48 return self._groups |
49 |
49 |
50 @property |
50 @property |
51 def properties(self): |
51 def properties(self): |
52 try: |
52 try: |
53 return self._properties |
53 return self._properties |
54 except AttributeError: |
54 except AttributeError: |
55 self._properties = dict((p.cwdb.pkey, p.cwdb.value) |
55 self._properties = dict((p.pkey, p.value) for p in self.reverse_for_user) |
56 for p in self.cwdb.reverse_for_user) |
|
57 return self._properties |
56 return self._properties |
58 |
57 |
59 def property_value(self, key): |
58 def property_value(self, key): |
60 try: |
59 try: |
61 # properties stored on the user aren't correctly typed |
60 # properties stored on the user aren't correctly typed |
62 # (e.g. all values are unicode string) |
61 # (e.g. all values are unicode string) |
63 return self.vreg.typed_value(key, self.properties[key]) |
62 return self.vreg.typed_value(key, self.properties[key]) |
64 except KeyError: |
63 except KeyError: |
65 pass |
64 pass |
66 except ValueError: |
65 except ValueError: |
67 self.warning('incorrect value for property %s of user %s', key, |
66 self.warning('incorrect value for eproperty %s of user %s', key, self.login) |
68 self.cwdb.login) |
|
69 return self.vreg.property_value(key) |
67 return self.vreg.property_value(key) |
70 |
68 |
71 def matching_groups(self, groups): |
69 def matching_groups(self, groups): |
72 """return the number of the given group(s) in which the user is |
70 """return the number of the given group(s) in which the user is |
73 |
71 |
122 |
120 |
123 # presentation utilities ################################################## |
121 # presentation utilities ################################################## |
124 |
122 |
125 def name(self): |
123 def name(self): |
126 """construct a name using firstname / surname or login if not defined""" |
124 """construct a name using firstname / surname or login if not defined""" |
127 surname = self.get_value('surname') |
125 |
128 firstname = self.get_value('firstname') |
126 if self.firstname and self.surname: |
129 if firstname and surname: |
|
130 return self.req._('%(firstname)s %(surname)s') % { |
127 return self.req._('%(firstname)s %(surname)s') % { |
131 'firstname': firstname, 'surname' : surname} |
128 'firstname': self.firstname, 'surname' : self.surname} |
132 if firstname or surname: |
129 if self.firstname: |
133 return surname or firstname |
130 return self.firstname |
134 return self.get_value('login') |
131 return self.login |
135 |
132 |
136 def dc_title(self): |
133 def dc_title(self): |
137 return self.get_value('login') |
134 return self.login |
138 |
135 |
139 dc_long_title = name |
136 dc_long_title = name |
140 |
137 |
141 def db_key_name(self): |
138 def db_key_name(self): |
142 """XXX goa specific""" |
139 """XXX goa specific""" |