Commit bce19eaa authored by Rafal's avatar Rafal

Add beacon model

parent 8dff21eb
from App.loyaltyMe.models import Beacon
__author__ = 'Rafal'
from django.core.management.base import BaseCommand
class Command(BaseCommand):
help = 'Closes the specified poll for voting'
def handle(self, *args, **options):
beacons = [
['f7826da6-4fa2-4e98-8024-bc5b71e0893e', 'hPUL', 'Bialy', '2667', '62313'],
['74f1f28c-1cb7-11e5-9a21-1697f925ec7b', 'CeH3', 'Czarny', '55059', '55892'],
]
print("Creating Beacons")
for beacon in beacons:
print('Create {0}'.format(beacon[1]))
new_beacon = Beacon.objects.create(uuid=beacon[0], name=beacon[1], description=beacon[2], major=beacon[3], minor=beacon[4])
new_beacon.save()
......@@ -49,3 +49,10 @@ class Place(models.Model):
promotion = models.ForeignKey(PromotionSet, null=True, blank=True)
localization = models.ForeignKey(Localization, null=True, blank=True)
class Beacon(models.Model):
uuid = models.CharField(max_length=300, unique=True)
major = models.CharField(max_length=300, unique=True)
minor = models.CharField(max_length=300, unique=True)
name = models.CharField(max_length=300)
description = models.CharField(max_length=300, null=True)
from rest_framework import serializers
from App.loyaltyMe.models import Product, Offer, Promotion, Place, Localization
from App.loyaltyMe.models import Product, Offer, Promotion, Place, Localization, Beacon
class ProductSerializer(serializers.HyperlinkedModelSerializer):
......@@ -45,3 +45,8 @@ class PlaceSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Place
fields = ('url', 'id', 'name', 'type', 'screen_img', 'logo_img', 'description', 'offer', 'promotion', 'localization')
class BeaconSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Beacon
fields = ('url', 'id', 'uuid', 'major', 'minor', 'name', 'description')
\ No newline at end of file
......@@ -2,9 +2,9 @@ from django.shortcuts import render
from rest_framework import viewsets, permissions
from rest_framework.decorators import list_route
from App.loyaltyMe.models import Product, Offer, Promotion, Place, PromotionSet, Localization
from App.loyaltyMe.models import Product, Offer, Promotion, Place, PromotionSet, Localization, Beacon
from App.loyaltyMe.serializers import ProductSerializer, OfferSerializer, PromotionSerializer, PlaceSerializer, \
PromotionSetSerializer, LocalizationSerializer
PromotionSetSerializer, LocalizationSerializer, BeaconSerializer
class ProductViewSet(viewsets.ModelViewSet):
......@@ -57,3 +57,11 @@ class LocalizationViewSet(viewsets.ModelViewSet):
queryset = Localization.objects.all()
serializer_class = LocalizationSerializer
permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
class BeaconViewSet(viewsets.ModelViewSet):
"""
API for articles
"""
queryset = Beacon.objects.all()
serializer_class = BeaconSerializer
permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
\ No newline at end of file
......@@ -8,6 +8,7 @@ class Command(BaseCommand):
def handle(self, *args, **options):
call_command('init_users')
call_command('init_beacons')
call_command('init_userprofile')
call_command('init_products')
call_command('init_offers')
......
......@@ -80,36 +80,20 @@ class ObtainAuthToken(APIView):
obtain_auth_token = ObtainAuthToken.as_view()
# class UserPromotionViewSet(viewsets.ModelViewSet):
# """
# API for articles
# """
# queryset = UserPromotion.objects.all()
# serializer_class = UserPromotionSerializer
# permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
#
# def list(self, request):
# user = request.user
# queryset = UserPromotion.objects.filter(user=user)
# page = self.paginate_queryset(queryset)
# serializer = UserPromotionSerializer(page, many=True, context={'request': request})
# return self.get_paginated_response(serializer.data)
# @list_route(methods=['post', 'get'], permission_classes=[permissions.IsAuthenticated])
# def place(self, request, pk=None):
# place = Place.objects.filter(pk=pk)[0]
# user_promotions = request.user.user_promotions.filter(place=place)
# print(user_promotions)
#
# # if (user_profile.like_counter>=award.like_needed):
# # user_profile.like_counter-=award.like_needed
# # user_profile.save()
# # new_user_award = UserAward.objects.create(award=award, user=request.user)
# # new_user_award.save()
# # new_user_award_data = UserAwardSerializer(new_user_award, context={'request': request}).data
# # return Response(status=rest_framework.status.HTTP_200_OK, data=new_user_award_data)
# # else:
# # return Response(status=rest_framework.status.HTTP_405_METHOD_NOT_ALLOWED, data= "Not enough likes!")
class UserPromotionViewSet(viewsets.ModelViewSet):
"""
API for articles
"""
queryset = UserPromotion.objects.all()
serializer_class = UserPromotionSerializer
permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
def list(self, request):
user = request.user
queryset = UserPromotion.objects.filter(user=user)
page = self.paginate_queryset(queryset)
serializer = UserPromotionSerializer(page, many=True, context={'request': request})
return self.get_paginated_response(serializer.data)
class PlaceUserPromotionsViewSet(viewsets.ModelViewSet):
base_name = "place_user_promotions"
......
......@@ -26,7 +26,7 @@ from App.loyaltyMe import views as loyalty_views
router = routers.DefaultRouter()
router.register(r'user', user_views.UserViewSet)
router.register(r'user_profile', user_views.UserProfileViewSet)
#router.register(r'user_promotions', user_views.UserPromotionViewSet)
router.register(r'user_promotions', user_views.UserPromotionViewSet)
router.register(r'place_user_promotions', user_views.PlaceUserPromotionsViewSet)
router.register(r'products', loyalty_views.ProductViewSet)
router.register(r'offers', loyalty_views.OfferViewSet)
......@@ -34,6 +34,7 @@ router.register(r'promotions', loyalty_views.PromotionViewSet)
router.register(r'promotion_set', loyalty_views.PromotionSetViewSet)
router.register(r'places', loyalty_views.PlaceViewSet)
router.register(r'localizations', loyalty_views.LocalizationViewSet)
router.register(r'beacons', loyalty_views.BeaconViewSet)
urlpatterns = [
url(r'^api/', include(router.urls)),
......
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