From 53d270949c1bf753e3fbe706f8339bc94f0167ad Mon Sep 17 00:00:00 2001 From: Arnaud Levy <contact@arnaudlevy.com> Date: Mon, 7 Mar 2022 17:50:02 +0100 Subject: [PATCH] imports --- app/models/university/organization.rb | 2 +- app/models/university/organization/import.rb | 21 +++++++++++++++++-- .../appstack/simple_navigation_renderer.rb | 7 ++++++- .../organization/imports/new.html.erb | 2 +- config/admin_navigation.rb | 2 +- config/locales/university/en.yml | 4 ++-- ...ame_website_in_university_organizations.rb | 5 +++++ db/schema.rb | 4 ++-- .../university/organization/imports.yml | 1 - test/fixtures/university/organizations.yml | 2 +- test/models/university/organization_test.rb | 2 +- 11 files changed, 39 insertions(+), 13 deletions(-) create mode 100644 db/migrate/20220307164108_rename_website_in_university_organizations.rb diff --git a/app/models/university/organization.rb b/app/models/university/organization.rb index 6adb4785a..1df61f1f0 100644 --- a/app/models/university/organization.rb +++ b/app/models/university/organization.rb @@ -14,7 +14,7 @@ # name :string # phone :string # sirene :string -# website :string +# url :string # zipcode :string # created_at :datetime not null # updated_at :datetime not null diff --git a/app/models/university/organization/import.rb b/app/models/university/organization/import.rb index fb53338f1..421ad605b 100644 --- a/app/models/university/organization/import.rb +++ b/app/models/university/organization/import.rb @@ -39,8 +39,25 @@ class University::Organization::Import < ApplicationRecord protected def parse - csv.each do |line| - byebug + csv.each do |row| + university.organizations.where(name: row['name']).first_or_create do |o| + [ + :long_name, + :kind, + :sirene, + :description, + :address, + :zipcode, + :city, + :country, + :mail, + :phone, + :url, + ].each do |property| + o[property] = row[property.to_s] + end + o.kind ||= :company + end end end handle_asynchronously :parse, queue: 'default' diff --git a/app/services/appstack/simple_navigation_renderer.rb b/app/services/appstack/simple_navigation_renderer.rb index 4611928d6..65bb69256 100644 --- a/app/services/appstack/simple_navigation_renderer.rb +++ b/app/services/appstack/simple_navigation_renderer.rb @@ -25,7 +25,12 @@ class Appstack::SimpleNavigationRenderer < SimpleNavigation::Renderer::Base end def make_header(item) - "<li class=\"sidebar-header\">#{ item.name }</li>" + icon = item.send(:options)[:icon] + header = '<li class="sidebar-header">' + header += "<i class=\"fas fa-#{ icon }\"></i>" if icon + header += item.name + header += '</li>' + header end def make_a(item) diff --git a/app/views/admin/university/organization/imports/new.html.erb b/app/views/admin/university/organization/imports/new.html.erb index 460abdd79..d69bc7b28 100644 --- a/app/views/admin/university/organization/imports/new.html.erb +++ b/app/views/admin/university/organization/imports/new.html.erb @@ -66,7 +66,7 @@ <td>+33 1 01 01 01 01</td> </tr> <tr> - <th>website</th> + <th>url</th> <td>https://www.lemonde.fr</td> </tr> </tbody> diff --git a/config/admin_navigation.rb b/config/admin_navigation.rb index 9e8ffc691..4ad235c33 100644 --- a/config/admin_navigation.rb +++ b/config/admin_navigation.rb @@ -6,7 +6,7 @@ SimpleNavigation::Configuration.run do |navigation| navigation.items do |primary| primary.item :dashboard, t('admin.dashboard'), admin_root_path, { icon: 'tachometer-alt', highlights_on: /admin$/ } - if can?(:read, User) || can?(:read, University::Person) + if can?(:read, User) || can?(:read, University::Person) || can?(:read, University::Organization) primary.item :university, University.model_name.human, nil, { kind: :header } primary.item :university, University::Person.model_name.human(count: 2), admin_university_people_path, { icon: 'users-cog' } primary.item :university, University::Organization.model_name.human(count: 2), admin_university_organizations_path, { icon: 'building' } diff --git a/config/locales/university/en.yml b/config/locales/university/en.yml index b346f35e0..56710d4f7 100644 --- a/config/locales/university/en.yml +++ b/config/locales/university/en.yml @@ -14,7 +14,7 @@ en: public: Public public_or_private: Public/private sms_sender_name: SMS sender name - url: 'URL' + url: URL zipcode: Zipcode university/person: abilities: Abilities @@ -35,7 +35,7 @@ en: picture: Profile picture research_journal_articles: Articles slug: Slug - tenure: Have tenure? + tenure: Has tenure? user: User university/person/involvement: description: Mission (in this context) diff --git a/db/migrate/20220307164108_rename_website_in_university_organizations.rb b/db/migrate/20220307164108_rename_website_in_university_organizations.rb new file mode 100644 index 000000000..6e6d168f9 --- /dev/null +++ b/db/migrate/20220307164108_rename_website_in_university_organizations.rb @@ -0,0 +1,5 @@ +class RenameWebsiteInUniversityOrganizations < ActiveRecord::Migration[6.1] + def change + rename_column :university_organizations, :website, :url + end +end diff --git a/db/schema.rb b/db/schema.rb index ed57cfb44..2210243fa 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2022_03_07_070155) do +ActiveRecord::Schema.define(version: 2022_03_07_164108) do # These are extensions that must be enabled in order to support this database enable_extension "pgcrypto" @@ -607,7 +607,7 @@ ActiveRecord::Schema.define(version: 2022_03_07_070155) do t.string "zipcode" t.string "city" t.string "country" - t.string "website" + t.string "url" t.string "phone" t.string "mail" t.boolean "active", default: true diff --git a/test/fixtures/university/organization/imports.yml b/test/fixtures/university/organization/imports.yml index 0f6959317..2a23235c7 100644 --- a/test/fixtures/university/organization/imports.yml +++ b/test/fixtures/university/organization/imports.yml @@ -18,7 +18,6 @@ # fk_rails_31152af0cd (university_id => universities.id) # fk_rails_da057ff44d (user_id => users.id) # -# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html one: university: one diff --git a/test/fixtures/university/organizations.yml b/test/fixtures/university/organizations.yml index fee586714..d637932ef 100644 --- a/test/fixtures/university/organizations.yml +++ b/test/fixtures/university/organizations.yml @@ -14,7 +14,7 @@ # name :string # phone :string # sirene :string -# website :string +# url :string # zipcode :string # created_at :datetime not null # updated_at :datetime not null diff --git a/test/models/university/organization_test.rb b/test/models/university/organization_test.rb index 1616f324c..cb84a2504 100644 --- a/test/models/university/organization_test.rb +++ b/test/models/university/organization_test.rb @@ -14,7 +14,7 @@ # name :string # phone :string # sirene :string -# website :string +# url :string # zipcode :string # created_at :datetime not null # updated_at :datetime not null -- GitLab