sample-profiles 4.83 KB
#!/usr/bin/env ruby
# encoding: utf-8
require File.dirname(__FILE__) + '/../config/environment'
include Noosfero::SampleDataHelper

categories = $environment.categories

places = [
  { :country=>'BR', :state=>'Bahia',        :city=>'Salvador',
    :lat=>-12.94032, :lng=>-38.58398  },
  { :country=>'BR', :state=>'Bahia',        :city=>'Feira de Santana',
    :lat=>-12.25547, :lng=>-38.95430  },
  { :country=>'BR', :state=>'São Paulo',    :city=>'São Paulo',
    :lat=>-23.54894, :lng=>-46.63881  },
  { :country=>'BR', :state=>'Rio de Janeiro', :city=>'Petrópolis',
    :lat=>-22.50462, :lng=>-43.18232  },
  { :country=>'AR', :state=>'A.C.',         :city=>'Buenos Aires',
    :lat=>-34.61088, :lng=>-58.39782  },
  { :country=>'AR', :state=>'Buenos Aires', :city=>'Mar del Plata',
    :lat=>-37.98317, :lng=>-57.59513  },
  { :country=>'MX', :state=>'Guerrero',     :city=>'Acapulco',
    :lat=>16.86369,  :lng=>-99.88151  },
  { :country=>'US', :state=>'California',   :city=>'Los Angeles',
    :lat=>34.02307,  :lng=>-118.24310 },
  { :country=>'US', :state=>'Florida',      :city=>'Jacksonville',
    :lat=>30.33217,  :lng=>-81.65566 },
  { :country=>'IT', :city=>'Roma',
    :lat=>41.89512,  :lng=>12.48184   },
  { :country=>'IN', :city=>'Mumbai',
    :lat=>19.01798,  :lng=>72.85583   },
  { :country=>'CN', :city=>'Shanghai',
    :lat=>31.23041,  :lng=>121.47308  },
  { :country=>'JP', :city=>'Tokyo',
    :lat=>35.68964,  :lng=>139.69116  },
  { :country=>'FR', :city=>'Paris',
    :lat=>48.85658,  :lng=>2.351074   },
  { :country=>'BW', :city=>'Sowa',
    :lat=>-20.56891, :lng=>26.22367   }
]

people = []
NAMES = %w[ José João Antonio Paulo Maria Joana Paula Angela ]
SURNAMES = %w[ Silva Santos Abreu Oliveira Machado Bonfim  ]
print "Creating users: "
for name in NAMES
  for surname in SURNAMES
    full_name = [name, surname].join(' ')
    user = User.new({
      :login => full_name.to_slug,
      :email => full_name.to_slug + '@localhost.localdomain',
      :password => 'test',
      :password_confirmation => 'test',
      :environment => $environment,
    })
    save user do
      user.person.name = full_name
      place = places[rand(places.length)]
      user.person.data[:country] = place[:country]
      user.person.state = place[:state]
      user.person.city = place[:city]
      user.person.lat = place[:lat] + (rand/100)-0.005
      user.person.lng = place[:lng] + (rand/100)-0.005
      user.person.save!
      if categories.present?
        2.times do
          category = categories.sample
          user.person.add_category category unless category.people.include?(user.person)
        end
      end
    end
  end
end
ze = User.new({
  :login => "ze",
  :email => 'root@localhost.localdomain',
  :password => 'test',
  :password_confirmation => 'test',
  :environment => $environment,
})
save ze do
  $environment.add_admin(ze.person)
end

admin = User.new({
  :login => "adminuser",
  :email => 'adminuser@localhost.localdomain',
  :password => 'admin',
  :password_confirmation => 'admin',
  :environment => $environment,
})
save admin do
  $environment.add_admin(admin.person)
end

guest = User.new({
  :login => "guest",
  :email => 'guest@localhost.localdomain',
  :password => 'test',
  :password_confirmation => 'test',
  :environment => $environment,
})
save guest

done

print "Activating users: "
User.where("login NOT LIKE '%%_template'").each do |user|
  user.activate
  print '.'
end
done

people = $environment.people
print "Creating some friendships: "
rand(people.size * 3).times do
  from = people.sample
  to = people.sample
  if from != to && !from.friends.include?(to)
    task = AddFriend.new(:requestor => to, :target => from)
    save task do
      task.finish
    end
  end
  print '.'
end
done


communities = []
VERBS = ['Save', 'I like', 'Use']
STUFF = ['Free Software', 'Organic food', 'the wales', 'the environment']
print "Creating communities: "
for verb in VERBS
  for stuff in STUFF
    name = [verb, stuff].join(' ')
    community = Community.new(:name => name, :environment => $environment)
    if rand(2)==1 # not all communities must have a place
      place = places[rand(places.length)]
      community.data[:country] = place[:country]
      community.state = place[:state]
      community.city = place[:city]
    end
    save community do
      communities << community
      rand(10).times do
        person = people.sample
        community.add_member(person) unless community.members.include?(person)
      end
      if categories.present?
        2.times do
          category = categories.sample
          community.add_category category unless category.communities.include?(community)
        end
      end
    end
  end
end

5.times do
  community = communities.sample
  community.add_member(guest.person) unless community.members.include?(guest.person)
  community.add_admin(guest.person) unless community.admins.include?(guest.person)
end

done