diff options
Diffstat (limited to 'app/presenters/clusterable_presenter.rb')
-rw-r--r-- | app/presenters/clusterable_presenter.rb | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/app/presenters/clusterable_presenter.rb b/app/presenters/clusterable_presenter.rb new file mode 100644 index 00000000000..c857d57b003 --- /dev/null +++ b/app/presenters/clusterable_presenter.rb @@ -0,0 +1,30 @@ +# frozen_string_literal: true + +class ClusterablePresenter < Gitlab::View::Presenter::Delegated + presents :clusterable + + def self.fabricate(clusterable, **attributes) + presenter_class = "#{clusterable.class.name}ClusterablePresenter".constantize + attributes_with_presenter_class = attributes.merge(presenter_class: presenter_class) + + Gitlab::View::Presenter::Factory + .new(clusterable, attributes_with_presenter_class) + .fabricate! + end + + def can_create_cluster? + can?(current_user, :create_cluster, clusterable) + end + + def index_path + raise NotImplementedError + end + + def new_path + raise NotImplementedError + end + + def clusterable_params + raise NotImplementedError + end +end |