Commit 7ad294ee9f70b846847a4f763ba7b2e82c24e410
1 parent
4cbb0d67
Exists in
master
and in
23 other branches
[Mezuro] Feature of create a configuration based on a old one
Showing
5 changed files
with
58 additions
and
28 deletions
Show diff stats
plugins/mezuro/lib/kalibro/configuration.rb
| ... | ... | @@ -22,10 +22,11 @@ class Kalibro::Configuration < Kalibro::Model |
| 22 | 22 | new request("Configuration", :get_configuration, {:configuration_name => configuration_name})[:configuration] |
| 23 | 23 | end |
| 24 | 24 | |
| 25 | - def self.create(content) | |
| 26 | - attributes = { | |
| 27 | - :name => content.name, | |
| 28 | - :description => content.description | |
| 25 | + def self.create(content, configuration) | |
| 26 | + attributes = { | |
| 27 | + :name => content.name, | |
| 28 | + :description => content.description, | |
| 29 | + :metric_configuration => configuration.to_hash[:metric_configuration] | |
| 29 | 30 | } |
| 30 | 31 | super attributes |
| 31 | 32 | end |
| ... | ... | @@ -34,7 +35,13 @@ class Kalibro::Configuration < Kalibro::Model |
| 34 | 35 | request("Configuration", :get_configuration_names)[:configuration_name] |
| 35 | 36 | end |
| 36 | 37 | |
| 37 | - def destroy | |
| 38 | + def destroy | |
| 38 | 39 | self.class.request("Configuration", :remove_configuration, {:configuration_name => name}) |
| 39 | 40 | end |
| 41 | + | |
| 42 | + def update_attributes(attributes={}) | |
| 43 | + attributes.each { |field, value| send("#{field}=", value) if self.class.is_valid?(field) } | |
| 44 | + save | |
| 45 | + end | |
| 46 | + | |
| 40 | 47 | end | ... | ... |
plugins/mezuro/lib/mezuro_plugin/configuration_content.rb
| ... | ... | @@ -9,7 +9,7 @@ class MezuroPlugin::ConfigurationContent < Article |
| 9 | 9 | 'Sets of thresholds to interpret metrics' |
| 10 | 10 | end |
| 11 | 11 | |
| 12 | - settings_items :description | |
| 12 | + settings_items :description, :clone_configuration_name | |
| 13 | 13 | |
| 14 | 14 | include ActionView::Helpers::TagHelper |
| 15 | 15 | def to_html(options = {}) |
| ... | ... | @@ -20,21 +20,20 @@ class MezuroPlugin::ConfigurationContent < Article |
| 20 | 20 | |
| 21 | 21 | def configuration |
| 22 | 22 | begin |
| 23 | - configuration = Kalibro::Configuration.find_by_name(self.name) | |
| 24 | - configuration.description = self.description | |
| 25 | - configuration | |
| 26 | - rescue Exception | |
| 27 | - Kalibro::Configuration.new({ | |
| 28 | - :name => self.name, | |
| 29 | - :description => self.description | |
| 30 | - }) | |
| 23 | + @configuration ||= Kalibro::Configuration.find_by_name(self.name) | |
| 24 | + rescue Exception => error | |
| 25 | + errors.add_to_base(error.message) | |
| 26 | + nil | |
| 31 | 27 | end |
| 32 | 28 | end |
| 33 | - | |
| 29 | + | |
| 34 | 30 | def metric_configurations |
| 35 | 31 | configuration.metric_configurations |
| 36 | 32 | end |
| 37 | - | |
| 33 | + | |
| 34 | + def configuration_names | |
| 35 | + ["None"] + Kalibro::Configuration.all_names.sort | |
| 36 | + end | |
| 38 | 37 | |
| 39 | 38 | after_save :send_configuration_to_service |
| 40 | 39 | after_destroy :remove_configuration_from_service |
| ... | ... | @@ -42,8 +41,7 @@ class MezuroPlugin::ConfigurationContent < Article |
| 42 | 41 | private |
| 43 | 42 | |
| 44 | 43 | def validate_kalibro_configuration_name |
| 45 | - existing = Kalibro::Configuration.all_names | |
| 46 | - existing.each { |a| a.downcase!} | |
| 44 | + existing = configuration_names.map { |a| a.downcase} | |
| 47 | 45 | |
| 48 | 46 | if existing.include?(name.downcase) |
| 49 | 47 | errors.add_to_base("Configuration name already exists in Kalibro") |
| ... | ... | @@ -51,11 +49,24 @@ class MezuroPlugin::ConfigurationContent < Article |
| 51 | 49 | end |
| 52 | 50 | |
| 53 | 51 | def send_configuration_to_service |
| 54 | - configuration.save | |
| 52 | + if configuration.nil? | |
| 53 | + begin | |
| 54 | + clone_configuration = Kalibro::Configuration.find_by_name(self.clone_configuration_name) | |
| 55 | + rescue Exception => error | |
| 56 | + clone_configuration = nil | |
| 57 | + end | |
| 58 | + Kalibro::Configuration.create(self, clone_configuration) | |
| 59 | + else | |
| 60 | + configuration.update_attributes({:description => description}) | |
| 61 | + end | |
| 55 | 62 | end |
| 56 | 63 | |
| 57 | 64 | def remove_configuration_from_service |
| 58 | - configuration.destroy | |
| 65 | + begin | |
| 66 | + configuration.destroy | |
| 67 | + rescue Exception => error | |
| 68 | + errors.add_to_base(error.message) | |
| 69 | + end | |
| 59 | 70 | end |
| 60 | 71 | |
| 61 | 72 | end | ... | ... |
plugins/mezuro/test/unit/mezuro_plugin/configuration_content_test.rb
plugins/mezuro/views/cms/mezuro_plugin/_configuration_content.html.erb
| 1 | 1 | <h1> <%= _(MezuroPlugin::ConfigurationContent.short_description) %> </h1> |
| 2 | 2 | |
| 3 | 3 | <% |
| 4 | -begin | |
| 5 | - @configuration = @article.title.nil? ? nil : Kalibro::Configuration.find_by_name(@article.title) | |
| 6 | -rescue | |
| 7 | - @configuration = nil | |
| 8 | -end | |
| 4 | + begin | |
| 5 | + configuration = @article.title.nil? ? nil : @article.configuration | |
| 6 | + rescue | |
| 7 | + configuration = nil | |
| 8 | + end | |
| 9 | 9 | %> |
| 10 | 10 | |
| 11 | 11 | <%= error_messages_for 'kalibro_configuration' %> |
| ... | ... | @@ -13,8 +13,20 @@ end |
| 13 | 13 | <%= hidden_field_tag 'kalibro_configuration[profile_id]', profile.id %> |
| 14 | 14 | <%= hidden_field_tag 'id', @article.id %> |
| 15 | 15 | |
| 16 | +<% configuration_names = @article.configuration_names %> | |
| 17 | + | |
| 18 | +<% selected = (configuration.nil? ? configuration_names[0] : @article.clone_configuration_name) %> | |
| 19 | + | |
| 16 | 20 | <%= required_fields_message %> |
| 17 | 21 | |
| 18 | -<%= required f.text_field(:name, :disabled => !(@configuration.nil? || @article.id.nil?)) %> | |
| 22 | +<%= required labelled_form_field _('Clone Configuration'), | |
| 23 | +if !configuration.nil? && !@article.id.nil? | |
| 24 | + f.select(:clone_configuration_name, configuration_names, {:selected => selected}, :disabled => 'true') | |
| 25 | +else | |
| 26 | + f.select(:clone_configuration_name, configuration_names, {:selected => selected}) | |
| 27 | +end %> | |
| 28 | +<br/> | |
| 29 | + | |
| 30 | +<%= required f.text_field(:name, :disabled => !(configuration.nil? || @article.id.nil?)) %> | |
| 19 | 31 | |
| 20 | 32 | <%= f.text_field :description %><br/> | ... | ... |
plugins/mezuro/views/content_viewer/show_configuration.rhtml