Skip to content

Commit

Permalink
Revert "prettify seeds"
Browse files Browse the repository at this point in the history
This reverts commit 55cc9cd.
  • Loading branch information
antebarac committed Jul 29, 2013
1 parent 648aabd commit 74dff5b
Show file tree
Hide file tree
Showing 11 changed files with 115 additions and 335 deletions.
1 change: 0 additions & 1 deletion Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -58,5 +58,4 @@ group :test do
gem "simplecov", require: false
gem "database_cleaner"
gem "email_spec"
gem 'sunspot_matchers'
end
2 changes: 0 additions & 2 deletions Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -299,7 +299,6 @@ GEM
sunspot (2.0.0)
pr_geohash (~> 1.0)
rsolr (~> 1.0.7)
sunspot_matchers (2.0.0.3)
sunspot_rails (2.0.0)
nokogiri
sunspot (= 2.0.0)
Expand Down Expand Up @@ -365,7 +364,6 @@ DEPENDENCIES
simplecov
spinach-rails
sqlite3
sunspot_matchers
sunspot_rails
sunspot_solr
thin
Expand Down
8 changes: 4 additions & 4 deletions app/controllers/ads_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@ class AdsController < ApplicationController
respond_to :html, :json

def index
@ads_search = @ad_filter.search
@ads_without_category_id = @ad_filter.search_without(:category_id)
@ads_without_ad_type = @ad_filter.search_without(:ad_type)
@ads_without_region_id = @ad_filter.search_without(:region_id)
@ads_search = Ad.search(@ad_filter, params[:page], params[:per_page] || Ad::PER_PAGE)
@ads_without_category_id = Ad.search(@ad_filter.clone_without(:category_id), 1)
@ads_without_ad_type = Ad.search(@ad_filter.clone_without(:ad_type), 1)
@ads_without_region_id = Ad.search(@ad_filter.clone_without(:region_id), 1)
respond_with @ads = @ads_search.results
end

Expand Down
41 changes: 39 additions & 2 deletions app/models/ad.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ class Ad < ActiveRecord::Base
include Extensions::Ad::Type
include Extensions::Ad::Status
include Extensions::Ad::Delegation
include Extensions::Ad::Searchable

belongs_to :category
belongs_to :user
Expand All @@ -31,4 +30,42 @@ class Ad < ActiveRecord::Base
validates :title, :presence => true
validates :ad_type, :presence => true

end
searchable do
text :title, boost: 4.0
text :description, boost: 2.0
text :phone
text :category do
category.name
end
text :city do
city.name
end
text :region do
city.region.name
end

integer :region_id do
city.region_id
end
integer :category_id
integer :ad_type
integer :status
time :created_at
end


def self.search(ad_filter = AdFilter.new, page = nil, per_page = nil)
Sunspot.search(Ad) do
fulltext(ad_filter.query) if ad_filter.query
with(:category_id, ad_filter.category_id) if ad_filter.category_id
with(:region_id, ad_filter.region_id) if ad_filter.region_id
with(:ad_type, ad_filter.ad_type) if ad_filter.ad_type
with(:status, Ad.status[:active])
facet(:category_id)
facet(:region_id)
facet(:ad_type)
paginate(page: page || 1, per_page: per_page)
order_by(:created_at, :desc) if ad_filter.query.blank?
end
end
end
2 changes: 1 addition & 1 deletion config/initializers/sunspot.rb
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ def setup_solr
sleep 0.5
print '.'
end
puts "\nDone!"
puts 'Done!'
end
Sunspot.session = $original_sunspot_session

Expand Down
168 changes: 60 additions & 108 deletions db/seeds.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,123 +11,75 @@
# See http://railsapps.github.io/rails-environment-variables.html

include SunspotHelper
setup_solr

def log(message)
print "\n[Seeds] #{message}"
end

def announce_start
@start = Time.now
print "=" * 30
log "started seeding data\n\n"
end

def announce_finish
puts "=" * 30
log "Success! :)"
log "Seeding took #{(Time.now - @start).round(2)} seconds.\n\n"
end

def import_roles
log "importing roles"
YAML.load(ENV['ROLES']).each do |role|
Role.find_or_create_by_name({ :name => role }, :without_protection => true)
print "."
end
end

def create_admin
log "creating admin [username: #{ENV['ADMIN_EMAIL']} password: #{ENV['ADMIN_PASSWORD']}]"
ActionMailer::Base.delivery_method = :test
user = User.find_or_create_by_email :first_name => ENV['ADMIN_NAME'].dup, :email => ENV['ADMIN_EMAIL'].dup, :password => ENV['ADMIN_PASSWORD'].dup, :password_confirmation => ENV['ADMIN_PASSWORD'].dup, :phone => '0989814972'
user.confirm!
user.add_role :admin
YAML.load(ENV['ROLES']).each do |role|
Role.find_or_create_by_name({ :name => role }, :without_protection => true)
puts 'role: ' << role
end

def import_regions
log "importing regions"
{
'Bjelovarsko-bilogorska' => ['Bjelovar', 'Čazma', 'Daruvar', 'Garešnica', 'Grubišno Polje'],
'Brodsko-posavska' => ['Nova Gradiška', 'Slavonski Brod'],
'Dubrovačko-neretvanska' => ['Dubrovnik', 'Korčula', 'Metković', 'Opuzen', 'Ploče'],
'Istarska' => ['Pula', 'Pazin', 'Poreč', 'Buje', 'Buzet', 'Labin', 'Novigrad', 'Rovinj', 'Umag', 'Vodnjan'],
'Karlovačka' => ['Duga Resa', 'Karlovac', 'Ogulin', 'Slunj', 'Ozalj'],
'Koprivničko-križevačka' => ['Đurđevac', 'Koprivnica', 'Križevci'],
'Krapinsko-zagorska' => ['Donja Stubica', 'Klanjec', 'Krapina', 'Oroslavje', 'Pregrada', 'Zabok', 'Zlatar'],
'Ličko-senjska' => ['Gospić', 'Otočac', 'Brinje', 'Senj', 'Karlobag'],
'Međimurska' => ['Čakovec', 'Mursko Središće', 'Prelog'],
'Osječko-baranjska' => ['Beli Manastir', 'Belišće', 'Donji Miholjac', 'Đakovo', 'Našice', 'Osijek', 'Valpovo'],
'Požeško-slavonska' => ['Kutjevo', 'Lipik', 'Pakrac', 'Pleternica', 'Požega'],
'Primorsko-goranska' => ['Rijeka', 'Bakar', 'Cres', 'Crikvenica', 'Čabar', 'Delnice', 'Kastav', 'Kraljevica', 'Krk', 'Mali Lošinj', 'Novi Vinodolski', 'Opatija', 'Rab', 'Vrbovsko'],
'Sisačko-moslavačka' => ['Glina', 'Hrvatska Kostajnica', 'Kutina', 'Novska', 'Sisak', 'Petrinja'],
'Splitsko-dalmatinska' => ['Hvar', 'Imotski', 'Kaštela', 'Komiža', 'Makarska', 'Omiš', 'Sinj', 'Solin', 'Split', 'Stari Grad', 'Supetar', 'Trilj', 'Trogir', 'Vis', 'Vrgorac', 'Vrlika'],
'Varaždinska' => ['Ivanec', 'Lepoglava', 'Ludbreg', 'Novi Marof', 'Varaždin', 'Varaždinske Toplice'],
'Virovitičko-podravska' => ['Orahovica', 'Slatina', 'Virovitica'],
'Vukovarsko-srijemska' => ['Vukovar', 'Vinkovci', 'Ilok', 'Županja'],
'Zadarska' => ['Zadar', 'Benkovac', 'Biograd na Moru', 'Nin', 'Obrovac', 'Pag'],
'Zagrebačka' => ['Dugo Selo', 'Ivanić Grad', 'Jastrebarsko', 'Samobor', 'Sveti Ivan Zelina', 'Velika Gorica', 'Vrbovec', 'Zaprešić'],
'Šibensko-kninska' => ['Drniš', 'Knin', 'Skradin', 'Šibenik', 'Vodice'],
'Grad Zagreb' => ['Zagreb']
}.each_pair do |region, cities|

print "."

r = Region.find_by_name region
unless r
r = Region.create(:name => region)
cities.each do |city|
r.cities.create(:name => city)
end
user = User.find_or_create_by_email :first_name => ENV['ADMIN_NAME'].dup, :email => ENV['ADMIN_EMAIL'].dup, :password => ENV['ADMIN_PASSWORD'].dup, :password_confirmation => ENV['ADMIN_PASSWORD'].dup, :phone => '0989814972'
puts 'user: ' << user.name
user.confirm!
user.add_role :admin

{
'Bjelovarsko-bilogorska' => ['Bjelovar', 'Čazma', 'Daruvar', 'Garešnica', 'Grubišno Polje'],
'Brodsko-posavska' => ['Nova Gradiška', 'Slavonski Brod'],
'Dubrovačko-neretvanska' => ['Dubrovnik', 'Korčula', 'Metković', 'Opuzen', 'Ploče'],
'Istarska' => ['Pula', 'Pazin', 'Poreč', 'Buje', 'Buzet', 'Labin', 'Novigrad', 'Rovinj', 'Umag', 'Vodnjan'],
'Karlovačka' => ['Duga Resa', 'Karlovac', 'Ogulin', 'Slunj', 'Ozalj'],
'Koprivničko-križevačka' => ['Đurđevac', 'Koprivnica', 'Križevci'],
'Krapinsko-zagorska' => ['Donja Stubica', 'Klanjec', 'Krapina', 'Oroslavje', 'Pregrada', 'Zabok', 'Zlatar'],
'Ličko-senjska' => ['Gospić', 'Otočac', 'Brinje', 'Senj', 'Karlobag'],
'Međimurska' => ['Čakovec', 'Mursko Središće', 'Prelog'],
'Osječko-baranjska' => ['Beli Manastir', 'Belišće', 'Donji Miholjac', 'Đakovo', 'Našice', 'Osijek', 'Valpovo'],
'Požeško-slavonska' => ['Kutjevo', 'Lipik', 'Pakrac', 'Pleternica', 'Požega'],
'Primorsko-goranska' => ['Rijeka', 'Bakar', 'Cres', 'Crikvenica', 'Čabar', 'Delnice', 'Kastav', 'Kraljevica', 'Krk', 'Mali Lošinj', 'Novi Vinodolski', 'Opatija', 'Rab', 'Vrbovsko'],
'Sisačko-moslavačka' => ['Glina', 'Hrvatska Kostajnica', 'Kutina', 'Novska', 'Sisak', 'Petrinja'],
'Splitsko-dalmatinska' => ['Hvar', 'Imotski', 'Kaštela', 'Komiža', 'Makarska', 'Omiš', 'Sinj', 'Solin', 'Split', 'Stari Grad', 'Supetar', 'Trilj', 'Trogir', 'Vis', 'Vrgorac', 'Vrlika'],
'Varaždinska' => ['Ivanec', 'Lepoglava', 'Ludbreg', 'Novi Marof', 'Varaždin', 'Varaždinske Toplice'],
'Virovitičko-podravska' => ['Orahovica', 'Slatina', 'Virovitica'],
'Vukovarsko-srijemska' => ['Vukovar', 'Vinkovci', 'Ilok', 'Županja'],
'Zadarska' => ['Zadar', 'Benkovac', 'Biograd na Moru', 'Nin', 'Obrovac', 'Pag'],
'Zagrebačka' => ['Dugo Selo', 'Ivanić Grad', 'Jastrebarsko', 'Samobor', 'Sveti Ivan Zelina', 'Velika Gorica', 'Vrbovec', 'Zaprešić'],
'Šibensko-kninska' => ['Drniš', 'Knin', 'Skradin', 'Šibenik', 'Vodice'],
'Grad Zagreb' => ['Zagreb']
}.each_pair do |region, cities|

r = Region.find_by_name region
unless r
r = Region.create(:name => region)
cities.each do |city|
r.cities.create(:name => city)
end
end
end

def import_categories
log "importing categories"
[
"Hrana",
"Zdravlje i higijena",
"Odjeća i obuća",
"Elektronika",
"Sve za djecu",
"Namještaj",
"Kućanski aparati",
"Kućanske potrepštine",
"Poslovi i usluge",
"Hobi i zabava",
"Ostalo"
].each do |categoryName|
print "."

[
"Hrana",
"Zdravlje i higijena",
"Odjeća i obuća",
"Elektronika",
"Sve za djecu",
"Namještaj",
"Kućanski aparati",
"Kućanske potrepštine",
"Poslovi i usluge",
"Hobi i zabava",
"Ostalo"
].each do |categoryName|
Category.find_or_create_by_name(:name => categoryName)
end
end

def import_ads
log "importing ads"
20.times do
print "."
FactoryGirl.create(:ad, category: Category.all.sample, city: City.all.sample, user: User.all.sample)
end
end
placeholderAdDescription =
"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt"\
" ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco"\
" laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in"\
" voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat"\
" non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."

def import_blogs
log "importing blogs"
4.times do
print "."
FactoryGirl.create(:blog)
end
20.times do
FactoryGirl.create(:ad, category: Category.all.sample, city: City.all.sample, user: User.all.sample)
end

announce_start
setup_solr
puts

import_roles
create_admin
import_regions
import_categories
import_ads
import_blogs
puts

announce_finish
21 changes: 6 additions & 15 deletions lib/ad_filter.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
class AdFilter
FILTER_ATTRIBUTES = [:region_id, :category_id, :ad_type]

attr_accessor :region_id, :category_id, :ad_type, :query, :page, :per_page
attr_accessor :region_id, :category_id, :ad_type, :query

def initialize(params = {})
params ||= {}
Expand All @@ -14,18 +12,11 @@ def initialize(params = {})
end
end

def search_without(skip_attribute)
search(FILTER_ATTRIBUTES.reject{ |attr| attr == skip_attribute })
end

def search(filter_attributes = FILTER_ATTRIBUTES)
Sunspot.search(Ad) do
fulltext(query)
filter_attributes.each { |attr| with(attr, self.send(attr)) if self.send(attr) }
FILTER_ATTRIBUTES.each { |attr| facet(attr) }
with(:status, Ad.status[:active])
paginate(page: page || 1, per_page: per_page || Ad::PER_PAGE)
order_by(:created_at, :desc) if query.blank?
def clone_without(skip_attribute)
new_filter = AdFilter.new
[:region_id, :category_id, :ad_type, :query].each do |method|
new_filter.send(method.to_s + '=', skip_attribute == method ? nil : self.send(method))
end
new_filter
end
end
31 changes: 0 additions & 31 deletions lib/extensions/ad/searchable.rb

This file was deleted.

Loading

0 comments on commit 74dff5b

Please sign in to comment.