@@ -78,7 +78,7 @@ def execute
78
78
import_category_permissions
79
79
import_category_users
80
80
import_category_moderation_groups
81
- update_read_restricted_flags
81
+ update_category_read_restricted
82
82
83
83
import_topics
84
84
import_posts
@@ -379,7 +379,7 @@ def import_category_moderation_groups
379
379
group_id = group_id_from_imported_id ( row [ "group_id" ] )
380
380
381
381
next unless category_id && group_id
382
- next if existing_moderation_groups . include ?( [ category_id , group_id ] )
382
+ next unless existing_moderation_groups . add ?( [ category_id , group_id ] )
383
383
384
384
{ category_id : category_id , group_id : group_id }
385
385
end
@@ -414,19 +414,24 @@ def import_category_users
414
414
category_users . close
415
415
end
416
416
417
- def update_read_restricted_flags
417
+ def update_category_read_restricted
418
418
puts "" , "Updating category read_restricted flags..."
419
419
start_time = Time . now
420
420
processed_count = 0
421
421
updated_count = 0
422
422
skipped_count = 0
423
423
424
424
Category
425
- . includes ( : category_groups)
425
+ . includes ( category_groups : :group )
426
426
. find_each do |category |
427
427
processed_count += 1
428
428
429
- permissions = category . permissions_params
429
+ permissions = { }
430
+ category . category_groups . each do |category_group |
431
+ group = category_group . group
432
+ permissions [ category_group . group_name ] = category_group . permission_type if group . present?
433
+ end
434
+
430
435
expected_read_restricted =
431
436
if permissions . empty?
432
437
false
@@ -459,19 +464,20 @@ def import_groups
459
464
create_groups ( groups ) do |row |
460
465
next if group_id_from_imported_id ( row [ "id" ] ) . present?
461
466
462
- {
467
+ group_data = {
463
468
imported_id : row [ "id" ] ,
464
469
name : row [ "name" ] ,
465
470
full_name : row [ "full_name" ] ,
466
- public_admission : row [ "public_admission" ] ,
467
- public_exit : row [ "public_exit" ] ,
468
- allow_membership_requests : row [ "allow_membership_requests" ] ,
471
+ public_admission : row [ "public_admission" ] || false ,
472
+ public_exit : row [ "public_exit" ] || false ,
473
+ allow_membership_requests : row [ "allow_membership_requests" ] || false ,
469
474
visibility_level : row [ "visibility_level" ] ,
470
475
members_visibility_level : row [ "members_visibility_level" ] ,
471
476
mentionable_level : row [ "mentionable_level" ] ,
472
477
messageable_level : row [ "messageable_level" ] ,
473
- assignable_level : row [ "assignable_level" ] ,
474
478
}
479
+ group_data [ :assignable_level ] = row [ "assignable_level" ] if defined? ( ::DiscourseAssign )
480
+ group_data
475
481
end
476
482
477
483
groups . close
@@ -609,13 +615,12 @@ def import_user_options
609
615
puts "" , "Importing user options..."
610
616
611
617
users = query ( <<~SQL )
612
- SELECT id, timezone, email_level, email_messages_level, email_digests, hide_profile_and_presence
618
+ SELECT id, timezone, email_level, email_messages_level, email_digests
613
619
FROM users
614
620
WHERE timezone IS NOT NULL
615
621
OR email_level IS NOT NULL
616
622
OR email_messages_level IS NOT NULL
617
623
OR email_digests IS NOT NULL
618
- OR hide_profile_and_presence IS NOT NULL
619
624
ORDER BY id
620
625
SQL
621
626
@@ -631,7 +636,9 @@ def import_user_options
631
636
email_level : row [ "email_level" ] ,
632
637
email_messages_level : row [ "email_messages_level" ] ,
633
638
email_digests : row [ "email_digests" ] ,
634
- hide_profile_and_presence : row [ "hide_profile_and_presence" ] || false ,
639
+ hide_profile_and_presence : false ,
640
+ hide_profile : false ,
641
+ hide_presence : false ,
635
642
}
636
643
end
637
644
@@ -2023,10 +2030,17 @@ def import_tags
2023
2030
)
2024
2031
@tag_mapping [ row [ "id" ] ] = tag . id
2025
2032
2026
- if row [ "tag_group_id" ] && !row [ "tag_group_id" ] . empty?
2027
- intermediate_group_ids = JSON . parse ( row [ "tag_group_id" ] )
2033
+ intermediate_group_ids = [ ]
2034
+ if row [ "tag_group_ids" ] && !row [ "tag_group_ids" ] . empty?
2035
+ intermediate_group_ids = JSON . parse ( row [ "tag_group_ids" ] )
2036
+ elsif row [ "tag_group_id" ] && !row [ "tag_group_id" ] . empty?
2037
+ # Support old single tag_group_id
2038
+ intermediate_group_ids = [ row [ "tag_group_id" ] ]
2039
+ end
2028
2040
2041
+ if intermediate_group_ids . any?
2029
2042
intermediate_group_ids . each do |intermediate_group_id |
2043
+ intermediate_group_id = intermediate_group_id . to_i if intermediate_group_id . is_a? ( String )
2030
2044
discourse_tag_group_id = @tag_group_mapping [ intermediate_group_id ]
2031
2045
2032
2046
if discourse_tag_group_id
@@ -2476,6 +2490,15 @@ def import_badges
2476
2490
image_upload_id :
2477
2491
row [ "image_upload_id" ] ? upload_id_from_original_id ( row [ "image_upload_id" ] ) : nil ,
2478
2492
query : row [ "query" ] ,
2493
+ multiple_grant : to_boolean ( row [ "multiple_grant" ] ) ,
2494
+ allow_title : to_boolean ( row [ "allow_title" ] ) ,
2495
+ icon : row [ "icon" ] ,
2496
+ listable : to_boolean ( row [ "listable" ] ) ,
2497
+ target_posts : to_boolean ( row [ "target_posts" ] ) ,
2498
+ enabled : to_boolean ( row [ "enabled" ] ) ,
2499
+ auto_revoke : to_boolean ( row [ "auto_revoke" ] ) ,
2500
+ trigger : row [ "trigger" ] ,
2501
+ show_posts : to_boolean ( row [ "show_posts" ] ) ,
2479
2502
}
2480
2503
end
2481
2504
@@ -2506,6 +2529,24 @@ def import_user_badges
2506
2529
end
2507
2530
2508
2531
user_badges . close
2532
+
2533
+ puts "" , "Updating badge grant counts..."
2534
+ start_time = Time . now
2535
+
2536
+ DB . exec ( <<~SQL )
2537
+ WITH
2538
+ grants AS (
2539
+ SELECT badge_id, COUNT(*) AS grant_count FROM user_badges GROUP BY badge_id
2540
+ )
2541
+
2542
+ UPDATE badges
2543
+ SET grant_count = grants.grant_count
2544
+ FROM grants
2545
+ WHERE badges.id = grants.badge_id
2546
+ AND badges.grant_count <> grants.grant_count
2547
+ SQL
2548
+
2549
+ puts " Update took #{ ( Time . now - start_time ) . to_i } seconds."
2509
2550
end
2510
2551
2511
2552
def import_anniversary_user_badges
0 commit comments