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 ...@@ -6,10 +6,15 @@ from Hub import views as hub_views
router = routers.DefaultRouter() router = routers.DefaultRouter()
router.register(r'beacons', hub_views.BeaconViewSet) 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('', urlpatterns = patterns('',
url(r'^api/', include(router.urls)), url(r'^api/', include(router.urls)),
url(r'^admin/', include(admin.site.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 ...@@ -2,7 +2,5 @@ from django.contrib import admin
# Register your models here. # Register your models here.
from Hub.models import Beacon from Hub.models import Beacon
from Hub.models import Project
admin.register(Beacon) admin.register(Beacon)
admin.register(Project) \ No newline at end of file
\ No newline at end of file
from django.db import models from django.db import models
# Create your models here. # Create your models here.
class Project(models.Model): class Site(models.Model):
link_url = models.CharField(max_length=2000) link_url = models.CharField(max_length=2000)
description = models.CharField(max_length=300, null=True) 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): class Beacon(models.Model):
uuid = models.CharField(max_length=300, unique=True) uuid = models.CharField(max_length=300, unique=True)
name = models.CharField(max_length=300) name = models.CharField(max_length=300)
project = models.OneToOneField('Project')
description = models.CharField(max_length=300, null=True) 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 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 BeaconSerializer(serializers.HyperlinkedModelSerializer):
class Meta: class Meta:
model = Beacon 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: class Meta:
model = Project model = Category
fields = ('id', 'url', 'link_url', 'description') fields = ('id', 'url', 'name', 'private')
...@@ -2,8 +2,10 @@ from django.shortcuts import render ...@@ -2,8 +2,10 @@ from django.shortcuts import render
# Create your views here. # Create your views here.
from rest_framework import viewsets from rest_framework import viewsets
from Hub.models import Beacon, Project from rest_framework.response import Response
from Hub.serializers import BeaconSerializer, ProjectSerializer 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): class BeaconViewSet(viewsets.ModelViewSet):
...@@ -13,9 +15,38 @@ class BeaconViewSet(viewsets.ModelViewSet): ...@@ -13,9 +15,38 @@ class BeaconViewSet(viewsets.ModelViewSet):
queryset = Beacon.objects.all() queryset = Beacon.objects.all()
serializer_class = BeaconSerializer serializer_class = BeaconSerializer
class ProjectViewSet(viewsets.ModelViewSet): class BeaconManagerViewSet(viewsets.ModelViewSet):
""" """
API for places API for places
""" """
queryset = Project.objects.all() queryset = BeaconManager.objects.all()
serializer_class = ProjectSerializer serializer_class = BeaconManagerSerializer
\ No newline at end of file
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