entities/lib.py
branch3.5
changeset 3204 0b766b8a13e1
parent 2098 13aab3775af7
child 3207 2516324401dd
equal deleted inserted replaced
3200:747d17498cca 3204:0b766b8a13e1
     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()