1
0
mirror of https://github.com/LaCasemate/fab-manager.git synced 2025-01-29 18:52:22 +01:00

almost finishes synchro with openlab system

This commit is contained in:
Nicolas Florentin 2016-04-21 11:42:43 +02:00
parent 711b18f6cd
commit f65bb95575
4 changed files with 37 additions and 14 deletions

View File

@ -2,43 +2,51 @@ module Project::OpenlabSync
extend ActiveSupport::Concern
included do
include ActionView::Helpers::SanitizeHelper
after_create :openlab_create, if: :openlab_sync_active?
after_update :openlab_update, if: :openlab_sync_active?
after_destroy :openlab_destroy, if: :openlab_sync_active?
def openlab_create
OpenlabSync.perform_async(:create, self.id) if self.published?
OpenlabWorker.delay_for(2.seconds).perform_async(:create, self.id) if self.published?
end
def openlab_update
if self.published?
if self.state_was == 'draft'
OpenlabSync.perform_async(:create, self.id)
OpenlabWorker.perform_async(:create, self.id)
else
OpenlabSync.perform_async(:update, self.id)
OpenlabWorker.perform_async(:update, self.id)
end
end
end
def openlab_destroy
OpenlabSync.perform_async(:destroy, self.id)
OpenlabWorker.perform_async(:destroy, self.id)
end
def openlab_attributes
{
id: id, name: name, description: description, tags: tags,
id: id, slug: slug, name: name, description: description, tags: tags,
machines: machines.map(&:name),
components: components.map(&:name),
themes: themes.map(&:name),
author: author.profile.full_name,
author: author&.profile&.full_name,
collaborators: users.map { |u| u.profile.full_name },
steps_body: steps_body
steps_body: steps_body,
image_path: project_image&.attachment&.medium&.url,
project_path: "/#!/projects/#{slug}"
}
end
def steps_body
concatenated_steps = project_steps.map { |s| "#{s.title} #{s.description}" }
.join(' ').gsub('</p>', ' </p>')
.gsub("\r\n", ' ').gsub("\n\r", ' ')
.gsub("\n", ' ').gsub("\r", ' ').gsub("\t", ' ')
strip_tags(concatenated_steps).strip
end
def openlab_sync_active?

View File

@ -3,7 +3,7 @@ class OpenlabWorker
sidekiq_options queue: 'default', retry: true
Logger = Sidekiq.logger.level == Logger::DEBUG ? Sidekiq.logger : nil
openlab_client = Openlab::Projects.new
OPENLAB_CLIENT = Openlab::Projects.new
def perform(action, project_id)
logger.debug ["Openlab sync", action, "project ID: #{project_id}"]
@ -11,12 +11,14 @@ class OpenlabWorker
case action.to_s
when /create/
project = Project.find(project_id)
openlab_client.create(project.openlab_attributes)
response = OPENLAB_CLIENT.create(project.openlab_attributes)
when /update/
project = Project.find(project_id)
openlab_client.update(project_id, project.openlab_attributes)
response = OPENLAB_CLIENT.update(project_id, project.openlab_attributes)
when /destroy/
openlab_client.destroy(project_id)
response = OPENLAB_CLIENT.destroy(project_id)
end
logger.debug ["Openlab sync", "RESPONSE ERROR", response.inspect] unless response.success?
end
end

View File

@ -1,4 +1,4 @@
Openlab.configure do |config|
config.app_secret = Rails.application.secrets.openfablab_app_secret
config.app_secret = Rails.application.secrets.openlab_app_secret
config.base_uri = Rails.env.production? ? "https://urltochange.nawak" : "localhost:3300/api/v1"
end

View File

@ -0,0 +1,13 @@
namespace :fablab do
namespace :openlab do
task bulk_export: :environment do
if Rails.application.secrets.openlab_app_secret.present?
Project.find_each do |project|
project.openlab_create
end
else
warn "Rails.application.secrets.openlab_app_secret not present. Export can't be done."
end
end
end
end