refactor channel rankings
This commit is contained in:
parent
a4daedbfbc
commit
acd42142dc
@ -260,11 +260,7 @@ class ApplicationController < ActionController::Base
|
||||
def get_channel_data
|
||||
@channel = current_user.channels.find(params[:channel_id]) if params[:channel_id]
|
||||
@channel = current_user.channels.find(params[:id]) if @channel.nil? and params[:id]
|
||||
|
||||
if @channel.ranking.blank?
|
||||
@channel.ranking = @channel.calc_ranking
|
||||
end
|
||||
|
||||
@channel.ranking = @channel.set_ranking if @channel.ranking.blank?
|
||||
@key = @channel.api_keys.write_keys.first.try(:api_key) || ""
|
||||
end
|
||||
|
||||
|
@ -177,7 +177,6 @@ class ChannelsController < ApplicationController
|
||||
get_channel_data
|
||||
end
|
||||
|
||||
|
||||
def update
|
||||
# get the current user or find the user via their api key
|
||||
@user = current_user || User.find_by_api_key(get_apikey)
|
||||
@ -195,6 +194,7 @@ class ChannelsController < ApplicationController
|
||||
@channel.assign_attributes(channel_params)
|
||||
@channel.set_windows
|
||||
@channel.save
|
||||
@channel.set_ranking
|
||||
else
|
||||
session[:errors] = @channel.errors
|
||||
redirect_to channel_path(@channel.id, :anchor => "channelsettings") and return
|
||||
@ -221,6 +221,7 @@ class ChannelsController < ApplicationController
|
||||
channel.save
|
||||
channel.save_tags(params[:channel][:tags]) if params[:channel][:tags].present?
|
||||
channel.add_write_api_key
|
||||
channel.set_ranking
|
||||
@channel_id = channel.id
|
||||
respond_to do |format|
|
||||
format.json { render :json => channel.to_json(Channel.private_options) }
|
||||
|
@ -68,7 +68,6 @@ class Channel < ActiveRecord::Base
|
||||
attr_readonly :created_at
|
||||
|
||||
after_commit :set_default_name
|
||||
after_commit :set_ranking, :unless => "ranking == calc_ranking"
|
||||
|
||||
before_destroy :delete_feeds
|
||||
|
||||
@ -221,14 +220,10 @@ class Channel < ActiveRecord::Base
|
||||
def public?; self.public_flag; end
|
||||
|
||||
# check if the video has changed
|
||||
def video_changed?
|
||||
video_id_changed? || video_type_changed?
|
||||
end
|
||||
def video_changed?; video_id_changed? || video_type_changed?; end
|
||||
|
||||
# check if the location has changed
|
||||
def location_changed?
|
||||
latitude_changed? || longitude_changed?
|
||||
end
|
||||
def location_changed?; latitude_changed? || longitude_changed?; end
|
||||
|
||||
# check if the any of the fields have changed
|
||||
def fields_changed?
|
||||
@ -437,16 +432,19 @@ class Channel < ActiveRecord::Base
|
||||
}
|
||||
end
|
||||
|
||||
def calc_ranking
|
||||
result = 0
|
||||
result = result + 15 unless name.blank?
|
||||
result = result + 20 unless description.blank?
|
||||
result = result + 15 unless latitude.blank? || longitude.blank?
|
||||
result = result + 15 unless url.blank?
|
||||
result = result + 15 unless video_id.blank? || video_type.blank?
|
||||
# set the ranking correctly for the channel
|
||||
def set_ranking
|
||||
new_ranking = 0
|
||||
new_ranking += 15 if name.present?
|
||||
new_ranking += 20 if description.present?
|
||||
new_ranking += 15 if latitude.present? && longitude.present?
|
||||
new_ranking += 15 if url.present?
|
||||
new_ranking += 15 if video_id.present? && video_type.present?
|
||||
new_ranking += 20 if tags.present?
|
||||
|
||||
result = result + 20 unless tags.empty?
|
||||
result
|
||||
# update the ranking if it has changed
|
||||
update_attribute(:ranking, new_ranking) if self.ranking != new_ranking
|
||||
return new_ranking
|
||||
end
|
||||
|
||||
def set_windows
|
||||
@ -472,10 +470,6 @@ class Channel < ActiveRecord::Base
|
||||
|
||||
private
|
||||
|
||||
def set_ranking
|
||||
update_attribute(:ranking, calc_ranking) unless ranking == calc_ranking
|
||||
end
|
||||
|
||||
def update_chart_portlet (field, isPrivate)
|
||||
|
||||
chartWindows = windows.where(:window_type => "chart", :name => "field#{field.last.to_s}", :private_flag => isPrivate )
|
||||
@ -503,13 +497,10 @@ class Channel < ActiveRecord::Base
|
||||
end
|
||||
end
|
||||
|
||||
# set the default channel name
|
||||
def set_default_name
|
||||
update_attribute(:name, "#{I18n.t(:channel_default_name)} #{self.id}") if self.name.blank?
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
end
|
||||
|
||||
|
@ -1,7 +1,6 @@
|
||||
<div>
|
||||
<% @channels.each do |channel| %>
|
||||
|
||||
<% channel.ranking = channel.calc_ranking if channel.ranking.blank? %>
|
||||
<div class="public_channel_box">
|
||||
<div class="public_channel_inner">
|
||||
<p class="public_channel_name">
|
||||
|
8
db/migrate/20140801190147_set_rankings_for_channels.rb
Normal file
8
db/migrate/20140801190147_set_rankings_for_channels.rb
Normal file
@ -0,0 +1,8 @@
|
||||
class SetRankingsForChannels < ActiveRecord::Migration
|
||||
def change
|
||||
Channel.find_each do |channel|
|
||||
channel.set_ranking
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -0,0 +1,7 @@
|
||||
class ModifyRankingIndexOnChannels < ActiveRecord::Migration
|
||||
def change
|
||||
remove_index :channels, :ranking
|
||||
add_index :channels, [:ranking, :updated_at]
|
||||
end
|
||||
end
|
||||
|
@ -11,7 +11,7 @@
|
||||
#
|
||||
# It's strongly recommended that you check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema.define(version: 20140722231849) do
|
||||
ActiveRecord::Schema.define(version: 20140801191621) do
|
||||
|
||||
create_table "active_admin_comments", force: true do |t|
|
||||
t.string "namespace"
|
||||
@ -108,7 +108,7 @@ ActiveRecord::Schema.define(version: 20140722231849) do
|
||||
end
|
||||
|
||||
add_index "channels", ["public_flag", "last_entry_id", "updated_at"], name: "channels_public_viewable", using: :btree
|
||||
add_index "channels", ["ranking"], name: "index_channels_on_ranking", using: :btree
|
||||
add_index "channels", ["ranking", "updated_at"], name: "index_channels_on_ranking_and_updated_at", using: :btree
|
||||
add_index "channels", ["realtime_io_serial_number"], name: "index_channels_on_realtime_io_serial_number", using: :btree
|
||||
add_index "channels", ["slug"], name: "index_channels_on_slug", using: :btree
|
||||
add_index "channels", ["user_id"], name: "index_channels_on_user_id", using: :btree
|
||||
@ -378,6 +378,7 @@ ActiveRecord::Schema.define(version: 20140722231849) do
|
||||
t.datetime "remember_created_at"
|
||||
t.integer "sign_in_count", default: 0, null: false
|
||||
t.string "authentication_token"
|
||||
t.datetime "terms_agreed_at"
|
||||
end
|
||||
|
||||
add_index "users", ["api_key"], name: "index_users_on_api_key", using: :btree
|
||||
|
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
BIN
public/assets/application-10ae8a0b045109d308f29eff9782971a.js.gz
Normal file
BIN
public/assets/application-10ae8a0b045109d308f29eff9782971a.js.gz
Normal file
Binary file not shown.
File diff suppressed because one or more lines are too long
BIN
public/assets/application-176ef6f23f47be510b81c7f53e30cd99.js.gz
Normal file
BIN
public/assets/application-176ef6f23f47be510b81c7f53e30cd99.js.gz
Normal file
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
BIN
public/assets/application-2ed742652fb31d3ebe34470275a2cc0c.js.gz
Normal file
BIN
public/assets/application-2ed742652fb31d3ebe34470275a2cc0c.js.gz
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
@ -135,6 +135,7 @@ describe ChannelsController do
|
||||
end
|
||||
it 'returns JSON' do
|
||||
post :create, {:key => @user.api_key, :name => 'mychannel', :format => 'json'}
|
||||
Channel.last.ranking.should_not be_blank
|
||||
JSON.parse(response.body)['name'].should eq("mychannel")
|
||||
end
|
||||
it 'returns XML' do
|
||||
@ -154,6 +155,7 @@ describe ChannelsController do
|
||||
end
|
||||
it 'returns JSON' do
|
||||
post :update, {:id => @channel.id, :key => @user.api_key, :name => 'newname', :format => 'json'}
|
||||
Channel.last.ranking.should_not be_blank
|
||||
JSON.parse(response.body)['name'].should eq("newname")
|
||||
end
|
||||
it 'returns XML' do
|
||||
|
@ -59,6 +59,13 @@ describe Channel do
|
||||
channel.should be_valid
|
||||
end
|
||||
|
||||
it "should set ranking correctly" do
|
||||
channel = Channel.create
|
||||
channel.set_ranking.should eq(15)
|
||||
channel.description = "foo"
|
||||
channel.set_ranking.should eq(35)
|
||||
end
|
||||
|
||||
it "should accept utf8" do
|
||||
channel = Channel.create(:name => "ǎ")
|
||||
channel.reload
|
||||
@ -128,3 +135,4 @@ describe Channel do
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user