50 lines
990 B
Ruby
50 lines
990 B
Ruby
# frozen_string_literal: true
|
|
|
|
module Summarization
|
|
class Base
|
|
def self.available_strategies
|
|
DiscoursePluginRegistry.summarization_strategies
|
|
end
|
|
|
|
def self.find_strategy(strategy_model)
|
|
available_strategies.detect { |s| s.model == strategy_model }
|
|
end
|
|
|
|
def self.selected_strategy
|
|
return if SiteSetting.summarization_strategy.blank?
|
|
|
|
find_strategy(SiteSetting.summarization_strategy)
|
|
end
|
|
|
|
def initialize(model)
|
|
@model = model
|
|
end
|
|
|
|
attr_reader :model
|
|
|
|
def can_request_summaries?(user)
|
|
user_group_ids = user.group_ids
|
|
|
|
SiteSetting.custom_summarization_allowed_groups_map.any? do |group_id|
|
|
user_group_ids.include?(group_id)
|
|
end
|
|
end
|
|
|
|
def correctly_configured?
|
|
raise NotImplemented
|
|
end
|
|
|
|
def display_name
|
|
raise NotImplemented
|
|
end
|
|
|
|
def configuration_hint
|
|
raise NotImplemented
|
|
end
|
|
|
|
def summarize(content)
|
|
raise NotImplemented
|
|
end
|
|
end
|
|
end
|