summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndy Doan <andy.doan@linaro.org>2017-01-26 16:10:30 -0600
committerAndy Doan <andy.doan@linaro.org>2017-01-26 23:03:29 -0600
commitfc2355a854d9b5a8a71f5e2cce2ec6d307743f8f (patch)
treedc503a5910a6d34538bada89984eb771b610fce8
parentbff1ff5fd16210a072d4842be93bd3de17a93da2 (diff)
linaro-metrics: add "teams" resource to REST API
Largely based on copying logic from projects.py and cover.py from patchwork. This requires us to jump on a more recent version of patchwork to support this REST functionality Change-Id: I5b80b8f9b971822fa4b859ac019c6928cee4f143
-rw-r--r--linaro_metrics/api.py44
-rwxr-xr-xunit-test.sh2
2 files changed, 45 insertions, 1 deletions
diff --git a/linaro_metrics/api.py b/linaro_metrics/api.py
new file mode 100644
index 0000000..47be36e
--- /dev/null
+++ b/linaro_metrics/api.py
@@ -0,0 +1,44 @@
+from django.shortcuts import get_object_or_404
+
+from rest_framework.generics import ListAPIView, RetrieveAPIView
+from rest_framework.serializers import HyperlinkedModelSerializer
+
+from linaro_metrics.models import Team
+
+
+class TeamListSerializer(HyperlinkedModelSerializer):
+ class Meta:
+ model = Team
+ fields = ('id', 'url', 'name', 'display_name', 'active')
+ read_only_fields = fields
+ extra_kwargs = {
+ 'url': {'view_name': 'api-team-detail'},
+ }
+
+
+class TeamList(ListAPIView):
+ serializer_class = TeamListSerializer
+ search_fields = ('name', 'display_name')
+ ordering_fields = ('name', 'display_name', 'active')
+
+ def get_queryset(self):
+ return Team.objects.all()
+
+
+class TeamDetail(RetrieveAPIView):
+ serializer_class = TeamListSerializer
+
+ def get_queryset(self):
+ return Team.objects.all()
+
+ def get_object(self):
+ queryset = self.filter_queryset(self.get_queryset())
+
+ try:
+ obj = queryset.get(id=int(self.kwargs['pk']))
+ except (ValueError, Team.DoesNotExist):
+ obj = get_object_or_404(queryset, name=self.kwargs['pk'])
+
+ self.kwargs['pk'] = obj.id
+ self.check_object_permissions(self.request, obj)
+ return obj
diff --git a/unit-test.sh b/unit-test.sh
index e6e5191..959bb7f 100755
--- a/unit-test.sh
+++ b/unit-test.sh
@@ -19,7 +19,7 @@ fi
if [ -z $PYTHONPATH ] ; then
git clone https://github.com/getpatchwork/patchwork.git $VENV_DIR/patchwork
cd $VENV_DIR/patchwork
- git checkout -b production b3869768ab9667c542434eb7e4ca5ddda703d8a6
+ git checkout -b production c1d8a0d6eabad25525d1b6925e81b80030773869
cd $HERE
export PYTHONPATH=$VENV_DIR/patchwork
fi