From 3918484a84aac9b7e8f381ea593bc3be12dc906b Mon Sep 17 00:00:00 2001 From: Bilal Date: Thu, 9 Jul 2020 19:54:48 +0200 Subject: [PATCH 01/13] TMP commit --- app/jobs/generate_contracts_zip_job.rb | 23 +++++++- app/models/acquired_media_release.rb | 1 + app/models/concerns/csv_exportable.rb | 77 ++++++++++++++++++++++++++ config/locales/en.yml | 3 + config/locales/es.yml | 16 ++++++ 5 files changed, 118 insertions(+), 2 deletions(-) create mode 100644 app/models/concerns/csv_exportable.rb diff --git a/app/jobs/generate_contracts_zip_job.rb b/app/jobs/generate_contracts_zip_job.rb index 865a5ea..66107a3 100644 --- a/app/jobs/generate_contracts_zip_job.rb +++ b/app/jobs/generate_contracts_zip_job.rb @@ -6,8 +6,8 @@ class GenerateContractsZipJob < ApplicationJob before_perform do |job| @project = job.arguments.first @download = job.arguments.second - release_type = job.arguments.third - @folder_name = "#{@project.name.parameterize}_#{get_release_name(release_type).gsub('_', '-')}" + @release_type = job.arguments.third + @folder_name = "#{@project.name.parameterize}_#{get_release_name(@release_type).gsub('_', '-')}" @download.update!(name: @folder_name, status: :pending) end @@ -20,6 +20,10 @@ class GenerateContractsZipJob < ApplicationJob files.each do |attachment| zipfile.add(attachment, File.join("#{dir}/", attachment)) end + + csv_file = generate_csv releases + puts ">>>>> GENERATED =====" + zipfile.get_output_stream("#{@folder_name}.csv") { |f| f.puts(csv_file) } end @download.file.attach(io: File.open(zipfile_name), filename: "#{@folder_name}.zip") @@ -43,6 +47,21 @@ class GenerateContractsZipJob < ApplicationJob private + def generate_csv(releases) + puts "==== 1 =====" + release_class = Object.const_get @release_type + puts "==== 2 =====" + headers = release_class.csv_headers + + CSV.generate(headers: true) do |csv| + csv << headers + releases.each do |release| + csv_row_data = release.to_csv_row + csv << csv_row_data + end + end + end + def get_release_name(release_type) release_type.constantize.model_name.plural end diff --git a/app/models/acquired_media_release.rb b/app/models/acquired_media_release.rb index 6a12d35..46e3881 100644 --- a/app/models/acquired_media_release.rb +++ b/app/models/acquired_media_release.rb @@ -9,6 +9,7 @@ class AcquiredMediaRelease < ApplicationRecord include Signable include Syncable include PersonName + include CsvExportable has_many :file_infos, as: :releasable, dependent: :destroy diff --git a/app/models/concerns/csv_exportable.rb b/app/models/concerns/csv_exportable.rb new file mode 100644 index 0000000..c8cc664 --- /dev/null +++ b/app/models/concerns/csv_exportable.rb @@ -0,0 +1,77 @@ +# frozen_string_literal: true + +module CsvExportable + extend ActiveSupport::Concern + + COMMON_HEADERS = %i[notes tags signed_at].freeze + COMMON_VALUES = %w[clean_notes clean_tags signed_on].freeze + + ACQUIRED_MEDIA_HEADERS = %i[name file_infos_count].freeze + COMMON_HEADERS + ACQUIRED_MEDIA_VALUES = %w[name file_count].freeze + COMMON_VALUES + + APPEARANCE_HEADERS = %i[name contact_info].freeze + COMMON_HEADERS + APPEARANCE_VALUES = %w[name contact_info].freeze + COMMON_VALUES + + HEADERS = { + acquired_media_release: ACQUIRED_MEDIA_HEADERS, + appearance_release: APPEARANCE_HEADERS + }.freeze + + VALUES = { + acquired_media_release: ACQUIRED_MEDIA_VALUES, + appearance_release: APPEARANCE_VALUES + }.freeze + + included do + class << self + def csv_headers + puts "HEADERS ====" + plural_class_name = self.name.underscore.pluralize + headers = HEADERS[self.name.underscore.to_sym] + + headers.map do |header| + I18n.t("#{plural_class_name}.index.table_headers.#{header}") + end + end + end + + def to_csv_row + puts "==== = CSV ROW" + v = VALUES[self.class.name.underscore.to_sym].map do |function| + send(function) + end + puts v + v + end + + private + + def file_count + self.file_infos.any? ? self.file_infos.size : I18n.t('acquired_media_releases.acquired_media_release.no_media') + end + + def contact_info + contact_info = '' + contact_info += "#{person_address}; " if person_address.present? + contact_info += "#{person_phone}; " if person_phone.present? + contact_info += "#{person_email}" if person_email.present? + contact_info.delete_suffix '; ' + end + + def clean_notes + notes = '' + self.notes.order_by_recent.each do |note| + notes += "#{note.content}(#{note.email}), " + end + notes.delete_suffix ', ' + end + + def clean_tags + tags = '' + self.tags.each do |tag| + tags += "#{tag.name}, " + end + tags.delete_suffix ', ' + end + end +end diff --git a/config/locales/en.yml b/config/locales/en.yml index 4fd633d..235da08 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -49,6 +49,7 @@ en: search: Search empty: Acquired Media Releases will appear here table_headers: + name: Name file_infos_count: No. Files notes: Notes signed_at: Date Signed @@ -151,6 +152,8 @@ en: empty: Appearance Releases will appear here imported_appearance_release_missing_attachment: Person photo or contract missing for imported appearance release table_headers: + name: Name + contact_info: Contact info notes: Notes signed_at: Date Signed tags: Tags diff --git a/config/locales/es.yml b/config/locales/es.yml index 10d3be8..f707cbd 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -41,6 +41,12 @@ es: heading: Person Photo (ES) index: imported_appearance_release_missing_attachment: Person photo or contract missing for imported appearance release (ES) + table_headers: + name: "" + contact_info: "" + tags: "" + notes: "" + signed_at: "" shared: imported_appearance_release_contract_name: Contrato Importado imported_appearance_release_headshot_name: Retrato Importado @@ -464,3 +470,13 @@ es: production_elements_logs: Production Elements Logs, and more (ES) reduces_labor_cost: Reduces labor costs (ES) simplifies_cue_sheets: Simplifies Music Cue Sheets, Graphic Cue Sheets (ES) + acquired_media_releases: + index: + table_headers: + name: Name (ES) + file_infos_count: No. Files (ES) + notes: Notes (ES) + signed_at: Date Signed (ES) + tags: Tags (ES) + acquired_media_release: + no_media: No Media (ES) -- 2.47.3 From a1abd70ae9e3e6c7d064f04fbcceb7208a7a9d99 Mon Sep 17 00:00:00 2001 From: Bilal Date: Thu, 9 Jul 2020 20:06:05 +0200 Subject: [PATCH 02/13] TMP commit --- app/jobs/generate_contracts_zip_job.rb | 2 -- app/models/appearance_release.rb | 1 + 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/app/jobs/generate_contracts_zip_job.rb b/app/jobs/generate_contracts_zip_job.rb index 66107a3..c21954a 100644 --- a/app/jobs/generate_contracts_zip_job.rb +++ b/app/jobs/generate_contracts_zip_job.rb @@ -48,9 +48,7 @@ class GenerateContractsZipJob < ApplicationJob private def generate_csv(releases) - puts "==== 1 =====" release_class = Object.const_get @release_type - puts "==== 2 =====" headers = release_class.csv_headers CSV.generate(headers: true) do |csv| diff --git a/app/models/appearance_release.rb b/app/models/appearance_release.rb index 9a750a7..18f6a61 100644 --- a/app/models/appearance_release.rb +++ b/app/models/appearance_release.rb @@ -15,6 +15,7 @@ class AppearanceRelease < ApplicationRecord include SecondGuardianPhotoable include GuardianName include SecondGuardianName + include CsvExportable has_one_attached :person_photo -- 2.47.3 From 5ed930108dbc59e718f204fa196cb1db653f7b67 Mon Sep 17 00:00:00 2001 From: Bilal Date: Thu, 9 Jul 2020 20:11:57 +0200 Subject: [PATCH 03/13] TMP commit --- app/jobs/generate_contracts_zip_job.rb | 7 ++++--- app/models/concerns/csv_exportable.rb | 6 +----- app/models/location_release.rb | 1 + 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/app/jobs/generate_contracts_zip_job.rb b/app/jobs/generate_contracts_zip_job.rb index c21954a..f1b4137 100644 --- a/app/jobs/generate_contracts_zip_job.rb +++ b/app/jobs/generate_contracts_zip_job.rb @@ -21,9 +21,10 @@ class GenerateContractsZipJob < ApplicationJob zipfile.add(attachment, File.join("#{dir}/", attachment)) end - csv_file = generate_csv releases - puts ">>>>> GENERATED =====" - zipfile.get_output_stream("#{@folder_name}.csv") { |f| f.puts(csv_file) } + if Object.const_get(@release_type).include?(CsvExportable) + csv_file = generate_csv releases + zipfile.get_output_stream("#{@folder_name}.csv") { |f| f.puts(csv_file) } + end end @download.file.attach(io: File.open(zipfile_name), filename: "#{@folder_name}.zip") diff --git a/app/models/concerns/csv_exportable.rb b/app/models/concerns/csv_exportable.rb index c8cc664..df2ac33 100644 --- a/app/models/concerns/csv_exportable.rb +++ b/app/models/concerns/csv_exportable.rb @@ -25,7 +25,6 @@ module CsvExportable included do class << self def csv_headers - puts "HEADERS ====" plural_class_name = self.name.underscore.pluralize headers = HEADERS[self.name.underscore.to_sym] @@ -36,12 +35,9 @@ module CsvExportable end def to_csv_row - puts "==== = CSV ROW" - v = VALUES[self.class.name.underscore.to_sym].map do |function| + VALUES[self.class.name.underscore.to_sym].map do |function| send(function) end - puts v - v end private diff --git a/app/models/location_release.rb b/app/models/location_release.rb index a5b6a02..389d0c7 100644 --- a/app/models/location_release.rb +++ b/app/models/location_release.rb @@ -10,6 +10,7 @@ class LocationRelease < ApplicationRecord include Syncable include Taggable include PersonName + include CsvExportable composed_of :address, mapping: [ -- 2.47.3 From bb8e5c9b7350cca8cc6bc0d639ba90a509aa266c Mon Sep 17 00:00:00 2001 From: Bilal Date: Thu, 9 Jul 2020 20:17:48 +0200 Subject: [PATCH 04/13] TMP commit --- app/models/concerns/csv_exportable.rb | 13 ++++++++++--- config/locales/en.yml | 1 + config/locales/es.yml | 6 ++++++ 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/app/models/concerns/csv_exportable.rb b/app/models/concerns/csv_exportable.rb index df2ac33..734e230 100644 --- a/app/models/concerns/csv_exportable.rb +++ b/app/models/concerns/csv_exportable.rb @@ -12,14 +12,19 @@ module CsvExportable APPEARANCE_HEADERS = %i[name contact_info].freeze + COMMON_HEADERS APPEARANCE_VALUES = %w[name contact_info].freeze + COMMON_VALUES + LOCATION_HEADERS = %i[name address].freeze + COMMON_HEADERS + LOCATION_VALUES = %w[name address].freeze + COMMON_VALUES + HEADERS = { acquired_media_release: ACQUIRED_MEDIA_HEADERS, - appearance_release: APPEARANCE_HEADERS + appearance_release: APPEARANCE_HEADERS, + location_release: LOCATION_HEADERS }.freeze VALUES = { acquired_media_release: ACQUIRED_MEDIA_VALUES, - appearance_release: APPEARANCE_VALUES + appearance_release: APPEARANCE_VALUES, + location_release: LOCATION_VALUES }.freeze included do @@ -35,9 +40,11 @@ module CsvExportable end def to_csv_row - VALUES[self.class.name.underscore.to_sym].map do |function| + v = VALUES[self.class.name.underscore.to_sym].map do |function| send(function) end + puts v + v end private diff --git a/config/locales/en.yml b/config/locales/en.yml index 235da08..9a75c3b 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -744,6 +744,7 @@ en: search: Search empty: Location Releases will appear here table_headers: + name: Name address: Address notes: Notes signed_at: Date Signed diff --git a/config/locales/es.yml b/config/locales/es.yml index f707cbd..2c03263 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -302,6 +302,12 @@ es: form: photos: dropzone_label: Tap to take a photo of the Property (optional) (ES) + index: + table_headers: + address: Address (ES) + notes: Notes (ES) + tags: Tags (ES) + signed_at: Date Signed (ES) material_releases: form: photos: -- 2.47.3 From 20207616499597e6d7b64c64dd34f6578509160e Mon Sep 17 00:00:00 2001 From: Bilal Date: Thu, 9 Jul 2020 20:34:37 +0200 Subject: [PATCH 05/13] TMP commit --- app/models/concerns/csv_exportable.rb | 18 +++++++++++++----- app/models/material_release.rb | 1 + app/models/medical_release.rb | 1 + config/locales/en.yml | 3 +++ config/locales/es.yml | 11 +++++++++++ 5 files changed, 29 insertions(+), 5 deletions(-) diff --git a/app/models/concerns/csv_exportable.rb b/app/models/concerns/csv_exportable.rb index 734e230..6ba3183 100644 --- a/app/models/concerns/csv_exportable.rb +++ b/app/models/concerns/csv_exportable.rb @@ -15,16 +15,26 @@ module CsvExportable LOCATION_HEADERS = %i[name address].freeze + COMMON_HEADERS LOCATION_VALUES = %w[name address].freeze + COMMON_VALUES + MATERIAL_HEADERS = %i[name].freeze + COMMON_HEADERS + MATERIAL_VALUES = %w[name].freeze + COMMON_VALUES + + MEDICAL_HEADERS = %i[approved name contact_info].freeze + COMMON_HEADERS + MEDICAL_VALUES = %w[approved? name contact_info].freeze + COMMON_VALUES + HEADERS = { acquired_media_release: ACQUIRED_MEDIA_HEADERS, appearance_release: APPEARANCE_HEADERS, - location_release: LOCATION_HEADERS + location_release: LOCATION_HEADERS, + material_release: MATERIAL_HEADERS, + medical_release: MEDICAL_HEADERS }.freeze VALUES = { acquired_media_release: ACQUIRED_MEDIA_VALUES, appearance_release: APPEARANCE_VALUES, - location_release: LOCATION_VALUES + location_release: LOCATION_VALUES, + material_release: MATERIAL_VALUES, + medical_release: MEDICAL_VALUES }.freeze included do @@ -40,11 +50,9 @@ module CsvExportable end def to_csv_row - v = VALUES[self.class.name.underscore.to_sym].map do |function| + VALUES[self.class.name.underscore.to_sym].map do |function| send(function) end - puts v - v end private diff --git a/app/models/material_release.rb b/app/models/material_release.rb index 56d45ee..9c9044d 100644 --- a/app/models/material_release.rb +++ b/app/models/material_release.rb @@ -10,6 +10,7 @@ class MaterialRelease < ApplicationRecord include Syncable include Taggable include PersonName + include CsvExportable composed_of :person_address, class_name: "Address", diff --git a/app/models/medical_release.rb b/app/models/medical_release.rb index 996bfc5..f160903 100644 --- a/app/models/medical_release.rb +++ b/app/models/medical_release.rb @@ -11,6 +11,7 @@ class MedicalRelease < ApplicationRecord include SecondGuardianPhotoable include GuardianName include SecondGuardianName + include CsvExportable NUMBER_OF_CUSTOM_FIELDS = 15 diff --git a/config/locales/en.yml b/config/locales/en.yml index 9a75c3b..75c8e68 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -780,6 +780,7 @@ en: search: Search empty: Material Releases will appear here table_headers: + name: Name notes: Notes signed_at: Date Signed tags: Tags @@ -802,6 +803,8 @@ en: empty: Medical releases will appear here table_headers: approved: Approved + name: Person name + contact_info: Contact info notes: Notes signed_at: Date Signed tags: Tags diff --git a/config/locales/es.yml b/config/locales/es.yml index 2c03263..7d0444d 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -312,12 +312,23 @@ es: form: photos: dropzone_label: Tap to take a photo of Licensed Material (optional) (ES) + index: + table_headers: + name: Name (ES) + notes: Notes (ES) + tags: Tags (ES) + signed_at: Date Signed (ES) medical_releases: custom_validation_errors: question_answer_is_required: answer is required (ES) index: table_headers: approved: Approved (ES) + name: Person name (ES) + contact_info: Contact info (ES) + notes: Notes (ES) + tags: Tags (ES) + signed_at: Date Signed (ES) medical_release: actions: review: Review (ES) -- 2.47.3 From 578403bb5c51f21f4611931d894239b6044b9be6 Mon Sep 17 00:00:00 2001 From: Bilal Date: Thu, 9 Jul 2020 20:43:05 +0200 Subject: [PATCH 06/13] TMP commit --- app/models/concerns/csv_exportable.rb | 17 ++++++++--------- app/models/misc_release.rb | 1 + config/locales/en.yml | 2 ++ config/locales/es.yml | 8 ++++++++ 4 files changed, 19 insertions(+), 9 deletions(-) diff --git a/app/models/concerns/csv_exportable.rb b/app/models/concerns/csv_exportable.rb index 6ba3183..99ccdf2 100644 --- a/app/models/concerns/csv_exportable.rb +++ b/app/models/concerns/csv_exportable.rb @@ -6,9 +6,6 @@ module CsvExportable COMMON_HEADERS = %i[notes tags signed_at].freeze COMMON_VALUES = %w[clean_notes clean_tags signed_on].freeze - ACQUIRED_MEDIA_HEADERS = %i[name file_infos_count].freeze + COMMON_HEADERS - ACQUIRED_MEDIA_VALUES = %w[name file_count].freeze + COMMON_VALUES - APPEARANCE_HEADERS = %i[name contact_info].freeze + COMMON_HEADERS APPEARANCE_VALUES = %w[name contact_info].freeze + COMMON_VALUES @@ -22,19 +19,21 @@ module CsvExportable MEDICAL_VALUES = %w[approved? name contact_info].freeze + COMMON_VALUES HEADERS = { - acquired_media_release: ACQUIRED_MEDIA_HEADERS, + acquired_media_release: %i[name file_infos_count] + COMMON_HEADERS, appearance_release: APPEARANCE_HEADERS, location_release: LOCATION_HEADERS, material_release: MATERIAL_HEADERS, - medical_release: MEDICAL_HEADERS + medical_release: MEDICAL_HEADERS, + misc_release: %i[name contact_info] + COMMON_HEADERS }.freeze VALUES = { - acquired_media_release: ACQUIRED_MEDIA_VALUES, + acquired_media_release: %w[name file_count] + COMMON_VALUES, appearance_release: APPEARANCE_VALUES, location_release: LOCATION_VALUES, material_release: MATERIAL_VALUES, - medical_release: MEDICAL_VALUES + medical_release: MEDICAL_VALUES, + misc_release: %w[name contact_info] + COMMON_VALUES }.freeze included do @@ -64,8 +63,8 @@ module CsvExportable def contact_info contact_info = '' contact_info += "#{person_address}; " if person_address.present? - contact_info += "#{person_phone}; " if person_phone.present? - contact_info += "#{person_email}" if person_email.present? + contact_info += "P: #{person_phone}; " if person_phone.present? + contact_info += "E: #{person_email}" if person_email.present? contact_info.delete_suffix '; ' end diff --git a/app/models/misc_release.rb b/app/models/misc_release.rb index f9437dd..2142510 100644 --- a/app/models/misc_release.rb +++ b/app/models/misc_release.rb @@ -9,6 +9,7 @@ class MiscRelease < ApplicationRecord include PersonName include GuardianName include GuardianPhotoable + include CsvExportable NUMBER_OF_CUSTOM_FIELDS = 15 diff --git a/config/locales/en.yml b/config/locales/en.yml index 75c8e68..e65c006 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -822,6 +822,8 @@ en: search: Search empty: Misc Releases will appear here table_headers: + name: Person name + contact_info: Contact info notes: Notes signed_at: Date Signed tags: Tags diff --git a/config/locales/es.yml b/config/locales/es.yml index 7d0444d..135d506 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -497,3 +497,11 @@ es: tags: Tags (ES) acquired_media_release: no_media: No Media (ES) + misc_releases: + index: + table_headers: + name: Person name (ES) + contact_info: Contact info (ES) + notes: Notes (ES) + signed_at: Date Signed (ES) + tags: Tags (ES) -- 2.47.3 From d585d3cad389336e969c7c355052c8706a572f91 Mon Sep 17 00:00:00 2001 From: Bilal Date: Thu, 9 Jul 2020 20:52:41 +0200 Subject: [PATCH 07/13] TMP commit --- app/models/concerns/csv_exportable.rb | 18 ++++++++++++++++-- app/models/music_release.rb | 1 + config/locales/en.yml | 1 + config/locales/es.yml | 10 ++++++++++ 4 files changed, 28 insertions(+), 2 deletions(-) diff --git a/app/models/concerns/csv_exportable.rb b/app/models/concerns/csv_exportable.rb index 99ccdf2..ae8dac4 100644 --- a/app/models/concerns/csv_exportable.rb +++ b/app/models/concerns/csv_exportable.rb @@ -24,7 +24,8 @@ module CsvExportable location_release: LOCATION_HEADERS, material_release: MATERIAL_HEADERS, medical_release: MEDICAL_HEADERS, - misc_release: %i[name contact_info] + COMMON_HEADERS + misc_release: %i[name contact_info] + COMMON_HEADERS, + music_release: %i[name file_infos_count composers_count publishers_count] + COMMON_HEADERS }.freeze VALUES = { @@ -33,7 +34,8 @@ module CsvExportable location_release: LOCATION_VALUES, material_release: MATERIAL_VALUES, medical_release: MEDICAL_VALUES, - misc_release: %w[name contact_info] + COMMON_VALUES + misc_release: %w[name contact_info] + COMMON_VALUES, + music_release: %w[name music_file_count music_composers_count music_publishers_count] + COMMON_VALUES }.freeze included do @@ -60,6 +62,18 @@ module CsvExportable self.file_infos.any? ? self.file_infos.size : I18n.t('acquired_media_releases.acquired_media_release.no_media') end + def music_file_count + file_infos.size + end + + def music_composers_count + composers.size + end + + def music_publishers_count + publishers.size + end + def contact_info contact_info = '' contact_info += "#{person_address}; " if person_address.present? diff --git a/app/models/music_release.rb b/app/models/music_release.rb index 29fd426..a422436 100644 --- a/app/models/music_release.rb +++ b/app/models/music_release.rb @@ -7,6 +7,7 @@ class MusicRelease < ApplicationRecord include Searchable include Taggable include PersonName + include CsvExportable has_many :file_infos, as: :releasable, dependent: :destroy has_many :composers, dependent: :destroy diff --git a/config/locales/en.yml b/config/locales/en.yml index e65c006..948add8 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -856,6 +856,7 @@ en: search: Search empty: Music Releases will appear here table_headers: + name: Name composers_count: No. Composers file_infos_count: No. Files notes: Notes diff --git a/config/locales/es.yml b/config/locales/es.yml index 135d506..d2af559 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -505,3 +505,13 @@ es: notes: Notes (ES) signed_at: Date Signed (ES) tags: Tags (ES) + music_releases: + index: + table_headers: + name: Name (ES) + composers_count: No. Composers (ES) + file_infos_count: No. Files (ES) + notes: Notes (ES) + publishers_count: No. Publishers (ES) + signed_at: Date Signed (ES) + tags: Tags (ES) -- 2.47.3 From 33bcb6600a9a4aa19ed0824b2a71189c8d1e7b85 Mon Sep 17 00:00:00 2001 From: Bilal Date: Thu, 9 Jul 2020 20:56:17 +0200 Subject: [PATCH 08/13] TMP commit --- app/models/concerns/csv_exportable.rb | 6 ++++-- app/models/talent_release.rb | 1 + config/locales/en.yml | 3 +++ config/locales/es.yml | 8 ++++++++ 4 files changed, 16 insertions(+), 2 deletions(-) diff --git a/app/models/concerns/csv_exportable.rb b/app/models/concerns/csv_exportable.rb index ae8dac4..e3ef777 100644 --- a/app/models/concerns/csv_exportable.rb +++ b/app/models/concerns/csv_exportable.rb @@ -25,7 +25,8 @@ module CsvExportable material_release: MATERIAL_HEADERS, medical_release: MEDICAL_HEADERS, misc_release: %i[name contact_info] + COMMON_HEADERS, - music_release: %i[name file_infos_count composers_count publishers_count] + COMMON_HEADERS + music_release: %i[name file_infos_count composers_count publishers_count] + COMMON_HEADERS, + talent_release: %i[name phone email] + COMMON_HEADERS }.freeze VALUES = { @@ -35,7 +36,8 @@ module CsvExportable material_release: MATERIAL_VALUES, medical_release: MEDICAL_VALUES, misc_release: %w[name contact_info] + COMMON_VALUES, - music_release: %w[name music_file_count music_composers_count music_publishers_count] + COMMON_VALUES + music_release: %w[name music_file_count music_composers_count music_publishers_count] + COMMON_VALUES, + talent_release: %w[name person_phone person_email] + COMMON_VALUES }.freeze included do diff --git a/app/models/talent_release.rb b/app/models/talent_release.rb index 8ca4dbe..1c2be4c 100644 --- a/app/models/talent_release.rb +++ b/app/models/talent_release.rb @@ -14,6 +14,7 @@ class TalentRelease < ApplicationRecord include SecondGuardianPhotoable include GuardianName include SecondGuardianName + include CsvExportable composed_of :person_address, class_name: "Address", diff --git a/config/locales/en.yml b/config/locales/en.yml index 948add8..4c1399a 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1255,6 +1255,9 @@ en: search: Search empty: Talent Releases will appear here table_headers: + name: Name + phone: Phone + email: Email notes: Notes signed_at: Date Signed tags: Tags diff --git a/config/locales/es.yml b/config/locales/es.yml index d2af559..b3b4886 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -438,6 +438,14 @@ es: heading: Second Guardian Photo (ES) guardian_photo: heading: Guardian Photo (ES) + index: + table_headers: + name: Name (ES) + phone: Phone (ES) + email: Email (ES) + notes: Notes (ES) + signed_at: Date Signed (ES) + tags: Tags (ES) task_requests: create: success_message: Your task request was successfully submitted. Thank you. A chat window will pop up on the lower right in a few seconds. (ES) -- 2.47.3 From fcb6e093c3075e37e3eb6f73a554d84b0027a293 Mon Sep 17 00:00:00 2001 From: Bilal Date: Thu, 9 Jul 2020 20:56:51 +0200 Subject: [PATCH 09/13] sort translations --- config/locales/en.yml | 16 +++++----- config/locales/es.yml | 72 +++++++++++++++++++++---------------------- 2 files changed, 44 insertions(+), 44 deletions(-) diff --git a/config/locales/en.yml b/config/locales/en.yml index 4c1399a..6dfb129 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -49,8 +49,8 @@ en: search: Search empty: Acquired Media Releases will appear here table_headers: - name: Name file_infos_count: No. Files + name: Name notes: Notes signed_at: Date Signed tags: Tags @@ -152,8 +152,8 @@ en: empty: Appearance Releases will appear here imported_appearance_release_missing_attachment: Person photo or contract missing for imported appearance release table_headers: - name: Name contact_info: Contact info + name: Name notes: Notes signed_at: Date Signed tags: Tags @@ -744,8 +744,8 @@ en: search: Search empty: Location Releases will appear here table_headers: - name: Name address: Address + name: Name notes: Notes signed_at: Date Signed tags: Tags @@ -803,8 +803,8 @@ en: empty: Medical releases will appear here table_headers: approved: Approved - name: Person name contact_info: Contact info + name: Person name notes: Notes signed_at: Date Signed tags: Tags @@ -822,8 +822,8 @@ en: search: Search empty: Misc Releases will appear here table_headers: - name: Person name contact_info: Contact info + name: Person name notes: Notes signed_at: Date Signed tags: Tags @@ -856,9 +856,9 @@ en: search: Search empty: Music Releases will appear here table_headers: - name: Name composers_count: No. Composers file_infos_count: No. Files + name: Name notes: Notes publishers_count: No. Publishers signed_at: Date Signed @@ -1255,10 +1255,10 @@ en: search: Search empty: Talent Releases will appear here table_headers: - name: Name - phone: Phone email: Email + name: Name notes: Notes + phone: Phone signed_at: Date Signed tags: Tags new: diff --git a/config/locales/es.yml b/config/locales/es.yml index b3b4886..7857263 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -1,4 +1,14 @@ es: + acquired_media_releases: + acquired_media_release: + no_media: No Media (ES) + index: + table_headers: + file_infos_count: No. Files (ES) + name: Name (ES) + notes: Notes (ES) + signed_at: Date Signed (ES) + tags: Tags (ES) activerecord: attributes: appearance_release: @@ -42,11 +52,11 @@ es: index: imported_appearance_release_missing_attachment: Person photo or contract missing for imported appearance release (ES) table_headers: - name: "" contact_info: "" - tags: "" + name: "" notes: "" signed_at: "" + tags: "" shared: imported_appearance_release_contract_name: Contrato Importado imported_appearance_release_headshot_name: Retrato Importado @@ -306,8 +316,8 @@ es: table_headers: address: Address (ES) notes: Notes (ES) - tags: Tags (ES) signed_at: Date Signed (ES) + tags: Tags (ES) material_releases: form: photos: @@ -316,24 +326,42 @@ es: table_headers: name: Name (ES) notes: Notes (ES) - tags: Tags (ES) signed_at: Date Signed (ES) + tags: Tags (ES) medical_releases: custom_validation_errors: question_answer_is_required: answer is required (ES) index: table_headers: approved: Approved (ES) - name: Person name (ES) contact_info: Contact info (ES) + name: Person name (ES) notes: Notes (ES) - tags: Tags (ES) signed_at: Date Signed (ES) + tags: Tags (ES) medical_release: actions: review: Review (ES) messages: approved_tooltip: "" + misc_releases: + index: + table_headers: + contact_info: Contact info (ES) + name: Person name (ES) + notes: Notes (ES) + signed_at: Date Signed (ES) + tags: Tags (ES) + music_releases: + index: + table_headers: + composers_count: No. Composers (ES) + file_infos_count: No. Files (ES) + name: Name (ES) + notes: Notes (ES) + publishers_count: No. Publishers (ES) + signed_at: Date Signed (ES) + tags: Tags (ES) public: appearance_releases: create: @@ -440,10 +468,10 @@ es: heading: Guardian Photo (ES) index: table_headers: - name: Name (ES) - phone: Phone (ES) email: Email (ES) + name: Name (ES) notes: Notes (ES) + phone: Phone (ES) signed_at: Date Signed (ES) tags: Tags (ES) task_requests: @@ -495,31 +523,3 @@ es: production_elements_logs: Production Elements Logs, and more (ES) reduces_labor_cost: Reduces labor costs (ES) simplifies_cue_sheets: Simplifies Music Cue Sheets, Graphic Cue Sheets (ES) - acquired_media_releases: - index: - table_headers: - name: Name (ES) - file_infos_count: No. Files (ES) - notes: Notes (ES) - signed_at: Date Signed (ES) - tags: Tags (ES) - acquired_media_release: - no_media: No Media (ES) - misc_releases: - index: - table_headers: - name: Person name (ES) - contact_info: Contact info (ES) - notes: Notes (ES) - signed_at: Date Signed (ES) - tags: Tags (ES) - music_releases: - index: - table_headers: - name: Name (ES) - composers_count: No. Composers (ES) - file_infos_count: No. Files (ES) - notes: Notes (ES) - publishers_count: No. Publishers (ES) - signed_at: Date Signed (ES) - tags: Tags (ES) -- 2.47.3 From 8538613a830058a513a54f4e7cf39fed3be40e11 Mon Sep 17 00:00:00 2001 From: Bilal Date: Thu, 9 Jul 2020 20:59:29 +0200 Subject: [PATCH 10/13] sort translations --- app/models/concerns/csv_exportable.rb | 28 ++++++++------------------- 1 file changed, 8 insertions(+), 20 deletions(-) diff --git a/app/models/concerns/csv_exportable.rb b/app/models/concerns/csv_exportable.rb index e3ef777..207096f 100644 --- a/app/models/concerns/csv_exportable.rb +++ b/app/models/concerns/csv_exportable.rb @@ -6,24 +6,12 @@ module CsvExportable COMMON_HEADERS = %i[notes tags signed_at].freeze COMMON_VALUES = %w[clean_notes clean_tags signed_on].freeze - APPEARANCE_HEADERS = %i[name contact_info].freeze + COMMON_HEADERS - APPEARANCE_VALUES = %w[name contact_info].freeze + COMMON_VALUES - - LOCATION_HEADERS = %i[name address].freeze + COMMON_HEADERS - LOCATION_VALUES = %w[name address].freeze + COMMON_VALUES - - MATERIAL_HEADERS = %i[name].freeze + COMMON_HEADERS - MATERIAL_VALUES = %w[name].freeze + COMMON_VALUES - - MEDICAL_HEADERS = %i[approved name contact_info].freeze + COMMON_HEADERS - MEDICAL_VALUES = %w[approved? name contact_info].freeze + COMMON_VALUES - HEADERS = { acquired_media_release: %i[name file_infos_count] + COMMON_HEADERS, - appearance_release: APPEARANCE_HEADERS, - location_release: LOCATION_HEADERS, - material_release: MATERIAL_HEADERS, - medical_release: MEDICAL_HEADERS, + appearance_release: %i[name contact_info] + COMMON_HEADERS, + location_release: %i[name address] + COMMON_HEADERS, + material_release: %i[name] + COMMON_HEADERS, + medical_release: %i[approved name contact_info] + COMMON_HEADERS, misc_release: %i[name contact_info] + COMMON_HEADERS, music_release: %i[name file_infos_count composers_count publishers_count] + COMMON_HEADERS, talent_release: %i[name phone email] + COMMON_HEADERS @@ -31,10 +19,10 @@ module CsvExportable VALUES = { acquired_media_release: %w[name file_count] + COMMON_VALUES, - appearance_release: APPEARANCE_VALUES, - location_release: LOCATION_VALUES, - material_release: MATERIAL_VALUES, - medical_release: MEDICAL_VALUES, + appearance_release: %w[name contact_info] + COMMON_VALUES, + location_release: %w[name address] + COMMON_VALUES, + material_release: %w[name] + COMMON_VALUES, + medical_release: %w[approved? name contact_info] + COMMON_VALUES, misc_release: %w[name contact_info] + COMMON_VALUES, music_release: %w[name music_file_count music_composers_count music_publishers_count] + COMMON_VALUES, talent_release: %w[name person_phone person_email] + COMMON_VALUES -- 2.47.3 From ebc13242de0838bbb7efcad760212aa7fbdd7f8c Mon Sep 17 00:00:00 2001 From: Bilal Date: Thu, 9 Jul 2020 23:12:37 +0200 Subject: [PATCH 11/13] add spec --- spec/jobs/generate_contracts_zip_job_spec.rb | 39 ++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/spec/jobs/generate_contracts_zip_job_spec.rb b/spec/jobs/generate_contracts_zip_job_spec.rb index a438ae4..c77062f 100644 --- a/spec/jobs/generate_contracts_zip_job_spec.rb +++ b/spec/jobs/generate_contracts_zip_job_spec.rb @@ -35,6 +35,32 @@ describe GenerateContractsZipJob do expect(download.file).to be_attached end + it "generates ZIP containing CSV file with all releases data for all release types" do + release_types = %w[AcquiredMediaRelease AppearanceRelease LocationRelease MaterialRelease MedicalRelease MiscRelease MusicRelease TalentRelease] + create_releases_for_all_types + + release_types.each do |type| + lowercase_plural = type.constantize.model_name.plural + GenerateContractsZipJob.perform_now(project, download, type, project.public_send(lowercase_plural).ids) + + generated_zip = download.file.blob.download + csv_file_name = "#{project.name.parameterize}_#{lowercase_plural.gsub('_', '-')}.csv" + Zip::InputStream.open(StringIO.new(generated_zip)) do |io| + while entry = io.get_next_entry + if entry.name == csv_file_name + csv_file = entry.get_input_stream.read + release_class = Object.const_get @release_type + headers = release_class.csv_headers + puts headers + end + end + end + end + + + + end + context "When there are errors" do let(:error) { StandardError.new("Contracts or contract templates not found.") } @@ -58,4 +84,17 @@ describe GenerateContractsZipJob do path = Rails.root.join("spec", "fixtures", "files") File.delete("#{path}/my-video-project_appearance-releases.zip") if File.exists? "#{path}/my-video-project_appearance-releases.zip" end + + private + + def create_releases_for_all_types + create(:acquired_media_release_with_contract_template, :native, project: project) + create(:appearance_release_with_contract_template, :native, project: project, person_name: "John Doe") + create(:location_release_with_contract_template, :native, project: project) + create(:material_release_with_contract_template, :native, project: project) + create(:medical_release_with_contract_template, :native, project: project) + create(:misc_release_with_contract_template, :native, project: project) + create(:music_release_with_contract_template, project: project) + create(:talent_release_with_contract_template, :native, project: project) + end end -- 2.47.3 From e0cf5ba87535ba8f328645b558b72c40665a3f39 Mon Sep 17 00:00:00 2001 From: Bilal Date: Thu, 9 Jul 2020 23:25:21 +0200 Subject: [PATCH 12/13] add spec --- spec/jobs/generate_contracts_zip_job_spec.rb | 29 ++++++++++++++------ 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/spec/jobs/generate_contracts_zip_job_spec.rb b/spec/jobs/generate_contracts_zip_job_spec.rb index c77062f..69ef18c 100644 --- a/spec/jobs/generate_contracts_zip_job_spec.rb +++ b/spec/jobs/generate_contracts_zip_job_spec.rb @@ -11,7 +11,7 @@ describe GenerateContractsZipJob do dir = Rails.root.join("spec", "fixtures", "files") files = ["contract.pdf", "AppearanceRelease.pdf"] # Attachments in the test environment do not persist to cloud storage - # Therefore we want to stub calls to `open` with a cloud storage URL + # Therefore we want to stub calls to `open` with a cloud storage URL allow_any_instance_of(ReleaseContractCollectionService).to receive(:open).and_return(StringIO.new("file data")) allow_any_instance_of(ReleaseContractCollectionService).to receive(:build).and_yield(dir, files) end @@ -47,13 +47,22 @@ describe GenerateContractsZipJob do csv_file_name = "#{project.name.parameterize}_#{lowercase_plural.gsub('_', '-')}.csv" Zip::InputStream.open(StringIO.new(generated_zip)) do |io| while entry = io.get_next_entry - if entry.name == csv_file_name - csv_file = entry.get_input_stream.read - release_class = Object.const_get @release_type - headers = release_class.csv_headers - puts headers + next unless entry.name == csv_file_name + + csv_file = entry.get_input_stream.read + + release_class = Object.const_get type + release_headers = release_class.csv_headers + + release_headers.each do |header| + expect(csv_file).to match header end end + + dummy_zip_file_name = "#{project.name.parameterize}_#{lowercase_plural.gsub('_', '-')}.zip" + if File.exist?(file_fixture(dummy_zip_file_name)) + File.delete(file_fixture(dummy_zip_file_name)) + end end end @@ -68,10 +77,10 @@ describe GenerateContractsZipJob do allow(ProjectsChannel).to receive(:broadcast_download_generation_update).with(download, I18n.t("contract_downloads.download.failure")) allow_any_instance_of(ReleaseContractCollectionService).to receive(:build).and_raise(StandardError, "Contracts or contract templates not found") end - + it "updates status to 'failure' and sends user a notification" do GenerateContractsZipJob.perform_now(project, download, "AppearanceRelease", project.appearance_releases.ids) - + expect(download.status).to eq "failure" expect(ProjectsChannel).to have_received(:broadcast_download_generation_update).with(download, I18n.t("contract_downloads.download.failure")) end @@ -82,7 +91,9 @@ describe GenerateContractsZipJob do # Delete the file created in fixture. # Or the tests will fail on next run due to already existing files in existing zip. path = Rails.root.join("spec", "fixtures", "files") - File.delete("#{path}/my-video-project_appearance-releases.zip") if File.exists? "#{path}/my-video-project_appearance-releases.zip" + if File.exists? "#{path}/my-video-project_appearance-releases.zip" + File.delete("#{path}/my-video-project_appearance-releases.zip") + end end private -- 2.47.3 From 3ffa883462164656cee5325e96340bf4aa014fc6 Mon Sep 17 00:00:00 2001 From: Bilal Date: Mon, 13 Jul 2020 14:04:14 +0200 Subject: [PATCH 13/13] fix MR comments --- app/jobs/generate_contracts_zip_job.rb | 4 +- app/models/acquired_media_release.rb | 10 ++++ app/models/appearance_release.rb | 6 +++ app/models/concerns/csv_exportable.rb | 49 +++----------------- app/models/location_release.rb | 6 +++ app/models/material_release.rb | 16 +++++-- app/models/medical_release.rb | 6 +++ app/models/misc_release.rb | 6 +++ app/models/music_release.rb | 20 +++++++- app/models/talent_release.rb | 14 ++++++ config/locales/en.yml | 1 + config/locales/es.yml | 1 + spec/jobs/generate_contracts_zip_job_spec.rb | 3 -- 13 files changed, 89 insertions(+), 53 deletions(-) diff --git a/app/jobs/generate_contracts_zip_job.rb b/app/jobs/generate_contracts_zip_job.rb index f1b4137..65bc376 100644 --- a/app/jobs/generate_contracts_zip_job.rb +++ b/app/jobs/generate_contracts_zip_job.rb @@ -21,7 +21,7 @@ class GenerateContractsZipJob < ApplicationJob zipfile.add(attachment, File.join("#{dir}/", attachment)) end - if Object.const_get(@release_type).include?(CsvExportable) + if @release_type.constantize.include?(CsvExportable) csv_file = generate_csv releases zipfile.get_output_stream("#{@folder_name}.csv") { |f| f.puts(csv_file) } end @@ -49,7 +49,7 @@ class GenerateContractsZipJob < ApplicationJob private def generate_csv(releases) - release_class = Object.const_get @release_type + release_class = @release_type.constantize headers = release_class.csv_headers CSV.generate(headers: true) do |csv| diff --git a/app/models/acquired_media_release.rb b/app/models/acquired_media_release.rb index 46e3881..8b7a7b0 100644 --- a/app/models/acquired_media_release.rb +++ b/app/models/acquired_media_release.rb @@ -11,6 +11,12 @@ class AcquiredMediaRelease < ApplicationRecord include PersonName include CsvExportable + class << self + def custom_csv_exportable_headers + %i[name file_infos_count] + end + end + has_many :file_infos, as: :releasable, dependent: :destroy accepts_nested_attributes_for :file_infos @@ -58,4 +64,8 @@ class AcquiredMediaRelease < ApplicationRecord def uses_edl? true end + + def file_infos_count + file_infos.any? ? file_infos.size : I18n.t('acquired_media_releases.acquired_media_release.no_media') + end end diff --git a/app/models/appearance_release.rb b/app/models/appearance_release.rb index 18f6a61..c9bb4c0 100644 --- a/app/models/appearance_release.rb +++ b/app/models/appearance_release.rb @@ -17,6 +17,12 @@ class AppearanceRelease < ApplicationRecord include SecondGuardianName include CsvExportable + class << self + def custom_csv_exportable_headers + %i[name contact_info] + end + end + has_one_attached :person_photo composed_of :person_address, diff --git a/app/models/concerns/csv_exportable.rb b/app/models/concerns/csv_exportable.rb index 207096f..4619e86 100644 --- a/app/models/concerns/csv_exportable.rb +++ b/app/models/concerns/csv_exportable.rb @@ -6,64 +6,29 @@ module CsvExportable COMMON_HEADERS = %i[notes tags signed_at].freeze COMMON_VALUES = %w[clean_notes clean_tags signed_on].freeze - HEADERS = { - acquired_media_release: %i[name file_infos_count] + COMMON_HEADERS, - appearance_release: %i[name contact_info] + COMMON_HEADERS, - location_release: %i[name address] + COMMON_HEADERS, - material_release: %i[name] + COMMON_HEADERS, - medical_release: %i[approved name contact_info] + COMMON_HEADERS, - misc_release: %i[name contact_info] + COMMON_HEADERS, - music_release: %i[name file_infos_count composers_count publishers_count] + COMMON_HEADERS, - talent_release: %i[name phone email] + COMMON_HEADERS - }.freeze - - VALUES = { - acquired_media_release: %w[name file_count] + COMMON_VALUES, - appearance_release: %w[name contact_info] + COMMON_VALUES, - location_release: %w[name address] + COMMON_VALUES, - material_release: %w[name] + COMMON_VALUES, - medical_release: %w[approved? name contact_info] + COMMON_VALUES, - misc_release: %w[name contact_info] + COMMON_VALUES, - music_release: %w[name music_file_count music_composers_count music_publishers_count] + COMMON_VALUES, - talent_release: %w[name person_phone person_email] + COMMON_VALUES - }.freeze - included do class << self + def custom_csv_exportable_headers + [] + end + def csv_headers - plural_class_name = self.name.underscore.pluralize - headers = HEADERS[self.name.underscore.to_sym] + headers = custom_csv_exportable_headers + COMMON_HEADERS headers.map do |header| - I18n.t("#{plural_class_name}.index.table_headers.#{header}") + I18n.t("#{model_name.plural}.index.table_headers.#{header}") end end end def to_csv_row - VALUES[self.class.name.underscore.to_sym].map do |function| + (self.class.custom_csv_exportable_headers + COMMON_VALUES).map do |function| send(function) end end private - def file_count - self.file_infos.any? ? self.file_infos.size : I18n.t('acquired_media_releases.acquired_media_release.no_media') - end - - def music_file_count - file_infos.size - end - - def music_composers_count - composers.size - end - - def music_publishers_count - publishers.size - end - def contact_info contact_info = '' contact_info += "#{person_address}; " if person_address.present? diff --git a/app/models/location_release.rb b/app/models/location_release.rb index 389d0c7..1e49d73 100644 --- a/app/models/location_release.rb +++ b/app/models/location_release.rb @@ -12,6 +12,12 @@ class LocationRelease < ApplicationRecord include PersonName include CsvExportable + class << self + def custom_csv_exportable_headers + %i[name address] + end + end + composed_of :address, mapping: [ %w(address_street1 street1), diff --git a/app/models/material_release.rb b/app/models/material_release.rb index 9c9044d..dc5380e 100644 --- a/app/models/material_release.rb +++ b/app/models/material_release.rb @@ -11,8 +11,14 @@ class MaterialRelease < ApplicationRecord include Taggable include PersonName include CsvExportable - - composed_of :person_address, + + class << self + def custom_csv_exportable_headers + %i[name] + end + end + + composed_of :person_address, class_name: "Address", mapping: [ %w(person_address_street1 street1), @@ -31,15 +37,15 @@ class MaterialRelease < ApplicationRecord validates :signature, attached: true end - searchable_on %i[ - name + searchable_on %i[ + name person_address_street1 person_address_street2 person_address_city person_address_state person_address_zip person_address_country ] def contact_person @contact_person ||= Contact.new(person_name, person_address, person_email, person_phone) end - + def minor? false end diff --git a/app/models/medical_release.rb b/app/models/medical_release.rb index f160903..e037ef5 100644 --- a/app/models/medical_release.rb +++ b/app/models/medical_release.rb @@ -13,6 +13,12 @@ class MedicalRelease < ApplicationRecord include SecondGuardianName include CsvExportable + class << self + def custom_csv_exportable_headers + %i[approved? name contact_info] + end + end + NUMBER_OF_CUSTOM_FIELDS = 15 composed_of :person_address, diff --git a/app/models/misc_release.rb b/app/models/misc_release.rb index 2142510..2679542 100644 --- a/app/models/misc_release.rb +++ b/app/models/misc_release.rb @@ -11,6 +11,12 @@ class MiscRelease < ApplicationRecord include GuardianPhotoable include CsvExportable + class << self + def custom_csv_exportable_headers + %i[name contact_info] + end + end + NUMBER_OF_CUSTOM_FIELDS = 15 composed_of :person_address, diff --git a/app/models/music_release.rb b/app/models/music_release.rb index a422436..b324b9f 100644 --- a/app/models/music_release.rb +++ b/app/models/music_release.rb @@ -8,7 +8,13 @@ class MusicRelease < ApplicationRecord include Taggable include PersonName include CsvExportable - + + class << self + def custom_csv_exportable_headers + %i[name file_infos_count composers_count publishers_count] + end + end + has_many :file_infos, as: :releasable, dependent: :destroy has_many :composers, dependent: :destroy has_many :publishers, dependent: :destroy @@ -73,6 +79,18 @@ class MusicRelease < ApplicationRecord false end + def file_infos_count + file_infos.size + end + + def composers_count + composers.size + end + + def publishers_count + publishers.size + end + private def publisher_percentages_add_up_to_100 diff --git a/app/models/talent_release.rb b/app/models/talent_release.rb index 1c2be4c..f507ba7 100644 --- a/app/models/talent_release.rb +++ b/app/models/talent_release.rb @@ -16,6 +16,12 @@ class TalentRelease < ApplicationRecord include SecondGuardianName include CsvExportable + class << self + def custom_csv_exportable_headers + %i[name phone email] + end + end + composed_of :person_address, class_name: "Address", mapping: [ @@ -87,6 +93,14 @@ class TalentRelease < ApplicationRecord person_name end + def phone + person_phone + end + + def email + person_email + end + def filename_suffix "#{person_last_name} #{person_first_name}" end diff --git a/config/locales/en.yml b/config/locales/en.yml index 6dfb129..290ef7e 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -803,6 +803,7 @@ en: empty: Medical releases will appear here table_headers: approved: Approved + approved?: Approved contact_info: Contact info name: Person name notes: Notes diff --git a/config/locales/es.yml b/config/locales/es.yml index 7857263..8c6711c 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -334,6 +334,7 @@ es: index: table_headers: approved: Approved (ES) + approved?: Approved (ES) contact_info: Contact info (ES) name: Person name (ES) notes: Notes (ES) diff --git a/spec/jobs/generate_contracts_zip_job_spec.rb b/spec/jobs/generate_contracts_zip_job_spec.rb index 69ef18c..3d3ee5f 100644 --- a/spec/jobs/generate_contracts_zip_job_spec.rb +++ b/spec/jobs/generate_contracts_zip_job_spec.rb @@ -65,9 +65,6 @@ describe GenerateContractsZipJob do end end end - - - end context "When there are errors" do -- 2.47.3