diff options
| author | Alban Peignier | 2016-11-21 13:51:22 +0100 |
|---|---|---|
| committer | Alban Peignier | 2016-11-21 13:51:22 +0100 |
| commit | 58dd80dee1d26890aba89354470304555a54dc29 (patch) | |
| tree | 6e424b5f9870de0590fe627af3b45fef6ad63894 | |
| parent | 4746a311818c939a259facf6332613504d03fbce (diff) | |
| parent | b27556ed51f2b3e16d5f109fe1ecf950db0a068d (diff) | |
| download | chouette-core-58dd80dee1d26890aba89354470304555a54dc29.tar.bz2 | |
Merge branch 'master' into staging
| -rw-r--r-- | app/models/referential.rb | 8 | ||||
| -rw-r--r-- | app/models/referential_metadata.rb | 4 | ||||
| -rw-r--r-- | app/views/lines/index.html.slim | 2 | ||||
| -rw-r--r-- | app/views/organisations/show.html.slim | 18 | ||||
| -rw-r--r-- | app/views/referential_lines/index.html.slim | 2 | ||||
| -rw-r--r-- | app/views/referentials/_form.html.slim | 14 | ||||
| -rw-r--r-- | app/views/shared/_lines_search_form.html.slim | 18 | ||||
| -rw-r--r-- | app/views/workbenches/show.html.slim | 14 | ||||
| -rw-r--r-- | config/locales/enumerize.en.yml | 2 | ||||
| -rw-r--r-- | config/locales/enumerize.fr.yml | 2 | ||||
| -rw-r--r-- | config/locales/lines.en.yml | 2 | ||||
| -rw-r--r-- | config/locales/lines.fr.yml | 2 | ||||
| -rw-r--r-- | spec/models/referential_spec.rb | 17 | ||||
| -rw-r--r-- | spec/views/organisations/show.html.erb | 17 | ||||
| -rw-r--r-- | spec/views/rule_parameter_sets/index.html.erb_spec.rb | 23 |
15 files changed, 73 insertions, 72 deletions
diff --git a/app/models/referential.rb b/app/models/referential.rb index 84bc1110d..b75ff3ab9 100644 --- a/app/models/referential.rb +++ b/app/models/referential.rb @@ -112,7 +112,7 @@ class Referential < ActiveRecord::Base after_initialize :define_default_attributes def define_default_attributes - self.time_zone ||= Time.zone.tzinfo.name + self.time_zone ||= Time.zone.name end def switch @@ -206,7 +206,7 @@ class Referential < ActiveRecord::Base def metadatas_period # FIXME if metadatas.present? - metadatas.first.periodes.first + metadatas.first.periodes.try :first end end alias_method :validity_period, :metadatas_period @@ -220,7 +220,7 @@ class Referential < ActiveRecord::Base return [] unless metadatas.present? line_ids = metadatas.first.line_ids - period = metadatas.first.periodes.first + period = metadatas.first.periodes.try :first return [] unless line_ids.present? && period @@ -230,7 +230,7 @@ class Referential < ActiveRecord::Base (SELECT unnest(public.referential_metadata.line_ids) as line, unnest(public.referential_metadata.periodes) as period, public.referential_metadata.referential_id FROM public.referential_metadata INNER JOIN public.referentials ON public.referential_metadata.referential_id = public.referentials.id - WHERE public.referentials.workbench_id = 1 and public.referentials.archived_at is null) as metadatas + WHERE public.referentials.workbench_id = #{workbench_id} and public.referentials.archived_at is null) as metadatas WHERE line in (#{line_ids.join(',')}) and period && '#{ActiveRecord::ConnectionAdapters::PostgreSQLColumn.range_to_string(period)}' #{not_myself};" self.class.connection.select_values(query).map(&:to_i) diff --git a/app/models/referential_metadata.rb b/app/models/referential_metadata.rb index 4228d2f7c..a1066e43b 100644 --- a/app/models/referential_metadata.rb +++ b/app/models/referential_metadata.rb @@ -7,6 +7,8 @@ class ReferentialMetadata < ActiveRecord::Base validates :lines, presence: true validates :periodes, presence: true + validates :first_period_begin, :first_period_end, presence: true + scope :include_lines, -> (line_ids) { where('line_ids && ARRAY[?]', line_ids) } scope :include_dateranges, -> (dateranges) { where('periodes && ARRAY[?]', dateranges) } @@ -18,6 +20,7 @@ class ReferentialMetadata < ActiveRecord::Base @first_period_begin or first_period.try(:begin) end def first_period_begin=(date) + date = (Date.parse(date) rescue nil) if String === date periodes_will_change! unless @first_period_begin == date @first_period_begin = date end @@ -33,6 +36,7 @@ class ReferentialMetadata < ActiveRecord::Base end end def first_period_end=(date) + date = (Date.parse(date) rescue nil) if String === date periodes_will_change! unless @first_period_end == date @first_period_end = date end diff --git a/app/views/lines/index.html.slim b/app/views/lines/index.html.slim index d2ab3f087..494958ddb 100644 --- a/app/views/lines/index.html.slim +++ b/app/views/lines/index.html.slim @@ -1,6 +1,6 @@ = title_tag t('lines.index.title') -= render partial: 'shared/lines_search_form', locals: { referential_type: 'line_referential' } += render partial: 'shared/lines_search_form', locals: { referential: @line_referential } #lines = render 'lines' diff --git a/app/views/organisations/show.html.slim b/app/views/organisations/show.html.slim index b9259150a..bf9f464dd 100644 --- a/app/views/organisations/show.html.slim +++ b/app/views/organisations/show.html.slim @@ -17,18 +17,6 @@ .users.paginated_content = paginated_content(@organisation.users, "users/user") -#accordion.panel-group - .panel.panel-default - .panel-heading - h4.panel-title - a data-toggle="collapse" data-parent="#accordion" href="#rule_parameter_sets" - = t('.rule_parameter_sets') - - #rule_parameter_sets.panel-collapse.collapse - .panel-body - .rule_parameter_sets.paginated_content - = paginated_content(@organisation.rule_parameter_sets, "rule_parameter_sets/rule_parameter_set") - - content_for :sidebar do ul.actions / FIXME ref #819 @@ -38,5 +26,7 @@ li = link_to t('users.actions.new'), new_organisation_user_path, class: 'add' - li - = link_to t('rule_parameter_sets.actions.new'), new_organisation_rule_parameter_set_path, class: 'add'
\ No newline at end of file + / FIXME ref #2007 + - if false + li + = link_to t('rule_parameter_sets.actions.new'), new_organisation_rule_parameter_set_path, class: 'add' diff --git a/app/views/referential_lines/index.html.slim b/app/views/referential_lines/index.html.slim index d6fb00e6b..9facb1a73 100644 --- a/app/views/referential_lines/index.html.slim +++ b/app/views/referential_lines/index.html.slim @@ -1,6 +1,6 @@ = title_tag t('lines.index.title') -= render partial: 'shared/lines_search_form', locals: { referential_type: 'referential' } += render partial: 'shared/lines_search_form', locals: { referential: @referential } #lines = render 'lines' diff --git a/app/views/referentials/_form.html.slim b/app/views/referentials/_form.html.slim index f130f490f..bce8818f2 100644 --- a/app/views/referentials/_form.html.slim +++ b/app/views/referentials/_form.html.slim @@ -6,7 +6,8 @@ - if @referential.new_record? - if @referential.created_from .col-lg-2.col-md-2.col-sm-3.col-xs-2 - = form.input :created_from, input_html: { value: @referential.created_from.name} + = form.input :created_from, disabled: true, input_html: { value: Referential.find(@referential.created_from_id).name } + = form.input :created_from_id, as: :hidden .col-lg-2.col-md-2.col-sm-2.col-xs-2 = form.input :slug, :input_html => { title: t("formtastic.titles.referential.slug") } @@ -47,9 +48,11 @@ = form.input :lower_corner, input_html: {title: t("formtastic.titles.referential.lower_corner")} - if @referential.errors.has_key? :metadatas - ul.errors - - @referential.errors[:metadatas].each do |message| - li = message + .row + .col-lg-12 + .alert.alert-danger + - @referential.errors[:metadatas].each do |message| + p.small = "- #{message}" = form.simple_fields_for :metadatas do |subform| .row @@ -57,9 +60,10 @@ = subform.input :first_period_begin, as: :date, html5: true, input_html: { style: 'width: 100%' } .col-lg-6.col-md-6.col-sm-6.col-xs-6 = subform.input :first_period_end, as: :date, html5: true, input_html: { style: 'width: 100%' } + .row .col-lg-8.col-md-12.col-sm-12.col-xs-12 - = subform.input :lines, as: :select, collection: @referential.workbench.lines.order(:name), selected: subform.object.line_ids, label_method: :display_name, input_html: { 'data-select2ed': 'true', 'data-select2ed-placeholder': 'Sélection de lignes', 'multiple': 'multiple', style: 'width: 100%' } + = subform.input :lines, as: :select, collection: @referential.workbench.lines.includes(:company).order(:name), selected: subform.object.line_ids, label_method: :display_name, input_html: { 'data-select2ed': 'true', 'data-select2ed-placeholder': 'Sélection de lignes', 'multiple': 'multiple', style: 'width: 100%' } = form.input :workbench_id, as: :hidden diff --git a/app/views/shared/_lines_search_form.html.slim b/app/views/shared/_lines_search_form.html.slim index 8cab8caf4..ec355ad8e 100644 --- a/app/views/shared/_lines_search_form.html.slim +++ b/app/views/shared/_lines_search_form.html.slim @@ -1,9 +1,8 @@ -- referential = instance_variable_get("@#{referential_type}") -= search_form_for @q, url: eval("#{referential_type}_lines_path(referential)"), remote: true, html: { method: :get, class: 'form-inline', id: 'search', role: 'form' } do |f| += search_form_for @q, url: eval("#{referential.class.name.underscore}_lines_path(referential)"), remote: true, html: { method: :get, class: 'form-inline', id: 'search', role: 'form' } do |f| .panel.panel-default .panel-heading .input-group.col-md-9.col-sm-9 - = f.search_field :name_or_number_or_objectid_or_comment_cont, placeholder: t('lines.index.name_or_number_or_objectid_or_comment'), class: 'form-control' + = f.search_field :name_or_number_or_objectid_cont, placeholder: t('lines.index.name_or_number_or_objectid'), class: 'form-control' .input-group-btn button.btn.btn-primary type='submit' i.fa.fa-search @@ -15,10 +14,9 @@ #advanced_search.panel-collapse.collapse .panel-body .row - - %w(networks companies group_of_lines transport_modes).each do |filter| - - options_container = (referential_type == 'referential' && filter == 'transport_modes') ? referential.line_referential : referential - - if options_container && options_container.send(filter).any? - - options = options_container.send(filter).collect { |f| [f.name, filter == 'transport_modes' ? f.name : f.id] }.unshift([t("lines.index.no_#{filter}"), -1]) - - matcher = filter == 'transport_modes' ? :transport_mode_eq : :"#{filter == 'group_of_lines' ? filter : filter.singularize}_id_eq" - .col-xs-3 - = f.select(matcher, options, { include_blank: '' }, { class: 'form-control', style: 'width: 100%', 'data-select2ed': 'true', 'data-select2ed-placeholder': t("lines.index.all_#{filter}") }) + .col-xs-3 + = f.select(:network_id_eq, referential.networks.collect { |n| [n.name, n.id] }.unshift([t("lines.index.no_networks"), -1]), { include_blank: '' }, { class: 'form-control', style: 'width: 100%', 'data-select2ed': 'true', 'data-select2ed-placeholder': t("lines.index.all_networks") }) + .col-xs-3 + = f.select(:company_id_eq, referential.companies.collect { |c| [c.name, c.id] }.unshift([t("lines.index.no_networks"), -1]), { include_blank: '' }, { class: 'form-control', style: 'width: 100%', 'data-select2ed': 'true', 'data-select2ed-placeholder': t("lines.index.all_companies") }) + .col-xs-3 + = f.select(:transport_mode_eq, Chouette::Line.transport_mode.values.collect { |v| [ I18n.t("enumerize.line.transport_mode.#{v}"), v] }.unshift([t("lines.index.no_transport_modes"), -1]), { include_blank: '' }, { class: 'form-control', style: 'width: 100%', 'data-select2ed': 'true', 'data-select2ed-placeholder': t("lines.index.all_transport_modes") }) diff --git a/app/views/workbenches/show.html.slim b/app/views/workbenches/show.html.slim index 2f9937452..a979d85f8 100644 --- a/app/views/workbenches/show.html.slim +++ b/app/views/workbenches/show.html.slim @@ -55,14 +55,14 @@ li = link_to "Cloner", new_referential_path(from: referential) - li - - if referential.archived? - - if referential.can_unarchive? - = link_to "Désarchiver", unarchive_referential_path(referential), method: :put - - else - = link_to "Désarchiver", "#" + - if referential.archived? + - if referential.can_unarchive? + li = link_to "Désarchiver", unarchive_referential_path(referential), method: :put - else - = link_to "Archiver", archive_referential_path(referential), method: :put + li.disabled title="L'action est impossible pour ce référentiel" + = link_to "Désarchiver", "#" + - else + li = link_to "Archiver", archive_referential_path(referential), method: :put li = link_to "Supprimer", referential_path(referential), method: :delete, :data => {:confirm => t('referentials.actions.destroy_confirm')} diff --git a/config/locales/enumerize.en.yml b/config/locales/enumerize.en.yml index e09a08696..2f865c9f1 100644 --- a/config/locales/enumerize.en.yml +++ b/config/locales/enumerize.en.yml @@ -103,7 +103,7 @@ en: waterborne: "Waterborne" private_vehicle: "Private vehicle" walk: "Walk" - trolleybus: "Trolleybus" + trolleyBus: "Trolleybus" bicycle: "Bicycle" shuttle: "Shuttle" taxi: "Taxi" diff --git a/config/locales/enumerize.fr.yml b/config/locales/enumerize.fr.yml index 62f5d53f6..33a987359 100644 --- a/config/locales/enumerize.fr.yml +++ b/config/locales/enumerize.fr.yml @@ -102,7 +102,7 @@ fr: waterborne: Bac private_vehicle: Voiture particulière walk: Marche à pied - trolleybus: Trolleybus + trolleyBus: Trolleybus bicycle: Vélo shuttle: Navette taxi: Taxi diff --git a/config/locales/lines.en.yml b/config/locales/lines.en.yml index 51ea2a176..33e979a00 100644 --- a/config/locales/lines.en.yml +++ b/config/locales/lines.en.yml @@ -23,7 +23,7 @@ en: deactivated: "Disabled line" title: "Lines" name_or_number: "Search by name or number..." - name_or_number_or_objectid_or_comment: "Search by name, number, objectid or comment..." + name_or_number_or_objectid: "Search by name, number or objectid..." no_networks: "No networks" no_companies: "No companies" no_group_of_lines: "No group of lines" diff --git a/config/locales/lines.fr.yml b/config/locales/lines.fr.yml index 0ac9e676e..58331b363 100644 --- a/config/locales/lines.fr.yml +++ b/config/locales/lines.fr.yml @@ -23,7 +23,7 @@ fr: deactivated: "Ligne désactivée" title: "Lignes" name_or_number: "Recherche par nom ou indice..." - name_or_number_or_objectid_or_comment: "Recherche par nom, indice, objectid ou commentaire..." + name_or_number_or_objectid: "Recherche par nom, indice ou objectid..." no_networks: "Aucun réseaux" no_companies: "Aucun transporteurs" no_group_of_lines: "Aucun groupes de ligne" diff --git a/spec/models/referential_spec.rb b/spec/models/referential_spec.rb index 4c9338aa6..2086f66d5 100644 --- a/spec/models/referential_spec.rb +++ b/spec/models/referential_spec.rb @@ -12,10 +12,21 @@ describe Referential, :type => :model do it { should belong_to(:workbench) } context "Cloning referential" do - let(:cloned) { Referential.new_from(ref).tap(&:save!) } + let(:clone) do + Referential.new_from(ref) + end + + let(:saved_clone) do + clone.tap do |clone| + clone.metadatas.each do |metadata| + metadata.periodes = metadata.periodes.map { |period| Range.new(period.end+1, period.end+10) } + end + clone.save! + end + end it 'should create a ReferentialCloning' do - expect { cloned }.to change{ReferentialCloning.count}.by(1) + expect { saved_clone }.to change{ReferentialCloning.count}.by(1) end def metadatas_attributes(referential) @@ -23,7 +34,7 @@ describe Referential, :type => :model do end it 'should clone referential_metadatas' do - expect(metadatas_attributes(cloned)).to eq(metadatas_attributes(ref)) + expect(metadatas_attributes(clone)).to eq(metadatas_attributes(ref)) end end diff --git a/spec/views/organisations/show.html.erb b/spec/views/organisations/show.html.erb new file mode 100644 index 000000000..69f5e2956 --- /dev/null +++ b/spec/views/organisations/show.html.erb @@ -0,0 +1,17 @@ +require 'spec_helper' + +describe "/organisations/show" do + + assign_organisation + + let(:organisation) { first_organisation } + let!(:user) { create :user, organisation: first_organisation } + + it "should render each User" do + render + organisation.users.each do |user| + rendered.should have_selector("div.user span.name", :text => user.name) + end + end + +end diff --git a/spec/views/rule_parameter_sets/index.html.erb_spec.rb b/spec/views/rule_parameter_sets/index.html.erb_spec.rb deleted file mode 100644 index c745e516f..000000000 --- a/spec/views/rule_parameter_sets/index.html.erb_spec.rb +++ /dev/null @@ -1,23 +0,0 @@ -require 'spec_helper' - -describe "/organisations/show" do - - assign_organisation - - let!(:organisation) { create(:organisation) } - let!(:rule_parameter_sets) { assign :rule_parameter_sets, [ create(:rule_parameter_set, :organisation => organisation), - create(:rule_parameter_set, :organisation => organisation)] } - it "should render a show link for each rule_parameter_set" do - render - rule_parameter_sets.each do |rule_parameter_set| - #rendered.should have_selector(".rule_parameter_sets a[href='#{view.organisation_rule_parameter_set_path( rule_parameter_set)}']", :text => rule_parameter_set.name) - end - end - - it "should render a link to create a new rule_parameter_set" do - render - view.content_for(:sidebar).should have_selector(".actions a[href='#{new_organisation_rule_parameter_set_path}']") - end - -end - |
