1
- from django .shortcuts import render
1
+ from django .http import JsonResponse , HttpResponse
2
+ from django .contrib .auth import get_user_model
3
+ from django .views import View
4
+ from utils .validator import unique_team_id
5
+ from django .contrib .auth .mixins import LoginRequiredMixin
6
+ from django .contrib .auth import authenticate , login
7
+ from django .views .decorators .csrf import csrf_protect
8
+ import json
2
9
3
- # Create your views here.
10
+ from env .environ import CATEGORY
11
+
12
+ Team = get_user_model ()
13
+
14
+
15
+ class ShopView (LoginRequiredMixin , View ):
16
+ def get (self , request ):
17
+ item_list = [(cate [1 ], Item .objects .filter (category = cate [0 ])) for cate in CATEGORY ]
18
+ return JsonResponse ({
19
+ 'money' : request .user .balance ,
20
+ 'item_list' : item_list
21
+ })
22
+
23
+
24
+ class ItemView (LoginRequiredMixin , View ):
25
+ def get (self , request , item_id ):
26
+ try :
27
+ item = Item .objects .get (id = item_id )
28
+ except model .DoesNotExist :
29
+ return HttpResponse (status = 404 )
30
+
31
+ try :
32
+ item .get (teams__username = request .user .username )
33
+ already_bought = True
34
+ except model .DoesNotExist :
35
+ already_bought = False
36
+
37
+ return JsonResponse ({
38
+ 'id' : item_id ,
39
+ 'name' : item ,
40
+ 'description' : getattr (item , 'description' ),
41
+ 'type' : getattr (item , 'category' ),
42
+ 'price' : getattr (item , 'price' ),
43
+ 'already_bought' : already_bought
44
+ })
45
+
46
+ def post (self , request , item_id ):
47
+ try :
48
+ item = Item .objects .get (id = item_id )
49
+ except model .DoesNotExist :
50
+ return HttpResponse (status = 404 )
51
+
52
+ try :
53
+ item .get (teams__username = request .user .username )
54
+ return HttpResponse (status = 409 )
55
+ except model .DoesNotExist :
56
+ pass
57
+
58
+ if not item .buy (request .user ):
59
+ return HttpResponse (status = 402 )
60
+ return HttpResponse (status = 200 )
0 commit comments