--- /dev/null
+from rest_framework import serializers
+
+from booking.models import Booking
+from dashboard.models import Server, Resource
+
+
+class BookingSerializer(serializers.HyperlinkedModelSerializer):
+ class Meta:
+ model = Booking
+ fields = ('id', 'resource', 'start', 'end', 'purpose')
+
+
+class ServerSerializer(serializers.HyperlinkedModelSerializer):
+ class Meta:
+ model = Server
+ fields = ('id', 'resource', 'name', 'model', 'cpu', 'ram', 'storage')
+
+
+class ResourceSerializer(serializers.HyperlinkedModelSerializer):
+ class Meta:
+ model = Resource
+ fields = ('id', 'name', 'description', 'url', 'server_set')
--- /dev/null
+"""pharos_dashboard URL Configuration
+
+The `urlpatterns` list routes URLs to views. For more information please see:
+ https://docs.djangoproject.com/en/1.10/topics/http/urls/
+Examples:
+Function views
+ 1. Add an import: from my_app import views
+ 2. Add a URL to urlpatterns: url(r'^$', views.home, name='home')
+Class-based views
+ 1. Add an import: from other_app.views import Home
+ 2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home')
+Including another URLconf
+ 1. Import the include() function: from django.conf.urls import url, include
+ 2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls'))
+"""
+from django.conf.urls import url, include
+from rest_framework import routers
+
+from api.views import *
+
+router = routers.DefaultRouter()
+router.register(r'resources', ResourceViewSet)
+router.register(r'servers', ServerViewSet)
+router.register(r'bookings', BookingViewSet)
+
+urlpatterns = [
+ url(r'^', include(router.urls)),
+]
\ No newline at end of file
--- /dev/null
+from rest_framework import viewsets
+
+from api.serializers import ResourceSerializer, ServerSerializer, BookingSerializer
+from booking.models import Booking
+from dashboard.models import Resource, Server
+
+
+class BookingViewSet(viewsets.ModelViewSet):
+ queryset = Booking.objects.all()
+ serializer_class = BookingSerializer
+ filter_fields = ('resource', 'user')
+
+
+class ServerViewSet(viewsets.ModelViewSet):
+ queryset = Server.objects.all()
+ serializer_class = ServerSerializer
+ filter_fields = ('resource', 'name')
+
+
+class ResourceViewSet(viewsets.ModelViewSet):
+ queryset = Resource.objects.all()
+ serializer_class = ResourceSerializer
+ filter_fields = ('name',)
\ No newline at end of file
from dashboard.models import Resource
from django.conf import settings
+
class Booking(models.Model):
id = models.AutoField(primary_key=True)
user = models.ForeignKey(User, models.CASCADE) # delete if user is deleted
2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls'))
"""
from django.conf.urls import url
-
from dashboard.views import *
urlpatterns = [
from django.conf.urls.static import static
from django.contrib import admin
+
urlpatterns = [
url(r'^', include('dashboard.urls', namespace='dashboard')),
url(r'^booking/', include('booking.urls', namespace='booking')),
url(r'^accounts/', include('account.urls', namespace='account')),
url(r'^admin/', admin.site.urls),
+ url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')),
+
+ url(r'^api/', include('api.urls'))
]
if settings.DEBUG is True:
class="fa fa-fw"></i>Users
</a>
</li>
+ <li>
+ <a href="{% url 'api-root' %}"><i
+ class="fa fa-fw"></i>API
+ </a>
+ </li>
</ul>
</div>
<!-- /.sidebar-collapse -->
--- /dev/null
+{% extends "rest_framework/base.html" %}
+
+{% block title %}Pharos Dashboard API{% endblock %}
+
+{% block branding %}
+ <a class='navbar-brand' rel="nofollow" href=#>
+ Pharos Dashboard API
+ </a>
+{% endblock %}
\ No newline at end of file