diff options
-rw-r--r-- | pharos-dashboard/api/__init__.py | 0 | ||||
-rw-r--r-- | pharos-dashboard/api/serializers.py | 22 | ||||
-rw-r--r-- | pharos-dashboard/api/urls.py | 28 | ||||
-rw-r--r-- | pharos-dashboard/api/views.py | 23 | ||||
-rw-r--r-- | pharos-dashboard/booking/models.py | 1 | ||||
-rw-r--r-- | pharos-dashboard/dashboard/urls.py | 1 | ||||
-rw-r--r-- | pharos-dashboard/pharos_dashboard/urls.py | 4 | ||||
-rw-r--r-- | pharos-dashboard/templates/base.html | 5 | ||||
-rw-r--r-- | pharos-dashboard/templates/rest_framework/api.html | 9 |
9 files changed, 92 insertions, 1 deletions
diff --git a/pharos-dashboard/api/__init__.py b/pharos-dashboard/api/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/pharos-dashboard/api/__init__.py diff --git a/pharos-dashboard/api/serializers.py b/pharos-dashboard/api/serializers.py new file mode 100644 index 0000000..c3875cc --- /dev/null +++ b/pharos-dashboard/api/serializers.py @@ -0,0 +1,22 @@ +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') diff --git a/pharos-dashboard/api/urls.py b/pharos-dashboard/api/urls.py new file mode 100644 index 0000000..22f12eb --- /dev/null +++ b/pharos-dashboard/api/urls.py @@ -0,0 +1,28 @@ +"""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 diff --git a/pharos-dashboard/api/views.py b/pharos-dashboard/api/views.py new file mode 100644 index 0000000..78d7b8a --- /dev/null +++ b/pharos-dashboard/api/views.py @@ -0,0 +1,23 @@ +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 diff --git a/pharos-dashboard/booking/models.py b/pharos-dashboard/booking/models.py index e772fb5..fed35e3 100644 --- a/pharos-dashboard/booking/models.py +++ b/pharos-dashboard/booking/models.py @@ -6,6 +6,7 @@ from jira import JIRAError 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 diff --git a/pharos-dashboard/dashboard/urls.py b/pharos-dashboard/dashboard/urls.py index baa2d63..35c6463 100644 --- a/pharos-dashboard/dashboard/urls.py +++ b/pharos-dashboard/dashboard/urls.py @@ -14,7 +14,6 @@ Including another URLconf 2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls')) """ from django.conf.urls import url - from dashboard.views import * urlpatterns = [ diff --git a/pharos-dashboard/pharos_dashboard/urls.py b/pharos-dashboard/pharos_dashboard/urls.py index d8bf560..4a9d914 100644 --- a/pharos-dashboard/pharos_dashboard/urls.py +++ b/pharos-dashboard/pharos_dashboard/urls.py @@ -18,12 +18,16 @@ from django.conf.urls import url, include 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: diff --git a/pharos-dashboard/templates/base.html b/pharos-dashboard/templates/base.html index 42156e3..c5da483 100644 --- a/pharos-dashboard/templates/base.html +++ b/pharos-dashboard/templates/base.html @@ -76,6 +76,11 @@ 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 --> diff --git a/pharos-dashboard/templates/rest_framework/api.html b/pharos-dashboard/templates/rest_framework/api.html new file mode 100644 index 0000000..9c6c4f7 --- /dev/null +++ b/pharos-dashboard/templates/rest_framework/api.html @@ -0,0 +1,9 @@ +{% 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 |