2595e5ef38c6ef3067de535e352b10561b01bebb
[pharos.git] / tools / pharos-dashboard / src / api / views.py
1 ##############################################################################
2 # Copyright (c) 2016 Max Breitenfeldt and others.
3 #
4 # All rights reserved. This program and the accompanying materials
5 # are made available under the terms of the Apache License, Version 2.0
6 # which accompanies this distribution, and is available at
7 # http://www.apache.org/licenses/LICENSE-2.0
8 ##############################################################################
9
10
11 from django.contrib.auth.decorators import login_required
12 from django.shortcuts import redirect
13 from django.utils.decorators import method_decorator
14 from django.views import View
15 from rest_framework import viewsets
16 from rest_framework.authtoken.models import Token
17
18 from api.serializers import ResourceSerializer, ServerSerializer, BookingSerializer
19 from booking.models import Booking
20 from dashboard.models import Resource, Server
21
22
23 class BookingViewSet(viewsets.ModelViewSet):
24     queryset = Booking.objects.all()
25     serializer_class = BookingSerializer
26     filter_fields = ('resource', 'user')
27
28
29 class ServerViewSet(viewsets.ModelViewSet):
30     queryset = Server.objects.all()
31     serializer_class = ServerSerializer
32     filter_fields = ('resource', 'name')
33
34
35 class ResourceViewSet(viewsets.ModelViewSet):
36     queryset = Resource.objects.all()
37     serializer_class = ResourceSerializer
38     filter_fields = ('name',)
39
40
41 @method_decorator(login_required, name='dispatch')
42 class GenerateTokenView(View):
43     def get(self, request, *args, **kwargs):
44         user = self.request.user
45         token, created = Token.objects.get_or_create(user=user)
46         if not created:
47             token.delete()
48             Token.objects.create(user=user)
49         return redirect('account:settings')