Extract common method

pull/13790/head
Javier Torres 7 years ago
parent 6adfd3fa36
commit da21d8dac0

@ -124,6 +124,14 @@ namespace :carto do
puts "Finished. Total: #{total}. Errors: #{errors}"
end
module LayersRake
def self.update_layer(layer, options, persisted)
layer.options = options
layer.user.viewer = false # To avoid validation issues
layer.save! if persisted
end
end
desc "Syncs all layers with the configuration from app_config"
task sync_basemaps_from_app_config: :environment do
include Carto::MapcappedVisualizationUpdater
@ -155,23 +163,23 @@ namespace :carto do
next unless visualization.user
begin
success = update_visualization_and_mapcap(visualization) do |vis, persisted|
# Find visualization tiled base layers
base_layers = vis.layers.select(&:tiled?)
next true unless base_layers.count.between?(1, 2) # Other kind of basemaps (e.g: plain color), skip
bottom_layer, labels_layer = base_layers.sort_by(&:order)
# Find basemap in configuration
class_name = bottom_layer.options['className']
attributes = basemaps_by_class_name[class_name]
next true unless attributes # Unknown basemap class: do nothing (e.g: custom basemap)
bottom_layer.options = attributes.except('default')
bottom_layer.user.viewer = false # To avoid validation issues
bottom_layer.save! if persisted
# Update bottom layer
LayersRake.update_layer(bottom_layer, attributes.except('default'), persisted)
# Update top layer (if present)
if labels_layer && attributes['labels']
default_labels_layer = Carto::LayerFactory.build_default_labels_layer(bottom_layer)
labels_layer.options = default_labels_layer.options
labels_layer.user.viewer = false # To avoid validation issues
labels_layer.save! if persisted
LayersRake.update_layer(labels_layer, default_labels_layer.options, persisted)
elsif labels_layer
STDERR.puts "WARN: Visualization #{vis.id} has label but basemap class #{class_name} does not"
elsif attributes['labels']

Loading…
Cancel
Save