"""Specific views for email addresses entities:organization: Logilab:copyright: 2001-2008 LOGILAB S.A. (Paris, FRANCE), all rights reserved.:contact: http://www.logilab.fr/ -- mailto:contact@logilab.fr"""__docformat__="restructuredtext en"fromlogilab.mtconverterimporthtml_escapefromcubicweb.commonimportUnauthorizedfromcubicweb.web.viewsimportbaseviewsclassEmailAddressPrimaryView(baseviews.PrimaryView):accepts=('EmailAddress',)defcell_call(self,row,col,skipeids=None):self.skipeids=skipeidssuper(EmailAddressPrimaryView,self).cell_call(row,col)defrender_entity_attributes(self,entity,siderelations):self.w(u'<h3>')entity.view('oneline',w=self.w)ifnotentity.canonical:canonemailaddr=entity.canonical_form()ifcanonemailaddr:self.w(u' (<i>%s</i>)'%canonemailaddr.view('oneline'))self.w(u'</h3>')elifentity.identical_to:self.w(u'</h3>')identicaladdr=[e.view('oneline')foreinentity.identical_to]self.field('identical_to',', '.join(identicaladdr))else:self.w(u'</h3>')try:persons=entity.reverse_primary_emailexceptUnauthorized:persons=[]ifpersons:emailof=persons[0]self.field(display_name(self.req,'primary_email','object'),emailof.view('oneline'))pemaileid=emailof.eidelse:pemaileid=Nonetry:emailof='use_email'inself.schemaandentity.reverse_use_emailor()emailof=[eforeinemailofifnote.eid==pemaileid]exceptUnauthorized:emailof=[]ifemailof:emailofstr=', '.join(e.view('oneline')foreinemailof)self.field(display_name(self.req,'use_email','object'),emailofstr)defrender_entity_relations(self,entity,siderelations):fori,emailinenumerate(entity.related_emails(self.skipeids)):self.w(u'<div class="%s">'%(i%2and'even'or'odd'))email.view('oneline',w=self.w,contexteid=entity.eid)self.w(u'</div>')classEmailAddressShortPrimaryView(EmailAddressPrimaryView):accepts=('EmailAddress',)id='shortprimary'title=None# hidden viewdefrender_entity_attributes(self,entity,siderelations):self.w(u'<h5>')entity.view('oneline',w=self.w)self.w(u'</h5>')classEmailAddressOneLineView(baseviews.OneLineView):accepts=('EmailAddress',)defcell_call(self,row,col,**kwargs):entity=self.entity(row,col)ifentity.reverse_primary_email:self.w(u'<b>')ifentity.alias:self.w(u'%s <'%html_escape(entity.alias))self.w('<a href="%s">%s</a>'%(html_escape(entity.absolute_url()),html_escape(entity.display_address())))ifentity.alias:self.w(u'>\n')ifentity.reverse_primary_email:self.w(u'</b>')classEmailAddressMailToView(baseviews.OneLineView):"""A one line view that builds a user clickable URL for an email with 'mailto:'"""id='mailto'accepts=('EmailAddress',)defcell_call(self,row,col,**kwargs):entity=self.entity(row,col)ifentity.reverse_primary_email:self.w(u'<b>')ifentity.alias:mailto=u'%s <%s>'%(entity.alias,entity.display_address())elifentity.reverse_use_email:mailto="mailto:%s <%s>"% \(entity.reverse_use_email[0].dc_title(),entity.display_address())else:mailto="mailto:%s"%entity.display_address()self.w(u'<a href="%s">%s</a>'%(html_escape(mailto),html_escape(entity.display_address())))ifentity.alias:self.w(u'>\n')ifentity.reverse_primary_email:self.w(u'</b>')classEmailAddressTextView(baseviews.TextView):accepts=('EmailAddress',)defcell_call(self,row,col,**kwargs):self.w(self.entity(row,col).display_address())