diff --git a/app/controllers/admin/education/academic_years_controller.rb b/app/controllers/admin/administration/academic_years_controller.rb similarity index 77% rename from app/controllers/admin/education/academic_years_controller.rb rename to app/controllers/admin/administration/academic_years_controller.rb index 0b86570ea7..a52e90899e 100644 --- a/app/controllers/admin/education/academic_years_controller.rb +++ b/app/controllers/admin/administration/academic_years_controller.rb @@ -1,5 +1,5 @@ -class Admin::Education::AcademicYearsController < Admin::Education::ApplicationController - load_and_authorize_resource class: Education::AcademicYear, +class Admin::Administration::AcademicYearsController < Admin::Administration::ApplicationController + load_and_authorize_resource class: Administration::AcademicYear, through: :current_university, through_association: :academic_years include Admin::HasStaticAction @@ -44,7 +44,7 @@ def update def destroy @academic_year.destroy - redirect_to education_academic_years_url, + redirect_to administration_academic_years_url, notice: t('admin.successfully_destroyed_html', model: @academic_year.to_s) end @@ -52,12 +52,12 @@ def destroy def breadcrumb super - add_breadcrumb Education::AcademicYear.model_name.human(count: 2), admin_education_academic_years_path + add_breadcrumb Administration::AcademicYear.model_name.human(count: 2), admin_administration_academic_years_path breadcrumb_for @academic_year end def academic_year_params - params.require(:education_academic_year) + params.require(:administration_academic_year) .permit(:year) .merge( university_id: current_university.id diff --git a/app/controllers/admin/administration/alumni/cohorts_controller.rb b/app/controllers/admin/administration/alumni/cohorts_controller.rb index ac3e411343..1cd8b4d084 100644 --- a/app/controllers/admin/administration/alumni/cohorts_controller.rb +++ b/app/controllers/admin/administration/alumni/cohorts_controller.rb @@ -24,7 +24,7 @@ def breadcrumb super add_breadcrumb University::Person::Alumnus.model_name.human(count: 2), admin_administration_alumni_path add_breadcrumb @alumnus.to_s_in(current_language), admin_administration_alumnus_path(@alumnus) - add_breadcrumb Education::Cohort.model_name.human(count: 2) + add_breadcrumb Administration::Cohort.model_name.human(count: 2) end def cohorts_params diff --git a/app/controllers/admin/administration/alumni_controller.rb b/app/controllers/admin/administration/alumni_controller.rb index 51701de5bb..e52bfbe993 100644 --- a/app/controllers/admin/administration/alumni_controller.rb +++ b/app/controllers/admin/administration/alumni_controller.rb @@ -9,8 +9,17 @@ def index @alumni = @alumni.filter_by(params[:filters], current_language) .alumni .ordered(current_language) - .page(params[:page]) - breadcrumb + respond_to do |format| + format.html { + @alumni = @alumni.page(params[:page]) + breadcrumb + } + format.xlsx { + @alumni = @alumni.includes(:cohorts) + filename = "alumni-#{Time.now.strftime("%Y%m%d%H%M%S")}.xlsx" + response.headers['Content-Disposition'] = "attachment; filename=#{filename}" + } + end end def show diff --git a/app/controllers/admin/administration/cohorts_controller.rb b/app/controllers/admin/administration/cohorts_controller.rb new file mode 100644 index 0000000000..f5e902a0f5 --- /dev/null +++ b/app/controllers/admin/administration/cohorts_controller.rb @@ -0,0 +1,59 @@ +class Admin::Administration::CohortsController < Admin::Administration::ApplicationController + load_and_authorize_resource class: Administration::Cohort, + through: :current_university, + through_association: :administration_cohorts, + except: :restore + + include Admin::HasStaticAction + include Admin::Localizable + + def index + @filtered = @cohorts.filter_by(params[:filters], current_language) + @cohorts = @filtered.at_lifecycle(params[:lifecycle], current_language) + .ordered + + respond_to do |format| + format.html { + @cohorts = @cohorts.page(params[:page]) + breadcrumb + } + format.xlsx { + filename = "cohorts-#{Time.now.strftime("%Y%m%d%H%M%S")}.xlsx" + response.headers['Content-Disposition'] = "attachment; filename=#{filename}" + } + end + end + + def show + breadcrumb + end + + def destroy + program = @cohort.program + label = @cohort.to_s_in(current_language) + @cohort.destroy + redirect_back fallback_location: admin_administration_program_cohorts_path(program), + notice: t('admin.successfully_destroyed_html', model: label) + end + + def restore + @cohort = current_university.administration_cohorts.only_deleted.find(params[:id]) + authorize!(:restore, @cohort) + @cohort.restore(recursive: true) + redirect_to admin_administration_cohort_path(@cohort), + notice: t('admin.successfully_restored_html', model: @cohort.to_s_in(current_language)) + end + + protected + + def breadcrumb + super + add_breadcrumb Administration::Cohort.model_name.human(count: 2), admin_administration_cohorts_path + breadcrumb_for @cohort + end + + def cohort_params + params.require(:administration_cohort) + .permit(:program_id, :academic_year_id, :name) + end +end diff --git a/app/controllers/admin/education/cohorts_controller.rb b/app/controllers/admin/education/cohorts_controller.rb deleted file mode 100644 index ff866bff34..0000000000 --- a/app/controllers/admin/education/cohorts_controller.rb +++ /dev/null @@ -1,49 +0,0 @@ -class Admin::Education::CohortsController < Admin::Education::ApplicationController - load_and_authorize_resource class: Education::Cohort, - through: :current_university, - through_association: :education_cohorts, - except: :restore - - include Admin::HasStaticAction - include Admin::Localizable - - def index - @filtered = @cohorts - @cohorts = @filtered.at_lifecycle(params[:lifecycle], current_language) - .ordered - breadcrumb - end - - def show - breadcrumb - end - - def destroy - program = @cohort.program - label = @cohort.to_s_in(current_language) - @cohort.destroy - redirect_to alumni_admin_education_program_path(program), - notice: t('admin.successfully_destroyed_html', model: label) - end - - def restore - @cohort = current_university.education_cohorts.only_deleted.find(params[:id]) - authorize!(:restore, @cohort) - @cohort.restore(recursive: true) - redirect_to admin_education_cohort_path(@cohort), - notice: t('admin.successfully_restored_html', model: @cohort.to_s_in(current_language)) - end - - protected - - def breadcrumb - super - add_breadcrumb Education::Cohort.model_name.human(count: 2), admin_education_cohorts_path - breadcrumb_for @cohort - end - - def cohort_params - params.require(:education_cohort) - .permit(:program_id, :academic_year_id, :name) - end -end diff --git a/app/controllers/admin/education/programs/cohorts_controller.rb b/app/controllers/admin/education/programs/cohorts_controller.rb new file mode 100644 index 0000000000..6ede24b6c2 --- /dev/null +++ b/app/controllers/admin/education/programs/cohorts_controller.rb @@ -0,0 +1,31 @@ +class Admin::Education::Programs::CohortsController < Admin::Education::Programs::ApplicationController + load_and_authorize_resource class: Administration::Cohort, through: :program, through_association: :administration_cohorts + + include Admin::Localizable + + def index + @filtered = @cohorts.filter_by(params[:filters], current_language) + @cohorts = @filtered.at_lifecycle(params[:lifecycle], current_language) + .ordered + + respond_to do |format| + format.html { + @cohorts = @cohorts.page(params[:page]) + breadcrumb + } + format.xlsx { + filename = "cohorts-#{Time.now.strftime("%Y%m%d%H%M%S")}.xlsx" + response.headers['Content-Disposition'] = "attachment; filename=#{filename}" + render "admin/administration/cohorts/index" + } + end + end + + protected + + def breadcrumb + super + add_breadcrumb Administration::Cohort.model_name.human(count: 2) + end + +end diff --git a/app/controllers/admin/education/programs/parts_controller.rb b/app/controllers/admin/education/programs/parts_controller.rb index f61245b18b..408c4bfa4f 100644 --- a/app/controllers/admin/education/programs/parts_controller.rb +++ b/app/controllers/admin/education/programs/parts_controller.rb @@ -47,12 +47,6 @@ def certification_edit add_breadcrumb t('edit') end - def alumni - @cohorts = @program.cohorts.ordered - breadcrumb - add_breadcrumb University::Person::Alumnus.model_name.human(count: 2) - end - protected def authorize_resource diff --git a/app/controllers/admin/education/schools/cohorts_controller.rb b/app/controllers/admin/education/schools/cohorts_controller.rb new file mode 100644 index 0000000000..968d57aecb --- /dev/null +++ b/app/controllers/admin/education/schools/cohorts_controller.rb @@ -0,0 +1,31 @@ +class Admin::Education::Schools::CohortsController < Admin::Education::Schools::ApplicationController + load_and_authorize_resource class: Administration::Cohort, through: :school, through_association: :administration_cohorts + + include Admin::Localizable + + def index + @filtered = @cohorts.filter_by(params[:filters], current_language) + @cohorts = @filtered.at_lifecycle(params[:lifecycle], current_language) + .ordered + + respond_to do |format| + format.html { + @cohorts = @cohorts.page(params[:page]) + breadcrumb + } + format.xlsx { + filename = "cohorts-#{Time.now.strftime("%Y%m%d%H%M%S")}.xlsx" + response.headers['Content-Disposition'] = "attachment; filename=#{filename}" + render "admin/administration/cohorts/index" + } + end + end + + protected + + def breadcrumb + super + add_breadcrumb Administration::Cohort.model_name.human(count: 2) + end + +end diff --git a/app/controllers/admin/education/schools_controller.rb b/app/controllers/admin/education/schools_controller.rb index c91e532b0d..015b5e6e42 100644 --- a/app/controllers/admin/education/schools_controller.rb +++ b/app/controllers/admin/education/schools_controller.rb @@ -20,6 +20,8 @@ def show @roles = @school.university_roles.ordered(current_language) @websites = @school.websites.ordered(current_language) @locations = @school.locations.ordered(current_language) + @cohorts = @school.cohorts.ordered(current_language) + .page(params[:cohorts_page]).per(5) breadcrumb end diff --git a/app/controllers/extranet/alumni/academic_years_controller.rb b/app/controllers/extranet/alumni/academic_years_controller.rb index dfc6331077..b456bd212f 100644 --- a/app/controllers/extranet/alumni/academic_years_controller.rb +++ b/app/controllers/extranet/alumni/academic_years_controller.rb @@ -1,6 +1,6 @@ class Extranet::Alumni::AcademicYearsController < Extranet::Alumni::ApplicationController def index - @academic_years = current_extranet.about.education_academic_years + @academic_years = current_extranet.about.administration_academic_years .ordered(current_language) .page(params[:page]) @count = @academic_years.total_count @@ -8,7 +8,7 @@ def index end def show - @academic_year = current_extranet.about.education_academic_years + @academic_year = current_extranet.about.administration_academic_years .find(params[:id]) @cohorts = @academic_year.cohorts_in_context(current_extranet.about) .ordered(current_language) @@ -24,6 +24,6 @@ def show def breadcrumb super - add_breadcrumb Education::AcademicYear.model_name.human(count: 2), alumni_education_academic_years_path + add_breadcrumb Administration::AcademicYear.model_name.human(count: 2), alumni_administration_academic_years_path end end diff --git a/app/controllers/extranet/alumni/cohorts_controller.rb b/app/controllers/extranet/alumni/cohorts_controller.rb index ead5aec236..cfb2435708 100644 --- a/app/controllers/extranet/alumni/cohorts_controller.rb +++ b/app/controllers/extranet/alumni/cohorts_controller.rb @@ -1,7 +1,7 @@ class Extranet::Alumni::CohortsController < Extranet::Alumni::ApplicationController def index - @facets = Education::Cohort::Facets.new params[:facets], { - model: current_extranet.about.education_cohorts, + @facets = Administration::Cohort::Facets.new params[:facets], { + model: current_extranet.about.administration_cohorts, about: current_extranet.about, language: current_language } @@ -14,7 +14,7 @@ def index end def show - @cohort = current_extranet.about.education_cohorts + @cohort = current_extranet.about.administration_cohorts .find(params[:id]) @l10n = @cohort.best_localization_for(current_language) @people = @cohort.people @@ -29,6 +29,6 @@ def show def breadcrumb super - add_breadcrumb Education::Cohort.model_name.human(count: 2), alumni_education_cohorts_path + add_breadcrumb Administration::Cohort.model_name.human(count: 2), alumni_administration_cohorts_path end end diff --git a/app/controllers/extranet/home_controller.rb b/app/controllers/extranet/home_controller.rb index 0cbe6bdec5..0ce4e9222a 100644 --- a/app/controllers/extranet/home_controller.rb +++ b/app/controllers/extranet/home_controller.rb @@ -20,7 +20,7 @@ def load_posts_variables end def load_alumni_variables - @cohorts = current_extranet.about.education_cohorts + @cohorts = current_extranet.about.administration_cohorts .ordered(current_language) .limit(5) @experiences = current_extranet.about.university_person_experiences diff --git a/app/controllers/extranet/pages_controller.rb b/app/controllers/extranet/pages_controller.rb index 3f1f8bd043..e48426732a 100644 --- a/app/controllers/extranet/pages_controller.rb +++ b/app/controllers/extranet/pages_controller.rb @@ -22,8 +22,8 @@ def data if current_extranet.has_feature?(:alumni) @metrics.concat [ { value: current_extranet.alumni.count, name: University::Person::Alumnus.model_name.human(count: 2) }, - { value: current_extranet.academic_years.count, name: Education::AcademicYear.model_name.human(count: 2) }, - { value: current_extranet.cohorts.count, name: Education::Cohort.model_name.human(count: 2) }, + { value: current_extranet.academic_years.count, name: Administration::AcademicYear.model_name.human(count: 2) }, + { value: current_extranet.cohorts.count, name: Administration::Cohort.model_name.human(count: 2) }, { value: current_extranet.about.university_person_alumni_organizations.count, name: University::Organization.model_name.human(count: 2) } ] end diff --git a/app/jobs/truly_destroy_soft_deleted_records_job.rb b/app/jobs/truly_destroy_soft_deleted_records_job.rb index 5ac5cbf463..d1c0308c3f 100644 --- a/app/jobs/truly_destroy_soft_deleted_records_job.rb +++ b/app/jobs/truly_destroy_soft_deleted_records_job.rb @@ -22,13 +22,13 @@ class TrulyDestroySoftDeletedRecordsJob < ApplicationJob Communication::Website::Portfolio::Project, Communication::Website::Portfolio::Project::Localization, Communication::Website::Post::Localization, - Education::AcademicYear, - Education::Cohort, + Administration::AcademicYear, + Administration::Cohort, Education::Diploma, Education::Program, Education::School, - Education::AcademicYear::Localization, - Education::Cohort::Localization, + Administration::AcademicYear::Localization, + Administration::Cohort::Localization, Education::Diploma::Localization, Education::Program::Localization, Education::School::Localization, diff --git a/app/models/ability/admin.rb b/app/models/ability/admin.rb index 7873d3949a..35c551dc83 100644 --- a/app/models/ability/admin.rb +++ b/app/models/ability/admin.rb @@ -30,8 +30,6 @@ def admin_education # Necessaire pour l'affichage des tableaux de bord # https://github.com/osunyorg/admin/pull/2491 can :manage, University::Person::Localization::Teacher - can :manage, Education::AcademicYear, university_id: @user.university_id - can :manage, Education::Cohort, university_id: @user.university_id can :manage, Education::Diploma, university_id: @user.university_id can :manage, Education::Program, university_id: @user.university_id can :manage, Education::Program::Category, university_id: @user.university_id @@ -99,8 +97,10 @@ def admin_communication_extranet def admin_administration # Necessaire pour l'affichage des tableaux de bord # https://github.com/osunyorg/admin/pull/2491 - can :manage, University::Person::Alumnus - can :manage, Administration::Location + can :manage, University::Person::Alumnus, university_id: @user.university_id + can :manage, Administration::Location, university_id: @user.university_id + can :manage, Administration::AcademicYear, university_id: @user.university_id + can :manage, Administration::Cohort, university_id: @user.university_id can :read, Administration::Qualiopi can :read, Administration::Qualiopi::Criterion can :read, Administration::Qualiopi::Indicator diff --git a/app/models/ability/alumni_manager.rb b/app/models/ability/alumni_manager.rb index b318050c33..5b8639bb08 100644 --- a/app/models/ability/alumni_manager.rb +++ b/app/models/ability/alumni_manager.rb @@ -12,8 +12,8 @@ def initialize(user) can :manage, Education::Program, university_id: @user.university_id can :manage, Education::Program::Category, university_id: @user.university_id can :manage, Education::School, university_id: @user.university_id - can :manage, Education::AcademicYear, university_id: @user.university_id - can :manage, Education::Cohort, university_id: @user.university_id + can :manage, Administration::AcademicYear, university_id: @user.university_id + can :manage, Administration::Cohort, university_id: @user.university_id end protected diff --git a/app/models/administration.rb b/app/models/administration.rb index d8e3012dc8..592a63ae79 100644 --- a/app/models/administration.rb +++ b/app/models/administration.rb @@ -9,7 +9,9 @@ def self.table_name_prefix def self.parts [ [University::Person::Alumnus, :admin_administration_alumni_path], + [Administration::Cohort, :admin_administration_cohorts_path], [Administration::Location, :admin_administration_locations_path], + [Administration::AcademicYear, :admin_administration_academic_years_path], [Administration::Qualiopi, :admin_administration_qualiopi_criterions_path], ] end diff --git a/app/models/education/academic_year.rb b/app/models/administration/academic_year.rb similarity index 76% rename from app/models/education/academic_year.rb rename to app/models/administration/academic_year.rb index 74838d5303..af285094f9 100644 --- a/app/models/education/academic_year.rb +++ b/app/models/administration/academic_year.rb @@ -1,6 +1,6 @@ # == Schema Information # -# Table name: education_academic_years +# Table name: administration_academic_years # # id :uuid not null, primary key # deleted_at :datetime @@ -11,15 +11,15 @@ # # Indexes # -# index_education_academic_years_on_university_id (university_id) +# index_administration_academic_years_on_university_id (university_id) # # Foreign Keys # # fk_rails_7d376afe35 (university_id => universities.id) # -class Education::AcademicYear < ApplicationRecord +class Administration::AcademicYear < ApplicationRecord acts_as_paranoid - + include AsIndirectObject include GeneratesGitFiles include Localizable @@ -28,18 +28,18 @@ class Education::AcademicYear < ApplicationRecord include Searchable include WithUniversity - has_many :education_cohorts, - class_name: 'Education::Cohort' - alias_method :cohorts, :education_cohorts + has_many :administration_cohorts, + class_name: 'Administration::Cohort' + alias_method :cohorts, :administration_cohorts # Dénormalisation des alumni pour le faceted search has_and_belongs_to_many :university_people, class_name: 'University::Person', - foreign_key: :education_academic_year_id, + foreign_key: :administration_academic_year_id, association_foreign_key: :university_person_id has_many :people, class_name: 'University::Person', - through: :education_cohorts + through: :administration_cohorts validates :year, numericality: { only_integer: true, greater_than: 0 } @@ -48,7 +48,7 @@ class Education::AcademicYear < ApplicationRecord scope :ordered, -> (language = nil) { order(year: :desc) } def cohorts_in_context(context) - return Education::Cohort.none unless context.respond_to?(:cohorts) + return Administration::Cohort.none unless context.respond_to?(:cohorts) cohorts.where(id: context.cohorts.pluck(:id)) end diff --git a/app/models/education/academic_year/localization.rb b/app/models/administration/academic_year/localization.rb similarity index 66% rename from app/models/education/academic_year/localization.rb rename to app/models/administration/academic_year/localization.rb index c041eb103d..cda67e726c 100644 --- a/app/models/education/academic_year/localization.rb +++ b/app/models/administration/academic_year/localization.rb @@ -1,6 +1,6 @@ # == Schema Information # -# Table name: education_academic_year_localizations +# Table name: administration_academic_year_localizations # # id :uuid not null, primary key # deleted_at :datetime @@ -13,20 +13,20 @@ # # Indexes # -# idx_on_about_id_language_id_eb13d82b8d (about_id,language_id) UNIQUE -# index_education_academic_year_localizations_on_about_id (about_id) -# index_education_academic_year_localizations_on_language_id (language_id) -# index_education_academic_year_localizations_on_university_id (university_id) +# idx_on_about_id_language_id_7962406d05 (about_id,language_id) UNIQUE +# idx_on_language_id_a52fb1a1c1 (language_id) +# idx_on_university_id_31eabbc7a7 (university_id) +# index_administration_academic_year_localizations_on_about_id (about_id) # # Foreign Keys # -# fk_rails_7f53226466 (about_id => education_academic_years.id) +# fk_rails_7f53226466 (about_id => administration_academic_years.id) # fk_rails_8eb490c1ee (language_id => languages.id) # fk_rails_9de9d01008 (university_id => universities.id) # -class Education::AcademicYear::Localization < ApplicationRecord +class Administration::AcademicYear::Localization < ApplicationRecord acts_as_paranoid - + include AsLocalization include HasGitFiles include Initials @@ -42,7 +42,7 @@ def git_path_relative end def template_static - "admin/education/academic_years/static" + "admin/administration/academic_years/static" end def to_s diff --git a/app/models/education/cohort.rb b/app/models/administration/cohort.rb similarity index 64% rename from app/models/education/cohort.rb rename to app/models/administration/cohort.rb index 2c5f36142f..844f9eebed 100644 --- a/app/models/education/cohort.rb +++ b/app/models/administration/cohort.rb @@ -1,6 +1,6 @@ # == Schema Information # -# Table name: education_cohorts +# Table name: administration_cohorts # # id :uuid not null, primary key # deleted_at :datetime @@ -14,22 +14,23 @@ # # Indexes # -# index_education_cohorts_on_academic_year_id (academic_year_id) -# index_education_cohorts_on_program_id (program_id) -# index_education_cohorts_on_school_id (school_id) -# index_education_cohorts_on_university_id (university_id) +# index_administration_cohorts_on_academic_year_id (academic_year_id) +# index_administration_cohorts_on_program_id (program_id) +# index_administration_cohorts_on_school_id (school_id) +# index_administration_cohorts_on_university_id (university_id) # # Foreign Keys # # fk_rails_0f4a4f43d9 (university_id => universities.id) # fk_rails_72528c3d76 (program_id => education_programs.id) # fk_rails_8545767e2d (school_id => education_schools.id) -# fk_rails_c2d725cabd (academic_year_id => education_academic_years.id) +# fk_rails_c2d725cabd (academic_year_id => administration_academic_years.id) # -class Education::Cohort < ApplicationRecord +class Administration::Cohort < ApplicationRecord acts_as_paranoid include AsIndirectObject + include Filterable include GeneratesGitFiles include Lifecyclable include Localizable @@ -47,12 +48,12 @@ class Education::Cohort < ApplicationRecord alias_method :education_program, :program belongs_to :academic_year, - class_name: 'Education::AcademicYear' - alias_method :education_academic_year, :academic_year + class_name: 'Administration::AcademicYear' + alias_method :administration_academic_year, :academic_year has_and_belongs_to_many :people, class_name: 'University::Person', - foreign_key: :education_cohort_id, + foreign_key: :administration_cohort_id, association_foreign_key: :university_person_id validates_associated :school, :academic_year, :program @@ -60,8 +61,10 @@ class Education::Cohort < ApplicationRecord after_create_commit :create_localizations + scope :for_school, -> (school_id, language = nil) { where(school_id: school_id) } + scope :for_program, -> (program_id, language = nil) { where(program_id: program_id) } scope :ordered, -> (language = nil) { - includes(:academic_year).order('education_academic_years.year DESC') + includes(:academic_year).order('administration_academic_years.year DESC') } def year @@ -69,7 +72,7 @@ def year end def year=(value) - self.academic_year = Education::AcademicYear.where(university_id: university_id, year: value).first_or_create + self.academic_year = Administration::AcademicYear.where(university_id: university_id, year: value).first_or_create end def dependencies diff --git a/app/models/education/cohort/facets.rb b/app/models/administration/cohort/facets.rb similarity index 79% rename from app/models/education/cohort/facets.rb rename to app/models/administration/cohort/facets.rb index 02896e87b6..6e4c6f37d5 100644 --- a/app/models/education/cohort/facets.rb +++ b/app/models/administration/cohort/facets.rb @@ -1,4 +1,4 @@ -class Education::Cohort::Facets < FacetedSearch::Facets +class Administration::Cohort::Facets < FacetedSearch::Facets def initialize(params, options) super params @@ -8,7 +8,7 @@ def initialize(params, options) filter_with_list :academic_year_id, { source: @about.academic_years.ordered, - title: Education::AcademicYear.model_name.human(count: 2) + title: Administration::AcademicYear.model_name.human(count: 2) } filter_with_checkboxes :program_id, { diff --git a/app/models/education/cohort/localization.rb b/app/models/administration/cohort/localization.rb similarity index 73% rename from app/models/education/cohort/localization.rb rename to app/models/administration/cohort/localization.rb index cfe4ecd71f..1ecc39232c 100644 --- a/app/models/education/cohort/localization.rb +++ b/app/models/administration/cohort/localization.rb @@ -1,6 +1,6 @@ # == Schema Information # -# Table name: education_cohort_localizations +# Table name: administration_cohort_localizations # # id :uuid not null, primary key # deleted_at :datetime @@ -13,18 +13,18 @@ # # Indexes # -# idx_on_about_id_language_id_a0a453655b (about_id,language_id) UNIQUE -# index_education_cohort_localizations_on_about_id (about_id) -# index_education_cohort_localizations_on_language_id (language_id) -# index_education_cohort_localizations_on_university_id (university_id) +# idx_on_about_id_language_id_ae60ea28b0 (about_id,language_id) UNIQUE +# index_administration_cohort_localizations_on_about_id (about_id) +# index_administration_cohort_localizations_on_language_id (language_id) +# index_administration_cohort_localizations_on_university_id (university_id) # # Foreign Keys # # fk_rails_2e862cbf91 (university_id => universities.id) -# fk_rails_57e968eb32 (about_id => education_cohorts.id) +# fk_rails_57e968eb32 (about_id => administration_cohorts.id) # fk_rails_5dc9fc7693 (language_id => languages.id) # -class Education::Cohort::Localization < ApplicationRecord +class Administration::Cohort::Localization < ApplicationRecord acts_as_paranoid include AsLocalization @@ -53,7 +53,7 @@ def git_path_relative end def template_static - "admin/education/cohorts/static" + "admin/administration/cohorts/static" end # Example: IUT de Bordeaux > Formations > BUT > Génie biologique > Agronomie > 2024 diff --git a/app/models/communication/website/page/education_academic_year.rb b/app/models/communication/website/page/administration_academic_year.rb similarity index 79% rename from app/models/communication/website/page/education_academic_year.rb rename to app/models/communication/website/page/administration_academic_year.rb index 8edd350f80..49cfb18608 100644 --- a/app/models/communication/website/page/education_academic_year.rb +++ b/app/models/communication/website/page/administration_academic_year.rb @@ -1,4 +1,4 @@ -class Communication::Website::Page::EducationAcademicYear < Communication::Website::Page +class Communication::Website::Page::AdministrationAcademicYear < Communication::Website::Page def is_hugo_index? true diff --git a/app/models/communication/website/page/with_special_page.rb b/app/models/communication/website/page/with_special_page.rb index 7bfdb13e6e..236b89ce00 100644 --- a/app/models/communication/website/page/with_special_page.rb +++ b/app/models/communication/website/page/with_special_page.rb @@ -20,7 +20,6 @@ module Communication::Website::Page::WithSpecialPage Communication::Website::Page::EducationSchool, Communication::Website::Page::EducationDiploma, Communication::Website::Page::EducationProgram, - Communication::Website::Page::EducationAcademicYear, # Research Communication::Website::Page::ResearchJournal, Communication::Website::Page::ResearchLaboratory, @@ -28,6 +27,7 @@ module Communication::Website::Page::WithSpecialPage Communication::Website::Page::ResearchPaper, Communication::Website::Page::ResearchPublication, # Administration + Communication::Website::Page::AdministrationAcademicYear, Communication::Website::Page::AdministrationLocation, # People facets Communication::Website::Page::Administrator, @@ -126,7 +126,7 @@ def create_missing_localizations! def default_parent website.special_page(Communication::Website::Page::Home) end - + protected diff --git a/app/models/communication/website/permalink/academic_year.rb b/app/models/communication/website/permalink/academic_year.rb index 6455e1aadb..7f9d59aae0 100644 --- a/app/models/communication/website/permalink/academic_year.rb +++ b/app/models/communication/website/permalink/academic_year.rb @@ -39,7 +39,7 @@ def self.pattern_in_website(website, language, about = nil) end def self.special_page_type - Communication::Website::Page::EducationAcademicYear + Communication::Website::Page::AdministrationAcademicYear end protected diff --git a/app/models/communication/website/permalink/cohort.rb b/app/models/communication/website/permalink/cohort.rb index b5783d11fe..e85fc5a51c 100644 --- a/app/models/communication/website/permalink/cohort.rb +++ b/app/models/communication/website/permalink/cohort.rb @@ -39,7 +39,7 @@ def self.pattern_in_website(website, language, about = nil) end def self.special_page_type - Communication::Website::Page::EducationAcademicYear + Communication::Website::Page::AdministrationAcademicYear end protected diff --git a/app/models/communication/website/permalink/with_mapping.rb b/app/models/communication/website/permalink/with_mapping.rb index d4d4c2944e..1c621c76fa 100644 --- a/app/models/communication/website/permalink/with_mapping.rb +++ b/app/models/communication/website/permalink/with_mapping.rb @@ -3,6 +3,8 @@ module Communication::Website::Permalink::WithMapping included do MAPPING = { + "Administration::AcademicYear::Localization" => Communication::Website::Permalink::AcademicYear, + "Administration::Cohort::Localization" => Communication::Website::Permalink::Cohort, "Administration::Location::Localization" => Communication::Website::Permalink::Location, "Communication::Website::Agenda::Event::Day" => Communication::Website::Permalink::Agenda::Event::Day, "Communication::Website::Agenda::Event::Localization" => Communication::Website::Permalink::Agenda::Event, @@ -19,8 +21,6 @@ module Communication::Website::Permalink::WithMapping "Communication::Website::Portfolio::Category::Localization" => Communication::Website::Permalink::Portfolio::Category, "Communication::Website::Post::Localization" => Communication::Website::Permalink::Post, "Communication::Website::Post::Category::Localization" => Communication::Website::Permalink::Category, - "Education::AcademicYear::Localization" => Communication::Website::Permalink::AcademicYear, - "Education::Cohort::Localization" => Communication::Website::Permalink::Cohort, "Education::Diploma::Localization" => Communication::Website::Permalink::Diploma, "Education::Program::Category::Localization" => Communication::Website::Permalink::Program::Category, "Education::Program::Localization" => Communication::Website::Permalink::Program, diff --git a/app/models/communication/website/with_feature_alumni.rb b/app/models/communication/website/with_feature_alumni.rb index da34a3832d..5057038807 100644 --- a/app/models/communication/website/with_feature_alumni.rb +++ b/app/models/communication/website/with_feature_alumni.rb @@ -10,21 +10,21 @@ def alumni end def cohorts - has_alumni? ? about.cohorts : Education::Cohort.none + has_alumni? ? about.cohorts : Administration::Cohort.none end def alumni_programs return Education::Program.none unless has_alumni? program_ids = education_programs - .joins(:education_cohorts) - .where(education_cohorts: { id: cohorts.pluck(:id) }) + .joins(:administration_cohorts) + .where(administration_cohorts: { id: cohorts.pluck(:id) }) .distinct .pluck(:id) education_programs.where(id: program_ids) end def academic_years - has_alumni? ? about.academic_years : Education::AcademicYear.none + has_alumni? ? about.academic_years : Administration::AcademicYear.none end def has_alumni? diff --git a/app/models/education.rb b/app/models/education.rb index 73af716ca4..b15483d002 100644 --- a/app/models/education.rb +++ b/app/models/education.rb @@ -11,7 +11,7 @@ def self.parts [University::Person::Localization::Teacher, :admin_education_teachers_path], [Education::School, :admin_education_schools_path], [Education::Diploma, :admin_education_diplomas_path], - [Education::Program, :admin_education_programs_path], + [Education::Program, :admin_education_programs_path] ] end end diff --git a/app/models/education/program/with_alumni.rb b/app/models/education/program/with_alumni.rb index fda5372e42..8bb5bef259 100644 --- a/app/models/education/program/with_alumni.rb +++ b/app/models/education/program/with_alumni.rb @@ -2,12 +2,12 @@ module Education::Program::WithAlumni extend ActiveSupport::Concern included do - has_many :education_cohorts, - class_name: 'Education::Cohort' - alias_method :cohorts, :education_cohorts + has_many :administration_cohorts, + class_name: 'Administration::Cohort' + alias_method :cohorts, :administration_cohorts has_many :alumni, - through: :education_cohorts, + through: :administration_cohorts, source: :people alias_method :university_person_alumni, :alumni @@ -29,21 +29,21 @@ module Education::Program::WithAlumni association_foreign_key: :university_person_id # NOTE: Find a fix for wrong table name on WHERE clause - # SELECT "education_academic_years".* - # FROM "education_academic_years" - # INNER JOIN "education_cohorts" - # ON "education_academic_years"."id" = "education_cohorts"."academic_year_id" + # SELECT "administration_academic_years".* + # FROM "administration_academic_years" + # INNER JOIN "administration_cohorts" + # ON "administration_academic_years"."id" = "administration_cohorts"."academic_year_id" # WHERE "cohorts"."program_id" = '' # # has_many :academic_years, - # class_name: 'Education::AcademicYear', - # through: :education_cohorts, - # source: :education_academic_year - # alias_method :education_academic_years, :academic_years + # class_name: 'Administration::AcademicYear', + # through: :administration_cohorts, + # source: :administration_academic_year + # alias_method :administration_academic_years, :academic_years def academic_years - Education::AcademicYear.where(id: education_cohorts.pluck(:academic_year_id)) + Administration::AcademicYear.where(id: administration_cohorts.pluck(:academic_year_id)) end - alias :education_academic_years :academic_years + alias :administration_academic_years :academic_years end end diff --git a/app/models/education/school/with_alumni.rb b/app/models/education/school/with_alumni.rb index ceca3e2ffc..c854fa9fb4 100644 --- a/app/models/education/school/with_alumni.rb +++ b/app/models/education/school/with_alumni.rb @@ -3,13 +3,13 @@ module Education::School::WithAlumni included do - has_many :education_cohorts, - class_name: 'Education::Cohort', + has_many :administration_cohorts, + class_name: 'Administration::Cohort', dependent: :destroy - alias_method :cohorts, :education_cohorts + alias_method :cohorts, :administration_cohorts has_many :alumni, -> { distinct }, - through: :education_cohorts, + through: :administration_cohorts, source: :people alias_method :university_person_alumni, :alumni @@ -26,10 +26,10 @@ module Education::School::WithAlumni alias_method :university_person_alumni_organizations, :alumni_organizations has_many :academic_years, -> { distinct }, - class_name: 'Education::AcademicYear', - through: :education_cohorts, + class_name: 'Administration::AcademicYear', + through: :administration_cohorts, source: :academic_year - alias_method :education_academic_years, :academic_years + alias_method :administration_academic_years, :academic_years end end diff --git a/app/models/university/person.rb b/app/models/university/person.rb index b467a4b474..f46d3ec6bf 100644 --- a/app/models/university/person.rb +++ b/app/models/university/person.rb @@ -188,6 +188,19 @@ def to_s_alphabetical_in(language) best_localization_for(language).to_s_alphabetical end + def xlsx_gender + case gender + when 'male' + 'm' + when 'female' + 'f' + when 'non_binary' + 'n' + else + nil + end + end + protected def blocks_mentioning_self diff --git a/app/models/university/person/alumnus/facets.rb b/app/models/university/person/alumnus/facets.rb index e05072f478..749f78f789 100644 --- a/app/models/university/person/alumnus/facets.rb +++ b/app/models/university/person/alumnus/facets.rb @@ -24,7 +24,7 @@ def add_name def add_years filter_with_list :diploma_years, { source: @about.academic_years.ordered, - title: Education::AcademicYear.model_name.human(count: 2), + title: Administration::AcademicYear.model_name.human(count: 2), habtm: true } end diff --git a/app/models/university/person/with_alumnus.rb b/app/models/university/person/with_alumnus.rb index 512de3d0bb..f73ff4e40c 100644 --- a/app/models/university/person/with_alumnus.rb +++ b/app/models/university/person/with_alumnus.rb @@ -3,9 +3,9 @@ module University::Person::WithAlumnus included do has_and_belongs_to_many :cohorts, - class_name: '::Education::Cohort', + class_name: '::Administration::Cohort', foreign_key: :university_person_id, - association_foreign_key: :education_cohort_id + association_foreign_key: :administration_cohort_id accepts_nested_attributes_for :cohorts, reject_if: :all_blank, allow_destroy: true @@ -14,9 +14,9 @@ module University::Person::WithAlumnus # Dénormalisation des liens via cohorts, pour la recherche par facettes has_and_belongs_to_many :diploma_years, - class_name: 'Education::AcademicYear', + class_name: 'Administration::AcademicYear', foreign_key: :university_person_id, - association_foreign_key: :education_academic_year_id + association_foreign_key: :administration_academic_year_id has_and_belongs_to_many :diploma_programs, class_name: 'Education::Program', @@ -42,13 +42,13 @@ module University::Person::WithAlumnus scope :for_alumni_program, -> (program_ids, language = nil) { left_joins(:cohorts) - .where(education_cohorts: { program_id: program_ids }) + .where(administration_cohorts: { program_id: program_ids }) .select("university_people.*") .distinct } scope :for_alumni_year, -> (academic_year_ids, language = nil) { left_joins(:cohorts) - .where(education_cohorts: { academic_year_id: academic_year_ids }) + .where(administration_cohorts: { academic_year_id: academic_year_ids }) .select("university_people.*") .distinct } @@ -71,10 +71,10 @@ def find_cohorts private def find_cohort_for_nested(object) - academic_year = Education::AcademicYear.where(university_id: university_id, year: object.year).first_or_create - cohort = Education::Cohort.where(university_id: university_id, school_id: object.school_id, program_id: object.program_id, academic_year_id: academic_year.id).first_or_initialize + academic_year = Administration::AcademicYear.where(university_id: university_id, year: object.year).first_or_create + cohort = Administration::Cohort.where(university_id: university_id, school_id: object.school_id, program_id: object.program_id, academic_year_id: academic_year.id).first_or_initialize return unless cohort.valid? cohort.save if cohort.new_record? cohort.reload end -end \ No newline at end of file +end diff --git a/app/models/university/with_administration.rb b/app/models/university/with_administration.rb index c19afd3608..97bab6fd2f 100644 --- a/app/models/university/with_administration.rb +++ b/app/models/university/with_administration.rb @@ -6,5 +6,15 @@ module University::WithAdministration class_name: 'Administration::Location', dependent: :destroy alias_method :locations, :administration_locations + + has_many :administration_academic_years, + class_name: 'Administration::AcademicYear', + dependent: :destroy + alias_method :academic_years, :administration_academic_years + + has_many :administration_cohorts, + class_name: 'Administration::Cohort', + dependent: :destroy + alias_method :cohorts, :administration_cohorts end end diff --git a/app/models/university/with_education.rb b/app/models/university/with_education.rb index 6725a8b548..7d6e83c43b 100644 --- a/app/models/university/with_education.rb +++ b/app/models/university/with_education.rb @@ -2,11 +2,6 @@ module University::WithEducation extend ActiveSupport::Concern included do - has_many :education_cohorts, - class_name: 'Education::Cohort', - dependent: :destroy - alias_method :cohorts, :education_cohorts - has_many :education_diplomas, class_name: 'Education::Diploma', dependent: :destroy @@ -26,10 +21,5 @@ module University::WithEducation class_name: 'Education::School', dependent: :destroy alias_method :schools, :education_schools - - has_many :education_academic_years, - class_name: 'Education::AcademicYear', - dependent: :destroy - alias_method :academic_years, :education_academic_years end end diff --git a/app/services/importers/hash_to_cohort.rb b/app/services/importers/hash_to_cohort.rb index ac11709297..7e428bee53 100644 --- a/app/services/importers/hash_to_cohort.rb +++ b/app/services/importers/hash_to_cohort.rb @@ -64,7 +64,7 @@ def academic_year end def cohort - @cohort ||= @university.education_cohorts + @cohort ||= @university.administration_cohorts .where(school: school, program: program, academic_year: academic_year) .first_or_create end diff --git a/app/views/admin/education/academic_years/_list.html.erb b/app/views/admin/administration/academic_years/_list.html.erb similarity index 77% rename from app/views/admin/education/academic_years/_list.html.erb rename to app/views/admin/administration/academic_years/_list.html.erb index 87a40625c2..1428a90543 100644 --- a/app/views/admin/education/academic_years/_list.html.erb +++ b/app/views/admin/administration/academic_years/_list.html.erb @@ -2,8 +2,8 @@ - - + + diff --git a/app/views/admin/administration/academic_years/index.html.erb b/app/views/admin/administration/academic_years/index.html.erb new file mode 100644 index 0000000000..5f33eda108 --- /dev/null +++ b/app/views/admin/administration/academic_years/index.html.erb @@ -0,0 +1,3 @@ +<% content_for :title, Administration::AcademicYear.model_name.human(count: 2) %> + +<%= render 'admin/administration/academic_years/list', academic_years: @academic_years %> diff --git a/app/views/admin/education/academic_years/show.html.erb b/app/views/admin/administration/academic_years/show.html.erb similarity index 63% rename from app/views/admin/education/academic_years/show.html.erb rename to app/views/admin/administration/academic_years/show.html.erb index 2b7a3e4dce..b97ed99344 100644 --- a/app/views/admin/education/academic_years/show.html.erb +++ b/app/views/admin/administration/academic_years/show.html.erb @@ -1,8 +1,8 @@ <% content_for :title, @l10n %> <% if @academic_year.cohorts.any? %> -

<%= Education::Cohort.model_name.human(count: 2) %>

- <%= render 'admin/education/cohorts/list', cohorts: @cohorts %> +

<%= Administration::Cohort.model_name.human(count: 2) %>

+ <%= render 'admin/administration/cohorts/list', cohorts: @cohorts %> <% end %> <% if @academic_year.people.any? %> @@ -11,6 +11,6 @@ <% end %> <% content_for :server_admin_only do %> - <%= static_link static_admin_education_academic_year_path(@academic_year) %> + <%= static_link static_admin_administration_academic_year_path(@academic_year) %> <%= render 'admin/communication/websites/git_files/list', git_files: @l10n.git_files %> -<% end %> +<% end %> diff --git a/app/views/admin/education/academic_years/static.html.erb b/app/views/admin/administration/academic_years/static.html.erb similarity index 100% rename from app/views/admin/education/academic_years/static.html.erb rename to app/views/admin/administration/academic_years/static.html.erb diff --git a/app/views/admin/administration/alumni/_filters.html.erb b/app/views/admin/administration/alumni/_filters.html.erb index de06204c04..c79501eb8d 100644 --- a/app/views/admin/administration/alumni/_filters.html.erb +++ b/app/views/admin/administration/alumni/_filters.html.erb @@ -26,10 +26,10 @@ <%= render_filter f, :select, :for_alumni_year, - label: t('filters.attributes.element', element: Education::AcademicYear.model_name.human.downcase), + label: t('filters.attributes.element', element: Administration::AcademicYear.model_name.human.downcase), collection: current_university.academic_years.ordered(current_language), multiple: true %> <% end %> -<% end %> \ No newline at end of file +<% end %> diff --git a/app/views/admin/administration/alumni/_list.html.erb b/app/views/admin/administration/alumni/_list.html.erb index 42301ad0a0..4bd8fe2001 100644 --- a/app/views/admin/administration/alumni/_list.html.erb +++ b/app/views/admin/administration/alumni/_list.html.erb @@ -12,11 +12,11 @@ <% if person.cohorts.any? %>

<%= person.cohorts.size %> - <%= Education::Cohort.model_name.human(count: person.cohorts.size).downcase %> + <%= Administration::Cohort.model_name.human(count: person.cohorts.size).downcase %>

<% end %> <% end %> - \ No newline at end of file + diff --git a/app/views/admin/administration/alumni/index.html.erb b/app/views/admin/administration/alumni/index.html.erb index da64bbaca6..ecfd95f387 100644 --- a/app/views/admin/administration/alumni/index.html.erb +++ b/app/views/admin/administration/alumni/index.html.erb @@ -1,5 +1,16 @@ <% content_for :title, University::Person::Alumnus.model_name.human(count: 2) %> +<% content_for :title_right do %> + <%= button_advanced do %> + <%= link_to t('export'), + request.params.merge(format: "xlsx"), + class: button_classes %> + <% end %> + <%= link_to t('university.alumni.cohorts.import_btn'), + new_admin_administration_alumni_cohorts_import_path, + class: button_classes if can? :create, University::Person::Alumnus %> +<% end %> +

<%= @alumni.total_count %> @@ -10,9 +21,3 @@ <%= render 'admin/administration/alumni/list', alumni: @alumni %> <%= paginate @alumni %> - -<% content_for :title_right do %> - <%= link_to t('university.alumni.cohorts.import_btn'), - new_admin_administration_alumni_cohorts_import_path, - class: button_classes if can? :create, University::Person::Alumnus %> -<% end %> \ No newline at end of file diff --git a/app/views/admin/administration/alumni/index.xlsx.axlsx b/app/views/admin/administration/alumni/index.xlsx.axlsx new file mode 100644 index 0000000000..f51d045683 --- /dev/null +++ b/app/views/admin/administration/alumni/index.xlsx.axlsx @@ -0,0 +1,109 @@ +wb = xlsx_package.workbook +wb.add_worksheet(name: "index") do |sheet| + columns = [ + University::Person::Localization.human_attribute_name(:first_name), + University::Person::Localization.human_attribute_name(:last_name), + University::Person.human_attribute_name(:gender), + + University::Person.human_attribute_name(:birthdate), + University::Person.human_attribute_name(:email), + University::Person.human_attribute_name(:picture), + University::Person::Localization.human_attribute_name(:url), + + University::Person.human_attribute_name(:phone_professional), + University::Person.human_attribute_name(:phone_personal), + University::Person.human_attribute_name(:phone_mobile), + + University::Person.human_attribute_name(:address), + University::Person.human_attribute_name(:zipcode), + University::Person.human_attribute_name(:city), + University::Person.human_attribute_name(:country), + + University::Person::Localization.human_attribute_name(:biography), + + University::Person::Localization.human_attribute_name(:twitter), + University::Person::Localization.human_attribute_name(:linkedin), + University::Person::Localization.human_attribute_name(:mastodon), + + University::Person.human_attribute_name(:categories), + + Education::School.model_name.human, + Education::Program.model_name.human, + Administration::AcademicYear.model_name.human + ] + + types = [ + :string, + :string, + :string, + + nil, + :string, + :string, + :string, + + :string, + :string, + :string, + + :string, + :string, + :string, + :string, + + :string, + + :string, + :string, + :string, + + :string, + + :string, + :string, + :string + ] + + sheet.add_row columns, types: Array.new(types.length) { |_| :string } + + @alumni.each do |alumnus| + alumnus_l10n = alumnus.best_localization_for(current_language) + alumnus_infos = [ + alumnus_l10n.first_name, + alumnus_l10n.last_name, + alumnus.xlsx_gender, + + alumnus.birthdate, + alumnus.email, + alumnus.picture.url, + alumnus_l10n.url, + + alumnus.phone_professional, + alumnus.phone_personal, + alumnus.phone_mobile, + + alumnus.address, + alumnus.zipcode, + alumnus.city, + alumnus.country, + + alumnus_l10n.biography, + + alumnus_l10n.twitter, + alumnus_l10n.linkedin, + alumnus_l10n.mastodon, + + alumnus.categories.map { |category| category.to_s_in(current_language) }.join('|') + ] + alumnus.cohorts.each do |cohort| + infos = [ + *alumnus_infos, + cohort.school.to_s_in(current_language), + cohort.program.to_s_in(current_language), + cohort.academic_year.to_s_in(current_language) + ] + + sheet.add_row infos, types: types + end + end +end diff --git a/app/views/admin/administration/cohorts/_filters.html.erb b/app/views/admin/administration/cohorts/_filters.html.erb new file mode 100644 index 0000000000..ae20447076 --- /dev/null +++ b/app/views/admin/administration/cohorts/_filters.html.erb @@ -0,0 +1,21 @@ +<%= simple_form_for :filters, url: current_path, method: :get do |f| %> + <%= filters_panel current_path: current_path, active_filters_count: active_filters_count do |form| %> + + <%= render_filter f, + :select, + :for_school, + label: t('filters.attributes.element', element: Education::School.model_name.human.downcase), + collection: osuny_collection(current_university.education_schools, localized: true), + multiple: true + %> + + <%= render_filter f, + :select, + :for_program, + label: t('filters.attributes.element', element: Education::Program.model_name.human.downcase), + collection: osuny_collection(current_university.education_programs, localized: true), + multiple: true + %> + + <% end %> +<% end %> diff --git a/app/views/admin/education/cohorts/_list.html.erb b/app/views/admin/administration/cohorts/_list.html.erb similarity index 73% rename from app/views/admin/education/cohorts/_list.html.erb rename to app/views/admin/administration/cohorts/_list.html.erb index fa6d1f766c..fd0cac7040 100644 --- a/app/views/admin/education/cohorts/_list.html.erb +++ b/app/views/admin/administration/cohorts/_list.html.erb @@ -1,4 +1,5 @@ -

+<% hide_school ||= false %> +
<% cohorts.ordered.each do |cohort| %>
@@ -10,7 +11,7 @@ <% if can?(:restore, cohort) %> @@ -19,14 +20,16 @@
- <%= link_to [:admin, cohort] do %> + <%= link_to [:admin, cohort, { school_id: nil, program_id: nil }] do %> <%= cohort.program.to_s_in(current_language) %> <%= cohort.year %> <% end %>
-
- <%= cohort.school.to_s_in(current_language) %> -
+ <% unless hide_school %> +
+ <%= cohort.school.to_s_in(current_language) %> +
+ <% end %>
<%= cohorts.count %> - <%= Education::Cohort.model_name.human(count: cohorts.count).downcase %> + <%= Administration::Cohort.model_name.human(count: cohorts.count).downcase %>
<% end %> diff --git a/app/views/extranet/alumni/academic_years/show.html.erb b/app/views/extranet/alumni/academic_years/show.html.erb index ebd28386f3..c5519e7b45 100644 --- a/app/views/extranet/alumni/academic_years/show.html.erb +++ b/app/views/extranet/alumni/academic_years/show.html.erb @@ -10,7 +10,7 @@

<%= @cohorts.total_count %> - <%= Education::Cohort.model_name.human(count: @cohorts.total_count).downcase %> + <%= Administration::Cohort.model_name.human(count: @cohorts.total_count).downcase %>

diff --git a/app/views/extranet/alumni/cohorts/index.html.erb b/app/views/extranet/alumni/cohorts/index.html.erb index 0c2b3c9816..dd0ca2db5a 100644 --- a/app/views/extranet/alumni/cohorts/index.html.erb +++ b/app/views/extranet/alumni/cohorts/index.html.erb @@ -1,8 +1,8 @@ -<% content_for :title, Education::Cohort.model_name.human(count: 2) %> +<% content_for :title, Administration::Cohort.model_name.human(count: 2) %> <% content_for :header_right do %>

<%= @count %> - <%= Education::Cohort.model_name.human(count: @count).downcase %> + <%= Administration::Cohort.model_name.human(count: @count).downcase %>

<% end %> @@ -10,4 +10,4 @@ <%= render 'extranet/alumni/cohorts/index/facets', cohorts: @cohorts, facets: @facets %> <% else %> <%= render 'extranet/alumni/cohorts/index/cards', cohorts: @cohorts %> -<% end %> \ No newline at end of file +<% end %> diff --git a/app/views/extranet/alumni/persons/show/_cohorts.html.erb b/app/views/extranet/alumni/persons/show/_cohorts.html.erb index bd38ba7442..b419fbe40b 100644 --- a/app/views/extranet/alumni/persons/show/_cohorts.html.erb +++ b/app/views/extranet/alumni/persons/show/_cohorts.html.erb @@ -1,5 +1,5 @@
-

<%= Education::Cohort.model_name.human(count: 2) %>

+

<%= Administration::Cohort.model_name.human(count: 2) %>

    <% cohorts.each do |cohort| %> <% diff --git a/config/locales/administration/en.yml b/config/locales/administration/en.yml index af1994cdeb..36b96887e3 100644 --- a/config/locales/administration/en.yml +++ b/config/locales/administration/en.yml @@ -4,6 +4,13 @@ en: administration/qualiopi: Qualiopi activerecord: attributes: + administration/academic_year: + year: Year + administration/cohort: + alumni: Alumni + program: Program + school: School + year: Year administration/location: address: Address city: City @@ -34,6 +41,12 @@ en: proof: Proof requirement: Requirement models: + administration/academic_year: + one: Year + other: Years + administration/cohort: + one: Cohort + other: Cohorts administration/location: one: Location other: Locations @@ -51,9 +64,15 @@ en: administration: description: parts: + academic_year: + description: Presentation of the academic years + title: Years alumnus: - description: Presentation of the students who have studied in the various courses. + description: Presentation of the students who have studied in the various courses title: Alumni + cohort: + description: Presentation of the cohorts of alumni + title: Cohorts location: description: Management of the various (physical) education and research sites title: Locations @@ -62,4 +81,4 @@ en: title: Qualiopi source: Code des relations entre le public et l'administration text_html: Administration, in its many forms, is defined primarily by its activities in the service of the general interest. It acts in the general interest and respects the principle of legality. It is bound by the obligation of neutrality and respect for the principle of secularism. It complies with the principle of equality and guarantees everyone impartial treatment. - title: Administration \ No newline at end of file + title: Administration diff --git a/config/locales/administration/fr.yml b/config/locales/administration/fr.yml index f136df84b3..ec14ab7189 100644 --- a/config/locales/administration/fr.yml +++ b/config/locales/administration/fr.yml @@ -4,6 +4,13 @@ fr: administration/qualiopi: Qualiopi activerecord: attributes: + administration/academic_year: + year: Année + administration/cohort: + alumni: Alumni + program: Formation + school: École + year: Année administration/location: address: Adresse city: Ville @@ -34,6 +41,12 @@ fr: proof: Éléments de preuve requirement: Obligations spécifiques models: + administration/academic_year: + one: Année + other: Années + administration/cohort: + one: Promotion + other: Promotions administration/location: one: Lieu other: Lieux @@ -51,9 +64,15 @@ fr: administration: description: parts: + academic_year: + description: Présentation des années universitaires + title: Années alumnus: description: Présentation des étudiants et étudiantes ayant étudié dans les différentes formations title: Alumni + cohort: + description: Présentation des promotions d'alumni + title: Promotions location: description: Gestion des différents lieux de formation et de recherche title: Lieux @@ -62,4 +81,4 @@ fr: title: Qualiopi source: Code des relations entre le public et l'administration text_html: L'administration, sous ses multiples formes, se définit principalement par ses activités au service de l'intérêt général. L'administration agit dans l'intérêt général et respecte le principe de légalité. Elle est tenue à l'obligation de neutralité et au respect du principe de laïcité. Elle se conforme au principe d'égalité et garantit à chacun un traitement impartial. - title: Administration \ No newline at end of file + title: Administration diff --git a/config/locales/communication/en.yml b/config/locales/communication/en.yml index bc192d6646..968089ec34 100644 --- a/config/locales/communication/en.yml +++ b/config/locales/communication/en.yml @@ -553,6 +553,11 @@ en: show: Show page special_page: Special page special_pages: + administration_academic_year: + native: + zero: This page is a special page that natively displays the site's alumni, sorted by year. Currently, there are no alumni on the site. + one: This page is a special page that natively displays the site's alumni, sorted by year. Currently, there is one alumnus. + other: This page is a special page that natively displays the site's %{count} alumni, sorted by year. administration_location: native: zero: This page is a special page, which natively presents the campus locations. For now, there is no location. @@ -583,11 +588,6 @@ en: zero: This page is a special page that natively displays the site's news. one: This page is a special page that natively displays the site's news . Currently, there's a single post. other: This page is a special page that natively displays the %{count} published news. - education_academic_year: - native: - zero: This page is a special page that natively displays the site's alumni, sorted by year. Currently, there are no alumni on the site. - one: This page is a special page that natively displays the site's alumni, sorted by year. Currently, there is one alumnus. - other: This page is a special page that natively displays the site's %{count} alumni, sorted by year. education_diploma: native: zero: This page is a special page that natively displays the diplomas associated with the site. Currently, there are no diplomas on the site. @@ -731,6 +731,9 @@ en: accessibility: slug: accessibility title: Accessibility + administration_academic_year: + slug: alumni + title: Alumni administration_location: slug: campus title: Campus @@ -761,9 +764,6 @@ en: communication_post: slug: posts title: Posts - education_academic_year: - slug: alumni - title: Alumni education_diploma: slug: diplomas title: Diplomas diff --git a/config/locales/communication/fr.yml b/config/locales/communication/fr.yml index 8c77ad8737..c78c0eae21 100644 --- a/config/locales/communication/fr.yml +++ b/config/locales/communication/fr.yml @@ -553,6 +553,11 @@ fr: show: Voir la page special_page: Page spéciale special_pages: + administration_academic_year: + native: + zero: Cette page est une page spéciale, qui présente nativement les alumni du site, classés par années. Pour l'instant, il n'y a aucun alumnus dans le site. + one: Cette page est une page spéciale, qui présente nativement les alumni du site, classés par années. Pour l'instant, il y a 1 alumnus. + other: Cette page est une page spéciale, qui présente nativement les %{count} alumni du site, classés par années. administration_location: native: zero: Cette page est une page spéciale, qui présente nativement les lieux du campus. Pour l'instant, il n'y a aucun lieu. @@ -583,11 +588,6 @@ fr: zero: Cette page est une page spéciale, qui présente nativement les actualités du site. one: Cette page est une page spéciale, qui présente nativement les actualités du site. Pour l'instant, il y a 1 actualité publiée. other: Cette page est une page spéciale, qui présente nativement les %{count} actualités publiées. - education_academic_year: - native: - zero: Cette page est une page spéciale, qui présente nativement les alumni du site, classés par années. Pour l'instant, il n'y a aucun alumnus dans le site. - one: Cette page est une page spéciale, qui présente nativement les alumni du site, classés par années. Pour l'instant, il y a 1 alumnus. - other: Cette page est une page spéciale, qui présente nativement les %{count} alumni du site, classés par années. education_diploma: native: zero: Cette page est une page spéciale, qui présente nativement les diplômes liés au site. Pour l'instant, il n'y a aucun diplôme dans le site. @@ -731,6 +731,9 @@ fr: accessibility: slug: accessibilite title: Accessibilité + administration_academic_year: + slug: alumni + title: Alumni administration_location: slug: campus title: Campus @@ -761,9 +764,6 @@ fr: communication_post: slug: actualites title: Actualités - education_academic_year: - slug: alumni - title: Alumni education_diploma: slug: diplomes title: "Diplômes" diff --git a/config/locales/education/en.yml b/config/locales/education/en.yml index 9fc37bd020..e524f419ea 100644 --- a/config/locales/education/en.yml +++ b/config/locales/education/en.yml @@ -4,13 +4,6 @@ en: education: Education activerecord: attributes: - education/academic_year: - year: Year - education/cohort: - alumni: Alumni - program: Program - school: School - year: Year education/diploma: certification: Certification ects: ECTS @@ -93,12 +86,6 @@ en: name: Name websites: Linked websites models: - education/academic_year: - one: Year - other: Years - education/cohort: - one: Cohort - other: Cohorts education/diploma: one: Diploma other: Diplomas diff --git a/config/locales/education/fr.yml b/config/locales/education/fr.yml index 0d9e8736d5..87272df005 100644 --- a/config/locales/education/fr.yml +++ b/config/locales/education/fr.yml @@ -4,13 +4,6 @@ fr: education: Enseignement activerecord: attributes: - education/academic_year: - year: Année - education/cohort: - alumni: Alumni - program: Formation - school: École - year: Année education/diploma: certification: Contrôle par l'État ects: Crédits ECTS @@ -93,12 +86,6 @@ fr: name: Nom url: Site Web models: - education/academic_year: - one: Année - other: Années - education/cohort: - one: Promotion - other: Promotions education/diploma: one: Diplôme other: Diplômes diff --git a/config/locales/en.yml b/config/locales/en.yml index 69f63efdd5..9b89adae69 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -167,7 +167,7 @@ en: meta_description: hint: Plain text without HTML, dedicated to Search Engine Optimization (SEO). label: Meta description - move: + move: cta: Move description: "Move this item to another website you manage:" permission_denied: You cannot move this item. diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 5e3cec3226..5d6d02f4aa 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -167,7 +167,7 @@ fr: meta_description: hint: Texte simple, dédié au à l'optimisation pour les moteurs de recherche (Search Engine Optimization, SEO). label: Description pour les moteurs de recherche (meta) - move: + move: cta: Déplacer description: "Déplacez cet élément vers un autre site web que vous gérez :" permission_denied: Vous ne pouvez pas déplacer cet élément. diff --git a/config/navigation/admin/administration_navigation.rb b/config/navigation/admin/administration_navigation.rb index d72d7a1e9c..060bef23ca 100644 --- a/config/navigation/admin/administration_navigation.rb +++ b/config/navigation/admin/administration_navigation.rb @@ -6,21 +6,27 @@ navigation.items do |primary| primary.item :subnav_summary, - t('admin.subnav.summary'), - admin_administration_root_path, - highlights_on: lambda { - controller_name == "dashboard" && action_name == "index" + t('admin.subnav.summary'), + admin_administration_root_path, + highlights_on: lambda { + controller_name == "dashboard" && action_name == "index" } primary.item :subnav_alumni, t('administration.description.parts.alumnus.title'), admin_administration_alumni_path if can?(:read, University::Person::Alumnus) + primary.item :subnav_cohorts, + t('administration.description.parts.cohort.title'), + admin_administration_cohorts_path if can?(:read, Administration::Cohort) primary.item :subnav_locations, t('administration.description.parts.location.title'), admin_administration_locations_path if can?(:read, Administration::Location) + primary.item :subnav_academic_years, + t('administration.description.parts.academic_year.title'), + admin_administration_academic_years_path if can?(:read, Administration::AcademicYear) primary.item :subnav_qualiopi, t('administration.description.parts.qualiopi.title'), admin_administration_qualiopi_criterions_path, - highlights_on: lambda { + highlights_on: lambda { controller_name.in?(["indicators", "criterions"]) } if can?(:read, Administration::Qualiopi) end diff --git a/config/navigation/admin/education/program_navigation.rb b/config/navigation/admin/education/program_navigation.rb index 3d0ee5f3d6..d9485d16f3 100644 --- a/config/navigation/admin/education/program_navigation.rb +++ b/config/navigation/admin/education/program_navigation.rb @@ -6,22 +6,25 @@ navigation.items do |primary| primary.item :subnav_summary, - t('admin.subnav.summary'), + t('admin.subnav.summary'), admin_education_program_path(id: @program, program_id: nil), - highlights_on: lambda { - controller_name == "programs" && action_name == "show" + highlights_on: lambda { + controller_name == "programs" && action_name == "show" } if can?(:read, @program) primary.item :subnav_pedagogy, - t('education.program.parts.pedagogy.label'), + t('education.program.parts.pedagogy.label'), pedagogy_admin_education_program_path(id: @program, program_id: nil) primary.item :subnav_admission, - t('education.program.parts.admission.label'), + t('education.program.parts.admission.label'), admission_admin_education_program_path(id: @program, program_id: nil) primary.item :subnav_certification, - t('education.program.parts.certification.label'), + t('education.program.parts.certification.label'), certification_admin_education_program_path(id: @program, program_id: nil) - primary.item :subnav_alumni, - University::Person::Alumnus.model_name.human(count: 2), - alumni_admin_education_program_path(id: @program, program_id: nil) if @program.cohorts.any? + primary.item :subnav_cohorts, + Administration::Cohort.model_name.human(count: 2), + admin_education_program_cohorts_path(@program), + highlights_on: lambda { + controller_name == "cohorts" && action_name == "index" + } if @program.cohorts.any? end end diff --git a/config/navigation/admin_university_navigation.rb b/config/navigation/admin_university_navigation.rb index f8a9216239..03b29d6d8b 100644 --- a/config/navigation/admin_university_navigation.rb +++ b/config/navigation/admin_university_navigation.rb @@ -7,7 +7,7 @@ def load_realm(realm, menu) realm.parts.each do |part| name = part.first identifier = name.to_s.to_sym - key = "#{realm.to_s.downcase}.description.parts.#{name.to_s.demodulize.downcase}.title" + key = "#{realm.to_s.downcase}.description.parts.#{name.to_s.demodulize.underscore}.title" label = I18n.t(key) path = send part.last, lang: current_language.iso_code menu.item identifier, label, path if can?(:read, name) diff --git a/config/navigation/extranet_navigation.rb b/config/navigation/extranet_navigation.rb index 5fd09ccf7c..23b2636410 100644 --- a/config/navigation/extranet_navigation.rb +++ b/config/navigation/extranet_navigation.rb @@ -28,14 +28,14 @@ University::Person.model_name.human(count: 2), alumni_university_persons_path secondary.item :years, - Education::AcademicYear.model_name.human(count: 2), - alumni_education_academic_years_path if current_extranet.should_show_academic_years? + Administration::AcademicYear.model_name.human(count: 2), + alumni_administration_academic_years_path if current_extranet.should_show_academic_years? secondary.item :cohorts, - Education::Cohort.model_name.human(count: 2), - alumni_education_cohorts_path + Administration::Cohort.model_name.human(count: 2), + alumni_administration_cohorts_path secondary.item :organizations, University::Organization.model_name.human(count: 2), alumni_university_organizations_path end if current_extranet.feature_alumni? end -end \ No newline at end of file +end diff --git a/config/routes/admin/administration.rb b/config/routes/admin/administration.rb index ef7a181c6d..c4818289dc 100644 --- a/config/routes/admin/administration.rb +++ b/config/routes/admin/administration.rb @@ -10,6 +10,17 @@ patch 'cohorts' => 'alumni/cohorts#update' end end + resources :academic_years do + member do + get :static + end + end + resources :cohorts, only: [:index, :show, :destroy] do + member do + get :static + post :restore + end + end resources :locations do member do get :static diff --git a/config/routes/admin/education.rb b/config/routes/admin/education.rb index f028ead5d7..f47d7dcd07 100644 --- a/config/routes/admin/education.rb +++ b/config/routes/admin/education.rb @@ -1,15 +1,4 @@ namespace :education do - resources :academic_years do - member do - get :static - end - end - resources :cohorts, only: [:index, :show, :destroy] do - member do - get :static - post :restore - end - end resources :diplomas do collection do post :reorder @@ -29,6 +18,7 @@ end end resources :teachers, controller: 'programs/teachers', only: :destroy + resources :cohorts, controller: 'programs/cohorts', only: :index collection do resources :categories, controller: 'programs/categories', as: 'program_categories' do collection do @@ -48,7 +38,6 @@ get 'admission/edit' => 'programs/parts#admission_edit', as: :edit_admission get 'certification' => 'programs/parts#certification', as: :certification get 'certification/edit' => 'programs/parts#certification_edit', as: :edit_certification - get 'alumni' => 'programs/parts#alumni', as: :alumni get :children get :preview get :static @@ -64,6 +53,7 @@ post :reorder end end + resources :cohorts, controller: 'schools/cohorts', only: :index member do get :static post :restore diff --git a/config/routes/extranet.rb b/config/routes/extranet.rb index d651b30c3f..fdc2e568d3 100644 --- a/config/routes/extranet.rb +++ b/config/routes/extranet.rb @@ -12,14 +12,14 @@ # Feature Alumni namespace :alumni do - get 'cohorts' => 'cohorts#index', as: :education_cohorts - get 'cohorts/:id' => 'cohorts#show', as: :education_cohort + get 'cohorts' => 'cohorts#index', as: :administration_cohorts + get 'cohorts/:id' => 'cohorts#show', as: :administration_cohort get 'organizations' => 'organizations#index', as: :university_organizations get 'organization/:id' => 'organizations#show', as: :university_organization get 'persons' => 'persons#index', as: :university_persons get 'persons/:id' => 'persons#show', as: :university_person - get 'years' => 'academic_years#index', as: :education_academic_years - get 'years/:id' => 'academic_years#show', as: :education_academic_year + get 'years' => 'academic_years#index', as: :administration_academic_years + get 'years/:id' => 'academic_years#show', as: :administration_academic_year root to: 'persons#index' end diff --git a/db/migrate/20260625085319_move_cohorts_from_education_to_administration.rb b/db/migrate/20260625085319_move_cohorts_from_education_to_administration.rb new file mode 100644 index 0000000000..b1a9c765bb --- /dev/null +++ b/db/migrate/20260625085319_move_cohorts_from_education_to_administration.rb @@ -0,0 +1,65 @@ +class MoveCohortsFromEducationToAdministration < ActiveRecord::Migration[8.1] + def up + rename_table :education_cohort_localizations, + :administration_cohort_localizations + rename_table :education_cohorts, + :administration_cohorts + + rename_table :education_cohorts_university_people, + :administration_cohorts_university_people + rename_column :administration_cohorts_university_people, + :education_cohort_id, + :administration_cohort_id + + Communication::Website::Permalink + .where(about_type: "Education::Cohort::Localization") + .update_all(about_type: "Administration::Cohort::Localization") + Communication::Website::GitFile + .where(about_type: "Education::Cohort::Localization") + .update_all(about_type: "Administration::Cohort::Localization") + Communication::Website::Connection + .where(indirect_object_type: "Education::Cohort") + .update_all(indirect_object_type: "Administration::Cohort") + Communication::Website::Connection + .where(indirect_object_type: "Education::Cohort::Localization") + .update_all(indirect_object_type: "Administration::Cohort::Localization") + Search + .where(about_object_type: "Education::Cohort") + .update_all( + about_object_type: "Administration::Cohort", + about_localization_type: "Administration::Cohort::Localization" + ) + end + + def down + rename_column :administration_cohorts_university_people, + :administration_cohort_id, + :education_cohort_id + rename_table :administration_cohorts_university_people, + :education_cohorts_university_people + + rename_table :administration_cohorts, + :education_cohorts + rename_table :administration_cohort_localizations, + :education_cohort_localizations + + Communication::Website::Permalink + .where(about_type: "Administration::Cohort::Localization") + .update_all(about_type: "Education::Cohort::Localization") + Communication::Website::GitFile + .where(about_type: "Administration::Cohort::Localization") + .update_all(about_type: "Education::Cohort::Localization") + Communication::Website::Connection + .where(indirect_object_type: "Administration::Cohort") + .update_all(indirect_object_type: "Education::Cohort") + Communication::Website::Connection + .where(indirect_object_type: "Administration::Cohort::Localization") + .update_all(indirect_object_type: "Education::Cohort::Localization") + Search + .where(about_object_type: "Administration::Cohort") + .update_all( + about_object_type: "Education::Cohort", + about_localization_type: "Education::Cohort::Localization" + ) + end +end diff --git a/db/migrate/20260625100524_move_academic_years_from_education_to_administration.rb b/db/migrate/20260625100524_move_academic_years_from_education_to_administration.rb new file mode 100644 index 0000000000..1c64ba2455 --- /dev/null +++ b/db/migrate/20260625100524_move_academic_years_from_education_to_administration.rb @@ -0,0 +1,71 @@ +class MoveAcademicYearsFromEducationToAdministration < ActiveRecord::Migration[8.1] + def up + rename_table :education_academic_year_localizations, + :administration_academic_year_localizations + rename_table :education_academic_years, + :administration_academic_years + + rename_table :education_academic_years_university_people, + :administration_academic_years_university_people + rename_column :administration_academic_years_university_people, + :education_academic_year_id, + :administration_academic_year_id + + Communication::Website::Permalink + .where(about_type: "Education::AcademicYear::Localization") + .update_all(about_type: "Administration::AcademicYear::Localization") + Communication::Website::GitFile + .where(about_type: "Education::AcademicYear::Localization") + .update_all(about_type: "Administration::AcademicYear::Localization") + Communication::Website::Connection + .where(indirect_object_type: "Education::AcademicYear") + .update_all(indirect_object_type: "Administration::AcademicYear") + Communication::Website::Connection + .where(indirect_object_type: "Education::AcademicYear::Localization") + .update_all(indirect_object_type: "Administration::AcademicYear::Localization") + Search + .where(about_object_type: "Education::AcademicYear") + .update_all( + about_object_type: "Administration::AcademicYear", + about_localization_type: "Administration::AcademicYear::Localization" + ) + Communication::Website::Page + .where(type: "Communication::Website::Page::EducationAcademicYear") + .update_all(type: "Communication::Website::Page::AdministrationAcademicYear") + end + + def down + rename_column :administration_academic_years_university_people, + :administration_academic_year_id, + :education_academic_year_id + rename_table :administration_academic_years_university_people, + :education_academic_years_university_people + + rename_table :administration_academic_years, + :education_academic_years + rename_table :administration_academic_year_localizations, + :education_academic_year_localizations + + Communication::Website::Permalink + .where(about_type: "Administration::AcademicYear::Localization") + .update_all(about_type: "Education::AcademicYear::Localization") + Communication::Website::GitFile + .where(about_type: "Administration::AcademicYear::Localization") + .update_all(about_type: "Education::AcademicYear::Localization") + Communication::Website::Connection + .where(indirect_object_type: "Administration::AcademicYear") + .update_all(indirect_object_type: "Education::AcademicYear") + Communication::Website::Connection + .where(indirect_object_type: "Administration::AcademicYear::Localization") + .update_all(indirect_object_type: "Education::AcademicYear::Localization") + Search + .where(about_object_type: "Administration::AcademicYear") + .update_all( + about_object_type: "Education::AcademicYear", + about_localization_type: "Education::AcademicYear::Localization" + ) + Communication::Website::Page + .where(type: "Communication::Website::Page::AdministrationAcademicYear") + .update_all(type: "Communication::Website::Page::EducationAcademicYear") + end +end diff --git a/db/schema.rb b/db/schema.rb index f001e380f4..b82b34f883 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[8.1].define(version: 2026_06_18_144210) do +ActiveRecord::Schema[8.1].define(version: 2026_06_25_100524) do # These are extensions that must be enabled in order to support this database enable_extension "pg_catalog.plpgsql" enable_extension "pg_stat_statements" @@ -18,7 +18,7 @@ enable_extension "pgcrypto" enable_extension "unaccent" - create_table "action_text_rich_texts", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| + create_table "action_text_rich_texts", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.text "body" t.datetime "created_at", null: false t.string "name", null: false @@ -45,7 +45,7 @@ t.index ["ip_address", "created_at"], name: "index_active_hashcash_stamps_on_ip_address_and_created_at", where: "(ip_address IS NOT NULL)" end - create_table "active_storage_attachments", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| + create_table "active_storage_attachments", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.uuid "blob_id", null: false t.datetime "created_at", precision: nil, null: false t.datetime "deleted_at" @@ -56,7 +56,7 @@ t.index ["record_type", "record_id", "name", "blob_id"], name: "index_active_storage_attachments_uniqueness", unique: true end - create_table "active_storage_blobs", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| + create_table "active_storage_blobs", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.bigint "byte_size", null: false t.string "checksum" t.string "content_type" @@ -70,12 +70,78 @@ t.index ["university_id"], name: "index_active_storage_blobs_on_university_id" end - create_table "active_storage_variant_records", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| + create_table "active_storage_variant_records", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.uuid "blob_id", null: false t.string "variation_digest", null: false t.index ["blob_id", "variation_digest"], name: "index_active_storage_variant_records_uniqueness", unique: true end + create_table "administration_academic_year_localizations", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| + t.uuid "about_id", null: false + t.datetime "created_at", null: false + t.datetime "deleted_at" + t.uuid "language_id", null: false + t.string "slug" + t.uuid "university_id", null: false + t.datetime "updated_at", null: false + t.index ["about_id", "language_id"], name: "idx_on_about_id_language_id_7962406d05", unique: true + t.index ["about_id"], name: "index_administration_academic_year_localizations_on_about_id" + t.index ["language_id"], name: "idx_on_language_id_a52fb1a1c1" + t.index ["university_id"], name: "idx_on_university_id_31eabbc7a7" + end + + create_table "administration_academic_years", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| + t.datetime "created_at", null: false + t.datetime "deleted_at" + t.uuid "university_id", null: false + t.datetime "updated_at", null: false + t.integer "year" + t.index ["university_id"], name: "index_administration_academic_years_on_university_id" + end + + create_table "administration_academic_years_university_people", id: false, force: :cascade do |t| + t.uuid "administration_academic_year_id", null: false + t.uuid "university_person_id", null: false + t.index ["administration_academic_year_id", "university_person_id"], name: "index_academic_year_person" + t.index ["university_person_id", "administration_academic_year_id"], name: "index_person_academic_year" + end + + create_table "administration_cohort_localizations", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| + t.uuid "about_id", null: false + t.datetime "created_at", null: false + t.datetime "deleted_at" + t.uuid "language_id", null: false + t.string "slug" + t.uuid "university_id", null: false + t.datetime "updated_at", null: false + t.index ["about_id", "language_id"], name: "idx_on_about_id_language_id_ae60ea28b0", unique: true + t.index ["about_id"], name: "index_administration_cohort_localizations_on_about_id" + t.index ["language_id"], name: "index_administration_cohort_localizations_on_language_id" + t.index ["university_id"], name: "index_administration_cohort_localizations_on_university_id" + end + + create_table "administration_cohorts", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| + t.uuid "academic_year_id", null: false + t.datetime "created_at", null: false + t.datetime "deleted_at" + t.string "name" + t.uuid "program_id", null: false + t.uuid "school_id", null: false + t.uuid "university_id", null: false + t.datetime "updated_at", null: false + t.index ["academic_year_id"], name: "index_administration_cohorts_on_academic_year_id" + t.index ["program_id"], name: "index_administration_cohorts_on_program_id" + t.index ["school_id"], name: "index_administration_cohorts_on_school_id" + t.index ["university_id"], name: "index_administration_cohorts_on_university_id" + end + + create_table "administration_cohorts_university_people", id: false, force: :cascade do |t| + t.uuid "administration_cohort_id", null: false + t.uuid "university_person_id", null: false + t.index ["administration_cohort_id", "university_person_id"], name: "index_cohort_person" + t.index ["university_person_id", "administration_cohort_id"], name: "index_person_cohort" + end + create_table "administration_location_localizations", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.uuid "about_id" t.string "address_additional" @@ -127,7 +193,7 @@ t.index ["education_school_id", "administration_location_id"], name: "index_location_school" end - create_table "administration_qualiopi_criterions", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| + create_table "administration_qualiopi_criterions", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.datetime "created_at", null: false t.text "description" t.text "name" @@ -135,7 +201,7 @@ t.datetime "updated_at", null: false end - create_table "administration_qualiopi_indicators", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| + create_table "administration_qualiopi_indicators", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.datetime "created_at", null: false t.uuid "criterion_id", null: false t.text "glossary" @@ -149,7 +215,7 @@ t.index ["criterion_id"], name: "index_administration_qualiopi_indicators_on_criterion_id" end - create_table "communication_blocks", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| + create_table "communication_blocks", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.uuid "about_id" t.string "about_type" t.uuid "communication_website_id" @@ -170,7 +236,7 @@ t.index ["university_id", "template_kind"], name: "index_communication_blocks_on_university_id_and_template_kind" end - create_table "communication_extranet_connections", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| + create_table "communication_extranet_connections", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.uuid "about_id" t.string "about_type" t.datetime "created_at", null: false @@ -182,7 +248,7 @@ t.index ["university_id"], name: "index_communication_extranet_connections_on_university_id" end - create_table "communication_extranet_document_categories", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| + create_table "communication_extranet_document_categories", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.datetime "created_at", null: false t.uuid "extranet_id", null: false t.uuid "university_id", null: false @@ -223,7 +289,7 @@ t.index ["university_id"], name: "idx_on_university_id_0dc1259072" end - create_table "communication_extranet_document_kinds", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| + create_table "communication_extranet_document_kinds", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.datetime "created_at", null: false t.uuid "extranet_id", null: false t.uuid "university_id", null: false @@ -249,7 +315,7 @@ t.index ["university_id"], name: "idx_on_university_id_95419f1df4" end - create_table "communication_extranet_documents", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| + create_table "communication_extranet_documents", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.uuid "category_id" t.datetime "created_at", null: false t.uuid "extranet_id", null: false @@ -285,7 +351,7 @@ t.index ["university_id"], name: "index_communication_extranet_localizations_on_university_id" end - create_table "communication_extranet_post_categories", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| + create_table "communication_extranet_post_categories", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.datetime "created_at", null: false t.uuid "extranet_id", null: false t.uuid "university_id", null: false @@ -332,7 +398,7 @@ t.index ["university_id"], name: "idx_on_university_id_28188e2217" end - create_table "communication_extranet_posts", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| + create_table "communication_extranet_posts", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.uuid "author_id" t.uuid "category_id" t.datetime "created_at", null: false @@ -345,7 +411,7 @@ t.index ["university_id"], name: "index_communication_extranet_posts_on_university_id" end - create_table "communication_extranets", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| + create_table "communication_extranets", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.uuid "about_id" t.string "about_type" t.string "color" @@ -620,7 +686,7 @@ t.index ["university_id"], name: "idx_on_university_id_bca328e63c" end - create_table "communication_website_agenda_events", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| + create_table "communication_website_agenda_events", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.string "bodyclass" t.uuid "communication_website_id", null: false t.datetime "created_at", null: false @@ -811,7 +877,7 @@ t.index ["university_id"], name: "index_communication_website_alerts_on_university_id" end - create_table "communication_website_connections", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| + create_table "communication_website_connections", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.datetime "created_at", null: false t.uuid "direct_source_id" t.string "direct_source_type" @@ -867,7 +933,7 @@ t.index ["university_id"], name: "index_communication_website_git_file_orphans_on_university_id" end - create_table "communication_website_git_files", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| + create_table "communication_website_git_files", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.uuid "about_id" t.string "about_type" t.datetime "created_at", null: false @@ -1013,7 +1079,7 @@ t.index ["university_id"], name: "index_communication_website_localizations_on_university_id" end - create_table "communication_website_menu_items", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| + create_table "communication_website_menu_items", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.uuid "about_id" t.string "about_type" t.datetime "created_at", null: false @@ -1036,7 +1102,7 @@ t.index ["website_id"], name: "index_communication_website_menu_items_on_website_id" end - create_table "communication_website_menus", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| + create_table "communication_website_menus", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.boolean "automatic", default: true t.uuid "communication_website_id", null: false t.datetime "created_at", null: false @@ -1135,7 +1201,7 @@ t.index ["university_id"], name: "idx_on_university_id_e62b2aba53" end - create_table "communication_website_pages", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| + create_table "communication_website_pages", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.string "bodyclass" t.uuid "communication_website_id", null: false t.datetime "created_at", null: false @@ -1156,7 +1222,7 @@ t.index ["university_id"], name: "index_communication_website_pages_on_university_id" end - create_table "communication_website_permalinks", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| + create_table "communication_website_permalinks", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.uuid "about_id" t.string "about_type" t.datetime "created_at", null: false @@ -1269,7 +1335,7 @@ t.index ["university_id"], name: "idx_on_university_id_ac2f4a0bfc" end - create_table "communication_website_post_categories", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| + create_table "communication_website_post_categories", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.string "bodyclass" t.uuid "communication_website_id", null: false t.datetime "created_at", null: false @@ -1357,7 +1423,7 @@ t.index ["unpublication_job_id"], name: "idx_on_unpublication_job_id" end - create_table "communication_website_posts", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| + create_table "communication_website_posts", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.string "bodyclass" t.uuid "communication_website_id", null: false t.datetime "created_at", null: false @@ -1392,7 +1458,7 @@ t.index ["communication_website_showcase_tag_id", "communication_website_id"], name: "index_showcase_tag_website" end - create_table "communication_websites", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| + create_table "communication_websites", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.uuid "about_id" t.string "about_type" t.string "access_token" @@ -1454,72 +1520,6 @@ t.index ["user_id", "communication_website_id"], name: "user_website" end - create_table "education_academic_year_localizations", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| - t.uuid "about_id", null: false - t.datetime "created_at", null: false - t.datetime "deleted_at" - t.uuid "language_id", null: false - t.string "slug" - t.uuid "university_id", null: false - t.datetime "updated_at", null: false - t.index ["about_id", "language_id"], name: "idx_on_about_id_language_id_eb13d82b8d", unique: true - t.index ["about_id"], name: "index_education_academic_year_localizations_on_about_id" - t.index ["language_id"], name: "index_education_academic_year_localizations_on_language_id" - t.index ["university_id"], name: "index_education_academic_year_localizations_on_university_id" - end - - create_table "education_academic_years", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| - t.datetime "created_at", null: false - t.datetime "deleted_at" - t.uuid "university_id", null: false - t.datetime "updated_at", null: false - t.integer "year" - t.index ["university_id"], name: "index_education_academic_years_on_university_id" - end - - create_table "education_academic_years_university_people", id: false, force: :cascade do |t| - t.uuid "education_academic_year_id", null: false - t.uuid "university_person_id", null: false - t.index ["education_academic_year_id", "university_person_id"], name: "index_academic_year_person" - t.index ["university_person_id", "education_academic_year_id"], name: "index_person_academic_year" - end - - create_table "education_cohort_localizations", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| - t.uuid "about_id", null: false - t.datetime "created_at", null: false - t.datetime "deleted_at" - t.uuid "language_id", null: false - t.string "slug" - t.uuid "university_id", null: false - t.datetime "updated_at", null: false - t.index ["about_id", "language_id"], name: "idx_on_about_id_language_id_a0a453655b", unique: true - t.index ["about_id"], name: "index_education_cohort_localizations_on_about_id" - t.index ["language_id"], name: "index_education_cohort_localizations_on_language_id" - t.index ["university_id"], name: "index_education_cohort_localizations_on_university_id" - end - - create_table "education_cohorts", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| - t.uuid "academic_year_id", null: false - t.datetime "created_at", null: false - t.datetime "deleted_at" - t.string "name" - t.uuid "program_id", null: false - t.uuid "school_id", null: false - t.uuid "university_id", null: false - t.datetime "updated_at", null: false - t.index ["academic_year_id"], name: "index_education_cohorts_on_academic_year_id" - t.index ["program_id"], name: "index_education_cohorts_on_program_id" - t.index ["school_id"], name: "index_education_cohorts_on_school_id" - t.index ["university_id"], name: "index_education_cohorts_on_university_id" - end - - create_table "education_cohorts_university_people", id: false, force: :cascade do |t| - t.uuid "education_cohort_id", null: false - t.uuid "university_person_id", null: false - t.index ["education_cohort_id", "university_person_id"], name: "index_cohort_person" - t.index ["university_person_id", "education_cohort_id"], name: "index_person_cohort" - end - create_table "education_diploma_localizations", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.uuid "about_id" t.text "accessibility" @@ -1549,7 +1549,7 @@ t.index ["university_id"], name: "index_education_diploma_localizations_on_university_id" end - create_table "education_diplomas", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| + create_table "education_diplomas", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.string "certification" t.datetime "created_at", null: false t.datetime "deleted_at" @@ -1648,7 +1648,7 @@ t.index ["university_id"], name: "index_education_program_localizations_on_university_id" end - create_table "education_programs", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| + create_table "education_programs", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.boolean "apprenticeship" t.string "bodyclass" t.integer "capacity" @@ -1702,7 +1702,7 @@ t.index ["university_id"], name: "index_education_school_localizations_on_university_id" end - create_table "education_schools", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| + create_table "education_schools", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.string "address" t.string "city" t.string "country" @@ -1717,7 +1717,7 @@ t.index ["university_id"], name: "index_education_schools_on_university_id" end - create_table "emergency_messages", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| + create_table "emergency_messages", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.text "content_en" t.text "content_fr" t.datetime "created_at", null: false @@ -1823,7 +1823,7 @@ t.index ["scheduled_at"], name: "index_good_jobs_on_scheduled_at", where: "(finished_at IS NULL)" end - create_table "imports", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| + create_table "imports", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.datetime "created_at", null: false t.integer "kind" t.uuid "language_id", null: false @@ -1838,7 +1838,7 @@ t.index ["user_id"], name: "index_imports_on_user_id" end - create_table "languages", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| + create_table "languages", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.datetime "created_at", null: false t.string "iso_code" t.string "name" @@ -1852,7 +1852,7 @@ t.index ["university_id", "language_id"], name: "index_languages_universities_on_university_id_and_language_id" end - create_table "research_hal_authors", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| + create_table "research_hal_authors", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.datetime "created_at", null: false t.string "docid" t.string "first_name" @@ -1911,7 +1911,7 @@ t.index ["university_id"], name: "idx_on_university_id_dc9f1267b7" end - create_table "research_journal_paper_kinds", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| + create_table "research_journal_paper_kinds", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.datetime "created_at", null: false t.datetime "deleted_at" t.uuid "journal_id", null: false @@ -1943,7 +1943,7 @@ t.index ["university_id"], name: "index_research_journal_paper_localizations_on_university_id" end - create_table "research_journal_papers", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| + create_table "research_journal_papers", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.date "accepted_at" t.text "bibliography" t.datetime "created_at", null: false @@ -1995,7 +1995,7 @@ t.index ["university_id"], name: "index_research_journal_volume_localizations_on_university_id" end - create_table "research_journal_volumes", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| + create_table "research_journal_volumes", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.datetime "created_at", null: false t.datetime "deleted_at" t.integer "number" @@ -2006,7 +2006,7 @@ t.index ["university_id"], name: "index_research_journal_volumes_on_university_id" end - create_table "research_journals", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| + create_table "research_journals", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.datetime "created_at", null: false t.datetime "deleted_at" t.uuid "university_id", null: false @@ -2014,7 +2014,7 @@ t.index ["university_id"], name: "index_research_journals_on_university_id" end - create_table "research_laboratories", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| + create_table "research_laboratories", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.string "address" t.string "city" t.string "country" @@ -2033,7 +2033,7 @@ t.index ["university_person_id", "research_laboratory_id"], name: "laboratory_person" end - create_table "research_laboratory_axes", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| + create_table "research_laboratory_axes", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.datetime "created_at", null: false t.datetime "deleted_at" t.integer "position", null: false @@ -2078,7 +2078,7 @@ t.index ["university_id"], name: "index_research_laboratory_localizations_on_university_id" end - create_table "research_publications", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| + create_table "research_publications", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.text "abstract" t.text "anr_project_references", default: [], array: true t.json "authors_citeproc" @@ -2112,7 +2112,7 @@ t.index ["university_person_id", "research_publication_id"], name: "index_publication_person" end - create_table "research_theses", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| + create_table "research_theses", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.uuid "author_id", null: false t.boolean "completed", default: false t.date "completed_at" @@ -2171,7 +2171,7 @@ t.datetime "updated_at", null: false end - create_table "universities", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| + create_table "universities", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.string "address" t.boolean "admin_already_auto_promoted", default: false t.string "city" @@ -2202,7 +2202,7 @@ t.index ["name"], name: "index_universities_on_name", opclass: :gin_trgm_ops, using: :gin end - create_table "university_apps", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| + create_table "university_apps", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.datetime "created_at", null: false t.string "name" t.string "token" @@ -2213,7 +2213,7 @@ t.index ["university_id"], name: "index_university_apps_on_university_id" end - create_table "university_organization_categories", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| + create_table "university_organization_categories", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.string "bodyclass" t.datetime "created_at", null: false t.boolean "is_taxonomy", default: false @@ -2227,7 +2227,7 @@ t.index ["university_id"], name: "index_university_organization_categories_on_university_id" end - create_table "university_organization_categories_organizations", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| + create_table "university_organization_categories_organizations", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.uuid "category_id", null: false t.uuid "organization_id", null: false t.index ["category_id"], name: "idx_on_category_id_7494b991ff" @@ -2290,7 +2290,7 @@ t.index ["university_id"], name: "index_university_organization_localizations_on_university_id" end - create_table "university_organizations", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| + create_table "university_organizations", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.string "address" t.string "bodyclass" t.string "city" @@ -2313,7 +2313,7 @@ t.index ["university_id"], name: "index_university_organizations_on_university_id" end - create_table "university_people", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| + create_table "university_people", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.string "address" t.integer "address_visibility", default: 0 t.date "birthdate" @@ -2351,14 +2351,14 @@ t.index ["user_id"], name: "index_university_people_on_user_id" end - create_table "university_people_person_categories", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| + create_table "university_people_person_categories", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.uuid "category_id", null: false t.uuid "person_id", null: false t.index ["category_id"], name: "index_university_people_person_categories_on_category_id" t.index ["person_id"], name: "index_university_people_person_categories_on_person_id" end - create_table "university_person_categories", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| + create_table "university_person_categories", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.string "bodyclass" t.datetime "created_at", null: false t.boolean "is_taxonomy", default: false @@ -2410,7 +2410,7 @@ t.index ["university_id"], name: "idx_on_university_id_1be9c668d5" end - create_table "university_person_experiences", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| + create_table "university_person_experiences", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.datetime "created_at", null: false t.datetime "deleted_at" t.integer "from_year" @@ -2438,7 +2438,7 @@ t.index ["university_id"], name: "idx_on_university_id_0b815cf13a" end - create_table "university_person_involvements", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| + create_table "university_person_involvements", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.datetime "created_at", null: false t.datetime "deleted_at" t.integer "kind" @@ -2497,7 +2497,7 @@ t.index ["university_id"], name: "index_university_role_localizations_on_university_id" end - create_table "university_roles", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| + create_table "university_roles", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.datetime "created_at", null: false t.datetime "deleted_at" t.integer "position", null: false @@ -2509,7 +2509,7 @@ t.index ["university_id"], name: "index_university_roles_on_university_id" end - create_table "user_favorites", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| + create_table "user_favorites", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.uuid "about_id", null: false t.string "about_type", null: false t.datetime "created_at", null: false @@ -2519,7 +2519,7 @@ t.index ["user_id"], name: "index_user_favorites_on_user_id" end - create_table "users", id: :uuid, default: -> { "public.gen_random_uuid()" }, force: :cascade do |t| + create_table "users", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.integer "brevo_contact_id" t.datetime "confirmation_sent_at", precision: nil t.string "confirmation_token" @@ -2568,6 +2568,17 @@ add_foreign_key "active_storage_attachments", "active_storage_blobs", column: "blob_id" add_foreign_key "active_storage_variant_records", "active_storage_blobs", column: "blob_id" + add_foreign_key "administration_academic_year_localizations", "administration_academic_years", column: "about_id" + add_foreign_key "administration_academic_year_localizations", "languages" + add_foreign_key "administration_academic_year_localizations", "universities" + add_foreign_key "administration_academic_years", "universities" + add_foreign_key "administration_cohort_localizations", "administration_cohorts", column: "about_id" + add_foreign_key "administration_cohort_localizations", "languages" + add_foreign_key "administration_cohort_localizations", "universities" + add_foreign_key "administration_cohorts", "administration_academic_years", column: "academic_year_id" + add_foreign_key "administration_cohorts", "education_programs", column: "program_id" + add_foreign_key "administration_cohorts", "education_schools", column: "school_id" + add_foreign_key "administration_cohorts", "universities" add_foreign_key "administration_location_localizations", "administration_locations", column: "about_id" add_foreign_key "administration_location_localizations", "languages" add_foreign_key "administration_location_localizations", "universities" @@ -2783,17 +2794,6 @@ add_foreign_key "communication_website_posts", "universities" add_foreign_key "communication_websites", "languages", column: "default_language_id" add_foreign_key "communication_websites", "universities" - add_foreign_key "education_academic_year_localizations", "education_academic_years", column: "about_id" - add_foreign_key "education_academic_year_localizations", "languages" - add_foreign_key "education_academic_year_localizations", "universities" - add_foreign_key "education_academic_years", "universities" - add_foreign_key "education_cohort_localizations", "education_cohorts", column: "about_id" - add_foreign_key "education_cohort_localizations", "languages" - add_foreign_key "education_cohort_localizations", "universities" - add_foreign_key "education_cohorts", "education_academic_years", column: "academic_year_id" - add_foreign_key "education_cohorts", "education_programs", column: "program_id" - add_foreign_key "education_cohorts", "education_schools", column: "school_id" - add_foreign_key "education_cohorts", "universities" add_foreign_key "education_diploma_localizations", "education_diplomas", column: "about_id" add_foreign_key "education_diploma_localizations", "languages" add_foreign_key "education_diploma_localizations", "universities" diff --git a/test/controllers/extranet/alumni/academic_years_controller_test.rb b/test/controllers/extranet/alumni/academic_years_controller_test.rb index 6cd2f6a94b..b9201c1284 100644 --- a/test/controllers/extranet/alumni/academic_years_controller_test.rb +++ b/test/controllers/extranet/alumni/academic_years_controller_test.rb @@ -4,12 +4,12 @@ class Extranet::Alumni::AcademicYearsControllerTest < ActionDispatch::Integratio include ExtranetSetup def test_index - get alumni_education_academic_years_path(lang: french) + get alumni_administration_academic_years_path(lang: french) assert_response(:success) end def test_show - get alumni_education_academic_year_path(education_academic_years(:twenty_two), lang: french) + get alumni_administration_academic_year_path(administration_academic_years(:twenty_two), lang: french) assert_response(:success) end end diff --git a/test/controllers/extranet/alumni/cohorts_controller_test.rb b/test/controllers/extranet/alumni/cohorts_controller_test.rb index 010aae9a94..228f0929ab 100644 --- a/test/controllers/extranet/alumni/cohorts_controller_test.rb +++ b/test/controllers/extranet/alumni/cohorts_controller_test.rb @@ -4,12 +4,12 @@ class Extranet::Alumni::CohortsControllerTest < ActionDispatch::IntegrationTest include ExtranetSetup def test_index - get alumni_education_cohorts_path(lang: french) + get alumni_administration_cohorts_path(lang: french) assert_response(:success) end def test_show - get alumni_education_cohort_path(education_cohorts(:default_cohort), lang: french) + get alumni_administration_cohort_path(administration_cohorts(:default_cohort), lang: french) assert_response(:success) end end diff --git a/test/fixtures/education/academic_years.yml b/test/fixtures/administration/academic_years.yml similarity index 100% rename from test/fixtures/education/academic_years.yml rename to test/fixtures/administration/academic_years.yml diff --git a/test/fixtures/education/cohorts.yml b/test/fixtures/administration/cohorts.yml similarity index 100% rename from test/fixtures/education/cohorts.yml rename to test/fixtures/administration/cohorts.yml
<%= Education::AcademicYear.human_attribute_name('year') %><%= Education::Cohort.model_name.human(count: 2) %><%= Administration::AcademicYear.human_attribute_name('year') %><%= Administration::Cohort.model_name.human(count: 2) %> <%= University::Person::Alumnus.model_name.human(count: 2) %>