Add filtering of builds and Version/Projects that is unexposed.
parent
619bc60f2d
commit
4fdfcee34f
|
@ -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-missing { font-size: .8em; color: #9d9a55; margin: 0 0 3px; }
|
||||
|
||||
/* build page */
|
||||
|
||||
#build_list select { width: 10em; }
|
||||
|
||||
|
||||
/* 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 builds.models import Build
|
||||
from builds.filters import BuildFilter
|
||||
from projects.models import Project
|
||||
|
||||
from taggit.models import Tag
|
||||
|
@ -12,6 +13,7 @@ def build_list(request, project_slug=None, tag=None):
|
|||
"""Show a list of builds.
|
||||
"""
|
||||
queryset = Build.objects.all()
|
||||
filter = BuildFilter(request.GET, queryset=queryset)
|
||||
|
||||
if tag:
|
||||
tag = get_object_or_404(Tag, slug=tag)
|
||||
|
@ -28,6 +30,7 @@ def build_list(request, project_slug=None, tag=None):
|
|||
queryset=queryset,
|
||||
extra_context={
|
||||
'project': project,
|
||||
'filter': filter,
|
||||
'tag': tag,
|
||||
'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 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 -->
|
||||
<div class="module">
|
||||
<div class="module-wrapper">
|
||||
{% autopaginate filter 15 %}
|
||||
|
||||
<div class="module-header">
|
||||
<h1>{% trans "Recent Builds" %}</h1>
|
||||
</div>
|
||||
|
||||
<div class="module-list">
|
||||
<div class="module-list-wrapper">
|
||||
<ul>
|
||||
{% include "core/build_list_detailed.html" %}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<!-- BEGIN builds list -->
|
||||
<div class="module">
|
||||
<div class="module-wrapper">
|
||||
|
||||
<div class="module-header">
|
||||
<h1>{% trans "Recent Builds" %}</h1>
|
||||
</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 %}
|
||||
|
||||
|
|
|
@ -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 api.base import ProjectResource, UserResource, BuildResource, VersionResource, FileResource
|
||||
from builds.filters import VersionFilter
|
||||
from core.forms import UserProfileForm
|
||||
from core.views import SearchView
|
||||
from projects.feeds import LatestProjectsFeed, NewProjectsFeed
|
||||
from projects.filters import ProjectFilter
|
||||
|
||||
v1_api = Api(api_name='v1')
|
||||
v1_api.register(BuildResource())
|
||||
|
@ -60,6 +62,16 @@ urlpatterns = patterns('',
|
|||
url(r'^random/$', 'core.views.random_page', name='random_page'),
|
||||
url(r'^depth/$', 'core.views.queue_depth', name='queue_depth'),
|
||||
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]+)/$',
|
||||
'core.views.wipe_version',
|
||||
name='wipe_version'
|
||||
|
|
Loading…
Reference in New Issue