@@ -211,26 +211,26 @@ def attempt(cls, challenge, request):
211211 """
212212 data = request .form or request .get_json ()
213213 submission = data .get ("submission" , "" ).strip ()
214- is_preview = data .get ("preview " , False ) # Check if this is just a preview/test
215-
214+ is_test = data .get ("test " , False ) # Check if this is test mode (checks correctness but doesn't record)
215+
216216 # Get user information from request
217217 user_id = str (data .get ("user_id" , "" ))
218218 user_name = data .get ("user_name" , "" )
219219 client_ip = get_ip ()
220-
220+
221221 # Debug logging
222222 import logging
223- logging .info (f"SQL Challenge attempt - Preview : { is_preview } , User ID: { user_id } , User Name: { user_name } , IP: { client_ip } " )
224-
223+ logging .info (f"SQL Challenge attempt - Test mode : { is_test } , User ID: { user_id } , User Name: { user_name } , IP: { client_ip } " )
224+
225225 if not submission :
226226 return ChallengeResponse (
227227 status = "incorrect" ,
228228 message = "Please provide a SQL query"
229229 )
230-
231- # Check deadline only for actual submissions, not previews
230+
231+ # Check deadline only for actual submissions, not test mode
232232 # Use deadline_utc (raw datetime) for comparison, not the property (which returns a string)
233- if not is_preview and challenge .deadline_utc and datetime .utcnow () > challenge .deadline_utc :
233+ if not is_test and challenge .deadline_utc and datetime .utcnow () > challenge .deadline_utc :
234234 return ChallengeResponse (
235235 status = "incorrect" ,
236236 message = "Submission deadline has passed"
@@ -240,17 +240,17 @@ def attempt(cls, challenge, request):
240240 try :
241241 import requests
242242 import json
243-
243+
244244 # Use Go MySQL server
245245 go_server_url = os .environ .get ('SQL_JUDGE_SERVER_URL' , 'http://localhost:8080' )
246-
247- if is_preview :
248- # For preview, only execute the user query without comparing
246+
247+ if is_test :
248+ # For test mode, check correctness but format message differently
249249 response = requests .post (
250250 f"{ go_server_url } /judge" ,
251251 json = {
252252 'init_query' : challenge .init_query ,
253- 'solution_query' : submission , # Use user query as solution to get its result
253+ 'solution_query' : challenge . solution_query ,
254254 'user_query' : submission ,
255255 'user_id' : user_id ,
256256 'user_name' : user_name ,
@@ -259,26 +259,34 @@ def attempt(cls, challenge, request):
259259 },
260260 timeout = 10
261261 )
262-
262+
263263 if response .status_code == 200 :
264264 result = response .json ()
265-
265+
266266 if not result .get ('success' ):
267267 return ChallengeResponse (
268268 status = "incorrect" ,
269- message = f"[PREVIEW ]\n Error: { result .get ('error' , 'Unknown error' )} "
269+ message = f"[TEST ]\n Error: { result .get ('error' , 'Unknown error' )} "
270270 )
271-
272- # Just show the query result without grading
271+
272+ # Format results for display
273273 user_result_str = json .dumps (result ['user_result' ])
274- return ChallengeResponse (
275- status = "incorrect" ,
276- message = f"[PREVIEW]\n Query executed successfully:\n \n [USER_RESULT]\n { user_result_str } \n [/USER_RESULT]"
277- )
274+
275+ if result ['match' ]:
276+ return ChallengeResponse (
277+ status = "correct" ,
278+ message = f"[TEST]\n ✅ Correct! Your query produces the expected result.\n \n [USER_RESULT]\n { user_result_str } \n [/USER_RESULT]"
279+ )
280+ else :
281+ expected_result_str = json .dumps (result ['expected_result' ])
282+ return ChallengeResponse (
283+ status = "incorrect" ,
284+ message = f"[TEST]\n ❌ Incorrect. Your query does not produce the expected result.\n \n [USER_RESULT]\n { user_result_str } \n [/USER_RESULT]\n \n [EXPECTED_RESULT]\n { expected_result_str } \n [/EXPECTED_RESULT]"
285+ )
278286 else :
279287 return ChallengeResponse (
280288 status = "incorrect" ,
281- message = f"[PREVIEW ]\n SQL judge server error: HTTP { response .status_code } "
289+ message = f"[TEST ]\n SQL judge server error: HTTP { response .status_code } "
282290 )
283291 else :
284292 # Normal submission - compare with solution
0 commit comments