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.decorators import cached |
|
14 from logilab.common.deprecation import deprecated |
14 |
15 |
15 from cubicweb import UnknownProperty |
16 from cubicweb import UnknownProperty |
16 from cubicweb.entity import _marker |
17 from cubicweb.entity import _marker |
17 from cubicweb.entities import AnyEntity, fetch_config |
18 from cubicweb.entities import AnyEntity, fetch_config |
18 |
19 |
23 return address |
24 return address |
24 return '%s at %s' % (name, host.replace('.', ' dot ')) |
25 return '%s at %s' % (name, host.replace('.', ' dot ')) |
25 |
26 |
26 class EmailAddress(AnyEntity): |
27 class EmailAddress(AnyEntity): |
27 id = 'EmailAddress' |
28 id = 'EmailAddress' |
28 fetch_attrs, fetch_order = fetch_config(['address', 'alias', 'canonical']) |
29 fetch_attrs, fetch_order = fetch_config(['address', 'alias']) |
29 |
30 |
30 def dc_title(self): |
31 def dc_title(self): |
31 if self.alias: |
32 if self.alias: |
32 return '%s <%s>' % (self.alias, self.display_address()) |
33 return '%s <%s>' % (self.alias, self.display_address()) |
33 return self.display_address() |
34 return self.display_address() |
34 |
35 |
35 @property |
36 @property |
36 def email_of(self): |
37 def email_of(self): |
37 return self.reverse_use_email and self.reverse_use_email[0] |
38 return self.reverse_use_email and self.reverse_use_email[0] |
38 |
39 |
39 @cached |
40 @property |
|
41 def prefered(self): |
|
42 return self.prefered_form and self.prefered_form[0] or None |
|
43 |
|
44 @deprecated('use .prefered') |
40 def canonical_form(self): |
45 def canonical_form(self): |
41 if self.canonical: |
46 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 |
47 |
49 def related_emails(self, skipeids=None): |
48 def related_emails(self, skipeids=None): |
50 # XXX move to eemail |
49 # XXX move to eemail |
51 # check email relations are in the schema first |
50 # check email relations are in the schema first |
52 subjrels = self.e_schema.object_relations() |
51 subjrels = self.e_schema.object_relations() |