Skip to content

Commit

Permalink
[Hexlet#266] Add issue filtering by status
Browse files Browse the repository at this point in the history
Add issue filtering by status to view issues.
Rename the page title "Open Issues" to "Issues".
Update navigation.
  • Loading branch information
svmikurov committed Nov 9, 2023
1 parent cec1355 commit f888415
Show file tree
Hide file tree
Showing 5 changed files with 26 additions and 9 deletions.
18 changes: 16 additions & 2 deletions contributors/views/filters.py
Expand Up @@ -5,9 +5,14 @@

from contributors.models import Contribution, ContributionLabel

STATE_CHOICES = (
('open', _('Open')),
('closed', _('Closed')),
)


class IssuesFilter(django_filters.FilterSet):
"""Open issues filter."""
"""Issues filter."""

info_title = django_filters.CharFilter(
field_name='info__title',
Expand All @@ -27,6 +32,14 @@ class IssuesFilter(django_filters.FilterSet):
label='',
widget=TextInput(attrs={'placeholder': _('Language')}),
)
info_state = django_filters.ChoiceFilter(
choices=STATE_CHOICES,
lookup_expr='icontains',
field_name='info__state',
label='',
empty_label=_('All'),
)

good_first_issue_filter = django_filters.BooleanFilter(
field_name='good_first_issue',
method='get_good_first_issue',
Expand All @@ -40,10 +53,11 @@ class Meta: # noqa: WPS306
'info_title',
'repository_full_name',
'repository_labels',
'info_state',
]

def get_good_first_issue(self, queryset, name, value): # noqa: WPS110
"""Filter open issues by label 'good_first_issue'."""
"""Filter issues by label 'good_first_issue'."""
good_first = ContributionLabel.objects.filter(
name='good first issue',
).first()
Expand Down
6 changes: 3 additions & 3 deletions contributors/views/issues.py
Expand Up @@ -14,7 +14,7 @@ class ListView(
TableSortSearchAndPaginationMixin,
FilterView,
):
"""A list of opened issues."""
"""A list of issues."""

template_name = 'open_issues.html'
filterset_class = IssuesFilter
Expand All @@ -39,7 +39,7 @@ class ListView(
)

queryset = (
Contribution.objects.filter(type='iss', info__state='open').
Contribution.objects.filter(type='iss').
select_related('repository', 'contributor', 'info').
prefetch_related("repository__labels", contributionlabel_prefetch).
distinct()
Expand All @@ -48,7 +48,7 @@ class ListView(
def get_context_data(self, *args, **kwargs):
"""Add context."""
all_contribution_id = Contribution.objects.filter(
type='iss', info__state='open',
type='iss'
).values_list('id', flat=True).distinct()
all_contribution_labels = ContributionLabel.objects.filter(
contribution__id__in=all_contribution_id,
Expand Down
3 changes: 3 additions & 0 deletions templates/components/issues_filter.html
Expand Up @@ -13,6 +13,9 @@
<div class="col">
{{ filter.form.repository_labels|as_crispy_field }}
</div>
<div class="col">
{{ filter.form.info_state|as_crispy_field }}
</div>
<div class="form-group">
{{ filter.form.good_first_issue_filter|as_crispy_field }}
</div>
Expand Down
2 changes: 1 addition & 1 deletion templates/components/navbar.html
Expand Up @@ -40,7 +40,7 @@
</li>
<li class="nav-item">
<a class="nav-link" href="{% url 'contributors:open_issues' %}">
{% trans "Open Issues" %}
{% trans "Issues" %}
</a>
</li>
<li class="nav-item">
Expand Down
6 changes: 3 additions & 3 deletions templates/open_issues.html
@@ -1,10 +1,10 @@
{% extends 'base.html' %}
{% load i18n %}
{% block title %}{% trans "Open Issues" %}{% endblock %}
{% block title %}{% trans "Issues" %}{% endblock %}
<!-- Open Graph tags -->
{% block og_title %}{% trans "Open Issues" %}{% endblock og_title %}
{% block og_title %}{% trans "Issues" %}{% endblock og_title %}
<!-- End Open Graph tags -->
{% block header %}{% trans "Open Issues" %}{% endblock header %}
{% block header %}{% trans "Issues" %}{% endblock header %}
{% block content %}
{% include 'components/issues_filter.html' %}
{% include 'components/issue_tags_list.html' %}
Expand Down

0 comments on commit f888415

Please sign in to comment.