Commit 197ce618 authored by Rafal's avatar Rafal

Add user_profile and endpoint /me

parent 15ef41dc
...@@ -8,6 +8,7 @@ class Command(BaseCommand): ...@@ -8,6 +8,7 @@ class Command(BaseCommand):
def handle(self, *args, **options): def handle(self, *args, **options):
call_command('init_users') call_command('init_users')
call_command('init_userprofile')
call_command('init_products') call_command('init_products')
call_command('init_offers') call_command('init_offers')
call_command('init_promotions') call_command('init_promotions')
......
from django.contrib.auth.models import User
from App.user.models import UserProfile
__author__ = 'Rafal'
from django.core.management.base import BaseCommand
class Command(BaseCommand):
def handle(self, *args, **options):
data = [
['admin', '/static/media/img/users/photos/default_avatar.png',],
['Antek', '/static/media/img/users/photos/antek.jpg',],
['Rafal', '/static/media/img/users/photos/rafal.jpg'],
['Klaudia', '/static/media/img/users/photos/klaudia.jpg'],
]
print("Creating UsersProfile")
for user_data in data:
print("{0} take {1} API".format(user_data[0], user_data[1]))
user = User.objects.filter(username=user_data[0])[0]
new_userapi = UserProfile.objects.create(user=user, photo=user_data[1])
new_userapi.save()
...@@ -14,3 +14,5 @@ def create_auth_token(sender, instance=None, created=False, **kwargs): ...@@ -14,3 +14,5 @@ def create_auth_token(sender, instance=None, created=False, **kwargs):
class UserProfile(models.Model): class UserProfile(models.Model):
user = models.ForeignKey(User, related_name='user_profile', user = models.ForeignKey(User, related_name='user_profile',
blank=False, null=False, default=None) blank=False, null=False, default=None)
photo = models.ImageField()
...@@ -4,10 +4,20 @@ from django.shortcuts import get_object_or_404 ...@@ -4,10 +4,20 @@ from django.shortcuts import get_object_or_404
from rest_framework import serializers from rest_framework import serializers
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from App.user.models import UserProfile
class UserSerializer(serializers.HyperlinkedModelSerializer): class UserSerializer(serializers.HyperlinkedModelSerializer):
class Meta: class Meta:
model = User model = User
fields = ('url', 'id', 'username', 'email') fields = ('url', 'id', 'username', 'email',)
class UserProfileSerializer(serializers.HyperlinkedModelSerializer):
user = UserSerializer()
class Meta:
model = UserProfile
fields = ('url', 'id', 'user', 'photo')
class AuthTokenSerializerByEmail(serializers.Serializer): class AuthTokenSerializerByEmail(serializers.Serializer):
......
...@@ -13,7 +13,8 @@ from rest_framework.response import Response ...@@ -13,7 +13,8 @@ from rest_framework.response import Response
from rest_framework import viewsets, permissions from rest_framework import viewsets, permissions
from rest_framework.views import APIView from rest_framework.views import APIView
from App.user.serializers import UserSerializer, AuthTokenSerializerByEmail from App.user.models import UserProfile
from App.user.serializers import UserSerializer, AuthTokenSerializerByEmail, UserProfileSerializer
from rest_framework import parsers, renderers from rest_framework import parsers, renderers
class UserViewSet(viewsets.ModelViewSet): class UserViewSet(viewsets.ModelViewSet):
...@@ -31,6 +32,31 @@ class UserViewSet(viewsets.ModelViewSet): ...@@ -31,6 +32,31 @@ class UserViewSet(viewsets.ModelViewSet):
return Response(status=rest_framework.status.HTTP_200_OK, data= user_data) return Response(status=rest_framework.status.HTTP_200_OK, data= user_data)
class UserProfileViewSet(viewsets.ModelViewSet):
"""
API for articles
"""
queryset = UserProfile.objects.all()
serializer_class = UserProfileSerializer
permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
def perform_create(self, serializer):
serializer.save(user=self.request.user)
def list(self, request):
user = request.user
queryset = UserProfile.objects.exclude(user=user)
page = self.paginate_queryset(queryset)
serializer = UserProfileSerializer(page, many=True, context={'request': request})
return self.get_paginated_response(serializer.data)
@list_route(methods=['get'])
def me(self, request, pk=None):
user = request.user
user_profile = UserProfile.objects.filter(user=user)[0]
user_profile_data = UserProfileSerializer(user_profile, context={'request': request}).data
return Response(status=rest_framework.status.HTTP_200_OK, data=user_profile_data)
class ObtainAuthToken(APIView): class ObtainAuthToken(APIView):
throttle_classes = () throttle_classes = ()
permission_classes = () permission_classes = ()
......
...@@ -25,6 +25,7 @@ from App.loyaltyMe import views as loyalty_views ...@@ -25,6 +25,7 @@ from App.loyaltyMe import views as loyalty_views
router = routers.DefaultRouter() router = routers.DefaultRouter()
router.register(r'user', user_views.UserViewSet) router.register(r'user', user_views.UserViewSet)
router.register(r'user_profile', user_views.UserProfileViewSet)
router.register(r'products', loyalty_views.ProductViewSet) router.register(r'products', loyalty_views.ProductViewSet)
router.register(r'offerts', loyalty_views.OfferViewSet) router.register(r'offerts', loyalty_views.OfferViewSet)
router.register(r'promotions', loyalty_views.PromotionViewSet) router.register(r'promotions', loyalty_views.PromotionViewSet)
......
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