Merge pull request #315 from AyuntamientoMadrid/dev-seed
rake db:dev_seed
This commit is contained in:
1
Gemfile
1
Gemfile
@@ -67,6 +67,7 @@ group :development, :test do
|
|||||||
gem "capistrano-rails", '1.1.3', require: false
|
gem "capistrano-rails", '1.1.3', require: false
|
||||||
gem "capistrano-rvm", require: false
|
gem "capistrano-rvm", require: false
|
||||||
gem "bullet"
|
gem "bullet"
|
||||||
|
gem "faker"
|
||||||
end
|
end
|
||||||
|
|
||||||
group :test do
|
group :test do
|
||||||
|
|||||||
@@ -140,6 +140,8 @@ GEM
|
|||||||
factory_girl_rails (4.5.0)
|
factory_girl_rails (4.5.0)
|
||||||
factory_girl (~> 4.5.0)
|
factory_girl (~> 4.5.0)
|
||||||
railties (>= 3.0.0)
|
railties (>= 3.0.0)
|
||||||
|
faker (1.5.0)
|
||||||
|
i18n (~> 0.5)
|
||||||
faraday (0.9.1)
|
faraday (0.9.1)
|
||||||
multipart-post (>= 1.2, < 3)
|
multipart-post (>= 1.2, < 3)
|
||||||
foundation-rails (5.5.2.1)
|
foundation-rails (5.5.2.1)
|
||||||
@@ -409,6 +411,7 @@ DEPENDENCIES
|
|||||||
devise
|
devise
|
||||||
email_spec
|
email_spec
|
||||||
factory_girl_rails
|
factory_girl_rails
|
||||||
|
faker
|
||||||
foundation-rails
|
foundation-rails
|
||||||
foundation_rails_helper
|
foundation_rails_helper
|
||||||
fuubar
|
fuubar
|
||||||
@@ -440,6 +443,3 @@ DEPENDENCIES
|
|||||||
uglifier (>= 1.3.0)
|
uglifier (>= 1.3.0)
|
||||||
unicorn
|
unicorn
|
||||||
web-console (~> 2.0)
|
web-console (~> 2.0)
|
||||||
|
|
||||||
BUNDLED WITH
|
|
||||||
1.10.6
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ class Comment < ActiveRecord::Base
|
|||||||
validates :body, presence: true
|
validates :body, presence: true
|
||||||
validates :user, presence: true
|
validates :user, presence: true
|
||||||
|
|
||||||
belongs_to :commentable, polymorphic: true, counter_cache: true
|
belongs_to :commentable, -> { with_hidden }, polymorphic: true, counter_cache: true
|
||||||
belongs_to :user, -> { with_hidden }
|
belongs_to :user, -> { with_hidden }
|
||||||
|
|
||||||
has_many :flags, :as => :flaggable
|
has_many :flags, :as => :flaggable
|
||||||
|
|||||||
136
db/dev_seeds.rb
Normal file
136
db/dev_seeds.rb
Normal file
@@ -0,0 +1,136 @@
|
|||||||
|
require 'database_cleaner'
|
||||||
|
|
||||||
|
DatabaseCleaner.clean_with :truncation
|
||||||
|
|
||||||
|
puts "Creating Settings"
|
||||||
|
Setting.create(key: 'official_level_0_name', value: 'No cargo público')
|
||||||
|
Setting.create(key: 'official_level_1_name', value: 'Empleados públicos')
|
||||||
|
Setting.create(key: 'official_level_2_name', value: 'Organización Municipal')
|
||||||
|
Setting.create(key: 'official_level_3_name', value: 'Directores generales')
|
||||||
|
Setting.create(key: 'official_level_4_name', value: 'Concejales')
|
||||||
|
Setting.create(key: 'official_level_5_name', value: 'Alcaldesa')
|
||||||
|
|
||||||
|
puts "Creating Users"
|
||||||
|
|
||||||
|
def create_user(email, username = Faker::Name.name)
|
||||||
|
pwd = '12345678'
|
||||||
|
puts " #{username}"
|
||||||
|
User.create!(username: username, email: email, password: pwd, password_confirmation: pwd, confirmed_at: Time.now)
|
||||||
|
end
|
||||||
|
|
||||||
|
admin = create_user('admin@madrid.es', 'admin')
|
||||||
|
admin.create_administrator
|
||||||
|
|
||||||
|
moderator = create_user('mod@madrid.es', 'mod')
|
||||||
|
moderator.create_moderator
|
||||||
|
|
||||||
|
(1..10).each do |i|
|
||||||
|
org_name = Faker::Company.name
|
||||||
|
org_user = create_user("org#{i}@madrid.es", org_name)
|
||||||
|
org = org_user.create_organization(name: org_name)
|
||||||
|
|
||||||
|
verified = [true, false].sample
|
||||||
|
if verified then
|
||||||
|
org.verify
|
||||||
|
else
|
||||||
|
org.reject
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
(1..5).each do |i|
|
||||||
|
official = create_user("official#{i}@madrid.es")
|
||||||
|
official.update(official_level: i, official_position: "Official position #{i}")
|
||||||
|
end
|
||||||
|
|
||||||
|
(1..40).each do |i|
|
||||||
|
create_user("user#{i}@madrid.es")
|
||||||
|
end
|
||||||
|
|
||||||
|
org_user_ids = User.organizations.pluck(:id)
|
||||||
|
not_org_users = User.where(['users.id NOT IN(?)', org_user_ids])
|
||||||
|
|
||||||
|
|
||||||
|
puts "Creating Debates"
|
||||||
|
|
||||||
|
(1..30).each do |i|
|
||||||
|
author = User.reorder("RANDOM()").first
|
||||||
|
description = "<p>#{Faker::Lorem.paragraphs.join('</p></p>')}</p>"
|
||||||
|
debate = Debate.create!(author: author,
|
||||||
|
title: Faker::Lorem.sentence(3),
|
||||||
|
description: description,
|
||||||
|
terms_of_service: "1")
|
||||||
|
puts " #{debate.title}"
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
puts "Commenting Debates"
|
||||||
|
|
||||||
|
(1..100).each do |i|
|
||||||
|
author = User.reorder("RANDOM()").first
|
||||||
|
debate = Debate.reorder("RANDOM()").first
|
||||||
|
Comment.create!(user: author,
|
||||||
|
commentable: debate,
|
||||||
|
body: Faker::Lorem.sentence)
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
puts "Commenting Comments"
|
||||||
|
|
||||||
|
(1..100).each do |i|
|
||||||
|
author = User.reorder("RANDOM()").first
|
||||||
|
parent = Comment.reorder("RANDOM()").first
|
||||||
|
comment = Comment.create!(user: author,
|
||||||
|
commentable_id: parent.commentable_id,
|
||||||
|
commentable_type: parent.commentable_type,
|
||||||
|
body: Faker::Lorem.sentence)
|
||||||
|
comment.move_to_child_of(parent)
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
puts "Voting Debates & Comments"
|
||||||
|
|
||||||
|
(1..100).each do |i|
|
||||||
|
voter = not_org_users.reorder("RANDOM()").first
|
||||||
|
vote = [true, false].sample
|
||||||
|
debate = Debate.reorder("RANDOM()").first
|
||||||
|
debate.vote_by(voter: voter, vote: vote)
|
||||||
|
end
|
||||||
|
|
||||||
|
(1..100).each do |i|
|
||||||
|
voter = not_org_users.reorder("RANDOM()").first
|
||||||
|
vote = [true, false].sample
|
||||||
|
comment = Comment.reorder("RANDOM()").first
|
||||||
|
comment.vote_by(voter: voter, vote: vote)
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
puts "Flagging Debates & Comments"
|
||||||
|
|
||||||
|
(1..40).each do |i|
|
||||||
|
debate = Debate.reorder("RANDOM()").first
|
||||||
|
flagger = User.where(["users.id <> ?", debate.author_id]).reorder("RANDOM()").first
|
||||||
|
Flag.flag(flagger, debate)
|
||||||
|
end
|
||||||
|
|
||||||
|
(1..40).each do |i|
|
||||||
|
comment = Comment.reorder("RANDOM()").first
|
||||||
|
flagger = User.where(["users.id <> ?", comment.user_id]).reorder("RANDOM()").first
|
||||||
|
Flag.flag(flagger, comment)
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
puts "Ignoring flags in Debates & comments"
|
||||||
|
|
||||||
|
Debate.flagged.reorder("RANDOM()").limit(10).each(&:ignore_flag)
|
||||||
|
Comment.flagged.reorder("RANDOM()").limit(20).each(&:ignore_flag)
|
||||||
|
|
||||||
|
|
||||||
|
puts "Hiding debates & comments"
|
||||||
|
|
||||||
|
Debate.with_hidden.flagged.reorder("RANDOM()").limit(5).each(&:hide)
|
||||||
|
Comment.with_hidden.flagged.reorder("RANDOM()").limit(30).each{ |c| c.hide rescue nil }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
6
lib/tasks/db.rake
Normal file
6
lib/tasks/db.rake
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
namespace :db do
|
||||||
|
desc "Resets the database and loads it from db/dev_seeds.rb"
|
||||||
|
task :dev_seed do
|
||||||
|
load(Rails.root.join("db", "dev_seeds.rb"))
|
||||||
|
end
|
||||||
|
end
|
||||||
Reference in New Issue
Block a user