Revert "Revert "Add filtering of builds and Version/Projects that is unexposed.""
This reverts commit 161d440763
.
rtd2
parent
161d440763
commit
5ce0bce433
|
@ -217,6 +217,10 @@ p.build-success { font-size: .8em; color: #108830; margin: 0 0 3px; }
|
||||||
p.build-failure { font-size: .8em; color: #dc1020; margin: 0 0 3px; }
|
p.build-failure { font-size: .8em; color: #dc1020; margin: 0 0 3px; }
|
||||||
p.build-missing { font-size: .8em; color: #9d9a55; margin: 0 0 3px; }
|
p.build-missing { font-size: .8em; color: #9d9a55; margin: 0 0 3px; }
|
||||||
|
|
||||||
|
/* build page */
|
||||||
|
|
||||||
|
#build_list select { width: 10em; }
|
||||||
|
|
||||||
|
|
||||||
/* dashboard bar */
|
/* dashboard bar */
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
import django_filters
|
||||||
|
|
||||||
|
from builds import constants
|
||||||
|
from builds.models import Build, Version
|
||||||
|
|
||||||
|
|
||||||
|
ANY_REPO = (
|
||||||
|
('', 'Any'),
|
||||||
|
)
|
||||||
|
|
||||||
|
BUILD_TYPES = ANY_REPO + constants.BUILD_TYPES
|
||||||
|
|
||||||
|
|
||||||
|
class VersionFilter(django_filters.FilterSet):
|
||||||
|
project = django_filters.CharFilter(name='project__name', lookup_type="icontains")
|
||||||
|
slug= django_filters.CharFilter(label="Slug", name='slug', lookup_type='icontains')
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = Version
|
||||||
|
fields = ['project', 'slug']
|
||||||
|
|
||||||
|
class BuildFilter(django_filters.FilterSet):
|
||||||
|
date = django_filters.DateRangeFilter(label="Build Date", name="date")
|
||||||
|
type = django_filters.ChoiceFilter(label="Build Type", choices=BUILD_TYPES)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = Build
|
||||||
|
fields = ['type', 'date', 'version', 'success']
|
||||||
|
|
|
@ -4,6 +4,7 @@ from django.shortcuts import get_object_or_404
|
||||||
from django.views.generic.list_detail import object_list, object_detail
|
from django.views.generic.list_detail import object_list, object_detail
|
||||||
|
|
||||||
from builds.models import Build
|
from builds.models import Build
|
||||||
|
from builds.filters import BuildFilter
|
||||||
from projects.models import Project
|
from projects.models import Project
|
||||||
|
|
||||||
from taggit.models import Tag
|
from taggit.models import Tag
|
||||||
|
@ -12,6 +13,7 @@ def build_list(request, project_slug=None, tag=None):
|
||||||
"""Show a list of builds.
|
"""Show a list of builds.
|
||||||
"""
|
"""
|
||||||
queryset = Build.objects.all()
|
queryset = Build.objects.all()
|
||||||
|
filter = BuildFilter(request.GET, queryset=queryset)
|
||||||
|
|
||||||
if tag:
|
if tag:
|
||||||
tag = get_object_or_404(Tag, slug=tag)
|
tag = get_object_or_404(Tag, slug=tag)
|
||||||
|
@ -28,6 +30,7 @@ def build_list(request, project_slug=None, tag=None):
|
||||||
queryset=queryset,
|
queryset=queryset,
|
||||||
extra_context={
|
extra_context={
|
||||||
'project': project,
|
'project': project,
|
||||||
|
'filter': filter,
|
||||||
'tag': tag,
|
'tag': tag,
|
||||||
'active_builds': active_builds
|
'active_builds': active_builds
|
||||||
},
|
},
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
import django_filters
|
||||||
|
|
||||||
|
from projects import constants
|
||||||
|
from projects.models import Project
|
||||||
|
|
||||||
|
ANY_REPO = (
|
||||||
|
('', 'Any'),
|
||||||
|
)
|
||||||
|
|
||||||
|
REPO_CHOICES = ANY_REPO + constants.REPO_CHOICES
|
||||||
|
|
||||||
|
class ProjectFilter(django_filters.FilterSet):
|
||||||
|
name = django_filters.CharFilter(label="Name", name='name', lookup_type='icontains')
|
||||||
|
pub_date = django_filters.DateRangeFilter(label="Created Date", name="pub_date")
|
||||||
|
repo = django_filters.CharFilter(label="Repository URL", name='repo', lookup_type='icontains')
|
||||||
|
repo_type = django_filters.ChoiceFilter(
|
||||||
|
label="Repository",
|
||||||
|
name='repo',
|
||||||
|
lookup_type='icontains',
|
||||||
|
choices=REPO_CHOICES,
|
||||||
|
)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = Project
|
||||||
|
fields = ['name', 'pub_date', 'repo', 'repo_type']
|
|
@ -0,0 +1,29 @@
|
||||||
|
{% extends "base.html" %}
|
||||||
|
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
|
{% block nav-dashboard %} class="active"{% endblock %}
|
||||||
|
|
||||||
|
{% block project_editing %}
|
||||||
|
|
||||||
|
<!-- BEGIN filter bar -->
|
||||||
|
<div id="project_bar">
|
||||||
|
<div class="wrapper">
|
||||||
|
|
||||||
|
<div class="project-title">
|
||||||
|
<h1>Filter</h1>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="options">
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
{% block filter_bar %}{% endblock %}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- END filter bar -->
|
||||||
|
|
||||||
|
{% endblock %}
|
|
@ -7,30 +7,40 @@
|
||||||
{% block title %}Builds{% endblock %}
|
{% block title %}Builds{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
<div id="build_list">
|
||||||
|
|
||||||
{% autopaginate build_list 15 %}
|
<form action="" method="get">
|
||||||
|
{{ filter.form.as_p }}
|
||||||
|
<input type="submit" value="Filter" />
|
||||||
|
</form>
|
||||||
|
|
||||||
<!-- BEGIN builds list -->
|
{% autopaginate filter 15 %}
|
||||||
<div class="module">
|
|
||||||
<div class="module-wrapper">
|
|
||||||
|
|
||||||
<div class="module-header">
|
<!-- BEGIN builds list -->
|
||||||
<h1>{% trans "Recent Builds" %}</h1>
|
<div class="module">
|
||||||
</div>
|
<div class="module-wrapper">
|
||||||
|
|
||||||
<div class="module-list">
|
|
||||||
<div class="module-list-wrapper">
|
|
||||||
<ul>
|
|
||||||
{% include "core/build_list_detailed.html" %}
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
<div class="module-header">
|
||||||
|
<h1>{% trans "Recent Builds" %}</h1>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
<!-- END builds list -->
|
|
||||||
|
|
||||||
{% paginate %}
|
<div class="module-list">
|
||||||
|
<div class="module-list-wrapper">
|
||||||
|
<ul>
|
||||||
|
{% with filter as build_list %}
|
||||||
|
{% include "core/build_list_detailed.html" %}
|
||||||
|
{% endwith %}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- END builds list -->
|
||||||
|
|
||||||
|
{% paginate %}
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
|
<!-- BEGIN project bar -->
|
||||||
|
<div id="project_bar">
|
||||||
|
<div class="wrapper">
|
||||||
|
|
||||||
|
<div class="project-title">
|
||||||
|
<h1>Filter</h1>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="options">
|
||||||
|
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
{% block filter_bar %}{% endblock %}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- END project bar -->
|
|
@ -0,0 +1,13 @@
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
|
{% for obj in filter %}
|
||||||
|
<li class="module-item col-span">
|
||||||
|
<div id="obj-{{ build.id }}">
|
||||||
|
<a href="{{ obj.get_absolute_url }}">
|
||||||
|
{{ obj }}
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
{% empty %}
|
||||||
|
<li class="module-item quiet">{% trans "No projects found" %}</li>
|
||||||
|
{% endfor %}
|
|
@ -0,0 +1,43 @@
|
||||||
|
{% extends "base_filter.html" %}
|
||||||
|
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
|
{% load pagination_tags %}
|
||||||
|
|
||||||
|
{% block title %}Filter{% endblock %}
|
||||||
|
|
||||||
|
{% block filter_bar %}
|
||||||
|
<form method="get">
|
||||||
|
{{ filter.form.as_p }}
|
||||||
|
<input type="submit" value="Filter" />
|
||||||
|
</form>
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
|
||||||
|
{% autopaginate filter 15 %}
|
||||||
|
|
||||||
|
<!-- BEGIN builds list -->
|
||||||
|
<div class="module">
|
||||||
|
<div class="module-wrapper">
|
||||||
|
|
||||||
|
<div class="module-header">
|
||||||
|
<h1>{% trans "Filtered Results" %}</h1>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="module-list">
|
||||||
|
<div class="module-list-wrapper">
|
||||||
|
<ul>
|
||||||
|
{% include "core/filter_list.html" %}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- END builds list -->
|
||||||
|
|
||||||
|
{% paginate %}
|
||||||
|
|
||||||
|
{% endblock %}
|
|
@ -6,9 +6,11 @@ from django.views.generic.simple import direct_to_template
|
||||||
from tastypie.api import Api
|
from tastypie.api import Api
|
||||||
|
|
||||||
from api.base import ProjectResource, UserResource, BuildResource, VersionResource, FileResource
|
from api.base import ProjectResource, UserResource, BuildResource, VersionResource, FileResource
|
||||||
|
from builds.filters import VersionFilter
|
||||||
from core.forms import UserProfileForm
|
from core.forms import UserProfileForm
|
||||||
from core.views import SearchView
|
from core.views import SearchView
|
||||||
from projects.feeds import LatestProjectsFeed, NewProjectsFeed
|
from projects.feeds import LatestProjectsFeed, NewProjectsFeed
|
||||||
|
from projects.filters import ProjectFilter
|
||||||
|
|
||||||
v1_api = Api(api_name='v1')
|
v1_api = Api(api_name='v1')
|
||||||
v1_api.register(BuildResource())
|
v1_api.register(BuildResource())
|
||||||
|
@ -60,6 +62,16 @@ urlpatterns = patterns('',
|
||||||
url(r'^random/$', 'core.views.random_page', name='random_page'),
|
url(r'^random/$', 'core.views.random_page', name='random_page'),
|
||||||
url(r'^depth/$', 'core.views.queue_depth', name='queue_depth'),
|
url(r'^depth/$', 'core.views.queue_depth', name='queue_depth'),
|
||||||
url(r'^live/$', 'core.views.live_builds', name='live_builds'),
|
url(r'^live/$', 'core.views.live_builds', name='live_builds'),
|
||||||
|
url(r'^filter/version/$',
|
||||||
|
'django_filters.views.object_filter',
|
||||||
|
{ 'filter_class': VersionFilter, 'template_name': 'filter.html' },
|
||||||
|
name='filter_version'
|
||||||
|
),
|
||||||
|
url(r'^filter/project/$',
|
||||||
|
'django_filters.views.object_filter',
|
||||||
|
{ 'filter_class': ProjectFilter, 'template_name': 'filter.html' },
|
||||||
|
name='filter_project'
|
||||||
|
),
|
||||||
url(r'^wipe/(?P<project_slug>[-\w]+)/(?P<version_slug>[-\w]+)/$',
|
url(r'^wipe/(?P<project_slug>[-\w]+)/(?P<version_slug>[-\w]+)/$',
|
||||||
'core.views.wipe_version',
|
'core.views.wipe_version',
|
||||||
name='wipe_version'
|
name='wipe_version'
|
||||||
|
|
Loading…
Reference in New Issue