Class: Study::Metadata
- Inherits:
-
Object
- Object
- Study::Metadata
- Defined in:
- app/models/study.rb
Overview
rubocop:disable Metrics/ClassLength
Instance Method Summary collapse
- #clear_externally_managed_errors ⇒ Object
- #data_release_prevention_reason_other? ⇒ Boolean
- #data_release_strategy_must_be_managed? ⇒ Boolean
- #data_release_timing_must_be_never? ⇒ Boolean
- #data_release_timing_must_be_open? ⇒ Boolean
- #data_release_timing_must_not_be_never? ⇒ Boolean
- #delay_until_publication? ⇒ Boolean
- #delayed_for_long_time? ⇒ Boolean
- #delayed_for_other_reasons? ⇒ Boolean
- #delayed_release? ⇒ Boolean
- #managed? ⇒ Boolean
- #never_release? ⇒ Boolean
- #non_standard_agreement? ⇒ Boolean
- #open? ⇒ Boolean
- #remove_x_and_autosomes? ⇒ Boolean
- #sanity_check_y_separation ⇒ Object
- #snp_child_studies ⇒ Object
- #snp_parent_study ⇒ Object
- #strategy_not_applicable? ⇒ Boolean
- #study_type_valid? ⇒ Boolean
-
#valid_policy_url? ⇒ Boolean
rubocop:todo Metrics/MethodLength.
Instance Method Details
#clear_externally_managed_errors ⇒ Object
801 802 803 |
# File 'app/models/study.rb', line 801 def clear_externally_managed_errors errors.clear end |
#data_release_prevention_reason_other? ⇒ Boolean
723 724 725 |
# File 'app/models/study.rb', line 723 def data_release_prevention_reason_other? data_release_prevention_reason == DATA_RELEASE_PREVENTION_REASON_OTHER end |
#data_release_strategy_must_be_managed? ⇒ Boolean
770 771 772 |
# File 'app/models/study.rb', line 770 def data_release_strategy_must_be_managed? Flipper.enabled?(:y24_052_enable_data_release_timing_validation) && data_release_strategy.present? && managed? end |
#data_release_timing_must_be_never? ⇒ Boolean
756 757 758 759 |
# File 'app/models/study.rb', line 756 def data_release_timing_must_be_never? Flipper.enabled?(:y24_052_enable_data_release_timing_validation) && data_release_strategy.present? && strategy_not_applicable? end |
#data_release_timing_must_be_open? ⇒ Boolean
766 767 768 |
# File 'app/models/study.rb', line 766 def data_release_timing_must_be_open? Flipper.enabled?(:y24_052_enable_data_release_timing_validation) && data_release_strategy.present? && open? end |
#data_release_timing_must_not_be_never? ⇒ Boolean
761 762 763 764 |
# File 'app/models/study.rb', line 761 def data_release_timing_must_not_be_never? Flipper.enabled?(:y24_052_enable_data_release_timing_validation) && data_release_strategy.present? && !strategy_not_applicable? end |
#delay_until_publication? ⇒ Boolean
731 732 733 |
# File 'app/models/study.rb', line 731 def delay_until_publication? data_release_timing == DATA_RELEASE_TIMING_PUBLICATION end |
#delayed_for_long_time? ⇒ Boolean
727 728 729 |
# File 'app/models/study.rb', line 727 def delayed_for_long_time? DATA_RELEASE_DELAY_PERIODS.include?(data_release_delay_period) end |
#delayed_for_other_reasons? ⇒ Boolean
719 720 721 |
# File 'app/models/study.rb', line 719 def delayed_for_other_reasons? [DATA_RELEASE_DELAY_FOR_OTHER, OLD_DATA_RELEASE_DELAY_FOR_OTHER].include?(data_release_delay_reason) end |
#delayed_release? ⇒ Boolean
711 712 713 |
# File 'app/models/study.rb', line 711 def delayed_release? data_release_timing == DATA_RELEASE_TIMING_DELAYED end |
#managed? ⇒ Boolean
703 704 705 |
# File 'app/models/study.rb', line 703 def managed? data_release_strategy == DATA_RELEASE_STRATEGY_MANAGED end |
#never_release? ⇒ Boolean
715 716 717 |
# File 'app/models/study.rb', line 715 def never_release? data_release_timing == DATA_RELEASE_TIMING_NEVER end |
#non_standard_agreement? ⇒ Boolean
788 789 790 |
# File 'app/models/study.rb', line 788 def non_standard_agreement? data_release_standard_agreement == NO end |
#open? ⇒ Boolean
699 700 701 |
# File 'app/models/study.rb', line 699 def open? data_release_strategy == DATA_RELEASE_STRATEGY_OPEN end |
#remove_x_and_autosomes? ⇒ Boolean
695 696 697 |
# File 'app/models/study.rb', line 695 def remove_x_and_autosomes? remove_x_and_autosomes == YES end |
#sanity_check_y_separation ⇒ Object
774 775 776 777 778 779 |
# File 'app/models/study.rb', line 774 def sanity_check_y_separation if remove_x_and_autosomes? errors.add(:separate_y_chromosome_data, 'cannot be selected with remove x and autosomes.') end !remove_x_and_autosomes? end |
#snp_child_studies ⇒ Object
843 844 845 846 847 |
# File 'app/models/study.rb', line 843 def snp_child_studies return nil if snp_study_id.nil? self.class.where(snp_parent_study_id: snp_study_id).includes(:study).map(&:study) end |
#snp_parent_study ⇒ Object
837 838 839 840 841 |
# File 'app/models/study.rb', line 837 def snp_parent_study return nil if snp_parent_study_id.nil? self.class.where(snp_study_id: snp_parent_study_id).includes(:study).try(:study) end |
#strategy_not_applicable? ⇒ Boolean
707 708 709 |
# File 'app/models/study.rb', line 707 def strategy_not_applicable? data_release_strategy == DATA_RELEASE_STRATEGY_NOT_APPLICABLE end |
#study_type_valid? ⇒ Boolean
792 793 794 |
# File 'app/models/study.rb', line 792 def study_type_valid? errors.add(:study_type, 'is not specified') if study_type.name == 'Not specified' end |
#valid_policy_url? ⇒ Boolean
rubocop:todo Metrics/MethodLength
806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 |
# File 'app/models/study.rb', line 806 def valid_policy_url? # rubocop:todo Metrics/AbcSize # Rails 2.3 has no inbuilt URL validation, but rather than rolling our own, we'll # use the inbuilt ruby URI parser, a bit like here: # http://www.simonecarletti.com/blog/2009/04/validating-the-format-of-an-url-with-rails/ return true if dac_policy.blank? dac_policy.insert(0, 'http://') unless dac_policy.include?('://') # Add an http protocol if no protocol is defined begin uri = URI.parse(dac_policy) if configatron.invalid_policy_url_domains.include?(uri.host) errors.add( :dac_policy, ": #{dac_policy} is not an acceptable URL. Please ensure you haven't provided an internal URL." ) end rescue URI::InvalidURIError errors.add(:dac_policy, ": #{dac_policy} is not a valid URL") end end |