Merge "Expose Limited User Info Through API"
[pharos-tools.git] / 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, user_passes_test
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 *
19 from account.models import UserProfile
20 from booking.models import Booking
21 from dashboard.models import Resource, Server, ResourceStatus
22
23
24 class BookingViewSet(viewsets.ModelViewSet):
25     queryset = Booking.objects.all()
26     serializer_class = BookingSerializer
27     filter_fields = ('resource', 'id')
28
29
30 class ServerViewSet(viewsets.ModelViewSet):
31     queryset = Server.objects.all()
32     serializer_class = ServerSerializer
33     filter_fields = ('resource', 'name')
34
35
36 class ResourceViewSet(viewsets.ModelViewSet):
37     queryset = Resource.objects.all()
38     serializer_class = ResourceSerializer
39     filter_fields = ('name', 'id')
40
41 class ResourceStatusViewSet(viewsets.ModelViewSet):
42     queryset = ResourceStatus.objects.all()
43     serializer_class = ResourceStatusSerializer
44
45 class NotifierViewSet(viewsets.ModelViewSet):
46     queryset = Notifier.objects.none()
47     serializer_class = NotifierSerializer
48
49 class UserViewSet(viewsets.ModelViewSet):
50     queryset = UserProfile.objects.all()
51     serializer_class = UserSerializer
52
53 @method_decorator(login_required, name='dispatch')
54 class GenerateTokenView(View):
55     def get(self, request, *args, **kwargs):
56         user = self.request.user
57         token, created = Token.objects.get_or_create(user=user)
58         if not created:
59             token.delete()
60             Token.objects.create(user=user)
61         return redirect('account:settings')