Upstream sync

This commit is contained in:
Senad Uka
2020-06-11 16:56:29 +02:00
parent dc9ba08e1b
commit 5f5e6c18b5
60 changed files with 1218 additions and 134 deletions

View File

@@ -55,6 +55,7 @@ class Account < ApplicationRecord
User.joins(:project_memberships).where(project_memberships: { project: projects }),
Broadcast.where(project: projects),
ZoomMeeting.where(project: projects),
MedicalRelease.where(project: projects),
self
])).sum(:byte_size).to_f
end

View File

@@ -13,6 +13,7 @@ class ContractTemplate < ApplicationRecord
has_many :acquired_media_releases, dependent: :restrict_with_error
has_many :location_releases, dependent: :restrict_with_error
has_many :material_releases, dependent: :restrict_with_error
has_many :medical_releases, dependent: :restrict_with_error
monetize :fee_cents
has_rich_text :body

View File

@@ -0,0 +1,71 @@
class MedicalRelease < ApplicationRecord
include Contractable
include Notable
include Photoable
include Releasable
include Searchable
include Signable
include Syncable
include PersonName
composed_of :person_address,
class_name: "Address",
mapping: [
%w(person_address_street1 street1),
%w(person_address_street2 street2),
%w(person_address_city city),
%w(person_address_state state),
%w(person_address_zip zip),
%w(person_address_country country)
]
def self.face_photo_acceptable_content_types
["image/png", "image/jpeg"]
end
# These validations apply to all releases
validates :person_first_name, :person_last_name, presence: true
validates :person_email, email: true, allow_blank: true
acts_as_taggable_on :internal_tags, :tags
# These validations apply to releases created natively by the system (i.e. not imported from elsewhere)
with_options on: :native do
validates :signature, attached: true
end
# These validations apply to releases imported to the system from an outside source
with_options on: :non_native do
validates :contract, attached: true
end
searchable_on %i[
person_first_name person_last_name person_email person_phone
person_address_street1 person_address_street2 person_address_city person_address_state person_address_zip person_address_country
]
# All releases must respond to the following messages
def name
person_name
end
def filename_suffix
"#{person_last_name} #{person_first_name}"
end
def contact_person
@contact_person ||= Contact.new(person_name, person_address, person_email, person_phone)
end
def uses_edl?
false
end
def minor?
false
end
def contract_file_name
"#{project.name.parameterize}_#{contract_template.release_type}_#{(signed_at || created_at).strftime("%Y.%m.%d")}_#{release_number}_#{filename_suffix.parameterize}"
end
end

View File

@@ -3,8 +3,8 @@ class Project < ApplicationRecord
include Filterable
include Syncable
SIGNABLE_RELEASE_TYPES = %w(talent appearance acquired_media location material)
AVAILABLE_RELEASE_TYPES = %w(appearance location material acquired_media talent music)
SIGNABLE_RELEASE_TYPES = %w(talent appearance acquired_media location material medical)
AVAILABLE_RELEASE_TYPES = %w(appearance location material acquired_media talent music medical)
belongs_to :account
has_many :acquired_media_releases, dependent: :destroy
@@ -13,6 +13,7 @@ class Project < ApplicationRecord
has_many :material_releases, dependent: :destroy
has_many :music_releases, dependent: :destroy
has_many :talent_releases, dependent: :destroy
has_many :medical_releases, dependent: :destroy
has_many :videos, dependent: :destroy
has_many :imports, dependent: :destroy
has_many :contract_templates, dependent: :destroy
@@ -33,6 +34,7 @@ class Project < ApplicationRecord
material_release: false,
music_release: false,
talent_release: false,
medical_release: false,
video_analysis: false,
}
end
@@ -65,6 +67,7 @@ class Project < ApplicationRecord
material_release: true,
music_release: true,
talent_release: true,
medical_release: true,
video_analysis: true,
}
when "nat_geo"
@@ -76,6 +79,7 @@ class Project < ApplicationRecord
material_release: true,
music_release: true,
talent_release: true,
medical_release: true,
video_analysis: true,
}
else

View File

@@ -1,5 +1,5 @@
class ReleasableParam
TYPES = %w(talent appearance location material acquired_media music)
TYPES = %w(talent appearance location material acquired_media music medical)
def initialize(params)
@params = params

View File

@@ -1,5 +1,3 @@
require 'zoom_gateway'
class ZoomMeeting < ApplicationRecord
belongs_to :project, optional: true
belongs_to :zoom_user

View File

@@ -1,4 +1,3 @@
require 'zoom_gateway'
require 'securerandom'
class ZoomUser < ApplicationRecord
has_many :zoom_meetings, dependent: :nullify