Skip to content

Commit

Permalink
Introduce the models for clear and favor events
Browse files Browse the repository at this point in the history
  • Loading branch information
danidoni committed Sep 28, 2023
1 parent e560814 commit 47780b7
Show file tree
Hide file tree
Showing 4 changed files with 61 additions and 0 deletions.
15 changes: 15 additions & 0 deletions src/api/app/models/decision.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,21 @@ class Decision < ApplicationRecord
cleared: 0,
favor: 1
}

after_create :create_event

def create_event
case kind
when 'cleared'
Event::ClearedDecision.create(event_parameters)
else
Event::FavoredDecision.create(event_parameters)
end
end

def event_parameters
{ id: id, moderator_id: moderator.id, reason: reason }
end
end

# == Schema Information
Expand Down
22 changes: 22 additions & 0 deletions src/api/app/models/event/base.rb
Original file line number Diff line number Diff line change
Expand Up @@ -273,6 +273,28 @@ def moderators
User.admins.or(User.staff)
end

def reporters
decision = Decision.find(payload['id'])
decision.reports.map(&:user)
end

def offenders
decision = Decision.find(payload['id'])
reportables = decision.reports.map(&:reportable)
reportables.map do |reportable|
case reportable
when Package, Project
reportable.maintainers
when User
reportable
when BsRequest
User.find_by(login: reportable.creator)
when Comment
reportable.user
end
end
end

def _roles(role, project, package = nil)
return [] unless project

Expand Down
12 changes: 12 additions & 0 deletions src/api/app/models/event/cleared_decision.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
module Event
class ClearedDecision < Base
receiver_roles :reporter
self.description = 'Reported content has been cleared'

payload_keys :id, :reason, :moderator_id

def parameters_for_notification
super.merge(notifiable_type: 'Decision')
end
end
end
12 changes: 12 additions & 0 deletions src/api/app/models/event/favored_decision.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
module Event
class FavoredDecision < Base
receiver_roles :reporter, :offender
self.description = 'Reported content has been favored'

payload_keys :id, :reason, :moderator_id

def parameters_for_notification
super.merge(notifiable_type: 'Decision')
end
end
end

0 comments on commit 47780b7

Please sign in to comment.