dog_biscuits 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- 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,60 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module DogBiscuits
|
4
|
+
class Project < Authority
|
5
|
+
include DogBiscuits::FoafName
|
6
|
+
include DogBiscuits::GenericAuthorityTerms
|
7
|
+
include DogBiscuits::Identifier
|
8
|
+
include DogBiscuits::Funder
|
9
|
+
|
10
|
+
type [::RDF::URI.new('http://xmlns.com/foaf/0.1/Project')]
|
11
|
+
|
12
|
+
def agent?
|
13
|
+
false
|
14
|
+
end
|
15
|
+
|
16
|
+
def concept?
|
17
|
+
false
|
18
|
+
end
|
19
|
+
|
20
|
+
def concept_scheme?
|
21
|
+
false
|
22
|
+
end
|
23
|
+
|
24
|
+
def event?
|
25
|
+
false
|
26
|
+
end
|
27
|
+
|
28
|
+
def group?
|
29
|
+
false
|
30
|
+
end
|
31
|
+
|
32
|
+
def organisation?
|
33
|
+
false
|
34
|
+
end
|
35
|
+
|
36
|
+
def person?
|
37
|
+
false
|
38
|
+
end
|
39
|
+
|
40
|
+
def place?
|
41
|
+
false
|
42
|
+
end
|
43
|
+
|
44
|
+
def project?
|
45
|
+
true
|
46
|
+
end
|
47
|
+
|
48
|
+
# Generate a rdfs label from the name parts. Overwrite the existing label.
|
49
|
+
def add_label
|
50
|
+
self.rdfs_label = name if name.present?
|
51
|
+
self.rdfs_label += " (id: #{identifier.join})" if identifier.present?
|
52
|
+
add_preflabel
|
53
|
+
end
|
54
|
+
|
55
|
+
# Generate a preflabel from rdfs label.
|
56
|
+
def add_preflabel
|
57
|
+
self.preflabel = rdfs_label
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module DogBiscuits
|
4
|
+
# All authority classes inherit from this.
|
5
|
+
class Authority < ActiveFedora::Base
|
6
|
+
include DogBiscuits::CommonLabels
|
7
|
+
include DogBiscuits::SkosNote
|
8
|
+
include DogBiscuits::ValidateLabel
|
9
|
+
|
10
|
+
before_save :add_label
|
11
|
+
|
12
|
+
belongs_to :concept_scheme,
|
13
|
+
class_name: 'DogBiscuits::ConceptScheme',
|
14
|
+
predicate: ::RDF::Vocab::SKOS.inScheme
|
15
|
+
|
16
|
+
def authority?
|
17
|
+
true
|
18
|
+
end
|
19
|
+
|
20
|
+
def work?
|
21
|
+
false
|
22
|
+
end
|
23
|
+
|
24
|
+
def file_set?
|
25
|
+
false
|
26
|
+
end
|
27
|
+
|
28
|
+
def collection?
|
29
|
+
false
|
30
|
+
end
|
31
|
+
|
32
|
+
def edit_groups
|
33
|
+
['admin']
|
34
|
+
end
|
35
|
+
|
36
|
+
# Ensure rdfs label and pref label and the same. Prefer preflabel.
|
37
|
+
def add_label
|
38
|
+
self.rdfs_label = preflabel if preflabel.present?
|
39
|
+
self.preflabel = rdfs_label if rdfs_label.present?
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module DogBiscuits
|
4
|
+
class Collection < ActiveFedora::Base
|
5
|
+
include ::Hyrax::CollectionBehavior
|
6
|
+
include DogBiscuits::CommonMetadata
|
7
|
+
|
8
|
+
def authority?
|
9
|
+
false
|
10
|
+
end
|
11
|
+
|
12
|
+
def agent?
|
13
|
+
false
|
14
|
+
end
|
15
|
+
|
16
|
+
def work?
|
17
|
+
false
|
18
|
+
end
|
19
|
+
|
20
|
+
def file_set?
|
21
|
+
false
|
22
|
+
end
|
23
|
+
|
24
|
+
def collection?
|
25
|
+
true
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.indexer
|
29
|
+
CollectionIndexer
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module DogBiscuits
|
4
|
+
# Behaviour only used where data is being pulled in from the PURE CRIS system.
|
5
|
+
module PureSpecificBehaviour
|
6
|
+
extend ActiveSupport::Concern
|
7
|
+
|
8
|
+
included do
|
9
|
+
before_save :add_pure_type
|
10
|
+
|
11
|
+
def add_pure_type
|
12
|
+
rdf_type << DogBiscuits::Vocab::PureTerms.Organisation unless pure_uuid.nil? && organisation?
|
13
|
+
rdf_type << DogBiscuits::Vocab::PureTerms.Person unless pure_uuid.nil? && person?
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module DogBiscuits
|
4
|
+
# Validates members of a concept scheme.
|
5
|
+
module ValidateConceptScheme
|
6
|
+
extend ActiveSupport::Concern
|
7
|
+
|
8
|
+
included do
|
9
|
+
def self.type_validator
|
10
|
+
Hydra::PCDM::Validators::CompositeValidator.new(
|
11
|
+
DogBiscuits::ConceptSchemeMemberValidator
|
12
|
+
)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module DogBiscuits
|
4
|
+
module WorkBehaviour
|
5
|
+
extend ActiveSupport::Concern
|
6
|
+
|
7
|
+
# In order to be used, the work classes require various 'Behaviors' from Hyrax
|
8
|
+
# In Hyrax, this is included like so:
|
9
|
+
# include Hyrax::WorkBehavior
|
10
|
+
|
11
|
+
# When using these models within a Hyrax application, the WorkBehavior mixin is added to the model
|
12
|
+
# We can also include it here, but that means 'double-loading'
|
13
|
+
# Also, Hyrax::NestedWorks is one of the mixins included in WorkBehavior and this will cause an error:
|
14
|
+
# RuntimeError: Circular dependency detected in calling app
|
15
|
+
|
16
|
+
# The approach taken is *not* to include behavior within DogBiscuits, but instead leave it to the calling Hyrax
|
17
|
+
# application to do so.
|
18
|
+
|
19
|
+
# For spec tests, these are performed on the generated model in Hyrax *not* on the DogBiscuits model
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,147 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module DogBiscuits
|
4
|
+
module ExtendedSolrDocument
|
5
|
+
extend ActiveSupport::Concern
|
6
|
+
|
7
|
+
# Duplicated from https://github.com/samvera/hyrax/blob/master/app/models/concerns/hyrax/solr_document/metadata.rb
|
8
|
+
|
9
|
+
class_methods do
|
10
|
+
def attribute(name, type, field)
|
11
|
+
define_method name do
|
12
|
+
type.coerce(self[field])
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def solr_name(*args)
|
17
|
+
ActiveFedora.index_field_mapper.solr_name(*args)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
module Solr
|
22
|
+
class Array
|
23
|
+
# @return [Array]
|
24
|
+
def self.coerce(input)
|
25
|
+
::Array.wrap(input)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
class String
|
30
|
+
# @return [String]
|
31
|
+
def self.coerce(input)
|
32
|
+
::Array.wrap(input).first
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
class Date
|
37
|
+
# @return [Date]
|
38
|
+
def self.coerce(input)
|
39
|
+
field = String.coerce(input)
|
40
|
+
return if field.blank?
|
41
|
+
begin
|
42
|
+
::Date.parse(field)
|
43
|
+
rescue ArgumentError
|
44
|
+
Rails.logger.info "Unable to parse date: #{field.first.inspect}"
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
# Keep these alphebetized; comments indicate those in basic_metadata
|
51
|
+
# see https://github.com/samvera/hyrax/blob/master/app/models/concerns/hyrax/solr_document/metadata.rb
|
52
|
+
included do
|
53
|
+
attribute :abstract, Solr::Array, solr_name('abstract')
|
54
|
+
attribute :access_provided_by, Solr::Array, solr_name('access_provided_by')
|
55
|
+
attribute :advisor, Solr::Array, solr_name('advisor')
|
56
|
+
attribute :alt, Solr::Array, solr_name('alt')
|
57
|
+
attribute :awarding_institution, Solr::Array, solr_name('awarding_institution')
|
58
|
+
# based_near and based_near
|
59
|
+
attribute :content_version, Solr::Array, solr_name('content_version')
|
60
|
+
# contributor
|
61
|
+
# creator
|
62
|
+
attribute :date, Solr::Array, solr_name('date')
|
63
|
+
attribute :date_accepted, Solr::Array, solr_name('date_accepted')
|
64
|
+
attribute :date_available, Solr::Array, solr_name('date_available')
|
65
|
+
attribute :date_collected, Solr::Array, solr_name('date_collected')
|
66
|
+
attribute :date_copyrighted, Solr::Array, solr_name('date_copyrighted')
|
67
|
+
attribute :date_issued, Solr::Array, solr_name('date_issued')
|
68
|
+
# date_created
|
69
|
+
attribute :date_of_award, Solr::Array, solr_name('date_of_award')
|
70
|
+
attribute :date_published, Solr::Array, solr_name('date_published')
|
71
|
+
attribute :date_submitted, Solr::Array, solr_name('date_submitted')
|
72
|
+
attribute :date_updated, Solr::Array, solr_name('date_updated')
|
73
|
+
attribute :date_valid, Solr::Array, solr_name('date_valid')
|
74
|
+
attribute :dc_access_rights, Solr::Array, solr_name('dc_access_rights')
|
75
|
+
attribute :department, Solr::Array, solr_name('department')
|
76
|
+
# description
|
77
|
+
attribute :doi, Solr::Array, solr_name('doi')
|
78
|
+
attribute :edition, Solr::Array, solr_name('edition')
|
79
|
+
attribute :editor, Solr::Array, solr_name('editor')
|
80
|
+
attribute :end_date, Solr::Array, solr_name('end_date')
|
81
|
+
attribute :event_date, Solr::Array, solr_name('event_date')
|
82
|
+
attribute :extent, Solr::Array, solr_name('extent')
|
83
|
+
attribute :dc_format, Solr::Array, solr_name('dc_format')
|
84
|
+
attribute :former_identifier, Solr::Array, solr_name('former_identifier')
|
85
|
+
attribute :funder, Solr::Array, solr_name('funder')
|
86
|
+
attribute :resource_type_general, Solr::Array, solr_name('resource_type_general')
|
87
|
+
attribute :has_restriction, Solr::Array, solr_name('has_restriction')
|
88
|
+
# rubocop:enable Naming/PredicateName
|
89
|
+
|
90
|
+
# identifier
|
91
|
+
attribute :isbn, Solr::Array, solr_name('isbn')
|
92
|
+
attribute :issue_number, Solr::Array, solr_name('issue_number')
|
93
|
+
# keyword
|
94
|
+
# language
|
95
|
+
attribute :last_access, Solr::Array, solr_name('last_access')
|
96
|
+
attribute :lat, Solr::Array, solr_name('lat')
|
97
|
+
# license
|
98
|
+
attribute :location, Solr::Array, solr_name('location')
|
99
|
+
attribute :long, Solr::Array, solr_name('long')
|
100
|
+
attribute :managing_organisation, Solr::Array, solr_name('managing_organisation')
|
101
|
+
attribute :module_code, Solr::Array, solr_name('module_code')
|
102
|
+
attribute :note, Solr::Array, solr_name('note')
|
103
|
+
attribute :number_of_downloads, Solr::Array, solr_name('last_access')
|
104
|
+
attribute :official_url, Solr::Array, solr_name('official_url')
|
105
|
+
attribute :output_of, Solr::Array, solr_name('output_of')
|
106
|
+
attribute :official_url, Solr::Array, solr_name('official_url')
|
107
|
+
attribute :packaged_by_ids, Solr::Array, solr_name('packaged_by_ids', :symbol)
|
108
|
+
attribute :package_ids, Solr::Array, solr_name('package_ids', :symbol)
|
109
|
+
attribute :pagination, Solr::Array, solr_name('pagination')
|
110
|
+
attribute :part, Solr::Array, solr_name('part')
|
111
|
+
attribute :place_of_publication, Solr::Array, solr_name('place_of_publication')
|
112
|
+
attribute :presented_at, Solr::Array, solr_name('presented_at')
|
113
|
+
attribute :part_of, Solr::Array, solr_name('part_of')
|
114
|
+
attribute :project, Solr::Array, solr_name('project')
|
115
|
+
attribute :publication_status, Solr::Array, solr_name('publication_status')
|
116
|
+
# publisher
|
117
|
+
attribute :qualification_level, Solr::Array, solr_name('qualification_level')
|
118
|
+
attribute :qualification_name, Solr::Array, solr_name('qualification_name')
|
119
|
+
attribute :refereed, Solr::Array, solr_name('refereed')
|
120
|
+
attribute :related_url, Solr::Array, solr_name('related_url')
|
121
|
+
# resource_type
|
122
|
+
# rights_statement
|
123
|
+
attribute :series, Solr::Array, solr_name('series')
|
124
|
+
# source
|
125
|
+
attribute :start_date, Solr::Array, solr_name('start_date')
|
126
|
+
# subject
|
127
|
+
attribute :subtitle, Solr::Array, solr_name('subtitle')
|
128
|
+
attribute :volume_number, Solr::Array, solr_name('volume_number')
|
129
|
+
# archivematica
|
130
|
+
attribute :aip_uuid, Solr::Array, solr_name('aip_uuid')
|
131
|
+
attribute :transfer_uuid, Solr::Array, solr_name('transfer_uuid')
|
132
|
+
attribute :sip_uuid, Solr::Array, solr_name('sip_uuid')
|
133
|
+
attribute :dip_uuid, Solr::Array, solr_name('dip_uuid')
|
134
|
+
attribute :aip_status, Solr::Array, solr_name('aip_status')
|
135
|
+
attribute :dip_status, Solr::Array, solr_name('dip_status')
|
136
|
+
attribute :aip_size, Solr::Array, solr_name('aip_size')
|
137
|
+
attribute :dip_size, Solr::Array, solr_name('dip_size')
|
138
|
+
attribute :aip_current_path, Solr::Array, solr_name('aip_current_path')
|
139
|
+
attribute :dip_current_path, Solr::Array, solr_name('dip_current_path')
|
140
|
+
attribute :aip_current_location, Solr::Array, solr_name('aip_current_location')
|
141
|
+
attribute :dip_current_location, Solr::Array, solr_name('dip_current_location')
|
142
|
+
attribute :aip_resource_uri, Solr::Array, solr_name('aip_resource_uri')
|
143
|
+
attribute :dip_resource_uri, Solr::Array, solr_name('dip_resource_uri')
|
144
|
+
attribute :origin_pipeline, Solr::Array, solr_name('origin_pipeline')
|
145
|
+
end
|
146
|
+
end
|
147
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module DogBiscuits
|
4
|
+
module Archivematica
|
5
|
+
extend ActiveSupport::Concern
|
6
|
+
|
7
|
+
included do
|
8
|
+
property :aip_uuid,
|
9
|
+
predicate: DogBiscuits::Vocab::OaisArchivematica.aipUuid do |index|
|
10
|
+
index.as :stored_searchable
|
11
|
+
end
|
12
|
+
property :transfer_uuid,
|
13
|
+
predicate: DogBiscuits::Vocab::OaisArchivematica.transferUuid do |index|
|
14
|
+
index.as :stored_searchable
|
15
|
+
end
|
16
|
+
property :sip_uuid,
|
17
|
+
predicate: DogBiscuits::Vocab::OaisArchivematica.sipUuid do |index|
|
18
|
+
index.as :stored_searchable
|
19
|
+
end
|
20
|
+
property :dip_uuid,
|
21
|
+
predicate: DogBiscuits::Vocab::OaisArchivematica.dipUuid do |index|
|
22
|
+
index.as :stored_searchable
|
23
|
+
end
|
24
|
+
property :aip_status,
|
25
|
+
predicate: DogBiscuits::Vocab::OaisArchivematica.aipStatus do |index|
|
26
|
+
index.as :stored_searchable
|
27
|
+
end
|
28
|
+
property :dip_status,
|
29
|
+
predicate: DogBiscuits::Vocab::OaisArchivematica.dipStatus do |index|
|
30
|
+
index.as :stored_searchable
|
31
|
+
end
|
32
|
+
property :aip_size,
|
33
|
+
predicate: DogBiscuits::Vocab::OaisArchivematica.aipSize do |index|
|
34
|
+
index.as :stored_searchable
|
35
|
+
end
|
36
|
+
property :dip_size,
|
37
|
+
predicate: DogBiscuits::Vocab::OaisArchivematica.dipSize do |index|
|
38
|
+
index.as :stored_searchable
|
39
|
+
end
|
40
|
+
property :aip_current_path,
|
41
|
+
predicate: DogBiscuits::Vocab::OaisArchivematica.aipCurrentPath do |index|
|
42
|
+
index.as :stored_searchable
|
43
|
+
end
|
44
|
+
property :dip_current_path,
|
45
|
+
predicate: DogBiscuits::Vocab::OaisArchivematica.dipCurrentPath do |index|
|
46
|
+
index.as :stored_searchable
|
47
|
+
end
|
48
|
+
property :aip_current_location,
|
49
|
+
predicate:
|
50
|
+
DogBiscuits::Vocab::OaisArchivematica.aipCurrentLocation do |index|
|
51
|
+
index.as :stored_searchable
|
52
|
+
end
|
53
|
+
property :dip_current_location,
|
54
|
+
predicate:
|
55
|
+
DogBiscuits::Vocab::OaisArchivematica.dipCurrentLocation do |index|
|
56
|
+
index.as :stored_searchable
|
57
|
+
end
|
58
|
+
property :aip_resource_uri,
|
59
|
+
predicate: DogBiscuits::Vocab::OaisArchivematica.aipResourceUri do |index|
|
60
|
+
index.as :stored_searchable
|
61
|
+
end
|
62
|
+
property :dip_resource_uri,
|
63
|
+
predicate: DogBiscuits::Vocab::OaisArchivematica.dipResourceUri do |index|
|
64
|
+
index.as :stored_searchable
|
65
|
+
end
|
66
|
+
# This will always be the same for both AIP and DIP
|
67
|
+
property :origin_pipeline,
|
68
|
+
predicate: DogBiscuits::Vocab::OaisArchivematica.originPipeline do |index|
|
69
|
+
index.as :stored_searchable
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|