entities/lib.py
changeset 3230 1d25e928c299
parent 2828 306fe72bfd07
parent 3217 1980e9386161
child 3377 dd9d292b6a6d
equal deleted inserted replaced
3199:fc63b80ec979 3230:1d25e928c299
     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()