wco_models 3.1.0.152 → 3.1.0.153

Sign up to get free protection for your applications and to get access to all the features.
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