Skip to content
Snippets Groups Projects
Commit c1e482ea authored by Mateus Rambo Strey's avatar Mateus Rambo Strey
Browse files

Merge branch 'publisher_route' into 'master'

Create route for Publisher

See merge request !327
parents e5f9a75d abb625fb
No related branches found
No related tags found
No related merge requests found
module PublisherController
extend ActiveSupport::Concern
# GET /v1/users/1/learning_objects
def show_all_learning_objects
render json: LearningObject.where(publisher: publisher)
end
def show_all_collections
render json: Collection.where(owner: publisher)
end
def show_liked_learning_objects
includes = [:taggings, :tags, :subject_relations, :subjects, :stage_relations, :educational_stages, :publisher, :language, :license]
render json: LearningObject.includes(includes).find(
Like.where(user: publisher, likeable_type: 'LearningObject').pluck(:likeable_id)
)
end
def show_liked_collections
render json: Collection.find(
Like.where(user: publisher, likeable_type: 'Collection').pluck(:likeable_id)
)
end
protected
def publisher
user, id = request.path.split('/')[2, 3]
return nil unless %w(users institutions).include? user
publisher_model = user.singularize.classify.constantize
publisher = publisher_model.find(id)
authorize publisher
publisher
end
end
......@@ -2,6 +2,7 @@ class V1::UsersController < ApplicationController
include ::FollowableController
include ::DeletedObjectsController
include ::Paginator
include ::PublisherController
before_action :set_user, only: [:show, :update, :destroy, :following, :own_reviews, :received_reviews, :learning_objects, :collections, :liked]
before_action :authenticate_user!, only: [:create, :update, :destroy, :following, :own_reviews, :received_reviews, :learning_objects, :collections, :liked]
......
module Publisher
extend ActiveSupport::Concern
included do
has_many :learning_objects, as: :publisher
has_many :collections, as: :owner
end
end
......@@ -14,16 +14,12 @@
class Institution < ApplicationRecord
include Tagger
# *current_user* add member for instituion *name*
# *current_user* create instituion
# *current_user* destroy instituion
# *current_user* update instituion
include Trackable
include Publisher
has_and_belongs_to_many :users
has_many :learning_objects, as: :publisher
has_many :collections, as: :owner
#has_many :learning_objects, as: :publisher
#has_many :collections, as: :owner
validates_presence_of :name
......
......@@ -39,6 +39,7 @@ class User < ApplicationRecord
include Reputationable
include Tagger
include Complainable
include Publisher
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
......@@ -55,8 +56,8 @@ class User < ApplicationRecord
has_many :bookmark_collections, through: :bookmarks, source: :bookmarkable, source_type: 'Collection'
has_many :bookmark_learning_objects, through: :bookmarks, source: :bookmarkable, source_type: 'LearningObject'
has_many :bookmarks
has_many :collections, as: :owner
has_many :learning_objects, as: :publisher
#has_many :collections, as: :owner
#has_many :learning_objects, as: :publisher
has_many :views
has_many :downloads
has_many :likes
......
module PublisherPolicy
def show_all_learning_objects?
record if same_user? || user.is_admin?
end
def show_all_collections?
record if same_user? || user.is_admin?
end
def show_liked_learning_objects?
record if same_user? || user.is_admin?
end
def show_liked_collections?
record if same_user? || user.is_admin?
end
def same_user?
record == user
end
end
class UserPolicy < ApplicationPolicy
include FollowablePolicy
include PublisherPolicy
def create?
user.is_admin?
......@@ -17,18 +18,6 @@ class UserPolicy < ApplicationPolicy
record if same_user? || user.is_admin?
end
def learning_objects?
record if same_user? || user.is_admin?
end
def collections?
record if same_user? || user.is_admin?
end
def liked?
record if same_user? || user.is_admin?
end
def same_user?
record == user
end
......
......@@ -30,7 +30,7 @@ Rails.application.routes.draw do
end
concern :reviewable do
resources :reviews, only: [:index, :create, :show, :destroy], concerns: :deletable do
resources :reviews, only: [:index, :create, :destroy], concerns: :deletable do
member do
post :rate
end
......@@ -44,6 +44,16 @@ Rails.application.routes.draw do
end
end
# GET /users/1/learning_objects/
concern :publisher do
member do
get 'learning_objects', as: :get_learning_objects, action: :show_all_learning_objects
get 'learning_objects/liked', as: :get_liked_learning_objects, action: :show_liked_learning_objects
get 'collections', as: :get_collections, action: :show_all_collections
get 'collections/liked', as: :get_liked_collections, action: :show_liked_collections
end
end
# GET /learning_objects/1/versions/123
# GET /learning_objects/1/versions
# POST /learning_objects/1/versions/234/checkout
......@@ -63,19 +73,18 @@ Rails.application.routes.draw do
resources :activities, only: :index
resources :feed, only: [:index]
resources :users, concerns: [:followable, :deletable] do
resources :users, concerns: [:followable, :deletable, :publisher] do
member do
resources :bookmarks, module: 'users', only: [:index, :create, :destroy]
get 'following/:object_type', to: 'users#following'
get 'activities', to: 'activities#user_activities'
get 'reviews/own', to: 'users#own_reviews'
get 'reviews/received', to: 'users#received_reviews'
get 'learning_objects', to: 'users#learning_objects'
get 'collections', to: 'users#collections'
get 'liked', to: 'users#liked'
end
end
resources :reviews, only: :show
# search routes
resources :search, only: :index do
collection do
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment