From bed17aeff299b3bddc074aba11eb5c6867e816c4 Mon Sep 17 00:00:00 2001 From: Justin Coyne Date: Sun, 8 Oct 2017 22:30:01 -0500 Subject: [PATCH 01/18] Rename QueryService to Statistics::QueryService This better reflects it's scope as specifically for statistics. We may want to repurpose a general Hyrax::QueryService for the Valkyrie integration. --- .rubocop_fixme.yml | 1 - app/services/hyrax/query_service.rb | 53 ------------------ .../hyrax/statistics/depositors/summary.rb | 6 +- app/services/hyrax/statistics/over_time.rb | 6 +- .../hyrax/statistics/query_service.rb | 55 +++++++++++++++++++ app/services/hyrax/statistics/works/count.rb | 2 +- .../{ => statistics}/query_service_spec.rb | 8 ++- 7 files changed, 71 insertions(+), 60 deletions(-) delete mode 100644 app/services/hyrax/query_service.rb create mode 100644 app/services/hyrax/statistics/query_service.rb rename spec/services/hyrax/{ => statistics}/query_service_spec.rb (97%) diff --git a/.rubocop_fixme.yml b/.rubocop_fixme.yml index 1d6063fb0b..c081d82484 100644 --- a/.rubocop_fixme.yml +++ b/.rubocop_fixme.yml @@ -159,7 +159,6 @@ RSpec/LetBeforeExamples: - 'spec/forms/hyrax/forms/collection_form_spec.rb' - 'spec/presenters/hyrax/collection_presenter_spec.rb' - 'spec/presenters/hyrax/trophy_presenter_spec.rb' - - 'spec/services/hyrax/query_service_spec.rb' - 'spec/services/hyrax/workflow/action_taken_service_spec.rb' - 'spec/services/hyrax/workflow/notification_service_spec.rb' diff --git a/app/services/hyrax/query_service.rb b/app/services/hyrax/query_service.rb deleted file mode 100644 index 28c2c9be10..0000000000 --- a/app/services/hyrax/query_service.rb +++ /dev/null @@ -1,53 +0,0 @@ -module Hyrax - class QueryService - # query to find works created during the time range - # @param [DateTime] start_datetime starting date time for range query - # @param [DateTime] end_datetime ending date time for range query - def find_by_date_created(start_datetime, end_datetime = nil) - return [] if start_datetime.blank? # no date just return nothing - relation.where(build_date_query(start_datetime, end_datetime)) - end - - def find_registered_in_date_range(start_datetime, end_datetime = nil) - find_by_date_created(start_datetime, end_datetime).merge(where_registered) - end - - def find_public_in_date_range(start_datetime, end_datetime = nil) - find_by_date_created(start_datetime, end_datetime).merge(where_public) - end - - def where_public - where_access_is 'public' - end - - def where_registered - where_access_is 'registered' - end - - def build_date_query(start_datetime, end_datetime) - start_date_str = start_datetime.utc.strftime(date_format) - end_date_str = if end_datetime.blank? - "*" - else - end_datetime.utc.strftime(date_format) - end - "system_create_dtsi:[#{start_date_str} TO #{end_date_str}]" - end - - delegate :count, to: :relation - - def relation - Hyrax::WorkRelation.new - end - - private - - def where_access_is(access_level) - relation.where Hydra.config.permissions.read.group => access_level - end - - def date_format - "%Y-%m-%dT%H:%M:%SZ" - end - end -end diff --git a/app/services/hyrax/statistics/depositors/summary.rb b/app/services/hyrax/statistics/depositors/summary.rb index c0853188c0..dc5ea8ee4f 100644 --- a/app/services/hyrax/statistics/depositors/summary.rb +++ b/app/services/hyrax/statistics/depositors/summary.rb @@ -55,7 +55,11 @@ def query end def date_query - Hyrax::QueryService.new.build_date_query(start_dt, end_dt) if start_dt.present? + query_service.build_date_query(start_dt, end_dt) if start_dt.present? + end + + def query_service + Hyrax::Statistics::QueryService.new end end end diff --git a/app/services/hyrax/statistics/over_time.rb b/app/services/hyrax/statistics/over_time.rb index fe56b45c3d..f280c630dc 100644 --- a/app/services/hyrax/statistics/over_time.rb +++ b/app/services/hyrax/statistics/over_time.rb @@ -35,7 +35,11 @@ def point(min, max) end def query(min, max) - QueryService.new.build_date_query(min, max) + query_service.build_date_query(min, max) + end + + def query_service + Hyrax::Statistics::QueryService.new end # How many points are in this data set diff --git a/app/services/hyrax/statistics/query_service.rb b/app/services/hyrax/statistics/query_service.rb new file mode 100644 index 0000000000..56aef7725f --- /dev/null +++ b/app/services/hyrax/statistics/query_service.rb @@ -0,0 +1,55 @@ +module Hyrax + module Statistics + class QueryService + # query to find works created during the time range + # @param [DateTime] start_datetime starting date time for range query + # @param [DateTime] end_datetime ending date time for range query + def find_by_date_created(start_datetime, end_datetime = nil) + return [] if start_datetime.blank? # no date just return nothing + relation.where(build_date_query(start_datetime, end_datetime)) + end + + def find_registered_in_date_range(start_datetime, end_datetime = nil) + find_by_date_created(start_datetime, end_datetime).merge(where_registered) + end + + def find_public_in_date_range(start_datetime, end_datetime = nil) + find_by_date_created(start_datetime, end_datetime).merge(where_public) + end + + def where_public + where_access_is 'public' + end + + def where_registered + where_access_is 'registered' + end + + def build_date_query(start_datetime, end_datetime) + start_date_str = start_datetime.utc.strftime(date_format) + end_date_str = if end_datetime.blank? + "*" + else + end_datetime.utc.strftime(date_format) + end + "system_create_dtsi:[#{start_date_str} TO #{end_date_str}]" + end + + delegate :count, to: :relation + + def relation + Hyrax::WorkRelation.new + end + + private + + def where_access_is(access_level) + relation.where Hydra.config.permissions.read.group => access_level + end + + def date_format + "%Y-%m-%dT%H:%M:%SZ" + end + end + end +end diff --git a/app/services/hyrax/statistics/works/count.rb b/app/services/hyrax/statistics/works/count.rb index b07ad7b08a..7e752c4257 100644 --- a/app/services/hyrax/statistics/works/count.rb +++ b/app/services/hyrax/statistics/works/count.rb @@ -43,7 +43,7 @@ def by_permission private def query_service - @query_service ||= Hyrax::QueryService.new + @query_service ||= Hyrax::Statistics::QueryService.new end def by_date_and_permission diff --git a/spec/services/hyrax/query_service_spec.rb b/spec/services/hyrax/statistics/query_service_spec.rb similarity index 97% rename from spec/services/hyrax/query_service_spec.rb rename to spec/services/hyrax/statistics/query_service_spec.rb index 1e11a3a152..32c07bcc9b 100644 --- a/spec/services/hyrax/query_service_spec.rb +++ b/spec/services/hyrax/statistics/query_service_spec.rb @@ -1,4 +1,4 @@ -RSpec.describe Hyrax::QueryService, :clean_repo do +RSpec.describe Hyrax::Statistics::QueryService, :clean_repo do let(:service) { described_class.new } describe "#count" do @@ -54,8 +54,9 @@ end context "when file is registered" do - it { is_expected.to eq [work] } let(:read_groups) { ["registered"] } + + it { is_expected.to eq [work] } end end @@ -77,8 +78,9 @@ end context "when file is registered" do - it { is_expected.to eq [] } let(:read_groups) { ["registered"] } + + it { is_expected.to eq [] } end end From af09e4f61e9eb8eaa8aad82fc0911eefa02e51cf Mon Sep 17 00:00:00 2001 From: Justin Coyne Date: Sun, 8 Oct 2017 22:44:51 -0500 Subject: [PATCH 02/18] Provide some Rails options that make the build faster --- .travis.yml | 1 + hyrax.gemspec | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 66229106ee..79c963f361 100644 --- a/.travis.yml +++ b/.travis.yml @@ -18,6 +18,7 @@ rvm: env: global: - NOKOGIRI_USE_SYSTEM_LIBRARIES=true + - ENGINE_CART_RAILS_OPTIONS='--skip-git --skip-bundle --skip-listen --skip-spring --skip-yarn --skip-keeps --skip-action-cable --skip-coffee --skip-puma --skip-test' # Travis should check every minor version in a range of supported versions, because # rails does not follow sem-ver conventions, see http://guides.rubyonrails.org/maintenance_policy.html # It should be sufficient to test only the latest of the patch versions for a minor version, they diff --git a/hyrax.gemspec b/hyrax.gemspec index 133a7fb4da..459ba42f04 100644 --- a/hyrax.gemspec +++ b/hyrax.gemspec @@ -75,7 +75,7 @@ EOF spec.add_dependency 'active-fedora', '>= 11.3.1' spec.add_dependency 'linkeddata' # Required for getting values from geonames - spec.add_development_dependency 'engine_cart', '~> 1.0' + spec.add_development_dependency 'engine_cart', '~> 1.2' spec.add_development_dependency 'mida', '~> 0.3' spec.add_development_dependency 'database_cleaner', '~> 1.3' spec.add_development_dependency 'solr_wrapper', '~> 1.1' From d3aa6a524dc22a99040fb5bb71390e1037825606 Mon Sep 17 00:00:00 2001 From: Jonathan Dixon Date: Mon, 9 Oct 2017 13:52:49 -0400 Subject: [PATCH 03/18] Include form error for works visibility field. --- app/assets/stylesheets/hyrax/_forms.scss | 6 +++++- app/views/hyrax/base/_form_visibility_component.html.erb | 3 ++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/app/assets/stylesheets/hyrax/_forms.scss b/app/assets/stylesheets/hyrax/_forms.scss index bafa9ae03f..c6fad75a72 100644 --- a/app/assets/stylesheets/hyrax/_forms.scss +++ b/app/assets/stylesheets/hyrax/_forms.scss @@ -49,7 +49,11 @@ form { } .set-access-controls { - label { font-weight: normal; } + label { + color: #333; + font-weight: normal; + } + & .form-group { padding: 0 1.75em; diff --git a/app/views/hyrax/base/_form_visibility_component.html.erb b/app/views/hyrax/base/_form_visibility_component.html.erb index d53feab9b4..2734d13f62 100644 --- a/app/views/hyrax/base/_form_visibility_component.html.erb +++ b/app/views/hyrax/base/_form_visibility_component.html.erb @@ -3,8 +3,9 @@ <% elsif f.object.lease_expiration_date %> <%= render 'form_permission_under_lease', f: f %> <% else %> -
+ > Visibility + <%= f.error :visibility %>