ish_manager 0.1.8.59 → 0.1.8.60

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 73116e66f68529d0170c4b4a4b6aff18fb1862bd
4
- data.tar.gz: 07403b534867c689e2d17cfecc2ac25fe1934735
3
+ metadata.gz: 19377ade825fddd2bc25dd1c70455449440617c1
4
+ data.tar.gz: 8c5656d7f405c96d4e066ac95ac969c52a65b7e7
5
5
  SHA512:
6
- metadata.gz: 194440497f3543bf63281ba9aba1599c51ec16421f658aa716c378cd67f685347cc00ddf59ef72dfcef02588b8fe604730fb72a98cae3fda8161a05bffe8ab5d
7
- data.tar.gz: 26a8c3ddbbd2a43724d1eff69b97324f1c6e698a036f62caff07648253e92a766ae7ac9968f7e1cdbfb01ab3ae2b7498e3004fd0dd294f9bd0c9cc7ab9f95100
6
+ metadata.gz: 2222d95f13995024176f5ce8bb25fc1f57287bdd33d7119cfa7a04531461889300d83e70383a7284bc714e843a6ae2df0c99d9ca04fea0c719c0a2a588e746fc
7
+ data.tar.gz: 3a1f690799b3570346f1b8468477cf7ba664b0cbc6882d268493f14c0daa60e36cd9600dac280780c5c62c3122b02aae13d5b0fb197d0d5b504049c0014cb6c5
@@ -138,3 +138,15 @@ table.stock_watches td {
138
138
  table.stock_watches .trashy {
139
139
  background: #cecece;
140
140
  }
141
+
142
+ .stock-option {
143
+ /* border: 1px solid red; */
144
+ border-radius: 5px;
145
+ display: inline-block;
146
+ padding: 5px;
147
+ box-shadow: 2px 2px 5px grey;
148
+ margin: 5px;
149
+ }
150
+ .stock-option:hover {
151
+ box-shadow: 3px 3px 5px grey;
152
+ }
@@ -0,0 +1,8 @@
1
+
2
+ class IshManager::AllyController < IshManager::ApplicationController
3
+
4
+ def home
5
+ authorize! :ally_home, IshManager::Ability
6
+ end
7
+
8
+ end
@@ -43,13 +43,13 @@ class IshManager::PhotosController < IshManager::ApplicationController
43
43
  @photo.gallery.touch
44
44
 
45
45
  if @photo.save
46
- j = { :name => @photo.photo.original_filename,
46
+ j = {
47
+ :name => @photo.photo.original_filename,
47
48
  :size => @photo.photo.size,
48
49
  :url => @photo.photo.url( :large ),
49
50
  :thumbnail_url => @photo.photo.url( :thumb ),
50
51
  :delete_url => photo_path(@photo),
51
- :delete_type => 'DELETE',
52
- :name => @photo.name
52
+ :delete_type => 'DELETE'
53
53
  }
54
54
  render :json => [ j ]
55
55
  else
@@ -0,0 +1,60 @@
1
+
2
+ class IshManager::StockActionsController < IshManager::ApplicationController
3
+
4
+ PERMITTED_PARAMS = [ :stock_watch, :is_active ]
5
+
6
+ def index
7
+ authorize! :index, Ish::StockAction
8
+ @profiles = IshModels::UserProfile.all
9
+ @stock_watches_list = Ish::StockWatch.all.map { |w| [w.to_s, w.id] }
10
+ @stock_options_list = Ish::StockOption.all.map { |o| [ o.to_s, o.id] }
11
+ @stock_actions = Ish::StockAction.all.includes( :profile )
12
+ @stock_action = Ish::StockAction.new
13
+ render 'index', :layout => 'ish_manager/application_no_materialize'
14
+ end
15
+
16
+ def create
17
+ @stock_action = Ish::StockAction.new params.require(:ish_stock_action).permit( PERMITTED_PARAMS )
18
+ @stock_action.profile = current_user.profile
19
+ authorize! :create, @stock_action
20
+
21
+ flag = true
22
+ if params[:ish_stock_action][:stock_options]
23
+ stock_options = Ish::StockOption.where( :id.in => params[:ish_stock_action][:stock_options] )
24
+ flag = stock_options.update_all( :stock_action_id => @stock_action.id )
25
+ end
26
+ if flag
27
+ flag = @stock_action.save
28
+ end
29
+ if flag
30
+ flash[:notice] = 'Created stock action.'
31
+ else
32
+ flash[:alert] = "Cannot create stock action: #{@stock_action.errors.messages}"
33
+ end
34
+ redirect_to :action => 'index'
35
+ end
36
+
37
+ def update
38
+ @stock_action = Ish::StockAction.find params[:id]
39
+ authorize! :update, @stock_action
40
+
41
+ flag = true
42
+ if params[:ish_stock_action][:stock_options]
43
+ stock_options = Ish::StockOption.where( :id.in => params[:ish_stock_action][:stock_options] )
44
+ flag = stock_options.update_all( :stock_action_id => @stock_action.id )
45
+ end
46
+ if flag
47
+ flag = @stock_action.update_attributes params.require(:ish_stock_action).permit( PERMITTED_PARAMS )
48
+ end
49
+ if flag
50
+ flash[:notice] = 'Updated stock action.'
51
+ else
52
+ flash[:alert] = "Cannot update stock action: #{@stock_action.errors.messages}"
53
+ end
54
+ redirect_to :action => 'index'
55
+ end
56
+
57
+ end
58
+
59
+
60
+
@@ -0,0 +1,43 @@
1
+
2
+ class IshManager::StockOptionsController < IshManager::ApplicationController
3
+
4
+ def index
5
+ authorize! :index, Ish::StockOption
6
+ @profiles = IshModels::UserProfile.all
7
+ @stock_options = Ish::StockOption.all.includes( :profile )
8
+ @stock_option = Ish::StockOption.new
9
+ render 'index', :layout => 'ish_manager/application_no_materialize'
10
+ end
11
+
12
+ def create
13
+ @stock_option = Ish::StockOption.new params[:ish_stock_option].permit!
14
+ @stock_option.profile = current_user.profile
15
+ authorize! :create, @stock_option
16
+ flag = @stock_option.save
17
+
18
+ byebug
19
+
20
+ if flag
21
+ flash[:notice] = 'Created stock option.'
22
+ else
23
+ flash[:alert] = "Cannot create stock option: #{@stock_option.errors.messages}"
24
+ end
25
+ redirect_to :action => 'index'
26
+ end
27
+
28
+ def update
29
+ @stock_option = Ish::StockOption.find params[:id]
30
+ authorize! :update, @stock_option
31
+ flag = @stock_option.update_attributes params[:ish_stock_option].permit!
32
+ if flag
33
+ flash[:notice] = 'Updated stock option.'
34
+ else
35
+ flash[:alert] = "Cannot update stock option: #{@stock_option.errors.messages}"
36
+ end
37
+ redirect_to :action => 'index'
38
+ end
39
+
40
+ end
41
+
42
+
43
+
@@ -2,15 +2,15 @@
2
2
  class IshManager::StockWatchesController < IshManager::ApplicationController
3
3
 
4
4
  def index
5
- authorize! :index, IshModels::StockWatch
5
+ authorize! :index, Ish::StockWatch
6
6
  @profiles = IshModels::UserProfile.all
7
- @stock_watches = IshModels::StockWatch.all.includes( :profile )
8
- @stock_watch = IshModels::StockWatch.new
7
+ @stock_watches = Ish::StockWatch.all.includes( :profile )
8
+ @stock_watch = Ish::StockWatch.new
9
9
  render 'index', :layout => 'ish_manager/application_no_materialize'
10
10
  end
11
11
 
12
12
  def create
13
- @stock_watch = IshModels::StockWatch.new params[:ish_models_stock_watch].permit!
13
+ @stock_watch = Ish::StockWatch.new params[:ish_stock_watch].permit!
14
14
  authorize! :create, @stock_watch
15
15
  flag = @stock_watch.save
16
16
  if flag
@@ -22,9 +22,9 @@ class IshManager::StockWatchesController < IshManager::ApplicationController
22
22
  end
23
23
 
24
24
  def update
25
- @stock_watch = IshModels::StockWatch.find params[:id]
25
+ @stock_watch = Ish::StockWatch.find params[:id]
26
26
  authorize! :update, @stock_watch
27
- flag = @stock_watch.update_attributes params[:ish_models_stock_watch].permit!
27
+ flag = @stock_watch.update_attributes params[:ish_stock_watch].permit!
28
28
  if flag
29
29
  flash[:notice] = 'Updated stock watch.'
30
30
  else
@@ -25,7 +25,7 @@ class IshManager::Ability
25
25
  can [ :show, :edit, :update, :create_newsitem, :new_feature, :create_feature ], ::Site do |site|
26
26
  !site.is_private && !site.is_trash
27
27
  end
28
- can [ :manage ], IshModels::StockWatch
28
+ can [ :manage ], Ish::StockWatch
29
29
 
30
30
  # can [ :new_feature, :create_feature ], ::Tag
31
31
 
@@ -0,0 +1,6 @@
1
+
2
+ %h5 Ally Home
3
+
4
+ %ul
5
+ %li= link_to 'Stock Options (positions)', stock_options_path
6
+ %li= link_to 'Stock Watches', stock_watches_path
@@ -14,6 +14,10 @@
14
14
  %li{ :class => params[:controller] == 'ish_manager/tags' ? 'active' : '' }= link_to 'Tags', tags_path
15
15
  %li{ :class => params[:controller] == 'ish_manager/venues' ? 'active' : '' }= link_to 'Venues', venues_path
16
16
  %li{ :class => params[:controller] == 'ish_manager/videos' ? 'active' : '' }= link_to 'Videos', videos_path
17
- %li{ :class => params[:controller] == 'ish_manager/stock_watches' ? 'active' : '' }= link_to 'Ally', stock_watches_path
17
+ %ul.nav.nav-pills
18
+ %li{ :class => params[:controller] == 'ish_manager/ally' ? 'active' : '' }= link_to 'Ally', ally_root_path
19
+ %li{ :class => params[:controller] == 'ish_manager/stock_actions' ? 'active' : '' }= link_to 'Stock Actions', stock_actions_path
20
+ %li{ :class => params[:controller] == 'ish_manager/stock_options' ? 'active' : '' }= link_to 'Stock Options', stock_options_path
21
+ %li{ :class => params[:controller] == 'ish_manager/stock_watches' ? 'active' : '' }= link_to 'Stock Watches', stock_watches_path
18
22
  %hr
19
23
 
@@ -0,0 +1,27 @@
1
+
2
+ -#
3
+ -# ish_manager / stock_actions / _form
4
+ -#
5
+
6
+ - url = stock_actions_path if !stock_action.persisted?
7
+ - url = stock_action_path( stock_action ) if stock_action.persisted?
8
+
9
+ - if stock_action.profile
10
+ Belongs to #{stock_action.profile.email}
11
+ = form_for stock_action, :url => url, :html => { :class => 'form-inline well' } do |f|
12
+ .form-group
13
+ %label.control-label Active?
14
+ = f.check_box :is_active
15
+ .form-group
16
+ - which_selected = stock_action.stock_watch ? stock_action.stock_watch.id : nil
17
+ %label.control-label When stock watch
18
+ = f.select :stock_watch, options_for_select( @stock_watches_list, :selected => which_selected )
19
+ .form-group
20
+ %label.control-label Sell options
21
+ - @stock_options_list.each do |item|
22
+ - checked = stock_action.stock_options.map(&:id).include?(item[1])
23
+ .stock-option
24
+ = f.check_box :stock_options, { :multiple => true, :checked => checked }, item[1], nil
25
+ = item[0]
26
+ .form-group
27
+ = f.submit ">", :class => %w(btn blue)
@@ -0,0 +1,13 @@
1
+
2
+ %h4 Stock Actions
3
+
4
+ %p <b>Note:</b> a stock option cannot belong to two actions.
5
+
6
+ %hr
7
+ - @stock_actions.each do |stock_action|
8
+ = render 'form', :stock_action => stock_action
9
+
10
+ %hr
11
+ %h5 New
12
+ = render 'form', :stock_action => @stock_action
13
+
@@ -0,0 +1,22 @@
1
+
2
+ - url = stock_options_path if !stock_option.persisted?
3
+ - url = stock_options_path( stock_option ) if stock_option.persisted?
4
+
5
+ - if stock_option.profile
6
+ Belongs to #{stock_option.profile.email}
7
+ = form_for stock_option, :url => url, :html => { :class => 'form-inline well' } do |f|
8
+ .form-group
9
+ = f.text_field :ticker, :class => 'form-control', :placeholder => 'ticker'
10
+ .form-group
11
+ = f.text_field :expires_on, :class => 'form-control', :placeholder => 'YYYYMMDD' # :placeholder => 'MON(TH) DD YYYY'
12
+ .form-group
13
+ %label.control-label $
14
+ = f.number_field :strike, :step => 0.01, :class => 'form-control', :placeholder => '0.01'
15
+ .form-group
16
+ %label.control-label CALL/PUT?
17
+ = f.select :direction, options_for_select( Ish::StockOption::DIRECTIONS.map{|d|[d,d]}, :selected => stock_option.direction )
18
+ .form-group
19
+ %label.control-label quantity:
20
+ = f.number_field :quantity, :placeholder => 0
21
+ .form-group
22
+ = f.submit ">", :class => %w(btn blue)
@@ -0,0 +1,11 @@
1
+
2
+ %h4 Stock Options Index
3
+
4
+ %hr
5
+ - @stock_options.each do |stock_option|
6
+ = render 'form', :stock_option => stock_option
7
+
8
+ %hr
9
+ %h5 New
10
+ = render 'form', :stock_option => @stock_option
11
+
@@ -4,7 +4,7 @@
4
4
 
5
5
  = form_for stock_watch, :url => url, :html => { :class => 'form-inline well' } do |f|
6
6
  .form-group
7
- = f.select :action, options_for_select( IshModels::StockWatch::ACTIONS.map{|a|[a,a]}, :selected => stock_watch.action )
7
+ = f.select :action, options_for_select( Ish::StockWatch::ACTIONS.map{|a|[a,a]}, :selected => stock_watch.action )
8
8
  .form-group
9
9
  = f.select :profile, options_for_select( [[nil,nil]]+@profiles.map{|p|[p.email,p.id]}, :selected => stock_watch.profile ? stock_watch.profile.id : nil )
10
10
  .form-group
@@ -12,7 +12,7 @@
12
12
  = f.text_field :ticker, :class => 'form-control', :placeholder => 'ticker'
13
13
  .form-group
14
14
  %label.control-label Price
15
- = f.select :direction, options_for_select( IshModels::StockWatch::DIRECTIONS.map{|d|[d,d]}, :selected => stock_watch.direction )
15
+ = f.select :direction, options_for_select( Ish::StockWatch::DIRECTIONS.map{|d|[d,d]}, :selected => stock_watch.direction )
16
16
  .form-group
17
17
  %label.control-label $
18
18
  = f.number_field :price, :step => 0.01, :placeholder => "0.01"
@@ -1,5 +1,5 @@
1
1
 
2
- %h4 Ally / Home
2
+ %h4 Stock Watches
3
3
 
4
4
  %hr
5
5
  - @stock_watches.each do |stock|
data/config/routes.rb CHANGED
@@ -33,10 +33,10 @@ IshManager::Engine.routes.draw do
33
33
  resources :reports
34
34
  end
35
35
 
36
+ get 'ally', :to => 'ally#home', :as => :ally_root
37
+ resources :stock_actions
38
+ resources :stock_options
36
39
  resources :stock_watches
37
- # scope :ally, :as => 'ally' do
38
- # root :to => 'ally#home'
39
- # end
40
40
 
41
41
  resources :tags
42
42
 
@@ -18,25 +18,33 @@ namespace :ish_manager do
18
18
  puts 'OK'
19
19
  end
20
20
 
21
- desc 'watch the stocks'
21
+ desc 'watch the stocks, and trigger actions'
22
22
  task :watch_stocks => :environment do
23
23
  while true
24
- stocks = IshModels::StockWatch.where( :notification_type => :EMAIL )
24
+ stocks = Ish::StockWatch.where( :notification_type => :EMAIL )
25
25
  puts! stocks.map(&:ticker), "Watching these stocks on #{Time.now}"
26
26
  stocks.each do |stock|
27
27
  begin
28
28
  Timeout::timeout( 10 ) do
29
29
  r = HTTParty.get "https://www.alphavantage.co/query?function=TIME_SERIES_INTRADAY&symbol=#{stock.ticker}&interval=1min&apikey=X1C5GGH5MZSXMF3O"
30
- r = JSON.parse( r.body )['Time Series (1min)']
31
- r = r[r.keys.first]['4. close'].to_f
32
- if stock.direction == :ABOVE && r >= stock.price ||
33
- stock.direction == :BELOW && r <= stock.price
34
- IshManager::ApplicationMailer.stock_alert( stock ).deliver
35
- end
36
30
  end
37
31
  rescue Exception => e
38
32
  puts! e, 'e in :watch_stocks'
39
33
  end
34
+ r = JSON.parse( r.body )['Time Series (1min)']
35
+ r = r[r.keys.first]['4. close'].to_f
36
+ if stock.direction == :ABOVE && r >= stock.price ||
37
+ stock.direction == :BELOW && r <= stock.price
38
+ IshManager::ApplicationMailer.stock_alert( stock ).deliver
39
+
40
+ =begin
41
+ # actions
42
+ stock.stock_actions.where( :is_active => true ).each do |action|
43
+ # @TODO: actions
44
+ end
45
+ =end
46
+
47
+ end
40
48
  end
41
49
  sleep 60
42
50
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ish_manager
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.8.59
4
+ version: 0.1.8.60
5
5
  platform: ruby
6
6
  authors:
7
7
  - piousbox
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-10-25 00:00:00.000000000 Z
11
+ date: 2017-10-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -108,6 +108,20 @@ dependencies:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
110
  version: '1.0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: mongoid-autoinc
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '6.0'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '6.0'
111
125
  description: Description of IshManager.
112
126
  email:
113
127
  - piousbox@gmail.com
@@ -138,6 +152,7 @@ files:
138
152
  - app/assets/stylesheets/ish_manager/materialize.css
139
153
  - app/assets/stylesheets/ish_manager/trash/bootstrap.min.css
140
154
  - app/assets/stylesheets/ish_manager/trash/bootstrap.min.css.map
155
+ - app/controllers/ish_manager/ally_controller.rb
141
156
  - app/controllers/ish_manager/application_controller.rb
142
157
  - app/controllers/ish_manager/cities_controller.rb
143
158
  - app/controllers/ish_manager/features_controller.rb
@@ -147,6 +162,8 @@ files:
147
162
  - app/controllers/ish_manager/photos_controller.rb
148
163
  - app/controllers/ish_manager/reports_controller.rb
149
164
  - app/controllers/ish_manager/sites_controller.rb
165
+ - app/controllers/ish_manager/stock_actions_controller.rb
166
+ - app/controllers/ish_manager/stock_options_controller.rb
150
167
  - app/controllers/ish_manager/stock_watches_controller.rb
151
168
  - app/controllers/ish_manager/tags_controller.rb
152
169
  - app/controllers/ish_manager/user_profiles_controller.rb
@@ -162,6 +179,7 @@ files:
162
179
  - app/models/ish_manager/ability.rb
163
180
  - app/models/ish_manager/ability.rb~
164
181
  - app/models/ish_manager/application_record.rb
182
+ - app/views/ish_manager/ally/home.haml
165
183
  - app/views/ish_manager/application/_form_errors.haml
166
184
  - app/views/ish_manager/application/_main_footer.haml
167
185
  - app/views/ish_manager/application/_main_header.haml
@@ -256,6 +274,10 @@ files:
256
274
  - app/views/ish_manager/sites/index.haml
257
275
  - app/views/ish_manager/sites/new.haml
258
276
  - app/views/ish_manager/sites/show.haml
277
+ - app/views/ish_manager/stock_actions/_form.haml
278
+ - app/views/ish_manager/stock_actions/index.haml
279
+ - app/views/ish_manager/stock_options/_form.haml
280
+ - app/views/ish_manager/stock_options/index.haml
259
281
  - app/views/ish_manager/stock_watches/_form.haml
260
282
  - app/views/ish_manager/stock_watches/index.haml
261
283
  - app/views/ish_manager/tags/_features.haml