Skip to content
Snippets Groups Projects
Unverified Commit 31337e85 authored by Khemissi Amir's avatar Khemissi Amir Committed by GitHub
Browse files

V3 Migrations: Minor fixes and optimizations to v2 rake tasks. (#4719)

* V3 Migrations: Optimized `migrations:roles` task.

* V3 Migrations: Fixed `migrations:rooms` task.
parent 93d34aad
No related branches found
No related tags found
No related merge requests found
...@@ -2,4 +2,5 @@ ...@@ -2,4 +2,5 @@
class SharedAccess < ApplicationRecord class SharedAccess < ApplicationRecord
belongs_to :room belongs_to :room
belongs_to :user
end end
# frozen_string_literal: true # frozen_string_literal: true
# rubocop:disable all
namespace :migrations do namespace :migrations do
DEFAULT_ROLES_MAP = { "admin" => "Administrator", "user" => "User" }.freeze DEFAULT_ROLES_MAP = { "admin" => "Administrator", "user" => "User" }.freeze
...@@ -15,21 +16,22 @@ namespace :migrations do ...@@ -15,21 +16,22 @@ namespace :migrations do
Role.unscoped Role.unscoped
.select(:id, :name) .select(:id, :name)
.includes(:role_permissions)
.where.not(name: COMMON[:filtered_roles]) .where.not(name: COMMON[:filtered_roles])
.find_each(batch_size: COMMON[:batch_size]) do |r| .find_each(batch_size: COMMON[:batch_size]) do |r|
# RolePermissions # RolePermissions
role_permissions_hash = RolePermission.where(role_id: r.id).pluck(:name, :value).to_h role_permissions_hash = r.role_permissions.pluck(:name, :value).to_h
# Returns nil if the RolePermission value is the same as the corresponding default value in V3
role_permissions = { role_permissions = {
CreateRoom: role_permissions_hash['can_create_rooms'] == "true" ? nil : "false", CreateRoom: role_permissions_hash['can_create_rooms'] == "true" ? "true" : "false",
CanRecord: role_permissions_hash['can_launch_recording'] == "true" ? nil : "false", CanRecord: role_permissions_hash['can_launch_recording'] == "true" ? "true" : "false",
ManageUsers: role_permissions_hash['can_manage_users'] == "false" ? nil : "true", ManageUsers: role_permissions_hash['can_manage_users'] == "true" ? "true" : "false",
ManageRoles: role_permissions_hash['can_edit_roles'] == "false" ? nil : "true", ManageRoles: role_permissions_hash['can_edit_roles'] == "true" ? "true" : "false",
# In V3, can_manage_room_recordings is split into two distinct permissions: ManageRooms and ManageRecordings # In V3, can_manage_room_recordings is split into two distinct permissions: ManageRooms and ManageRecordings
ManageRooms: role_permissions_hash['can_manage_rooms_recordings'] == "false" ? nil : "true", ManageRooms: role_permissions_hash['can_manage_rooms_recordings'] == "true" ? "true" : "false",
ManageRecordings: role_permissions_hash['can_manage_room_recordings'] == "false" ? nil : "true", ManageRecordings: role_permissions_hash['can_manage_rooms_recordings'] == "true" ? "true" : "false",
ManageSiteSettings: role_permissions_hash['can_edit_site_settings'] == "false" ? nil : "true" ManageSiteSettings: role_permissions_hash['can_edit_site_settings'] == "true" ? "true" : "false"
}.compact }
params = { role: { name: r.name.capitalize, params = { role: { name: r.name.capitalize,
role_permissions: role_permissions } } role_permissions: role_permissions } }
...@@ -115,15 +117,15 @@ namespace :migrations do ...@@ -115,15 +117,15 @@ namespace :migrations do
{} {}
else else
{ {
record: parsed_room_settings["recording"] == false ? nil : "true", record: parsed_room_settings["recording"] == true ? "true" : "false",
muteOnStart: parsed_room_settings["muteOnStart"] == false ? nil : "true", muteOnStart: parsed_room_settings["muteOnStart"] == true ? "true" : "false",
glAnyoneCanStart: parsed_room_settings["anyoneCanStart"] == false ? nil : "true", glAnyoneCanStart: parsed_room_settings["anyoneCanStart"] == true ? "true" : "false",
glAnyoneJoinAsModerator: parsed_room_settings["joinModerator"] == false ? nil : "true", glAnyoneJoinAsModerator: parsed_room_settings["joinModerator"] == true ? "true" : "false",
guestPolicy: parsed_room_settings["requireModeratorApproval"] == false ? nil : "ASK_MODERATOR", guestPolicy: parsed_room_settings["requireModeratorApproval"] == true ? "ASK_MODERATOR" : "ALWAYS_ACCEPT"
}.compact }
end end
shared_users_emails = SharedAccess.joins(:user).where(room_id: r.id).pluck(:'users.email') shared_users_emails = r.shared_access.joins(:user).pluck(:'users.email')
params = { room: { friendly_id: r.uid, params = { room: { friendly_id: r.uid,
name: r.name, name: r.name,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment