sobjects/notification.py
changeset 2818 326375561412
parent 2789 39712da6f397
child 2841 107ba1c45227
equal deleted inserted replaced
2817:0313eecc707e 2818:326375561412
    40     __select__ = yes()
    40     __select__ = yes()
    41     user_rql = ('Any X,E,A WHERE X is CWUser, X in_state S, S name "activated",'
    41     user_rql = ('Any X,E,A WHERE X is CWUser, X in_state S, S name "activated",'
    42                 'X primary_email E, E address A')
    42                 'X primary_email E, E address A')
    43 
    43 
    44     def recipients(self):
    44     def recipients(self):
    45         mode = self.config['default-recipients-mode']
    45         mode = self.req.vreg.config['default-recipients-mode']
    46         if mode == 'users':
    46         if mode == 'users':
    47             # use unsafe execute else we may don't have the right to see users
    47             # use unsafe execute else we may don't have the right to see users
    48             # to notify...
    48             # to notify...
    49             execute = self.req.unsafe_execute
    49             execute = self.req.unsafe_execute
    50             dests = [(u.get_email(), u.property_value('ui.language'))
    50             dests = [(u.get_email(), u.property_value('ui.language'))
    51                      for u in execute(self.user_rql, build_descr=True, propagate=True).entities()]
    51                      for u in execute(self.user_rql, build_descr=True, propagate=True).entities()]
    52         elif mode == 'default-dest-addrs':
    52         elif mode == 'default-dest-addrs':
    53             lang = self.vreg.property_value('ui.language')
    53             lang = self.vreg.property_value('ui.language')
    54             dests = zip(self.config['default-dest-addrs'], repeat(lang))
    54             dests = zip(self.req.vreg.config['default-dest-addrs'], repeat(lang))
    55         else: # mode == 'none'
    55         else: # mode == 'none'
    56             dests = []
    56             dests = []
    57         return dests
    57         return dests
    58 
    58 
    59 
    59 
   169 
   169 
   170     def cell_call(self, row, col=0, **kwargs):
   170     def cell_call(self, row, col=0, **kwargs):
   171         self.w(self.req._(self.content) % self.context(**kwargs))
   171         self.w(self.req._(self.content) % self.context(**kwargs))
   172 
   172 
   173     def construct_message_id(self, eid):
   173     def construct_message_id(self, eid):
   174         return construct_message_id(self.config.appid, eid, self.msgid_timestamp)
   174         return construct_message_id(self.req.vreg.config.appid, eid, self.msgid_timestamp)
   175 
   175 
   176     def render_and_send(self, **kwargs):
   176     def render_and_send(self, **kwargs):
   177         """generate and send an email message for this view"""
   177         """generate and send an email message for this view"""
   178         self._kwargs = kwargs
   178         self._kwargs = kwargs
   179         recipients = self.recipients()
   179         recipients = self.recipients()
   209             # XXX call render before subject to set .row/.col attributes on the
   209             # XXX call render before subject to set .row/.col attributes on the
   210             #     view
   210             #     view
   211             content = self.render(row=0, col=0, **kwargs)
   211             content = self.render(row=0, col=0, **kwargs)
   212             subject = self.subject()
   212             subject = self.subject()
   213             msg = format_mail(userdata, [emailaddr], content, subject,
   213             msg = format_mail(userdata, [emailaddr], content, subject,
   214                               config=self.config, msgid=msgid, references=refs)
   214                               config=self.req.vreg.config, msgid=msgid, references=refs)
   215             self.send([emailaddr], msg)
   215             self.send([emailaddr], msg)
   216         # restore language
   216         # restore language
   217         self.req.set_language(origlang)
   217         self.req.set_language(origlang)
   218 
   218 
   219     def send(self, recipients, msg):
   219     def send(self, recipients, msg):