Skip to content

Commit 06cceaf

Browse files
author
Matt Burch
committed
CS-896 Add org published filtering to BlogPost/Event API endpoints
1 parent 2c529ae commit 06cceaf

File tree

5 files changed

+23
-17
lines changed

5 files changed

+23
-17
lines changed

app/controllers/api/v1/blog_posts_controller.rb

+14-15
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ class BlogPostsController < Api::V1::BaseController
66
include ErrorSerializer
77

88
before_action :authenticate_api_user!, except: [:index, :show, :categories]
9-
before_action :set_blog_post, only: %i[show update destroy]
109
after_action :set_cache_control, only: :index
1110

1211
def index
@@ -19,7 +18,7 @@ def index
1918
end
2019

2120
def show
22-
render json: @blog_post,
21+
render json: blog_post,
2322
serializer: BlogPostSerializer,
2423
status: 200
2524
end
@@ -42,25 +41,25 @@ def create
4241

4342
def update
4443
if blog_post_params[:category].present?
45-
@blog_post.categories.delete_all
46-
@blog_post.category_list.add(blog_post_params[:category])
44+
blog_post.categories.delete_all
45+
blog_post.category_list.add(blog_post_params[:category])
4746
end
48-
if @blog_post.update(blog_post_params)
49-
@blog_post.reload
50-
render json: @blog_post,
47+
if blog_post.update(blog_post_params)
48+
blog_post.reload
49+
render json: blog_post,
5150
serializer: BlogPostSerializer,
5251
status: 200
5352
else
54-
render json: ErrorSerializer.serialize(@blog_post.errors),
53+
render json: ErrorSerializer.serialize(blog_post.errors),
5554
status: :unprocessable_entity
5655
end
5756
end
5857

5958
def destroy
60-
if @blog_post.destroy
59+
if blog_post.destroy
6160
render json: {}, status: :ok
6261
else
63-
render json: ErrorSerializer.serialize(@blog_post.errors),
62+
render json: ErrorSerializer.serialize(blog_post.errors),
6463
status: :unprocessable_entity
6564
end
6665
end
@@ -74,6 +73,10 @@ def categories
7473

7574
private
7675

76+
def blog_post
77+
@blog_post ||= BlogPost.find(params[:id])
78+
end
79+
7780
def blog_post_params
7881
params.require(:blog_post).permit(
7982
:title,
@@ -82,7 +85,6 @@ def blog_post_params
8285
:category,
8386
:is_published,
8487
:organization_id,
85-
{ images: [] },
8688
blog_post_attachments_attributes: [
8789
:id,
8890
:file_type,
@@ -94,12 +96,9 @@ def blog_post_params
9496
)
9597
end
9698

97-
def set_blog_post
98-
@blog_post = BlogPost.find(params[:id])
99-
end
100-
10199
def filter_posts
102100
blog_post = BlogPost.includes(:blog_post_attachments).includes(:categories).includes(:organization).includes(:user)
101+
blog_post = blog_post.from_published_orgs unless params[:ignore_org_publish].present?
103102
if params[:filter].present?
104103
blog_post = blog_post.tagged_with(params[:filter][:category]) if params[:filter][:category].present?
105104
blog_post = blog_post.where(is_published: params[:filter][:draft].downcase == 'false' ? true : false) if params[:filter][:draft].present?

app/controllers/api/v1/events_controller.rb

+1
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ def event
6363

6464
def fetch_events
6565
events = Event.includes(:organization).includes(:user)
66+
events = events.from_published_orgs unless params[:ignore_org_publish].present?
6667
events = events.events_in_month(DateTime.strptime(params[:month], '%m')) if params[:month].present?
6768
events = events.where(is_featured: true) if params[:featured].present?
6869
events = events.where('starting_at >= ?', DateTime.parse(params[:starting_after])) if params[:starting_after].present?

app/models/blog_post.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
class BlogPost < ActiveRecord::Base
2+
include OrgRecord
23
attr_accessible :title, :body, :posted_at, :user_id,
34
:is_published, :blog_post_attachments_attributes, :organization_id,
45
:category_list
5-
66
acts_as_taggable_on :categories
77

88
belongs_to :user

app/models/concerns/org_record.rb

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
module OrgRecord
2+
extend ActiveSupport::Concern
3+
included do
4+
scope :from_published_orgs, -> { joins(:organization).where('organizations.is_published = true') }
5+
end
6+
end

app/models/event.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
class Event < ActiveRecord::Base
2+
include OrgRecord
23
MAX_EVENTS_FEATURED_MONTH = 3
34
attr_accessible :title, :posted_at, :starting_at, :ending_at, :street_1,
45
:street_2, :city, :state_abbr, :zip, :phone, :external_url,
56
:organization_id, :is_featured, :body, :user_id, :is_all_day
6-
77
belongs_to :user
88
belongs_to :organization
99

0 commit comments

Comments
 (0)