Ver código fonte

add user apps - views, urls and etc

MrOzOn 5 anos atrás
pai
commit
d8cfb73da8

+ 8 - 0
README.md

@@ -15,3 +15,11 @@ Initial
 `python manage.py migrate`
 4. Create admin user `python manage.py createsuperuser --email admin@example.com --username admin`
 5. Run project ``
+
+
+Current actions
+1. Add directory apps for project
+`mkdir ./apps`
+2. Add new app for projects
+`mkdir ./apps/user`
+`django-admin startapp user ./apps/user`

+ 0 - 0
apps/user/__init__.py


+ 3 - 0
apps/user/admin.py

@@ -0,0 +1,3 @@
+from django.contrib import admin
+
+# Register your models here.

+ 5 - 0
apps/user/apps.py

@@ -0,0 +1,5 @@
+from django.apps import AppConfig
+
+
+class UserConfig(AppConfig):
+    name = 'user'

+ 0 - 0
apps/user/migrations/__init__.py


+ 11 - 0
apps/user/models.py

@@ -0,0 +1,11 @@
+from django.db import models
+from django.db.models.signals import post_save
+from django.dispatch import receiver
+from django.conf import settings
+from rest_framework.authtoken.models import Token
+
+
+@receiver(post_save, sender=settings.AUTH_USER_MODEL)
+def create_auth_token(sender, instance=None, created=False, **kwargs):
+    if created:
+        Token.objects.create(user=instance)

+ 14 - 0
apps/user/serializers.py

@@ -0,0 +1,14 @@
+from django.contrib.auth.models import User
+from rest_framework import serializers
+
+
+class UserSerializer(serializers.HyperlinkedModelSerializer):
+    class Meta:
+        model = User
+        fields = ['url', 'username', 'email', 'groups']
+
+
+class CurrentUserSerializer(serializers.ModelSerializer):
+    class Meta:
+        model = User
+        fields = ['id', 'username', 'email', 'first_name', 'last_name', 'last_login']

+ 3 - 0
apps/user/tests.py

@@ -0,0 +1,3 @@
+from django.test import TestCase
+
+# Create your tests here.

+ 28 - 0
apps/user/views.py

@@ -0,0 +1,28 @@
+from django.contrib.auth.models import User
+from rest_framework import viewsets
+from rest_framework.response import Response
+from rest_framework.views import APIView
+
+from apps.user.serializers import UserSerializer, CurrentUserSerializer
+
+
+class UserViewSet(viewsets.ModelViewSet):
+    """
+    API endpoint that allows users to be viewed or edited.
+    """
+    queryset = User.objects.all().order_by('-date_joined')
+    serializer_class = UserSerializer
+
+
+class CurrentUserView(APIView):
+    """
+    """
+
+    def get(self, request):
+        user = User.objects.get(pk=request.user.pk)
+        serializer_context = {
+            'request': request,
+        }
+        serializer = CurrentUserSerializer(user, context=serializer_context)
+        # return Response({"user": serializers.serialize('json', [ user, ])})
+        return Response(serializer.data)

+ 14 - 1
healthdiarybackend/urls.py

@@ -13,9 +13,22 @@ Including another URLconf
     1. Import the include() function: from django.urls import include, path
     2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
 """
+from django.conf.urls import url
 from django.contrib import admin
-from django.urls import path
+from django.urls import path, include
+from rest_framework import routers
+
+from apps.user import views as user_views
+from rest_framework.authtoken import views as authtoken_views
+
+router = routers.DefaultRouter()
+router.register(r'users', user_views.UserViewSet)
 
 urlpatterns = [
+    path('', include(router.urls)),
+    path('api-auth/', include('rest_framework.urls', namespace='rest_framework')),
     path('admin/', admin.site.urls),
+    url(r'^api-token-auth/', authtoken_views.obtain_auth_token),
+
+    url('^who-am-i/', user_views.CurrentUserView.as_view(), name='who-am-i'),
 ]