diff options
author | Andy Doan <andy.doan@linaro.org> | 2017-01-26 16:10:30 -0600 |
---|---|---|
committer | Andy Doan <andy.doan@linaro.org> | 2017-01-26 23:03:29 -0600 |
commit | fc2355a854d9b5a8a71f5e2cce2ec6d307743f8f (patch) | |
tree | dc503a5910a6d34538bada89984eb771b610fce8 | |
parent | bff1ff5fd16210a072d4842be93bd3de17a93da2 (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.py | 44 | ||||
-rwxr-xr-x | unit-test.sh | 2 |
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 |