0
@@ -88,8 +88,115 @@ class DataController < ApplicationController
0
# Draw the form to input the YAML text data
0
+ def adjust_time(timestring)
0
+ if (timestring=='') or ( timestring == nil)
0
+ return Time.parse(timestring + 'UTC')
0
- # Logic to load the YAML text file and create new records from data
0
+ @inarray = YAML::load(params['import']['yaml'])
0
+ # arrays to handle id translations
0
+ translate_context = Hash.new
0
+ translate_context[nil] = nil
0
+ current_user.contexts.each { |context| context.destroy }
0
+ @inarray['contexts'].each { | item |
0
+ newitem = Context.new(item.ivars['attributes'])
0
+ newitem.user_id = current_user.id
0
+ newitem.created_at = adjust_time(item.ivars['attributes']['created_at'])
0
+ translate_context[item.ivars['attributes']['id'].to_i] = newitem.id
0
+ translate_project = Hash.new
0
+ translate_project[nil] = nil
0
+ current_user.projects.each { |item| item.destroy }
0
+ @inarray['projects'].each { |item|
0
+ newitem = Project.new(item.ivars['attributes'])
0
+ newitem.user_id = current_user.id
0
+ newitem.default_context_id = translate_context[newitem.default_context_id]
0
+ translate_project[item.ivars['attributes']['id'].to_i] = newitem.id
0
+ newitem.transition_to(item.ivars['attributes']['state'])
0
+ newitem.completed_at = adjust_time(item.ivars['attributes']['completed_at'])
0
+ newitem.created_at = adjust_time(item.ivars['attributes']['created_at'])
0
+ newitem.position = item.ivars['attributes']['position']
0
+ translate_todo = Hash.new
0
+ translate_todo[nil] = nil
0
+ current_user.todos.each { |item| item.destroy }
0
+ @inarray['todos'].each { |item|
0
+ newitem = Todo.new(item.ivars['attributes'])
0
+ newitem.user_id = current_user.id
0
+ newitem.context_id = translate_context[newitem.context_id]
0
+ newitem.project_id = translate_project[newitem.project_id]
0
+ # TODO: vyresit recurring_todo_id
0
+ translate_todo[item.ivars['attributes']['id'].to_i] = newitem.id
0
+ case item.ivars['attributes']['state']
0
+ when 'active' : newitem.activate!
0
+ when 'project_hidden' : newitem.hide!
0
+ newitem.completed_at = adjust_time(item.ivars['attributes']['completed_at'])
0
+ when 'deferred' : newitem.defer!
0
+ newitem.created_at = adjust_time(item.ivars['attributes']['created_at'])
0
+ translate_tag = Hash.new
0
+ translate_tag[nil] = nil
0
+ current_user.tags.each { |item| item.destroy }
0
+ @inarray['tags'].each { |item|
0
+ newitem = Tag.new(item.ivars['attributes'])
0
+ newitem.created_at = adjust_time(item.ivars['attributes']['created_at'])
0
+ translate_tag[item.ivars['attributes']['id'].to_i] = newitem.id
0
+ current_user.taggings.each { |item| item.destroy }
0
+ @inarray['taggings'].each { |item|
0
+ newitem = Tagging.new(item.ivars['attributes'])
0
+ newitem.user_id = current_user.id
0
+ newitem.tag_id = translate_tag[newitem.tag_id]
0
+ case newitem.taggable_type
0
+ when 'Todo' : newitem.taggable_id = translate_todo[newitem.taggable_id]
0
+ else newitem.taggable_id = 0
0
+ current_user.notes.each { |item| item.destroy }
0
+ @inarray['notes'].each { |item|
0
+ newitem = Note.new(item.ivars['attributes'])
0
+ newitem.id = item.ivars['attributes']['id']
0
+ newitem.user_id = current_user.id
0
+ newitem.project_id = translate_project[newitem.project_id]
0
+ newitem.created_at = adjust_time(item.ivars['attributes']['created_at'])