admin_data 1.1.9 → 1.1.10

Sign up to get free protection for your applications and to get access to all the features.
@@ -10,7 +10,7 @@ module AdminData
10
10
 
11
11
  before_filter :build_klasses, :build_drop_down_for_klasses, :check_page_parameter, :prepare_drop_down_klasses
12
12
 
13
- attr_reader :klass, :model
13
+ attr_reader :klass
14
14
 
15
15
  protected
16
16
 
@@ -56,13 +56,6 @@ module AdminData
56
56
  end
57
57
  end
58
58
 
59
- def _build_custom_klasses
60
- _build_all_klasses.compact.select do |klass_local|
61
- @klass = klass_local
62
- is_allowed_to_view_klass?
63
- end
64
- end
65
-
66
59
  def remove_klasses_without_table(klasses)
67
60
  klasses.select { |k| k.ancestors.include?(ActiveRecord::Base) && k.connection.table_exists?(k.table_name) }
68
61
  end
@@ -82,8 +82,8 @@ module AdminData
82
82
  condition = {primary_key => conditional_id}
83
83
 
84
84
  _proc = AdminData.config.find_conditions[@klass.name]
85
- if _proc && find_conditions = _proc.call(params)
86
- condition = find_conditions.fetch(:conditions) if find_conditions.has_key?(:conditions)
85
+ if _proc && (find_conditions = _proc.call(params)) && find_conditions.has_key?(:conditions)
86
+ condition = find_conditions.fetch(:conditions)
87
87
  end
88
88
 
89
89
  unless @model = @klass.find(:first, :conditions => condition)
@@ -2,6 +2,8 @@ module AdminData
2
2
 
3
3
  class FeedController < ApplicationController
4
4
 
5
+ before_filter :ensure_is_allowed_to_view_feed
6
+
5
7
  def index
6
8
  if params[:klasss].blank?
7
9
  render :text => "Usage: http://localhost:3000/admin_data/feed/user replace user with your model name"
@@ -8,20 +8,18 @@ module AdminData
8
8
  render :nothing => true, :status => 404 and return
9
9
  end
10
10
 
11
- opts = {:text => File.read(path), :cache => true}
12
-
13
11
  case params[:file]
14
12
  when /\.css$/i
15
- opts[:content_type] = "text/css"
13
+ content_type = "text/css"
16
14
  when /\.js$/i
17
- opts[:content_type] = "text/javascript"
15
+ content_type = "text/javascript"
18
16
  when /\.png$/i
19
- opts[:content_type] = "image/png"
17
+ content_type = "image/png"
20
18
  else
21
19
  render :nothing => true, :status => 404 and return
22
20
  end
23
21
 
24
- render opts
22
+ render({:text => File.read(path), :cache => true, :content_type => content_type})
25
23
  end
26
24
 
27
25
  end
@@ -75,7 +75,9 @@ module AdminData
75
75
  render :text => "#{params[:base]} is an invalid value", :status => :not_found
76
76
  return
77
77
  end
78
- if ActiveRecordUtil.declared_has_many_association_names(model_klass).include?(params[:children]) || ActiveRecordUtil.declared_habtm_association_names(model_klass).include?(params[:children])
78
+
79
+ ar_util = ActiveRecordUtil.new(model_klass)
80
+ if ar_util.declared_has_many_association_names.include?(params[:children]) || ar_util.declared_habtm_association_names.include?(params[:children])
79
81
  #proceed
80
82
  else
81
83
  render :text => "#{params[:children]} is not a valid has_many association", :status => :not_found
@@ -62,7 +62,7 @@ module AdminData
62
62
  end
63
63
 
64
64
  def has_one(model, klass)
65
- tmp = AdminData::ActiveRecordUtil.declared_has_one_association_names(klass)
65
+ tmp = AdminData::ActiveRecordUtil.new(klass).declared_has_one_association_names
66
66
  tmp.inject('') do |output, ho|
67
67
  begin
68
68
  label = ho
@@ -79,13 +79,13 @@ module AdminData
79
79
  end
80
80
 
81
81
  def has_many_data(model, klass)
82
- array = AdminData::ActiveRecordUtil.declared_has_many_association_names(klass).map do |m|
82
+ array = AdminData::ActiveRecordUtil.new(klass).declared_has_many_association_names.map do |m|
83
83
  begin
84
84
  count = model.send(m.intern).count
85
85
  label = m.to_s + '(' + count.to_s + ')'
86
86
  output = label
87
87
  if count > 0
88
- has_many_klass_name = AdminData::ActiveRecordUtil.klass_for_association_type_and_name(model.class, :has_many, m).name.underscore
88
+ has_many_klass_name = AdminData::ActiveRecordUtil.new(model.class).klass_for_association_type_and_name(:has_many, m).name.underscore
89
89
  output = link_to(label, admin_data_search_path( :klass => has_many_klass_name,
90
90
  :children => m,
91
91
  :base => klass.name.underscore,
@@ -100,7 +100,7 @@ module AdminData
100
100
  end
101
101
 
102
102
  def belongs_to_data(model, klass)
103
- AdminData::ActiveRecordUtil.declared_belongs_to_association_names(klass).map do |assoc_name|
103
+ AdminData::ActiveRecordUtil.new(klass).declared_belongs_to_association_names.map do |assoc_name|
104
104
  begin
105
105
  output = assoc_name
106
106
  if belongs_to_record = model.send(assoc_name)
@@ -114,14 +114,14 @@ module AdminData
114
114
  end
115
115
 
116
116
  def habtm_data(model, klass)
117
- AdminData::ActiveRecordUtil.declared_habtm_association_names(klass).map do |assoc_name|
117
+ AdminData::ActiveRecordUtil.new(klass).declared_habtm_association_names.map do |assoc_name|
118
118
  begin
119
119
  count = model.send(assoc_name.intern).count
120
120
  label = assoc_name + '(' + count.to_s + ')'
121
121
  output = label
122
122
 
123
123
  if count > 0 then
124
- has_many_klass_name = AdminData::ActiveRecordUtil.klass_for_association_type_and_name(model.class, :has_and_belongs_to_many, assoc_name).name.underscore
124
+ has_many_klass_name = AdminData::ActiveRecordUtil.new(model.class).klass_for_association_type_and_name(:has_and_belongs_to_many, assoc_name).name.underscore
125
125
  output = link_to(label, admin_data_search_path( :klass => has_many_klass_name,
126
126
  :children => assoc_name,
127
127
  :base => klass.name.underscore,
@@ -148,7 +148,7 @@ module AdminData
148
148
 
149
149
  if col.primary
150
150
  html << model.new_record? ? '(auto)' : model.id
151
- elsif get_reflection_for_column(klass, col) && AdminData.config.display_assoc?( klass.name )
151
+ elsif get_reflection_for_column(klass, col) && AdminData.config.display_assoc?( klass.name )
152
152
  form_field_for_association_records(klass, col, f, html)
153
153
  else
154
154
  handle_column_type(col, html, model, column_value, f)
@@ -180,7 +180,7 @@ module AdminData
180
180
  def form_field_for_habtm_records(klass, model, f, html)
181
181
  begin
182
182
  html = []
183
- AdminData::ActiveRecordUtil.delcared_habtm_association_names(klass).each do |k|
183
+ AdminData::ActiveRecordUtil.new(klass).delcared_habtm_association_names.each do |k|
184
184
  assoc_klass = AdminData::Util.get_class_name_for_habtm_association(model, k)
185
185
 
186
186
  html << "<div class='col_box'>"
@@ -1,7 +1,7 @@
1
1
  <div class="block rounded">
2
2
  <h3>Association Information</h3>
3
3
  <div class='content association_info'>
4
- <% if AdminData::ActiveRecordUtil.has_association_info?(klass) %>
4
+ <% if AdminData::ActiveRecordUtil.new(klass).has_association_info? %>
5
5
  <%= render 'admin_data/crud/association/belongs_to_info' , :klass => klass, :model => model %>
6
6
  <%= render 'admin_data/crud/association/has_one_info', :klass => klass, :model => model %>
7
7
  <%= render 'admin_data/crud/association/has_many_info' , :klass => klass, :model => model %>
@@ -1,4 +1,4 @@
1
- <% if AdminData::ActiveRecordUtil.declared_belongs_to_association_names(klass).any? %>
1
+ <% if AdminData::ActiveRecordUtil.new(klass).declared_belongs_to_association_names.any? %>
2
2
  <p class='belongs_to'>
3
3
  <strong>belongs_to :</strong>
4
4
  &nbsp;
@@ -1,4 +1,4 @@
1
- <% if AdminData::ActiveRecordUtil.declared_habtm_association_names(klass).any? %>
1
+ <% if AdminData::ActiveRecordUtil.new(klass).declared_habtm_association_names.any? %>
2
2
  <p>
3
3
  <strong>has_and_belongs_to_many :</strong>
4
4
  <%= habtm_data(model, klass).html_safe %>
@@ -1,4 +1,4 @@
1
- <% if AdminData::ActiveRecordUtil.declared_has_many_association_names(klass).any? %>
1
+ <% if AdminData::ActiveRecordUtil.new(klass).declared_has_many_association_names.any? %>
2
2
  <p>
3
3
  <strong>has_many :</strong>
4
4
  <%= has_many_data(model, klass).html_safe %>
@@ -1,4 +1,4 @@
1
- <% if AdminData::ActiveRecordUtil.declared_has_one_association_names(klass).any? %>
1
+ <% if AdminData::ActiveRecordUtil.new(klass).declared_has_one_association_names.any? %>
2
2
  <p>
3
3
  <strong>has_one :</strong>
4
4
  <%= has_one(model, klass).html_safe %>
@@ -8,7 +8,7 @@
8
8
  </div>
9
9
  <% end %>
10
10
 
11
- <% if AdminData::ActiveRecordUtil.declared_habtm_association_names(klass).any? %>
11
+ <% if AdminData::ActiveRecordUtil.new(klass).declared_habtm_association_names.any? %>
12
12
  <div class='data'>
13
13
  <%= form_field_for_habtm_records(klass, @model, f, '').html_safe %>
14
14
  </div>
data/config/routes.rb CHANGED
@@ -1,9 +1,5 @@
1
1
  Rails.application.routes.draw do
2
2
 
3
- namespace(:admin_data) do
4
- match '/feed/:klasss' => "feed#index", :defaults => { :format =>'rss' }, :as => :feed
5
- end
6
-
7
3
  namespace(:admin_data) do
8
4
  scope :admin_data do
9
5
  controller "crud" do
@@ -23,8 +19,13 @@ Rails.application.routes.draw do
23
19
  end
24
20
 
25
21
  match '/table_structure/:klass' => "table_structure#index", :as => :table_structure
22
+
26
23
  match '/quick_search/:klass' => "search#quick_search", :as => :search
24
+
27
25
  match '/advance_search/:klass' => "search#advance_search", :as => :advance_search
26
+
27
+ match '/feed/:klasss' => "feed#index", :defaults => { :format =>'rss' }, :as => :feed
28
+
28
29
  match '/public/*file' => "public#serve"
29
30
 
30
31
  root :to => "home#index"
@@ -1,54 +1,50 @@
1
1
  module AdminData
2
2
  class ActiveRecordUtil
3
3
 
4
+ attr_accessor :klass
5
+
6
+ def initialize(klass)
7
+ @klass = klass
8
+ end
9
+
4
10
  # class User
5
11
  # has_and_belongs_to_many :clubs
6
12
  # end
7
13
  #
8
- # User.declared_habtm_association_names(Club)
14
+ # ActiveRecordUtil.new(User).declared_habtm_association_names
9
15
  # #=> ['clubs']
10
- def self.declared_habtm_association_names(klass)
11
- delcared_association_names_for(klass, :has_and_belongs_to_many).map(&:name).map(&:to_s)
16
+ def declared_habtm_association_names
17
+ delcared_association_names_for(:has_and_belongs_to_many).map(&:name).map(&:to_s)
12
18
  end
13
19
 
14
20
  # class User
15
21
  # belongs_to :club
16
22
  # end
17
23
  #
18
- # User.declared_belongs_to_association_names(Club)
24
+ # ActiveRecordUtil.new(User).declared_belongs_to_association_names
19
25
  # #=> ['club']
20
- def self.declared_belongs_to_association_names(klass)
21
- delcared_association_names_for(klass, :belongs_to).map(&:name).map(&:to_s)
26
+ def declared_belongs_to_association_names
27
+ delcared_association_names_for(:belongs_to).map(&:name).map(&:to_s)
22
28
  end
23
29
 
24
30
  # class User
25
31
  # has_one :car
26
32
  # end
27
33
  #
28
- # User.declared_has_one_association_names(Car)
34
+ # ActiveRecordUtil.new(User).declared_has_one_association_names
29
35
  # #=> ['car']
30
- def self.declared_has_one_association_names(klass)
31
- delcared_association_names_for(klass, :has_one).map(&:name).map(&:to_s)
36
+ def declared_has_one_association_names
37
+ delcared_association_names_for(:has_one).map(&:name).map(&:to_s)
32
38
  end
33
39
 
34
40
  # class User
35
41
  # has_many :cars
36
42
  # end
37
43
  #
38
- # User.declared_has_many_association_names(Car)
44
+ # ActiveRecordUtil.new(User).declared_has_many_association_names
39
45
  # #=> ['cars']
40
- def self.declared_has_many_association_names(klass)
41
- delcared_association_names_for(klass, :has_many).map(&:name).map(&:to_s)
42
- end
43
-
44
- # returns declared association names like
45
- # #=> ['comments']
46
- # #=> ['positive_comments']
47
- # #=> ['negative_comments']
48
- def self.delcared_association_names_for(klass, association_type)
49
- klass.name.camelize.constantize.reflections.values.select do |value|
50
- value.macro == association_type
51
- end
46
+ def declared_has_many_association_names
47
+ delcared_association_names_for(:has_many).map(&:name).map(&:to_s)
52
48
  end
53
49
 
54
50
  # returns an array of classes
@@ -57,11 +53,11 @@ module AdminData
57
53
  # has_and_belongs_to_many :clubs
58
54
  # end
59
55
  #
60
- # ActiveRecordUtil.habtm_klasses_for(User)
56
+ # ActiveRecordUtil.new(User).habtm_klasses_for
61
57
  # #=> [Club]
62
- def self.habtm_klasses_for(klass)
63
- declared_habtm_association_names(klass).map do |assoc_name|
64
- klass_for_association_type_and_name(klass, :has_and_belongs_to_many, assoc_name)
58
+ def habtm_klasses_for
59
+ declared_habtm_association_names.map do |assoc_name|
60
+ klass_for_association_type_and_name(:has_and_belongs_to_many, assoc_name)
65
61
  end
66
62
  end
67
63
 
@@ -71,23 +67,35 @@ module AdminData
71
67
  # has_many :comments
72
68
  # end
73
69
  #
74
- # ActiveRecordUtil.klass_for_association_type_and_name(User, :has_many, 'comments') #=> Comment
70
+ # ActiveRecordUtil.new(User).klass_for_association_type_and_name(:has_many, 'comments')
71
+ # #=> Comment
75
72
  #
76
- def self.klass_for_association_type_and_name(klass, association_type, association_name)
73
+ def klass_for_association_type_and_name(association_type, association_name)
77
74
  data = klass.name.camelize.constantize.reflections.values.detect do |value|
78
75
  value.macro == association_type && value.name.to_s == association_name
79
76
  end
80
77
  data.klass if data # output of detect from hash is an array with key and value
81
78
  end
82
- # TODO test with polymorphic
83
-
84
79
 
85
80
  # returns false if the given Klass has no association info. Otherwise returns true.
86
- def self.has_association_info?(k)
87
- AdminData::ActiveRecordUtil.declared_belongs_to_association_names(k).any? ||
88
- AdminData::ActiveRecordUtil.declared_has_many_association_names(k).any? ||
89
- AdminData::ActiveRecordUtil.declared_has_many_association_names(k).any? ||
90
- AdminData::ActiveRecordUtil.declared_habtm_association_names(k).any?
81
+ def has_association_info?
82
+ declared_belongs_to_association_names.any? ||
83
+ declared_has_many_association_names.any? ||
84
+ declared_has_many_association_names.any? ||
85
+ declared_habtm_association_names.any?
86
+ end
87
+
88
+ private
89
+
90
+ # returns declared association names like
91
+ #
92
+ # #=> ['comments']
93
+ # #=> ['positive_comments']
94
+ # #=> ['negative_comments']
95
+ def delcared_association_names_for(association_type)
96
+ klass.name.camelize.constantize.reflections.values.select do |value|
97
+ value.macro == association_type
98
+ end
91
99
  end
92
100
 
93
101
  end
@@ -8,7 +8,7 @@ module AdminData
8
8
  end
9
9
 
10
10
  def verify(controller)
11
- controller.authenticate_or_request_with_http_basic { |_userid, _password| (_userid == @userid) && (_password == @password) }
11
+ controller.authenticate_or_request_with_http_basic { |_u, _p| (_u == @userid) && (_p == @password) }
12
12
  end
13
13
 
14
14
  end
@@ -1,3 +1,3 @@
1
1
  module AdminData
2
- VERSION = '1.1.9'
2
+ VERSION = '1.1.10'
3
3
  end
@@ -1,8 +1,24 @@
1
- AdminData::Authenticator.extend(
2
- Module.new{
3
- def verify(controller)
4
- #TODO use rspec double code here. This is a very bad hack
1
+ def mock_authenticator_with_authentication_returning_true
2
+ #TODO use rspec double code here. This is a very bad hack
3
+ AdminData::Authenticator.class_eval do
4
+ def verify(*args)
5
5
  true
6
6
  end
7
- }
8
- )
7
+ end
8
+ end
9
+
10
+ def mock_authenticator_with_authentication_returning_false
11
+ AdminData::Authenticator.class_eval do
12
+ def verify(*args)
13
+ false
14
+ end
15
+ end
16
+ end
17
+
18
+ When /^mocked feed authentication returns true$/ do
19
+ mock_authenticator_with_authentication_returning_true
20
+ end
21
+
22
+ When /^mocked feed authentication returns false$/ do
23
+ mock_authenticator_with_authentication_returning_false
24
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: admin_data
3
3
  version: !ruby/object:Gem::Version
4
- hash: 1
4
+ hash: 7
5
5
  prerelease: false
6
6
  segments:
7
7
  - 1
8
8
  - 1
9
- - 9
10
- version: 1.1.9
9
+ - 10
10
+ version: 1.1.10
11
11
  platform: ruby
12
12
  authors:
13
13
  - Neeraj Singh
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-12-22 00:00:00 -05:00
18
+ date: 2010-12-23 00:00:00 -05:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency