Commit d4f3d99f authored by Rafal's avatar Rafal

add filtr by uuid

parent 8fd1ce8f
......@@ -6,10 +6,15 @@ from Hub import views as hub_views
router = routers.DefaultRouter()
router.register(r'beacons', hub_views.BeaconViewSet)
router.register(r'projects', hub_views.ProjectViewSet)
router.register(r'beacon_managers', hub_views.BeaconManagerViewSet)
router.register(r'category', hub_views.CategoryViewSet)
router.register(r'sites', hub_views.SiteViewSet)
router.register(r'uuid', hub_views.UuidBeaconViewSet)
urlpatterns = patterns('',
url(r'^api/', include(router.urls)),
url(r'^admin/', include(admin.site.urls)),
url(r'^api/uuid/(?P<pk>[0-9]+)/$', hub_views.UuidBeaconViewSet.as_view()),
url(r'^api/uuid/(?P<pk>[0-9]+)/(?P<category_name>\w+)/$', hub_views.UuidBeaconViewSet.as_view()),
)
......@@ -2,7 +2,5 @@ from django.contrib import admin
# Register your models here.
from Hub.models import Beacon
from Hub.models import Project
admin.register(Beacon)
admin.register(Project)
\ No newline at end of file
admin.register(Beacon)
\ No newline at end of file
from django.db import models
# Create your models here.
class Project(models.Model):
class Site(models.Model):
link_url = models.CharField(max_length=2000)
description = models.CharField(max_length=300, null=True)
category = models.ManyToManyField('Category', null=True)
def __str__(self):
return self.link_url
class Category(models.Model):
name = models.CharField(max_length=300, null=True)
private = models.BooleanField()
def __str__(self):
return self.name
class Beacon(models.Model):
uuid = models.CharField(max_length=300, unique=True)
name = models.CharField(max_length=300)
project = models.OneToOneField('Project')
description = models.CharField(max_length=300, null=True)
longitude = models.DecimalField(max_digits=9, decimal_places=6)
latitude = models.DecimalField(max_digits=9, decimal_places=6)
def __str__(self):
return "name: {name}, uuid:{uuid}".format(name=self.name, uuid=self.uuid)
class BeaconManager(models.Model):
beacon = models.OneToOneField('Beacon')
sites = models.ManyToManyField('Site')
def __str__(self):
return str(self.beacon)
from rest_framework import serializers
from Hub.models import Beacon, Project
from rest_framework.decorators import detail_route, list_route
from Hub.models import Beacon, BeaconManager, Category, Site
class SiteSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Site
fields = ('id', 'url', 'link_url', 'description', 'category')
class BeaconSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Beacon
fields = ('id', 'url', 'uuid', 'name', 'project', 'description',)
fields = ('id', 'url', 'uuid', 'name', 'description', 'longitude', 'latitude')
class BeaconManagerSerializer(serializers.HyperlinkedModelSerializer):
sites = SiteSerializer(many=True)
class ProjectSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = BeaconManager
fields = ('id', 'url', 'sites')
class CategorySerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Project
fields = ('id', 'url', 'link_url', 'description')
model = Category
fields = ('id', 'url', 'name', 'private')
......@@ -2,8 +2,10 @@ from django.shortcuts import render
# Create your views here.
from rest_framework import viewsets
from Hub.models import Beacon, Project
from Hub.serializers import BeaconSerializer, ProjectSerializer
from rest_framework.response import Response
from rest_framework.views import APIView
from Hub.models import Beacon, BeaconManager, Site, Category
from Hub.serializers import BeaconSerializer, BeaconManagerSerializer, SiteSerializer, CategorySerializer
class BeaconViewSet(viewsets.ModelViewSet):
......@@ -13,9 +15,38 @@ class BeaconViewSet(viewsets.ModelViewSet):
queryset = Beacon.objects.all()
serializer_class = BeaconSerializer
class ProjectViewSet(viewsets.ModelViewSet):
class BeaconManagerViewSet(viewsets.ModelViewSet):
"""
API for places
"""
queryset = Project.objects.all()
serializer_class = ProjectSerializer
\ No newline at end of file
queryset = BeaconManager.objects.all()
serializer_class = BeaconManagerSerializer
class SiteViewSet(viewsets.ModelViewSet):
"""
API for places
"""
queryset = Site.objects.all()
serializer_class = SiteSerializer
class UuidBeaconViewSet(APIView):
"""
API for places
"""
queryset = Beacon.objects.all()
serializer_class = BeaconSerializer
def get(self, request, pk, format=None):
beacon = Beacon.objects.get(uuid = pk)
beacon_manager = BeaconManager.objects.get(beacon=beacon)
serializer = BeaconManagerSerializer(beacon_manager, context={'request': request})
return Response(serializer.data)
class CategoryViewSet(viewsets.ModelViewSet):
"""
API for places
"""
queryset = Category.objects.all()
serializer_class = CategorySerializer
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment