Skip to content

Commit

Permalink
fix: remove views if catalog is changed
Browse files Browse the repository at this point in the history
  • Loading branch information
m6121 committed Nov 22, 2024
1 parent 1eadee5 commit be8b26d
Showing 1 changed file with 22 additions and 1 deletion.
23 changes: 22 additions & 1 deletion rdmo/projects/handlers.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@

from django.contrib.auth.models import User
from django.contrib.sites.models import Site
from django.db.models.signals import m2m_changed
from django.db.models import Q
from django.db.models.signals import m2m_changed, post_save
from django.dispatch import receiver

from rdmo.projects.models import Membership, Project
Expand Down Expand Up @@ -58,3 +59,23 @@ def m2m_changed_view_groups_signal(sender, instance, **kwargs):
projects = Project.objects.filter(memberships__in=list(memberships), catalog__in=catalogs, views=instance)
for project in projects:
project.views.remove(instance)


@receiver(post_save, sender=Project)
def update_views_on_catalog_change(sender, instance, **kwargs):
# remove views that are no longer available
view_candidates = instance.views.exclude(catalogs__in=[instance.catalog]) \
.exclude(catalogs=None)

for view in view_candidates:
instance.views.remove(view)

# add views that are now available
view_candidates = View.objects.exclude(id__in=[v.id for v in instance.views.all()]) \
.filter_current_site() \
.filter_catalog(instance.catalog)
# .filter_group(self.request.user) \
# .filter_availability(self.request.user).exists()

for view in view_candidates:
instance.views.add(view)

0 comments on commit be8b26d

Please sign in to comment.