liquid_feedback_frontend

diff model/event.lua @ 1248:c0fd12b97d65

Changes on notifications system, newsletter support added
author bsw
date Tue Apr 05 20:40:37 2016 +0200 (2016-04-05)
parents dafce7add549
children 84f6e17c7ceb
line diff
     1.1 --- a/model/event.lua	Wed Jan 27 11:16:26 2016 +0100
     1.2 +++ b/model/event.lua	Tue Apr 05 20:40:37 2016 +0200
     1.3 @@ -51,12 +51,12 @@
     1.4  function Event.object:send_notification()
     1.5    
     1.6    local members_to_notify = Member:new_selector()
     1.7 -    :join("event_seen_by_member", nil, { "event_seen_by_member.seen_by_member_id = member.id AND event_seen_by_member.notify_level <= member.notify_level AND event_seen_by_member.id = ?", self.id } )
     1.8 -    :add_where("member.activated NOTNULL AND member.notify_email NOTNULL")
     1.9 +    :join("event_for_notification", nil, { "event_for_notification.recipient_id = member.id AND event_for_notification.id = ?", self.id } )
    1.10 +    --:add_where("member.activated NOTNULL AND member.notify_email NOTNULL")
    1.11      -- SAFETY FIRST, NEVER send notifications for events more then 3 days in past or future
    1.12 -    :add_where("now() - event_seen_by_member.occurrence BETWEEN '-3 days'::interval AND '3 days'::interval")
    1.13 +    :add_where("now() - event_for_notification.occurrence BETWEEN '-3 days'::interval AND '3 days'::interval")
    1.14      -- do not notify a member about the events caused by the member
    1.15 -    :add_where("event_seen_by_member.member_id ISNULL OR event_seen_by_member.member_id != member.id")
    1.16 +    :add_where("event_for_notification.member_id ISNULL OR event_for_notification.member_id != member.id")
    1.17      :exec()
    1.18      
    1.19    io.stderr:write("Sending notifications for event " .. self.id .. " to " .. (#members_to_notify) .. " members\n")
    1.20 @@ -71,32 +71,22 @@
    1.21        { lang = member.lang or config.default_lang or 'en' },
    1.22        function()
    1.23  
    1.24 -	local suggestion
    1.25 -        if self.suggestion_id then
    1.26 -	  suggestion = Suggestion:by_id(self.suggestion_id)
    1.27 -	  if not suggestion then
    1.28 -	    return
    1.29 -	  end
    1.30 -	end
    1.31 -
    1.32 -	subject = config.mail_subject_prefix .. " " .. self.event_name
    1.33          body = body .. _("[event mail]      Unit: #{name}", { name = self.issue.area.unit.name }) .. "\n"
    1.34          body = body .. _("[event mail]      Area: #{name}", { name = self.issue.area.name }) .. "\n"
    1.35          body = body .. _("[event mail]     Issue: ##{id}", { id = self.issue_id }) .. "\n\n"
    1.36          body = body .. _("[event mail]    Policy: #{policy}", { policy = self.issue.policy.name }) .. "\n\n"
    1.37 -        body = body .. _("[event mail]     Event: #{event}", { event = self.event_name }) .. "\n\n"
    1.38          body = body .. _("[event mail]     Phase: #{phase}", { phase = self.state_name }) .. "\n\n"
    1.39  
    1.40          if self.initiative_id then
    1.41            url = request.get_absolute_baseurl() .. "initiative/show/" .. self.initiative_id .. ".html"
    1.42 -        elseif self.suggestion_id then
    1.43 -          url = request.get_absolute_baseurl() .. "suggestion/show/" .. self.suggestion_id .. ".html"
    1.44          else
    1.45            url = request.get_absolute_baseurl() .. "issue/show/" .. self.issue_id .. ".html"
    1.46          end
    1.47          
    1.48          body = body .. _("[event mail]       URL: #{url}", { url = url }) .. "\n\n"
    1.49          
    1.50 +        local leading_initiative
    1.51 +        
    1.52          if self.initiative_id then
    1.53            local initiative = Initiative:by_id(self.initiative_id)
    1.54            body = body .. _("i#{id}: #{name}", { id = initiative.id, name = initiative.name }) .. "\n\n"
    1.55 @@ -110,6 +100,9 @@
    1.56              :limit(3)
    1.57              :exec()
    1.58            for i, initiative in ipairs(initiatives) do
    1.59 +            if i == 1 then
    1.60 +              leading_initiative = initiative
    1.61 +            end
    1.62              body = body .. _("i#{id}: #{name}", { id = initiative.id, name = initiative.name }) .. "\n"
    1.63            end
    1.64            if initiative_count - 3 > 0 then
    1.65 @@ -118,10 +111,14 @@
    1.66            body = body .. "\n"
    1.67          end
    1.68          
    1.69 -        if suggestion then
    1.70 -          body = body .. _("#{name}\n\n", { name = suggestion.name })
    1.71 +        subject = config.mail_subject_prefix
    1.72 +        
    1.73 +        if self.event == "issue_state_changed" then
    1.74 +          subject = subject .. _("State of #{issue} changed to #{state} / Leading: #{initiative}", { issue = self.issue.name, state = Issue:get_state_name_for_state(self.state), initiative = leading_initiative.display_name })
    1.75 +        elseif self.event == "initiative_revoked" then
    1.76 +          subject = subject .. _("Initiative revoked: #{initiative_name}", { initiative_name = self.initiative.display_name })
    1.77          end
    1.78 -  
    1.79 +      
    1.80          local success = net.send_mail{
    1.81            envelope_from = config.mail_envelope_from,
    1.82            from          = config.mail_from,
    1.83 @@ -175,23 +172,3 @@
    1.84    end
    1.85  
    1.86  end
    1.87 -
    1.88 -function Event:send_pending_notifications()
    1.89 -  while true do
    1.90 -    if not Event:send_next_notification() then
    1.91 -      break 
    1.92 -    end
    1.93 -  end
    1.94 -end
    1.95 -
    1.96 -function Event:send_notifications_loop()
    1.97 -
    1.98 -  while true do
    1.99 -    local did_work = Event:send_next_notification()
   1.100 -    if not did_work then
   1.101 -      print "Sleeping 5 second"
   1.102 -      os.execute("sleep 5")
   1.103 -    end
   1.104 -  end
   1.105 -  
   1.106 -end
   1.107 \ No newline at end of file

Impressum / About Us