Skip to content

Commit

Permalink
Merge pull request #363 from serVmik/filter_issues
Browse files Browse the repository at this point in the history
[#266] Add issue filtering by status
  • Loading branch information
fey committed Nov 22, 2023
2 parents cec1355 + ffa7708 commit c5dab57
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=_('Status'),
)

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 c5dab57

Please sign in to comment.