8 __docformat__ = "restructuredtext en" |
8 __docformat__ = "restructuredtext en" |
9 |
9 |
10 from urlparse import urlsplit, urlunsplit |
10 from urlparse import urlsplit, urlunsplit |
11 from datetime import datetime |
11 from datetime import datetime |
12 |
12 |
13 from logilab.common.decorators import cached |
13 from logilab.common.deprecation import deprecated |
14 |
14 |
15 from cubicweb import UnknownProperty |
15 from cubicweb import UnknownProperty |
16 from cubicweb.entity import _marker |
16 from cubicweb.entity import _marker |
17 from cubicweb.entities import AnyEntity, fetch_config |
17 from cubicweb.entities import AnyEntity, fetch_config |
18 |
18 |
23 return address |
23 return address |
24 return '%s at %s' % (name, host.replace('.', ' dot ')) |
24 return '%s at %s' % (name, host.replace('.', ' dot ')) |
25 |
25 |
26 class EmailAddress(AnyEntity): |
26 class EmailAddress(AnyEntity): |
27 id = 'EmailAddress' |
27 id = 'EmailAddress' |
28 fetch_attrs, fetch_order = fetch_config(['address', 'alias', 'canonical']) |
28 fetch_attrs, fetch_order = fetch_config(['address', 'alias']) |
29 |
29 |
30 def dc_title(self): |
30 def dc_title(self): |
31 if self.alias: |
31 if self.alias: |
32 return '%s <%s>' % (self.alias, self.display_address()) |
32 return '%s <%s>' % (self.alias, self.display_address()) |
33 return self.display_address() |
33 return self.display_address() |
34 |
34 |
35 @property |
35 @property |
36 def email_of(self): |
36 def email_of(self): |
37 return self.reverse_use_email and self.reverse_use_email[0] |
37 return self.reverse_use_email and self.reverse_use_email[0] |
38 |
38 |
39 @cached |
39 @property |
|
40 def prefered(self): |
|
41 return self.prefered_form and self.prefered_form[0] or self |
|
42 |
|
43 @deprecated('use .prefered') |
40 def canonical_form(self): |
44 def canonical_form(self): |
41 if self.canonical: |
45 return self.prefered_form and self.prefered_form[0] or self |
42 return self |
|
43 rql = 'EmailAddress X WHERE X identical_to Y, X canonical TRUE, Y eid %(y)s' |
|
44 cnrset = self.req.execute(rql, {'y': self.eid}, 'y') |
|
45 if cnrset: |
|
46 return cnrset.get_entity(0, 0) |
|
47 return None |
|
48 |
46 |
49 def related_emails(self, skipeids=None): |
47 def related_emails(self, skipeids=None): |
50 # XXX move to eemail |
48 # XXX move to eemail |
51 # check email relations are in the schema first |
49 # check email relations are in the schema first |
52 subjrels = self.e_schema.object_relations() |
50 subjrels = self.e_schema.object_relations() |