dog_biscuits 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.circleci/config.yml +115 -0
- data/.codeclimate.yml +52 -0
- data/.gitignore +24 -0
- data/.rspec +3 -0
- data/.rubocop.yml +45 -0
- data/.rubocop_todo.yml +92 -0
- data/.travis.yml +18 -0
- data/CODE_OF_CONDUCT.md +36 -0
- data/CONTRIBUTING.md +161 -0
- data/Gemfile +40 -0
- data/LICENSE +14 -0
- data/README.md +98 -0
- data/Rakefile +35 -0
- data/SUPPORT.md +5 -0
- data/bin/console +15 -0
- data/bin/setup +7 -0
- data/dog_biscuits.gemspec +38 -0
- data/lib/dog_biscuits.rb +352 -0
- data/lib/dog_biscuits/actors/apply_authorities.rb +32 -0
- data/lib/dog_biscuits/actors/singular_attributes.rb +17 -0
- data/lib/dog_biscuits/blacklight/commands.rb +118 -0
- data/lib/dog_biscuits/configuration.rb +506 -0
- data/lib/dog_biscuits/importers/authority.rb +65 -0
- data/lib/dog_biscuits/indexers/collection_indexer.rb +10 -0
- data/lib/dog_biscuits/indexers/concerns/indexes_common.rb +58 -0
- data/lib/dog_biscuits/indexers/conference_item_indexer.rb +17 -0
- data/lib/dog_biscuits/indexers/dataset_indexer.rb +25 -0
- data/lib/dog_biscuits/indexers/digital_archival_object_indexer.rb +19 -0
- data/lib/dog_biscuits/indexers/exam_paper_indexer.rb +10 -0
- data/lib/dog_biscuits/indexers/journal_article_indexer.rb +15 -0
- data/lib/dog_biscuits/indexers/package_indexer.rb +19 -0
- data/lib/dog_biscuits/indexers/published_work_indexer.rb +16 -0
- data/lib/dog_biscuits/indexers/thesis_indexer.rb +16 -0
- data/lib/dog_biscuits/models/authorities/agent.rb +78 -0
- data/lib/dog_biscuits/models/authorities/agents/group.rb +59 -0
- data/lib/dog_biscuits/models/authorities/agents/historic_person.rb +55 -0
- data/lib/dog_biscuits/models/authorities/agents/organisation.rb +56 -0
- data/lib/dog_biscuits/models/authorities/agents/person.rb +75 -0
- data/lib/dog_biscuits/models/authorities/concept.rb +91 -0
- data/lib/dog_biscuits/models/authorities/concept_scheme.rb +65 -0
- data/lib/dog_biscuits/models/authorities/event.rb +74 -0
- data/lib/dog_biscuits/models/authorities/place.rb +86 -0
- data/lib/dog_biscuits/models/authorities/project.rb +60 -0
- data/lib/dog_biscuits/models/authority.rb +42 -0
- data/lib/dog_biscuits/models/collections/collection.rb +32 -0
- data/lib/dog_biscuits/models/concerns/behaviours/pure_specific_behaviour.rb +17 -0
- data/lib/dog_biscuits/models/concerns/behaviours/validate_concept_related.rb +12 -0
- data/lib/dog_biscuits/models/concerns/behaviours/validate_concept_scheme.rb +16 -0
- data/lib/dog_biscuits/models/concerns/behaviours/validate_label.rb +12 -0
- data/lib/dog_biscuits/models/concerns/behaviours/validate_place.rb +12 -0
- data/lib/dog_biscuits/models/concerns/behaviours/work_behaviour.rb +21 -0
- data/lib/dog_biscuits/models/concerns/extended_solr_document.rb +147 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/archivematica/archivematica.rb +73 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/archives_hub/access_provided_by.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/archives_hub/country_code.rb +15 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/archives_hub/hub_dates.rb +17 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/archives_hub/maintenance_agency_code.rb +15 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/bibframe/awarding_institution.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/bibframe/edition.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/bibframe/identified_by.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/bibframe/part.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/bibframe/part_of.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/bibframe/series.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/bibframe/subtitle.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/bibo/presented_at.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/bibo/publication_status.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/datacite/resource_type_general.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/abstract.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/access_rights.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/bibliographic_citation.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/contributor.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/creator.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/date.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/date_accepted.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/date_available.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/date_copyrighted.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/date_created.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/date_issued.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/description.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/extent.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/format.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/identifier.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/language.rb +17 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/publisher.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/resource_type.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/rights.rb +17 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/rights_holder.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/simple_versions.rb +18 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/source.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/subject.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dwc/event_date.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/edm/edm_rights.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/fabio/date_collected.rb +15 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/foaf/based_near.rb +12 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/foaf/foaf_name.rb +16 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/frapo/output_of.rb +18 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/geo/geo.rb +27 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/geonames/country_code.rb +15 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/geonames/place_properties.rb +66 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/lc_identifiers/doi.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/lc_identifiers/isbn.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/lc_identifiers/official_url.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/lc_identifiers/orcid.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/local/for_indexing.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/local/former_identifier.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/local/generic_authority_terms.rb +22 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/local/generic_qualifier.rb +16 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/local/last_access.rb +15 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/local/main_file.rb +24 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/local/module_code.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/local/number_of_downloads.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/local/packaged_by.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/local/readme_file.rb +26 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/local/requestor_email.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/mads/related_authority.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/marc_relators/advisor.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/marc_relators/editor.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/marc_relators/funder.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/marc_relators/place_of_publication.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/mods/date_valid.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/owl/owl_same_as.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/premis/has_restriction.rb +15 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/property_sets/person_properties.rb +92 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/pure/managing_organisation.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/pure/pure.rb +28 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/rdf/rdf_type.rb +12 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/rdf/rdfs_label.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/rdf/related_url.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/schema/alternate_name.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/schema/content_version.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/schema/date_published.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/schema/date_updated.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/schema/department.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/schema/end_date.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/schema/issue_number.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/schema/keyword.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/schema/location.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/schema/pagination.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/schema/start_date.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/schema/volume_number.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/skos/skos_labels.rb +18 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/skos/skos_note.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/skos/skos_related.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/uketd/date_of_award.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/uketd/qualification.rb +17 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/ulcc/date_submitted.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/ulcc/official_url.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/ulcc/refereed.rb +13 -0
- data/lib/dog_biscuits/models/concerns/model_property_sets/common/common_labels.rb +9 -0
- data/lib/dog_biscuits/models/concerns/model_property_sets/common/common_metadata.rb +64 -0
- data/lib/dog_biscuits/models/concerns/model_property_sets/common/common_rights.rb +10 -0
- data/lib/dog_biscuits/models/concerns/model_property_sets/conference_item_metadata.rb +24 -0
- data/lib/dog_biscuits/models/concerns/model_property_sets/dataset_metadata.rb +36 -0
- data/lib/dog_biscuits/models/concerns/model_property_sets/digital_archival_object_metadata.rb +13 -0
- data/lib/dog_biscuits/models/concerns/model_property_sets/exam_paper_metadata.rb +14 -0
- data/lib/dog_biscuits/models/concerns/model_property_sets/journal_article_metadata.rb +24 -0
- data/lib/dog_biscuits/models/concerns/model_property_sets/package_metadata.rb +13 -0
- data/lib/dog_biscuits/models/concerns/model_property_sets/published_work_metadata.rb +26 -0
- data/lib/dog_biscuits/models/concerns/model_property_sets/thesis_metadata.rb +17 -0
- data/lib/dog_biscuits/models/filesets/file_set.rb +30 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/canvas.rb +15 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/contained_file.rb +13 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_date_certainty.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_editorial_note.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_entry.rb +19 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_entry_date.rb +10 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_entry_type.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_is_referenced_by.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_language.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_marginalium.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_note.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_person_as_written.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_person_descriptor.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_person_descriptor_as_written.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_person_note.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_person_related_person.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_person_related_place.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_person_role.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_place_as_written.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_place_note.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_place_role.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_place_type.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_related_agent.rb +20 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_related_place.rb +13 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_section_type.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_single_date.rb +10 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_subject.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/entry.rb +59 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/entry/entry_date.rb +17 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/entry/related_agent.rb +62 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/entry/related_place.rb +28 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/entry/single_date.rb +19 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/folio.rb +42 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/image.rb +25 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/manifest.rb +15 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/register.rb +21 -0
- data/lib/dog_biscuits/models/work.rb +37 -0
- data/lib/dog_biscuits/models/works/conference_item.rb +37 -0
- data/lib/dog_biscuits/models/works/dataset.rb +42 -0
- data/lib/dog_biscuits/models/works/digital_archival_object.rb +28 -0
- data/lib/dog_biscuits/models/works/exam_paper.rb +33 -0
- data/lib/dog_biscuits/models/works/journal_article.rb +37 -0
- data/lib/dog_biscuits/models/works/package.rb +47 -0
- data/lib/dog_biscuits/models/works/published_work.rb +38 -0
- data/lib/dog_biscuits/models/works/thesis.rb +34 -0
- data/lib/dog_biscuits/property_mappings/property_mappings.rb +585 -0
- data/lib/dog_biscuits/railtie.rb +13 -0
- data/lib/dog_biscuits/services/table_based_authority_extended.rb +10 -0
- data/lib/dog_biscuits/services/terms.rb +57 -0
- data/lib/dog_biscuits/services/terms_service.rb +162 -0
- data/lib/dog_biscuits/solr/index_types.rb +33 -0
- data/lib/dog_biscuits/validators/concept_related_validator.rb +13 -0
- data/lib/dog_biscuits/validators/concept_scheme_member_validator.rb +10 -0
- data/lib/dog_biscuits/validators/label_validator.rb +55 -0
- data/lib/dog_biscuits/validators/place_validator.rb +10 -0
- data/lib/dog_biscuits/version.rb +5 -0
- data/lib/dog_biscuits/vocab/borthwick_registers.rb +321 -0
- data/lib/dog_biscuits/vocab/generic.rb +204 -0
- data/lib/dog_biscuits/vocab/oais_archivematica.rb +116 -0
- data/lib/dog_biscuits/vocab/pure_terms.rb +65 -0
- data/lib/dog_biscuits/vocab/uketd.rb +45 -0
- data/lib/dog_biscuits/vocab/ulcc_terms.rb +55 -0
- data/lib/generators/dog_biscuits/USAGE +50 -0
- data/lib/generators/dog_biscuits/authority_generator.rb +55 -0
- data/lib/generators/dog_biscuits/catalog_generator.rb +18 -0
- data/lib/generators/dog_biscuits/dates_generator.rb +98 -0
- data/lib/generators/dog_biscuits/generate_all_generator.rb +29 -0
- data/lib/generators/dog_biscuits/imagify_generator.rb +67 -0
- data/lib/generators/dog_biscuits/install_generator.rb +82 -0
- data/lib/generators/dog_biscuits/locales_generator.rb +20 -0
- data/lib/generators/dog_biscuits/schema_org_generator.rb +20 -0
- data/lib/generators/dog_biscuits/templates/_date_template.html.erb +7 -0
- data/lib/generators/dog_biscuits/templates/app/controllers/catalog_controller.rb +133 -0
- data/lib/generators/dog_biscuits/templates/app/helpers/dog_biscuits_helper.rb +43 -0
- data/lib/generators/dog_biscuits/templates/app/renderers/package_ids_renderer.rb +13 -0
- data/lib/generators/dog_biscuits/templates/app/renderers/packaged_by_ids_renderer.rb +11 -0
- data/lib/generators/dog_biscuits/templates/app/renderers/publication_status_renderer.rb +16 -0
- data/lib/generators/dog_biscuits/templates/app/services/concerns/file_authority_concern.rb +14 -0
- data/lib/generators/dog_biscuits/templates/app/services/concerns/local_authority_concern.rb +18 -0
- data/lib/generators/dog_biscuits/templates/app/services/local_form_metadata_service.rb +15 -0
- data/lib/generators/dog_biscuits/templates/app/views/hyrax/base/_form_metadata.html.erb +23 -0
- data/lib/generators/dog_biscuits/templates/app/views/records/edit_fields/_abstract.html.erb +5 -0
- data/lib/generators/dog_biscuits/templates/app/views/records/edit_fields/_default.html.erb +6 -0
- data/lib/generators/dog_biscuits/templates/app/views/records/edit_fields/_funder.html.erb +8 -0
- data/lib/generators/dog_biscuits/templates/app/views/records/edit_fields/_note.html.erb +5 -0
- data/lib/generators/dog_biscuits/templates/app/views/records/edit_fields/_part_of.html.erb +17 -0
- data/lib/generators/dog_biscuits/templates/app/views/records/edit_fields/_publication_status.html.erb +6 -0
- data/lib/generators/dog_biscuits/templates/app/views/records/edit_fields/_refereed.html.erb +5 -0
- data/lib/generators/dog_biscuits/templates/app/views/records/edit_fields/_resource_type_general.html.erb +2 -0
- data/lib/generators/dog_biscuits/templates/authority_service.rb.erb +25 -0
- data/lib/generators/dog_biscuits/templates/config/authorities/content_versions.yml +25 -0
- data/lib/generators/dog_biscuits/templates/config/authorities/publication_statuses.yml +19 -0
- data/lib/generators/dog_biscuits/templates/config/authorities/qualification_levels.yml +13 -0
- data/lib/generators/dog_biscuits/templates/config/authorities/qualification_names.yml +31 -0
- data/lib/generators/dog_biscuits/templates/config/authorities/resource_type_generals.yml +47 -0
- data/lib/generators/dog_biscuits/templates/config/dog_biscuits.yml +3 -0
- data/lib/generators/dog_biscuits/templates/config/initializers/catalog_search_builder_overrides.rb +18 -0
- data/lib/generators/dog_biscuits/templates/config/initializers/dog_biscuits.rb +144 -0
- data/lib/generators/dog_biscuits/templates/dog_biscuits.en.yml.erb +11 -0
- data/lib/generators/dog_biscuits/templates/schema_org.yml.erb +4 -0
- data/lib/generators/dog_biscuits/work/USAGE +35 -0
- data/lib/generators/dog_biscuits/work/templates/README +31 -0
- data/lib/generators/dog_biscuits/work/templates/_attribute_rows.html.erb +22 -0
- data/lib/generators/dog_biscuits/work/templates/actor.rb.erb +25 -0
- data/lib/generators/dog_biscuits/work/templates/form.rb.erb +18 -0
- data/lib/generators/dog_biscuits/work/templates/indexer.rb.erb +23 -0
- data/lib/generators/dog_biscuits/work/templates/model.rb.erb +16 -0
- data/lib/generators/dog_biscuits/work/templates/presenter.rb.erb +20 -0
- data/lib/generators/dog_biscuits/work/work_generator.rb +102 -0
- data/lib/tasks/authorities.rake +22 -0
- metadata +476 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module DogBiscuits
|
|
4
|
+
module Actors
|
|
5
|
+
module ApplyAuthorities
|
|
6
|
+
private
|
|
7
|
+
|
|
8
|
+
# Add new terms to table-based authorities
|
|
9
|
+
#
|
|
10
|
+
# @param env [Hyrax::Actors::Environment] the env
|
|
11
|
+
def apply_authorities(env)
|
|
12
|
+
DogBiscuits.config.authorities_add_new.each do |authority_name|
|
|
13
|
+
term = authority_name.to_s.singularize.to_sym
|
|
14
|
+
next unless env.attributes.key? term
|
|
15
|
+
env.attributes[term].each do |attr|
|
|
16
|
+
add_new(authority_name.to_s, attr)
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# Add new term to the authority; it will be rejected if already present
|
|
22
|
+
#
|
|
23
|
+
# @param auth [String] the authority to add to
|
|
24
|
+
# @param label [String] the label to add
|
|
25
|
+
def add_new(authority_name, label)
|
|
26
|
+
DogBiscuits::Importers::Authority.new(authority_name).create_record(label) if Qa::Authorities::Local.subauthority_for(authority_name).search(label).empty?
|
|
27
|
+
rescue Qa::InvalidSubAuthority
|
|
28
|
+
Rails.logger.error("Invalid sub-authority: #{auth}")
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module DogBiscuits
|
|
4
|
+
module Actors
|
|
5
|
+
module SingularAttributes
|
|
6
|
+
# Override the BaseActor #clean_attributes method to apply this to all configured singular properties
|
|
7
|
+
# Cast any singular values from the form to multiple values for persistence
|
|
8
|
+
def clean_attributes(attributes)
|
|
9
|
+
DogBiscuits.config.singular_properties.each do |prop|
|
|
10
|
+
next if attributes[prop].blank?
|
|
11
|
+
attributes[prop] = Array.wrap(attributes[prop]) if attributes.key? prop
|
|
12
|
+
end
|
|
13
|
+
super
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
# From JiscRDSS/rdss-samvera
|
|
3
|
+
# https://github.com/JiscRDSS/rdss-samvera/blob/master/willow/app/controllers/concerns/blacklight/commands.rb
|
|
4
|
+
# Copyright Jisc
|
|
5
|
+
module DogBiscuits
|
|
6
|
+
module Blacklight
|
|
7
|
+
module Commands
|
|
8
|
+
extend ActiveSupport::Concern
|
|
9
|
+
|
|
10
|
+
include DogBiscuits::Solr::IndexTypes
|
|
11
|
+
|
|
12
|
+
class_methods do
|
|
13
|
+
private
|
|
14
|
+
|
|
15
|
+
def decode_name_and_options(name, options = {})
|
|
16
|
+
actual_name = name.keys.first
|
|
17
|
+
values = name.values.first
|
|
18
|
+
labelled_name = values[:name] || actual_name
|
|
19
|
+
index_type = values[:as] || :stored_searchable
|
|
20
|
+
solr_options = values[:type] && [{ type: values[:type] }] || nil
|
|
21
|
+
options.merge!(values[:options] || {})
|
|
22
|
+
[actual_name, labelled_name, index_type, solr_options, options]
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def default_label(name)
|
|
26
|
+
I18n.t('dog_biscuits.labels.' + name.to_s)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def default_label_options(name)
|
|
30
|
+
{ label: default_label(name) }
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def default_index_options(name, index_type = :facetable)
|
|
34
|
+
{ itemprop: name, link_to_search: send("#{index_type}_name", name) }
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def index_options(name, mapping)
|
|
38
|
+
return {} unless mapping
|
|
39
|
+
opts = {}
|
|
40
|
+
mapping[:index]&.each do |opt|
|
|
41
|
+
opts[opt.keys.first] = index_option_value(name, opt.keys.first, opt[opt.keys.first])
|
|
42
|
+
end
|
|
43
|
+
opts[:itemprop] = mapping[:schema_org][:property] if mapping[:schema_org]
|
|
44
|
+
opts[:helper_method] = mapping[:helper_method] if mapping[:helper_method]
|
|
45
|
+
{ options: opts }
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def index_option_value(name, key, value)
|
|
49
|
+
if key == :link_to_search && value == true
|
|
50
|
+
index_type = :facetable
|
|
51
|
+
send("#{index_type}_name", name)
|
|
52
|
+
else
|
|
53
|
+
value
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def send_to_configuration(config, name, config_type, default_index_type, options = {})
|
|
58
|
+
name, label_name, index_type, solr_options, options = if name.is_a?(Hash)
|
|
59
|
+
decode_name_and_options(name, options)
|
|
60
|
+
else
|
|
61
|
+
[name, name, default_index_type, nil, options]
|
|
62
|
+
end
|
|
63
|
+
begin
|
|
64
|
+
config.send("add_#{config_type}", send("#{index_type}_name", name, *solr_options), default_label_options(label_name).merge(options))
|
|
65
|
+
rescue ArgumentError
|
|
66
|
+
Rails.logger("solr_options are: #{solr_options.inspect}")
|
|
67
|
+
raise
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def add_labelled_facet_field(config, name, options)
|
|
72
|
+
send_to_configuration(config, name, :facet_field, :facetable, options)
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def add_labelled_index_field(config, name, options = {})
|
|
76
|
+
send_to_configuration(config, name, :index_field, :stored_searchable, options)
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def add_labelled_show_field(config, name, options = {})
|
|
80
|
+
send_to_configuration(config, name, :show_field, :stored_searchable, options)
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def add_solr_search_field(config, name, options = {})
|
|
84
|
+
name, label_name, index_type, solr_options, _options = if name.is_a?(Hash)
|
|
85
|
+
decode_name_and_options(name, options)
|
|
86
|
+
else
|
|
87
|
+
[name, name, :stored_searchable, options]
|
|
88
|
+
end
|
|
89
|
+
local_params_solr_name = send("#{index_type}_name", name, *solr_options)
|
|
90
|
+
config.add_search_field(name.to_s) do |field|
|
|
91
|
+
field.label = default_label(label_name)
|
|
92
|
+
field.solr_local_parameters = { qf: local_params_solr_name, pf: local_params_solr_name }
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
def add_facet_field(config, names, options = { limit: 5 })
|
|
97
|
+
names.each { |name| add_labelled_facet_field(config, name, options) }
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def add_index_field(config, names)
|
|
101
|
+
names.each { |name| add_labelled_index_field(config, name) }
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
def add_show_field(config, names)
|
|
105
|
+
names.each { |name| add_labelled_show_field(config, name) }
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
def add_search_field(config, names)
|
|
109
|
+
names.each { |name| add_solr_search_field(config, name) }
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
def to_searchable_names_field_list(names)
|
|
113
|
+
names.map { |name| stored_searchable_name(name) }.join(' ')
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
end
|
|
@@ -0,0 +1,506 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# rubocop:disable Metrics/MethodLength
|
|
4
|
+
# rubocop:disable Metrics/ClassLength
|
|
5
|
+
|
|
6
|
+
module DogBiscuits
|
|
7
|
+
class Configuration
|
|
8
|
+
include PropertyMappings
|
|
9
|
+
|
|
10
|
+
# All available properties
|
|
11
|
+
def all_properties
|
|
12
|
+
props = selected_models.map { |m| send("#{m.underscore}_properties") }.flatten
|
|
13
|
+
props.concat(facet_properties)
|
|
14
|
+
props.concat(index_properties)
|
|
15
|
+
props << :date_range if date_range == true
|
|
16
|
+
props.sort.uniq!
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# All available models
|
|
20
|
+
def available_models
|
|
21
|
+
['ConferenceItem', 'Dataset', 'DigitalArchivalObject', 'ExamPaper', 'JournalArticle', 'Package', 'PublishedWork', 'Thesis'].freeze
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# Models used in the app (used by the generate_all generator)
|
|
25
|
+
attr_writer :selected_models
|
|
26
|
+
def selected_models
|
|
27
|
+
@selected_models ||= available_models
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
attr_writer :date_picker
|
|
31
|
+
def date_picker
|
|
32
|
+
@date_picker ||= false
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
attr_writer :date_picker_dates
|
|
36
|
+
def date_picker_dates
|
|
37
|
+
@date_picker_dates ||= date_properties
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
attr_writer :date_range
|
|
41
|
+
def date_range
|
|
42
|
+
@date_range ||= false
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# Default required properties.
|
|
46
|
+
def required_properties
|
|
47
|
+
%i[title creator keyword rights_statement].freeze
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# Basic Metadata properties from Hyrax
|
|
51
|
+
# Omitting bibliographic_citation
|
|
52
|
+
def base_properties
|
|
53
|
+
%i[title
|
|
54
|
+
creator
|
|
55
|
+
contributor
|
|
56
|
+
description
|
|
57
|
+
keyword
|
|
58
|
+
license
|
|
59
|
+
rights_statement
|
|
60
|
+
publisher
|
|
61
|
+
date_created
|
|
62
|
+
subject
|
|
63
|
+
language
|
|
64
|
+
identifier
|
|
65
|
+
based_near
|
|
66
|
+
related_url
|
|
67
|
+
resource_type
|
|
68
|
+
source].freeze
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
# Common properties from DogBiscuits atop those in BasicMetadata
|
|
72
|
+
# Also include resource_type which is part of BasicMetadata but not part of the Hyrax WorkForm
|
|
73
|
+
# Omitting date as this is used for faceting only
|
|
74
|
+
def common_properties
|
|
75
|
+
%i[department doi former_identifier note output_of lat long alt location managing_organisation funder].freeze
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
# Add values that aren't found in the following table-based authorities to be added on save.
|
|
79
|
+
# This only works in cases where the name of the authority is a pluralized form of
|
|
80
|
+
# the name of the property which uses it, eg. subjects/subject and languages/language
|
|
81
|
+
attr_writer :authorities_add_new
|
|
82
|
+
def authorities_add_new
|
|
83
|
+
@authorities_add_new ||= []
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
# All solr fields that will be treated as facets by the blacklight application
|
|
87
|
+
# The ordering of the field names is the order of the display
|
|
88
|
+
# The properties must have been indexed as facetable
|
|
89
|
+
# The existing fields will be replaced:
|
|
90
|
+
# resource_type, creator, tag, subject, language, based_near_label, publisher, file_format
|
|
91
|
+
attr_writer :facet_properties
|
|
92
|
+
def facet_properties
|
|
93
|
+
@facet_properties ||= %i[
|
|
94
|
+
human_readable_type
|
|
95
|
+
resource_type
|
|
96
|
+
creator
|
|
97
|
+
contributor_combined
|
|
98
|
+
contributor_type
|
|
99
|
+
publisher
|
|
100
|
+
department
|
|
101
|
+
funder
|
|
102
|
+
date
|
|
103
|
+
keyword
|
|
104
|
+
subject
|
|
105
|
+
language
|
|
106
|
+
based_near_label
|
|
107
|
+
part_of
|
|
108
|
+
qualification_level
|
|
109
|
+
qualification_name
|
|
110
|
+
refereed
|
|
111
|
+
publication_status
|
|
112
|
+
content_version
|
|
113
|
+
packaged_by_titles
|
|
114
|
+
]
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
# Fields that are not included in the form or show,
|
|
118
|
+
# eg. those that are generated by the solr indexer for facets only
|
|
119
|
+
# these are already included in facet_properties
|
|
120
|
+
attr_writer :facet_only_properties
|
|
121
|
+
def facet_only_properties
|
|
122
|
+
@facet_only_properties ||= %i[
|
|
123
|
+
contributor_combined
|
|
124
|
+
contributor_type
|
|
125
|
+
date
|
|
126
|
+
human_readable_type
|
|
127
|
+
packaged_by_titles
|
|
128
|
+
]
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
# *All* solr fields to be displayed in the index (search results) view
|
|
132
|
+
# The ordering of the field names is the order of the display
|
|
133
|
+
# The existing fields will be replaced so must be included here:
|
|
134
|
+
# title, description, tag, subject, creator, contributor, publisher, based_near_label, language,
|
|
135
|
+
# date_uploaded, date_modified, date_created, rights, resource_type, format, identifier, extent
|
|
136
|
+
# embargo_release_date, lease_expiration_date
|
|
137
|
+
attr_writer :index_properties
|
|
138
|
+
def index_properties
|
|
139
|
+
@index_properties ||= %i[
|
|
140
|
+
title
|
|
141
|
+
creator
|
|
142
|
+
publisher
|
|
143
|
+
contributor_combined
|
|
144
|
+
date
|
|
145
|
+
keyword
|
|
146
|
+
subject
|
|
147
|
+
resource_type
|
|
148
|
+
rights_statement
|
|
149
|
+
license
|
|
150
|
+
language
|
|
151
|
+
depositor
|
|
152
|
+
proxy_depositor
|
|
153
|
+
embargo_release_date
|
|
154
|
+
lease_expiration_date
|
|
155
|
+
]
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
attr_writer :exclude_from_search_properties
|
|
159
|
+
def exclude_from_search_properties
|
|
160
|
+
@exclude_from_search_properties ||= %i[
|
|
161
|
+
last_access
|
|
162
|
+
number_of_downloads
|
|
163
|
+
aip_current_path
|
|
164
|
+
dip_current_path
|
|
165
|
+
aip_current_location
|
|
166
|
+
dip_current_location
|
|
167
|
+
aip_resource_uri
|
|
168
|
+
dip_resource_uri
|
|
169
|
+
packaged_by_ids
|
|
170
|
+
]
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
# Render these properties as singular in the form
|
|
174
|
+
attr_writer :singular_properties
|
|
175
|
+
def singular_properties
|
|
176
|
+
@singular_properties ||= %i[
|
|
177
|
+
date_accepted
|
|
178
|
+
date_available
|
|
179
|
+
date_created
|
|
180
|
+
date_collected
|
|
181
|
+
date_copyrighted
|
|
182
|
+
date_issued
|
|
183
|
+
date_published
|
|
184
|
+
date_submitted
|
|
185
|
+
date_updated
|
|
186
|
+
date_valid
|
|
187
|
+
end_date
|
|
188
|
+
event_date
|
|
189
|
+
issue_number
|
|
190
|
+
pagination
|
|
191
|
+
publication_status
|
|
192
|
+
refereed
|
|
193
|
+
start_date
|
|
194
|
+
volume_number
|
|
195
|
+
aip_uuid
|
|
196
|
+
transfer_uuid
|
|
197
|
+
sip_uuid
|
|
198
|
+
dip_uuid
|
|
199
|
+
aip_status
|
|
200
|
+
dip_status
|
|
201
|
+
aip_size
|
|
202
|
+
dip_size
|
|
203
|
+
aip_current_path
|
|
204
|
+
dip_current_path
|
|
205
|
+
aip_current_location
|
|
206
|
+
dip_current_location
|
|
207
|
+
aip_resource_uri
|
|
208
|
+
dip_resource_uri
|
|
209
|
+
origin_pipeline
|
|
210
|
+
last_access
|
|
211
|
+
number_of_downloads
|
|
212
|
+
]
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
# All of these are date properties
|
|
216
|
+
# These will be indexed into the date_picker if present
|
|
217
|
+
attr_writer :date_properties
|
|
218
|
+
def date_properties
|
|
219
|
+
@date_properties ||= %i[
|
|
220
|
+
date_accepted
|
|
221
|
+
date_available
|
|
222
|
+
date_collected
|
|
223
|
+
date_copyrighted
|
|
224
|
+
date_created
|
|
225
|
+
date_issued
|
|
226
|
+
date_published
|
|
227
|
+
date_submitted
|
|
228
|
+
date_updated
|
|
229
|
+
date_valid
|
|
230
|
+
date_of_award
|
|
231
|
+
end_date
|
|
232
|
+
event_date
|
|
233
|
+
start_date
|
|
234
|
+
]
|
|
235
|
+
end
|
|
236
|
+
|
|
237
|
+
# Enable restricted properties in the form.
|
|
238
|
+
# If set to false, no restrictions will be applied
|
|
239
|
+
# Default is false
|
|
240
|
+
attr_writer :restricted_properties_enabled
|
|
241
|
+
def restricted_properties_enabled
|
|
242
|
+
@restricted_properties_enabled ||= false
|
|
243
|
+
end
|
|
244
|
+
|
|
245
|
+
# Restrict the following properties in the form to the role specified in
|
|
246
|
+
# restricted_role
|
|
247
|
+
# Restrictions apply to 'below the fold' properties only, they are not
|
|
248
|
+
# applied to required properties
|
|
249
|
+
# Restrictions apply in the form only, properties are still visible in the
|
|
250
|
+
# show page
|
|
251
|
+
# Default is none
|
|
252
|
+
attr_writer :restricted_properties
|
|
253
|
+
def restricted_properties
|
|
254
|
+
@restricted_properties ||= %i[last_access number_of_downloads]
|
|
255
|
+
end
|
|
256
|
+
|
|
257
|
+
# Role to use when restricting properties
|
|
258
|
+
# Default is :admin
|
|
259
|
+
attr_writer :restricted_role
|
|
260
|
+
def restricted_role
|
|
261
|
+
@restricted_role ||= :admin
|
|
262
|
+
end
|
|
263
|
+
|
|
264
|
+
# ConferenceItem
|
|
265
|
+
|
|
266
|
+
# Properties in order:
|
|
267
|
+
# basic metadata (as per Hyrax),
|
|
268
|
+
# this model (alphebetized),
|
|
269
|
+
# remaining common properties and resource_type (alphebeized)
|
|
270
|
+
attr_writer :conference_item_properties
|
|
271
|
+
|
|
272
|
+
def conference_item_properties
|
|
273
|
+
properties = %i[abstract
|
|
274
|
+
date_published
|
|
275
|
+
date_available
|
|
276
|
+
date_accepted
|
|
277
|
+
date_submitted
|
|
278
|
+
editor
|
|
279
|
+
event_date
|
|
280
|
+
isbn
|
|
281
|
+
official_url
|
|
282
|
+
pagination
|
|
283
|
+
place_of_publication
|
|
284
|
+
publication_status
|
|
285
|
+
presented_at
|
|
286
|
+
part_of
|
|
287
|
+
refereed]
|
|
288
|
+
properties = base_properties + properties + common_properties
|
|
289
|
+
properties.sort!
|
|
290
|
+
@conference_item_properties ||= properties
|
|
291
|
+
end
|
|
292
|
+
|
|
293
|
+
attr_writer :conference_item_properties_required
|
|
294
|
+
|
|
295
|
+
def conference_item_properties_required
|
|
296
|
+
@conference_item_properties_required ||= required_properties
|
|
297
|
+
end
|
|
298
|
+
|
|
299
|
+
# DigitalArchivalObject
|
|
300
|
+
|
|
301
|
+
attr_writer :digital_archival_object_properties
|
|
302
|
+
|
|
303
|
+
def digital_archival_object_properties
|
|
304
|
+
properties = %i[access_provided_by
|
|
305
|
+
extent
|
|
306
|
+
part_of
|
|
307
|
+
lat
|
|
308
|
+
long
|
|
309
|
+
alt
|
|
310
|
+
packaged_by_ids]
|
|
311
|
+
properties = base_properties + properties + common_properties
|
|
312
|
+
properties.sort!
|
|
313
|
+
@digital_archival_object_properties ||= properties
|
|
314
|
+
end
|
|
315
|
+
|
|
316
|
+
attr_writer :digital_archival_object_properties_required
|
|
317
|
+
|
|
318
|
+
def digital_archival_object_properties_required
|
|
319
|
+
@digital_archival_object_properties_required ||= required_properties
|
|
320
|
+
end
|
|
321
|
+
|
|
322
|
+
# PublishedWork
|
|
323
|
+
|
|
324
|
+
attr_writer :published_work_properties
|
|
325
|
+
def published_work_properties
|
|
326
|
+
properties = %i[abstract
|
|
327
|
+
date_published
|
|
328
|
+
date_available
|
|
329
|
+
date_accepted
|
|
330
|
+
date_submitted
|
|
331
|
+
edition
|
|
332
|
+
editor
|
|
333
|
+
isbn
|
|
334
|
+
issue_number
|
|
335
|
+
official_url
|
|
336
|
+
pagination
|
|
337
|
+
part
|
|
338
|
+
place_of_publication
|
|
339
|
+
publication_status
|
|
340
|
+
refereed
|
|
341
|
+
series
|
|
342
|
+
volume_number]
|
|
343
|
+
properties = base_properties + properties + common_properties
|
|
344
|
+
properties.sort!
|
|
345
|
+
@published_work_properties ||= properties
|
|
346
|
+
end
|
|
347
|
+
|
|
348
|
+
attr_writer :published_work_properties_required
|
|
349
|
+
|
|
350
|
+
def published_work_properties_required
|
|
351
|
+
@published_work_properties_required ||= required_properties
|
|
352
|
+
end
|
|
353
|
+
|
|
354
|
+
attr_writer :journal_article_properties
|
|
355
|
+
|
|
356
|
+
def journal_article_properties
|
|
357
|
+
properties = %i[abstract
|
|
358
|
+
date_published
|
|
359
|
+
date_available
|
|
360
|
+
date_accepted
|
|
361
|
+
date_submitted
|
|
362
|
+
issue_number
|
|
363
|
+
part_of
|
|
364
|
+
official_url
|
|
365
|
+
pagination
|
|
366
|
+
publication_status
|
|
367
|
+
refereed
|
|
368
|
+
volume_number]
|
|
369
|
+
properties = base_properties + properties + common_properties
|
|
370
|
+
properties.sort!
|
|
371
|
+
@journal_article_properties ||= properties
|
|
372
|
+
end
|
|
373
|
+
|
|
374
|
+
attr_writer :journal_article_properties_required
|
|
375
|
+
|
|
376
|
+
def journal_article_properties_required
|
|
377
|
+
@journal_article_properties_required ||= required_properties
|
|
378
|
+
end
|
|
379
|
+
|
|
380
|
+
attr_writer :thesis_properties
|
|
381
|
+
# omitting orcid
|
|
382
|
+
def thesis_properties
|
|
383
|
+
properties = %i[abstract
|
|
384
|
+
advisor
|
|
385
|
+
date_of_award
|
|
386
|
+
awarding_institution
|
|
387
|
+
qualification_level
|
|
388
|
+
qualification_name]
|
|
389
|
+
properties = base_properties + properties + common_properties
|
|
390
|
+
properties.sort!
|
|
391
|
+
@thesis_properties ||= properties
|
|
392
|
+
end
|
|
393
|
+
|
|
394
|
+
attr_writer :thesis_properties_required
|
|
395
|
+
|
|
396
|
+
def thesis_properties_required
|
|
397
|
+
@thesis_properties_required ||= required_properties
|
|
398
|
+
end
|
|
399
|
+
|
|
400
|
+
attr_writer :exam_paper_properties
|
|
401
|
+
|
|
402
|
+
def exam_paper_properties
|
|
403
|
+
properties = %i[module_code
|
|
404
|
+
qualification_level
|
|
405
|
+
qualification_name
|
|
406
|
+
date_available]
|
|
407
|
+
properties = base_properties + properties + common_properties
|
|
408
|
+
properties.sort!
|
|
409
|
+
@exam_paper_properties ||= properties
|
|
410
|
+
end
|
|
411
|
+
|
|
412
|
+
attr_writer :exam_paper_properties_required
|
|
413
|
+
|
|
414
|
+
def exam_paper_properties_required
|
|
415
|
+
@exam_paper_properties_required ||= required_properties
|
|
416
|
+
end
|
|
417
|
+
|
|
418
|
+
attr_writer :dataset_properties
|
|
419
|
+
|
|
420
|
+
# omitting pure (_uuid, _creation, _type and _link),
|
|
421
|
+
# requestor_email
|
|
422
|
+
# these are admin info, not for standard form/view
|
|
423
|
+
def dataset_properties
|
|
424
|
+
properties = %i[
|
|
425
|
+
abstract
|
|
426
|
+
content_version
|
|
427
|
+
date_accepted
|
|
428
|
+
date_available
|
|
429
|
+
date_collected
|
|
430
|
+
date_copyrighted
|
|
431
|
+
date_issued
|
|
432
|
+
date_published
|
|
433
|
+
date_submitted
|
|
434
|
+
date_updated
|
|
435
|
+
date_valid
|
|
436
|
+
dc_access_rights
|
|
437
|
+
dc_format
|
|
438
|
+
extent
|
|
439
|
+
has_restriction
|
|
440
|
+
last_access
|
|
441
|
+
number_of_downloads
|
|
442
|
+
resource_type_general
|
|
443
|
+
subtitle
|
|
444
|
+
]
|
|
445
|
+
properties = base_properties + properties + common_properties
|
|
446
|
+
properties.sort!
|
|
447
|
+
@dataset_properties ||= properties
|
|
448
|
+
end
|
|
449
|
+
|
|
450
|
+
attr_writer :dataset_properties_required
|
|
451
|
+
|
|
452
|
+
# use datacite mandatory
|
|
453
|
+
# exclude doi as this may be generated later in workflow
|
|
454
|
+
def dataset_properties_required
|
|
455
|
+
@dataset_properties_required ||= %i[
|
|
456
|
+
creator
|
|
457
|
+
title
|
|
458
|
+
publisher
|
|
459
|
+
date_published
|
|
460
|
+
resource_type_general
|
|
461
|
+
resource_type
|
|
462
|
+
]
|
|
463
|
+
end
|
|
464
|
+
|
|
465
|
+
attr_writer :package_properties
|
|
466
|
+
|
|
467
|
+
def package_properties
|
|
468
|
+
properties = %i[
|
|
469
|
+
aip_uuid
|
|
470
|
+
transfer_uuid
|
|
471
|
+
sip_uuid
|
|
472
|
+
dip_uuid
|
|
473
|
+
aip_status
|
|
474
|
+
dip_status
|
|
475
|
+
aip_size
|
|
476
|
+
dip_size
|
|
477
|
+
aip_current_path
|
|
478
|
+
dip_current_path
|
|
479
|
+
aip_current_location
|
|
480
|
+
dip_current_location
|
|
481
|
+
aip_resource_uri
|
|
482
|
+
dip_resource_uri
|
|
483
|
+
origin_pipeline
|
|
484
|
+
package_ids
|
|
485
|
+
]
|
|
486
|
+
properties = base_properties + properties + common_properties
|
|
487
|
+
properties.sort!
|
|
488
|
+
@package_properties ||= properties
|
|
489
|
+
end
|
|
490
|
+
|
|
491
|
+
attr_writer :package_properties_required
|
|
492
|
+
|
|
493
|
+
def package_properties_required
|
|
494
|
+
@package_properties_required ||= required_properties
|
|
495
|
+
end
|
|
496
|
+
|
|
497
|
+
# attr_writer :creator_class
|
|
498
|
+
#
|
|
499
|
+
# def creator_class
|
|
500
|
+
# @creator_class ||= String
|
|
501
|
+
# end
|
|
502
|
+
end
|
|
503
|
+
end
|
|
504
|
+
|
|
505
|
+
# rubocop:enable Metrics/MethodLength
|
|
506
|
+
# rubocop:enable Metrics/ClassLength
|