wco_models 3.1.0.58 → 3.1.0.59
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 +4 -4
- data/app/mailers/wco_email/application_mailer.rb +98 -0
- data/app/models/wco_email/context.rb +4 -2
- data/app/models/wco_email/email_filter.rb +2 -0
- data/app/models/wco_email/message.rb +7 -5
- data/app/models/wco_email/message_stub.rb +26 -15
- data/app/views/wco_email/application_mailer/forwarder_notify.html.erb +17 -0
- metadata +3 -2
- data/app/mailers/ish_models/application_mailer.rb +0 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 2b11007f01745aba3d77e2ba586b7989ec42ac5554aa9f53684098cd6f0fd4a1
|
|
4
|
+
data.tar.gz: 835baafdae5711debc5e503730f4fda22e342ecec976e3543fbd9d4ab0cc8a62
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 1432d0dbfe12b637baee8916c5b1d38f5ebd187678ea3d83ce06527ed304b623051b404602868383feff6897861e15821178199a24f0271d27fbd145075705ed
|
|
7
|
+
data.tar.gz: f43b68d4282382af6bacd3ec26ee511e8d29b1c49e02df4648daa65e8ce0d3df02d412ee9e4a9ec461770c5402c69936a8be4961296322a6690bf2534bee1a16
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
|
|
2
|
+
class WcoEmail::ApplicationMailer < ActionMailer::Base
|
|
3
|
+
|
|
4
|
+
default from: 'WasyaCo Consulting <no-reply@wco.com.de>'
|
|
5
|
+
helper(Wco::ApplicationHelper)
|
|
6
|
+
|
|
7
|
+
layout 'mailer'
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def forwarder_notify msg_id
|
|
11
|
+
@msg = WcoEmail::Message.find msg_id
|
|
12
|
+
mail( to: "poxlovi@gmail.com",
|
|
13
|
+
subject: "POX::#{@msg.subject}" )
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def shared_galleries profiles, gallery
|
|
17
|
+
return if profiles.count == 0
|
|
18
|
+
@gallery = gallery
|
|
19
|
+
@domain = Rails.application.config.action_mailer.default_url_options[:host]
|
|
20
|
+
@galleries_path = IshManager::Engine.routes.url_helpers.galleries_path
|
|
21
|
+
@gallery_path = IshManager::Engine.routes.url_helpers.gallery_path(@gallery.slug)
|
|
22
|
+
mail( :to => '314658@gmail.com',
|
|
23
|
+
:bcc => profiles.map { |p| p.email },
|
|
24
|
+
:subject => 'You got new shared galleries on pi manager' )
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def option_alert option
|
|
28
|
+
@option = option
|
|
29
|
+
mail({
|
|
30
|
+
:to => option.profile.email,
|
|
31
|
+
:subject => "IshManager Option Alert :: #{option.ticker}",
|
|
32
|
+
})
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def stock_alert watch_id
|
|
36
|
+
@watch = Iro::OptionWatch.find watch_id
|
|
37
|
+
mail({
|
|
38
|
+
to: @watch.profile.email,
|
|
39
|
+
subject: "Iro Watch Alert :: #{@watch.ticker} is #{@watch.direction} #{@watch.mark}."
|
|
40
|
+
})
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def test_email
|
|
44
|
+
mail( to: DEFAULT_RECIPIENT, subject: "Test email at #{Time.now}" )
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
## 2023-04-02 _vp_ Continue.
|
|
48
|
+
## 2023-09-24 _vp_ Continue : )
|
|
49
|
+
def send_context_email ctx_id
|
|
50
|
+
@ctx = Ctx.find ctx_id
|
|
51
|
+
@lead = Wco::Lead.find @ctx.lead_id
|
|
52
|
+
@tmpl_config = OpenStruct.new JSON.parse( @ctx.tmpl[:config_json] )
|
|
53
|
+
|
|
54
|
+
@utm_tracking_str = {
|
|
55
|
+
'cid' => @ctx.lead_id,
|
|
56
|
+
'utm_campaign' => @ctx.tmpl.slug,
|
|
57
|
+
'utm_medium' => 'email',
|
|
58
|
+
'utm_source' => @ctx.tmpl.slug,
|
|
59
|
+
}.map { |k, v| "#{k}=#{v}" }.join("&")
|
|
60
|
+
|
|
61
|
+
# @origin = "https://#{Rails.application.config.action_mailer.default_url_options[:host]}"
|
|
62
|
+
|
|
63
|
+
@unsubscribe_url = WcoEmail::Engine.routes.url_helpers.unsubscribes_url({
|
|
64
|
+
template_id: @ctx.tmpl.id,
|
|
65
|
+
lead_id: @lead.id,
|
|
66
|
+
token: @lead.unsubscribe_token,
|
|
67
|
+
host: Rails.application.routes.default_url_options[:host],
|
|
68
|
+
})
|
|
69
|
+
# renderer = Tmp6Ctl.new
|
|
70
|
+
# renderer = IshManager::ApplicationController.new
|
|
71
|
+
# renderer.send( :include, ::IshManager::ApplicationHelper )
|
|
72
|
+
# renderer.send( :request, { host: 'test-host' } )
|
|
73
|
+
renderer = WcoEmail::ApplicationMailer.new
|
|
74
|
+
|
|
75
|
+
renderer.instance_variable_set( :@ctx, @ctx )
|
|
76
|
+
renderer.instance_variable_set( :@lead, @ctx.lead )
|
|
77
|
+
renderer.instance_variable_set( :@utm_tracking_str, @utm_tracking_str )
|
|
78
|
+
renderer.instance_variable_set( :@unsubscribe_url, @unsubscribe_url )
|
|
79
|
+
renderer.instance_variable_set( :@tmpl_config, @tmpl_config )
|
|
80
|
+
|
|
81
|
+
# eval( @ctx.tmpl.config_exe )
|
|
82
|
+
|
|
83
|
+
rendered_str = renderer.render_to_string("/wco_email/email_templates/_#{@ctx.tmpl.layout}")
|
|
84
|
+
@ctx.update({
|
|
85
|
+
rendered_str: rendered_str,
|
|
86
|
+
sent_at: Time.now.to_s,
|
|
87
|
+
})
|
|
88
|
+
|
|
89
|
+
mail( from: @ctx.from_email,
|
|
90
|
+
to: @ctx.to_email,
|
|
91
|
+
cc: @ctx.cc,
|
|
92
|
+
bcc: "poxlovi@gmail.com",
|
|
93
|
+
subject: ERB.new( @ctx.subject ).result( @ctx.get_binding ),
|
|
94
|
+
body: rendered_str,
|
|
95
|
+
content_type: "text/html" )
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
end
|
|
@@ -8,6 +8,9 @@ class WcoEmail::Context
|
|
|
8
8
|
include Mongoid::Paranoia
|
|
9
9
|
store_in collection: 'ish_email_contexts'
|
|
10
10
|
|
|
11
|
+
PAGE_PARAM_NAME = 'email_contexts_page'
|
|
12
|
+
|
|
13
|
+
|
|
11
14
|
field :slug
|
|
12
15
|
validates_uniqueness_of :slug, allow_nil: true
|
|
13
16
|
|
|
@@ -29,7 +32,6 @@ class WcoEmail::Context
|
|
|
29
32
|
end
|
|
30
33
|
end
|
|
31
34
|
|
|
32
|
-
PAGE_PARAM_NAME = 'email_contexts_page'
|
|
33
35
|
|
|
34
36
|
field :from_email
|
|
35
37
|
def from_email
|
|
@@ -44,7 +46,7 @@ class WcoEmail::Context
|
|
|
44
46
|
|
|
45
47
|
field :subject
|
|
46
48
|
def subject
|
|
47
|
-
self[:subject].presence || tmpl
|
|
49
|
+
self[:subject].presence || tmpl&.subject
|
|
48
50
|
end
|
|
49
51
|
|
|
50
52
|
belongs_to :reply_to_message, class_name: 'WcoEmail::Message', inverse_of: :replies, optional: true
|
|
@@ -76,32 +76,34 @@ class WcoEmail::Message
|
|
|
76
76
|
has_many :replies, class_name: '::WcoEmail::Context', inverse_of: :reply_to_message
|
|
77
77
|
|
|
78
78
|
def apply_filter filter
|
|
79
|
+
puts! filter, 'WcoEmail::Message#apply_filter'
|
|
80
|
+
|
|
79
81
|
case filter.kind
|
|
80
82
|
|
|
81
|
-
when ::
|
|
83
|
+
when WcoEmail::EmailFilter::KIND_DESTROY_SCHS
|
|
82
84
|
conv.add_tag ::WpTag::TRASH
|
|
83
85
|
conv.remove_tag ::WpTag::INBOX
|
|
84
86
|
lead.schs.each do |sch|
|
|
85
87
|
sch.update_attributes({ state: ::Sch::STATE_TRASH })
|
|
86
88
|
end
|
|
87
89
|
|
|
88
|
-
when ::
|
|
90
|
+
when WcoEmail::EmailFilter::KIND_ADD_TAG
|
|
89
91
|
conv.add_tag filter.wp_term_id
|
|
90
92
|
if ::WpTag::TRASH == ::WpTag.find( filter.wp_term_id ).slug
|
|
91
93
|
conv.remove_tag ::WpTag::INBOX
|
|
92
94
|
end
|
|
93
95
|
|
|
94
|
-
when ::
|
|
96
|
+
when WcoEmail::EmailFilter::KIND_REMOVE_TAG
|
|
95
97
|
conv.remove_tag filter.wp_term_id
|
|
96
98
|
|
|
97
|
-
when ::
|
|
99
|
+
when WcoEmail::EmailFilter::KIND_AUTORESPOND_TMPL
|
|
98
100
|
Ish::EmailContext.create({
|
|
99
101
|
email_template: filter.email_template,
|
|
100
102
|
lead_id: lead.id,
|
|
101
103
|
send_at: Time.now + 22.minutes,
|
|
102
104
|
})
|
|
103
105
|
|
|
104
|
-
when ::
|
|
106
|
+
when WcoEmail::EmailFilter::KIND_AUTORESPOND_EACT
|
|
105
107
|
::Sch.create({
|
|
106
108
|
email_action: filter.email_action,
|
|
107
109
|
state: ::Sch::STATE_ACTIVE,
|
|
@@ -33,6 +33,10 @@ class WcoEmail::MessageStub
|
|
|
33
33
|
|
|
34
34
|
has_and_belongs_to_many :tags, class_name: 'Wco::Tag'
|
|
35
35
|
|
|
36
|
+
##
|
|
37
|
+
## skip_notification
|
|
38
|
+
## process_images
|
|
39
|
+
##
|
|
36
40
|
field :config, type: Object, default: <<~AOL
|
|
37
41
|
{}
|
|
38
42
|
AOL
|
|
@@ -53,11 +57,11 @@ class WcoEmail::MessageStub
|
|
|
53
57
|
# puts! message_id, 'message_id'
|
|
54
58
|
|
|
55
59
|
in_reply_to_id = the_mail.header['in-reply-to']&.to_s
|
|
56
|
-
puts! in_reply_to_id, 'in_reply_to_id'
|
|
60
|
+
# puts! in_reply_to_id, 'in_reply_to_id'
|
|
57
61
|
|
|
58
62
|
the_mail.to = [ 'NO-RECIPIENT' ] if !the_mail.to
|
|
59
63
|
subject = WcoEmail::Message.strip_emoji( the_mail.subject || '(wco-no-subject)' )
|
|
60
|
-
puts! subject, 'subject'
|
|
64
|
+
# puts! subject, 'subject'
|
|
61
65
|
|
|
62
66
|
## Conversation
|
|
63
67
|
if in_reply_to_id
|
|
@@ -94,6 +98,7 @@ class WcoEmail::MessageStub
|
|
|
94
98
|
message.save!( validate: false )
|
|
95
99
|
message.delete
|
|
96
100
|
end
|
|
101
|
+
|
|
97
102
|
@message = WcoEmail::Message.create!({
|
|
98
103
|
stub: stub,
|
|
99
104
|
conversation: conv,
|
|
@@ -115,6 +120,7 @@ class WcoEmail::MessageStub
|
|
|
115
120
|
cc: the_mail.cc ? the_mail.cc[0] : nil,
|
|
116
121
|
ccs: the_mail.cc,
|
|
117
122
|
})
|
|
123
|
+
puts! @message, '@message'
|
|
118
124
|
|
|
119
125
|
## Parts
|
|
120
126
|
the_mail.parts.each do |part|
|
|
@@ -148,8 +154,6 @@ class WcoEmail::MessageStub
|
|
|
148
154
|
|
|
149
155
|
conv.leads.push lead
|
|
150
156
|
conv.save
|
|
151
|
-
# lead.conversations.push conv
|
|
152
|
-
# lead.save
|
|
153
157
|
|
|
154
158
|
the_mail.cc&.each do |cc|
|
|
155
159
|
domain = cc.split('@')[1] rescue 'unknown.domain'
|
|
@@ -171,23 +175,30 @@ class WcoEmail::MessageStub
|
|
|
171
175
|
conv.tags.push inbox_tag
|
|
172
176
|
conv.tags.push stub.tags
|
|
173
177
|
conv.save
|
|
174
|
-
# inbox_tag.conversations.push conv
|
|
175
|
-
# inbox_tag.save
|
|
176
178
|
|
|
177
179
|
|
|
178
180
|
## Actions & Filters
|
|
179
181
|
email_filters = WcoEmail::EmailFilter.active
|
|
180
182
|
email_filters.each do |filter|
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
183
|
+
reson = nil
|
|
184
|
+
if filter.from_regex && @message.from.downcase.match( filter.from_regex )
|
|
185
|
+
reason = 'from_regex'
|
|
186
|
+
end
|
|
187
|
+
if filter.from_exact && @message.from.downcase.include?( filter.from_exact.downcase )
|
|
188
|
+
reason = 'from_exact'
|
|
189
|
+
end
|
|
190
|
+
if filter.body_exact && @message.part_html&.include?( filter.body_exact )
|
|
191
|
+
reason = 'body_exact'
|
|
192
|
+
end
|
|
193
|
+
if filter.subject_regex && @message.subject.match( filter.subject_regex )
|
|
194
|
+
reason = 'subject_regex'
|
|
195
|
+
end
|
|
196
|
+
if filter.subject_exact && @message.subject.downcase.include?( filter.subject_exact.downcase )
|
|
197
|
+
reason = 'subject_exact'
|
|
198
|
+
end
|
|
190
199
|
|
|
200
|
+
if reason
|
|
201
|
+
puts! "Applying filter #{filter} to conv #{conv} for matching #{reason}" if DEBUG
|
|
191
202
|
@message.apply_filter( filter )
|
|
192
203
|
end
|
|
193
204
|
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
<ul>
|
|
4
|
+
<li><b>From:</b> <%= @msg.from %></li>
|
|
5
|
+
<li><b>To:</b> <%= @msg.to %></li>
|
|
6
|
+
<li><b>Cc:</b> <%= @msg.cc %></li>
|
|
7
|
+
<li><b>Subject:</b> <%= @msg.subject %></li>
|
|
8
|
+
<li><b>Date:</b> <%= @msg.date %></li>
|
|
9
|
+
<li><b>N Assets:</b> <%= @msg.assets.length %></li>
|
|
10
|
+
</ul>
|
|
11
|
+
|
|
12
|
+
<%= raw @msg.part_html %>
|
|
13
|
+
|
|
14
|
+
<hr />
|
|
15
|
+
|
|
16
|
+
<%= raw @msg.part_txt %>
|
|
17
|
+
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: wco_models
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.1.0.
|
|
4
|
+
version: 3.1.0.59
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Victor Pudeyev
|
|
@@ -383,7 +383,7 @@ files:
|
|
|
383
383
|
- app/controllers/wco/videos_controller.rb
|
|
384
384
|
- app/helpers/wco/application_helper.rb
|
|
385
385
|
- app/jobs/wco_hosting/certbot_job.rb
|
|
386
|
-
- app/mailers/
|
|
386
|
+
- app/mailers/wco_email/application_mailer.rb
|
|
387
387
|
- app/models/ability.rb
|
|
388
388
|
- app/models/wco/asset.rb
|
|
389
389
|
- app/models/wco/gallery.rb
|
|
@@ -560,6 +560,7 @@ files:
|
|
|
560
560
|
- app/views/wco/videos/trash/_list_small.haml
|
|
561
561
|
- app/views/wco/videos/trash/_meta_edit.haml
|
|
562
562
|
- app/views/wco/videos/trash/_preview.haml
|
|
563
|
+
- app/views/wco_email/application_mailer/forwarder_notify.html.erb
|
|
563
564
|
- app/views/wco_hosting/docker-compose/dc-any.erb
|
|
564
565
|
- app/views/wco_hosting/docker-compose/dc-helloworld.erb
|
|
565
566
|
- app/views/wco_hosting/docker-compose/dc-wordpress.erb
|