Skip to content

Commit

Permalink
update repository view
Browse files Browse the repository at this point in the history
  • Loading branch information
sgmdlt committed Oct 18, 2024
1 parent 0dfaa72 commit 12495e6
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 24 deletions.
59 changes: 36 additions & 23 deletions contributors/views/repositories_views/repositories.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
from django.db.models import Count, Q
from django.db.models import Count, Prefetch, Q
from django.utils.decorators import method_decorator
from django.utils.translation import gettext_lazy as _
from django.views import generic
from django.views.decorators.cache import cache_page

from contributors.models import Label, Repository
from contributors.views.mixins import (
Expand All @@ -17,25 +19,35 @@ class ListView(
"""A list of repositories."""

for_visible_contributor = Q(contribution__contributor__is_visible=True)
queryset = (
Repository.objects.select_related('organization').filter(
is_visible=True,
).distinct().annotate(
pull_requests=Count(
'contribution',
filter=Q(contribution__type='pr') & for_visible_contributor,
),
issues=Count(
'contribution',
filter=Q(contribution__type='iss') & for_visible_contributor,
),
contributors_count=Count(
'contribution__contributor',
filter=for_visible_contributor,
distinct=True,
),

@method_decorator(cache_page(60 * 15)) # кэширование на 15 минут
def dispatch(self, *args, **kwargs):
return super().dispatch(*args, **kwargs)

def get_queryset(self):
queryset = (
Repository.objects.select_related('organization', 'project').filter(
is_visible=True,
).distinct().annotate(
pull_requests=Count(
'contribution',
filter=Q(contribution__type='pr') & self.for_visible_contributor,
),
issues=Count(
'contribution',
filter=Q(contribution__type='iss') & self.for_visible_contributor,
),
contributors_count=Count(
'contribution__contributor',
filter=self.for_visible_contributor,
distinct=True,
),
).prefetch_related(
Prefetch('labels', queryset=Label.objects.only('name'))
)
)
)
return queryset

template_name = 'contributors_sections/repositories/repositories_list.html'
sortable_fields = (
'name',
Expand All @@ -50,12 +62,13 @@ class ListView(

def get_context_data(self, **kwargs):
"""Add context."""
all_labels = Label.objects.all()
context = super().get_context_data(**kwargs)

all_labels = Label.objects.only('name')
labels = Label.objects.filter(
repository__id__in=self.get_queryset(),
).distinct()
repository__in=self.get_queryset(),
).distinct().only('name')

context = super().get_context_data(**kwargs)
context['all_labels'] = all_labels
context['labels'] = labels

Expand Down
2 changes: 1 addition & 1 deletion setup.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ enable-extensions = G
count = True
max-string-usages = 4
max-local-variables = 10
max-line-length = 79
max-line-length = 89

# Plugins:
accept-encodings = utf-8
Expand Down

0 comments on commit 12495e6

Please sign in to comment.