Commit 197ce618 authored by Rafal's avatar Rafal

Add user_profile and endpoint /me

parent 15ef41dc
......@@ -8,6 +8,7 @@ class Command(BaseCommand):
def handle(self, *args, **options):
call_command('init_users')
call_command('init_userprofile')
call_command('init_products')
call_command('init_offers')
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):
class UserProfile(models.Model):
user = models.ForeignKey(User, related_name='user_profile',
blank=False, null=False, default=None)
photo = models.ImageField()
......@@ -4,10 +4,20 @@ from django.shortcuts import get_object_or_404
from rest_framework import serializers
from django.utils.translation import ugettext_lazy as _
from App.user.models import UserProfile
class UserSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
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):
......
......@@ -13,7 +13,8 @@ from rest_framework.response import Response
from rest_framework import viewsets, permissions
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
class UserViewSet(viewsets.ModelViewSet):
......@@ -31,6 +32,31 @@ class UserViewSet(viewsets.ModelViewSet):
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):
throttle_classes = ()
permission_classes = ()
......
......@@ -25,6 +25,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'products', loyalty_views.ProductViewSet)
router.register(r'offerts', loyalty_views.OfferViewSet)
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