Compare commits
10 Commits
implement-
...
fix-stream
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7fe1dadaf2 | ||
|
|
c6c10587c8 | ||
|
|
8f13589c55 | ||
|
|
cd0de9154c | ||
|
|
2590b6bdc9 | ||
|
|
40f241b75f | ||
|
|
add8304eab | ||
|
|
f04d34d337 | ||
|
|
c033f5df17 | ||
|
|
7f49f31ebf |
@@ -21,11 +21,13 @@ $(document).on "turbolinks:load", ->
|
|||||||
|
|
||||||
refreshBroadcastVideo: (data) ->
|
refreshBroadcastVideo: (data) ->
|
||||||
$("#broadcast_updates").html data.status_content
|
$("#broadcast_updates").html data.status_content
|
||||||
if data.streamer_status == 'recording' && data.status == 'active'
|
stream_selected = $("#broadcast_video").data('videoType') == 'stream';
|
||||||
|
if data.streamer_status == 'recording' && data.status == 'active' && stream_selected
|
||||||
$("#broadcast_video").html data.video_content
|
$("#broadcast_video").html data.video_content
|
||||||
new (Clappr.Player)(
|
new (Clappr.Player)(
|
||||||
|
<%= "baseUrl: 'http://cdn.clappr.io/latest'," if Rails.env.test? %>
|
||||||
parentId: '#broadcast_video'
|
parentId: '#broadcast_video'
|
||||||
source: data.playback_url
|
source: data.full_live_stream_playback_url
|
||||||
width: '100%',
|
width: '100%',
|
||||||
height: '100%',
|
height: '100%',
|
||||||
mute: true,
|
mute: true,
|
||||||
50
app/assets/javascripts/group_qr_code.js
Normal file
50
app/assets/javascripts/group_qr_code.js
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
$(document).on("click", "[data-behavior=select_contract_template]", function() {
|
||||||
|
var _this = this;
|
||||||
|
var checkbox = $(this).children("input:checkbox");
|
||||||
|
|
||||||
|
selectContractTemplate(_this, checkbox);
|
||||||
|
});
|
||||||
|
|
||||||
|
$(document).on("click", "[data-behavior=select_contract_template] input[type='checkbox']", function(e) {
|
||||||
|
e.stopPropagation();
|
||||||
|
|
||||||
|
var _this = this;
|
||||||
|
var checkbox = $(this);
|
||||||
|
|
||||||
|
selectContractTemplate(_this, checkbox);
|
||||||
|
});
|
||||||
|
|
||||||
|
function selectContractTemplate(clicked_element, checkbox) {
|
||||||
|
if (clicked_element.hasChildNodes()) {
|
||||||
|
if(checkbox.prop("checked")) {
|
||||||
|
checkbox.prop('checked', false);
|
||||||
|
} else {
|
||||||
|
checkbox.prop('checked', true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var checked = checkbox.prop("checked");
|
||||||
|
var project_id = JSON.parse($('#group_qr_code').attr('data-project-id'));
|
||||||
|
var contract_template_ids = JSON.parse($('#group_qr_code').attr('data-contract-template-ids'));
|
||||||
|
var selected_contract_template_id = checkbox.val();
|
||||||
|
|
||||||
|
if (checked && !contract_template_ids.includes(selected_contract_template_id)) {
|
||||||
|
contract_template_ids.push(selected_contract_template_id);
|
||||||
|
} else if(!checked && contract_template_ids.includes(selected_contract_template_id)) {
|
||||||
|
contract_template_ids.splice( $.inArray(selected_contract_template_id, contract_template_ids), 1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
$('#group_qr_code').attr('data-contract-template-ids', JSON.stringify(contract_template_ids));
|
||||||
|
|
||||||
|
if (contract_template_ids.length >= 2) {
|
||||||
|
multi_sign_ids = $.param({multi_sign_ids: contract_template_ids});
|
||||||
|
contract_template_url = "/en/contract_templates/" + contract_template_ids[0] + "/qr_codes?" + multi_sign_ids
|
||||||
|
|
||||||
|
$("#group_qr_code").attr("href", contract_template_url);
|
||||||
|
$("#group_qr_code").attr("target", "_blank");
|
||||||
|
$("#group_qr_code").removeClass('disabled');
|
||||||
|
} else if (contract_template_ids.length < 2) {
|
||||||
|
$("#group_qr_code").attr("href", "javascript:void(0);");
|
||||||
|
$("#group_qr_code").addClass('disabled');
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,7 +3,7 @@ $(document).on("click", "[data-behavior=play_recording]", function() {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
console.warn('Play prev : ', playback_url);
|
$("#broadcast_video").data('videoType', 'recording');
|
||||||
|
|
||||||
var playback_url = $(this).attr("data-playback-url")
|
var playback_url = $(this).attr("data-playback-url")
|
||||||
$("#broadcast_video").empty();
|
$("#broadcast_video").empty();
|
||||||
@@ -23,4 +23,6 @@ $(document).on("click", "[data-behavior=play_recording]", function() {
|
|||||||
$(this).siblings().children("i").remove();
|
$(this).siblings().children("i").remove();
|
||||||
$(this).addClass('active');
|
$(this).addClass('active');
|
||||||
$(this).prepend('<i class="fa fa-check"> </i>');
|
$(this).prepend('<i class="fa fa-check"> </i>');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$(document).on("click", "[data-behavior=play_stream]", function() { $("#broadcast_video").data('videoType', 'stream'); });
|
||||||
@@ -16,6 +16,7 @@ class BroadcastsChannel < ApplicationCable::Channel
|
|||||||
event: :broadcast_stream_update,
|
event: :broadcast_stream_update,
|
||||||
status: broadcast.status,
|
status: broadcast.status,
|
||||||
playback_url: broadcast.stream_playback_url,
|
playback_url: broadcast.stream_playback_url,
|
||||||
|
full_live_stream_playback_url: broadcast.full_live_stream_playback_url,
|
||||||
video_content: video_content,
|
video_content: video_content,
|
||||||
status_content: status_content,
|
status_content: status_content,
|
||||||
streamer_status: broadcast.streamer_status
|
streamer_status: broadcast.streamer_status
|
||||||
|
|||||||
@@ -1,21 +1,28 @@
|
|||||||
class ApprovalsController < ApplicationController
|
class ApprovalsController < ApplicationController
|
||||||
include MedicalReleaseContext
|
before_action :set_releasable
|
||||||
|
|
||||||
before_action :set_medical_release
|
|
||||||
before_action :set_project
|
before_action :set_project
|
||||||
|
|
||||||
layout "project"
|
layout "project"
|
||||||
|
|
||||||
def create
|
def create
|
||||||
@medical_release.approve_by(current_user)
|
@releasable.approve_by(current_user)
|
||||||
if @medical_release.save
|
|
||||||
redirect_to [@project, :medical_releases], notice: t('.release_approved')
|
if @releasable.save
|
||||||
|
redirect_to [@project, "#{@releasable_param.name.pluralize}"], notice: t('.release_approved', release_type: @releasable.model_name.human)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
|
def releasable_param
|
||||||
|
@releasable_param ||= ReleasableParam.new(params.to_unsafe_h)
|
||||||
|
end
|
||||||
|
|
||||||
|
def set_releasable
|
||||||
|
@releasable = authorize policy_scope(releasable_param.type).find(releasable_param.id)
|
||||||
|
end
|
||||||
|
|
||||||
def set_project
|
def set_project
|
||||||
@project = @medical_release.project
|
@project = @releasable.project
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -33,6 +33,11 @@ class BroadcastsController < ApplicationController
|
|||||||
end
|
end
|
||||||
|
|
||||||
def update
|
def update
|
||||||
|
unless params.has_key?(:broadcast)
|
||||||
|
@broadcast.regenerate_token
|
||||||
|
redirect_to([@project, @broadcast], notice: t('.reset_notice')) and return
|
||||||
|
end
|
||||||
|
|
||||||
@broadcast.update(broadcast_params)
|
@broadcast.update(broadcast_params)
|
||||||
@files = @broadcast.files.order("created_at DESC").paginate(page: 1)
|
@files = @broadcast.files.order("created_at DESC").paginate(page: 1)
|
||||||
|
|
||||||
@@ -55,7 +60,7 @@ class BroadcastsController < ApplicationController
|
|||||||
end
|
end
|
||||||
|
|
||||||
def broadcast_params
|
def broadcast_params
|
||||||
params.require(:broadcast).permit(:name, files: [])
|
params.require(:broadcast).permit(:name, :shoot_location_time_zone, files: [])
|
||||||
end
|
end
|
||||||
|
|
||||||
def set_project
|
def set_project
|
||||||
|
|||||||
33
app/controllers/contract_templates/duplicates_controller.rb
Normal file
33
app/controllers/contract_templates/duplicates_controller.rb
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class ContractTemplates::DuplicatesController < ApplicationController
|
||||||
|
before_action :set_contract_template
|
||||||
|
|
||||||
|
def create
|
||||||
|
authorize(ContractTemplate)
|
||||||
|
new_contract_template = @contract_template.dup
|
||||||
|
new_contract_template.name = I18n.t('contract_templates.duplicate.name_prefix', template_name: @contract_template.name)
|
||||||
|
|
||||||
|
# Duplicate rich text fields
|
||||||
|
|
||||||
|
new_contract_template.body = @contract_template.body
|
||||||
|
new_contract_template.guardian_clause = @contract_template.guardian_clause
|
||||||
|
new_contract_template.signature_legal_text = @contract_template.signature_legal_text
|
||||||
|
|
||||||
|
if new_contract_template.save
|
||||||
|
redirect_to [:edit, new_contract_template]
|
||||||
|
else
|
||||||
|
redirect_to [@contract_template.project, :contract_templates], alert: t('.error')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def contract_templates
|
||||||
|
policy_scope(ContractTemplate)
|
||||||
|
end
|
||||||
|
|
||||||
|
def set_contract_template
|
||||||
|
@contract_template = contract_templates.find(params[:contract_template_id])
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -16,7 +16,12 @@ class ContractTemplates::QrCodesController < ApplicationController
|
|||||||
end
|
end
|
||||||
|
|
||||||
def qr_code
|
def qr_code
|
||||||
authorize QrCode.build_from_contract_template(@contract_template)
|
if params[:multi_sign_ids].present?
|
||||||
|
contract_templates_group = authorize contract_templates.where(id: params[:multi_sign_ids]).order_by_recent
|
||||||
|
authorize QrCode.build_from_multiple_contract_templates(contract_templates_group, @contract_template.project)
|
||||||
|
else
|
||||||
|
authorize QrCode.build_from_contract_template(@contract_template)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def download_attributes
|
def download_attributes
|
||||||
|
|||||||
@@ -5,8 +5,9 @@ class ContractTemplatesController < ApplicationController
|
|||||||
|
|
||||||
layout 'project'
|
layout 'project'
|
||||||
|
|
||||||
before_action :set_project, except: [:destroy]
|
before_action :set_project, except: [:destroy, :edit, :update]
|
||||||
before_action :set_contract_template, only: [:destroy]
|
before_action :set_contract_template, only: [:destroy, :edit, :update]
|
||||||
|
before_action :set_project_from_contract_template, only: [:edit, :update]
|
||||||
before_action :show_splash_screen, only: :index
|
before_action :show_splash_screen, only: :index
|
||||||
|
|
||||||
def index
|
def index
|
||||||
@@ -32,6 +33,20 @@ class ContractTemplatesController < ApplicationController
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def edit
|
||||||
|
@release_type = @contract_template.release_type
|
||||||
|
end
|
||||||
|
|
||||||
|
def update
|
||||||
|
@contract_template.attributes = contract_template_params
|
||||||
|
|
||||||
|
if @contract_template.save
|
||||||
|
redirect_to [@project, :contract_templates], notice: t('.notice')
|
||||||
|
else
|
||||||
|
render :edit
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def destroy
|
def destroy
|
||||||
@contract_template.archive
|
@contract_template.archive
|
||||||
redirect_to [@contract_template.project, :contract_templates], alert: t('.archived_notice')
|
redirect_to [@contract_template.project, :contract_templates], alert: t('.archived_notice')
|
||||||
@@ -39,6 +54,10 @@ class ContractTemplatesController < ApplicationController
|
|||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
|
def set_project_from_contract_template
|
||||||
|
@project = @contract_template.project
|
||||||
|
end
|
||||||
|
|
||||||
def show_splash_screen
|
def show_splash_screen
|
||||||
render :splash if contract_templates.non_archived.count.zero?
|
render :splash if contract_templates.non_archived.count.zero?
|
||||||
end
|
end
|
||||||
|
|||||||
18
app/controllers/public/contract_templates_controller.rb
Normal file
18
app/controllers/public/contract_templates_controller.rb
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
class Public::ContractTemplatesController < Public::BaseController
|
||||||
|
skip_after_action :verify_authorized, :verify_policy_scoped
|
||||||
|
before_action :set_account, :set_project
|
||||||
|
|
||||||
|
def index
|
||||||
|
@contract_templates = @project.contract_templates.where(id: params[:contract_template_ids]).order_by_name.paginate(page: params[:page])
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def set_project
|
||||||
|
@project = @account.projects.find(params[:project_id])
|
||||||
|
end
|
||||||
|
|
||||||
|
def set_account
|
||||||
|
@account = Account.find_by(slug: params[:account_id])
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -14,6 +14,10 @@ class StreamNotificationsController < ApplicationController
|
|||||||
when "video.live_stream.recording"
|
when "video.live_stream.recording"
|
||||||
@broadcast.streamer_recording!
|
@broadcast.streamer_recording!
|
||||||
notify_users
|
notify_users
|
||||||
|
when "video.asset.ready"
|
||||||
|
full_live_stream_playback_uid = notification.dig(:data, :playback_ids, 0, :id)
|
||||||
|
@broadcast.update(full_live_stream_playback_uid: full_live_stream_playback_uid)
|
||||||
|
notify_users
|
||||||
when "video.live_stream.active"
|
when "video.live_stream.active"
|
||||||
@broadcast.active!
|
@broadcast.active!
|
||||||
notify_users
|
notify_users
|
||||||
@@ -59,7 +63,8 @@ class StreamNotificationsController < ApplicationController
|
|||||||
end
|
end
|
||||||
|
|
||||||
def set_broadcast
|
def set_broadcast
|
||||||
if notification_type == "video.asset.static_renditions.ready"
|
case notification_type
|
||||||
|
when "video.asset.static_renditions.ready", "video.asset.ready"
|
||||||
live_stream_id = notification.dig(:stream_notification, :data, :live_stream_id)
|
live_stream_id = notification.dig(:stream_notification, :data, :live_stream_id)
|
||||||
@broadcast = Broadcast.find_by(stream_uid: live_stream_id)
|
@broadcast = Broadcast.find_by(stream_uid: live_stream_id)
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -6,11 +6,11 @@ module TooltipHelper
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def get_approval_data_for_medical_release(medical_release)
|
def get_approval_data_for_releasable(release)
|
||||||
if medical_release.approved_by_user_name.present?
|
if release.approved_by_user_name.present?
|
||||||
"#{medical_release.approved_by_user_name} [#{medical_release.approved_by_user_email}]"
|
"#{release.approved_by_user_name} [#{release.approved_by_user_email}]"
|
||||||
else
|
else
|
||||||
medical_release.approved_by_user_email
|
release.approved_by_user_email
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ class AcquiredMediaRelease < ApplicationRecord
|
|||||||
include Syncable
|
include Syncable
|
||||||
include PersonName
|
include PersonName
|
||||||
include CsvExportable
|
include CsvExportable
|
||||||
|
include Approvable
|
||||||
|
|
||||||
class << self
|
class << self
|
||||||
def custom_csv_exportable_headers
|
def custom_csv_exportable_headers
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ class AppearanceRelease < ApplicationRecord
|
|||||||
include GuardianName
|
include GuardianName
|
||||||
include SecondGuardianName
|
include SecondGuardianName
|
||||||
include CsvExportable
|
include CsvExportable
|
||||||
|
include Approvable
|
||||||
|
|
||||||
class << self
|
class << self
|
||||||
def custom_csv_exportable_headers
|
def custom_csv_exportable_headers
|
||||||
|
|||||||
@@ -30,6 +30,10 @@ class Broadcast < ApplicationRecord
|
|||||||
"https://stream.mux.com/#{stream_playback_uid}.m3u8"
|
"https://stream.mux.com/#{stream_playback_uid}.m3u8"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def full_live_stream_playback_url
|
||||||
|
full_live_stream_playback_uid.blank? ? stream_playback_url : "https://stream.mux.com/#{full_live_stream_playback_uid}.m3u8"
|
||||||
|
end
|
||||||
|
|
||||||
def stream_server_url
|
def stream_server_url
|
||||||
ENV['MUX_BROADCAST_SERVER_URL']
|
ENV['MUX_BROADCAST_SERVER_URL']
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -14,6 +14,6 @@ class BroadcastRecording < ApplicationRecord
|
|||||||
end
|
end
|
||||||
|
|
||||||
def download_file_name
|
def download_file_name
|
||||||
"#{broadcast_name}_Date_#{created_at.strftime("%Y-%m-%d")}_Time_#{created_at.strftime("%T")}".parameterize
|
"#{broadcast_name}_Date_#{created_at.in_time_zone(broadcast.shoot_location_time_zone).strftime("%Y-%m-%d")}_Time_#{created_at.in_time_zone(broadcast.shoot_location_time_zone).strftime("%T")}".parameterize
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
17
app/models/concerns/approvable.rb
Normal file
17
app/models/concerns/approvable.rb
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
module Approvable
|
||||||
|
extend ActiveSupport::Concern
|
||||||
|
|
||||||
|
included do
|
||||||
|
def approve_by(user)
|
||||||
|
return unless approved_at.nil?
|
||||||
|
|
||||||
|
self.approved_by_user_name = user.full_name
|
||||||
|
self.approved_by_user_email = user.email
|
||||||
|
self.approved_at = Time.zone.now
|
||||||
|
end
|
||||||
|
|
||||||
|
def approved?
|
||||||
|
self.approved_at.present?
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
module CsvExportable
|
module CsvExportable
|
||||||
extend ActiveSupport::Concern
|
extend ActiveSupport::Concern
|
||||||
|
|
||||||
COMMON_HEADERS = %i[notes tags signed_at].freeze
|
COMMON_HEADERS = %i[approved? notes tags signed_at].freeze
|
||||||
COMMON_VALUES = %w[clean_notes clean_tags signed_on].freeze
|
COMMON_VALUES = %w[clean_notes clean_tags signed_on].freeze
|
||||||
|
|
||||||
included do
|
included do
|
||||||
|
|||||||
@@ -69,9 +69,13 @@ class ContractTemplate < ApplicationRecord
|
|||||||
(1..NUMBER_OF_CUSTOM_FIELDS).any? { |n| public_send("question_#{n}_text").presence }
|
(1..NUMBER_OF_CUSTOM_FIELDS).any? { |n| public_send("question_#{n}_text").presence }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def editable?
|
||||||
|
releases.size.zero?
|
||||||
|
end
|
||||||
|
|
||||||
def attributes
|
def attributes
|
||||||
result = super()
|
result = super()
|
||||||
result[:signature_legal_text] = signature_legal_text.as_json
|
result[:signature_legal_text] = signature_legal_text.as_json
|
||||||
result
|
result
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ class LocationRelease < ApplicationRecord
|
|||||||
include Taggable
|
include Taggable
|
||||||
include PersonName
|
include PersonName
|
||||||
include CsvExportable
|
include CsvExportable
|
||||||
|
include Approvable
|
||||||
|
|
||||||
class << self
|
class << self
|
||||||
def custom_csv_exportable_headers
|
def custom_csv_exportable_headers
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ class MaterialRelease < ApplicationRecord
|
|||||||
include Taggable
|
include Taggable
|
||||||
include PersonName
|
include PersonName
|
||||||
include CsvExportable
|
include CsvExportable
|
||||||
|
include Approvable
|
||||||
|
|
||||||
class << self
|
class << self
|
||||||
def custom_csv_exportable_headers
|
def custom_csv_exportable_headers
|
||||||
|
|||||||
@@ -12,10 +12,11 @@ class MedicalRelease < ApplicationRecord
|
|||||||
include GuardianName
|
include GuardianName
|
||||||
include SecondGuardianName
|
include SecondGuardianName
|
||||||
include CsvExportable
|
include CsvExportable
|
||||||
|
include Approvable
|
||||||
|
|
||||||
class << self
|
class << self
|
||||||
def custom_csv_exportable_headers
|
def custom_csv_exportable_headers
|
||||||
%i[approved? name contact_info]
|
%i[name contact_info]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -107,18 +108,6 @@ class MedicalRelease < ApplicationRecord
|
|||||||
"#{project.name.parameterize}_#{contract_template.release_type}_#{(signed_at || created_at).strftime("%Y.%m.%d")}_#{release_number}_#{filename_suffix.parameterize}"
|
"#{project.name.parameterize}_#{contract_template.release_type}_#{(signed_at || created_at).strftime("%Y.%m.%d")}_#{release_number}_#{filename_suffix.parameterize}"
|
||||||
end
|
end
|
||||||
|
|
||||||
def approve_by(user)
|
|
||||||
return unless approved_at.nil?
|
|
||||||
|
|
||||||
self.approved_by_user_name = user.full_name
|
|
||||||
self.approved_by_user_email = user.email
|
|
||||||
self.approved_at = Time.zone.now
|
|
||||||
end
|
|
||||||
|
|
||||||
def approved?
|
|
||||||
approved_at.present?
|
|
||||||
end
|
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def valid_answers
|
def valid_answers
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ class MiscRelease < ApplicationRecord
|
|||||||
include GuardianName
|
include GuardianName
|
||||||
include GuardianPhotoable
|
include GuardianPhotoable
|
||||||
include CsvExportable
|
include CsvExportable
|
||||||
|
include Approvable
|
||||||
|
|
||||||
class << self
|
class << self
|
||||||
def custom_csv_exportable_headers
|
def custom_csv_exportable_headers
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ class MusicRelease < ApplicationRecord
|
|||||||
include Taggable
|
include Taggable
|
||||||
include PersonName
|
include PersonName
|
||||||
include CsvExportable
|
include CsvExportable
|
||||||
|
include Approvable
|
||||||
|
|
||||||
class << self
|
class << self
|
||||||
def custom_csv_exportable_headers
|
def custom_csv_exportable_headers
|
||||||
|
|||||||
@@ -13,6 +13,18 @@ class QrCode
|
|||||||
new(url, "#{filename}.png")
|
new(url, "#{filename}.png")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def self.build_from_multiple_contract_templates(contract_templates, project)
|
||||||
|
account = project.account
|
||||||
|
locale = I18n.locale
|
||||||
|
host = AppHost.new.domain_with_port
|
||||||
|
route = [account, project, :contract_templates, contract_template_ids: contract_templates.ids, locale: I18n.locale, host: AppHost.new.domain_with_port]
|
||||||
|
|
||||||
|
url = Rails.application.routes.url_helpers.url_for(route)
|
||||||
|
filename = [project.account.name, project.name].map(&:parameterize).join("_")
|
||||||
|
|
||||||
|
new(url, "#{filename}.png")
|
||||||
|
end
|
||||||
|
|
||||||
def initialize(url, filename = "qrcode.png")
|
def initialize(url, filename = "qrcode.png")
|
||||||
@url = url
|
@url = url
|
||||||
@filename = filename
|
@filename = filename
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ class TalentRelease < ApplicationRecord
|
|||||||
include GuardianName
|
include GuardianName
|
||||||
include SecondGuardianName
|
include SecondGuardianName
|
||||||
include CsvExportable
|
include CsvExportable
|
||||||
|
include Approvable
|
||||||
|
|
||||||
class << self
|
class << self
|
||||||
def custom_csv_exportable_headers
|
def custom_csv_exportable_headers
|
||||||
@@ -110,7 +111,7 @@ class TalentRelease < ApplicationRecord
|
|||||||
end
|
end
|
||||||
|
|
||||||
def uses_edl?
|
def uses_edl?
|
||||||
false
|
true
|
||||||
end
|
end
|
||||||
|
|
||||||
def second_guardian_present?
|
def second_guardian_present?
|
||||||
|
|||||||
@@ -6,5 +6,5 @@ class TaskRequest < ApplicationRecord
|
|||||||
|
|
||||||
scope :order_by_recent, -> { order(created_at: :desc) }
|
scope :order_by_recent, -> { order(created_at: :desc) }
|
||||||
|
|
||||||
validates :time_allowed, numericality: { only_integer: true, greater_than_or_equal_to: 2 }
|
validates :time_allowed, numericality: { only_integer: true, greater_than_or_equal_to: 2 }, allow_blank: true
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -30,4 +30,12 @@ class AcquiredMediaReleasePolicy < ApplicationPolicy
|
|||||||
def download_multiple?
|
def download_multiple?
|
||||||
true
|
true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def review?
|
||||||
|
user.account_manager?
|
||||||
|
end
|
||||||
|
|
||||||
|
def approve?
|
||||||
|
review?
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -26,4 +26,12 @@ class AppearanceReleasePolicy < ReleasePolicy
|
|||||||
def download_multiple?
|
def download_multiple?
|
||||||
true
|
true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def review?
|
||||||
|
user.account_manager?
|
||||||
|
end
|
||||||
|
|
||||||
|
def approve?
|
||||||
|
review?
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -23,6 +23,18 @@ class ContractTemplatePolicy < ApplicationPolicy
|
|||||||
create?
|
create?
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def edit?
|
||||||
|
record.editable? && create?
|
||||||
|
end
|
||||||
|
|
||||||
|
def update?
|
||||||
|
edit?
|
||||||
|
end
|
||||||
|
|
||||||
|
def duplicate?
|
||||||
|
create?
|
||||||
|
end
|
||||||
|
|
||||||
def import?
|
def import?
|
||||||
if user.account_manager?
|
if user.account_manager?
|
||||||
record.project.account = user.account
|
record.project.account = user.account
|
||||||
|
|||||||
@@ -34,4 +34,12 @@ class LocationReleasePolicy < ReleasePolicy
|
|||||||
def download_multiple?
|
def download_multiple?
|
||||||
true
|
true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def review?
|
||||||
|
user.account_manager?
|
||||||
|
end
|
||||||
|
|
||||||
|
def approve?
|
||||||
|
review?
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -34,4 +34,12 @@ class MaterialReleasePolicy < ReleasePolicy
|
|||||||
def download_multiple?
|
def download_multiple?
|
||||||
true
|
true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def review?
|
||||||
|
user.account_manager?
|
||||||
|
end
|
||||||
|
|
||||||
|
def approve?
|
||||||
|
review?
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -38,4 +38,12 @@ class MiscReleasePolicy < ReleasePolicy
|
|||||||
def download_multiple?
|
def download_multiple?
|
||||||
download_single?
|
download_single?
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def review?
|
||||||
|
user.account_manager?
|
||||||
|
end
|
||||||
|
|
||||||
|
def approve?
|
||||||
|
review?
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -22,4 +22,12 @@ class MusicReleasePolicy < ReleasePolicy
|
|||||||
def download_multiple?
|
def download_multiple?
|
||||||
true
|
true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def review?
|
||||||
|
user.account_manager?
|
||||||
|
end
|
||||||
|
|
||||||
|
def approve?
|
||||||
|
review?
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -34,4 +34,12 @@ class TalentReleasePolicy < ReleasePolicy
|
|||||||
def download_multiple?
|
def download_multiple?
|
||||||
true
|
true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def review?
|
||||||
|
user.account_manager?
|
||||||
|
end
|
||||||
|
|
||||||
|
def approve?
|
||||||
|
review?
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -1,5 +1,13 @@
|
|||||||
<tr id="<%= dom_id(acquired_media_release) %>">
|
<tr id="<%= dom_id(acquired_media_release) %>">
|
||||||
<td data-behavior="select"><%= check_box_tag "acquired_media_release_ids[]", acquired_media_release.id, false %></td>
|
<td data-behavior="select"><%= check_box_tag "acquired_media_release_ids[]", acquired_media_release.id, false %></td>
|
||||||
|
<td class="text-center">
|
||||||
|
<% if acquired_media_release.approved? %>
|
||||||
|
<% tooltip_user_data = get_approval_data_for_releasable(acquired_media_release) %>
|
||||||
|
<i class="fa fa-check-circle fa-2x text-success"
|
||||||
|
data-toggle="tooltip"
|
||||||
|
title="<%= t '.messages.approved_tooltip', user: tooltip_user_data, timestamp: acquired_media_release.approved_at %>"></i>
|
||||||
|
<% end %>
|
||||||
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<%= acquired_media_release.name %>
|
<%= acquired_media_release.name %>
|
||||||
</td>
|
</td>
|
||||||
@@ -35,6 +43,9 @@
|
|||||||
<% if policy(Contract).show? && (acquired_media_release.contract.attached? || acquired_media_release.contract_template.present?) %>
|
<% if policy(Contract).show? && (acquired_media_release.contract.attached? || acquired_media_release.contract_template.present?) %>
|
||||||
<%= link_to fa_icon("download fw", text: "Download"), [acquired_media_release, :contracts, format: "pdf"], class: "dropdown-item", target: "_blank" %>
|
<%= link_to fa_icon("download fw", text: "Download"), [acquired_media_release, :contracts, format: "pdf"], class: "dropdown-item", target: "_blank" %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
<% if policy(AcquiredMediaRelease).review? %>
|
||||||
|
<%= link_to fa_icon("search fw", text: t('.actions.review')), new_acquired_media_release_approvals_path(acquired_media_release), class: "dropdown-item" %>
|
||||||
|
<% end %>
|
||||||
<% if policy(acquired_media_release).edit? %>
|
<% if policy(acquired_media_release).edit? %>
|
||||||
<%= link_to fa_icon("pencil fw", text: "Edit"), [:edit, acquired_media_release], class: "dropdown-item" %>
|
<%= link_to fa_icon("pencil fw", text: "Edit"), [:edit, acquired_media_release], class: "dropdown-item" %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|||||||
@@ -26,6 +26,7 @@
|
|||||||
<thead class="thead-light">
|
<thead class="thead-light">
|
||||||
<tr>
|
<tr>
|
||||||
<th data-behavior="all-selectable"><%= check_box_tag "acquired_media_release_ids[]", false, false %></th>
|
<th data-behavior="all-selectable"><%= check_box_tag "acquired_media_release_ids[]", false, false %></th>
|
||||||
|
<th><%= t '.table_headers.approved'%></th>
|
||||||
<th><%= AcquiredMediaRelease.human_attribute_name(:name) %></th>
|
<th><%= AcquiredMediaRelease.human_attribute_name(:name) %></th>
|
||||||
<th><%= t(".table_headers.file_infos_count") %></th>
|
<th><%= t(".table_headers.file_infos_count") %></th>
|
||||||
<th><%= t(".table_headers.notes") %></th>
|
<th><%= t(".table_headers.notes") %></th>
|
||||||
|
|||||||
@@ -1,5 +1,13 @@
|
|||||||
<tr id="<%= dom_id(appearance_release) %>">
|
<tr id="<%= dom_id(appearance_release) %>">
|
||||||
<td data-behavior="select"><%= check_box_tag "appearance_release_ids[]", appearance_release.id, false %></td>
|
<td data-behavior="select"><%= check_box_tag "appearance_release_ids[]", appearance_release.id, false %></td>
|
||||||
|
<td class="text-center">
|
||||||
|
<% if appearance_release.approved? %>
|
||||||
|
<% tooltip_user_data = get_approval_data_for_releasable(appearance_release) %>
|
||||||
|
<i class="fa fa-check-circle fa-2x text-success"
|
||||||
|
data-toggle="tooltip"
|
||||||
|
title="<%= t '.messages.approved_tooltip', user: tooltip_user_data, timestamp: appearance_release.approved_at %>"></i>
|
||||||
|
<% end %>
|
||||||
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<% if appearance_release.photo.attached? %>
|
<% if appearance_release.photo.attached? %>
|
||||||
<%= image_tag medium_variant(appearance_release.photo) %>
|
<%= image_tag medium_variant(appearance_release.photo) %>
|
||||||
@@ -39,6 +47,9 @@
|
|||||||
<% if policy(Contract).show? && (appearance_release.contract.attached? || appearance_release.contract_template.present?) %>
|
<% if policy(Contract).show? && (appearance_release.contract.attached? || appearance_release.contract_template.present?) %>
|
||||||
<%= link_to fa_icon("download fw", text: "Download"), [appearance_release, :contracts, format: "pdf"], class: "dropdown-item", target: "_blank" %>
|
<%= link_to fa_icon("download fw", text: "Download"), [appearance_release, :contracts, format: "pdf"], class: "dropdown-item", target: "_blank" %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
<% if policy(AppearanceRelease).review? %>
|
||||||
|
<%= link_to fa_icon("search fw", text: t('.actions.review')), new_appearance_release_approvals_path(appearance_release), class: "dropdown-item" %>
|
||||||
|
<% end %>
|
||||||
<% if policy(appearance_release).edit? %>
|
<% if policy(appearance_release).edit? %>
|
||||||
<%= link_to fa_icon("pencil fw", text: "Edit"), [:edit, appearance_release], class: "dropdown-item" %>
|
<%= link_to fa_icon("pencil fw", text: "Edit"), [:edit, appearance_release], class: "dropdown-item" %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|||||||
@@ -44,6 +44,7 @@
|
|||||||
<thead class="thead-light">
|
<thead class="thead-light">
|
||||||
<tr>
|
<tr>
|
||||||
<th data-behavior="all-selectable"><%= check_box_tag "appearance_release_ids[]", false, false %></th>
|
<th data-behavior="all-selectable"><%= check_box_tag "appearance_release_ids[]", false, false %></th>
|
||||||
|
<th><%= t '.table_headers.approved'%></th>
|
||||||
<th></th>
|
<th></th>
|
||||||
<th><%= AppearanceRelease.human_attribute_name(:person_name) %></th>
|
<th><%= AppearanceRelease.human_attribute_name(:person_name) %></th>
|
||||||
<th><%= AppearanceRelease.human_attribute_name(:contact_info) %></th>
|
<th><%= AppearanceRelease.human_attribute_name(:contact_info) %></th>
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
<div class="card shadow-sm">
|
<div class="card shadow-sm">
|
||||||
<%= card_header text: t(".heading"), close_action_path: [@project, :medical_releases] %>
|
<%= card_header text: t(".heading", release_type: @releasable_param.name.titleize), close_action_path: [@project, "#{@releasable_param.name.pluralize}"] %>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<embed class="embeded-contract-preview" type="application/pdf" src="<%= url_for [@medical_release, :contracts, format: "pdf"] %>" width="90%" height="1200" />
|
<embed class="embeded-contract-preview" type="application/pdf" src="<%= url_for [@releasable, :contracts, format: "pdf"] %>" width="90%" height="1200" />
|
||||||
|
|
||||||
<%= bootstrap_form_with model: @medical_release, method: :post, url: medical_release_approvals_path(@medical_release), local: true do |form| %>
|
<%= bootstrap_form_with model: @releasable, method: :post, url: public_send("#{@releasable_param.name}_approvals_path", @releasable), local: true do |form| %>
|
||||||
<div class="row align-items-center text-center mt-4">
|
<div class="row align-items-center text-center mt-4">
|
||||||
<%= link_to t("shared.cancel"), [@medical_release.project, :medical_releases], class: "col-3 text-reset" %>
|
<%= link_to t("shared.cancel"), [@releasable.project, "#{@releasable_param.name.pluralize}"], class: "col-3 text-reset" %>
|
||||||
<div class="col-9">
|
<div class="col-9">
|
||||||
<%= form.button t('.actions.approve'), id: "approve_release", class: class_string("btn btn-block btn-success btn-primary"), data: { disable_with: t("shared.disable_with") } %>
|
<%= form.button t('.actions.approve'), id: "approve_release", class: class_string("btn btn-block btn-success btn-primary"), data: { disable_with: t("shared.disable_with") } %>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -3,6 +3,9 @@
|
|||||||
<td>
|
<td>
|
||||||
<%= broadcast.name %>
|
<%= broadcast.name %>
|
||||||
</td>
|
</td>
|
||||||
|
<td>
|
||||||
|
<%= broadcast.shoot_location_time_zone %>
|
||||||
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<%= broadcast.status.titleize %>
|
<%= broadcast.status.titleize %>
|
||||||
</td>
|
</td>
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
<%= bootstrap_form_with model: model, local: true do |form| %>
|
<%= bootstrap_form_with model: model, local: true do |form| %>
|
||||||
<%= form.text_field :name %>
|
<%= form.text_field :name %>
|
||||||
|
<%= form.time_zone_select(:shoot_location_time_zone, nil, label: "Time zone of shoot location") %>
|
||||||
|
|
||||||
<div class="row align-items-center text-center mt-4">
|
<div class="row align-items-center text-center mt-4">
|
||||||
<%= link_to t("shared.cancel"), [project, :broadcasts], class: "col-3 text-reset" %>
|
<%= link_to t("shared.cancel"), [project, :broadcasts], class: "col-3 text-reset" %>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<% if broadcast.streamer_recording? && broadcast.active? %>
|
<% if broadcast.streamer_recording? && broadcast.active? %>
|
||||||
<div id="broadcast_video" class="embed-responsive-item"></div>
|
<div id="broadcast_video" class="embed-responsive-item" data-video-type="stream"></div>
|
||||||
<% else %>
|
<% else %>
|
||||||
<div id="broadcast_video" class="embed-responsive-item">
|
<div id="broadcast_video" class="embed-responsive-item" data-video-type="stream">
|
||||||
<table class="w-100 h-100 bg-secondary">
|
<table class="w-100 h-100 bg-secondary">
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
<tr>
|
||||||
|
|||||||
@@ -22,6 +22,7 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<th></th>
|
<th></th>
|
||||||
<th><%= t(".table_headers.broadcast_name") %></th>
|
<th><%= t(".table_headers.broadcast_name") %></th>
|
||||||
|
<th><%= t(".table_headers.broadcast_time_zone") %></th>
|
||||||
<th><%= t(".table_headers.broadcast_status") %></th>
|
<th><%= t(".table_headers.broadcast_status") %></th>
|
||||||
<th><%= t(".table_headers.broadcast_created_at") %></th>
|
<th><%= t(".table_headers.broadcast_created_at") %></th>
|
||||||
<th></th>
|
<th></th>
|
||||||
@@ -32,7 +33,7 @@
|
|||||||
<%= render @broadcasts %>
|
<%= render @broadcasts %>
|
||||||
<% else %>
|
<% else %>
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="5" class="py-4 text-center text-muted"><%= t(".empty") %></td>
|
<td colspan="6" class="py-4 text-center text-muted"><%= t(".empty") %></td>
|
||||||
</tr>
|
</tr>
|
||||||
<% end %>
|
<% end %>
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|||||||
@@ -33,10 +33,10 @@
|
|||||||
<%= link_to "Switch View", "#", class: "btn btn-light border dropdown-toggle", role: "button", id: "dropdownMenuLink", data: { toggle: "dropdown" }, aria: { haspopup: "true", expanded: "false" } %>
|
<%= link_to "Switch View", "#", class: "btn btn-light border dropdown-toggle", role: "button", id: "dropdownMenuLink", data: { toggle: "dropdown" }, aria: { haspopup: "true", expanded: "false" } %>
|
||||||
<div class="dropdown-menu" aria-labelledby="dropdownMenuLink">
|
<div class="dropdown-menu" aria-labelledby="dropdownMenuLink">
|
||||||
<h5 class="dropdown-header">Live Streams</h5>
|
<h5 class="dropdown-header">Live Streams</h5>
|
||||||
<%= link_to fa_icon("check", text: @broadcast.name.titleize), "#", class: "dropdown-item active" %>
|
<%= link_to fa_icon("check", text: @broadcast.name.titleize), "#", data: { behavior: "play_stream"}, class: "dropdown-item active" %>
|
||||||
<% @multi_view_broadcasts.each do |broadcast| %>
|
<% @multi_view_broadcasts.each do |broadcast| %>
|
||||||
<% if broadcast.id != @broadcast.id %>
|
<% if broadcast.id != @broadcast.id %>
|
||||||
<%= link_to broadcast.name.titleize, broadcast.url, class: class_string("dropdown-item", "active" => @broadcast.id == broadcast.id) %>
|
<%= link_to broadcast.name.titleize, broadcast.url, data: { behavior: "play_stream"}, class: class_string("dropdown-item", "active" => @broadcast.id == broadcast.id) %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<h5 class="dropdown-header">Previous Sessions</h5>
|
<h5 class="dropdown-header">Previous Sessions</h5>
|
||||||
@@ -102,6 +102,7 @@
|
|||||||
<i class="fa fa-clipboard"></i>
|
<i class="fa fa-clipboard"></i>
|
||||||
Copy URL
|
Copy URL
|
||||||
</button>
|
</button>
|
||||||
|
<%= link_to t('.actions.reset_url'), [@project, @broadcast], method: :patch, class: "btn btn-danger" %>
|
||||||
</div>
|
</div>
|
||||||
<% else %>
|
<% else %>
|
||||||
<input type="text" class="form-control" value="<%= broadcast_url(@broadcast.token) %>" readonly>
|
<input type="text" class="form-control" value="<%= broadcast_url(@broadcast.token) %>" readonly>
|
||||||
@@ -110,6 +111,7 @@
|
|||||||
<i class="fa fa-clipboard"></i>
|
<i class="fa fa-clipboard"></i>
|
||||||
Copy URL
|
Copy URL
|
||||||
</button>
|
</button>
|
||||||
|
<%= link_to t('.actions.reset_url'), [@project, @broadcast], method: :patch, class: "btn btn-danger" %>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
<tr>
|
<tr>
|
||||||
|
<td data-behavior="select_contract_template"><%= check_box_tag "contract_template_ids[]", contract_template.id, false %></td>
|
||||||
<td>
|
<td>
|
||||||
<%= contract_template.name %>
|
<%= contract_template.name %>
|
||||||
</td>
|
</td>
|
||||||
@@ -19,6 +20,12 @@
|
|||||||
<div class="btn-group">
|
<div class="btn-group">
|
||||||
<%= button_tag t(".actions.manage"), class: "btn btn-light btn-sm dropdown-toggle border", data: { toggle: "dropdown", boundary: "window" }, aria: { haspopup: true, expanded: false } %>
|
<%= button_tag t(".actions.manage"), class: "btn btn-light btn-sm dropdown-toggle border", data: { toggle: "dropdown", boundary: "window" }, aria: { haspopup: true, expanded: false } %>
|
||||||
<div class="dropdown-menu dropdown-menu-right">
|
<div class="dropdown-menu dropdown-menu-right">
|
||||||
|
<% if policy(contract_template).edit? %>
|
||||||
|
<%= link_to fa_icon("pencil fw", text: t(".actions.edit")), [:edit, contract_template], class: "dropdown-item" %>
|
||||||
|
<% end %>
|
||||||
|
<% if policy(ContractTemplate).duplicate? %>
|
||||||
|
<%= link_to fa_icon("clone fw", text: t(".actions.duplicate")), contract_template_duplicates_path(contract_template), method: :post, class: "dropdown-item" %>
|
||||||
|
<% end %>
|
||||||
<% if policy(QrCode).show? %>
|
<% if policy(QrCode).show? %>
|
||||||
<%= link_to fa_icon("qrcode", text: t(".actions.qr_code")), [contract_template, :qr_codes], class: "dropdown-item", target: :_blank %>
|
<%= link_to fa_icon("qrcode", text: t(".actions.qr_code")), [contract_template, :qr_codes], class: "dropdown-item", target: :_blank %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<%= bootstrap_form_with model: [project, contract_template], local: true do |form| %>
|
<%= bootstrap_form_with model: model, local: true do |form| %>
|
||||||
<%= field_set_tag content_tag(:span, t(".release_info.heading"), class: "h6 text-muted text-uppercase") do %>
|
<%= field_set_tag content_tag(:span, t(".release_info.heading"), class: "h6 text-muted text-uppercase") do %>
|
||||||
<div class="form-row">
|
<div class="form-row">
|
||||||
<%= form.text_field :name, wrapper_class: "col-sm-6" %>
|
<%= form.text_field :name, wrapper_class: "col-sm-6" %>
|
||||||
|
|||||||
6
app/views/contract_templates/edit.html.erb
Normal file
6
app/views/contract_templates/edit.html.erb
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<div class="card shadow-sm">
|
||||||
|
<%= card_header text: t(".heading"), close_action_path: [@project, :contract_templates] %>
|
||||||
|
<div class="card-body">
|
||||||
|
<%= render "form", model: @contract_template, project: @project, contract_template: @contract_template %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@@ -5,12 +5,14 @@
|
|||||||
<%= link_to fa_icon("plus", text: t(".actions.new")), [:new, @project, :contract_template], class: "btn btn-primary" %>
|
<%= link_to fa_icon("plus", text: t(".actions.new")), [:new, @project, :contract_template], class: "btn btn-primary" %>
|
||||||
<%= link_to fa_icon("clone", text: t(".actions.import")), [:new, @project, :release_template_imports], class: "btn btn-secondary" %>
|
<%= link_to fa_icon("clone", text: t(".actions.import")), [:new, @project, :release_template_imports], class: "btn btn-secondary" %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
<%= link_to "Group QR Code", "javascript:void(0);", class: "btn btn-light border disabled", id: "group_qr_code", data: { project_id: @project.id, contract_template_ids: [] } %>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div class="border bg-white rounded shadow-sm pb-3 table-responsive">
|
<div class="border bg-white rounded shadow-sm pb-3 table-responsive">
|
||||||
<table class="table table-striped tr-px-4 align-all-middle">
|
<table class="table table-striped tr-px-4 align-all-middle">
|
||||||
<thead class="thead-light">
|
<thead class="thead-light">
|
||||||
<tr>
|
<tr>
|
||||||
|
<th></th>
|
||||||
<th><%= ContractTemplate.human_attribute_name(:name) %></th>
|
<th><%= ContractTemplate.human_attribute_name(:name) %></th>
|
||||||
<th><%= ContractTemplate.human_attribute_name(:fee) %></th>
|
<th><%= ContractTemplate.human_attribute_name(:fee) %></th>
|
||||||
<th><%= t(".table_headers.release_type") %></th>
|
<th><%= t(".table_headers.release_type") %></th>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<div class="card shadow-sm">
|
<div class="card shadow-sm">
|
||||||
<%= card_header text: t(".heading"), close_action_path: [@project, :contract_templates] %>
|
<%= card_header text: t(".heading"), close_action_path: [@project, :contract_templates] %>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<%= render "form", project: @project, contract_template: @contract_template %>
|
<%= render "form", model: [@project, @contract_template], project: @project, contract_template: @contract_template %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
<dl>
|
<dl>
|
||||||
<%= description_list_pair t('.description_labels.producer'), releasable.project.account.name %>
|
<%= description_list_pair t('.description_labels.producer'), releasable.project.account.name %>
|
||||||
<%= description_list_pair t('.description_labels.production'), releasable.project.name %>
|
<%= description_list_pair t('.description_labels.production'), releasable.project.name %>
|
||||||
<%= description_list_pair t('.description_labels.employee_issued_to'), releasable.name %>
|
<%= description_list_pair t('.description_labels.issued_to'), releasable.name %>
|
||||||
<%= description_list_pair t('.description_labels.issued_by'), releasable.approved_by_user_name %>
|
<%= description_list_pair t('.description_labels.issued_by'), releasable.approved_by_user_name %>
|
||||||
<%= description_list_pair t('.description_labels.date_issued'), releasable.approved_at %>
|
<%= description_list_pair t('.description_labels.date_issued'), releasable.approved_at %>
|
||||||
</dl>
|
</dl>
|
||||||
@@ -26,7 +26,7 @@
|
|||||||
<%= render "contracts/signature_page", releasable: releasable, contract_template: contract_template, preview: preview %>
|
<%= render "contracts/signature_page", releasable: releasable, contract_template: contract_template, preview: preview %>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<% if releasable.class == MedicalRelease && releasable.approved? %>
|
<% if releasable.respond_to?(:approved?) && releasable.approved? %>
|
||||||
<div class="page">
|
<div class="page">
|
||||||
<%= render "contracts/for_office_use_only", releasable: releasable, preview: preview %>
|
<%= render "contracts/for_office_use_only", releasable: releasable, preview: preview %>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,5 +1,13 @@
|
|||||||
<tr id="<%= dom_id(location_release) %>">
|
<tr id="<%= dom_id(location_release) %>">
|
||||||
<td data-behavior="select"><%= check_box_tag "location_release_ids[]", location_release.id, false %></td>
|
<td data-behavior="select"><%= check_box_tag "location_release_ids[]", location_release.id, false %></td>
|
||||||
|
<td class="text-center">
|
||||||
|
<% if location_release.approved? %>
|
||||||
|
<% tooltip_user_data = get_approval_data_for_releasable(location_release) %>
|
||||||
|
<i class="fa fa-check-circle fa-2x text-success"
|
||||||
|
data-toggle="tooltip"
|
||||||
|
title="<%= t '.messages.approved_tooltip', user: tooltip_user_data, timestamp: location_release.approved_at %>"></i>
|
||||||
|
<% end %>
|
||||||
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<% if location_release.photo.attached? %>
|
<% if location_release.photo.attached? %>
|
||||||
<%= image_tag medium_variant(location_release.photo), class: "img-fluid" %>
|
<%= image_tag medium_variant(location_release.photo), class: "img-fluid" %>
|
||||||
@@ -39,6 +47,9 @@
|
|||||||
<% if policy(Contract).show? && (location_release.contract.attached? || location_release.contract_template.present?) %>
|
<% if policy(Contract).show? && (location_release.contract.attached? || location_release.contract_template.present?) %>
|
||||||
<%= link_to fa_icon("download fw", text: "Download"), [location_release, :contracts, format: "pdf"], class: "dropdown-item", target: "_blank" %>
|
<%= link_to fa_icon("download fw", text: "Download"), [location_release, :contracts, format: "pdf"], class: "dropdown-item", target: "_blank" %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
<% if policy(LocationRelease).review? %>
|
||||||
|
<%= link_to fa_icon("search fw", text: t('.actions.review')), new_location_release_approvals_path(location_release), class: "dropdown-item" %>
|
||||||
|
<% end %>
|
||||||
<% if policy(location_release).edit? %>
|
<% if policy(location_release).edit? %>
|
||||||
<%= link_to fa_icon("pencil fw", text: "Edit"), [:edit, location_release], class: "dropdown-item" %>
|
<%= link_to fa_icon("pencil fw", text: "Edit"), [:edit, location_release], class: "dropdown-item" %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|||||||
@@ -26,6 +26,7 @@
|
|||||||
<thead class="thead-light">
|
<thead class="thead-light">
|
||||||
<tr>
|
<tr>
|
||||||
<th data-behavior="all-selectable"><%= check_box_tag "location_release_ids[]", false, false %></th>
|
<th data-behavior="all-selectable"><%= check_box_tag "location_release_ids[]", false, false %></th>
|
||||||
|
<th><%= t '.table_headers.approved'%></th>
|
||||||
<th></th>
|
<th></th>
|
||||||
<th><%= LocationRelease.human_attribute_name(:name) %></th>
|
<th><%= LocationRelease.human_attribute_name(:name) %></th>
|
||||||
<th><%= t(".table_headers.address") %>
|
<th><%= t(".table_headers.address") %>
|
||||||
|
|||||||
@@ -1,5 +1,13 @@
|
|||||||
<tr id="<%= dom_id(material_release) %>">
|
<tr id="<%= dom_id(material_release) %>">
|
||||||
<td data-behavior="select"><%= check_box_tag "material_release_ids[]", material_release.id, false %></td>
|
<td data-behavior="select"><%= check_box_tag "material_release_ids[]", material_release.id, false %></td>
|
||||||
|
<td class="text-center">
|
||||||
|
<% if material_release.approved? %>
|
||||||
|
<% tooltip_user_data = get_approval_data_for_releasable(material_release) %>
|
||||||
|
<i class="fa fa-check-circle fa-2x text-success"
|
||||||
|
data-toggle="tooltip"
|
||||||
|
title="<%= t '.messages.approved_tooltip', user: tooltip_user_data, timestamp: material_release.approved_at %>"></i>
|
||||||
|
<% end %>
|
||||||
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<% if material_release.photo.attached? %>
|
<% if material_release.photo.attached? %>
|
||||||
<%= image_tag medium_variant(material_release.photo), class: "img-fluid" %>
|
<%= image_tag medium_variant(material_release.photo), class: "img-fluid" %>
|
||||||
@@ -36,6 +44,9 @@
|
|||||||
<% if policy(Contract).show? && (material_release.contract.attached? || material_release.contract_template.present?) %>
|
<% if policy(Contract).show? && (material_release.contract.attached? || material_release.contract_template.present?) %>
|
||||||
<%= link_to fa_icon("download fw", text: "Download"), [material_release, :contracts, format: "pdf"], class: "dropdown-item", target: "_blank" %>
|
<%= link_to fa_icon("download fw", text: "Download"), [material_release, :contracts, format: "pdf"], class: "dropdown-item", target: "_blank" %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
<% if policy(MaterialRelease).review? %>
|
||||||
|
<%= link_to fa_icon("search fw", text: t('.actions.review')), new_material_release_approvals_path(material_release), class: "dropdown-item" %>
|
||||||
|
<% end %>
|
||||||
<% if policy(material_release).edit? %>
|
<% if policy(material_release).edit? %>
|
||||||
<%= link_to fa_icon("pencil fw", text: "Edit"), [:edit, material_release], class: "dropdown-item" %>
|
<%= link_to fa_icon("pencil fw", text: "Edit"), [:edit, material_release], class: "dropdown-item" %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|||||||
@@ -26,6 +26,7 @@
|
|||||||
<thead class="thead-light">
|
<thead class="thead-light">
|
||||||
<tr>
|
<tr>
|
||||||
<th data-behavior="all-selectable"><%= check_box_tag "material_release_ids[]", false, false %></th>
|
<th data-behavior="all-selectable"><%= check_box_tag "material_release_ids[]", false, false %></th>
|
||||||
|
<th><%= t '.table_headers.approved'%></th>
|
||||||
<th></th>
|
<th></th>
|
||||||
<th><%= MaterialRelease.human_attribute_name(:name) %></th>
|
<th><%= MaterialRelease.human_attribute_name(:name) %></th>
|
||||||
<th><%= t(".table_headers.notes") %></th>
|
<th><%= t(".table_headers.notes") %></th>
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
<td data-behavior="select"><%= check_box_tag "medical_release_ids[]", medical_release.id, false %></td>
|
<td data-behavior="select"><%= check_box_tag "medical_release_ids[]", medical_release.id, false %></td>
|
||||||
<td class="text-center">
|
<td class="text-center">
|
||||||
<% if medical_release.approved? %>
|
<% if medical_release.approved? %>
|
||||||
<% tooltip_user_data = get_approval_data_for_medical_release(medical_release) %>
|
<% tooltip_user_data = get_approval_data_for_releasable(medical_release) %>
|
||||||
<i class="fa fa-check-circle fa-2x text-success"
|
<i class="fa fa-check-circle fa-2x text-success"
|
||||||
data-toggle="tooltip"
|
data-toggle="tooltip"
|
||||||
title="<%= t '.messages.approved_tooltip', user: tooltip_user_data, timestamp: medical_release.approved_at %>"></i>
|
title="<%= t '.messages.approved_tooltip', user: tooltip_user_data, timestamp: medical_release.approved_at %>"></i>
|
||||||
|
|||||||
@@ -1,5 +1,13 @@
|
|||||||
<tr id="<%= dom_id(misc_release) %>">
|
<tr id="<%= dom_id(misc_release) %>">
|
||||||
<td data-behavior="select"><%= check_box_tag "misc_release_ids[]", misc_release.id, false %></td>
|
<td data-behavior="select"><%= check_box_tag "misc_release_ids[]", misc_release.id, false %></td>
|
||||||
|
<td class="text-center">
|
||||||
|
<% if misc_release.approved? %>
|
||||||
|
<% tooltip_user_data = get_approval_data_for_releasable(misc_release) %>
|
||||||
|
<i class="fa fa-check-circle fa-2x text-success"
|
||||||
|
data-toggle="tooltip"
|
||||||
|
title="<%= t '.messages.approved_tooltip', user: tooltip_user_data, timestamp: misc_release.approved_at %>"></i>
|
||||||
|
<% end %>
|
||||||
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<% if misc_release.photo.attached? %>
|
<% if misc_release.photo.attached? %>
|
||||||
<%= image_tag medium_variant(misc_release.photo), class: "img-fluid" %>
|
<%= image_tag medium_variant(misc_release.photo), class: "img-fluid" %>
|
||||||
@@ -36,6 +44,9 @@
|
|||||||
<% if policy(misc_release.tags).new? %>
|
<% if policy(misc_release.tags).new? %>
|
||||||
<%= link_to fa_icon("tags fw", text: "Tags"), [:new, misc_release, :acts_as_taggable_on_tag], class: "dropdown-item", remote: true %>
|
<%= link_to fa_icon("tags fw", text: "Tags"), [:new, misc_release, :acts_as_taggable_on_tag], class: "dropdown-item", remote: true %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
<% if policy(MiscRelease).review? %>
|
||||||
|
<%= link_to fa_icon("search fw", text: t('.actions.review')), new_misc_release_approvals_path(misc_release), class: "dropdown-item" %>
|
||||||
|
<% end %>
|
||||||
<% if policy(MedicalRelease).download_single? && policy(Contract).show? && (misc_release.contract.attached? || misc_release.contract_template.present?) %>
|
<% if policy(MedicalRelease).download_single? && policy(Contract).show? && (misc_release.contract.attached? || misc_release.contract_template.present?) %>
|
||||||
<%= link_to fa_icon("download fw", text: "Download"), [misc_release, :contracts, format: "pdf"], class: "dropdown-item", target: "_blank" %>
|
<%= link_to fa_icon("download fw", text: "Download"), [misc_release, :contracts, format: "pdf"], class: "dropdown-item", target: "_blank" %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|||||||
@@ -22,6 +22,7 @@
|
|||||||
<thead class="thead-light">
|
<thead class="thead-light">
|
||||||
<tr>
|
<tr>
|
||||||
<th data-behavior="all-selectable"><%= check_box_tag "misc_release_ids[]", false, false %></th>
|
<th data-behavior="all-selectable"><%= check_box_tag "misc_release_ids[]", false, false %></th>
|
||||||
|
<th><%= t '.table_headers.approved'%></th>
|
||||||
<th></th>
|
<th></th>
|
||||||
<th><%= MiscRelease.human_attribute_name(:person_name) %></th>
|
<th><%= MiscRelease.human_attribute_name(:person_name) %></th>
|
||||||
<th><%= MiscRelease.human_attribute_name(:contact_info) %></th>
|
<th><%= MiscRelease.human_attribute_name(:contact_info) %></th>
|
||||||
|
|||||||
@@ -1,5 +1,13 @@
|
|||||||
<tr id="<%= dom_id(music_release) %>">
|
<tr id="<%= dom_id(music_release) %>">
|
||||||
<td data-behavior="select"><%= check_box_tag "music_release_ids[]", music_release.id, false %></td>
|
<td data-behavior="select"><%= check_box_tag "music_release_ids[]", music_release.id, false %></td>
|
||||||
|
<td class="text-center">
|
||||||
|
<% if music_release.approved? %>
|
||||||
|
<% tooltip_user_data = get_approval_data_for_releasable(music_release) %>
|
||||||
|
<i class="fa fa-check-circle fa-2x text-success"
|
||||||
|
data-toggle="tooltip"
|
||||||
|
title="<%= t '.messages.approved_tooltip', user: tooltip_user_data, timestamp: music_release.approved_at %>"></i>
|
||||||
|
<% end %>
|
||||||
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<%= music_release.name %>
|
<%= music_release.name %>
|
||||||
</td>
|
</td>
|
||||||
@@ -36,6 +44,9 @@
|
|||||||
<% if policy(Contract).show? && (music_release.contract.attached? || music_release.contract_template.present?) %>
|
<% if policy(Contract).show? && (music_release.contract.attached? || music_release.contract_template.present?) %>
|
||||||
<%= link_to fa_icon("download fw", text: "Download"), [music_release, :contracts, format: "pdf"], class: "dropdown-item", target: "_blank" %>
|
<%= link_to fa_icon("download fw", text: "Download"), [music_release, :contracts, format: "pdf"], class: "dropdown-item", target: "_blank" %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
<% if policy(MusicRelease).review? %>
|
||||||
|
<%= link_to fa_icon("search fw", text: t('.actions.review')), new_music_release_approvals_path(music_release), class: "dropdown-item" %>
|
||||||
|
<% end %>
|
||||||
<% if policy(music_release).edit? %>
|
<% if policy(music_release).edit? %>
|
||||||
<%= link_to fa_icon("pencil fw", text: "Edit"), [:edit, music_release], class: "dropdown-item" %>
|
<%= link_to fa_icon("pencil fw", text: "Edit"), [:edit, music_release], class: "dropdown-item" %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|||||||
@@ -25,6 +25,7 @@
|
|||||||
<thead class="thead-light">
|
<thead class="thead-light">
|
||||||
<tr>
|
<tr>
|
||||||
<th data-behavior="all-selectable"><%= check_box_tag "music_release_ids[]", false, false %></th>
|
<th data-behavior="all-selectable"><%= check_box_tag "music_release_ids[]", false, false %></th>
|
||||||
|
<th><%= t '.table_headers.approved'%></th>
|
||||||
<th><%= MusicRelease.human_attribute_name(:name) %></th>
|
<th><%= MusicRelease.human_attribute_name(:name) %></th>
|
||||||
<th><%= t(".table_headers.file_infos_count") %></th>
|
<th><%= t(".table_headers.file_infos_count") %></th>
|
||||||
<th><%= t(".table_headers.composers_count") %></th>
|
<th><%= t(".table_headers.composers_count") %></th>
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<%= contract_template.name %>
|
||||||
|
</td>
|
||||||
|
<td class="text-right" nowrap>
|
||||||
|
<%= link_to t(".actions.sign"), [:new, contract_template.project.account, contract_template.project, contract_template, "#{contract_template.release_type}_release"], class: "btn btn-sm btn-primary", target: :_blank %>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
27
app/views/public/contract_templates/index.html.erb
Normal file
27
app/views/public/contract_templates/index.html.erb
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
<% content_for :header do %>
|
||||||
|
<header class="container-fluid py-3 border-bottom sticky-top bg-light">
|
||||||
|
<div class="row align-items-center justify-content-center">
|
||||||
|
<div class="col-4 text-center">
|
||||||
|
<h1 class="h4 m-0"><%= @account.name %></h1>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
<div class="border bg-white rounded shadow-sm pb-3 table-responsive">
|
||||||
|
<table class="table table-striped tr-px-4 align-all-middle">
|
||||||
|
<thead class="thead-light">
|
||||||
|
<tr>
|
||||||
|
<th><%= ContractTemplate.human_attribute_name(:name) %></th>
|
||||||
|
<th></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<%= render @contract_templates %>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="mt-3">
|
||||||
|
<%= will_paginate @contract_templates %>
|
||||||
|
</div>
|
||||||
@@ -1,5 +1,13 @@
|
|||||||
<tr id="<%= dom_id(talent_release) %>">
|
<tr id="<%= dom_id(talent_release) %>">
|
||||||
<td data-behavior="select"><%= check_box_tag "talent_release_ids[]", talent_release.id, false %></td>
|
<td data-behavior="select"><%= check_box_tag "talent_release_ids[]", talent_release.id, false %></td>
|
||||||
|
<td class="text-center">
|
||||||
|
<% if talent_release.approved? %>
|
||||||
|
<% tooltip_user_data = get_approval_data_for_releasable(talent_release) %>
|
||||||
|
<i class="fa fa-check-circle fa-2x text-success"
|
||||||
|
data-toggle="tooltip"
|
||||||
|
title="<%= t '.messages.approved_tooltip', user: tooltip_user_data, timestamp: talent_release.approved_at %>"></i>
|
||||||
|
<% end %>
|
||||||
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<% if talent_release.photo.attached? %>
|
<% if talent_release.photo.attached? %>
|
||||||
<%= image_tag medium_variant(talent_release.photo), class: "img-fluid" %>
|
<%= image_tag medium_variant(talent_release.photo), class: "img-fluid" %>
|
||||||
@@ -42,6 +50,9 @@
|
|||||||
<% if policy(Contract).show? && (talent_release.contract.attached? || talent_release.contract_template.present?) %>
|
<% if policy(Contract).show? && (talent_release.contract.attached? || talent_release.contract_template.present?) %>
|
||||||
<%= link_to fa_icon("download fw", text: "Download"), [talent_release, :contracts, format: "pdf"], class: "dropdown-item", target: "_blank" %>
|
<%= link_to fa_icon("download fw", text: "Download"), [talent_release, :contracts, format: "pdf"], class: "dropdown-item", target: "_blank" %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
<% if policy(TalentRelease).review? %>
|
||||||
|
<%= link_to fa_icon("search fw", text: t('.actions.review')), new_talent_release_approvals_path(talent_release), class: "dropdown-item" %>
|
||||||
|
<% end %>
|
||||||
<% if policy(talent_release).edit? %>
|
<% if policy(talent_release).edit? %>
|
||||||
<%= link_to fa_icon("pencil fw", text: "Edit"), [:edit, talent_release], class: "dropdown-item" %>
|
<%= link_to fa_icon("pencil fw", text: "Edit"), [:edit, talent_release], class: "dropdown-item" %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|||||||
@@ -26,6 +26,7 @@
|
|||||||
<thead class="thead-light">
|
<thead class="thead-light">
|
||||||
<tr>
|
<tr>
|
||||||
<th data-behavior="all-selectable"><%= check_box_tag "talent_release_ids[]", false, false %></th>
|
<th data-behavior="all-selectable"><%= check_box_tag "talent_release_ids[]", false, false %></th>
|
||||||
|
<th><%= t '.table_headers.approved'%></th>
|
||||||
<th></th>
|
<th></th>
|
||||||
<th><%= TalentRelease.human_attribute_name(:person_name) %></th>
|
<th><%= TalentRelease.human_attribute_name(:person_name) %></th>
|
||||||
<th><%= TalentRelease.human_attribute_name(:person_phone) %></th>
|
<th><%= TalentRelease.human_attribute_name(:person_phone) %></th>
|
||||||
|
|||||||
@@ -1,9 +1,19 @@
|
|||||||
<%= errors_summary_for task_request %>
|
<%= errors_summary_for task_request %>
|
||||||
|
|
||||||
<%= bootstrap_form_with model: model, url: [@project, @task_request, show_chat: true], local: true do |form| %>
|
<%= bootstrap_form_with model: model, url: [@project, @task_request, show_chat: true], local: true do |form| %>
|
||||||
<div class="alert alert-info text-center text-md-left">
|
|
||||||
<%= fa_icon "info-circle" %>
|
<div class="d-flex">
|
||||||
<strong><%= t '.info_message' %></strong>
|
<div class="row">
|
||||||
|
<div class="col-xl-10 col-12">
|
||||||
|
<div class="alert alert-info text-center text-md-left">
|
||||||
|
<%= fa_icon "info-circle" %>
|
||||||
|
<strong><%= t '.info_message' %></strong>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-xl-2 col-12">
|
||||||
|
<%= form.submit t('.actions.chat_now'), class: "btn btn-block btn-warning pt-4 pb-4 mb-1", data: { disable_with: t("shared.disable_with") } %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<%= form.text_area :description, label: t('.labels.description') %>
|
<%= form.text_area :description, label: t('.labels.description') %>
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
unless Rails.env.test?
|
unless Rails.env.test?
|
||||||
|
allowed_hosts = ENV['ALLOWED_HOSTS'].to_s.split(",")
|
||||||
|
|
||||||
Rails.application.config.hosts << AppHost.new.domain
|
Rails.application.config.hosts << AppHost.new.domain
|
||||||
|
Rails.application.config.hosts += allowed_hosts
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -29,6 +29,9 @@ en:
|
|||||||
acquired_media_release:
|
acquired_media_release:
|
||||||
actions:
|
actions:
|
||||||
manage: Manage
|
manage: Manage
|
||||||
|
review: Review
|
||||||
|
messages:
|
||||||
|
approved_tooltip: Approved by %{user} on %{timestamp}
|
||||||
no_media: No Media
|
no_media: No Media
|
||||||
create:
|
create:
|
||||||
notice: The acquired media release has been created
|
notice: The acquired media release has been created
|
||||||
@@ -49,6 +52,7 @@ en:
|
|||||||
search: Search
|
search: Search
|
||||||
empty: Acquired Media Releases will appear here
|
empty: Acquired Media Releases will appear here
|
||||||
table_headers:
|
table_headers:
|
||||||
|
approved: Approved
|
||||||
file_infos_count: No. Files
|
file_infos_count: No. Files
|
||||||
name: Name
|
name: Name
|
||||||
notes: Notes
|
notes: Notes
|
||||||
@@ -121,6 +125,9 @@ en:
|
|||||||
appearance_release:
|
appearance_release:
|
||||||
actions:
|
actions:
|
||||||
manage: Manage
|
manage: Manage
|
||||||
|
review: Review
|
||||||
|
messages:
|
||||||
|
approved_tooltip: Approved by %{user} on %{timestamp}
|
||||||
no_photos: Needs Photo
|
no_photos: Needs Photo
|
||||||
create:
|
create:
|
||||||
failed_import: Failed to create appearance release for files listed below
|
failed_import: Failed to create appearance release for files listed below
|
||||||
@@ -152,6 +159,7 @@ en:
|
|||||||
empty: Appearance Releases will appear here
|
empty: Appearance Releases will appear here
|
||||||
imported_appearance_release_missing_attachment: Person photo or contract missing for imported appearance release
|
imported_appearance_release_missing_attachment: Person photo or contract missing for imported appearance release
|
||||||
table_headers:
|
table_headers:
|
||||||
|
approved: Approved
|
||||||
contact_info: Contact info
|
contact_info: Contact info
|
||||||
name: Name
|
name: Name
|
||||||
notes: Notes
|
notes: Notes
|
||||||
@@ -176,11 +184,11 @@ en:
|
|||||||
team_member: Team Member
|
team_member: Team Member
|
||||||
approvals:
|
approvals:
|
||||||
create:
|
create:
|
||||||
release_approved: Medical release has been approved
|
release_approved: "%{release_type} has been approved"
|
||||||
new:
|
new:
|
||||||
actions:
|
actions:
|
||||||
approve: Approve
|
approve: Approve
|
||||||
heading: Review Medical Release
|
heading: "Review %{release_type}"
|
||||||
blank_contracts:
|
blank_contracts:
|
||||||
new:
|
new:
|
||||||
number_of_copies_label: Number of copies
|
number_of_copies_label: Number of copies
|
||||||
@@ -214,9 +222,13 @@ en:
|
|||||||
broadcast_created_at: Created Date
|
broadcast_created_at: Created Date
|
||||||
broadcast_name: Name
|
broadcast_name: Name
|
||||||
broadcast_status: Status
|
broadcast_status: Status
|
||||||
|
broadcast_time_zone: Time Zone of Shoot Location
|
||||||
new:
|
new:
|
||||||
heading:
|
heading:
|
||||||
Create Live Stream
|
Create Live Stream
|
||||||
|
show:
|
||||||
|
actions:
|
||||||
|
reset_url: Reset URL
|
||||||
splash:
|
splash:
|
||||||
actions:
|
actions:
|
||||||
book_demo: Schedule a Demo
|
book_demo: Schedule a Demo
|
||||||
@@ -235,6 +247,8 @@ en:
|
|||||||
share_stream: Share live stream link with clients
|
share_stream: Share live stream link with clients
|
||||||
stream_from_mobile_app: Stream from ME Suite Mobile app, or via a professional camera
|
stream_from_mobile_app: Stream from ME Suite Mobile app, or via a professional camera
|
||||||
stream_multiple_cameras: Stream multiple cameras at one time
|
stream_multiple_cameras: Stream multiple cameras at one time
|
||||||
|
update:
|
||||||
|
reset_notice: The Share URL has been reset, and the previous URL will no longer work. Please click "Copy URL" and share it again with those who you want to have access to this live stream
|
||||||
bulk_taggings:
|
bulk_taggings:
|
||||||
new_bulk_tag_modal:
|
new_bulk_tag_modal:
|
||||||
submit: Add
|
submit: Add
|
||||||
@@ -250,6 +264,8 @@ en:
|
|||||||
contract_template:
|
contract_template:
|
||||||
actions:
|
actions:
|
||||||
copy_url: Copy Release URL
|
copy_url: Copy Release URL
|
||||||
|
duplicate: Duplicate
|
||||||
|
edit: Edit
|
||||||
manage: Manage
|
manage: Manage
|
||||||
qr_code: QR Code
|
qr_code: QR Code
|
||||||
sign: Sign
|
sign: Sign
|
||||||
@@ -259,6 +275,13 @@ en:
|
|||||||
destroy:
|
destroy:
|
||||||
archived_failure: Failed to archive the release template
|
archived_failure: Failed to archive the release template
|
||||||
archived_notice: The release template has been archived
|
archived_notice: The release template has been archived
|
||||||
|
duplicate:
|
||||||
|
name_prefix: Copy of %{template_name}
|
||||||
|
duplicates:
|
||||||
|
create:
|
||||||
|
error: Failed to duplicate release template
|
||||||
|
edit:
|
||||||
|
heading: Edit Contract Template
|
||||||
form:
|
form:
|
||||||
custom_fields:
|
custom_fields:
|
||||||
heading: Questionnaire
|
heading: Questionnaire
|
||||||
@@ -297,12 +320,14 @@ en:
|
|||||||
manage_large_audience: Easily manage large audiences with the crowd control feature
|
manage_large_audience: Easily manage large audiences with the crowd control feature
|
||||||
print_QR_code: Print out release QR codes
|
print_QR_code: Print out release QR codes
|
||||||
releases_automatically_organized: Releases are automatically organized as they’re submitted
|
releases_automatically_organized: Releases are automatically organized as they’re submitted
|
||||||
|
update:
|
||||||
|
notice: The release template has been updated
|
||||||
contracts:
|
contracts:
|
||||||
for_office_use_only:
|
for_office_use_only:
|
||||||
description_labels:
|
description_labels:
|
||||||
date_issued: Date Issued
|
date_issued: Date Issued
|
||||||
employee_issued_to: Employee Issued To
|
|
||||||
issued_by: Issued By
|
issued_by: Issued By
|
||||||
|
issued_to: Issued To
|
||||||
producer: Producer
|
producer: Producer
|
||||||
production: Production
|
production: Production
|
||||||
heading: For Office Use Only
|
heading: For Office Use Only
|
||||||
@@ -689,6 +714,7 @@ en:
|
|||||||
update: Save Changes
|
update: Save Changes
|
||||||
contract_template:
|
contract_template:
|
||||||
create: Create Release Template
|
create: Create Release Template
|
||||||
|
update: Save Changes
|
||||||
directory:
|
directory:
|
||||||
create: Create Folder
|
create: Create Folder
|
||||||
new_file: Upload Files
|
new_file: Upload Files
|
||||||
@@ -745,6 +771,7 @@ en:
|
|||||||
empty: Location Releases will appear here
|
empty: Location Releases will appear here
|
||||||
table_headers:
|
table_headers:
|
||||||
address: Address
|
address: Address
|
||||||
|
approved: Approved
|
||||||
name: Name
|
name: Name
|
||||||
notes: Notes
|
notes: Notes
|
||||||
signed_at: Date Signed
|
signed_at: Date Signed
|
||||||
@@ -752,6 +779,9 @@ en:
|
|||||||
location_release:
|
location_release:
|
||||||
actions:
|
actions:
|
||||||
manage: Manage
|
manage: Manage
|
||||||
|
review: Review
|
||||||
|
messages:
|
||||||
|
approved_tooltip: Approved by %{user} on %{timestamp}
|
||||||
no_photos: Needs Photo
|
no_photos: Needs Photo
|
||||||
new:
|
new:
|
||||||
heading: Import Location Release
|
heading: Import Location Release
|
||||||
@@ -780,6 +810,7 @@ en:
|
|||||||
search: Search
|
search: Search
|
||||||
empty: Material Releases will appear here
|
empty: Material Releases will appear here
|
||||||
table_headers:
|
table_headers:
|
||||||
|
approved: Approved
|
||||||
name: Name
|
name: Name
|
||||||
notes: Notes
|
notes: Notes
|
||||||
signed_at: Date Signed
|
signed_at: Date Signed
|
||||||
@@ -787,6 +818,9 @@ en:
|
|||||||
material_release:
|
material_release:
|
||||||
actions:
|
actions:
|
||||||
manage: Manage
|
manage: Manage
|
||||||
|
review: Review
|
||||||
|
messages:
|
||||||
|
approved_tooltip: Approved by %{user} on %{timestamp}
|
||||||
no_photos: Needs Photo
|
no_photos: Needs Photo
|
||||||
new:
|
new:
|
||||||
heading: Import Material Release (Products / Logos)
|
heading: Import Material Release (Products / Logos)
|
||||||
@@ -823,6 +857,7 @@ en:
|
|||||||
search: Search
|
search: Search
|
||||||
empty: Misc Releases will appear here
|
empty: Misc Releases will appear here
|
||||||
table_headers:
|
table_headers:
|
||||||
|
approved: Approved
|
||||||
contact_info: Contact info
|
contact_info: Contact info
|
||||||
name: Person name
|
name: Person name
|
||||||
notes: Notes
|
notes: Notes
|
||||||
@@ -831,6 +866,9 @@ en:
|
|||||||
misc_release:
|
misc_release:
|
||||||
actions:
|
actions:
|
||||||
manage: Manage
|
manage: Manage
|
||||||
|
review: Review
|
||||||
|
messages:
|
||||||
|
approved_tooltip: Approved by %{user} on %{timestamp}
|
||||||
music_releases:
|
music_releases:
|
||||||
create:
|
create:
|
||||||
notice: The music release has been created
|
notice: The music release has been created
|
||||||
@@ -857,6 +895,7 @@ en:
|
|||||||
search: Search
|
search: Search
|
||||||
empty: Music Releases will appear here
|
empty: Music Releases will appear here
|
||||||
table_headers:
|
table_headers:
|
||||||
|
approved: Approved
|
||||||
composers_count: No. Composers
|
composers_count: No. Composers
|
||||||
file_infos_count: No. Files
|
file_infos_count: No. Files
|
||||||
name: Name
|
name: Name
|
||||||
@@ -867,6 +906,9 @@ en:
|
|||||||
music_release:
|
music_release:
|
||||||
actions:
|
actions:
|
||||||
manage: Manage
|
manage: Manage
|
||||||
|
review: Review
|
||||||
|
messages:
|
||||||
|
approved_tooltip: Approved by %{user} on %{timestamp}
|
||||||
new:
|
new:
|
||||||
heading: Import Music Release
|
heading: Import Music Release
|
||||||
update:
|
update:
|
||||||
@@ -1024,6 +1066,16 @@ en:
|
|||||||
broadcasts:
|
broadcasts:
|
||||||
show:
|
show:
|
||||||
alert: That broadcast is no longer available
|
alert: That broadcast is no longer available
|
||||||
|
contract_templates:
|
||||||
|
contract_template:
|
||||||
|
actions:
|
||||||
|
sign: Sign
|
||||||
|
no_fee: No Fee
|
||||||
|
index:
|
||||||
|
heading: Release Templates
|
||||||
|
table_headers:
|
||||||
|
release_type: Type of Release
|
||||||
|
signed_release_count: No. Signed Releases
|
||||||
location_releases:
|
location_releases:
|
||||||
create:
|
create:
|
||||||
notice: Your release has been signed. Thank you!
|
notice: Your release has been signed. Thank you!
|
||||||
@@ -1256,6 +1308,7 @@ en:
|
|||||||
search: Search
|
search: Search
|
||||||
empty: Talent Releases will appear here
|
empty: Talent Releases will appear here
|
||||||
table_headers:
|
table_headers:
|
||||||
|
approved: Approved
|
||||||
email: Email
|
email: Email
|
||||||
name: Name
|
name: Name
|
||||||
notes: Notes
|
notes: Notes
|
||||||
@@ -1267,6 +1320,9 @@ en:
|
|||||||
talent_release:
|
talent_release:
|
||||||
actions:
|
actions:
|
||||||
manage: Manage
|
manage: Manage
|
||||||
|
review: Review
|
||||||
|
messages:
|
||||||
|
approved_tooltip: Approved by %{user} on %{timestamp}
|
||||||
update:
|
update:
|
||||||
notice: The talent release has been updated
|
notice: The talent release has been updated
|
||||||
task_requests:
|
task_requests:
|
||||||
@@ -1279,7 +1335,9 @@ en:
|
|||||||
heading:
|
heading:
|
||||||
Edit Task Request
|
Edit Task Request
|
||||||
form:
|
form:
|
||||||
info_message: After submitting this task request, you'll be connected via chat with a ME Suite representative.
|
actions:
|
||||||
|
chat_now: Chat Now
|
||||||
|
info_message: For best results, please fill out this form prior to being connected with a TaskME assistant. However, if urgent, you can start speaking with a TaskME assistant by pressing the Chat Now button to the right
|
||||||
labels:
|
labels:
|
||||||
additional_notes: Please add any additional notes we should be aware of regarding this task.
|
additional_notes: Please add any additional notes we should be aware of regarding this task.
|
||||||
deadline: What is the deadline for this task?
|
deadline: What is the deadline for this task?
|
||||||
|
|||||||
@@ -81,6 +81,9 @@ es:
|
|||||||
do_not_copy_warning: "Do not copy (ES)"
|
do_not_copy_warning: "Do not copy (ES)"
|
||||||
serial_number_label: "Serial Number (ES)"
|
serial_number_label: "Serial Number (ES)"
|
||||||
broadcasts:
|
broadcasts:
|
||||||
|
show:
|
||||||
|
actions:
|
||||||
|
reset_url: Reset URL (ES)
|
||||||
splash:
|
splash:
|
||||||
actions:
|
actions:
|
||||||
book_demo: Schedule a Demo
|
book_demo: Schedule a Demo
|
||||||
@@ -99,10 +102,23 @@ es:
|
|||||||
share_stream: Share live stream link with clients
|
share_stream: Share live stream link with clients
|
||||||
stream_from_mobile_app: Stream from ME Suite Mobile app, or via a professional camera
|
stream_from_mobile_app: Stream from ME Suite Mobile app, or via a professional camera
|
||||||
stream_multiple_cameras: Stream multiple cameras at one time
|
stream_multiple_cameras: Stream multiple cameras at one time
|
||||||
|
update:
|
||||||
|
reset_notice: The Share URL has been reset, and the previous URL will no longer work. Please click "Copy URL" and share it again with those who you want to have access to this live stream
|
||||||
contract_templates:
|
contract_templates:
|
||||||
blank_contracts:
|
blank_contracts:
|
||||||
create:
|
create:
|
||||||
number_of_copies_invalid_notice: Please enter valid number greater than 0 (ES)
|
number_of_copies_invalid_notice: Please enter valid number greater than 0 (ES)
|
||||||
|
contract_template:
|
||||||
|
actions:
|
||||||
|
duplicate: Duplicate (ES)
|
||||||
|
edit: Edit (ES)
|
||||||
|
duplicate:
|
||||||
|
name_prefix: Copy of %{template_name} (ES)
|
||||||
|
duplicates:
|
||||||
|
create:
|
||||||
|
error: Failed to duplicate release template (ES)
|
||||||
|
edit:
|
||||||
|
heading: Edit Contract Template (ES)
|
||||||
form:
|
form:
|
||||||
custom_fields:
|
custom_fields:
|
||||||
heading: Medical Questionnaire (ES)
|
heading: Medical Questionnaire (ES)
|
||||||
@@ -129,12 +145,14 @@ es:
|
|||||||
manage_large_audience: Easily manage large audiences with the crowd control feature (ES)
|
manage_large_audience: Easily manage large audiences with the crowd control feature (ES)
|
||||||
print_QR_code: Print out release QR codes (ES)
|
print_QR_code: Print out release QR codes (ES)
|
||||||
releases_automatically_organized: Releases are automatically organized as they’re submitted (ES)
|
releases_automatically_organized: Releases are automatically organized as they’re submitted (ES)
|
||||||
|
update:
|
||||||
|
notice: The release template has been updated (ES)
|
||||||
contracts:
|
contracts:
|
||||||
for_office_use_only:
|
for_office_use_only:
|
||||||
description_labels:
|
description_labels:
|
||||||
date_issued: Date Issued (ES)
|
date_issued: Date Issued (ES)
|
||||||
employee_issued_to: Employee Issued To (ES)
|
|
||||||
issued_by: Issued By (ES)
|
issued_by: Issued By (ES)
|
||||||
|
issued_to: Issued To (ES)
|
||||||
producer: Producer (ES)
|
producer: Producer (ES)
|
||||||
production: Production (ES)
|
production: Production (ES)
|
||||||
heading: For Office Use Only (ES)
|
heading: For Office Use Only (ES)
|
||||||
@@ -304,6 +322,8 @@ es:
|
|||||||
broadcast:
|
broadcast:
|
||||||
create: Create Live Stream (ES)
|
create: Create Live Stream (ES)
|
||||||
update: Save Changes (ES)
|
update: Save Changes (ES)
|
||||||
|
contract_template:
|
||||||
|
update: Save changes (ES)
|
||||||
create: 'Crear %{model}'
|
create: 'Crear %{model}'
|
||||||
medical_release:
|
medical_release:
|
||||||
update: Approve (ES)
|
update: Approve (ES)
|
||||||
@@ -479,7 +499,9 @@ es:
|
|||||||
create:
|
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)
|
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)
|
||||||
form:
|
form:
|
||||||
info_message: After submitting this task request, you'll be connected via chat with a ME Suite representative. (ES)
|
actions:
|
||||||
|
chat_now: Chat Now (ES)
|
||||||
|
info_message: For best results, please fill out this form prior to being connected with a TaskME assistant. However, if urgent, you can start speaking with a TaskME assistant by pressing the Chat Now button to the right (ES)
|
||||||
index:
|
index:
|
||||||
table_headers:
|
table_headers:
|
||||||
task_request_description: Description (ES)
|
task_request_description: Description (ES)
|
||||||
|
|||||||
@@ -22,6 +22,9 @@ Rails.application.routes.draw do
|
|||||||
concern :file_infoable do
|
concern :file_infoable do
|
||||||
resource :file_infos, only: [:edit, :update]
|
resource :file_infos, only: [:edit, :update]
|
||||||
end
|
end
|
||||||
|
concern :approvable do
|
||||||
|
resource :approvals, only: [:new, :create]
|
||||||
|
end
|
||||||
|
|
||||||
constraints AdminSignedInConstraint.new do
|
constraints AdminSignedInConstraint.new do
|
||||||
namespace :admin do
|
namespace :admin do
|
||||||
@@ -56,9 +59,10 @@ Rails.application.routes.draw do
|
|||||||
resources :talent_releases, except: [:show], concerns: [:contractable, :notable, :photoable]
|
resources :talent_releases, except: [:show], concerns: [:contractable, :notable, :photoable]
|
||||||
resources :medical_releases, except: [:show], concerns: [:contractable, :notable, :photoable]
|
resources :medical_releases, except: [:show], concerns: [:contractable, :notable, :photoable]
|
||||||
resources :misc_releases, except: [:show], concerns: [:contractable, :notable, :photoable]
|
resources :misc_releases, except: [:show], concerns: [:contractable, :notable, :photoable]
|
||||||
resources :contract_templates, only: [:index, :new, :create, :destroy] do
|
resources :contract_templates, only: [:index, :new, :create, :edit, :update, :destroy] do
|
||||||
resource :qr_codes, only: [:show], controller: "contract_templates/qr_codes"
|
resource :qr_codes, only: [:show], controller: "contract_templates/qr_codes"
|
||||||
resource :blank_contracts, only: [:show, :new, :create], controller: "contract_templates/blank_contracts"
|
resource :blank_contracts, only: [:show, :new, :create], controller: "contract_templates/blank_contracts"
|
||||||
|
resource :duplicates, only: [:create], controller: "contract_templates/duplicates"
|
||||||
end
|
end
|
||||||
resource :release_template_imports, only: [:new, :create]
|
resource :release_template_imports, only: [:new, :create]
|
||||||
resources :project_memberships, only: [:index, :create, :destroy]
|
resources :project_memberships, only: [:index, :create, :destroy]
|
||||||
@@ -120,7 +124,7 @@ Rails.application.routes.draw do
|
|||||||
scope module: :public do
|
scope module: :public do
|
||||||
resources :accounts, only: [] do
|
resources :accounts, only: [] do
|
||||||
resources :projects, only: [] do
|
resources :projects, only: [] do
|
||||||
resources :contract_templates, only: [] do
|
resources :contract_templates, only: [:index] do
|
||||||
resources :talent_releases, only: [:new, :create]
|
resources :talent_releases, only: [:new, :create]
|
||||||
resources :appearance_releases, only: [:new, :create]
|
resources :appearance_releases, only: [:new, :create]
|
||||||
resources :acquired_media_releases, only: [:new, :create]
|
resources :acquired_media_releases, only: [:new, :create]
|
||||||
@@ -140,12 +144,7 @@ Rails.application.routes.draw do
|
|||||||
ALL_RELEASES = RELEASES + [:music_releases]
|
ALL_RELEASES = RELEASES + [:music_releases]
|
||||||
|
|
||||||
ALL_RELEASES.each do |release|
|
ALL_RELEASES.each do |release|
|
||||||
resources release, only: [], concerns: :taggable
|
resources release, only: [], concerns: [:taggable, :approvable]
|
||||||
end
|
|
||||||
|
|
||||||
# Customization for medical releases
|
|
||||||
resources :medical_releases, only: [], concerns: :taggable do
|
|
||||||
resource :approvals, only: [:new, :create]
|
|
||||||
end
|
end
|
||||||
|
|
||||||
resources :bulk_taggings, only: [:new, :create]
|
resources :bulk_taggings, only: [:new, :create]
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
class AddApprovalFieldsToMusicReleases < ActiveRecord::Migration[6.0]
|
||||||
|
def change
|
||||||
|
add_column :music_releases, :approved_by_user_name, :text
|
||||||
|
add_column :music_releases, :approved_by_user_email, :text
|
||||||
|
add_column :music_releases, :approved_at, :timestamp
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
class AddApprovalFieldsToMiscReleases < ActiveRecord::Migration[6.0]
|
||||||
|
def change
|
||||||
|
add_column :misc_releases, :approved_by_user_name, :text
|
||||||
|
add_column :misc_releases, :approved_by_user_email, :text
|
||||||
|
add_column :misc_releases, :approved_at, :timestamp
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
class AddApprovalFieldsToAcquiredMediaReleases < ActiveRecord::Migration[6.0]
|
||||||
|
def change
|
||||||
|
add_column :acquired_media_releases, :approved_by_user_name, :text
|
||||||
|
add_column :acquired_media_releases, :approved_by_user_email, :text
|
||||||
|
add_column :acquired_media_releases, :approved_at, :timestamp
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
class AddApprovalFieldsToMaterialReleases < ActiveRecord::Migration[6.0]
|
||||||
|
def change
|
||||||
|
add_column :material_releases, :approved_by_user_name, :text
|
||||||
|
add_column :material_releases, :approved_by_user_email, :text
|
||||||
|
add_column :material_releases, :approved_at, :timestamp
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
class AddApprovalFieldsToLocationReleases < ActiveRecord::Migration[6.0]
|
||||||
|
def change
|
||||||
|
add_column :location_releases, :approved_by_user_name, :text
|
||||||
|
add_column :location_releases, :approved_by_user_email, :text
|
||||||
|
add_column :location_releases, :approved_at, :timestamp
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
class AddApprovalFieldsToTalentReleases < ActiveRecord::Migration[6.0]
|
||||||
|
def change
|
||||||
|
add_column :talent_releases, :approved_by_user_name, :text
|
||||||
|
add_column :talent_releases, :approved_by_user_email, :text
|
||||||
|
add_column :talent_releases, :approved_at, :timestamp
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
class AddApprovalFieldsToAppearanceReleases < ActiveRecord::Migration[6.0]
|
||||||
|
def change
|
||||||
|
add_column :appearance_releases, :approved_by_user_name, :text
|
||||||
|
add_column :appearance_releases, :approved_by_user_email, :text
|
||||||
|
add_column :appearance_releases, :approved_at, :timestamp
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
class AddShootLocationTimeZoneToBroadcasts < ActiveRecord::Migration[6.0]
|
||||||
|
def change
|
||||||
|
add_column :broadcasts, :shoot_location_time_zone, :string, default: "UTC"
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
class AddFullLiveStreamPlaybackUrlToBroadcasts < ActiveRecord::Migration[6.0]
|
||||||
|
def change
|
||||||
|
add_column :broadcasts, :full_live_stream_playback_uid, :string
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -9,20 +9,6 @@ SET xmloption = content;
|
|||||||
SET client_min_messages = warning;
|
SET client_min_messages = warning;
|
||||||
SET row_security = off;
|
SET row_security = off;
|
||||||
|
|
||||||
--
|
|
||||||
-- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: -
|
|
||||||
--
|
|
||||||
|
|
||||||
CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog;
|
|
||||||
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: -
|
|
||||||
--
|
|
||||||
|
|
||||||
COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language';
|
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Name: fuzzystrmatch; Type: EXTENSION; Schema: -; Owner: -
|
-- Name: fuzzystrmatch; Type: EXTENSION; Schema: -; Owner: -
|
||||||
--
|
--
|
||||||
@@ -172,7 +158,10 @@ CREATE TABLE public.acquired_media_releases (
|
|||||||
description text,
|
description text,
|
||||||
person_first_name character varying,
|
person_first_name character varying,
|
||||||
person_last_name character varying,
|
person_last_name character varying,
|
||||||
signed_at timestamp without time zone
|
signed_at timestamp without time zone,
|
||||||
|
approved_by_user_name text,
|
||||||
|
approved_by_user_email text,
|
||||||
|
approved_at timestamp without time zone
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
@@ -352,7 +341,10 @@ CREATE TABLE public.appearance_releases (
|
|||||||
guardian_2_address_city character varying,
|
guardian_2_address_city character varying,
|
||||||
guardian_2_address_state character varying,
|
guardian_2_address_state character varying,
|
||||||
guardian_2_address_zip character varying,
|
guardian_2_address_zip character varying,
|
||||||
guardian_2_address_country character varying
|
guardian_2_address_country character varying,
|
||||||
|
approved_by_user_name text,
|
||||||
|
approved_by_user_email text,
|
||||||
|
approved_at timestamp without time zone
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
@@ -547,7 +539,9 @@ CREATE TABLE public.broadcasts (
|
|||||||
stream_key character varying,
|
stream_key character varying,
|
||||||
stream_playback_uid character varying,
|
stream_playback_uid character varying,
|
||||||
token character varying,
|
token character varying,
|
||||||
streamer_status integer DEFAULT 0
|
streamer_status integer DEFAULT 0,
|
||||||
|
shoot_location_time_zone character varying DEFAULT 'UTC'::character varying,
|
||||||
|
full_live_stream_playback_uid character varying
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
@@ -891,7 +885,10 @@ CREATE TABLE public.location_releases (
|
|||||||
filming_ended_on date,
|
filming_ended_on date,
|
||||||
person_first_name character varying,
|
person_first_name character varying,
|
||||||
person_last_name character varying,
|
person_last_name character varying,
|
||||||
filming_hours text
|
filming_hours text,
|
||||||
|
approved_by_user_name text,
|
||||||
|
approved_by_user_email text,
|
||||||
|
approved_at timestamp without time zone
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
@@ -980,7 +977,10 @@ CREATE TABLE public.material_releases (
|
|||||||
signed_at timestamp without time zone,
|
signed_at timestamp without time zone,
|
||||||
description text,
|
description text,
|
||||||
person_first_name character varying,
|
person_first_name character varying,
|
||||||
person_last_name character varying
|
person_last_name character varying,
|
||||||
|
approved_by_user_name text,
|
||||||
|
approved_by_user_email text,
|
||||||
|
approved_at timestamp without time zone
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
@@ -1135,7 +1135,10 @@ CREATE TABLE public.misc_releases (
|
|||||||
question_12_answer text,
|
question_12_answer text,
|
||||||
question_13_answer text,
|
question_13_answer text,
|
||||||
question_14_answer text,
|
question_14_answer text,
|
||||||
question_15_answer text
|
question_15_answer text,
|
||||||
|
approved_by_user_name text,
|
||||||
|
approved_by_user_email text,
|
||||||
|
approved_at timestamp without time zone
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
@@ -1191,7 +1194,10 @@ CREATE TABLE public.music_releases (
|
|||||||
restriction_id bigint,
|
restriction_id bigint,
|
||||||
restriction_text character varying,
|
restriction_text character varying,
|
||||||
person_first_name character varying,
|
person_first_name character varying,
|
||||||
person_last_name character varying
|
person_last_name character varying,
|
||||||
|
approved_by_user_name text,
|
||||||
|
approved_by_user_email text,
|
||||||
|
approved_at timestamp without time zone
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
@@ -1547,7 +1553,10 @@ CREATE TABLE public.talent_releases (
|
|||||||
guardian_2_address_city character varying,
|
guardian_2_address_city character varying,
|
||||||
guardian_2_address_state character varying,
|
guardian_2_address_state character varying,
|
||||||
guardian_2_address_zip character varying,
|
guardian_2_address_zip character varying,
|
||||||
guardian_2_address_country character varying
|
guardian_2_address_country character varying,
|
||||||
|
approved_by_user_name text,
|
||||||
|
approved_by_user_email text,
|
||||||
|
approved_at timestamp without time zone
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
@@ -3924,6 +3933,15 @@ INSERT INTO "schema_migrations" (version) VALUES
|
|||||||
('20200702152130'),
|
('20200702152130'),
|
||||||
('20200707155717'),
|
('20200707155717'),
|
||||||
('20200709120630'),
|
('20200709120630'),
|
||||||
('20200712181139');
|
('20200712181139'),
|
||||||
|
('20200715084927'),
|
||||||
|
('20200716055453'),
|
||||||
|
('20200716075851'),
|
||||||
|
('20200716083706'),
|
||||||
|
('20200716094927'),
|
||||||
|
('20200716103525'),
|
||||||
|
('20200716105723'),
|
||||||
|
('20200720051634'),
|
||||||
|
('20200720131309');
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ RSpec.describe BroadcastsChannel, type: :channel do
|
|||||||
event: "broadcast_stream_update",
|
event: "broadcast_stream_update",
|
||||||
status: broadcast.status,
|
status: broadcast.status,
|
||||||
playback_url: broadcast.stream_playback_url,
|
playback_url: broadcast.stream_playback_url,
|
||||||
|
full_live_stream_playback_url: broadcast.full_live_stream_playback_url,
|
||||||
status_content: status_content,
|
status_content: status_content,
|
||||||
video_content: video_content,
|
video_content: video_content,
|
||||||
streamer_status: broadcast.streamer_status
|
streamer_status: broadcast.streamer_status
|
||||||
|
|||||||
@@ -203,6 +203,15 @@ RSpec.describe BroadcastsController, type: :controller do
|
|||||||
|
|
||||||
expect(BroadcastsChannel).to have_received(:broadcast_file_upload_updates)
|
expect(BroadcastsChannel).to have_received(:broadcast_file_upload_updates)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "regenerates token if #update is called without broadcast param" do
|
||||||
|
old_token = broadcast.token
|
||||||
|
patch :update, params: { project_id: project.id, id: broadcast.id }
|
||||||
|
|
||||||
|
expect(response).to redirect_to [project, broadcast]
|
||||||
|
expect(flash.notice).to eq token_reset_notice
|
||||||
|
expect(Broadcast.last.token).not_to eq old_token
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "#destroy" do
|
describe "#destroy" do
|
||||||
@@ -252,4 +261,8 @@ RSpec.describe BroadcastsController, type: :controller do
|
|||||||
def create_stream
|
def create_stream
|
||||||
t 'broadcasts.splash.actions.create_stream'
|
t 'broadcasts.splash.actions.create_stream'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def token_reset_notice
|
||||||
|
t 'broadcasts.update.reset_notice'
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
30
spec/controllers/contract_templates/duplicates_controller.rb
Normal file
30
spec/controllers/contract_templates/duplicates_controller.rb
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
describe ContractTemplates::DuplicatesController do
|
||||||
|
let(:account) { build(:account) }
|
||||||
|
let(:current_user) { create(:user, :manager, primary_account: account) }
|
||||||
|
let(:project) { create(:project, members: [current_user], account: account) }
|
||||||
|
|
||||||
|
before do
|
||||||
|
sign_in(current_user)
|
||||||
|
end
|
||||||
|
|
||||||
|
describe '#create' do
|
||||||
|
it "responds with redirect to the edit page for newly created duplicate" do
|
||||||
|
contract_template = create(:contract_template, project: project)
|
||||||
|
|
||||||
|
expect do
|
||||||
|
post :create, params: { contract_template_id: contract_template }
|
||||||
|
end.to change(ContractTemplate, :count).by(1)
|
||||||
|
|
||||||
|
new_ct = ContractTemplate.last
|
||||||
|
|
||||||
|
expect(new_ct.name).to eq t('contract_templates.duplicate.name_prefix', template_name: contract_template.name)
|
||||||
|
expect(new_ct.release_type).to eq contract_template.release_type
|
||||||
|
|
||||||
|
expect(response).to redirect_to [:edit, new_ct]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -5,6 +5,7 @@ describe ContractTemplates::QrCodesController do
|
|||||||
let(:current_user) { create(:user, :manager, primary_account: account) }
|
let(:current_user) { create(:user, :manager, primary_account: account) }
|
||||||
let(:project) { create(:project, members: [current_user], account: account) }
|
let(:project) { create(:project, members: [current_user], account: account) }
|
||||||
let(:contract_template) { create(:contract_template, project: project) }
|
let(:contract_template) { create(:contract_template, project: project) }
|
||||||
|
let(:contract_templates) { create_list(:contract_template, 5, project: project)}
|
||||||
|
|
||||||
before do
|
before do
|
||||||
sign_in(current_user)
|
sign_in(current_user)
|
||||||
@@ -16,5 +17,13 @@ describe ContractTemplates::QrCodesController do
|
|||||||
|
|
||||||
expect(response).to be_successful
|
expect(response).to be_successful
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context "for group qr code" do
|
||||||
|
it "responds with success" do
|
||||||
|
get :show, params: { contract_template_id: contract_templates.first, multi_sign_ids: contract_templates }
|
||||||
|
|
||||||
|
expect(response).to be_successful
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -118,6 +118,57 @@ describe ContractTemplatesController do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe '#edit' do
|
||||||
|
let(:contract_template) do
|
||||||
|
create(:contract_template,
|
||||||
|
name: 'My Contract Template', fee: 50, release_type: 'appearance',
|
||||||
|
project: project)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'responds ok' do
|
||||||
|
get :edit, params: { project_id: project, id: contract_template }
|
||||||
|
|
||||||
|
expect(response).to be_successful
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when current user is an associate' do
|
||||||
|
let(:current_user) { create(:user, :associate) }
|
||||||
|
|
||||||
|
it 'raises exception' do
|
||||||
|
expect do
|
||||||
|
get :edit, params: { project_id: project, id: contract_template }
|
||||||
|
end.to raise_error(Pundit::NotAuthorizedError)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
describe '#update' do
|
||||||
|
let(:contract_template) do
|
||||||
|
create(:contract_template,
|
||||||
|
name: 'My Contract Template', fee: 50, release_type: 'appearance',
|
||||||
|
project: project)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'redirects' do
|
||||||
|
patch :update, params: { project_id: project, id: contract_template, contract_template: contract_template_params }
|
||||||
|
|
||||||
|
expect(response).to redirect_to(project_contract_templates_path(project))
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
context 'when current user is an associate' do
|
||||||
|
let(:current_user) { create(:user, :associate) }
|
||||||
|
|
||||||
|
it 'raises exception' do
|
||||||
|
expect do
|
||||||
|
patch :update, params: { project_id: project, id: contract_template, contract_template: contract_template_params }
|
||||||
|
end.to raise_error(Pundit::NotAuthorizedError)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe '#destroy' do
|
describe '#destroy' do
|
||||||
let!(:contract_template) { create(:contract_template, project: project) }
|
let!(:contract_template) { create(:contract_template, project: project) }
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,39 @@
|
|||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
RSpec.describe Public::ContractTemplatesController, type: :controller do
|
||||||
|
render_views
|
||||||
|
|
||||||
|
let(:account) { create(:account, name: "Dev Account") }
|
||||||
|
let(:project) { create(:project, account: account) }
|
||||||
|
let(:contract_templates) { create_list(:contract_template, 20, project: project) }
|
||||||
|
|
||||||
|
describe '#index' do
|
||||||
|
it 'responds successfully' do
|
||||||
|
get :index, params: { project_id: project, account_id: project.account, contract_template_ids: contract_templates.map(&:id) }
|
||||||
|
|
||||||
|
expect(response).to be_successful
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'renders content if there are contract templates' do
|
||||||
|
contract_template = create(:contract_template,
|
||||||
|
name: 'My Contract Template', fee: 50, release_type: 'appearance',
|
||||||
|
project: project)
|
||||||
|
sign_path = new_account_project_contract_template_appearance_release_path(project.account, project, contract_template)
|
||||||
|
sign_url = new_account_project_contract_template_appearance_release_url(project.account, project, contract_template)
|
||||||
|
|
||||||
|
get :index, params: { project_id: project, account_id: project.account, contract_template_ids: [contract_template.id] }
|
||||||
|
|
||||||
|
expect(response.body).to have_content('My Contract Template')
|
||||||
|
expect(response.body).to have_link('Sign', href: sign_path)
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when there are many records' do
|
||||||
|
it 'paginates the table' do
|
||||||
|
get :index, params: { project_id: project, account_id: project.account, contract_template_ids: contract_templates.map(&:id) }
|
||||||
|
|
||||||
|
expect(response.body).to have_link('2', href: account_project_contract_templates_path(project.account, project, contract_template_ids: contract_templates.map(&:id), page: 2))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
@@ -4,27 +4,45 @@ RSpec.describe StreamNotificationsController, type: :controller do
|
|||||||
render_views
|
render_views
|
||||||
|
|
||||||
let!(:broadcast) { create(:broadcast, :with_stream, skip_create_callback: true, name: "Live Stream") }
|
let!(:broadcast) { create(:broadcast, :with_stream, skip_create_callback: true, name: "Live Stream") }
|
||||||
let(:active_status) { {type: "video.live_stream.active", object: { id: "mux_stream" }} }
|
let(:active_status) { { type: "video.live_stream.active", object: { id: "mux_stream" } } }
|
||||||
let(:disconnected_status) { {type: "video.live_stream.disconnected", object: { id: "mux_stream" }} }
|
let(:disconnected_status) { { type: "video.live_stream.disconnected", object: { id: "mux_stream" } } }
|
||||||
let(:idle_status) { {type: "video.live_stream.idle", object: { id: "mux_stream" }} }
|
let(:idle_status) { { type: "video.live_stream.idle", object: { id: "mux_stream" } } }
|
||||||
let(:idle_status_for_unknown_broadcast) { {type: "video.live_stream.idle", object: { id: "unknown-id" }} }
|
let(:idle_status_for_unknown_broadcast) { { type: "video.live_stream.idle", object: { id: "unknown-id" } } }
|
||||||
let(:asset_ready) { {
|
let(:asset_ready) do
|
||||||
type: "video.asset.static_renditions.ready",
|
{
|
||||||
object: { id: "asset_uid" },
|
type: "video.asset.static_renditions.ready",
|
||||||
data: {
|
object: { id: "asset_uid" },
|
||||||
playback_ids: [
|
|
||||||
{id: "playback_uid"}
|
|
||||||
],
|
|
||||||
static_renditions: {
|
|
||||||
files: [{name: "high.mp4"}]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
stream_notification: {
|
|
||||||
data: {
|
data: {
|
||||||
live_stream_id: "mux_stream"
|
playback_ids: [
|
||||||
|
{ id: "playback_uid" }
|
||||||
|
],
|
||||||
|
static_renditions: {
|
||||||
|
files: [{ name: "high.mp4" }]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
stream_notification: {
|
||||||
|
data: {
|
||||||
|
live_stream_id: "mux_stream"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} }
|
end
|
||||||
|
let(:full_live_stream_ready) do
|
||||||
|
{
|
||||||
|
type: "video.asset.ready",
|
||||||
|
object: { id: "active_asset_uid" },
|
||||||
|
data: {
|
||||||
|
playback_ids: [
|
||||||
|
{ id: "full_live_stream_playback_uid" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
stream_notification: {
|
||||||
|
data: {
|
||||||
|
live_stream_id: "mux_stream"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
describe "#create" do
|
describe "#create" do
|
||||||
before do
|
before do
|
||||||
@@ -54,13 +72,20 @@ RSpec.describe StreamNotificationsController, type: :controller do
|
|||||||
end
|
end
|
||||||
|
|
||||||
it "creates a broadcast recording when static_renditions.ready is received in notification" do
|
it "creates a broadcast recording when static_renditions.ready is received in notification" do
|
||||||
expect {
|
expect do
|
||||||
post :create, params: asset_ready
|
post :create, params: asset_ready
|
||||||
}.to change(BroadcastRecording, :count).by(1)
|
end.to change(BroadcastRecording, :count).by(1)
|
||||||
|
|
||||||
expect(BroadcastsChannel).to have_received(:stream_recording_ready)
|
expect(BroadcastsChannel).to have_received(:stream_recording_ready)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "stores full livestream playback uid and updates the broadcast" do
|
||||||
|
post :create, params: full_live_stream_ready
|
||||||
|
|
||||||
|
expect(Broadcast.last.full_live_stream_playback_uid).to eq "full_live_stream_playback_uid"
|
||||||
|
expect(BroadcastsChannel).to have_received(:broadcast_stream_updates).with(be_kind_of(Broadcast))
|
||||||
|
end
|
||||||
|
|
||||||
it "returns OK response even for non-existing broadcast" do
|
it "returns OK response even for non-existing broadcast" do
|
||||||
post :create, params: idle_status_for_unknown_broadcast
|
post :create, params: idle_status_for_unknown_broadcast
|
||||||
|
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ FactoryBot.define do
|
|||||||
stream_uid "mux_stream"
|
stream_uid "mux_stream"
|
||||||
stream_key "mux_key"
|
stream_key "mux_key"
|
||||||
stream_playback_uid "mux_playback_id"
|
stream_playback_uid "mux_playback_id"
|
||||||
|
full_live_stream_playback_uid "full_live_stream_playback_uid"
|
||||||
status "created"
|
status "created"
|
||||||
streamer_status "idle"
|
streamer_status "idle"
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -262,6 +262,93 @@ RSpec.feature 'User manages contract templates', type: :feature do
|
|||||||
expect(page).to have_content('Active template')
|
expect(page).to have_content('Active template')
|
||||||
end
|
end
|
||||||
|
|
||||||
|
scenario 'edit button is visible for not-signed contract template' do
|
||||||
|
create(:contract_template, project: project)
|
||||||
|
|
||||||
|
visit project_contract_templates_path(project)
|
||||||
|
|
||||||
|
expect(page).to have_link(edit_button_label, exact: true, count: 1)
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario 'edit button is not visible for signed contract template' do
|
||||||
|
ct = create(:contract_template, project: project)
|
||||||
|
create(:appearance_release, contract_template: ct)
|
||||||
|
|
||||||
|
visit project_contract_templates_path(project)
|
||||||
|
|
||||||
|
expect(page).to have_link(edit_button_label, exact: true, count: 0)
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario 'duplicate button is visible for not signed contract template' do
|
||||||
|
create(:contract_template, project: project)
|
||||||
|
|
||||||
|
visit project_contract_templates_path(project)
|
||||||
|
|
||||||
|
expect(page).to have_link(duplicate_button_label, exact: true, count: 1)
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario 'duplicate button is visible for signed contract template' do
|
||||||
|
ct = create(:contract_template, project: project)
|
||||||
|
create(:appearance_release, contract_template: ct)
|
||||||
|
|
||||||
|
visit project_contract_templates_path(project)
|
||||||
|
|
||||||
|
expect(page).to have_link(duplicate_button_label, exact: true, count: 1)
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario 'clicking edit button opens edit page for contract template' do
|
||||||
|
ct = create(:contract_template, project: project)
|
||||||
|
|
||||||
|
visit project_contract_templates_path(project)
|
||||||
|
|
||||||
|
expect(page).to have_content ct.name
|
||||||
|
|
||||||
|
expect(page).not_to have_content 'Updated CT'
|
||||||
|
expect(page).not_to have_content 'Medical'
|
||||||
|
|
||||||
|
click_link edit_button_label
|
||||||
|
|
||||||
|
expect(page).to have_content edit_page_heading
|
||||||
|
|
||||||
|
fill_in name_field, with: 'Updated CT'
|
||||||
|
select 'Medical Release', from: 'Release type'
|
||||||
|
fill_in_trix body_field, with: 'Updated legal text'
|
||||||
|
click_on update_contract_template_button_label
|
||||||
|
|
||||||
|
expect(page).to have_content 'Updated CT'
|
||||||
|
expect(page).to have_content 'Medical'
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario 'clicking duplicate button opens edit page for newly created contract template' do
|
||||||
|
ct = create(:contract_template, project: project)
|
||||||
|
|
||||||
|
visit project_contract_templates_path(project)
|
||||||
|
|
||||||
|
expect(page).to have_content ct.name
|
||||||
|
|
||||||
|
expect(page).not_to have_content 'Modified duplicate'
|
||||||
|
expect(page).not_to have_content 'Misc'
|
||||||
|
|
||||||
|
expect do
|
||||||
|
click_link duplicate_button_label
|
||||||
|
end.to change(ContractTemplate, :count).by(1)
|
||||||
|
|
||||||
|
expect(page).to have_content edit_page_heading
|
||||||
|
name_input = find("##{name_field}")
|
||||||
|
expect(name_input.value).to eq duplicate_release_name(ct.name)
|
||||||
|
|
||||||
|
fill_in name_field, with: 'Modified duplicate'
|
||||||
|
select 'Misc Release', from: 'Release type'
|
||||||
|
fill_in_trix body_field, with: 'Legal text for duplicate'
|
||||||
|
click_on update_contract_template_button_label
|
||||||
|
|
||||||
|
expect(page).to have_content 'Modified duplicate'
|
||||||
|
expect(page).to have_content 'Misc'
|
||||||
|
expect(ct.body.id).not_to eq ContractTemplate.last.body.id
|
||||||
|
expect(ct.guardian_clause.id).not_to eq ContractTemplate.last.guardian_clause.id
|
||||||
|
expect(ct.signature_legal_text.id).not_to eq ContractTemplate.last.signature_legal_text.id
|
||||||
|
end
|
||||||
|
|
||||||
context 'When the user is associate' do
|
context 'When the user is associate' do
|
||||||
let(:current_user) { create(:user, :associate) }
|
let(:current_user) { create(:user, :associate) }
|
||||||
|
|
||||||
@@ -280,6 +367,22 @@ RSpec.feature 'User manages contract templates', type: :feature do
|
|||||||
expect(page).to have_content schedule_demo
|
expect(page).to have_content schedule_demo
|
||||||
expect(page).not_to have_content create_release_template
|
expect(page).not_to have_content create_release_template
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it 'does not show edit button' do
|
||||||
|
create(:contract_template, project: project)
|
||||||
|
|
||||||
|
visit project_contract_templates_path(project)
|
||||||
|
|
||||||
|
expect(page).to have_link(edit_button_label, exact: true, count: 0)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'does not show duplicate button' do
|
||||||
|
create(:contract_template, project: project)
|
||||||
|
|
||||||
|
visit project_contract_templates_path(project)
|
||||||
|
|
||||||
|
expect(page).to have_link(duplicate_button_label, exact: true, count: 0)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'When the user is account manager' do
|
context 'When the user is account manager' do
|
||||||
@@ -300,6 +403,40 @@ RSpec.feature 'User manages contract templates', type: :feature do
|
|||||||
expect(page).to have_content schedule_demo
|
expect(page).to have_content schedule_demo
|
||||||
expect(page).to have_content create_release_template
|
expect(page).to have_content create_release_template
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it 'shows edit button when contract template is not signed' do
|
||||||
|
create(:contract_template, project: project)
|
||||||
|
|
||||||
|
visit project_contract_templates_path(project)
|
||||||
|
|
||||||
|
expect(page).to have_link(edit_button_label, exact: true, count: 1)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'does not show edit button when contract template is signed' do
|
||||||
|
ct = create(:contract_template, project: project)
|
||||||
|
create(:appearance_release, contract_template: ct)
|
||||||
|
|
||||||
|
visit project_contract_templates_path(project)
|
||||||
|
|
||||||
|
expect(page).to have_link(edit_button_label, exact: true, count: 0)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'shows duplicate button when contract template is not signed' do
|
||||||
|
create(:contract_template, project: project)
|
||||||
|
|
||||||
|
visit project_contract_templates_path(project)
|
||||||
|
|
||||||
|
expect(page).to have_link(duplicate_button_label, exact: true, count: 1)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'shows duplicate button when contract template is signed' do
|
||||||
|
ct = create(:contract_template, project: project)
|
||||||
|
create(:appearance_release, contract_template: ct)
|
||||||
|
|
||||||
|
visit project_contract_templates_path(project)
|
||||||
|
|
||||||
|
expect(page).to have_link(duplicate_button_label, exact: true, count: 1)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
@@ -355,4 +492,28 @@ RSpec.feature 'User manages contract templates', type: :feature do
|
|||||||
def signature_legal_text_trix_field
|
def signature_legal_text_trix_field
|
||||||
'Signature legal text'
|
'Signature legal text'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def edit_button_label
|
||||||
|
t 'contract_templates.contract_template.actions.edit'
|
||||||
|
end
|
||||||
|
|
||||||
|
def duplicate_button_label
|
||||||
|
t 'contract_templates.contract_template.actions.duplicate'
|
||||||
|
end
|
||||||
|
|
||||||
|
def edit_page_heading
|
||||||
|
t 'contract_templates.edit.heading'
|
||||||
|
end
|
||||||
|
|
||||||
|
def name_field
|
||||||
|
'contract_template_name'
|
||||||
|
end
|
||||||
|
|
||||||
|
def update_contract_template_button_label
|
||||||
|
t 'helpers.submit.contract_template.update'
|
||||||
|
end
|
||||||
|
|
||||||
|
def duplicate_release_name(template_name = '')
|
||||||
|
t 'contract_templates.duplicate.name_prefix', template_name: template_name
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -213,13 +213,117 @@ feature "User managing acquired_media releases" do
|
|||||||
expect(page).not_to have_link("Edit", exact: true)
|
expect(page).not_to have_link("Edit", exact: true)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context "when the user is account manager" do
|
||||||
|
let(:current_user) { create(:user, :account_manager) }
|
||||||
|
|
||||||
|
before do
|
||||||
|
sign_in current_user
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario "Review action in Manage menu is visible" do
|
||||||
|
create(:acquired_media_release_with_contract_template, :native, project: project)
|
||||||
|
|
||||||
|
visit project_acquired_media_releases_path(project)
|
||||||
|
|
||||||
|
expect(page).to have_link(review_action, exact: true)
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario "Reviewing release" do
|
||||||
|
create(:acquired_media_release_with_contract_template, :native, project: project)
|
||||||
|
|
||||||
|
visit project_acquired_media_releases_path(project)
|
||||||
|
|
||||||
|
click_link review_action
|
||||||
|
|
||||||
|
expect(page).to have_content review_page_heading
|
||||||
|
expect(page).to have_content approve_button
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario "Approved releases have checkmark and non-approved releases don't have checkmarks" do
|
||||||
|
create(:acquired_media_release_with_contract_template, :native, project: project)
|
||||||
|
|
||||||
|
visit project_acquired_media_releases_path(project)
|
||||||
|
expect(page).to have_css('i.fa.fa-check-circle.fa-2x', count: 0)
|
||||||
|
|
||||||
|
create(:acquired_media_release_with_contract_template, :native, project: project, approved_by_user_email: "some@email.com", approved_at: DateTime.now)
|
||||||
|
visit project_acquired_media_releases_path(project)
|
||||||
|
|
||||||
|
expect(page).to have_css('i.fa.fa-check-circle.fa-2x', count: 1)
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario 'When viewing the contract PDF of approved release there is page for office use only' do
|
||||||
|
acquired_media_release = create(:acquired_media_release_with_contract_template,
|
||||||
|
:native,
|
||||||
|
project: project,
|
||||||
|
person_first_name: 'Jane',
|
||||||
|
person_last_name: 'Doe',
|
||||||
|
approved_by_user_name: "Big Joe",
|
||||||
|
approved_by_user_email: "some@email.com",
|
||||||
|
approved_at: DateTime.now)
|
||||||
|
|
||||||
|
sign_in(current_user)
|
||||||
|
visit project_acquired_media_releases_path(project)
|
||||||
|
click_link *view_release_pdf_link_for(acquired_media_release)
|
||||||
|
|
||||||
|
expect(content_type).to eq('application/pdf')
|
||||||
|
expect(content_disposition).to include('inline')
|
||||||
|
expect(pdf_body).to have_content for_office_use_only.upcase
|
||||||
|
expect(pdf_body).to have_content producer_label
|
||||||
|
expect(pdf_body).to have_content production_label
|
||||||
|
expect(pdf_body).to have_content issued_to_label
|
||||||
|
expect(pdf_body).to have_content issued_by_label
|
||||||
|
expect(pdf_body).to have_content date_issued
|
||||||
|
expect(pdf_body).to have_content 'Big Joe'
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario 'When viewing the contract PDF of not approved release there is no page for office use only' do
|
||||||
|
acquired_media_release = create(:acquired_media_release_with_contract_template,
|
||||||
|
:native,
|
||||||
|
project: project,
|
||||||
|
person_first_name: 'Jane',
|
||||||
|
person_last_name: 'Doe')
|
||||||
|
|
||||||
|
sign_in(current_user)
|
||||||
|
visit project_acquired_media_releases_path(project)
|
||||||
|
click_link *view_release_pdf_link_for(acquired_media_release)
|
||||||
|
|
||||||
|
expect(content_type).to eq('application/pdf')
|
||||||
|
expect(content_disposition).to include('inline')
|
||||||
|
expect(pdf_body).not_to have_content for_office_use_only.upcase
|
||||||
|
expect(pdf_body).not_to have_content producer_label
|
||||||
|
expect(pdf_body).not_to have_content production_label
|
||||||
|
expect(pdf_body).not_to have_content issued_to_label
|
||||||
|
expect(pdf_body).not_to have_content issued_by_label
|
||||||
|
expect(pdf_body).not_to have_content date_issued
|
||||||
|
expect(pdf_body).not_to have_content 'Big Joe'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context "when the user is project manager" do
|
||||||
|
before do
|
||||||
|
sign_in current_user
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario "Review action in Manage menu is not visible" do
|
||||||
|
create(:acquired_media_release_with_contract_template, project: project)
|
||||||
|
|
||||||
|
visit project_acquired_media_releases_path(project)
|
||||||
|
click_on "Manage"
|
||||||
|
|
||||||
|
expect(page).not_to have_link(review_action, exact: true)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
context "when the user is associate" do
|
context "when the user is associate" do
|
||||||
let(:current_user) { create(:user, :associate) }
|
let(:current_user) { create(:user, :associate) }
|
||||||
|
|
||||||
|
before do
|
||||||
|
sign_in current_user
|
||||||
|
end
|
||||||
|
|
||||||
scenario "should not show download" do
|
scenario "should not show download" do
|
||||||
collection1 = create(:acquired_media_release_with_contract_template, name: "EDM Music", project: project)
|
collection1 = create(:acquired_media_release_with_contract_template, name: "EDM Music", project: project)
|
||||||
|
|
||||||
sign_in current_user
|
|
||||||
visit project_acquired_media_releases_path(project)
|
visit project_acquired_media_releases_path(project)
|
||||||
|
|
||||||
click_on "Manage"
|
click_on "Manage"
|
||||||
@@ -368,4 +472,40 @@ feature "User managing acquired_media releases" do
|
|||||||
def dummy_signature_legal_text
|
def dummy_signature_legal_text
|
||||||
'Some signature legal language'
|
'Some signature legal language'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def review_action
|
||||||
|
t 'acquired_media_releases.acquired_media_release.actions.review'
|
||||||
|
end
|
||||||
|
|
||||||
|
def review_page_heading
|
||||||
|
t 'approvals.new.heading', release_type: "Acquired Media Release"
|
||||||
|
end
|
||||||
|
|
||||||
|
def approve_button
|
||||||
|
t 'approvals.new.actions.approve'
|
||||||
|
end
|
||||||
|
|
||||||
|
def for_office_use_only
|
||||||
|
t 'contracts.for_office_use_only.heading'
|
||||||
|
end
|
||||||
|
|
||||||
|
def producer_label
|
||||||
|
t 'contracts.for_office_use_only.description_labels.producer'
|
||||||
|
end
|
||||||
|
|
||||||
|
def production_label
|
||||||
|
t 'contracts.for_office_use_only.description_labels.production'
|
||||||
|
end
|
||||||
|
|
||||||
|
def issued_to_label
|
||||||
|
t 'contracts.for_office_use_only.description_labels.issued_to'
|
||||||
|
end
|
||||||
|
|
||||||
|
def issued_by_label
|
||||||
|
t 'contracts.for_office_use_only.description_labels.issued_by'
|
||||||
|
end
|
||||||
|
|
||||||
|
def date_issued
|
||||||
|
t 'contracts.for_office_use_only.description_labels.date_issued'
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -481,18 +481,131 @@ feature 'User managing appearance releases' do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context "when the user is account manager" do
|
||||||
|
let(:current_user) { create(:user, :account_manager) }
|
||||||
|
|
||||||
|
before do
|
||||||
|
sign_in current_user
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario "Review action in Manage menu is visible" do
|
||||||
|
create(:appearance_release_with_contract_template, :native, project: project)
|
||||||
|
|
||||||
|
visit project_appearance_releases_path(project)
|
||||||
|
|
||||||
|
expect(page).to have_link(review_action, exact: true)
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario "Reviewing release" do
|
||||||
|
create(:appearance_release_with_contract_template, :native, project: project)
|
||||||
|
|
||||||
|
visit project_appearance_releases_path(project)
|
||||||
|
|
||||||
|
click_link review_action
|
||||||
|
|
||||||
|
expect(page).to have_content review_page_heading
|
||||||
|
expect(page).to have_content approve_button
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario "Approved releases have checkmark and non-approved releases don't have checkmarks" do
|
||||||
|
create(:appearance_release_with_contract_template, :native, project: project)
|
||||||
|
|
||||||
|
visit project_appearance_releases_path(project)
|
||||||
|
expect(page).to have_css('i.fa.fa-check-circle.fa-2x', count: 0)
|
||||||
|
|
||||||
|
create(:appearance_release_with_contract_template, :native, project: project, approved_by_user_email: "some@email.com", approved_at: DateTime.now)
|
||||||
|
visit project_appearance_releases_path(project)
|
||||||
|
|
||||||
|
expect(page).to have_css('i.fa.fa-check-circle.fa-2x', count: 1)
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario 'When viewing the contract PDF of approved release there is page for office use only' do
|
||||||
|
appearance_release = create(:appearance_release_with_contract_template,
|
||||||
|
:native,
|
||||||
|
project: project,
|
||||||
|
person_first_name: 'Jane',
|
||||||
|
person_last_name: 'Doe',
|
||||||
|
approved_by_user_name: "Big Joe",
|
||||||
|
approved_by_user_email: "some@email.com",
|
||||||
|
approved_at: DateTime.now)
|
||||||
|
|
||||||
|
sign_in(current_user)
|
||||||
|
visit project_appearance_releases_path(project)
|
||||||
|
click_link *view_release_pdf_link_for(appearance_release)
|
||||||
|
|
||||||
|
expect(content_type).to eq('application/pdf')
|
||||||
|
expect(content_disposition).to include('inline')
|
||||||
|
expect(pdf_body).to have_content for_office_use_only.upcase
|
||||||
|
expect(pdf_body).to have_content producer_label
|
||||||
|
expect(pdf_body).to have_content production_label
|
||||||
|
expect(pdf_body).to have_content issued_to_label
|
||||||
|
expect(pdf_body).to have_content issued_by_label
|
||||||
|
expect(pdf_body).to have_content date_issued
|
||||||
|
expect(pdf_body).to have_content 'Big Joe'
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario 'When viewing the contract PDF of not approved release there is no page for office use only' do
|
||||||
|
appearance_release = create(:appearance_release_with_contract_template,
|
||||||
|
:native,
|
||||||
|
project: project,
|
||||||
|
person_first_name: 'Jane',
|
||||||
|
person_last_name: 'Doe')
|
||||||
|
|
||||||
|
sign_in(current_user)
|
||||||
|
visit project_appearance_releases_path(project)
|
||||||
|
click_link *view_release_pdf_link_for(appearance_release)
|
||||||
|
|
||||||
|
expect(content_type).to eq('application/pdf')
|
||||||
|
expect(content_disposition).to include('inline')
|
||||||
|
expect(pdf_body).not_to have_content for_office_use_only.upcase
|
||||||
|
expect(pdf_body).not_to have_content producer_label
|
||||||
|
expect(pdf_body).not_to have_content production_label
|
||||||
|
expect(pdf_body).not_to have_content issued_to_label
|
||||||
|
expect(pdf_body).not_to have_content issued_by_label
|
||||||
|
expect(pdf_body).not_to have_content date_issued
|
||||||
|
expect(pdf_body).not_to have_content 'Big Joe'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context "when the user is project manager" do
|
||||||
|
before do
|
||||||
|
sign_in current_user
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario "Review action in Manage menu is not visible" do
|
||||||
|
create(:appearance_release_with_contract_template, :native, project: project)
|
||||||
|
|
||||||
|
visit project_appearance_releases_path(project)
|
||||||
|
click_on "Manage"
|
||||||
|
|
||||||
|
expect(page).not_to have_link(review_action, exact: true)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
context 'when the user is associate' do
|
context 'when the user is associate' do
|
||||||
let(:current_user) { create(:user, :associate) }
|
let(:current_user) { create(:user, :associate) }
|
||||||
|
|
||||||
|
before do
|
||||||
|
sign_in current_user
|
||||||
|
end
|
||||||
|
|
||||||
scenario 'should not show download' do
|
scenario 'should not show download' do
|
||||||
chris = create(:appearance_release_with_contract_template, person_first_name: 'Chris', person_last_name: 'Evans', project: project)
|
chris = create(:appearance_release_with_contract_template, person_first_name: 'Chris', person_last_name: 'Evans', project: project)
|
||||||
|
|
||||||
sign_in current_user
|
|
||||||
visit project_appearance_releases_path(project)
|
visit project_appearance_releases_path(project)
|
||||||
|
|
||||||
click_on 'Manage'
|
click_on 'Manage'
|
||||||
expect(page).not_to have_link('Download', exact: true)
|
expect(page).not_to have_link('Download', exact: true)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
scenario "Review action in Manage menu is not visible" do
|
||||||
|
create(:appearance_release_with_contract_template, :native, project: project)
|
||||||
|
|
||||||
|
visit project_appearance_releases_path(project)
|
||||||
|
click_on "Manage"
|
||||||
|
|
||||||
|
expect(page).not_to have_link(review_action, exact: true)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
@@ -717,4 +830,40 @@ feature 'User managing appearance releases' do
|
|||||||
def dummy_signature_legal_text
|
def dummy_signature_legal_text
|
||||||
'Some signature legal language'
|
'Some signature legal language'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def review_action
|
||||||
|
t 'appearance_releases.appearance_release.actions.review'
|
||||||
|
end
|
||||||
|
|
||||||
|
def review_page_heading
|
||||||
|
t 'approvals.new.heading', release_type: "Appearance Release"
|
||||||
|
end
|
||||||
|
|
||||||
|
def approve_button
|
||||||
|
t 'approvals.new.actions.approve'
|
||||||
|
end
|
||||||
|
|
||||||
|
def for_office_use_only
|
||||||
|
t 'contracts.for_office_use_only.heading'
|
||||||
|
end
|
||||||
|
|
||||||
|
def producer_label
|
||||||
|
t 'contracts.for_office_use_only.description_labels.producer'
|
||||||
|
end
|
||||||
|
|
||||||
|
def production_label
|
||||||
|
t 'contracts.for_office_use_only.description_labels.production'
|
||||||
|
end
|
||||||
|
|
||||||
|
def issued_to_label
|
||||||
|
t 'contracts.for_office_use_only.description_labels.issued_to'
|
||||||
|
end
|
||||||
|
|
||||||
|
def issued_by_label
|
||||||
|
t 'contracts.for_office_use_only.description_labels.issued_by'
|
||||||
|
end
|
||||||
|
|
||||||
|
def date_issued
|
||||||
|
t 'contracts.for_office_use_only.description_labels.date_issued'
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -24,10 +24,12 @@ feature 'User managing broadcasts' do
|
|||||||
|
|
||||||
by 'filling out the form' do
|
by 'filling out the form' do
|
||||||
fill_in broadcast_name_field, with: 'My Broadcast'
|
fill_in broadcast_name_field, with: 'My Broadcast'
|
||||||
|
select_time_zone("New Delhi")
|
||||||
end
|
end
|
||||||
|
|
||||||
click_button 'Create Live Stream'
|
click_button 'Create Live Stream'
|
||||||
expect(page).to have_content('A live stream has been created')
|
expect(page).to have_content('A live stream has been created')
|
||||||
|
expect(page).to have_content('New Delhi')
|
||||||
click_on 'Manage'
|
click_on 'Manage'
|
||||||
expect(page).to have_link('Copy Stream URL', exact: true)
|
expect(page).to have_link('Copy Stream URL', exact: true)
|
||||||
expect(page).to have_link('Copy Stream Key', exact: true)
|
expect(page).to have_link('Copy Stream Key', exact: true)
|
||||||
@@ -63,6 +65,54 @@ feature 'User managing broadcasts' do
|
|||||||
expect(page).to have_content(recording.download_file_name)
|
expect(page).to have_content(recording.download_file_name)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
scenario 'Clicking Reset URL regenerates broadcast token' do
|
||||||
|
broadcast = create(:broadcast, :with_stream, :with_files, project: project)
|
||||||
|
old_token = broadcast.token
|
||||||
|
|
||||||
|
visit project_broadcast_path(project, broadcast)
|
||||||
|
|
||||||
|
expect(page).to have_content reset_url
|
||||||
|
expect(page).to have_xpath "//input[@readonly][@value='#{broadcast_url(old_token)}']"
|
||||||
|
|
||||||
|
click_link reset_url
|
||||||
|
expect(Broadcast.last.token).not_to eq old_token
|
||||||
|
expect(page).to have_xpath "//input[@readonly][@value='#{broadcast_url(Broadcast.last.token)}']"
|
||||||
|
expect(page).to have_content token_reset_notice
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario 'Player will not reload if stream is reactivated while user is watching previous recording', js: true do
|
||||||
|
broadcast = create(:broadcast, :with_stream, :with_files, project: project)
|
||||||
|
recording = create(:broadcast_recording, broadcast: broadcast)
|
||||||
|
|
||||||
|
visit project_broadcast_path(project, broadcast)
|
||||||
|
|
||||||
|
expect(page).to have_content stream_idle_message
|
||||||
|
|
||||||
|
broadcast.streamer_status = :recording
|
||||||
|
broadcast.status = :active
|
||||||
|
BroadcastsChannel.broadcast_stream_updates(broadcast)
|
||||||
|
|
||||||
|
expect(page).to have_content stream_begun_message
|
||||||
|
expect(page).to have_selector('div#broadcast_video', count: 2)
|
||||||
|
|
||||||
|
broadcast.streamer_status = :idle
|
||||||
|
broadcast.status = :idle
|
||||||
|
BroadcastsChannel.broadcast_stream_updates(broadcast)
|
||||||
|
|
||||||
|
click_on switch_view_dropdown
|
||||||
|
click_on recording.download_file_name
|
||||||
|
|
||||||
|
expect(page).to have_content stream_idle_message
|
||||||
|
expect(page).to have_selector('div#broadcast_video', count: 1)
|
||||||
|
|
||||||
|
broadcast.streamer_status = :recording
|
||||||
|
broadcast.status = :active
|
||||||
|
BroadcastsChannel.broadcast_stream_updates(broadcast)
|
||||||
|
|
||||||
|
expect(page).to have_content stream_begun_message
|
||||||
|
expect(page).to have_selector('div#broadcast_video', count: 1)
|
||||||
|
end
|
||||||
|
|
||||||
scenario 'user can go back and forth between live session and previous sessions', js: true do
|
scenario 'user can go back and forth between live session and previous sessions', js: true do
|
||||||
broadcast = create(:broadcast, :with_stream, :with_files, project: project)
|
broadcast = create(:broadcast, :with_stream, :with_files, project: project)
|
||||||
recording = create(:broadcast_recording, broadcast: broadcast)
|
recording = create(:broadcast_recording, broadcast: broadcast)
|
||||||
@@ -172,6 +222,12 @@ feature 'User managing broadcasts' do
|
|||||||
def broadcast_name_field
|
def broadcast_name_field
|
||||||
'broadcast[name]'
|
'broadcast[name]'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def select_time_zone(value)
|
||||||
|
if value.present?
|
||||||
|
select value, from: "broadcast[shoot_location_time_zone]"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def click_checkboxes
|
def click_checkboxes
|
||||||
all('input[type="checkbox"]')[0].click
|
all('input[type="checkbox"]')[0].click
|
||||||
@@ -189,4 +245,22 @@ feature 'User managing broadcasts' do
|
|||||||
def create_stream
|
def create_stream
|
||||||
t 'broadcasts.splash.actions.create_stream'
|
t 'broadcasts.splash.actions.create_stream'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def reset_url
|
||||||
|
t 'broadcasts.show.actions.reset_url'
|
||||||
|
end
|
||||||
|
|
||||||
|
def token_reset_notice
|
||||||
|
t 'broadcasts.update.reset_notice'
|
||||||
|
end
|
||||||
|
|
||||||
|
def stream_begun_message
|
||||||
|
'Live stream has begun, click play to watch it'
|
||||||
|
end
|
||||||
|
|
||||||
|
def stream_idle_message
|
||||||
|
'Live stream is waiting to begin'
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -232,18 +232,131 @@ feature "User managing location releases" do
|
|||||||
expect(pdf_body).to have_content("06:00 - 20:00")
|
expect(pdf_body).to have_content("06:00 - 20:00")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context "when the user is account manager" do
|
||||||
|
let(:current_user) { create(:user, :account_manager) }
|
||||||
|
|
||||||
|
before do
|
||||||
|
sign_in current_user
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario "Review action in Manage menu is visible" do
|
||||||
|
create(:location_release_with_contract_template, :native, project: project)
|
||||||
|
|
||||||
|
visit project_location_releases_path(project)
|
||||||
|
|
||||||
|
expect(page).to have_link(review_action, exact: true)
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario "Reviewing release" do
|
||||||
|
create(:location_release_with_contract_template, :native, project: project)
|
||||||
|
|
||||||
|
visit project_location_releases_path(project)
|
||||||
|
|
||||||
|
click_link review_action
|
||||||
|
|
||||||
|
expect(page).to have_content review_page_heading
|
||||||
|
expect(page).to have_content approve_button
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario "Approved releases have checkmark and non-approved releases don't have checkmarks" do
|
||||||
|
create(:location_release_with_contract_template, :native, project: project)
|
||||||
|
|
||||||
|
visit project_location_releases_path(project)
|
||||||
|
expect(page).to have_css('i.fa.fa-check-circle.fa-2x', count: 0)
|
||||||
|
|
||||||
|
create(:location_release_with_contract_template, :native, project: project, approved_by_user_email: "some@email.com", approved_at: DateTime.now)
|
||||||
|
visit project_location_releases_path(project)
|
||||||
|
|
||||||
|
expect(page).to have_css('i.fa.fa-check-circle.fa-2x', count: 1)
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario 'When viewing the contract PDF of approved release there is page for office use only' do
|
||||||
|
location_release = create(:location_release_with_contract_template,
|
||||||
|
:native,
|
||||||
|
project: project,
|
||||||
|
person_first_name: 'Jane',
|
||||||
|
person_last_name: 'Doe',
|
||||||
|
approved_by_user_name: "Big Joe",
|
||||||
|
approved_by_user_email: "some@email.com",
|
||||||
|
approved_at: DateTime.now)
|
||||||
|
|
||||||
|
sign_in(current_user)
|
||||||
|
visit project_location_releases_path(project)
|
||||||
|
click_link *view_release_pdf_link_for(location_release)
|
||||||
|
|
||||||
|
expect(content_type).to eq('application/pdf')
|
||||||
|
expect(content_disposition).to include('inline')
|
||||||
|
expect(pdf_body).to have_content for_office_use_only.upcase
|
||||||
|
expect(pdf_body).to have_content producer_label
|
||||||
|
expect(pdf_body).to have_content production_label
|
||||||
|
expect(pdf_body).to have_content issued_to_label
|
||||||
|
expect(pdf_body).to have_content issued_by_label
|
||||||
|
expect(pdf_body).to have_content date_issued
|
||||||
|
expect(pdf_body).to have_content 'Big Joe'
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario 'When viewing the contract PDF of not approved release there is no page for office use only' do
|
||||||
|
location_release = create(:location_release_with_contract_template,
|
||||||
|
:native,
|
||||||
|
project: project,
|
||||||
|
person_first_name: 'Jane',
|
||||||
|
person_last_name: 'Doe')
|
||||||
|
|
||||||
|
sign_in(current_user)
|
||||||
|
visit project_location_releases_path(project)
|
||||||
|
click_link *view_release_pdf_link_for(location_release)
|
||||||
|
|
||||||
|
expect(content_type).to eq('application/pdf')
|
||||||
|
expect(content_disposition).to include('inline')
|
||||||
|
expect(pdf_body).not_to have_content for_office_use_only.upcase
|
||||||
|
expect(pdf_body).not_to have_content producer_label
|
||||||
|
expect(pdf_body).not_to have_content production_label
|
||||||
|
expect(pdf_body).not_to have_content issued_to_label
|
||||||
|
expect(pdf_body).not_to have_content issued_by_label
|
||||||
|
expect(pdf_body).not_to have_content date_issued
|
||||||
|
expect(pdf_body).not_to have_content 'Big Joe'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context "when the user is project manager" do
|
||||||
|
before do
|
||||||
|
sign_in current_user
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario "Review action in Manage menu is not visible" do
|
||||||
|
create(:location_release_with_contract_template, :native, project: project)
|
||||||
|
|
||||||
|
visit project_location_releases_path(project)
|
||||||
|
click_on "Manage"
|
||||||
|
|
||||||
|
expect(page).not_to have_link(review_action, exact: true)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
context "when the user is associate" do
|
context "when the user is associate" do
|
||||||
let(:current_user) { create(:user, :associate) }
|
let(:current_user) { create(:user, :associate) }
|
||||||
|
|
||||||
|
before do
|
||||||
|
sign_in current_user
|
||||||
|
end
|
||||||
|
|
||||||
scenario "should not show download" do
|
scenario "should not show download" do
|
||||||
create(:location_release_with_contract_template, name: "Cheers", project: project)
|
create(:location_release_with_contract_template, name: "Cheers", project: project)
|
||||||
|
|
||||||
sign_in current_user
|
|
||||||
visit project_location_releases_path(project)
|
visit project_location_releases_path(project)
|
||||||
|
|
||||||
click_on "Manage"
|
click_on "Manage"
|
||||||
expect(page).not_to have_link("Download", exact: true)
|
expect(page).not_to have_link("Download", exact: true)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
scenario "Review action in Manage menu is not visible" do
|
||||||
|
create(:location_release_with_contract_template, :native, project: project)
|
||||||
|
|
||||||
|
visit project_location_releases_path(project)
|
||||||
|
click_on "Manage"
|
||||||
|
|
||||||
|
expect(page).not_to have_link(review_action, exact: true)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
@@ -386,4 +499,40 @@ feature "User managing location releases" do
|
|||||||
def dummy_signature_legal_text
|
def dummy_signature_legal_text
|
||||||
'Some signature legal language'
|
'Some signature legal language'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def review_action
|
||||||
|
t 'location_releases.location_release.actions.review'
|
||||||
|
end
|
||||||
|
|
||||||
|
def review_page_heading
|
||||||
|
t 'approvals.new.heading', release_type: "Location Release"
|
||||||
|
end
|
||||||
|
|
||||||
|
def approve_button
|
||||||
|
t 'approvals.new.actions.approve'
|
||||||
|
end
|
||||||
|
|
||||||
|
def for_office_use_only
|
||||||
|
t 'contracts.for_office_use_only.heading'
|
||||||
|
end
|
||||||
|
|
||||||
|
def producer_label
|
||||||
|
t 'contracts.for_office_use_only.description_labels.producer'
|
||||||
|
end
|
||||||
|
|
||||||
|
def production_label
|
||||||
|
t 'contracts.for_office_use_only.description_labels.production'
|
||||||
|
end
|
||||||
|
|
||||||
|
def issued_to_label
|
||||||
|
t 'contracts.for_office_use_only.description_labels.issued_to'
|
||||||
|
end
|
||||||
|
|
||||||
|
def issued_by_label
|
||||||
|
t 'contracts.for_office_use_only.description_labels.issued_by'
|
||||||
|
end
|
||||||
|
|
||||||
|
def date_issued
|
||||||
|
t 'contracts.for_office_use_only.description_labels.date_issued'
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -234,18 +234,131 @@ feature "User managing material releases" do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context "when the user is account manager" do
|
||||||
|
let(:current_user) { create(:user, :account_manager) }
|
||||||
|
|
||||||
|
before do
|
||||||
|
sign_in current_user
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario "Review action in Manage menu is visible" do
|
||||||
|
create(:material_release_with_contract_template, :native, project: project)
|
||||||
|
|
||||||
|
visit project_material_releases_path(project)
|
||||||
|
|
||||||
|
expect(page).to have_link(review_action, exact: true)
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario "Reviewing release" do
|
||||||
|
create(:material_release_with_contract_template, :native, project: project)
|
||||||
|
|
||||||
|
visit project_material_releases_path(project)
|
||||||
|
|
||||||
|
click_link review_action
|
||||||
|
|
||||||
|
expect(page).to have_content review_page_heading
|
||||||
|
expect(page).to have_content approve_button
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario "Approved releases have checkmark and non-approved releases don't have checkmarks" do
|
||||||
|
create(:material_release_with_contract_template, :native, project: project)
|
||||||
|
|
||||||
|
visit project_material_releases_path(project)
|
||||||
|
expect(page).to have_css('i.fa.fa-check-circle.fa-2x', count: 0)
|
||||||
|
|
||||||
|
create(:material_release_with_contract_template, :native, project: project, approved_by_user_email: "some@email.com", approved_at: DateTime.now)
|
||||||
|
visit project_material_releases_path(project)
|
||||||
|
|
||||||
|
expect(page).to have_css('i.fa.fa-check-circle.fa-2x', count: 1)
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario 'When viewing the contract PDF of approved release there is page for office use only' do
|
||||||
|
material_release = create(:material_release_with_contract_template,
|
||||||
|
:native,
|
||||||
|
project: project,
|
||||||
|
person_first_name: 'Jane',
|
||||||
|
person_last_name: 'Doe',
|
||||||
|
approved_by_user_name: "Big Joe",
|
||||||
|
approved_by_user_email: "some@email.com",
|
||||||
|
approved_at: DateTime.now)
|
||||||
|
|
||||||
|
sign_in(current_user)
|
||||||
|
visit project_material_releases_path(project)
|
||||||
|
click_link *view_release_pdf_link_for(material_release)
|
||||||
|
|
||||||
|
expect(content_type).to eq('application/pdf')
|
||||||
|
expect(content_disposition).to include('inline')
|
||||||
|
expect(pdf_body).to have_content for_office_use_only.upcase
|
||||||
|
expect(pdf_body).to have_content producer_label
|
||||||
|
expect(pdf_body).to have_content production_label
|
||||||
|
expect(pdf_body).to have_content issued_to_label
|
||||||
|
expect(pdf_body).to have_content issued_by_label
|
||||||
|
expect(pdf_body).to have_content date_issued
|
||||||
|
expect(pdf_body).to have_content 'Big Joe'
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario 'When viewing the contract PDF of not approved release there is no page for office use only' do
|
||||||
|
material_release = create(:material_release_with_contract_template,
|
||||||
|
:native,
|
||||||
|
project: project,
|
||||||
|
person_first_name: 'Jane',
|
||||||
|
person_last_name: 'Doe')
|
||||||
|
|
||||||
|
sign_in(current_user)
|
||||||
|
visit project_material_releases_path(project)
|
||||||
|
click_link *view_release_pdf_link_for(material_release)
|
||||||
|
|
||||||
|
expect(content_type).to eq('application/pdf')
|
||||||
|
expect(content_disposition).to include('inline')
|
||||||
|
expect(pdf_body).not_to have_content for_office_use_only.upcase
|
||||||
|
expect(pdf_body).not_to have_content producer_label
|
||||||
|
expect(pdf_body).not_to have_content production_label
|
||||||
|
expect(pdf_body).not_to have_content issued_to_label
|
||||||
|
expect(pdf_body).not_to have_content issued_by_label
|
||||||
|
expect(pdf_body).not_to have_content date_issued
|
||||||
|
expect(pdf_body).not_to have_content 'Big Joe'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context "when the user is project manager" do
|
||||||
|
before do
|
||||||
|
sign_in current_user
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario "Review action in Manage menu is not visible" do
|
||||||
|
create(:material_release_with_contract_template, :native, project: project)
|
||||||
|
|
||||||
|
visit project_material_releases_path(project)
|
||||||
|
click_on "Manage"
|
||||||
|
|
||||||
|
expect(page).not_to have_link(review_action, exact: true)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
context "when the user is associate" do
|
context "when the user is associate" do
|
||||||
let(:current_user) { create(:user, :associate) }
|
let(:current_user) { create(:user, :associate) }
|
||||||
|
|
||||||
|
before do
|
||||||
|
sign_in current_user
|
||||||
|
end
|
||||||
|
|
||||||
scenario "should not show download" do
|
scenario "should not show download" do
|
||||||
create(:material_release_with_contract_template, name: "Apple MacBook Air", project: project)
|
create(:material_release_with_contract_template, name: "Apple MacBook Air", project: project)
|
||||||
|
|
||||||
sign_in current_user
|
|
||||||
visit project_material_releases_path(project)
|
visit project_material_releases_path(project)
|
||||||
|
|
||||||
click_on "Manage"
|
click_on "Manage"
|
||||||
expect(page).not_to have_link("Download", exact: true)
|
expect(page).not_to have_link("Download", exact: true)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
scenario "Review action in Manage menu is not visible" do
|
||||||
|
create(:material_release_with_contract_template, :native, project: project)
|
||||||
|
|
||||||
|
visit project_material_releases_path(project)
|
||||||
|
click_on "Manage"
|
||||||
|
|
||||||
|
expect(page).not_to have_link(review_action, exact: true)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
@@ -393,4 +506,40 @@ feature "User managing material releases" do
|
|||||||
def dummy_signature_legal_text
|
def dummy_signature_legal_text
|
||||||
'Some signature legal language'
|
'Some signature legal language'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def review_action
|
||||||
|
t 'material_releases.material_release.actions.review'
|
||||||
|
end
|
||||||
|
|
||||||
|
def review_page_heading
|
||||||
|
t 'approvals.new.heading', release_type: "Material Release"
|
||||||
|
end
|
||||||
|
|
||||||
|
def approve_button
|
||||||
|
t 'approvals.new.actions.approve'
|
||||||
|
end
|
||||||
|
|
||||||
|
def for_office_use_only
|
||||||
|
t 'contracts.for_office_use_only.heading'
|
||||||
|
end
|
||||||
|
|
||||||
|
def producer_label
|
||||||
|
t 'contracts.for_office_use_only.description_labels.producer'
|
||||||
|
end
|
||||||
|
|
||||||
|
def production_label
|
||||||
|
t 'contracts.for_office_use_only.description_labels.production'
|
||||||
|
end
|
||||||
|
|
||||||
|
def issued_to_label
|
||||||
|
t 'contracts.for_office_use_only.description_labels.issued_to'
|
||||||
|
end
|
||||||
|
|
||||||
|
def issued_by_label
|
||||||
|
t 'contracts.for_office_use_only.description_labels.issued_by'
|
||||||
|
end
|
||||||
|
|
||||||
|
def date_issued
|
||||||
|
t 'contracts.for_office_use_only.description_labels.date_issued'
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -260,7 +260,7 @@ feature "User managing medical releases" do
|
|||||||
expect(pdf_body).to have_content for_office_use_only.upcase
|
expect(pdf_body).to have_content for_office_use_only.upcase
|
||||||
expect(pdf_body).to have_content producer_label
|
expect(pdf_body).to have_content producer_label
|
||||||
expect(pdf_body).to have_content production_label
|
expect(pdf_body).to have_content production_label
|
||||||
expect(pdf_body).to have_content employee_issued_to_label
|
expect(pdf_body).to have_content issued_to_label
|
||||||
expect(pdf_body).to have_content issued_by_label
|
expect(pdf_body).to have_content issued_by_label
|
||||||
expect(pdf_body).to have_content date_issued
|
expect(pdf_body).to have_content date_issued
|
||||||
expect(pdf_body).to have_content 'Big Joe'
|
expect(pdf_body).to have_content 'Big Joe'
|
||||||
@@ -282,7 +282,7 @@ feature "User managing medical releases" do
|
|||||||
expect(pdf_body).not_to have_content for_office_use_only.upcase
|
expect(pdf_body).not_to have_content for_office_use_only.upcase
|
||||||
expect(pdf_body).not_to have_content producer_label
|
expect(pdf_body).not_to have_content producer_label
|
||||||
expect(pdf_body).not_to have_content production_label
|
expect(pdf_body).not_to have_content production_label
|
||||||
expect(pdf_body).not_to have_content employee_issued_to_label
|
expect(pdf_body).not_to have_content issued_to_label
|
||||||
expect(pdf_body).not_to have_content issued_by_label
|
expect(pdf_body).not_to have_content issued_by_label
|
||||||
expect(pdf_body).not_to have_content date_issued
|
expect(pdf_body).not_to have_content date_issued
|
||||||
expect(pdf_body).not_to have_content 'Big Joe'
|
expect(pdf_body).not_to have_content 'Big Joe'
|
||||||
@@ -561,7 +561,7 @@ feature "User managing medical releases" do
|
|||||||
end
|
end
|
||||||
|
|
||||||
def review_page_heading
|
def review_page_heading
|
||||||
t 'approvals.new.heading'
|
t 'approvals.new.heading', release_type: "Medical Release"
|
||||||
end
|
end
|
||||||
|
|
||||||
def approve_button
|
def approve_button
|
||||||
@@ -580,8 +580,8 @@ feature "User managing medical releases" do
|
|||||||
t 'contracts.for_office_use_only.description_labels.production'
|
t 'contracts.for_office_use_only.description_labels.production'
|
||||||
end
|
end
|
||||||
|
|
||||||
def employee_issued_to_label
|
def issued_to_label
|
||||||
t 'contracts.for_office_use_only.description_labels.employee_issued_to'
|
t 'contracts.for_office_use_only.description_labels.issued_to'
|
||||||
end
|
end
|
||||||
|
|
||||||
def issued_by_label
|
def issued_by_label
|
||||||
|
|||||||
@@ -79,6 +79,84 @@ feature "User managing misc releases" do
|
|||||||
expect(content_type).to eq('application/pdf')
|
expect(content_type).to eq('application/pdf')
|
||||||
end
|
end
|
||||||
|
|
||||||
|
scenario "Review action in Manage menu is visible" do
|
||||||
|
create(:misc_release_with_contract_template, :native, project: project)
|
||||||
|
|
||||||
|
visit project_misc_releases_path(project)
|
||||||
|
|
||||||
|
expect(page).to have_link(review_action, exact: true)
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario "Reviewing release" do
|
||||||
|
create(:misc_release_with_contract_template, :native, project: project)
|
||||||
|
|
||||||
|
visit project_misc_releases_path(project)
|
||||||
|
|
||||||
|
click_link review_action
|
||||||
|
|
||||||
|
expect(page).to have_content review_page_heading
|
||||||
|
expect(page).to have_content approve_button
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario "Approved releases have checkmark and non-approved releases don't have checkmarks" do
|
||||||
|
create(:misc_release_with_contract_template, :native, project: project)
|
||||||
|
|
||||||
|
visit project_misc_releases_path(project)
|
||||||
|
expect(page).to have_css('i.fa.fa-check-circle.fa-2x', count: 0)
|
||||||
|
|
||||||
|
create(:misc_release_with_contract_template, :native, project: project, approved_by_user_email: "some@email.com", approved_at: DateTime.now)
|
||||||
|
visit project_misc_releases_path(project)
|
||||||
|
|
||||||
|
expect(page).to have_css('i.fa.fa-check-circle.fa-2x', count: 1)
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario 'When viewing the contract PDF of approved release there is page for office use only' do
|
||||||
|
misc_release = create(:misc_release_with_contract_template,
|
||||||
|
:native,
|
||||||
|
project: project,
|
||||||
|
person_first_name: 'Jane',
|
||||||
|
person_last_name: 'Doe',
|
||||||
|
approved_by_user_name: "Big Joe",
|
||||||
|
approved_by_user_email: "some@email.com",
|
||||||
|
approved_at: DateTime.now)
|
||||||
|
|
||||||
|
sign_in(current_user)
|
||||||
|
visit project_misc_releases_path(project)
|
||||||
|
click_link *view_release_pdf_link_for(misc_release)
|
||||||
|
|
||||||
|
expect(content_type).to eq('application/pdf')
|
||||||
|
expect(content_disposition).to include('inline')
|
||||||
|
expect(pdf_body).to have_content for_office_use_only.upcase
|
||||||
|
expect(pdf_body).to have_content producer_label
|
||||||
|
expect(pdf_body).to have_content production_label
|
||||||
|
expect(pdf_body).to have_content issued_to_label
|
||||||
|
expect(pdf_body).to have_content issued_by_label
|
||||||
|
expect(pdf_body).to have_content date_issued
|
||||||
|
expect(pdf_body).to have_content 'Big Joe'
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario 'When viewing the contract PDF of not approved release there is no page for office use only' do
|
||||||
|
misc_release = create(:misc_release_with_contract_template,
|
||||||
|
:native,
|
||||||
|
project: project,
|
||||||
|
person_first_name: 'Jane',
|
||||||
|
person_last_name: 'Doe')
|
||||||
|
|
||||||
|
sign_in(current_user)
|
||||||
|
visit project_misc_releases_path(project)
|
||||||
|
click_link *view_release_pdf_link_for(misc_release)
|
||||||
|
|
||||||
|
expect(content_type).to eq('application/pdf')
|
||||||
|
expect(content_disposition).to include('inline')
|
||||||
|
expect(pdf_body).not_to have_content for_office_use_only.upcase
|
||||||
|
expect(pdf_body).not_to have_content producer_label
|
||||||
|
expect(pdf_body).not_to have_content production_label
|
||||||
|
expect(pdf_body).not_to have_content issued_to_label
|
||||||
|
expect(pdf_body).not_to have_content issued_by_label
|
||||||
|
expect(pdf_body).not_to have_content date_issued
|
||||||
|
expect(pdf_body).not_to have_content 'Big Joe'
|
||||||
|
end
|
||||||
|
|
||||||
scenario 'viewing the contract PDF' do
|
scenario 'viewing the contract PDF' do
|
||||||
misc_release = create(:misc_release,
|
misc_release = create(:misc_release,
|
||||||
:native,
|
:native,
|
||||||
@@ -140,6 +218,14 @@ feature "User managing misc releases" do
|
|||||||
|
|
||||||
expect(page).to have_link("Download", exact: true, count: 0)
|
expect(page).to have_link("Download", exact: true, count: 0)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
scenario "Review action in Manage menu is not visible" do
|
||||||
|
create(:misc_release_with_contract_template, :native, project: project)
|
||||||
|
|
||||||
|
visit project_misc_releases_path(project)
|
||||||
|
|
||||||
|
expect(page).not_to have_link(review_action, exact: true)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
@@ -210,4 +296,44 @@ feature "User managing misc releases" do
|
|||||||
def dummy_signature_legal_text
|
def dummy_signature_legal_text
|
||||||
'Some signature legal language'
|
'Some signature legal language'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def view_release_pdf_link_for(release)
|
||||||
|
['Download', href: misc_release_contracts_path(release, format: 'pdf')]
|
||||||
|
end
|
||||||
|
|
||||||
|
def review_action
|
||||||
|
t 'misc_releases.misc_release.actions.review'
|
||||||
|
end
|
||||||
|
|
||||||
|
def review_page_heading
|
||||||
|
t 'approvals.new.heading', release_type: "Misc Release"
|
||||||
|
end
|
||||||
|
|
||||||
|
def approve_button
|
||||||
|
t 'approvals.new.actions.approve'
|
||||||
|
end
|
||||||
|
|
||||||
|
def for_office_use_only
|
||||||
|
t 'contracts.for_office_use_only.heading'
|
||||||
|
end
|
||||||
|
|
||||||
|
def producer_label
|
||||||
|
t 'contracts.for_office_use_only.description_labels.producer'
|
||||||
|
end
|
||||||
|
|
||||||
|
def production_label
|
||||||
|
t 'contracts.for_office_use_only.description_labels.production'
|
||||||
|
end
|
||||||
|
|
||||||
|
def issued_to_label
|
||||||
|
t 'contracts.for_office_use_only.description_labels.issued_to'
|
||||||
|
end
|
||||||
|
|
||||||
|
def issued_by_label
|
||||||
|
t 'contracts.for_office_use_only.description_labels.issued_by'
|
||||||
|
end
|
||||||
|
|
||||||
|
def date_issued
|
||||||
|
t 'contracts.for_office_use_only.description_labels.date_issued'
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -86,18 +86,71 @@ feature "User managing music releases" do
|
|||||||
expect(page).to have_field("Search", with: "EDM")
|
expect(page).to have_field("Search", with: "EDM")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context "when the user is account manager" do
|
||||||
|
let(:current_user) { create(:user, :account_manager) }
|
||||||
|
|
||||||
|
before do
|
||||||
|
sign_in current_user
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario "Review action in Manage menu is visible" do
|
||||||
|
create(:music_release_with_contract_template, project: project)
|
||||||
|
|
||||||
|
visit project_music_releases_path(project)
|
||||||
|
click_on "Manage"
|
||||||
|
|
||||||
|
expect(page).to have_link(review_action, exact: true)
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario "Reviewing release" do
|
||||||
|
create(:music_release_with_contract_template, project: project)
|
||||||
|
|
||||||
|
visit project_music_releases_path(project)
|
||||||
|
click_on "Manage"
|
||||||
|
|
||||||
|
click_link review_action
|
||||||
|
|
||||||
|
expect(page).to have_content review_page_heading
|
||||||
|
expect(page).to have_content approve_button
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context "when the user is project manager" do
|
||||||
|
scenario "Review action in Manage menu is not visible" do
|
||||||
|
create(:music_release_with_contract_template, project: project)
|
||||||
|
|
||||||
|
sign_in current_user
|
||||||
|
visit project_music_releases_path(project)
|
||||||
|
click_on "Manage"
|
||||||
|
|
||||||
|
expect(page).not_to have_link(review_action, exact: true)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
context "when the user is associate" do
|
context "when the user is associate" do
|
||||||
let(:current_user) { create(:user, :associate) }
|
let(:current_user) { create(:user, :associate) }
|
||||||
|
|
||||||
|
before do
|
||||||
|
sign_in current_user
|
||||||
|
end
|
||||||
|
|
||||||
scenario "should not show download" do
|
scenario "should not show download" do
|
||||||
collection1 = create(:music_release, name: "EDM Music", project: project)
|
collection1 = create(:music_release, name: "EDM Music", project: project)
|
||||||
|
|
||||||
sign_in current_user
|
|
||||||
visit project_music_releases_path(project)
|
visit project_music_releases_path(project)
|
||||||
|
|
||||||
click_on "Manage"
|
click_on "Manage"
|
||||||
expect(page).not_to have_link("Download", exact: true)
|
expect(page).not_to have_link("Download", exact: true)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
scenario "Review action in Manage menu is not visible" do
|
||||||
|
create(:music_release_with_contract_template, project: project)
|
||||||
|
|
||||||
|
visit project_music_releases_path(project)
|
||||||
|
click_on "Manage"
|
||||||
|
|
||||||
|
expect(page).not_to have_link(review_action, exact: true)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
@@ -163,4 +216,16 @@ feature "User managing music releases" do
|
|||||||
select "Other", from: "Restriction"
|
select "Other", from: "Restriction"
|
||||||
fill_in "Describe other restrictions", with: "Test"
|
fill_in "Describe other restrictions", with: "Test"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def review_action
|
||||||
|
t 'music_releases.music_release.actions.review'
|
||||||
|
end
|
||||||
|
|
||||||
|
def review_page_heading
|
||||||
|
t 'approvals.new.heading', release_type: "Music Release"
|
||||||
|
end
|
||||||
|
|
||||||
|
def approve_button
|
||||||
|
t 'approvals.new.actions.approve'
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -373,18 +373,131 @@ feature "User managing talent releases" do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context "when the user is account manager" do
|
||||||
|
let(:current_user) { create(:user, :account_manager) }
|
||||||
|
|
||||||
|
before do
|
||||||
|
sign_in current_user
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario "Review action in Manage menu is visible" do
|
||||||
|
create(:talent_release_with_contract_template, :native, project: project)
|
||||||
|
|
||||||
|
visit project_talent_releases_path(project)
|
||||||
|
|
||||||
|
expect(page).to have_link(review_action, exact: true)
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario "Reviewing release" do
|
||||||
|
create(:talent_release_with_contract_template, :native, project: project)
|
||||||
|
|
||||||
|
visit project_talent_releases_path(project)
|
||||||
|
|
||||||
|
click_link review_action
|
||||||
|
|
||||||
|
expect(page).to have_content review_page_heading
|
||||||
|
expect(page).to have_content approve_button
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario "Approved releases have checkmark and non-approved releases don't have checkmarks" do
|
||||||
|
create(:talent_release_with_contract_template, :native, project: project)
|
||||||
|
|
||||||
|
visit project_talent_releases_path(project)
|
||||||
|
expect(page).to have_css('i.fa.fa-check-circle.fa-2x', count: 0)
|
||||||
|
|
||||||
|
create(:talent_release_with_contract_template, :native, project: project, approved_by_user_email: "some@email.com", approved_at: DateTime.now)
|
||||||
|
visit project_talent_releases_path(project)
|
||||||
|
|
||||||
|
expect(page).to have_css('i.fa.fa-check-circle.fa-2x', count: 1)
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario 'When viewing the contract PDF of approved release there is page for office use only' do
|
||||||
|
talent_release = create(:talent_release_with_contract_template,
|
||||||
|
:native,
|
||||||
|
project: project,
|
||||||
|
person_first_name: 'Jane',
|
||||||
|
person_last_name: 'Doe',
|
||||||
|
approved_by_user_name: "Big Joe",
|
||||||
|
approved_by_user_email: "some@email.com",
|
||||||
|
approved_at: DateTime.now)
|
||||||
|
|
||||||
|
sign_in(current_user)
|
||||||
|
visit project_talent_releases_path(project)
|
||||||
|
click_link *view_release_pdf_link_for(talent_release)
|
||||||
|
|
||||||
|
expect(content_type).to eq('application/pdf')
|
||||||
|
expect(content_disposition).to include('inline')
|
||||||
|
expect(pdf_body).to have_content for_office_use_only.upcase
|
||||||
|
expect(pdf_body).to have_content producer_label
|
||||||
|
expect(pdf_body).to have_content production_label
|
||||||
|
expect(pdf_body).to have_content issued_to_label
|
||||||
|
expect(pdf_body).to have_content issued_by_label
|
||||||
|
expect(pdf_body).to have_content date_issued
|
||||||
|
expect(pdf_body).to have_content 'Big Joe'
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario 'When viewing the contract PDF of not approved release there is no page for office use only' do
|
||||||
|
talent_release = create(:talent_release_with_contract_template,
|
||||||
|
:native,
|
||||||
|
project: project,
|
||||||
|
person_first_name: 'Jane',
|
||||||
|
person_last_name: 'Doe')
|
||||||
|
|
||||||
|
sign_in(current_user)
|
||||||
|
visit project_talent_releases_path(project)
|
||||||
|
click_link *view_release_pdf_link_for(talent_release)
|
||||||
|
|
||||||
|
expect(content_type).to eq('application/pdf')
|
||||||
|
expect(content_disposition).to include('inline')
|
||||||
|
expect(pdf_body).not_to have_content for_office_use_only.upcase
|
||||||
|
expect(pdf_body).not_to have_content producer_label
|
||||||
|
expect(pdf_body).not_to have_content production_label
|
||||||
|
expect(pdf_body).not_to have_content issued_to_label
|
||||||
|
expect(pdf_body).not_to have_content issued_by_label
|
||||||
|
expect(pdf_body).not_to have_content date_issued
|
||||||
|
expect(pdf_body).not_to have_content 'Big Joe'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context "when the user is project manager" do
|
||||||
|
before do
|
||||||
|
sign_in current_user
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario "Review action in Manage menu is not visible" do
|
||||||
|
create(:talent_release_with_contract_template, :native, project: project)
|
||||||
|
|
||||||
|
visit project_talent_releases_path(project)
|
||||||
|
click_on "Manage"
|
||||||
|
|
||||||
|
expect(page).not_to have_link(review_action, exact: true)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
context "when the user is associate" do
|
context "when the user is associate" do
|
||||||
let(:current_user) { create(:user, :associate) }
|
let(:current_user) { create(:user, :associate) }
|
||||||
|
|
||||||
|
before do
|
||||||
|
sign_in current_user
|
||||||
|
end
|
||||||
|
|
||||||
scenario "should not show download" do
|
scenario "should not show download" do
|
||||||
create(:talent_release_with_contract_template, person_first_name: "Robert", person_last_name: "Downey Jr.", project: project)
|
create(:talent_release_with_contract_template, person_first_name: "Robert", person_last_name: "Downey Jr.", project: project)
|
||||||
|
|
||||||
sign_in current_user
|
|
||||||
visit project_talent_releases_path(project)
|
visit project_talent_releases_path(project)
|
||||||
|
|
||||||
click_on "Manage"
|
click_on "Manage"
|
||||||
expect(page).not_to have_link("Download", exact: true)
|
expect(page).not_to have_link("Download", exact: true)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
scenario "Review action in Manage menu is not visible" do
|
||||||
|
create(:talent_release_with_contract_template, :native, project: project)
|
||||||
|
|
||||||
|
visit project_talent_releases_path(project)
|
||||||
|
click_on "Manage"
|
||||||
|
|
||||||
|
expect(page).not_to have_link(review_action, exact: true)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
@@ -566,4 +679,40 @@ feature "User managing talent releases" do
|
|||||||
def dummy_signature_legal_text
|
def dummy_signature_legal_text
|
||||||
'Some signature legal language'
|
'Some signature legal language'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def review_action
|
||||||
|
t 'talent_releases.talent_release.actions.review'
|
||||||
|
end
|
||||||
|
|
||||||
|
def review_page_heading
|
||||||
|
t 'approvals.new.heading', release_type: "Talent Release"
|
||||||
|
end
|
||||||
|
|
||||||
|
def approve_button
|
||||||
|
t 'approvals.new.actions.approve'
|
||||||
|
end
|
||||||
|
|
||||||
|
def for_office_use_only
|
||||||
|
t 'contracts.for_office_use_only.heading'
|
||||||
|
end
|
||||||
|
|
||||||
|
def producer_label
|
||||||
|
t 'contracts.for_office_use_only.description_labels.producer'
|
||||||
|
end
|
||||||
|
|
||||||
|
def production_label
|
||||||
|
t 'contracts.for_office_use_only.description_labels.production'
|
||||||
|
end
|
||||||
|
|
||||||
|
def issued_to_label
|
||||||
|
t 'contracts.for_office_use_only.description_labels.issued_to'
|
||||||
|
end
|
||||||
|
|
||||||
|
def issued_by_label
|
||||||
|
t 'contracts.for_office_use_only.description_labels.issued_by'
|
||||||
|
end
|
||||||
|
|
||||||
|
def date_issued
|
||||||
|
t 'contracts.for_office_use_only.description_labels.date_issued'
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -91,6 +91,21 @@ feature "User managing task requests" do
|
|||||||
expect(page).to have_content add_new_project_label
|
expect(page).to have_content add_new_project_label
|
||||||
end
|
end
|
||||||
|
|
||||||
|
scenario "user can click Chat Now and start chat event with a blank form" do
|
||||||
|
visit project_task_requests_path(project)
|
||||||
|
|
||||||
|
click_on create_task_request
|
||||||
|
|
||||||
|
expect(page).to have_content chat_now_button
|
||||||
|
expect(page).to have_content form_notice
|
||||||
|
|
||||||
|
expect do
|
||||||
|
click_on chat_now_button
|
||||||
|
end.to change(TaskRequest, :count).by(1)
|
||||||
|
|
||||||
|
expect(page).to have_content task_request_created_notice
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def no_task_requests_label
|
def no_task_requests_label
|
||||||
@@ -120,4 +135,20 @@ feature "User managing task requests" do
|
|||||||
def schedule_demo
|
def schedule_demo
|
||||||
t 'task_requests.splash.actions.book_demo'
|
t 'task_requests.splash.actions.book_demo'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def create_task_request
|
||||||
|
t 'task_requests.index.actions.new'
|
||||||
|
end
|
||||||
|
|
||||||
|
def chat_now_button
|
||||||
|
t 'task_requests.form.actions.chat_now'
|
||||||
|
end
|
||||||
|
|
||||||
|
def form_notice
|
||||||
|
t 'task_requests.form.info_message'
|
||||||
|
end
|
||||||
|
|
||||||
|
def task_request_created_notice
|
||||||
|
t 'task_requests.create.success_message'
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -292,7 +292,7 @@ feature "User performs video analysis" do
|
|||||||
expect(page).to have_unreleased_appearance(notes: unreleased_appearance.notes)
|
expect(page).to have_unreleased_appearance(notes: unreleased_appearance.notes)
|
||||||
end
|
end
|
||||||
|
|
||||||
scenario "confirming a talent release" do
|
scenario "confirming a talent release", js: true do
|
||||||
talent_release = create(:talent_release, project: project)
|
talent_release = create(:talent_release, project: project)
|
||||||
|
|
||||||
sign_in current_user
|
sign_in current_user
|
||||||
@@ -300,7 +300,7 @@ feature "User performs video analysis" do
|
|||||||
|
|
||||||
expect(page).to have_unconfirmed_release(talent_release)
|
expect(page).to have_unconfirmed_release(talent_release)
|
||||||
|
|
||||||
confirm_release(video, talent_release)
|
confirm_first_release_using_edl_modal(video, talent_release)
|
||||||
|
|
||||||
expect(page).to have_confirmed_release(talent_release)
|
expect(page).to have_confirmed_release(talent_release)
|
||||||
expect(page).not_to have_unconfirmed_release(talent_release)
|
expect(page).not_to have_unconfirmed_release(talent_release)
|
||||||
@@ -442,7 +442,7 @@ feature "User performs video analysis" do
|
|||||||
|
|
||||||
scenario "confirming a talent release match", js: true do
|
scenario "confirming a talent release match", js: true do
|
||||||
video.analysis_success!
|
video.analysis_success!
|
||||||
talent_release = create(:talent_release, project: project)
|
talent_release = create(:talent_release, project: project, person_name: "Jane Doe")
|
||||||
allow(BrayniacAI::FacialRecognition).to receive(:find).and_return(
|
allow(BrayniacAI::FacialRecognition).to receive(:find).and_return(
|
||||||
BrayniacAI::FacialRecognition.new({
|
BrayniacAI::FacialRecognition.new({
|
||||||
bucket_name: "",
|
bucket_name: "",
|
||||||
@@ -469,7 +469,7 @@ feature "User performs video analysis" do
|
|||||||
expect(page).not_to have_css(".fa-check-circle")
|
expect(page).not_to have_css(".fa-check-circle")
|
||||||
end
|
end
|
||||||
|
|
||||||
confirm_suggested_talent_match(video, talent_release)
|
confirm_suggested_match(video, talent_release)
|
||||||
|
|
||||||
within "#suggested_matches" do
|
within "#suggested_matches" do
|
||||||
expect(page).to have_css(".fa-check-circle")
|
expect(page).to have_css(".fa-check-circle")
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user