diff --git a/ofu_app/apps/registration/api/__init__.py b/ofu_app/apps/registration/api/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/ofu_app/apps/registration/api/serializers.py b/ofu_app/apps/registration/api/serializers.py new file mode 100644 index 0000000..76ca69f --- /dev/null +++ b/ofu_app/apps/registration/api/serializers.py @@ -0,0 +1,53 @@ +from rest_framework import serializers +from django.contrib.auth.models import User +from apps.food.models import UserFoodRating, UserFoodImage, UserFoodComment, SingleFood, FoodImage + + +class FoodImageSerializer(serializers.HyperlinkedModelSerializer): + class Meta: + model = FoodImage + fields = ('image', 'thumb') + + +class UserFoodImageSerializer(serializers.HyperlinkedModelSerializer): + image = FoodImageSerializer(many=False, read_only=True) + + class Meta: + model = UserFoodImage + fields = ('id', 'image') + + +class SingleFoodSerializer(serializers.HyperlinkedModelSerializer): + class Meta: + model = SingleFood + fields = ('id', 'name') + + +class UserFoodImagesSerializer(serializers.HyperlinkedModelSerializer): + food = SingleFoodSerializer(many=False, read_only=True) + + class Meta: + model = UserFoodImage + fields = ('id', 'food', 'image_image', 'image_thumb') + + +class UserRatingSerializer(serializers.HyperlinkedModelSerializer): + food = SingleFoodSerializer(many=False, read_only=True) + + class Meta: + model = UserFoodRating + fields = ('id', 'food', 'rating') + + +class UserCommentsSerializer(serializers.HyperlinkedModelSerializer): + food = SingleFoodSerializer(many=False, read_only=True) + + class Meta: + model = UserFoodComment + fields = ('id', 'food', 'comment') + + +class UserInformationSerializer(serializers.HyperlinkedModelSerializer): + class Meta: + model = User + fields = ('id', 'username', 'first_name', 'last_name', 'email', 'date_joined', 'last_login') diff --git a/ofu_app/apps/registration/api/urls.py b/ofu_app/apps/registration/api/urls.py new file mode 100644 index 0000000..9b1b857 --- /dev/null +++ b/ofu_app/apps/registration/api/urls.py @@ -0,0 +1,26 @@ +"""ofu_app URL Configuration + +The `urlpatterns` list routes URLs to views. For more information please see: + https://docs.djangoproject.com/en/1.11/topics/http/urls/ +Examples: +Function views + 1. Add an import: from my_app import views + 2. Add a URL to urlpatterns: url(r'^$', views.home, name='home') +Class-based views + 1. Add an import: from other_app.views import Home + 2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home') +Including another URLconf + 1. Import the include() function: from django.conf.urls import url, include + 2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls')) +""" +from django.conf.urls import url +from apps.registration.api import views as api_views +from apps.food.models import Menu + +urlpatterns = [ + # API Version 1.1 + url(r'^account/$', api_views.UserInformations.as_view(), name='api-v1_1-user-information'), + url(r'^account/food/rating/$', api_views.UserRatings.as_view(), name='api-v1_1-user-rating'), + url(r'^account/food/pic/$', api_views.UserImages.as_view(), name='api-v1_1-user-image'), + url(r'^account/food/comment/$', api_views.UserComments.as_view(), name='api-v1_1-user-comment'), +] diff --git a/ofu_app/apps/registration/api/views.py b/ofu_app/apps/registration/api/views.py new file mode 100644 index 0000000..7dcb322 --- /dev/null +++ b/ofu_app/apps/registration/api/views.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from apps.food.models import UserFoodComment, UserFoodImage, UserFoodRating +from apps.registration.api.serializers import UserInformationSerializer, UserRatingSerializer, UserFoodImageSerializer, \ + UserCommentsSerializer +from rest_framework import generics +from rest_framework.decorators import permission_classes +from rest_framework.permissions import IsAuthenticated + + +@permission_classes((IsAuthenticated,)) +class UserInformations(generics.ListAPIView): + serializer_class = UserInformationSerializer + + def get_queryset(self): + return [self.request.user] + + +@permission_classes((IsAuthenticated,)) +class UserRatings(generics.ListAPIView): + serializer_class = UserRatingSerializer + + def get_queryset(self): + user = self.request.user + return UserFoodRating.objects.filter(user=user).order_by('food__name') + + +@permission_classes((IsAuthenticated,)) +class UserImages(generics.ListAPIView): + serializer_class = UserFoodImageSerializer + + def get_queryset(self): + user = self.request.user + return UserFoodImage.objects.filter(user=user).order_by('food__name') + + +@permission_classes((IsAuthenticated,)) +class UserComments(generics.ListAPIView): + serializer_class = UserCommentsSerializer + + def get_queryset(self): + user = self.request.user + return UserFoodComment.objects.filter(user=user).order_by('food__name') diff --git a/ofu_app/apps/registration/urls.py b/ofu_app/apps/registration/urls.py index 1b19141..476c9e6 100644 --- a/ofu_app/apps/registration/urls.py +++ b/ofu_app/apps/registration/urls.py @@ -8,4 +8,5 @@ urlpatterns = [ url(r'^account_activation_sent/$', core_views.account_activation_sent, name='account_activation_sent'), url(r'^activate/(?P[0-9A-Za-z_\-]+)/(?P[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$', core_views.activate, name='activate'), + url(r'^signup/$', core_views.signup, name='signup'), ] diff --git a/ofu_app/apps/registration/views.py b/ofu_app/apps/registration/views.py index 858803f..0dfa1d2 100644 --- a/ofu_app/apps/registration/views.py +++ b/ofu_app/apps/registration/views.py @@ -11,7 +11,7 @@ from django.utils.encoding import force_text from django.utils.http import urlsafe_base64_decode from django.core.mail import send_mail from django.shortcuts import HttpResponse, redirect -from apps.food.models import UserRating, UserFoodImage +from apps.food.models import UserFoodRating, UserFoodImage def signup(request): @@ -22,7 +22,7 @@ def signup(request): user.is_active = False user.save() current_site = request.META['HTTP_HOST'] - subject = 'Activate Your MySite Account' + subject = 'Activate Your BaStA Account' message = render_to_string('registration/account_activation_email.jinja', { 'user': user, 'domain': current_site, @@ -64,7 +64,7 @@ def account_view(request): if request.user.is_authenticated: user = request.user - food_ratings = UserRating.objects.filter(user=user).order_by('food__name') + food_ratings = UserFoodRating.objects.filter(user=user).order_by('food__name') food_images = UserFoodImage.objects.filter(user=user.id) print(food_images) diff --git a/ofu_app/requirements.txt b/ofu_app/requirements.txt index 3953827..b5750cc 100644 --- a/ofu_app/requirements.txt +++ b/ofu_app/requirements.txt @@ -1,10 +1,14 @@ django==2.0.1 django-jinja==2.4.1 django-rest-framework==0.1.0 +#django-rest-auth==0.9.3 +#djangorestframework-jwt==1.11.0 +#django-allauth==0.35.0 django-analytical==2.4.0 requests==2.18.4 beautifulsoup4==4.6.0 #psycopg2==2.7.3.2 xmltodict==0.11.0 coverage==3.6 +django-cors-headers