Skip to content
Snippets Groups Projects
Unverified Commit e0e1cf25 authored by Sébastien Gaya's avatar Sébastien Gaya
Browse files

University::Person

parent 88b7cfcf
No related branches found
No related tags found
No related merge requests found
Showing
with 107 additions and 45 deletions
class Admin::Communication::Website::AuthorsController < Admin::Communication::Website::ApplicationController
def index
@authors = current_university.administration_members.authors.accessible_by(current_ability).ordered.page(params[:page])
@authors = current_university.people.authors.accessible_by(current_ability).ordered.page(params[:page])
breadcrumb
end
def show
@author = current_university.administration_members.authors.accessible_by(current_ability).find(params[:id])
@author = current_university.people.authors.accessible_by(current_ability).find(params[:id])
@posts = @author.communication_website_posts.ordered.page(params[:page])
breadcrumb
end
......
......@@ -2,7 +2,7 @@ class Admin::Education::TeachersController < Admin::Education::ApplicationContro
before_action :get_teacher, except: :index
def index
@teachers = current_university.administration_members.teachers.accessible_by(current_ability).ordered.page(params[:page])
@teachers = current_university.people.teachers.accessible_by(current_ability).ordered.page(params[:page])
breadcrumb
end
......@@ -29,7 +29,7 @@ class Admin::Education::TeachersController < Admin::Education::ApplicationContro
protected
def get_teacher
@teacher = current_university.administration_members.teachers.accessible_by(current_ability).find(params[:id])
@teacher = current_university.people.teachers.accessible_by(current_ability).find(params[:id])
end
def breadcrumb
......@@ -40,7 +40,7 @@ class Admin::Education::TeachersController < Admin::Education::ApplicationContro
end
def teacher_params
params.require(:administration_member)
params.require(:university_person)
.permit(education_program_ids: [])
end
end
class Admin::Research::ResearchersController < Admin::Research::ApplicationController
def index
@researchers = current_university.administration_members.researchers.accessible_by(current_ability).ordered.page(params[:page])
@researchers = current_university.people.researchers.accessible_by(current_ability).ordered.page(params[:page])
breadcrumb
end
def show
@researcher = current_university.administration_members.authors.accessible_by(current_ability).find(params[:id])
@researcher = current_university.people.authors.accessible_by(current_ability).find(params[:id])
@articles = @researcher.research_journal_articles.ordered.page(params[:page])
breadcrumb
end
......
class Admin::University::ApplicationController < Admin::ApplicationController
def breadcrumb
super
add_breadcrumb University.model_name.human
end
end
class Admin::Administration::MembersController < Admin::Administration::ApplicationController
load_and_authorize_resource class: Administration::Member,
class Admin::University::PeopleController < Admin::University::ApplicationController
load_and_authorize_resource class: University::Person,
through: :current_university,
through_association: :administration_members
through_association: :people
def index
@members = @members.ordered.page(params[:page])
@people = @people.ordered.page(params[:page])
breadcrumb
end
......@@ -22,8 +22,8 @@ class Admin::Administration::MembersController < Admin::Administration::Applicat
end
def create
if @member.save_and_sync
redirect_to admin_administration_member_path(@member), notice: t('admin.successfully_created_html', model: @member.to_s)
if @person.save_and_sync
redirect_to admin_university_person_path(@person), notice: t('admin.successfully_created_html', model: @person.to_s)
else
breadcrumb
render :new, status: :unprocessable_entity
......@@ -31,8 +31,8 @@ class Admin::Administration::MembersController < Admin::Administration::Applicat
end
def update
if @member.update_and_sync(member_params)
redirect_to admin_administration_member_path(@member), notice: t('admin.successfully_updated_html', model: @member.to_s)
if @person.update_and_sync(person_params)
redirect_to admin_university_person_path(@person), notice: t('admin.successfully_updated_html', model: @person.to_s)
else
breadcrumb
add_breadcrumb t('edit')
......@@ -41,21 +41,21 @@ class Admin::Administration::MembersController < Admin::Administration::Applicat
end
def destroy
@member.destroy_and_sync
redirect_to admin_administration_members_url, notice: t('admin.successfully_destroyed_html', model: @member.to_s)
@person.destroy_and_sync
redirect_to admin_university_people_url, notice: t('admin.successfully_destroyed_html', model: @person.to_s)
end
protected
def breadcrumb
super
add_breadcrumb Administration::Member.model_name.human(count: 2),
admin_administration_members_path
breadcrumb_for @member
add_breadcrumb University::Person.model_name.human(count: 2),
admin_university_people_path
breadcrumb_for @person
end
def member_params
params.require(:administration_member)
def person_params
params.require(:university_person)
.permit(:first_name, :last_name, :email, :phone, :biography, :slug, :user_id,
:is_author, :is_researcher, :is_teacher, :is_administrative)
.merge(university_id: current_university.id)
......
......@@ -13,7 +13,7 @@ class Ability
def visitor
can :read, Administration::Qualiopi::Criterion
can :read, Administration::Qualiopi::Indicator
can :read, Administration::Member
can :read, University::Person
can :read, Communication::Website, university_id: @user.university_id
can :read, Communication::Website::Page, university_id: @user.university_id
can :read, Communication::Website::Post, university_id: @user.university_id
......@@ -32,7 +32,7 @@ class Ability
def admin
can :read, Administration::Qualiopi::Criterion
can :read, Administration::Qualiopi::Indicator
can :manage, Administration::Member
can :manage, University::Person
can :read, Communication::Website, university_id: @user.university_id
can :manage, Communication::Website::Page, university_id: @user.university_id
can :manage, Communication::Website::Post, university_id: @user.university_id
......
......@@ -46,6 +46,6 @@ class Communication::Website < ApplicationRecord
end
def git_dependencies_static
(pages + posts + categories + menus + members + [home] + [about]).compact
(pages + posts + categories + menus + people + [home] + [about]).compact
end
end
......@@ -22,7 +22,7 @@
#
# Foreign Keys
#
# fk_rails_... (author_id => administration_members.id)
# fk_rails_... (author_id => university_people.id)
# fk_rails_... (university_id => universities.id)
# fk_rails_... (website_id => communication_website_imported_websites.id)
#
......@@ -32,7 +32,7 @@ class Communication::Website::Imported::Author < ApplicationRecord
belongs_to :website,
class_name: 'Communication::Website::Imported::Website'
belongs_to :author,
class_name: 'Administration::Member',
class_name: 'University::Person',
optional: true
before_validation :sync
......@@ -54,7 +54,7 @@ class Communication::Website::Imported::Author < ApplicationRecord
def sync
if author.nil?
self.author = Administration::Member.new university: university
self.author = University::Person.new university: university
self.author.last_name = "Doe" # No title yet
self.author.first_name = "John" # No title yet
self.is_author = true
......
......@@ -60,16 +60,16 @@ class Communication::Website::Imported::Website < ApplicationRecord
def sync_authors
begin
skip_publish_callback(Administration::Member)
skip_publish_callback(University::Person)
wordpress.authors.each do |data|
author = authors.where(university: university, identifier: data['id']).first_or_initialize
author.data = data
author.save
end
# Batch update all changes (1 query only, good for github API limits)
website.publish_members!
website.publish_people!
ensure
set_publish_callback(Administration::Member)
set_publish_callback(University::Person)
end
end
......
......@@ -26,7 +26,7 @@
#
# Foreign Keys
#
# fk_rails_... (author_id => administration_members.id)
# fk_rails_... (author_id => university_people.id)
# fk_rails_... (communication_website_id => communication_websites.id)
# fk_rails_... (university_id => universities.id)
#
......@@ -47,7 +47,7 @@ class Communication::Website::Post < ApplicationRecord
class_name: 'Communication::Website',
foreign_key: :communication_website_id
belongs_to :author,
class_name: 'Administration::Member',
class_name: 'University::Person',
optional: true
has_and_belongs_to_many :categories,
class_name: 'Communication::Website::Category',
......
......@@ -39,10 +39,10 @@ module Communication::Website::WithAbouts
about_school? ? about.programs : Education::Program.none
end
def members
@members ||= (
def people
@people ||= (
posts.collect(&:author) +
programs.collect(&:members).flatten
programs.collect(&:teachers).flatten
# TODO researchers via articles
).uniq.compact
end
......
......@@ -71,7 +71,7 @@ class Education::Program < ApplicationRecord
foreign_key: 'education_program_id',
association_foreign_key: 'education_school_id'
has_and_belongs_to_many :teachers,
class_name: 'Administration::Member',
class_name: 'University::Person',
join_table: 'education_programs_teachers',
foreign_key: 'education_program_id',
association_foreign_key: 'education_teacher_id'
......
......@@ -16,10 +16,10 @@
#
# Foreign Keys
#
# fk_rails_... (member_id => administration_members.id)
# fk_rails_... (member_id => university_people.id)
# fk_rails_... (program_id => education_programs.id)
#
class Education::Program::Member < ApplicationRecord
belongs_to :program, class_name: 'Education::Program', inverse_of: :members
belongs_to :member, class_name: 'Administration::Member'
belongs_to :member, class_name: 'University::Person'
end
......@@ -42,7 +42,7 @@ class Research::Journal::Article < ApplicationRecord
belongs_to :volume, foreign_key: :research_journal_volume_id, optional: true
belongs_to :updated_by, class_name: 'User'
has_and_belongs_to_many :researchers,
class_name: 'Administration::Member',
class_name: 'University::Person',
join_table: :research_journal_articles_researchers,
association_foreign_key: :researcher_id
has_many :websites, -> { distinct }, through: :journal
......
......@@ -17,7 +17,7 @@
# updated_at :datetime not null
#
class University < ApplicationRecord
include WithAdministration
include WithPeople
include WithCommunication
include WithEducation
include WithIdentifier
......
# == Schema Information
#
# Table name: administration_members
# Table name: university_people
#
# id :uuid not null, primary key
# email :string
......@@ -19,15 +19,15 @@
#
# Indexes
#
# index_administration_members_on_university_id (university_id)
# index_administration_members_on_user_id (user_id)
# index_university_people_on_university_id (university_id)
# index_university_people_on_user_id (user_id)
#
# Foreign Keys
#
# fk_rails_... (university_id => universities.id)
# fk_rails_... (user_id => users.id)
#
class Administration::Member < ApplicationRecord
class University::Person < ApplicationRecord
include WithGit
include WithSlug
......
module University::WithAdministration
extend ActiveSupport::Concern
included do
has_many :administration_members, class_name: 'Administration::Member', dependent: :destroy
end
end
module University::WithPeople
extend ActiveSupport::Concern
included do
has_many :people, class_name: 'University::Person', dependent: :destroy
end
end
......@@ -60,7 +60,7 @@ class User < ApplicationRecord
belongs_to :university
belongs_to :language
has_one :member, class_name: 'Administration::Member', dependent: :nullify
has_one :person, class_name: 'University::Person', dependent: :nullify
scope :ordered, -> { order(:last_name, :first_name) }
......
---
title: >
Responsabilités de <%= @member.to_s %>
person: >
<%= @member.to_s %>
slug: "<%= @member.slug %>"
---
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