1from flask import Blueprint, Flask, render_template, request, Response, send_file
2import mysql.connector
3import json, time, uuid
4from markupsafe import escape
5from functions import isValidSession, getUserPermission
6
7grammar = Blueprint('grammar', __name__, template_folder='templates')
8@grammar.route('/api/v1/grammar/creategroup', methods=["PUT"])
9def grammarcreategroup():
10 if request.json == None:
11 return Response(json.dumps("No body was provided"), status=400, mimetype="application/json")
12
13 requestSessionid = request.json.get("sessionid")
14 requestGroupName = request.json.get("groupname")
15 requestType = request.json.get("type")
16
17 if requestSessionid == None:
18 return Response(json.dumps("No sessionid was provided"), status=400, mimetype="application/json")
19 if requestGroupName == None:
20 return Response(json.dumps("No groupname was provided"), status=400, mimetype="application/json")
21 if requestType == None:
22 return Response(json.dumps("No type was provided"), status=400, mimetype="application/json")
23
24 if not str(requestType).isdigit():
25 return Response(json.dumps("Type is not an integer"), status=400, mimetype="application/json")
26
27 requestType = int(requestType)
28
29 user = isValidSession(requestSessionid)
30 if user == False:
31 return Response(json.dumps("Invalid session"), status=400, mimetype="application/json")
32
33 db = mysql.connector.connect(
34 host="localhost",
35 user="willem",
36 password="Dinkel2006!",
37 database="shykeiichicom"
38 )
39
40 cursor = db.cursor()
41
42 cursor.execute(f"INSERT INTO grammar_groups (name, creatorid, type) VALUES ({requestGroupName}, {user[0]}, {requestType})")
43
44 db.commit()
45
46 return Response(json.dumps("Created Group"), status=201, mimetype="application/json")
47
48
49@grammar.route('/api/v1/grammar/createwords', methods=["PUT"])
50def grammarcreatewords():
51 if request.json == None:
52 return Response(json.dumps("No body was provided"), status=400, mimetype="application/json")
53
54 requestSessionid = request.json.get("sessionid")
55 requestWordList = json.loads(request.json.get("wordlist"))
56 requestWordGroup = request.json.get("group")
57
58 if requestSessionid == None:
59 return Response(json.dumps("No sessionid was provided"), status=400, mimetype="application/json")
60 if requestWordList == None:
61 return Response(json.dumps("No wordlist was provided"), status=400, mimetype="application/json")
62 if requestWordGroup == None:
63 return Response(json.dumps("No group was provided"), status=400, mimetype="application/json")
64
65 user = isValidSession(requestSessionid)
66 if user == False:
67 return Response(json.dumps("Invalid session"), status=400, mimetype="application/json")
68
69 db = mysql.connector.connect(
70 host="localhost",
71 user="willem",
72 password="Dinkel2006!",
73 database="shykeiichicom"
74 )
75
76 cursor = db.cursor()
77
78 cursor.execute(f"SELECT * FROM grammar_groups WHERE id={requestWordGroup}")
79
80 grammar_group = cursor.fetchone()
81
82 if(grammar_group[2] != user[0]):
83 if(getUserPermission(user[0]) != 1):
84 return Response(json.dumps("You cannot modify this group"), status=400, mimetype="application/json")
85
86 for word in requestWordList:
87 cursor.execute(f"INSERT INTO grammar_gambling_words (word1, word2, correct_word, word_group) VALUES ({word['word1']}, {word['word2']}, {word['correct_word']}, {requestWordGroup})")
88
89 db.commit()
90
91 return Response(json.dumps("Created Words"), status=201, mimetype="application/json")
92
93@grammar.route('/api/v1/grammar/getgroups', methods=["GET"])
94def grammargetgroups():
95 db = mysql.connector.connect(
96 host="localhost",
97 user="willem",
98 password="Dinkel2006!",
99 database="shykeiichicom"
100 )
101
102 cursor = db.cursor()
103
104 cursor.execute(f"SELECT * FROM grammar_groups")
105
106 grammar_groups = cursor.fetchall()
107
108 grammar_groups_list = []
109
110 for x in grammar_groups:
111 grammar_groups_list.append({
112 "id": x[0],
113 "name": x[1],
114 "creatorid": x[2],
115 "type": x[3]
116 })
117
118 return grammar_groups_list
119
120@grammar.route('/api/v1/grammar/getgrammar', methods=["GET"])
121def grammargetgrammar():
122 requestGrammarGroup = request.args.get("group")
123
124 if(requestGrammarGroup == None):
125 return Response(json.dumps("No grammar group provided"), status=400, mimetype="application/json")
126
127 db = mysql.connector.connect(
128 host="localhost",
129 user="willem",
130 password="Dinkel2006!",
131 database="shykeiichicom"
132 )
133
134 cursor = db.cursor()
135
136 cursor.execute(f"SELECT * FROM grammar_gambling_words WHERE word_group={requestGrammarGroup}")
137
138 grammar_groups = cursor.fetchall()
139
140 grammar_groups_list = []
141
142 for x in grammar_groups:
143 grammar_groups_list.append({
144 "id": x[0],
145 "word1": x[1],
146 "word2": x[2],
147 "correct_word": x[3],
148 "word_group": x[4]
149 })
150
151 return grammar_groups_list