It is now possible to ignore draft posts on import.

* refactored the code sent by SustainableWebsites
* made the ignore feature optional via ENV variable
* added docs
This commit is contained in:
Marc Remolt
2011-06-03 11:35:11 +02:00
parent 39b482f99f
commit 29bc2534b6
5 changed files with 62 additions and 28 deletions

View File

@@ -18,11 +18,13 @@ namespace :wordpress do
dump = Refinery::WordPress::Dump.new(params[:file_name])
dump.authors.each(&:to_refinery)
dump.posts.each(&:to_refinery)
only_published = ENV['ONLY_PUBLISHED'] == 'true' ? true : false
dump.posts(only_published).each(&:to_refinery)
ENV["MODEL"] = 'BlogPost'
Rake::Task["friendly_id:redo_slugs"].invoke
ENV["MODEL"] = nil
ENV.delete("MODEL")
end

View File

@@ -25,10 +25,12 @@ module Refinery
end
end
def posts
doc.xpath("//item[wp:post_type = 'post']").collect do |post|
def posts(only_published=false)
posts = doc.xpath("//item[wp:post_type = 'post']").collect do |post|
Post.new(post)
end
posts = posts.select(&:published?) if only_published
posts
end
def tags

View File

@@ -71,6 +71,10 @@ module Refinery
status != 'publish'
end
def published?
! draft?
end
def ==(other)
post_id == other.post_id
end

View File

@@ -36,24 +36,20 @@ module Refinery
unless user
begin
unless draft?
#p "creating post " + title + " Draft status: " + draft?.to_s
post = ::BlogPost.new :title => title, :body => content_formatted,
:draft => draft?, :published_at => post_date, :created_at => post_date,
:author => user, :tag_list => tag_list
post.save!
post = ::BlogPost.new :title => title, :body => content_formatted,
:draft => draft?, :published_at => post_date, :created_at => post_date,
:author => user, :tag_list => tag_list
post.save!
::BlogPost.transaction do
categories.each do |category|
post.categories << category.to_refinery
end
::BlogPost.transaction do
categories.each do |category|
post.categories << category.to_refinery
end
comments.each do |comment|
comment = comment.to_refinery
comment.post = post
comment.save
end
comments.each do |comment|
comment = comment.to_refinery
comment.post = post
comment.save
end
end
rescue ActiveRecord::RecordInvalid