aboutsummaryrefslogtreecommitdiffstats
path: root/app/models
AgeCommit message (Collapse)Author
2017-12-21ComplianceControl.dynamic_attributes: Use `stored_attributes`Teddy Wing
This method must return the keys of all `control_attributes` in subclasses of `ComplianceControl`. Now that we're not using `hstore_accessor`, this breaks. Use `stored_attributes` to get the keys since we create virtual attributes using Rails' `store_accessor`. Refs #5316
2017-12-21Remove `hstore_accessor` usageTeddy Wing
The places we were using `hstore_accessor` have now been converted to Postgres JSON fields. Thus we no longer need `hstore_accessor` in order to add accessors for the fields. Instead we can use Rails' built-in support for Postgres JSON fields and create accessors for our JSON hash keys with `store_accessor`. We get rid of the data types because `store_accessor` doesn't work like that and JSON already types our values with primitive data types. Finally, add some extra validation tests now that the vaildation for our JSON fields should work. Refs #5316
2017-12-21Merge pull request #150 from af83/5301-add_business_calendarsLuc Donnet
Refs #5301 First draft for Business Calendars
2017-12-21Fix purchase window date filtercedricnjanga
2017-12-21Take review into accountcedricnjanga
2017-12-21BusinessCalendar => PurchaseWindowcedricnjanga
belongs_to referential
2017-12-21Fix business calendar views, decorator, filters and policy Refs #5301Luc Donnet
2017-12-21Handle page title error displaycedricnjanga
attempt to add select tag for model color
2017-12-21Fix migrations, locales, view and exclude calendar timetable in concern Refs ↵Luc Donnet
#5301
2017-12-21Remove binding.prycedricnjanga
2017-12-21Refs #5301 First draft for Business Calendarscedricnjanga
2017-12-20Add StopArea#waiting_time with support in stop_areas#index/show. Refs #5351Alban Peignier
2017-12-20Create ReferentialVehicleJourneysController and ↵Alban Peignier
/referentials/:id/vehicle_journeys. Refs #5341
2017-12-20Create Organisation#features and FeatureChecker controller concerns. Refs #5339Alban Peignier
2017-12-20Merge pull request #124 from af83/5006-wb_import_filter_refs_with_foreign_linesLuc Donnet
5006 wb import filter refs with foreign lines
2017-12-20Merge pull request #157 from af83/5311-stop-area-type-customizableAlban Peignier
Make customizable StopArea type. Refs #5311
2017-12-19Refs #5325@0.5h; Use policies for calendar sharingZog
Use policies to determine if a user is allowed to share a calendar, instead of a hardcoded string
2017-12-18Clear Chouette::AreaType caches during specs. Refs #5311Alban Peignier
2017-12-18Remove usage of StopArea#stop_area_type. Refs #5311Alban Peignier
2017-12-18Create Chouette::AreaType to manage available StopArea type and associated ↵Alban Peignier
i18n. Refs #5311
2017-12-18Merge pull request #146 from af83/5283-refactor-referential-cloning-workerteddywing
#5283 - Simplifier ReferentialCloningWorker
2017-12-14Refs #5006; CR pass IRobert
2017-12-14Refs: #5006@3h;Robert
Working out how to check for allowed lines vs. foreign lines - Implement allowed_lines as `Organisation#lines_set` - Pushed line_id related stuff into `lib/stif/codif_line_id.rb` - Related Specs
2017-12-13Fix compliance control block#edit view pageheadercedricnjanga
2017-12-13Referential#save_with_table_lock_timeout: Add argumentTeddy Wing
I was getting test failures like this one: 2) Workbenches show filtering filter by status should display archived referentials Failure/Error: def save_with_table_lock_timeout save_without_table_lock_timeout rescue ActiveRecord::StatementInvalid => e if e.message.include?('PG::LockNotAvailable') raise TableLockTimeoutError.new(e) else raise end ArgumentError: wrong number of arguments (given 1, expected 0) # ./app/models/referential.rb:64:in `save_with_table_lock_timeout' # .../.gem/ruby/2.3.3/gems/activerecord-4.2.8/lib/active_record/persistence.rb:241:in `update_attribute' # ./spec/features/workbenches_spec.rb:71:in `block (5 levels) in <top (required)>' # .../.gem/ruby/2.3.3/gems/activesupport-4.2.8/lib/active_support/dependencies.rb:268:in `load' # .../.gem/ruby/2.3.3/gems/activesupport-4.2.8/lib/active_support/dependencies.rb:268:in `block in load' # .../.gem/ruby/2.3.3/gems/activesupport-4.2.8/lib/active_support/dependencies.rb:240:in `load_dependency' # .../.gem/ruby/2.3.3/gems/activesupport-4.2.8/lib/active_support/dependencies.rb:268:in `load' # .../.gem/ruby/2.3.3/gems/spring-commands-rspec-1.0.4/lib/spring/commands/rspec.rb:18:in `call' # .../.gem/ruby/2.3.3/gems/spring-2.0.1/lib/spring/command_wrapper.rb:38:in `call' # .../.gem/ruby/2.3.3/gems/spring-2.0.1/lib/spring/application.rb:191:in `block in serve' # .../.gem/ruby/2.3.3/gems/spring-2.0.1/lib/spring/application.rb:161:in `fork' # .../.gem/ruby/2.3.3/gems/spring-2.0.1/lib/spring/application.rb:161:in `serve' # .../.gem/ruby/2.3.3/gems/spring-2.0.1/lib/spring/application.rb:131:in `block in run' # .../.gem/ruby/2.3.3/gems/spring-2.0.1/lib/spring/application.rb:125:in `loop' # .../.gem/ruby/2.3.3/gems/spring-2.0.1/lib/spring/application.rb:125:in `run' # .../.gem/ruby/2.3.3/gems/spring-2.0.1/lib/spring/application/boot.rb:19:in `<top (required)>' # -e:1:in `<main>' Sometimes an argument gets passed to the function and sometimes it doesn't. Inspecting that argument in a debugger revealed what appeared to be an options hash: (byebug) options {:validate=>false} Add this optional argument to get past the test failures. At this point I'm not even really considering whether this is a good idea or not, I just want this to be done. Refs #5024
2017-12-13Refs #5112 : Referential#createcedricnjanga
=> Only display the short_id of lines objetids for better UI
2017-12-12Move logic to ReferentialCloning. Improve specs. Refs #5283Alban Peignier
2017-12-12Prevent error in Referential validation/creation when some attributs are ↵Alban Peignier
defined (organisation, name, etc)
2017-12-12Referential: Lock table on :updateTeddy Wing
We had been locking the `referentials` table on :create, but we also want to handle :update. Paired on this with Johan. When I used: referential_2.metadatas << metadata_2 the referential was saved. To add the metadata without automatically saving the referential + metadata, Johan suggested using the nested attribute method: referential_2.metadatas_attributes = [metadata_2.attributes] This allows us to add the metadata and still use the `#save` method to lock the table. Also change the callback from `before_validation` to `before_save` because before_validation :lock_table, on: [:create, :update] didn't work. That caused an error in our `expect`, as the `be_valid` triggered the lock callback. To enable the callback on both :create and :update, use a `before_save` instead. Refs #5024
2017-12-12Referential: Raise an error if the table lock times outTeddy Wing
Paired with Johan on this one. There's an internal timeout on our table lock. If it's reached, an `ActiveRecord::StatementInvalid<PG::LockNotAvailable>` error is raised. Use a custom error instead by "overriding" `#save` with a method that raises our custom error in that case instead. This will enable us to provide a custom user-facing error in the event this happens. Refs #5024
2017-12-11Referential#create_schema: Log benchmark time to createTeddy Wing
We want some measurements for how long it takes to create schemas to give us some data to decide whether to put `#create_schema` in an `after_commit` somehow (it didn't work the simple way). This at least gives us a better idea of what's going on and how our table lock is performing. Refs #5024
2017-12-11Revert "Referential: Move `create_schema` to an `after_commit`"Teddy Wing
This reverts commit 5ae238936d3c91e70709c2ec4ed8a73a6f4524dc. I was getting a bunch of test errors like this: 1) Referentials destroy should remove referential Failure/Error: Apartment::Tenant.switch!(slug) Apartment::TenantNotFound: One of the following schema(s) is invalid: "test_1" "first", "shared_extensions" # .../.gem/ruby/2.3.3/gems/apartment-1.0.2/lib/apartment/adapters/postgresql_adapter.rb:92:in `rescue in connect_to_new' # .../.gem/ruby/2.3.3/gems/apartment-1.0.2/lib/apartment/adapters/postgresql_adapter.rb:85:in `connect_to_new' # .../.gem/ruby/2.3.3/gems/apartment-1.0.2/lib/apartment/adapters/abstract_adapter.rb:84:in `switch!' # ./app/models/referential.rb:139:in `switch' # ./app/controllers/referentials_controller.rb:26:in `show' # .../.gem/ruby/2.3.3/gems/actionpack-4.2.8/lib/action_controller/metal/implicit_render.rb:4:in `send_action' # .../.gem/ruby/2.3.3/gems/actionpack-4.2.8/lib/abstract_controller/base.rb:198:in `process_action' # .../.gem/ruby/2.3.3/gems/actionpack-4.2.8/lib/action_controller/metal/rendering.rb:10:in `process_action' # .../.gem/ruby/2.3.3/gems/actionpack-4.2.8/lib/abstract_controller/callbacks.rb:20:in `block in process_action' # .../.gem/ruby/2.3.3/gems/activesupport-4.2.8/lib/active_support/callbacks.rb:117:in `call' # .../.gem/ruby/2.3.3/gems/activesupport-4.2.8/lib/active_support/callbacks.rb:555:in `block (2 levels) in compile' # .../.gem/ruby/2.3.3/gems/activesupport-4.2.8/lib/active_support/callbacks.rb:505:in `call' # .../.gem/ruby/2.3.3/gems/activesupport-4.2.8/lib/active_support/callbacks.rb:92:in `__run_callbacks__' # .../.gem/ruby/2.3.3/gems/activesupport-4.2.8/lib/active_support/callbacks.rb:778:in `_run_process_action_callbacks' # .../.gem/ruby/2.3.3/gems/activesupport-4.2.8/lib/active_support/callbacks.rb:81:in `run_callbacks' # .../.gem/ruby/2.3.3/gems/actionpack-4.2.8/lib/abstract_controller/callbacks.rb:19:in `process_action' # .../.gem/ruby/2.3.3/gems/actionpack-4.2.8/lib/action_controller/metal/rescue.rb:29:in `process_action' # .../.gem/ruby/2.3.3/gems/actionpack-4.2.8/lib/action_controller/metal/instrumentation.rb:32:in `block in process_action' # .../.gem/ruby/2.3.3/gems/activesupport-4.2.8/lib/active_support/notifications.rb:164:in `block in instrument' # .../.gem/ruby/2.3.3/gems/activesupport-4.2.8/lib/active_support/notifications/instrumenter.rb:20:in `instrument' # .../.gem/ruby/2.3.3/gems/activesupport-4.2.8/lib/active_support/notifications.rb:164:in `instrument' # .../.gem/ruby/2.3.3/gems/actionpack-4.2.8/lib/action_controller/metal/instrumentation.rb:30:in `process_action' # .../.gem/ruby/2.3.3/gems/actionpack-4.2.8/lib/action_controller/metal/params_wrapper.rb:250:in `process_action' # .../.gem/ruby/2.3.3/gems/activerecord-4.2.8/lib/active_record/railties/controller_runtime.rb:18:in `process_action' # .../.gem/ruby/2.3.3/gems/actionpack-4.2.8/lib/abstract_controller/base.rb:137:in `process' # .../.gem/ruby/2.3.3/gems/actionview-4.2.8/lib/action_view/rendering.rb:30:in `process' # .../.gem/ruby/2.3.3/gems/actionpack-4.2.8/lib/action_controller/metal.rb:196:in `dispatch' # .../.gem/ruby/2.3.3/gems/actionpack-4.2.8/lib/action_controller/metal/rack_delegation.rb:13:in `dispatch' # .../.gem/ruby/2.3.3/gems/actionpack-4.2.8/lib/action_controller/metal.rb:237:in `block in action' # .../.gem/ruby/2.3.3/gems/actionpack-4.2.8/lib/action_dispatch/routing/route_set.rb:74:in `dispatch' # .../.gem/ruby/2.3.3/gems/actionpack-4.2.8/lib/action_dispatch/routing/route_set.rb:43:in `serve' # .../.gem/ruby/2.3.3/gems/actionpack-4.2.8/lib/action_dispatch/journey/router.rb:43:in `block in serve' # .../.gem/ruby/2.3.3/gems/actionpack-4.2.8/lib/action_dispatch/journey/router.rb:30:in `each' # .../.gem/ruby/2.3.3/gems/actionpack-4.2.8/lib/action_dispatch/journey/router.rb:30:in `serve' # .../.gem/ruby/2.3.3/gems/actionpack-4.2.8/lib/action_dispatch/routing/route_set.rb:817:in `call' # .../.gem/ruby/2.3.3/gems/devise_cas_authenticatable-1.10.0/lib/devise_cas_authenticatable/single_sign_out/rack.rb:14:in `call' # .../.gem/ruby/2.3.3/gems/warden-1.2.7/lib/warden/manager.rb:36:in `block in call' # .../.gem/ruby/2.3.3/gems/warden-1.2.7/lib/warden/manager.rb:35:in `catch' # .../.gem/ruby/2.3.3/gems/warden-1.2.7/lib/warden/manager.rb:35:in `call' # .../.gem/ruby/2.3.3/gems/rack-1.6.8/lib/rack/etag.rb:24:in `call' # .../.gem/ruby/2.3.3/gems/rack-1.6.8/lib/rack/conditionalget.rb:25:in `call' # .../.gem/ruby/2.3.3/gems/rack-1.6.8/lib/rack/head.rb:13:in `call' # .../.gem/ruby/2.3.3/gems/actionpack-4.2.8/lib/action_dispatch/middleware/params_parser.rb:27:in `call' # .../.gem/ruby/2.3.3/gems/actionpack-4.2.8/lib/action_dispatch/middleware/flash.rb:260:in `call' # .../.gem/ruby/2.3.3/gems/rack-1.6.8/lib/rack/session/abstract/id.rb:225:in `context' # .../.gem/ruby/2.3.3/gems/rack-1.6.8/lib/rack/session/abstract/id.rb:220:in `call' # .../.gem/ruby/2.3.3/gems/actionpack-4.2.8/lib/action_dispatch/middleware/cookies.rb:560:in `call' # .../.gem/ruby/2.3.3/gems/activerecord-4.2.8/lib/active_record/query_cache.rb:36:in `call' # .../.gem/ruby/2.3.3/gems/activerecord-4.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:653:in `call' # .../.gem/ruby/2.3.3/gems/actionpack-4.2.8/lib/action_dispatch/middleware/callbacks.rb:29:in `block in call' # .../.gem/ruby/2.3.3/gems/activesupport-4.2.8/lib/active_support/callbacks.rb:88:in `__run_callbacks__' # .../.gem/ruby/2.3.3/gems/activesupport-4.2.8/lib/active_support/callbacks.rb:778:in `_run_call_callbacks' # .../.gem/ruby/2.3.3/gems/activesupport-4.2.8/lib/active_support/callbacks.rb:81:in `run_callbacks' # .../.gem/ruby/2.3.3/gems/actionpack-4.2.8/lib/action_dispatch/middleware/callbacks.rb:27:in `call' # .../.gem/ruby/2.3.3/gems/actionpack-4.2.8/lib/action_dispatch/middleware/remote_ip.rb:78:in `call' # .../.gem/ruby/2.3.3/gems/actionpack-4.2.8/lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call' # .../.gem/ruby/2.3.3/gems/actionpack-4.2.8/lib/action_dispatch/middleware/show_exceptions.rb:30:in `call' # .../.gem/ruby/2.3.3/gems/railties-4.2.8/lib/rails/rack/logger.rb:38:in `call_app' # .../.gem/ruby/2.3.3/gems/railties-4.2.8/lib/rails/rack/logger.rb:20:in `block in call' # .../.gem/ruby/2.3.3/gems/activesupport-4.2.8/lib/active_support/tagged_logging.rb:68:in `block in tagged' # .../.gem/ruby/2.3.3/gems/activesupport-4.2.8/lib/active_support/tagged_logging.rb:26:in `tagged' # .../.gem/ruby/2.3.3/gems/activesupport-4.2.8/lib/active_support/tagged_logging.rb:68:in `tagged' # .../.gem/ruby/2.3.3/gems/railties-4.2.8/lib/rails/rack/logger.rb:20:in `call' # .../.gem/ruby/2.3.3/gems/request_store-1.3.2/lib/request_store/middleware.rb:9:in `call' # .../.gem/ruby/2.3.3/gems/actionpack-4.2.8/lib/action_dispatch/middleware/request_id.rb:21:in `call' # .../.gem/ruby/2.3.3/gems/rack-1.6.8/lib/rack/methodoverride.rb:22:in `call' # .../.gem/ruby/2.3.3/gems/rack-1.6.8/lib/rack/runtime.rb:18:in `call' # .../.gem/ruby/2.3.3/gems/activesupport-4.2.8/lib/active_support/cache/strategy/local_cache_middleware.rb:28:in `call' # .../.gem/ruby/2.3.3/gems/rack-1.6.8/lib/rack/lock.rb:17:in `call' # .../.gem/ruby/2.3.3/gems/actionpack-4.2.8/lib/action_dispatch/middleware/static.rb:120:in `call' # .../.gem/ruby/2.3.3/gems/rack-1.6.8/lib/rack/sendfile.rb:113:in `call' # .../.gem/ruby/2.3.3/gems/railties-4.2.8/lib/rails/engine.rb:518:in `call' # .../.gem/ruby/2.3.3/gems/railties-4.2.8/lib/rails/application.rb:165:in `call' # .../.gem/ruby/2.3.3/gems/rack-1.6.8/lib/rack/urlmap.rb:66:in `block in call' # .../.gem/ruby/2.3.3/gems/rack-1.6.8/lib/rack/urlmap.rb:50:in `each' # .../.gem/ruby/2.3.3/gems/rack-1.6.8/lib/rack/urlmap.rb:50:in `call' # .../.gem/ruby/2.3.3/gems/rack-test-0.6.3/lib/rack/mock_session.rb:30:in `request' # .../.gem/ruby/2.3.3/gems/rack-test-0.6.3/lib/rack/test.rb:244:in `process_request' # .../.gem/ruby/2.3.3/gems/rack-test-0.6.3/lib/rack/test.rb:58:in `get' # .../.gem/ruby/2.3.3/gems/capybara-2.4.4/lib/capybara/rack_test/browser.rb:60:in `process' # .../.gem/ruby/2.3.3/gems/capybara-2.4.4/lib/capybara/rack_test/browser.rb:35:in `process_and_follow_redirects' # .../.gem/ruby/2.3.3/gems/capybara-2.4.4/lib/capybara/rack_test/browser.rb:21:in `visit' # .../.gem/ruby/2.3.3/gems/capybara-2.4.4/lib/capybara/rack_test/driver.rb:42:in `visit' # .../.gem/ruby/2.3.3/gems/capybara-2.4.4/lib/capybara/session.rb:227:in `visit' # .../.gem/ruby/2.3.3/gems/capybara-2.4.4/lib/capybara/dsl.rb:51:in `block (2 levels) in <module:DSL>' # ./spec/features/referentials_spec.rb:193:in `block (3 levels) in <top (required)>' # .../.gem/ruby/2.3.3/gems/activesupport-4.2.8/lib/active_support/dependencies.rb:268:in `load' # .../.gem/ruby/2.3.3/gems/activesupport-4.2.8/lib/active_support/dependencies.rb:268:in `block in load' # .../.gem/ruby/2.3.3/gems/activesupport-4.2.8/lib/active_support/dependencies.rb:240:in `load_dependency' # .../.gem/ruby/2.3.3/gems/activesupport-4.2.8/lib/active_support/dependencies.rb:268:in `load' # .../.gem/ruby/2.3.3/gems/spring-commands-rspec-1.0.4/lib/spring/commands/rspec.rb:18:in `call' # -e:1:in `<main>' # ------------------ # --- Caused by: --- # ActiveRecord::StatementInvalid: # Could not find schema test_1 # .../.gem/ruby/2.3.3/gems/apartment-1.0.2/lib/apartment/adapters/postgresql_adapter.rb:86:in `connect_to_new' Couldn't figure out how to get around this. The problem is that: 1. The referential is created 2. The app tries to switch to the newly-created referential's schema 3. The schema is created But of course we can't switch to a schema that doesn't exist. After a discussion with Luc & Alban, we decided to leave out the `after_commit`. I'll be logging a benchmark of time it takes for schema creation to give us an idea of the time & performance impact of the schema creation and lock.
2017-12-07Fix worbench_import status update when a netex_import has a warning status ↵Luc Donnet
and others successful Refs #5202
2017-12-06Merge remote-tracking branch 'origin/master' into ↵Teddy Wing
5024-prevent-duplicate-referentials-from-being-created-during-parallel-db-transactions--rb201711271659
2017-12-06Referential: Move `create_schema` to an `after_commit`Teddy Wing
The goal being to separate the creation of the database schema from the creation of the `Referential` object. Previously these were created in the same database transaction, but moving the schema to an `after_commit` puts it in a separate transaction. This change tries to mitigate a problem where two `Referential`s, created at the same time with the same data, can be saved, even though identical `Referential`s should not be allowed. By moving the schema creation to a separate transaction, we decrease the time it takes to create a `Referential`, increasing the odds of not creating two identical `Referential`s due to near-simultaneous writes. Refs #5024 Conflicts: app/models/referential.rb
2017-12-06Fix log to detect schema migrations overwriteLuc Donnet
2017-12-06Add log to detect schema migrations overwriteLuc Donnet
2017-12-05Add some changes according to PR reviewcedricnjanga
2017-12-05Merge remote-tracking branch 'origin/master' into ↵Teddy Wing
5024-prevent-duplicate-referentials-from-being-created-during-parallel-db-transactions--rb201711271659 Conflicts: app/models/referential.rb A whitespace conflict in a place I don't even remember editing? Okaay.
2017-12-05Merge pull request #132 from af83/5127_new_api_endpointsLuc Donnet
Refs #5127 Add two new endpoints to the API
2017-12-05- Comment parent.child_change call in ComplianceCheckSet#notify_parent to ↵cedricnjanga
avoid errors - Clean new routes (we dont need aliases)
2017-12-05Fixes: #5179@1h; Referential Creation Enforces objectid_format from ↵5179-ref_creation_enforces_objectid_formatRobert
associated Workbench - CR changes implemented
2017-12-05Small refacto to handle no_parent error for ComplianceCheckSetcedricnjanga
2017-12-05Refs #5127 Add two new endpoints to the APIcedricnjanga
ComplianceCheckSet#notify_parent NetexImport#notify_parent
2017-12-05Refs: #5179@1.25h; Referential Creation Enforces objectid_format from ↵Robert
associated Workbench - changed ObjectIdFormatterSupport as requested - respeced all defined cases - implemented respec Missing: What to do in `define_default_attributes` if ref has no workbench and no `objectid_format`?
2017-12-05Refs: #5179@1h; Referential Creation Enforces objectid_format from ↵Robert
associated Workbench [skip-ci] - speced the `define_default_attributes` part - speced the Reference.new_from part
2017-12-05Delete ObjectidSupport for access_point model because Reflex synchronisation ↵Luc Donnet
failed
2017-11-30Merge branch 'master' into 5093-fix_import_policyLuc Donnet
2017-11-30Destroy compliance_check_set must destroy all sub elements : ↵Luc Donnet
compliance_check_resources, compliance_check_messages, compliance_checks, compliance_check_bocks Refs #5093
2017-11-30Merge branch 'master' into 4981_last_editorXinhui Xu