wco_models 3.1.0.152 → 3.1.0.153

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: f5d5b1cf16d12082c6fcd8ffd3d9ae8fef4292c97037c1a8de4a20c0f02a19e1
4
- data.tar.gz: 7638d870fac8f5f138ed527a950088b8565afd03a80a56b78768f24e9248b682
3
+ metadata.gz: d25598a6db9204889720f02b371b8e1d206724f49af7dbbf6122f15973d00a8a
4
+ data.tar.gz: e5b36788322711cbbd54463d38d9dd3e45684c4679002048784a7f3d3768d106
5
5
  SHA512:
6
- metadata.gz: c4216429fb7f42bc863364edd7dc164305436b3c5ac832565cfccaaf88faf8b2aca62f4351c99b27958ca8f64b892c4f91de51c63c140b057d019037f3148831
7
- data.tar.gz: b3db0b20fcb09447fac2d5dadee3d0f966b06a8715ba95291578ecad10e56f41fb95283b987d702ad63a3b120a690c84fa838f86928b299af7341b02a753fed2
6
+ metadata.gz: cb1ca289cc7a97e4f423d5c6928e162bd471d00a8c18f2d2061ed8a6fb387a31c23c383a64762cbf007120162c822a8554468dcc2fab2c70dcd17f8f46a693da
7
+ data.tar.gz: be52e2c4133a04e9fb9af78921cf5548b287c0ef917bafeae90fa9948654cddc293f6145a2260add440675bac78ec5864485ab2e3778a0f3d2af0d19058deb98
@@ -1,6 +1,18 @@
1
1
 
2
2
  class Wco::ProfilesController < Wco::ApplicationController
3
3
 
4
+ def create
5
+ @profile = Wco::Profile.new params[:profile].permit!
6
+ authorize! :create, @profile
7
+ if @profile.save
8
+ flash_notice @profile
9
+ redirect_to action: :index
10
+ else
11
+ flash_alert @profile
12
+ render action: 'new'
13
+ end
14
+ end
15
+
4
16
  def edit
5
17
  @profile = Wco::Profile.find params[:id]
6
18
  authorize! :update, @profile
@@ -9,6 +21,15 @@ class Wco::ProfilesController < Wco::ApplicationController
9
21
  def index
10
22
  @profiles = Wco::Profile.all
11
23
  authorize! :index, Wco::Profile
24
+ if params[:q]
25
+ q = URI.decode(params[:q])
26
+ @profiles = @profiles.where({ email: /#{q}/i })
27
+ end
28
+ end
29
+
30
+ def new
31
+ @new_profile = Wco::Profile.new
32
+ authorize! :new, @new_profile
12
33
  end
13
34
 
14
35
  def update
@@ -34,7 +34,7 @@ class Wco::ReportsController < Wco::ApplicationController
34
34
 
35
35
  def index
36
36
  authorize! :index, Wco::Report
37
- @reports = Wco::Report.all
37
+ @reports = Wco::Report.all.page( params[:reports_page] ).per( current_profile.per_page )
38
38
  if params[:deleted]
39
39
  @reports = Wco::Report.unscoped.where( :deleted_at.ne => nil )
40
40
  end
@@ -38,6 +38,11 @@ class Wco::SitesController < Wco::ApplicationController
38
38
  @new_site = Wco::Site.new
39
39
  end
40
40
 
41
+ def show
42
+ @site = Wco::Site.find params[:id]
43
+ authorize! :show, @site
44
+ end
45
+
41
46
  def update
42
47
  @site = Wco::Site.find params[:id]
43
48
  authorize! :update, @site
@@ -91,6 +91,7 @@ class Wco::TagsController < Wco::ApplicationController
91
91
 
92
92
  def set_lists
93
93
  @new_tag = Wco::Tag.new
94
+ @sites_list = Wco::Site.list
94
95
  @tags = Wco::Tag.all.order_by( slug: :asc )
95
96
  @tags_list = Wco::Tag.list
96
97
  end
@@ -12,6 +12,8 @@ class Wco::Profile
12
12
  field :per_page, type: :integer, default: 25
13
13
  field :show_n_thumbs, type: :integer, default: 8
14
14
 
15
+ has_many :reports, class_name: 'Wco::Report'
16
+
15
17
  belongs_to :leadset, class_name: 'Wco::Leadset', inverse_of: :profile, optional: true
16
18
  has_many :newsitems, class_name: 'Wco::Newsitem'
17
19
  has_and_belongs_to_many :shared_galleries, class_name: 'Wco::Gallery', inverse_of: :shared_profiles
@@ -10,11 +10,12 @@ class Wco::Report
10
10
  store_in collection: 'wco_reports'
11
11
 
12
12
  field :title
13
- validates :title, presence: true, uniqueness: true
13
+ validates :title, presence: true # , uniqueness: true
14
14
  index({ title: 1 }, { unique: true })
15
15
  def name ; title ; end
16
16
 
17
17
  field :subtitle
18
+ field :legacy_id, type: String
18
19
 
19
20
  field :slug
20
21
  validates :slug, presence: true, uniqueness: true
@@ -27,7 +28,10 @@ class Wco::Report
27
28
  field :y, :type => Float
28
29
  field :z, :type => Float
29
30
 
30
- # has_one :photo
31
+ belongs_to :author, class_name: 'Wco::Profile'
32
+
33
+ # has_one :image_thumb
34
+ # has_one :image_hero
31
35
 
32
36
  has_and_belongs_to_many :tags
33
37
 
@@ -16,6 +16,7 @@ class Wco::Site
16
16
 
17
17
  has_many :publishers # , class_name: 'Wco::Publisher'
18
18
  has_many :headlines # , class_name: 'Wco::Newstitle'
19
+ has_many :tags, class_name: 'Wco::Tag'
19
20
 
20
21
  field :slug
21
22
  validates :slug, presence: true, uniqueness: true
@@ -65,4 +66,39 @@ class Wco::Site
65
66
  )
66
67
  end
67
68
 
69
+ def wp_import
70
+ site = self
71
+
72
+ root_tag = Wco::Tag.find_or_create_by slug: "#{site.slug}_wp-import", site_id: site.id
73
+ url = "#{site.origin}/wp-json/wp/v2/posts"
74
+ pi_admin = Wco::Profile.find_or_create_by email: 'admin@piousbox.com'
75
+ n_pages = 12
76
+ per_page = 100
77
+
78
+ (1..n_pages).each do |page|
79
+ print "Page #{page}"
80
+
81
+ posts = HTTParty.get url, query: { per_page: per_page, page: page }
82
+ posts.each do |post|
83
+ report = Wco::Report.new({
84
+ legacy_id: post['id'],
85
+ created_at: post['date'],
86
+ slug: post['link'].sub(site.origin, ''),
87
+ title: post['title']['rendered'],
88
+ subtitle: post['excerpt']['rendered'],
89
+ body: post['content']['rendered'],
90
+ author: pi_admin,
91
+ tag_ids: ( [ root_tag ] + site.tags.where( :legacy_id.in => post['categories'] ) ).map(&:id),
92
+ })
93
+
94
+ if report.save
95
+ print '^'
96
+ else
97
+ puts report.errors.messages
98
+ end
99
+ end
100
+ end
101
+ puts "ok"
102
+ end
103
+
68
104
  end
@@ -9,9 +9,10 @@ class Wco::Tag
9
9
  validates :slug, presence: true, uniqueness: true
10
10
  index({ slug: -1 })
11
11
 
12
- belongs_to :parent, class_name: 'Wco::Tag', inverse_of: :sons
12
+ belongs_to :parent, class_name: 'Wco::Tag', inverse_of: :sons, optional: true
13
13
  has_many :sons, class_name: 'Wco::Tag', inverse_of: :parent
14
14
 
15
+ belongs_to :site, class_name: 'Wco::Site', optional: true
15
16
  has_many :email_filters, class_name: 'WcoEmail::EmailFilter', inverse_of: :tag
16
17
 
17
18
  has_and_belongs_to_many :conversations, class_name: 'WcoEmail::Conversation', index: true
@@ -12,7 +12,7 @@
12
12
  %i.material-icons visibility_off
13
13
  = render 'meta', :item => gallery
14
14
 
15
- = render '/wco/tags/list_mini', tags: gallery.tags, resource: gallery
15
+ = render '/wco/tags/list_chips', tags: gallery.tags, resource: gallery
16
16
 
17
17
  %ul
18
18
  %li slug :: #{gallery.slug}
@@ -14,7 +14,7 @@
14
14
  - if galleries.length > 0
15
15
  = form_tag update_galleries_path do
16
16
 
17
- = render '/wco/tags/list_mini', tags: @tags
17
+ = render '/wco/tags/list_chips', tags: @tags
18
18
 
19
19
  = submit_tag 'Add Tags', data: { confirm: 'Are you sure?' }
20
20
  &nbsp;&nbsp;
@@ -1,6 +1,10 @@
1
1
 
2
2
  .profiles--form
3
3
  = form_for profile do |f|
4
+ .field
5
+ %label email
6
+ = f.text_field :email
7
+
4
8
  .field
5
9
  %label role
6
10
  = f.select :role, options_for_select(Wco::Profile.roles_list, selected: profile.role )
@@ -0,0 +1,5 @@
1
+
2
+ .profiles-new.maxwidth
3
+ .header
4
+ %h5.title New Profile
5
+ = render 'form', profile: @new_profile
@@ -1,7 +1,8 @@
1
1
 
2
2
  - config ||= {}
3
3
 
4
- .reports--list
4
+ .reports--index
5
+ = paginate reports, :param_name => :reports_page, :views_prefix => 'wco'
5
6
  %ul
6
7
  - reports.each do |ttt|
7
8
  %li.Card
@@ -15,5 +16,5 @@
15
16
  .gray.mini= ttt.id
16
17
  - if !config[:skip_tags]
17
18
  .flex-row
18
- = render '/wco/tags/index_inline', tags: ttt.tags
19
-
19
+ = render '/wco/tags/list_chips', tags: ttt.tags
20
+ = paginate reports, :param_name => :reports_page, :views_prefix => 'wco'
@@ -3,4 +3,4 @@
3
3
  .header
4
4
  %h5.title
5
5
  = render 'header'
6
- = render 'wco/reports/list', reports: @reports
6
+ = render 'wco/reports/index', reports: @reports
@@ -7,7 +7,6 @@
7
7
  `#{@report.slug}`
8
8
  .gray.mini= @report.id
9
9
 
10
- .descr= raw @report.body
11
- -# %pre.descr= raw @report.body
10
+ = render 'wco/tags/index_chips', tags: @report.tags
12
11
 
13
- = @report.inspect
12
+ .descr= raw @report.body
@@ -11,14 +11,14 @@
11
11
  -# %th kind
12
12
  %th origin
13
13
  -# %th post_path
14
- - @sites.each do |ttt|
14
+ - @sites.each do |site|
15
15
  %tr
16
16
  %td
17
17
  .flex-row
18
- = button_to '[x]', site_path(ttt), method: :delete, data: { confirm: 'Are you sure?' }
19
- = link_to '[~]', edit_site_path(ttt)
20
- .gray.mini= ttt.id
21
- %td= ttt.slug
22
- -# %td= ttt.kind
23
- %td= ttt.origin
24
- -# %td= ttt.post_path
18
+ = button_to '[x]', site_path(site), method: :delete, data: { confirm: 'Are you sure?' }
19
+ = link_to '[~]', edit_site_path(site)
20
+ .gray.mini= site.id
21
+ %td= link_to site.slug, site_path(site)
22
+ -# %td= site.kind
23
+ %td= site.origin
24
+ -# %td= site.post_path
@@ -0,0 +1,8 @@
1
+
2
+ .sites-show.maxwidth
3
+ .header
4
+ %h5.title
5
+ = @site
6
+
7
+ = render '/wco/tags/header'
8
+ = render '/wco/tags/index', tags: @site.tags
@@ -2,6 +2,9 @@
2
2
  .tags--form
3
3
  = form_for tag do |f|
4
4
 
5
+ .d-flex
6
+ %label site
7
+ = f.select :site_id, options_for_select(@sites_list, selected: tag.site_id), {}, class: 'select2'
5
8
  .field
6
9
  %label slug
7
10
  = f.text_field :slug
@@ -1,6 +1,7 @@
1
1
 
2
- = link_to "Tags (#{Wco::Tag.all.length})", wco.tags_path
3
- .inline-search
4
- = form_tag wco.tags_path, method: :get do
5
- = text_field_tag :q
6
- = link_to '[+]', wco.new_tag_path
2
+ .d-flex
3
+ = link_to "Tags (#{Wco::Tag.all.length})", wco.tags_path
4
+ .inline-search
5
+ = form_tag wco.tags_path, method: :get do
6
+ = text_field_tag :q
7
+ = link_to '[+]', wco.new_tag_path
@@ -0,0 +1 @@
1
+ app/views/wco/tags/_index_chips.haml
@@ -22,4 +22,4 @@
22
22
  = render 'wco/galleries/index', galleries: @galleries, config: { skip_tags: true }
23
23
  %li.d-flex
24
24
  <b>Reports (#{@reports.length}):&nbsp;</b>
25
- = render 'wco/reports/list', reports: @reports, config: { skip_tags: true }
25
+ = render 'wco/reports/index', reports: @reports, config: { skip_tags: true }
@@ -40,7 +40,7 @@
40
40
  -# = render '/wco_email/contexts/form_reply_mini', lead_id: msg.lead_id, message: msg, ctx: WcoEmail::Context.new({ from_email: msg.to&.downcase, subject: msg.subject, email_template_id: ET.find_by( slug: 'blank').id })
41
41
 
42
42
  %td.tags.mini
43
- = render '/wco/tags/list_mini', tags: conv.tags, cache_key: conv.cache_key, config: OpenStruct.new( without_checkbox: true )
43
+ = render '/wco/tags/list_chips', tags: conv.tags, cache_key: conv.cache_key, config: OpenStruct.new( without_checkbox: true )
44
44
  %td.latest-at
45
45
  = pp_date conv.latest_at
46
46
  = pp_time conv.latest_at
@@ -0,0 +1,10 @@
1
+
2
+ namespace :wp do
3
+
4
+ desc 'import a whole site into reports'
5
+ task :import_all_reports => :environment do
6
+ site = Wco::Site.find_by slug: 'pi-drup-prod'
7
+ site.wp_import
8
+ end
9
+
10
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wco_models
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.0.152
4
+ version: 3.1.0.153
5
5
  platform: ruby
6
6
  authors:
7
7
  - Victor Pudeyev
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-04-06 00:00:00.000000000 Z
11
+ date: 2024-04-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk-s3
@@ -583,6 +583,7 @@ files:
583
583
  - app/views/wco/profiles/_header.haml
584
584
  - app/views/wco/profiles/edit.haml
585
585
  - app/views/wco/profiles/index.haml
586
+ - app/views/wco/profiles/new.haml
586
587
  - app/views/wco/publishers/_form.haml
587
588
  - app/views/wco/publishers/_header.haml
588
589
  - app/views/wco/publishers/edit.haml
@@ -590,7 +591,7 @@ files:
590
591
  - app/views/wco/publishers/new.haml
591
592
  - app/views/wco/reports/_form.haml
592
593
  - app/views/wco/reports/_header.haml
593
- - app/views/wco/reports/_list.haml
594
+ - app/views/wco/reports/_index.haml
594
595
  - app/views/wco/reports/edit.haml
595
596
  - app/views/wco/reports/index.haml
596
597
  - app/views/wco/reports/index_table.haml
@@ -601,10 +602,12 @@ files:
601
602
  - app/views/wco/sites/edit.haml
602
603
  - app/views/wco/sites/index.haml
603
604
  - app/views/wco/sites/new.haml
605
+ - app/views/wco/sites/show.haml
604
606
  - app/views/wco/tags/_form.haml
605
607
  - app/views/wco/tags/_header.haml
606
608
  - app/views/wco/tags/_index.haml
607
- - app/views/wco/tags/_list_mini.haml
609
+ - app/views/wco/tags/_index_chips.haml
610
+ - app/views/wco/tags/_list_chips.haml
608
611
  - app/views/wco/tags/edit.haml
609
612
  - app/views/wco/tags/index.haml
610
613
  - app/views/wco/tags/new.haml
@@ -661,6 +664,7 @@ files:
661
664
  - config/routes.rb
662
665
  - lib/tasks/db_tasks.rake
663
666
  - lib/tasks/office_tasks.rake
667
+ - lib/tasks/wp_tasks.rake
664
668
  - lib/wco/ai_writer.rb
665
669
  - lib/wco/engine.rb
666
670
  - lib/wco/office_worker.rb