Implement periodic tasks
[pharos-tools.git] / pharos-dashboard / dashboard / views.py
1 from datetime import timedelta
2 from django.utils import timezone
3 from django.views.generic import TemplateView
4
5 from booking.models import Booking
6 from dashboard.models import Resource
7 from jenkins import adapter as jenkins
8 from jenkins.models import JenkinsSlave, JenkinsStatistic
9
10
11 class JenkinsSlavesView(TemplateView):
12     template_name = "dashboard/jenkins_slaves.html"
13
14     def get_context_data(self, **kwargs):
15         slaves = JenkinsSlave.objects.all()
16         context = super(JenkinsSlavesView, self).get_context_data(**kwargs)
17         context.update({'title': "Jenkins Slaves", 'slaves': slaves})
18         return context
19
20
21 class CIPodsView(TemplateView):
22     template_name = "dashboard/ci_pods.html"
23
24     def get_context_data(self, **kwargs):
25         ci_pods = Resource.objects.filter(slave__ci_slave=True)
26         context = super(CIPodsView, self).get_context_data(**kwargs)
27         context.update({'title': "CI Pods", 'ci_pods': ci_pods})
28         return context
29
30
31 class DevelopmentPodsView(TemplateView):
32     template_name = "dashboard/dev_pods.html"
33
34     def get_context_data(self, **kwargs):
35         resources = Resource.objects.filter(slave__dev_pod=True)
36
37         bookings = Booking.objects.filter(start__lte=timezone.now())
38         bookings = bookings.filter(end__gt=timezone.now())
39
40         dev_pods = []
41         for resource in resources:
42             dev_pod = (resource, None)
43             for booking in bookings:
44                 if booking.resource == resource:
45                     dev_pod = (resource, booking)
46             dev_pods.append(dev_pod)
47
48         context = super(DevelopmentPodsView, self).get_context_data(**kwargs)
49         context.update({'title': "Development Pods", 'dev_pods': dev_pods})
50         return context