Skip to content

Commit

Permalink
Merge pull request #21 from recipeasyy/feat/checkvote
Browse files Browse the repository at this point in the history
Feat/checkvote
  • Loading branch information
eric-jy-park authored Dec 20, 2022
2 parents 96902d6 + 4c65101 commit e7d0f03
Show file tree
Hide file tree
Showing 9 changed files with 34 additions and 104 deletions.
9 changes: 8 additions & 1 deletion CeosVoteBack/settings/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,9 @@
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework_simplejwt.authentication.JWTAuthentication',
'rest_framework.authentication.SessionAuthentication',
],
'DEFAULT_PERMISSION_CLASSES ': [
'rest_framework.permissions.IsAuthenticatedOrReadOnly',
]
}

Expand Down Expand Up @@ -79,6 +82,7 @@

MIDDLEWARE = [
'corsheaders.middleware.CorsMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
Expand Down Expand Up @@ -155,4 +159,7 @@
# Default primary key field type
# https://docs.djangoproject.com/en/4.0/ref/settings/#default-auto-field

DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'

CORS_ALLOW_ALL_ORIGINS = True
CORS_ALLOW_CREDENTIALS = True
45 changes: 0 additions & 45 deletions accounts/migrations/0001_initial.py

This file was deleted.

22 changes: 0 additions & 22 deletions demoday/migrations/0001_initial.py

This file was deleted.

2 changes: 1 addition & 1 deletion demoday/serializer.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@
class TeamSerializer(serializers.ModelSerializer):
class Meta:
model = Team
fields = ['team_name', 'vote_count']
fields = ['id', 'team_name', 'vote_count']
15 changes: 10 additions & 5 deletions demoday/views.py
Original file line number Diff line number Diff line change
@@ -1,30 +1,35 @@
from django.shortcuts import render
from rest_framework import status
from rest_framework.generics import get_object_or_404
from rest_framework.permissions import IsAuthenticatedOrReadOnly
from rest_framework.response import Response
from rest_framework.views import APIView
# Create your views here.
from accounts.models import User
from demoday.models import Team
from demoday.serializer import TeamSerializer


class TeamView(APIView):
permission_classes = [IsAuthenticatedOrReadOnly]

def get(self, request):
teams = Team.objects.all()
serializer = TeamSerializer(teams, many=True)
return Response(serializer.data)

def post(self, request):
# 유저 토큰 관련 예외 처리 필요
# 유저 투표권 개수에 따른 투표/취소 구현 필요
user = User.objects.filter(id=request.user.id)[0]

serializer = TeamSerializer(data=request.data)
if user.vote_demoday:
return Response({'Message': 'No more vote count'}, status=status.HTTP_400_BAD_REQUEST)

serializer = TeamSerializer(data=request.data)
if serializer.is_valid():
team = get_object_or_404(Team, team_name=serializer.data['team_name'])
team.vote_count += 1
team.save()
serializer = TeamSerializer(team)
user.vote_demoday = True
user.save()
return Response(serializer.data, status=status.HTTP_200_OK)
return Response({'Message': 'Team not found'},status=status.HTTP_404_NOT_FOUND)
return Response({'Message': 'Team not found'}, status=status.HTTP_404_NOT_FOUND)
23 changes: 0 additions & 23 deletions partleads/migrations/0001_initial.py

This file was deleted.

2 changes: 1 addition & 1 deletion partleads/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ class Candidate(models.Model):
('FE', 'FRONTEND'),
('BE', 'BACKEND')
)

id = models.AutoField(primary_key=True)
name = models.CharField(max_length=20)
position = models.CharField(choices=POSITION, max_length=2)
vote_count = models.IntegerField(default=0)
Expand Down
2 changes: 1 addition & 1 deletion partleads/serializer.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@
class CandidateSerializer(serializers.ModelSerializer):
class Meta:
model = Candidate
fields = ['name', 'position', 'vote_count']
fields = ['id', 'name', 'vote_count', 'position']
18 changes: 13 additions & 5 deletions partleads/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,12 @@
# Create your views here.
from rest_framework import status
from rest_framework.generics import get_object_or_404
from rest_framework.parsers import JSONParser
from rest_framework.permissions import IsAuthenticatedOrReadOnly
from rest_framework.response import Response
from rest_framework.views import APIView

from accounts.models import User
from partleads.models import Candidate
from partleads.serializer import CandidateSerializer

Expand All @@ -15,22 +18,27 @@
}

class CandidateView(APIView):
permission_classes = [IsAuthenticatedOrReadOnly]

def get(self, request, position):
candidates = Candidate.objects.filter(position=POSITION_DICT[position])
serializer = CandidateSerializer(candidates, many=True)
return Response(serializer.data)

def post(self, request):
# 유저 토큰 관련 예외 처리 필요
# 유저 투표권 개수에 따른 투표/취소 구현 필요
def post(self, request, position):
user = User.objects.filter(id=request.user.id)[0]

serializer = CandidateSerializer(data=request.data)
if(user.vote_part):
return Response({'Message': 'No more vote count'}, status=status.HTTP_400_BAD_REQUEST)

serializer = CandidateSerializer(data=request.data)
if(serializer.is_valid()):
candidate = get_object_or_404(Candidate, position=serializer.data['position'], name=serializer.data['name'])
candidate = get_object_or_404(Candidate, position=POSITION_DICT[position], id=request.data['id'])
candidate.vote_count += 1
candidate.save()
serializer = CandidateSerializer(candidate)
user.vote_part = True
user.save()
return Response(serializer.data, status=status.HTTP_200_OK)

return Response({'Message': 'Candidate not found'}, status=status.HTTP_404_NOT_FOUND)

0 comments on commit e7d0f03

Please sign in to comment.