Skip to content

Commit d2edf86

Browse files
committed
fb api
1 parent 88d7e59 commit d2edf86

File tree

3 files changed

+58
-17
lines changed

3 files changed

+58
-17
lines changed

api/urls.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,5 @@
1717
#path('oauth/login/', views.SocialLoginView.as_view(),name='oauthlogin')
1818
path('refresh',TokenRefreshView.as_view(),name='token_refresh'),
1919
path('question',views.getquestion.as_view(),name='question api'),
20+
path('facebooklogin',views.facebooklogin.as_view(),name='facebooklogin'),
2021
]

api/views.py

Lines changed: 55 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -46,20 +46,23 @@ def post(self,request):
4646
player=UserScore.objects.filter(user=request.user)[0]
4747
print(player.name)
4848
answer=request.data.get("answer",None)
49-
#player=self.context.get("player")
5049
print(player)
51-
#player=data.get("player")
52-
#active=config.quiz_active(config)
53-
day=config.objects.all()[0].current_day
54-
curr_question=player.current_question
55-
question=Question.objects.filter(day=day,question_no=curr_question)
56-
result=Question.check_ans(Question,answer,question)
57-
if result:
58-
player.new_score(player)
59-
response={
60-
'status_code':status.HTTP_200_OK,
61-
'result':result
62-
}
50+
active=config.quiz_active(config)
51+
if active:
52+
day=config.objects.all()[0].current_day
53+
curr_question=player.current_question
54+
question=Question.objects.filter(day=day,question_no=curr_question)
55+
result=Question.check_ans(Question,answer,question)
56+
if result:
57+
player.new_score(player)
58+
response={
59+
'status_code':status.HTTP_200_OK,
60+
'result':result
61+
}
62+
else:
63+
response= {
64+
"error":"quiz has ended"
65+
}
6366
return Response(response)
6467
class GoogleLogin(APIView):
6568
def post(self, request):
@@ -91,6 +94,43 @@ def post(self, request):
9194
response['refresh_token'] = str(token)
9295
return Response(response)
9396

94-
class questionview(APIView):
95-
permission_classes=(IsAuthenticated,)
9697

98+
class facebooklogin(APIView):
99+
100+
def post(self,request):
101+
accesstoken=request.data.get('accesstoken')
102+
expiration_time=request.data.get('expiration_time')
103+
userID=request.data.get('userID')
104+
if(int(expiration_time) < int(time.time())):
105+
content= {"status": 404}
106+
return Response(content)
107+
else:
108+
url = "https://graph.facebook.com/{}".format(userID)
109+
parameters = {
110+
'fields': 'name,email,picture',
111+
'access_token': accesstoken
112+
}
113+
idInfo = r.get(url=url, params=parameters).json()
114+
115+
email= idInfo['email'],
116+
username= idInfo['email'],
117+
image= idInfo['picture']['data']['url'],
118+
try:
119+
user = User.objects.get(email=data['email'])
120+
except User.DoesNotExist:
121+
user = User()
122+
user.username = username
123+
# provider random default password
124+
user.password = make_password(BaseUserManager().make_random_password())
125+
user.email = email
126+
user.save()
127+
score = UserScore(user=user,name=user.email, current_question = 1)
128+
score.save()
129+
130+
token = RefreshToken.for_user(user) # generate token without username & password
131+
response = {}
132+
response['username'] = user.username
133+
response['access_token'] = str(token.access_token)
134+
response['refresh_token'] = str(token)
135+
return Response(response)
136+

quiz/models.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,10 @@ class config(models.Model):
6262
quiz_endtime=models.DateTimeField()
6363

6464
def quiz_active(self):
65-
curr_config=self.objects.all()
65+
curr_config=self.objects.all()[0]
6666
current_time=datetime.datetime.now()
6767
if current_time==curr_config[0].quiz_endtime:
68-
curr_config[0].quiz_active=False
68+
curr_config.quiz_active=False
6969

7070
def save(self, force_insert=False, force_update=False, *args, **kwargs):
7171
players=UserScore.objects.all()

0 commit comments

Comments
 (0)