temporary update
This commit is contained in:
192
rog/views.py
192
rog/views.py
@ -1,8 +1,8 @@
|
||||
from curses.ascii import NUL
|
||||
from django.core.serializers import serialize
|
||||
from .models import GoalImages, Location, Location_line, Location_polygon, JpnAdminMainPerf, Useractions, GifuAreas, RogUser, CustomUser, UserTracks, GoalImages, CheckinImages
|
||||
from .models import GoalImages, Location, Location_line, Location_polygon, JpnAdminMainPerf, Useractions, GifuAreas, RogUser, CustomUser, UserTracks, GoalImages, CheckinImages, NewEvent, Team, Category, Entry, Member, TempUser
|
||||
from rest_framework import viewsets
|
||||
from .serializers import LocationSerializer, Location_lineSerializer, Location_polygonSerializer, JPN_main_perfSerializer, LocationCatSerializer, CreateUserSerializer, UserSerializer, LoginUserSerializer, UseractionsSerializer, UserDestinationSerializer, GifuAreaSerializer, LocationEventNameSerializer, RogUserSerializer, UserTracksSerializer, ChangePasswordSerializer, GolaImageSerializer, CheckinImageSerializer, RegistrationSerializer
|
||||
from .serializers import LocationSerializer, Location_lineSerializer, Location_polygonSerializer, JPN_main_perfSerializer, LocationCatSerializer, CreateUserSerializer, UserSerializer, LoginUserSerializer, UseractionsSerializer, UserDestinationSerializer, GifuAreaSerializer, LocationEventNameSerializer, RogUserSerializer, UserTracksSerializer, ChangePasswordSerializer, GolaImageSerializer, CheckinImageSerializer, RegistrationSerializer, MemberWithUserSerializer
|
||||
from knox.models import AuthToken
|
||||
|
||||
from rest_framework import viewsets, generics, status
|
||||
@ -14,7 +14,7 @@ from django.http import JsonResponse
|
||||
from rest_framework.permissions import IsAuthenticated
|
||||
from django.contrib.gis.db.models import Extent, Union
|
||||
|
||||
from .serializers import TestSerialiser
|
||||
from .serializers import TestSerialiser,NewEventSerializer, TeamSerializer, CategorySerializer, EntrySerializer, MemberSerializer, TempUserSerializer, CustomUserSerializer
|
||||
from .models import TestModel
|
||||
from django.shortcuts import get_object_or_404
|
||||
from django.db.models import F
|
||||
@ -29,8 +29,10 @@ from rest_framework.parsers import JSONParser, MultiPartParser
|
||||
from django.views.decorators.csrf import csrf_exempt
|
||||
import uuid
|
||||
from django.shortcuts import render
|
||||
from .permissions import IsMemberOrTeamOwner
|
||||
|
||||
|
||||
from django.utils.decorators import method_decorator
|
||||
from django.utils.encoding import force_str
|
||||
|
||||
class LocationViewSet(viewsets.ModelViewSet):
|
||||
queryset=Location.objects.all()
|
||||
@ -556,4 +558,184 @@ class RegistrationView(APIView):
|
||||
if serializer.is_valid():
|
||||
serializer.save()
|
||||
return Response(serializer.data, status=status.HTTP_201_CREATED)
|
||||
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
|
||||
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
# Akira
|
||||
|
||||
@method_decorator(csrf_exempt, name='dispatch')
|
||||
class NewEventViewSet(viewsets.ModelViewSet):
|
||||
queryset = NewEvent.objects.all()
|
||||
serializer_class = NewEventSerializer
|
||||
permission_classes = [IsAuthenticated]
|
||||
|
||||
@method_decorator(csrf_exempt, name='dispatch')
|
||||
class NewEventListView(generics.ListAPIView):
|
||||
queryset = NewEvent.objects.all()
|
||||
serializer_class = NewEventSerializer
|
||||
permission_classes = [IsAuthenticated]
|
||||
|
||||
class TeamViewSet(viewsets.ModelViewSet):
|
||||
queryset = Team.objects.all()
|
||||
serializer_class = TeamSerializer
|
||||
permission_classes = [permissions.IsAuthenticated]
|
||||
|
||||
def perform_create(self, serializer):
|
||||
serializer.save(owner=self.request.user)
|
||||
|
||||
class CategoryViewSet(viewsets.ModelViewSet):
|
||||
queryset = Category.objects.all()
|
||||
serializer_class = CategorySerializer
|
||||
permission_classes = [IsAuthenticated]
|
||||
|
||||
@method_decorator(csrf_exempt, name='dispatch')
|
||||
class CategoryListView(generics.ListAPIView):
|
||||
queryset = Category.objects.all()
|
||||
serializer_class = CategorySerializer
|
||||
permission_classes = [IsAuthenticated]
|
||||
|
||||
'''
|
||||
def get(self, request):
|
||||
categories = Category.objects.all()
|
||||
data = []
|
||||
for category in categories:
|
||||
category_name = force_str(category.category_name)
|
||||
data.append({
|
||||
'category_name': category_name,
|
||||
# その他のフィールド
|
||||
})
|
||||
return Response(data)
|
||||
'''
|
||||
|
||||
class EntryViewSet(viewsets.ModelViewSet):
|
||||
queryset = Entry.objects.all()
|
||||
serializer_class = EntrySerializer
|
||||
permission_classes = [permissions.IsAuthenticated]
|
||||
|
||||
def perform_create(self, serializer):
|
||||
team = Team.objects.get(owner=self.request.user)
|
||||
serializer.save(team=team)
|
||||
|
||||
|
||||
class MemberViewSet(viewsets.ModelViewSet):
|
||||
queryset = Member.objects.all()
|
||||
serializer_class = MemberSerializer
|
||||
permission_classes = [permissions.IsAuthenticated]
|
||||
|
||||
|
||||
class TempUserViewSet(viewsets.ModelViewSet):
|
||||
queryset = TempUser.objects.all()
|
||||
serializer_class = TempUserSerializer
|
||||
permission_classes = [IsAuthenticated]
|
||||
|
||||
# CustomUserViewSetの修正
|
||||
class CustomUserViewSet(viewsets.ModelViewSet):
|
||||
queryset = CustomUser.objects.all()
|
||||
serializer_class = CustomUserSerializer
|
||||
permission_classes = [IsAuthenticated]
|
||||
|
||||
def get_queryset(self):
|
||||
user = self.request.user
|
||||
if user.is_staff:
|
||||
return CustomUser.objects.all()
|
||||
return CustomUser.objects.filter(id=user.id)
|
||||
|
||||
# 追加の機能として、チームメンバーを取得するビュー
|
||||
from rest_framework.decorators import action
|
||||
from rest_framework.response import Response
|
||||
|
||||
class TeamMembersView(generics.ListAPIView):
|
||||
serializer_class = MemberSerializer
|
||||
permission_classes = [IsAuthenticated]
|
||||
|
||||
def get_queryset(self):
|
||||
team_id = self.kwargs['team_id']
|
||||
return Member.objects.filter(team_id=team_id)
|
||||
|
||||
# ユーザーのエントリーを取得するビュー
|
||||
class UserEntriesView(generics.ListAPIView):
|
||||
serializer_class = EntrySerializer
|
||||
permission_classes = [IsAuthenticated]
|
||||
|
||||
def get_queryset(self):
|
||||
user = self.request.user
|
||||
return Entry.objects.filter(team__owner=user)
|
||||
|
||||
# イベントのカテゴリーを取得するビュー
|
||||
class EventCategoriesView(generics.ListAPIView):
|
||||
serializer_class = CategorySerializer
|
||||
permission_classes = [IsAuthenticated]
|
||||
|
||||
def get_queryset(self):
|
||||
event_id = self.kwargs['event_id']
|
||||
return Category.objects.filter(entry__event_id=event_id).distinct()
|
||||
|
||||
class RegisterView(APIView):
|
||||
def post(self, request):
|
||||
serializer = TempUserSerializer(data=request.data)
|
||||
if serializer.is_valid():
|
||||
temp_user = serializer.save()
|
||||
verification_code = uuid.uuid4()
|
||||
temp_user.verification_code = verification_code
|
||||
temp_user.save()
|
||||
|
||||
verification_url = request.build_absolute_uri(
|
||||
reverse('verify-email', kwargs={'verification_code': verification_code})
|
||||
)
|
||||
send_mail(
|
||||
'Verify your email',
|
||||
f'Click the link to verify your email: {verification_url}',
|
||||
settings.DEFAULT_FROM_EMAIL,
|
||||
[temp_user.email],
|
||||
fail_silently=False,
|
||||
)
|
||||
return Response({'message': 'Verification email sent'}, status=status.HTTP_201_CREATED)
|
||||
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
class VerifyEmailView(APIView):
|
||||
def get(self, request, verification_code):
|
||||
try:
|
||||
temp_user = TempUser.objects.get(verification_code=verification_code)
|
||||
if temp_user.is_valid():
|
||||
user_data = {
|
||||
'email': temp_user.email,
|
||||
'is_rogaining': temp_user.is_rogaining,
|
||||
'zekken_number': temp_user.zekken_number,
|
||||
'event_code': temp_user.event_code,
|
||||
'team_name': temp_user.team_name,
|
||||
'group': temp_user.group,
|
||||
'firstname': temp_user.firstname,
|
||||
'lastname': temp_user.lastname,
|
||||
'date_of_birth': temp_user.date_of_birth,
|
||||
'female': temp_user.female,
|
||||
}
|
||||
# CustomUserを作成
|
||||
user = CustomUser.objects.create_user(
|
||||
email=user_data['email'],
|
||||
password=temp_user.password,
|
||||
**{k: v for k, v in user_data.items() if k != 'email'}
|
||||
)
|
||||
temp_user.delete()
|
||||
return Response({'message': 'Email verified and user created'}, status=status.HTTP_201_CREATED)
|
||||
|
||||
else:
|
||||
return Response({'message': 'Verification link expired'}, status=status.HTTP_400_BAD_REQUEST)
|
||||
except TempUser.DoesNotExist:
|
||||
return Response({'message': 'Invalid verification code'}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
|
||||
class MemberUserDetailView(generics.RetrieveAPIView):
|
||||
serializer_class = MemberWithUserSerializer
|
||||
permission_classes = [IsAuthenticated]
|
||||
|
||||
def get_queryset(self):
|
||||
return Member.objects.select_related('user', 'team')
|
||||
|
||||
class TeamMembersWithUserView(generics.ListAPIView):
|
||||
serializer_class = MemberWithUserSerializer
|
||||
permission_classes = [IsAuthenticated]
|
||||
|
||||
def get_queryset(self):
|
||||
team_id = self.kwargs['team_id']
|
||||
return Member.objects.filter(team_id=team_id).select_related('user', 'team')
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user