diff --git a/db/madmp_seeds.rb b/db/madmp_seeds.rb index cb8b352..7ed204e 100644 --- a/db/madmp_seeds.rb +++ b/db/madmp_seeds.rb @@ -1,5 +1,4 @@ #!/usr/bin/env ruby -# encoding: utf-8 # frozen_string_literal: true # warn_indent: true @@ -7,23 +6,18 @@ # with its default values. The data can then be loaded with the rake db:seed # (or created alongside the db with db:setup). -require 'factory_bot' -require 'faker' +require "factory_bot" +require "faker" +require "factory_bot" include FactoryBot::Syntax::Methods -I18n.available_locales = ['en', 'en-GB', 'de', 'fr'] +I18n.available_locales = ["en", "en-GB", "de", "fr"] I18n.locale = LocaleFormatter.new(:en, format: :i18n).to_s # Keep this as :en. Faker doesn't have :en-GB Faker::Config.locale = LocaleFormatter.new(:en, format: :i18n).to_s FastGettext.default_locale = LocaleFormatter.new(:en, format: :fast_gettext).to_s - -require 'factory_bot' -include FactoryBot::Syntax::Methods - - - # Question Formats # ------------------------------------------------------- question_formats = [ @@ -36,226 +30,244 @@ ] question_formats.map{ |qf| create(:question_format, qf) } - - - - # Create our generic organisation, a funder and a University # ------------------------------------------------------- orgs = [ - {name: 'Inist-CNRS', - abbreviation: 'INIST', - org_type: 1, links: {" org":[]}, - language: Language.find_by(abbreviation: 'fr_FR')} + { + name: "Inist-CNRS", + abbreviation: "INIST", + org_type: 1, links: { " org": [] }, + language: Language.find_by(abbreviation: "fr_FR") + } ] -orgs.map{ |o| create(:org, o) } +orgs.map { |o| create(:org, o) } # Create a Super Admin associated with our generic organisation, # an Org Admin for our funder and an Org Admin and User for our University # ------------------------------------------------------- users = [ - {email: "jean-dupont@example.com", + { + email: "jean-dupont@example.com", firstname: "jean", surname: "Dupont", password: "password123", password_confirmation: "password123", - org: Org.find_by(abbreviation: 'INIST'), + org: Org.find_by(abbreviation: "INIST"), language: Language.find_by(abbreviation: FastGettext.locale), accept_terms: true, - confirmed_at: Time.zone.now} + confirmed_at: Time.zone.now + } ] -users.map{ |u| create(:user, u) } - +users.map { |u| create(:user, u) } # Create a default template for the curation centre and one for the example funder # ------------------------------------------------------- templates = [ - {title: "Science Europe modèle structuré", - description:"Modèle basé sur Science Europe, s'appuyant sur les schémas de base" + { + title: "Science Europe modèle structuré", + description: "Modèle basé sur Science Europe, s'appuyant sur les schémas de base", published: true, - org: Org.find_by(abbreviation: 'INIST'), - locale:"fr_FR", + org: Org.find_by(abbreviation: "INIST"), + locale: "fr_FR", is_default: true, version: 0, visibility: Template.visibilities[:organisationally_visible], - links: {"funder":[],"sample_plan":[]}} + links: { "funder": [], "sample_plan": [] } + } ] # Template creation calls defaults handler which sets is_default and # published to false automatically, so update them after creation templates.each { |atts| create(:template, atts) } -#Create 1 phase for "Science Europe modèle structuré" +# Create 1 phase for "Science Europe modèle structuré" phases = [ - - {title: "DMP détaillé", + { + title: "DMP détaillé", number: 1, modifiable: true, - template: Template.find_by(title: "Science Europe modèle structuré")}, + template: Template.find_by(title: "Science Europe modèle structuré") + } ] -phases.map{ |p| create(:phase, p) } +phases.map { |p| create(:phase, p) } - -se_detailed_phase_1 = Phase.find_by(title: "DMP détaillé") +se_detailed_phase = Phase.find_by(title: "DMP détaillé") # Create sections for SE detailed phase # ------------------------------------------------------- sections = [ - # Sections for Modèle structuré Science Europe Phase { title: "Description des données et collecte des données et/ou réutilisation de données existantes", number: 1, modifiable: false, - phase: se_detailed_phase_1 + phase: se_detailed_phase }, { title: "Documentation et métadonnées", number: 2, modifiable: false, - phase: se_detailed_phase_1 + phase: se_detailed_phase }, { title: "Exigences légales et éthiques, code de conduite", number: 3, modifiable: false, - phase: se_detailed_phase_1 + phase: se_detailed_phase }, + { title: "Traitement et analyse des données", number: 4, modifiable: false, - phase: se_detailed_phase_1 + phase: se_detailed_phase }, + { title: "Stockage et sauvegarde des données pendant le processus de recherche", number: 5, modifiable: false, - phase: se_detailed_phase_1 + phase: se_detailed_phase }, - title: "Partage et conservation des données", + { + title: "Partage et conservation des données", number: 6, modifiable: false, - phase: se_detailed_phase_1 + phase: se_detailed_phase }, - title: "Ressources allouées pour la gestion", + { + title: "Ressources allouées pour la gestion", number: 7, modifiable: false, - phase: se_detailed_phase_1 + phase: se_detailed_phase } ] -sections.map{ |s| create(:section, s) } - +sections.map { |s| create(:section, s) } structured = QuestionFormat.find_by(title: "Structured") # Create questions for the section of SE detailed phase # ------------------------------------------------------- questions = [ - - # Questions for "Sections for Modèle structuré Science Europe" Phase, - {text: "Description générale du produit de recherche", + # Questions for "Sections for Modèle structuré Science Europe" Phase, + { + text: "Description générale du produit de recherche", number: 1, section: Section.find_by(title: "Description des données et collecte des données et/ou réutilisation de données existantes"), question_format: structured, - madmp_schema: MadmpSchema.find_by(classname: "research_output_description") + madmp_schema: MadmpSchema.find_by(classname: "research_output_description"), modifiable: false, - themes: [Theme.find_by(title: "Data Description")]}, - - {text: "Est-ce que des données existantes seront réutilisées", + themes: [Theme.find_by(title: "Data Description")] + }, + { + text: "Est-ce que des données existantes seront réutilisées", number: 2, section: Section.find_by(title: "Description des données et collecte des données et/ou réutilisation de données existantes"), question_format: structured, - madmp_schema: MadmpSchema.find_by(classname: "data_reuse") - modifiable: false}, - - {text: "Comment seront produites/collectées les nouvelles données", + madmp_schema: MadmpSchema.find_by(classname: "data_reuse"), + modifiable: false + }, + { + text: "Comment seront produites/collectées les nouvelles données", number: 3, section: Section.find_by(title: "Description des données et collecte des données et/ou réutilisation de données existantes"), question_format: structured, - madmp_schema: MadmpSchema.find_by(classname: "data_collection") + madmp_schema: MadmpSchema.find_by(classname: "data_collection"), modifiable: false, - themes: [Theme.find_by(title: "Data Collection")]}, - - {text: "Comment seront organisées et documentées les données? Quelles seront les méthodes utilisées pour assurer leur qualité scientifique", + themes: [Theme.find_by(title: "Data Collection")] + }, + { + text: "Comment seront organisées et documentées les données? Quelles seront les méthodes utilisées pour assurer leur qualité scientifique", number: 1, section: Section.find_by(title: "Documentation et métadonnées"), question_format: structured, - madmp_schema: MadmpSchema.find_by(classname: "documentation_quality") + madmp_schema: MadmpSchema.find_by(classname: "documentation_quality"), modifiable: false, - themes: [Theme.find_by(title: "Metadata & Documentation")]}, - - {text: "Quelles seront les mesures appliquées pour assurer la protection des données personnelles ?", + themes: [Theme.find_by(title: "Metadata & Documentation")] + }, + { + text: "Quelles seront les mesures appliquées pour assurer la protection des données personnelles ?", number: 1, section: Section.find_by(title: "Exigences légales et éthiques, code de conduite"), question_format: structured, - madmp_schema: MadmpSchema.find_by(classname: "personal_data_issues") + madmp_schema: MadmpSchema.find_by(classname: "personal_data_issues"), modifiable: false, - themes: [Theme.find_by(title: "Ethics & Privacy")]}, - - {text: "Quelles sont les contraintes juridiques (sensibilité des données autres qu'à caractère personnel, confidentialité, ...) à prendre en compte pour le partage et le stockage des données ?", + themes: [Theme.find_by(title: "Ethics & Privacy")] + }, + { + text: "Quelles sont les contraintes juridiques (sensibilité des données autres qu'à caractère personnel, confidentialité, ...) à prendre en compte pour le partage et le stockage des données ?", number: 2, section: Section.find_by(title: "Exigences légales et éthiques, code de conduite"), question_format: structured, - madmp_schema: MadmpSchema.find_by(classname: "legal_issues") + madmp_schema: MadmpSchema.find_by(classname: "legal_issues"), modifiable: false, - themes: [Theme.find_by(title: "Intellectual Property Right")]}, - - {text: "Quels sont les aspects éthiques à prendre en compte lors de la collecte des données ?", + themes: [Theme.find_by(title: "Intellectual Property Right")] + }, + { + text: "Quels sont les aspects éthiques à prendre en compte lors de la collecte des données ?", number: 3, section: Section.find_by(title: "Exigences légales et éthiques, code de conduite"), question_format: structured, - madmp_schema: MadmpSchema.find_by(classname: "ethical_issues") - modifiable: false}, - - {text: "Comment et avec quels moyens seront traitées les données ?", + madmp_schema: MadmpSchema.find_by(classname: "ethical_issues"), + modifiable: false + }, + { + text: "Comment et avec quels moyens seront traitées les données ?", number: 1, section: Section.find_by(title: "Traitement et analyse des données"), question_format: structured, - madmp_schema: MadmpSchema.find_by(classname: "data_processing") - modifiable: false}, - - {text: "Comment les données seront-elles stockées et sauvegardées tout au long du projet ?", + madmp_schema: MadmpSchema.find_by(classname: "data_processing"), + modifiable: false + }, + { + text: "Comment les données seront-elles stockées et sauvegardées tout au long du projet ?", number: 1, section: Section.find_by(title: "Stockage et sauvegarde des données pendant le processus de recherche"), question_format: structured, - madmp_schema: MadmpSchema.find_by(classname: "data_storage") + madmp_schema: MadmpSchema.find_by(classname: "data_storage"), modifiable: false, - themes: [Theme.find_by(title: "Storage & Security")]}, - - {text: "Comment les données seront-elles partagées ?", + themes: [Theme.find_by(title: "Storage & Security")] + }, + { + text: "Comment les données seront-elles partagées ?", number: 1, section: Section.find_by(title: "Partage et conservation des données"), question_format: structured, - madmp_schema: MadmpSchema.find_by(classname: "data_sharing") + madmp_schema: MadmpSchema.find_by(classname: "data_sharing"), modifiable: false, - themes: [Theme.find_by(title: "Data Sharing"), Theme.find_by(title: "Data Repository") ]}, - - {text: "Comment les données seront-elles conservées à long terme ?", + themes: [Theme.find_by(title: "Data Sharing"), Theme.find_by(title: "Data Repository") ] + }, + { + text: "Comment les données seront-elles conservées à long terme ?", number: 2, section: Section.find_by(title: "Partage et conservation des données"), question_format: structured, - madmp_schema: MadmpSchema.find_by(classname: "data_preservation") - modifiable: false}, - - {text: "Décrire la répartition des rôles et reponsabilités parmi les contributeurs ainsi que les côuts induits pour la gestion des données ?", + madmp_schema: MadmpSchema.find_by(classname: "data_preservation"), + modifiable: false + }, + { + text: "Décrire la répartition des rôles et reponsabilités parmi les contributeurs ainsi que les côuts induits pour la gestion des données ?", number: 1, section: Section.find_by(title: "Ressources allouées pour la gestion"), question_format: structured, - madmp_schema: MadmpSchema.find_by(classname: "budget") - modifiable: false} + madmp_schema: MadmpSchema.find_by(classname: "budget"), + modifiable: false + } ] -questions.map{ |q| create(:question, q) } +questions.map { |q| create(:question, q) } # Create suggested answers for a few questions # ------------------------------------------------------- annotations = [ - {text: "Les données seront partagées dans un entrepôt ouvert tel que Zenodo s'il n'existe pas d'entrepôt thématique adéquat.", - type: Annotation.types[:example_answer], - org: Org.find_by(abbreviation: 'INIST'), - question: Question.find_by(text: "Comment les données seront-elles partagées ?")}, - {text: "Aucunes données existantes (au sein du laboratoire ou accessibles via) ne peuvent être réutilisées dans cette étude. ", - type: Annotation.types[:example_answer], - org: Org.find_by(abbreviation: 'INIST'), - question: Question.find_by(text: "Est-ce que des données existantes seront réutilisées")} + { + text: "Les données seront partagées dans un entrepôt ouvert tel que Zenodo s'il n'existe pas d'entrepôt thématique adéquat.", + type: Annotation.types[:example_answer], + org: Org.find_by(abbreviation: "INIST"), + question: Question.find_by(text: "Comment les données seront-elles partagées ?") + }, + { + text: "Aucunes données existantes (au sein du laboratoire ou accessibles via) ne peuvent être réutilisées dans cette étude. ", + type: Annotation.types[:example_answer], + org: Org.find_by(abbreviation: "INIST"), + question: Question.find_by(text: "Est-ce que des données existantes seront réutilisées") + } ] -annotations.map{ |s| Annotation.create!(s) if Annotation.find_by(text: s[:text]).nil? } - +annotations.map { |s| Annotation.create!(s) if Annotation.find_by(text: s[:text]).nil? }