From 75b190fd4887f6a97633b256c263d43be1756bee Mon Sep 17 00:00:00 2001 From: Miquel Torres Date: Tue, 1 Aug 2017 17:08:59 +0400 Subject: [PATCH] Add basic Branch and Project API --- codespeed/api/__init__.py | 0 codespeed/api/serializers.py | 17 +++++++++++++++++ codespeed/api/urls.py | 15 +++++++++++++++ codespeed/api/views.py | 16 ++++++++++++++++ codespeed/urls.py | 7 ++++++- requirements.txt | 1 + sample_project/settings.py | 1 + 7 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 codespeed/api/__init__.py create mode 100644 codespeed/api/serializers.py create mode 100644 codespeed/api/urls.py create mode 100644 codespeed/api/views.py diff --git a/codespeed/api/__init__.py b/codespeed/api/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/codespeed/api/serializers.py b/codespeed/api/serializers.py new file mode 100644 index 00000000..0b326fd1 --- /dev/null +++ b/codespeed/api/serializers.py @@ -0,0 +1,17 @@ +from rest_framework import serializers + +from ..models import Branch, Project + + +class ProjectSerializer(serializers.HyperlinkedModelSerializer): + + class Meta: + model = Project + fields = ('url', 'name') + + +class BranchSerializer(serializers.HyperlinkedModelSerializer): + + class Meta: + model = Branch + fields = ('url', 'name', 'project') diff --git a/codespeed/api/urls.py b/codespeed/api/urls.py new file mode 100644 index 00000000..7b28219a --- /dev/null +++ b/codespeed/api/urls.py @@ -0,0 +1,15 @@ +from django.conf.urls import url, include +from rest_framework import routers + +from . import views + +router = routers.DefaultRouter() +router.register(r'projects', views.ProjectViewSet) +router.register(r'branches', views.BranchViewSet) + +# Wire up our API using automatic URL routing. +# Additionally, we include login URLs for the browsable API. +urlpatterns = [ + url(r'^', include(router.urls)), + url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')) +] diff --git a/codespeed/api/views.py b/codespeed/api/views.py new file mode 100644 index 00000000..6ac6ecdd --- /dev/null +++ b/codespeed/api/views.py @@ -0,0 +1,16 @@ +from rest_framework import viewsets + +from ..models import Branch, Project +from .serializers import BranchSerializer, ProjectSerializer + + +class ProjectViewSet(viewsets.ModelViewSet): + + queryset = Project.objects.all() + serializer_class = ProjectSerializer + + +class BranchViewSet(viewsets.ModelViewSet): + + queryset = Branch.objects.all() + serializer_class = BranchSerializer diff --git a/codespeed/urls.py b/codespeed/urls.py index da6132e6..01794ea7 100644 --- a/codespeed/urls.py +++ b/codespeed/urls.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -from django.conf.urls import patterns, url +from django.conf.urls import include, patterns, url from django.views.generic import TemplateView from codespeed.feeds import LatestEntries, LatestSignificantEntries @@ -30,3 +30,8 @@ url(r'^result/add/json/$', 'add_json_results'), url(r'^result/add/$', 'add_result'), ) + +from .api.urls import urlpatterns as api_urls +urlpatterns += patterns('', + url(r'^api/', include(api_urls)), +) diff --git a/requirements.txt b/requirements.txt index 2064eb9e..df8adfb4 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,3 @@ Django>=1.6,<1.9 +djangorestframework>=3.5,<3.7 isodate>=0.4.7,<0.6 diff --git a/sample_project/settings.py b/sample_project/settings.py index dcf353d2..05a48bd4 100644 --- a/sample_project/settings.py +++ b/sample_project/settings.py @@ -89,6 +89,7 @@ def process_exception(self, request, exception): 'django.contrib.sessions', 'django.contrib.admin', 'django.contrib.staticfiles', + 'rest_framework', 'codespeed', )