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