ish_manager 0.1.8.281 → 0.1.8.282

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
  SHA256:
3
- metadata.gz: 86ca58721ef98208906684dba65e6779fd6f9361478d5ec4bd6c92f57e230c4c
4
- data.tar.gz: 8fc5fa254d82d6c7429d40d0d0b8221810dbe44ef2ba952d09525ae431285075
3
+ metadata.gz: 62ac19ed592915fa7a6434a0a61ee2b9efa4d1cd988ac354391abe13e061138f
4
+ data.tar.gz: 44beb8d38194b1615c5d2d40168ac1acb8d2eccd53034f5652e3a425caecf7a8
5
5
  SHA512:
6
- metadata.gz: fab190a5c5251be2723bc4bcc8fbf4740405e49e9dba4dedb97769500fc75183308056b588dde28fd4c0ffe7851eb403fc72d86e396ae816574d658c41bcf061
7
- data.tar.gz: 7eaa891ba83f9d90de248f7b082e16a3777847c800987859a320449d02c7358562d2a96defac1a5e5b5daff177446ad9dfecd7d3bf1267199b32f3d2c275fa4d
6
+ metadata.gz: a946c5fd3c36b6156b323015e647ced9570b22ea41962133db97a7d01bc8887784e78d06f542750714c7a8fee04fafbc239f465bcc0d253e88bd5ccaf168d5c5
7
+ data.tar.gz: 8467f4cbb960f3d1eba742d834660a73eb7817486ab5fd98389276f22f945c66cb3653888b646c68b7ecbc173c14ba47cf829566eb36a0bc5d81ed9e40dd4053
@@ -0,0 +1,60 @@
1
+
2
+ class IshManager::OptionWatchesController < IshManager::ApplicationController
3
+
4
+ layout 'ish_manager/application2'
5
+
6
+ ## alphabetized : )
7
+
8
+ def create
9
+ @option_watch = Warbler::OptionWatch.new permitted_params
10
+ authorize! :create, @option_watch
11
+ flag = @option_watch.save
12
+ if flag
13
+ flash[:notice] = 'Created option watch.'
14
+ else
15
+ flash[:alert] = "Cannot create option watch: #{@option_watch.errors.messages}"
16
+ end
17
+ redirect_to controller: 'stock_watches', action: 'index'
18
+ end
19
+
20
+ def destroy
21
+ @w = Warbler::StockWatch.find params[:id]
22
+ authorize! :destroy, @w
23
+ flag = @w.destroy
24
+ if flag
25
+ flash[:notice] = 'Success.'
26
+ else
27
+ flash[:alert] = @w.errors.messages
28
+ end
29
+ redirect_to controller: 'stock_watches', action: 'index'
30
+ end
31
+
32
+ def index
33
+ authorize! :open_permission, IshManager::Ability
34
+ flash[:notice] = 'Redirected option->stock watch index'
35
+ # redirect_to controller: IshManager::StockWatchesController, action: 'index'
36
+ redirect_to controller: 'stock_watches', action: 'index'
37
+ end
38
+
39
+ def update
40
+ @option_watch = Warbler::OptionWatch.find params[:id]
41
+ authorize! :update, @option_watch
42
+ flag = @option_watch.update_attributes permitted_params
43
+ if flag
44
+ flash[:notice] = 'Updated option watch.'
45
+ else
46
+ flash[:alert] = "Cannot update option watch: #{@option_watch.errors.messages}"
47
+ end
48
+ redirect_to controller: 'stock_watches', action: 'index'
49
+ end
50
+
51
+ private
52
+
53
+ def permitted_params
54
+ params[:warbler_option_watch].permit!
55
+ end
56
+
57
+ end
58
+
59
+
60
+
@@ -3,6 +3,8 @@ class IshManager::StockWatchesController < IshManager::ApplicationController
3
3
 
4
4
  layout 'ish_manager/application2'
5
5
 
6
+ ## alphabetized : )
7
+
6
8
  def create
7
9
  @stock_watch = Warbler::StockWatch.new permitted_params
8
10
  authorize! :create, @stock_watch
@@ -33,6 +35,8 @@ class IshManager::StockWatchesController < IshManager::ApplicationController
33
35
  @stock_watches = Warbler::StockWatch.order_by( ticker: :asc, direction: :asc, price: :desc
34
36
  ).includes( :profile )
35
37
  @stock_watch = Warbler::StockWatch.new
38
+ @option_watches = Warbler::OptionWatch.order_by( ticker: :asc, direction: :asc, price: :desc ).includes( :profile )
39
+ @option_watch = Warbler::OptionWatch.new
36
40
  end
37
41
 
38
42
  def update
@@ -7,7 +7,7 @@ class IshManager::Ability
7
7
  #
8
8
  # signed in user
9
9
  #
10
- unless user.blank?
10
+ if !user.blank?
11
11
 
12
12
  #
13
13
  # only sudoer... total power
@@ -100,6 +100,8 @@ class IshManager::Ability
100
100
  #
101
101
  user ||= ::User.new
102
102
 
103
+ can [ :open_permission ], IshManager::Ability
104
+
103
105
  can [ :show ], ::Gallery do |gallery|
104
106
  gallery.is_public
105
107
  end
@@ -0,0 +1,37 @@
1
+
2
+ - if option_watch.persisted?
3
+ .float-left= button_to '[X]', option_watch_path(option_watch.id), method: :delete, data: { confirm: 'Are you sure?' }
4
+
5
+
6
+ - url = option_watches_path if !option_watch.persisted?
7
+ - url = option_watch_path( option_watch ) if option_watch.persisted?
8
+
9
+ = form_for option_watch, :url => url, :html => { :class => 'form-inline well' } do |f|
10
+ .flex-row
11
+ .form-group
12
+ = f.label :action
13
+ = f.select :action, options_for_select( Warbler::StockWatch::ACTIONS.map{|a|[a,a]}, :selected => option_watch.action )
14
+ .form-group
15
+ = f.label :profile
16
+ = f.select :profile, options_for_select( [[nil,nil]]+@profiles.map{|p|[p.email,p.id]}, :selected => option_watch.profile ? option_watch.profile.id : nil )
17
+ .form-group
18
+ %label.control-label When
19
+ = f.text_field :ticker, :class => 'form-control', :placeholder => 'ticker'
20
+ .form-group
21
+ %label.control-label Type
22
+ = f.select :contractType, options_for_select( [['none',nil],['PUT', 'PUT'], ['CALL', 'CALL']], :selected => option_watch.contractType )
23
+ .form-group
24
+ %label.control-label On date
25
+ = f.text_field :date, :class => 'form-control', :placeholder => 'date'
26
+ .form-group
27
+ %label.control-label Strike
28
+ = f.number_field :strike, :step => 0.01, :placeholder => "0.01"
29
+ .form-group
30
+ %label.control-label Is
31
+ = f.select :direction, options_for_select( Warbler::StockWatch::DIRECTIONS.map{|d|[d,d]}, :selected => option_watch.direction )
32
+ .form-group
33
+ %label.control-label Price
34
+ = f.number_field :price, :step => 0.01, :placeholder => "0.01"
35
+ .form-group
36
+ = f.submit ">", :class => %w(btn blue)
37
+
@@ -1,10 +1,24 @@
1
1
 
2
2
  %h4 Stock Watches
3
3
 
4
- %hr
5
4
  - @stock_watches.each do |stock|
5
+ %hr
6
6
  = render 'form', :stock_watch => stock
7
-
7
+
8
8
  %hr
9
9
  %h5 New
10
10
  = render 'form', :stock_watch => @stock_watch
11
+
12
+
13
+ %hr
14
+ %hr
15
+
16
+ %h4 Option Watches
17
+
18
+ - @option_watches.each do |option|
19
+ %hr
20
+ = render 'ish_manager/option_watches/form', option_watch: option
21
+
22
+ %hr
23
+ %h5 New
24
+ = render 'ish_manager/option_watches/form', option_watch: @option_watch
data/config/routes.rb CHANGED
@@ -82,6 +82,7 @@ IshManager::Engine.routes.draw do
82
82
  # resources :stock_actions
83
83
  # resources :stock_options
84
84
  resources :stock_watches
85
+ resources :option_watches
85
86
 
86
87
  resources :tags do
87
88
  resources :features
@@ -4,10 +4,6 @@ def puts! a, b=''
4
4
  puts a.inspect
5
5
  end
6
6
 
7
- class Warbler::StockWatch
8
- SLEEP_TIME_SECONDS = 60
9
- end
10
-
11
7
  namespace :ish_manager do
12
8
 
13
9
  desc "every user needs a user_profile"
@@ -27,9 +23,6 @@ namespace :ish_manager do
27
23
  while true
28
24
  stocks = Warbler::StockWatch.where( notification_type: :EMAIL )
29
25
  stocks.each do |stock|
30
-
31
- puts! stock, 'stock'
32
-
33
26
  begin
34
27
  Timeout::timeout( 10 ) do
35
28
  out = Warbler::Ameritrade::Api.get_quote({ symbol: stock.ticker })
@@ -40,7 +33,7 @@ namespace :ish_manager do
40
33
  end
41
34
  end
42
35
  rescue Exception => e
43
- puts! e, 'e in :watch_stocks'
36
+ puts! e, 'Error in ish_manager:watch_stocks :'
44
37
  end
45
38
  end
46
39
  sleep Warbler::StockWatch::SLEEP_TIME_SECONDS
@@ -0,0 +1,55 @@
1
+
2
+ def puts! a, b=''
3
+ puts "+++ +++ #{b}:"
4
+ pp a
5
+ end
6
+
7
+ namespace :warbler do
8
+
9
+ ## @TODO: this is still in ish_manager namespace, need to actually move it here.
10
+ desc 'watch the stocks, and trigger actions - not alphavantage, tda now. 2021-08-08'
11
+ task watch_stocks: :environment do
12
+ while true
13
+ stocks = Warbler::StockWatch.where( notification_type: :EMAIL )
14
+ stocks.each do |stock|
15
+ begin
16
+ Timeout::timeout( 10 ) do
17
+ out = Warbler::Ameritrade::Api.get_quote({ symbol: stock.ticker })
18
+ r = out[:lastPrice]
19
+ if stock.direction == :ABOVE && r >= stock.price ||
20
+ stock.direction == :BELOW && r <= stock.price
21
+ IshManager::ApplicationMailer.stock_alert( stock ).deliver
22
+ end
23
+ end
24
+ rescue Exception => e
25
+ puts! e, 'Error in ish_manager:watch_stocks :'
26
+ end
27
+ end
28
+ sleep Warbler::StockWatch::SLEEP_TIME_SECONDS
29
+ end
30
+ end
31
+
32
+ desc 'watch option: contractType=PUT|CALL strike symbol date=yyyy-mm-dd'
33
+ task watch_options: :environment do
34
+ while true
35
+ option_watches = Warbler::OptionWatch.where( notification_type: :EMAIL )
36
+ option_watches.each do |option|
37
+ begin
38
+ Timeout::timeout( 10 ) do
39
+ ## opts = { contractType: 'PUT', strike: 355.0, symbol: 'NVDA', date: '2022-02-18' }
40
+ out = Warbler::Ameritrade::Api.get_option( option )
41
+ r = out[:last]
42
+ if option.direction == :ABOVE && r >= option.price ||
43
+ option.direction == :BELOW && r <= option.price
44
+ Warbler::ApplicationMailer.option_alert( option ).deliver
45
+ end
46
+ end
47
+ rescue Exception => e
48
+ puts! e, 'Error in ish_manager:watch_options :'
49
+ end
50
+ end
51
+ sleep Warbler::OptionWatch::SLEEP_TIME_SECONDS
52
+ end
53
+ end
54
+
55
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ish_manager
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.8.281
4
+ version: 0.1.8.282
5
5
  platform: ruby
6
6
  authors:
7
7
  - piousbox
@@ -202,6 +202,7 @@ files:
202
202
  - app/controllers/ish_manager/maps_controller.rb
203
203
  - app/controllers/ish_manager/markers_controller.rb
204
204
  - app/controllers/ish_manager/newsitems_controller.rb
205
+ - app/controllers/ish_manager/option_watches_controller.rb
205
206
  - app/controllers/ish_manager/orders_controller.rb
206
207
  - app/controllers/ish_manager/payments_controller.rb
207
208
  - app/controllers/ish_manager/photos_controller.rb
@@ -305,6 +306,7 @@ files:
305
306
  - app/views/ish_manager/newsitems/edit.haml
306
307
  - app/views/ish_manager/newsitems/index.haml
307
308
  - app/views/ish_manager/newsitems/new.haml
309
+ - app/views/ish_manager/option_watches/_form.haml
308
310
  - app/views/ish_manager/payments/index.haml
309
311
  - app/views/ish_manager/photos/_meta.haml
310
312
  - app/views/ish_manager/photos/_meta_manager.haml
@@ -380,6 +382,7 @@ files:
380
382
  - lib/systemd/system/watch_stocks.service
381
383
  - lib/tasks/ish_manager_tasks.rake
382
384
  - lib/tasks/migrate.rake
385
+ - lib/tasks/warbler_tasks.rake
383
386
  homepage: http://wasya.co
384
387
  licenses:
385
388
  - MIT