Skip to content

Commit bc908a7

Browse files
authored
Merge pull request #1162 from thunderstore-io/hotfix-visibility-system
Deactivate visibility system update logic
2 parents 00c3429 + 1202b20 commit bc908a7

File tree

6 files changed

+449
-440
lines changed

6 files changed

+449
-440
lines changed

django/thunderstore/community/models/package_listing.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -424,11 +424,13 @@ def set_visibility_from_review_status(self):
424424

425425
@transaction.atomic
426426
def update_visibility(self):
427-
self.visibility.copy_from(self.package.visibility)
428-
429-
self.set_visibility_from_review_status()
430-
431-
self.visibility.save()
427+
return
428+
# TODO: Re-enable once visibility system fixed
429+
# self.visibility.copy_from(self.package.visibility)
430+
#
431+
# self.set_visibility_from_review_status()
432+
#
433+
# self.visibility.save()
432434

433435

434436
signals.post_save.connect(PackageListing.post_save, sender=PackageListing)

django/thunderstore/community/tests/test_package_listing.py

Lines changed: 168 additions & 167 deletions
Original file line numberDiff line numberDiff line change
@@ -435,170 +435,171 @@ def test_package_listing_has_mod_manager_support(mod_manager_support: bool) -> N
435435
assert package_listing.has_mod_manager_support == mod_manager_support
436436

437437

438-
@pytest.mark.django_db
439-
def test_package_listing_visibility_inherits_package_is_active(
440-
active_package_listing: PackageListing,
441-
) -> None:
442-
assert_visibility_is_public(active_package_listing.visibility)
443-
444-
package = active_package_listing.package
445-
446-
package.is_active = False
447-
package.save()
448-
449-
active_package_listing.refresh_from_db()
450-
assert_visibility_is_not_visible(active_package_listing.visibility)
451-
452-
package.is_active = True
453-
package.save()
454-
455-
active_package_listing.refresh_from_db()
456-
assert_visibility_is_public(active_package_listing.visibility)
457-
458-
459-
@pytest.mark.django_db
460-
def test_package_listing_visibility_inherits_union_of_package_versions_visibility(
461-
active_package_listing: PackageListing,
462-
) -> None:
463-
assert_visibility_is_public(active_package_listing.visibility)
464-
465-
package = active_package_listing.package
466-
467-
for version in package.versions.all():
468-
version.review_status = PackageVersionReviewStatus.rejected
469-
version.save()
470-
471-
active_package_listing.refresh_from_db()
472-
assert_visibility_is_not_public(active_package_listing.visibility)
473-
474-
for version in package.versions.all():
475-
version.is_active = False
476-
version.save()
477-
478-
active_package_listing.refresh_from_db()
479-
assert_visibility_is_not_visible(active_package_listing.visibility)
480-
481-
for version in package.versions.all():
482-
version.review_status = PackageVersionReviewStatus.approved
483-
version.is_active = True
484-
version.save()
485-
486-
active_package_listing.refresh_from_db()
487-
assert_visibility_is_public(active_package_listing.visibility)
488-
489-
490-
@pytest.mark.django_db
491-
def test_set_visibility_from_review_status():
492-
listing = PackageListingFactory()
493-
494-
listing.review_status = PackageListingReviewStatus.rejected
495-
listing.set_visibility_from_review_status()
496-
listing.visibility.save()
497-
498-
assert_visibility_is_not_public(listing.visibility)
499-
500-
listing.visibility.copy_from(listing.package.visibility)
501-
502-
listing.review_status = PackageListingReviewStatus.unreviewed
503-
listing.set_visibility_from_review_status()
504-
listing.visibility.save()
505-
506-
assert_default_visibility(listing.visibility)
507-
508-
listing.visibility.copy_from(listing.package.visibility)
509-
510-
listing.community.require_package_listing_approval = True
511-
listing.set_visibility_from_review_status()
512-
listing.visibility.save()
513-
514-
assert_visibility_is_not_public(listing.visibility)
515-
516-
517-
@pytest.mark.django_db
518-
def test_is_visible_to_user():
519-
listing = PackageListingFactory()
520-
521-
user = UserFactory.create()
522-
523-
owner = UserFactory.create()
524-
TeamMember.objects.create(
525-
user=owner,
526-
team=listing.package.owner,
527-
role=TeamMemberRole.owner,
528-
)
529-
530-
moderator = UserFactory.create()
531-
CommunityMembership.objects.create(
532-
user=moderator,
533-
community=listing.community,
534-
role=CommunityMemberRole.moderator,
535-
)
536-
537-
admin = UserFactory.create(is_superuser=True)
538-
539-
agents = {
540-
"anonymous": None,
541-
"user": user,
542-
"owner": owner,
543-
"moderator": moderator,
544-
"admin": admin,
545-
}
546-
547-
flags = [
548-
"public_detail",
549-
"owner_detail",
550-
"moderator_detail",
551-
"admin_detail",
552-
]
553-
554-
# Admins are also moderators but not owners
555-
expected = {
556-
"public_detail": {
557-
"anonymous": True,
558-
"user": True,
559-
"owner": True,
560-
"moderator": True,
561-
"admin": True,
562-
},
563-
"owner_detail": {
564-
"anonymous": False,
565-
"user": False,
566-
"owner": True,
567-
"moderator": False,
568-
"admin": False,
569-
},
570-
"moderator_detail": {
571-
"anonymous": False,
572-
"user": False,
573-
"owner": False,
574-
"moderator": True,
575-
"admin": True,
576-
},
577-
"admin_detail": {
578-
"anonymous": False,
579-
"user": False,
580-
"owner": False,
581-
"moderator": False,
582-
"admin": True,
583-
},
584-
}
585-
586-
for flag in flags:
587-
listing.visibility.public_detail = False
588-
listing.visibility.owner_detail = False
589-
listing.visibility.moderator_detail = False
590-
listing.visibility.admin_detail = False
591-
592-
setattr(listing.visibility, flag, True)
593-
listing.visibility.save()
594-
595-
for role, subject in agents.items():
596-
result = listing.is_visible_to_user(subject)
597-
assert result == expected[flag][role], (
598-
f"Expected {flag} visibility for {role} to be "
599-
f"{expected[flag][role]}, got {result}"
600-
)
601-
602-
listing.visibility = None
603-
604-
assert not listing.is_visible_to_user(admin)
438+
# TODO: Re-enable once visibility system fixed
439+
# @pytest.mark.django_db
440+
# def test_package_listing_visibility_inherits_package_is_active(
441+
# active_package_listing: PackageListing,
442+
# ) -> None:
443+
# assert_visibility_is_public(active_package_listing.visibility)
444+
#
445+
# package = active_package_listing.package
446+
#
447+
# package.is_active = False
448+
# package.save()
449+
#
450+
# active_package_listing.refresh_from_db()
451+
# assert_visibility_is_not_visible(active_package_listing.visibility)
452+
#
453+
# package.is_active = True
454+
# package.save()
455+
#
456+
# active_package_listing.refresh_from_db()
457+
# assert_visibility_is_public(active_package_listing.visibility)
458+
#
459+
#
460+
# @pytest.mark.django_db
461+
# def test_package_listing_visibility_inherits_union_of_package_versions_visibility(
462+
# active_package_listing: PackageListing,
463+
# ) -> None:
464+
# assert_visibility_is_public(active_package_listing.visibility)
465+
#
466+
# package = active_package_listing.package
467+
#
468+
# for version in package.versions.all():
469+
# version.review_status = PackageVersionReviewStatus.rejected
470+
# version.save()
471+
#
472+
# active_package_listing.refresh_from_db()
473+
# assert_visibility_is_not_public(active_package_listing.visibility)
474+
#
475+
# for version in package.versions.all():
476+
# version.is_active = False
477+
# version.save()
478+
#
479+
# active_package_listing.refresh_from_db()
480+
# assert_visibility_is_not_visible(active_package_listing.visibility)
481+
#
482+
# for version in package.versions.all():
483+
# version.review_status = PackageVersionReviewStatus.approved
484+
# version.is_active = True
485+
# version.save()
486+
#
487+
# active_package_listing.refresh_from_db()
488+
# assert_visibility_is_public(active_package_listing.visibility)
489+
#
490+
#
491+
# @pytest.mark.django_db
492+
# def test_set_visibility_from_review_status():
493+
# listing = PackageListingFactory()
494+
#
495+
# listing.review_status = PackageListingReviewStatus.rejected
496+
# listing.set_visibility_from_review_status()
497+
# listing.visibility.save()
498+
#
499+
# assert_visibility_is_not_public(listing.visibility)
500+
#
501+
# listing.visibility.copy_from(listing.package.visibility)
502+
#
503+
# listing.review_status = PackageListingReviewStatus.unreviewed
504+
# listing.set_visibility_from_review_status()
505+
# listing.visibility.save()
506+
#
507+
# assert_default_visibility(listing.visibility)
508+
#
509+
# listing.visibility.copy_from(listing.package.visibility)
510+
#
511+
# listing.community.require_package_listing_approval = True
512+
# listing.set_visibility_from_review_status()
513+
# listing.visibility.save()
514+
#
515+
# assert_visibility_is_not_public(listing.visibility)
516+
#
517+
#
518+
# @pytest.mark.django_db
519+
# def test_is_visible_to_user():
520+
# listing = PackageListingFactory()
521+
#
522+
# user = UserFactory.create()
523+
#
524+
# owner = UserFactory.create()
525+
# TeamMember.objects.create(
526+
# user=owner,
527+
# team=listing.package.owner,
528+
# role=TeamMemberRole.owner,
529+
# )
530+
#
531+
# moderator = UserFactory.create()
532+
# CommunityMembership.objects.create(
533+
# user=moderator,
534+
# community=listing.community,
535+
# role=CommunityMemberRole.moderator,
536+
# )
537+
#
538+
# admin = UserFactory.create(is_superuser=True)
539+
#
540+
# agents = {
541+
# "anonymous": None,
542+
# "user": user,
543+
# "owner": owner,
544+
# "moderator": moderator,
545+
# "admin": admin,
546+
# }
547+
#
548+
# flags = [
549+
# "public_detail",
550+
# "owner_detail",
551+
# "moderator_detail",
552+
# "admin_detail",
553+
# ]
554+
#
555+
# # Admins are also moderators but not owners
556+
# expected = {
557+
# "public_detail": {
558+
# "anonymous": True,
559+
# "user": True,
560+
# "owner": True,
561+
# "moderator": True,
562+
# "admin": True,
563+
# },
564+
# "owner_detail": {
565+
# "anonymous": False,
566+
# "user": False,
567+
# "owner": True,
568+
# "moderator": False,
569+
# "admin": False,
570+
# },
571+
# "moderator_detail": {
572+
# "anonymous": False,
573+
# "user": False,
574+
# "owner": False,
575+
# "moderator": True,
576+
# "admin": True,
577+
# },
578+
# "admin_detail": {
579+
# "anonymous": False,
580+
# "user": False,
581+
# "owner": False,
582+
# "moderator": False,
583+
# "admin": True,
584+
# },
585+
# }
586+
#
587+
# for flag in flags:
588+
# listing.visibility.public_detail = False
589+
# listing.visibility.owner_detail = False
590+
# listing.visibility.moderator_detail = False
591+
# listing.visibility.admin_detail = False
592+
#
593+
# setattr(listing.visibility, flag, True)
594+
# listing.visibility.save()
595+
#
596+
# for role, subject in agents.items():
597+
# result = listing.is_visible_to_user(subject)
598+
# assert result == expected[flag][role], (
599+
# f"Expected {flag} visibility for {role} to be "
600+
# f"{expected[flag][role]}, got {result}"
601+
# )
602+
#
603+
# listing.visibility = None
604+
#
605+
# assert not listing.is_visible_to_user(admin)

0 commit comments

Comments
 (0)