require 'base64'\r
\r
if ARGV.size < 1\r
- puts "uploader.rb src_host src_email src_token dest_host dest_email dest_token"\r
- puts "upload on child dirs"\r
+ puts "panel_import.rb src_host src_email src_token dest_host dest_email dest_token"\r
exit\r
end\r
\r
@src_speech_balloon_templates[sb['id'].to_i] = sb\r
end\r
@dest_speech_balloon_templates = {}\r
- self.speech_balloon_templates(@dest_host, @src_email, @src_token).each do |sb|\r
+ self.speech_balloon_templates(@dest_host, @dest_email, @dest_token).each do |sb|\r
@dest_speech_balloon_templates[sb['name']] = sb\r
end\r
@src_writing_formats = {}\r
- self.writing_formats(@dest_host, @src_email, @src_token).each do |wf|\r
- # self.writing_formats(@src_host, @src_auth).each do |wf|\r
+ self.writing_formats(@src_host, @src_email, @src_token).each do |wf|\r
@src_writing_formats[wf['id'].to_i] = wf\r
end\r
@dest_writing_formats = {}\r
res = {}\r
u = host + 'licenses.json'\r
r = RestClient.get(u, :params => {:page_size => 100})\r
- JSON.parse r\r
+ j = JSON.parse r\r
+ j['list']\r
end\r
\r
def license_groups host\r
res = {}\r
u = host + 'license_groups.json'\r
r = RestClient.get(u, :params => {:page_size => 100})\r
- ary = JSON.parse r\r
+ j = JSON.parse r\r
+ ary = j['list']\r
ary.each do |l|\r
res[l['id'].to_i] = l\r
end\r
def speech_balloon_templates host, email, token\r
res = {}\r
u = host + 'speech_balloon_templates.json'\r
- r = RestClient.get(u, {:params => {:page_size => 100}}, {:email => email, :token => token})\r
- JSON.parse r\r
+ r = RestClient.get(u, {:params => {:page_size => 100}, :email => email, :token => token})\r
+ j = JSON.parse r\r
+ j['list']\r
end\r
\r
def writing_formats host, email, token\r
res = {}\r
u = host + 'writing_formats.json'\r
- r = RestClient.get(u, {:params => {:page_size => 100}}, {:email => email, :token => token})\r
- JSON.parse r\r
+ r = RestClient.get(u, {:params => {:page_size => 100}, :email => email, :token => token})\r
+ j = JSON.parse r\r
+ j['list']\r
end\r
\r
def system_pictures host, email, token\r
res = {}\r
u = host + 'system_pictures.json'\r
- r = RestClient.get(u, {:params => {:page_size => 100}}, {:email => email, :token => token})\r
- JSON.parse r\r
+ r = RestClient.get(u, {:params => {:page_size => 100}, :email => email, :token => token})\r
+ j = JSON.parse r\r
+ j['list']\r
end\r
\r
def panels host, email, token\r
res = {}\r
u = host + 'home/panels.json'\r
- r = RestClient.get(u, {:params => {:page_size => 100}}, {:email => email, :token => token})\r
+ r = RestClient.get(u, {:params => {:page_size => 100}, :email => email, :token => token})\r
resp = JSON.parse r\r
status = resp['page_status']\r
resp['list'].each do |panel|\r
res\r
end\r
\r
- def picture id, host, email, token\r
+ def panel pid, host, email, token\r
res = {}\r
- u = host + 'pictures/'\r
- r = RestClient.get(u, {:params => {:id => id}}, {:email => email, :token => token})\r
+ u = host + 'panels/' + pid.to_s + '.json'\r
+ r = RestClient.get(u, {:params => {:with_elements => true}, :email => email, :token => token})\r
+ j = JSON.parse r\r
+ end\r
+ \r
+ def picture id, host, email, token\r
+ u = host + 'pictures/' + id.to_s + '.json'\r
+ r = RestClient.get(u, {:email => email, :token => token})\r
JSON.parse r\r
end\r
\r
def search_resource_picture md5, host, email, token\r
res = {}\r
u = host + 'resource_pictures/search.json'\r
- r = RestClient.get(u, {:params => {:md5 => md5}}, {:email => email, :token => token})\r
+ r = RestClient.get(u, {:params => {:md5 => md5}, :email => email, :token => token})\r
JSON.parse r\r
end\r
\r
- def prepare_panel_picture panel_picture\r
+ def prepare_panel_pictures panel_picture\r
element_name = 'panel_pictures'\r
puts 'panel_picture:' + panel_picture['id'].to_s\r
# get picture from src\r
return\r
end\r
# get lisence's id if exists?\r
- src_ls_name = @src_licenses[picture['license_id']]['name'].gsub /License\:/, 'Licenses:'\r
+ src_ls_name = @src_licenses[picture['license_id']]['name']\r
puts 'license:' + picture['license_id'].to_s + '(' + src_ls_name + ')'\r
if dl = @dest_licenses[src_ls_name]\r
puts 'license ok(' + dl['id'].to_s + ')'\r
return\r
end\r
panel_picture['picture_id'] = rp['picture_id']\r
+ true\r
end\r
\r
- def prepare_speech_balloon speech_balloon\r
+ def prepare_speech_balloons speech_balloon\r
element_name = 'speech_balloons'\r
- puts 'sb:' + e['id'].to_s\r
- src_sb_name = @src_speech_balloon_templates[e['speech_balloon_template_id']]['name']\r
- puts 'speech_balloon_template:' + e['speech_balloon_template_id'].to_s + '(' + src_sb_name + ')'\r
+ puts 'sb:' + speech_balloon['id'].to_s\r
+ src_sb_name = @src_speech_balloon_templates[speech_balloon['speech_balloon_template_id']]['name']\r
+ puts 'speech_balloon_template:' + speech_balloon['speech_balloon_template_id'].to_s + '(' + src_sb_name + ')'\r
if dsb = @dest_speech_balloon_templates[src_sb_name]\r
puts 'speech_balloon_template ok(' + dsb['id'].to_s + ')'\r
else\r
c = false\r
return\r
end\r
- src_sp_md5 = @src_system_pictures[e['balloon']['system_picture_id']]['md5']\r
- puts 'balloon picture:' + e['balloon']['system_picture_id'].to_s + '(' + src_sp_md5 + ')'\r
+ src_sp_md5 = @src_system_pictures[speech_balloon['balloon']['system_picture_id']]['md5']\r
+ puts 'balloon picture:' + speech_balloon['balloon']['system_picture_id'].to_s + '(' + src_sp_md5 + ')'\r
if dsp = @dest_system_pictures[src_sp_md5]\r
puts 'balloon picture ok(' + dsp['id'].to_s + ')'\r
else\r
c = false\r
return\r
end\r
- src_wf_name = @src_writing_formats[e['speech']['writing_format_id']]['name']\r
- puts 'speech writing_format:' + e['speech']['writing_format_id'].to_s + '(' + src_wf_name + ')'\r
+ src_wf_name = @src_writing_formats[speech_balloon['speech']['writing_format_id']]['name']\r
+ puts 'speech writing_format:' + speech_balloon['speech']['writing_format_id'].to_s + '(' + src_wf_name + ')'\r
if dwf = @dest_writing_formats[src_wf_name]\r
puts 'speech writing_format ok(' + dwf['id'].to_s + ')'\r
else\r
c = false\r
return\r
end\r
- e['speech_balloon_template_id'] = dsb['id']\r
- e["speech_balloon_template_settings"] = e["settings"]\r
- e.delete 'settings'\r
- e["speech_balloon_template_classname"] = dsb["classname"]\r
- e.delete 'classname'\r
+ speech_balloon['speech_balloon_template_id'] = dsb['id']\r
+ speech_balloon["speech_balloon_template_settings"] = speech_balloon["settings"]\r
+ speech_balloon.delete 'settings'\r
+ speech_balloon["speech_balloon_template_module_name"] = dsb["module_name"]\r
+ speech_balloon.delete 'module_name'\r
#e.delete 'speech_balloon_template'\r
- balloon = e['balloon']\r
- e.delete 'balloon'\r
+ balloon = speech_balloon['balloon']\r
+ speech_balloon.delete 'balloon'\r
balloon.delete 'id'\r
balloon.delete 'speech_balloon_id'\r
- balloon["speech_balloon_template_settings"] = e["settings"]\r
+ balloon["speech_balloon_template_settings"] = speech_balloon["settings"]\r
balloon.delete 'settings'\r
balloon['system_picture_id'] = dsp['id']\r
balloon['speech_balloon_template_id'] = dsb['id']\r
- balloon["speech_balloon_template_classname"] = dsb["classname"]\r
+ balloon["speech_balloon_template_module_name"] = dsb["module_name"]\r
\r
- speech = e['speech']\r
- e.delete 'speech'\r
+ speech = speech_balloon['speech']\r
+ speech_balloon.delete 'speech'\r
speech.delete 'id'\r
speech.delete 'speech_balloon_id'\r
- speech["speech_balloon_template_settings"] = e["settings"]\r
+ speech["speech_balloon_template_settings"] = speech_balloon["settings"]\r
speech.delete 'settings'\r
speech['speech_balloon_template_id'] = dsb['id']\r
- speech["speech_balloon_template_classname"] = dsb["classname"]\r
+ speech["speech_balloon_template_module_name"] = dsb["module_name"]\r
speech['writing_format_id'] = dwf['id']\r
-# speech["writing_format_classname"] = 'Pettanr' + dwf["classname"]\r
- speech["writing_format_classname"] = dwf["classname"]\r
+ speech["writing_format_module_name"] = dwf["module_name"]\r
\r
- e['balloon_attributes'] = balloon\r
- e['speech_attributes'] = speech\r
+ speech_balloon['balloon_attributes'] = balloon\r
+ speech_balloon['speech_attributes'] = speech\r
+ true\r
end\r
\r
- def prepare_ground_color ground_color\r
+ def prepare_ground_colors ground_color\r
element_name = 'ground_colors'\r
puts 'ground_color:' + ground_color['id'].to_s\r
+ true\r
end\r
\r
- def prepare_ground_picture ground_picture\r
+ def prepare_ground_pictures ground_picture\r
element_name = 'ground_pictures'\r
puts 'ground_picture:' + ground_picture['id'].to_s\r
- rps = self.resource_picture ground_picture['picture']['md5'], @dest_host, @dest_auth\r
+ rps = self.resource_picture ground_picture['picture']['md5'], @dest_host, @dest_email, @dest_token\r
if rps.any?\r
rp = rps.first\r
puts 'picture ok(' + rp['id'].to_s + ')'\r
end\r
#e['license_id'] = dl['id']\r
ground_picture['picture_id'] = rp['id']\r
- #e.delete 'license'\r
+ true\r
+ end\r
+ \r
+ def add_attribute element_name, panel_json, attribute\r
+ eid = attribute['id']\r
+ attribute.delete 'id'\r
+ attribute.delete 'panel_id'\r
+ panel_json[element_name + '_attributes'] ||= []\r
+ panel_json[element_name + '_attributes'].push attribute\r
end\r
\r
- def add_attribute panel_json, attribute\r
- eid = e['id']\r
- e.delete 'id'\r
- e.delete 'panel_id'\r
- panel_json[element_name + '_attributes'] ||= {}\r
- panel_json[element_name + '_attributes']['new' + eid.to_s] = e\r
+ def edit_elements panel_json, element_name\r
+ r = true\r
+ (panel_json[element_name] || {}).each do |attr|\r
+ r = self.__send__ 'prepare_' + element_name, attr\r
+ break unless r\r
+ self.add_attribute element_name, panel_json, attr\r
+ end\r
+ panel_json.delete element_name\r
+ r\r
end\r
\r
def each_panel\r
- self.panels(@src_host, @src_email, @src_token).each do |key, panel_json|\r
+ self.panels(@src_host, @src_email, @src_token).each do |key, attrs|\r
puts 'source panel:' + key.to_s\r
- c = true\r
- panel_json['panel_pictures'].each do |panel_picture|\r
- self.prepare_panel_picture panel_picture\r
- self.add_attribute panel_json, panel_picture\r
- end\r
- panel_json['speech_balloons'].each do |speech_balloon|\r
- self.prepare_speech_balloon speech_balloon\r
- end\r
- panel_json['ground_colors'].each do |ground_color|\r
- self.prepare_ground_color ground_color\r
- end\r
- panel_json['ground_pictures'].each do |ground_picture|\r
- self.prepare_ground_picture ground_picture\r
+ panel_json = self.panel(key, @src_host, @src_email, @src_token)\r
+ r = true\r
+ ['panel_pictures', 'speech_balloons', 'ground_pictures', 'ground_colors'].each do |element_name|\r
+ r = self.edit_elements(panel_json, element_name)\r
+ break unless r\r
end\r
- next unless c\r
+ next unless r\r
puts '============ importable'\r
panel_json.delete 'id'\r
panel_json.delete 'author'\r
end\r
begin\r
r = RestClient.post(u, \r
- {:json => panel_json}.to_json, \r
+ {:panel => panel_json}.to_json, \r
:content_type => :json, :accept => :json, :email => dest_email, :token => dest_token\r
)\r
res = JSON.parse r\r