Merge pull request '299_Performance_tweaks' (#302) from 299_Performance_tweaks into master

Reviewed-on: SGD-Nord/konova#302
This commit is contained in:
2023-02-23 10:19:55 +01:00
7 changed files with 32 additions and 13 deletions

View File

@@ -50,9 +50,11 @@ class ShareableTableFilterMixin(django_filters.FilterSet):
"""
if not value:
return queryset.filter(
user_teams = self.user.shared_teams
result = queryset.filter(
Q(users__in=[self.user]) | # requesting user has access
Q(teams__in=self.user.shared_teams)
Q(teams__in=user_teams)
).distinct()
return result
else:
return queryset

View File

@@ -506,10 +506,13 @@ class ShareableObjectMixin(models.Model):
Returns:
"""
directly_shared = self.shared_users.filter(id=user.id).exists()
team_shared = self.shared_teams.filter(
users__in=[user]
).exists()
obj_shared_teams = self.shared_teams
obj_shared_users = self.shared_users
user_shared_teams = user.shared_teams
directly_shared = obj_shared_users.filter(id=user.id).exists()
team_shared = (obj_shared_teams & user_shared_teams).exists()
is_shared = directly_shared or team_shared
return is_shared

View File

@@ -35,6 +35,7 @@ def home_view(request: HttpRequest):
template = "konova/home.html"
now = timezone.now()
user = request.user
user_teams = user.shared_teams
# Fetch the four newest active and published ServerMessages
msgs = ServerMessage.objects.filter(
@@ -51,7 +52,7 @@ def home_view(request: HttpRequest):
)
# Then fetch only user related ones
user_interventions = interventions.filter(
Q(users__in=[user]) | Q(teams__in=user.shared_teams)
Q(users__in=[user]) | Q(teams__in=user_teams)
).distinct()
# Repeat for other objects
@@ -59,13 +60,13 @@ def home_view(request: HttpRequest):
deleted=None,
)
user_comps = comps.filter(
Q(intervention__users__in=[user]) | Q(intervention__teams__in=user.shared_teams)
Q(intervention__users__in=[user]) | Q(intervention__teams__in=user_teams)
).distinct()
eco_accs = EcoAccount.objects.filter(
deleted=None,
)
user_ecco_accs = eco_accs.filter(
Q(users__in=[user]) | Q(teams__in=user.shared_teams)
Q(users__in=[user]) | Q(teams__in=user_teams)
).distinct()
additional_context = {