readthedocs.org/readthedocs/builds/views.py

64 lines
1.9 KiB
Python
Raw Normal View History

2010-08-15 17:30:37 +00:00
from django.shortcuts import get_object_or_404
from django.views.generic import ListView, DetailView
from django.conf import settings
2010-08-15 17:30:37 +00:00
from builds.models import Build, Version
from builds.filters import BuildFilter
2010-08-15 18:37:57 +00:00
from projects.models import Project
2010-08-15 17:30:37 +00:00
from redis import Redis, ConnectionError
2014-12-15 19:16:53 +00:00
class BuildList(ListView):
model = Build
def get_queryset(self):
self.project_slug = self.kwargs.get('project_slug', None)
self.project = get_object_or_404(
Project.objects.protected(self.request.user),
slug=self.project_slug
)
queryset = Build.objects.filter(project=self.project)
return queryset
def get_context_data(self, **kwargs):
context = super(BuildList, self).get_context_data(**kwargs)
2014-12-15 19:16:53 +00:00
filter = BuildFilter(self.request.GET, queryset=self.get_queryset())
active_builds = self.get_queryset().exclude(state="finished").values('id')
context['project'] = self.project
context['filter'] = filter
context['active_builds'] = active_builds
context['versions'] = Version.objects.public(user=self.request.user, project=self.project)
try:
redis = Redis(**settings.REDIS)
context['queue_length'] = redis.llen('celery')
except ConnectionError:
context['queue_length'] = None
return context
2014-12-15 19:16:53 +00:00
class BuildDetail(DetailView):
model = Build
def get_queryset(self):
self.project_slug = self.kwargs.get('project_slug', None)
self.project = get_object_or_404(
Project.objects.protected(self.request.user),
slug=self.project_slug
)
queryset = Build.objects.filter(project=self.project)
return queryset
def get_context_data(self, **kwargs):
context = super(BuildDetail, self).get_context_data(**kwargs)
context['project'] = self.project
return context