|
| 1 | +from django.contrib.auth import login |
| 2 | +from django.contrib.auth.models import User |
| 3 | +from django.shortcuts import render, redirect |
| 4 | +from django.utils import timezone |
| 5 | +from django.views.decorators.csrf import csrf_exempt |
| 6 | + |
1 | 7 | from rest_framework import generics, permissions
|
| 8 | +from django.db import IntegrityError |
| 9 | +from django.http import JsonResponse |
| 10 | +from rest_framework.parsers import JSONParser |
2 | 11 |
|
3 | 12 | from todo.models import Todo
|
4 |
| -from .serializers import TodoSerializer |
| 13 | +from .serializers import TodoSerializer, TodoCompleteSerializer |
| 14 | + |
| 15 | + |
| 16 | +@csrf_exempt |
| 17 | +def signupuser(request): |
| 18 | + if request.method == 'POST': |
| 19 | + try: |
| 20 | + data = JSONParser().parse(request) |
| 21 | + user = User.objects.create_user(data['username'], password=data['password']) |
| 22 | + user.save() |
| 23 | + login(request, user) |
| 24 | + return JsonResponse({'token':'gjewijgipew'}, status=201) |
| 25 | + except IntegrityError: |
| 26 | + return JsonResponse({'error':'That username has already been taken. Please choose a new username'},status=400) |
| 27 | + |
5 | 28 |
|
6 | 29 | class TodoCompletedList(generics.ListAPIView):
|
7 | 30 | serializer_class = TodoSerializer
|
@@ -31,4 +54,16 @@ def get_queryset(self):
|
31 | 54 | user = self.request.user
|
32 | 55 | return Todo.objects.filter(user=user)
|
33 | 56 |
|
| 57 | +class TodoComplete(generics.UpdateAPIView): |
| 58 | + serializer_class = TodoCompleteSerializer |
| 59 | + permission_classes = [permissions.IsAuthenticated] |
| 60 | + |
| 61 | + def get_queryset(self): |
| 62 | + user = self.request.user |
| 63 | + return Todo.objects.filter(user=user) |
| 64 | + |
| 65 | + def perform_update(self, serializer): |
| 66 | + serializer.instance.datecompleted = timezone.now() |
| 67 | + serializer.save() |
| 68 | + |
34 | 69 |
|
0 commit comments