Skip to content

Commit d4941b1

Browse files
author
piyushroshan
committed
fixed timer reset on reload and login problem
1 parent 9354a3b commit d4941b1

File tree

6 files changed

+73
-17
lines changed

6 files changed

+73
-17
lines changed

README.md

+2
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ Jaseem Abid <[email protected]>
88

99
Vipin Nair <[email protected]>
1010

11+
Roshan Piyush <[email protected]>
12+
1113
UI adapted from UNIXKCD by chromakode.
1214

1315
License

app.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
application: tuxofwar2011
1+
application: piyushtux
22
version: 10
33
runtime: python
44
api_version: 1

index.py

+20-5
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,11 @@ def get(self,var):
2525
userdb.userPlayStart(var)
2626
self.redirect('/?auth=1')
2727
else:
28-
self.response.headers['Content-Type'] = 'text/html'
29-
self.response.out.write("You have already started the contest. You were not supposed to do this. You can continue the contest <a href='/'>here</a>. You will not have a timer and you may be penalized for this. Contact admins for further details." )
28+
if userdb.boolRemainingTime()==True:
29+
self.redirect('/?auth=1')
30+
else:
31+
self.response.headers['Content-Type'] = 'text/html'
32+
self.response.out.write('You have finished the contest. You cannot participate again <a href="/"">Back to Tux of War</a>')
3033

3134

3235
class contestStop(webapp.RequestHandler):
@@ -56,6 +59,17 @@ def get(self):
5659
else:
5760
self.response.out.write("{ \"name\" : \"NULL\" }")
5861

62+
class remainingTime(webapp.RequestHandler):
63+
def get(self):
64+
user = users.get_current_user()
65+
if user:
66+
time = userdb.userRemainingTime()
67+
self.response.out.write("{ \"time\" :\""+ str(time)+"\" }")
68+
else:
69+
self.response.out.write("{ \"time\" :\""+str(0)+"\" }")
70+
71+
72+
5973

6074
class adminQuestionsAdd(webapp.RequestHandler):
6175
def get(self):
@@ -74,7 +88,7 @@ class adminQuestionsSubmit(webapp.RequestHandler):
7488
def post(self):
7589
if users.get_current_user():
7690
if users.is_current_user_admin():
77-
q = questiondb.question(questionNumber=string.atoi(self.request.get('qno')),
91+
q = questiondb.questionm(questionNumber=string.atoi(self.request.get('qno')),
7892
question=self.request.get('ques'),
7993
qimage=self.request.get('qimg'),
8094
opt1=self.request.get('opt1'),
@@ -94,7 +108,7 @@ def get(self):
94108
if users.get_current_user():
95109
if users.is_current_user_admin():
96110
self.response.headers['Content-Type'] = 'text/html'
97-
query = questiondb.question.all()
111+
query = questiondb.questionm.all()
98112
result = query.fetch(100)
99113
template_values = { 'questions' : result }
100114
path = os.path.join(os.path.dirname(__file__), 'templates/questionlist.html')
@@ -142,8 +156,9 @@ def get(self):
142156
('/contest/stop/',contestStop),
143157
('/contest/question/(\d*)|/', contestQuestion),
144158
('/contest/answer/', contestAnswer),
159+
('/contest/time/', remainingTime),
145160
('/contest/activeuser/', contestActiveuser),
146-
('/admin/questions/add/', adminQuestionsAdd),
161+
('/admin/questions/add/contest', adminQuestionsAdd),
147162
('/admin/questions/submit/', adminQuestionsSubmit),
148163
('/admin/questions/list/',adminQuestionsList),
149164
('/admin/questions/answered/',adminQuestionsAnswered),

js/xkcd_cli.js

+10-5
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,14 @@ function getUrlVars() {
2525
}
2626

2727
var xkcd = {
28-
latest: {"num" : 45},
28+
latest: {"num" : 4},
2929
last: {"num" : 1},
3030
cache: {},
3131
baseQ: '/contest/question/',
3232
baseA: '/contest/answer/',
3333
baseR: '/contest/start/',
3434
baseE: '/contest/stop/',
35+
baseT: '/contest/time/',
3536

3637
get: function(num, success, error) {
3738
if (num === null) {
@@ -237,7 +238,7 @@ var Filesystem = {
237238
'welcome.txt': {type: 'file', read: function (terminal) {
238239
'use strict';
239240
$.each([
240-
$('<h3>').text('Welcome to Tux of War contest console'),
241+
$('<h3>').text('Welcome to Roshan Piyush\'s Tux of War contest console'),
241242
'Use "ls", "cat", and "cd" to navigate the filesystem.Press "Ctrl" then "L" to clear.',
242243
'cat reginfo.txt for registration information.',
243244
'The contest opens at 10pm tonight. You may login upto 10:30 pm to finish the contest in time.',
@@ -771,13 +772,17 @@ $(document).ready(function() {
771772
/* Example implementation : var cid = getUrlVars()['id']; */
772773
if(getUrlVars()['auth']) {
773774
Terminal.runCommand('welcome');
774-
var dur = 1800, kill = setInterval(function(){
775-
$("#timer").text(Math.floor((dur/60)) + " minutes " + Math.floor((dur%60)) +" seconds left");
776-
dur -= 1;
775+
var dur = 0;
776+
$.getJSON("/contest/time/", function(data) {
777+
dur = Number(data.time);
778+
});
779+
kill = setInterval(function(){
777780
if (dur === 0) {
778781
clearTimeout(kill);
779782
window.location = xkcd.baseE;
780783
}
784+
$("#timer").text(Math.floor((dur/60)) + " minutes " + Math.floor((dur%60)) +" seconds left");
785+
dur -= 1;
781786
},1000);
782787
} else if(getUrlVars()['end']) {
783788
Terminal.runCommand('end');

questiondb.py

+16-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Model Defining Questions Database
22
import string
33
from google.appengine.ext import db
4-
class question(db.Model):
4+
class questionm(db.Model):
55
questionNumber = db.IntegerProperty(required=True)
66
question = db.StringProperty(required=True, multiline=True)
77
qimage = db.StringProperty()
@@ -11,8 +11,10 @@ class question(db.Model):
1111
opt4 = db.StringProperty(required=True, multiline=True)
1212
ans = db.StringProperty(required=True)
1313

14+
1415
def getQuestion(num,var):
15-
query = question.all()
16+
query = questionm.all()
17+
1618
q = query.filter('questionNumber =',num).get()
1719
if q:
1820
return ("{"+
@@ -26,3 +28,15 @@ def getQuestion(num,var):
2628
"\""+q.opt4.replace('\r\n','<br />')+"\""+
2729
"]"+
2830
"}")
31+
else:
32+
return ("{"+
33+
"\"num\" : " + "\""+"1"+"\""+","+
34+
"\"question\" : "+"\""+"Sorry question not found. We'll fix it Soon"+"\""+","+
35+
"\"image\" : "+"\""+"\""+","+
36+
"\"options\" : " + "["+
37+
"\""+""+"\""+","+
38+
"\""+""+"\""+","+
39+
"\""+""+"\""+","+
40+
"\""+""+"\""+
41+
"]"+
42+
"}")

userdb.py

+24-4
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@
66
from google.appengine.api import users
77
from google.appengine.ext import db
88
from google.appengine.api import users
9-
9+
from questiondb import questionm
1010
def generateSet():
1111
a = []
12-
for i in range(45):
12+
for i in range(4):
1313
a.append(i+1)
1414
random.shuffle(a)
1515
return a
@@ -20,6 +20,7 @@ class userPlay(db.Model):
2020
tathvaID = db.StringProperty(required=True)
2121
startTime = db.DateTimeProperty(required=True)
2222
endTime = db.DateTimeProperty
23+
closeTime=db.DateTimeProperty(required=True)
2324

2425
def userPlayExist():
2526
query = userPlay.all()
@@ -34,7 +35,9 @@ def userPlayStart(tid):
3435
u = userPlay(user = users.get_current_user(),
3536
questionSet = generateSet(),
3637
tathvaID = tid,
37-
startTime = datetime.datetime.now())
38+
startTime = datetime.datetime.now(),
39+
closeTime = datetime.datetime.now()+datetime.timedelta(minutes=30)
40+
)
3841
u.put()
3942
return u.user.nickname() + u.tathvaID
4043

@@ -46,10 +49,27 @@ def userPlayStop():
4649
u.put()
4750
return u.user.nickname() + u.tathvaID + str(u.endTime)
4851

52+
def userRemainingTime():
53+
query = userPlay.all()
54+
u = query.filter('user = ', users.get_current_user()).get()
55+
urtime = (u.closeTime-datetime.datetime.now()).seconds
56+
if u.closeTime > datetime.datetime.now():
57+
return urtime
58+
else:
59+
return 0
60+
61+
def boolRemainingTime():
62+
query = userPlay.all()
63+
u = query.filter('user = ', users.get_current_user()).get()
64+
if u.closeTime > datetime.datetime.now():
65+
return True
66+
else:
67+
return False
68+
4969
def userElapsedTime():
5070
query = userPlay.all()
5171
u = query.filter('user = ', users.get_current_user()).get()
52-
return ((datetime.datetime.now() - u.startTime).microseconds/1000)
72+
return ((datetime.datetime.now() - u.startTime).microseconds/1000)
5373

5474
def userPermutation(num):
5575
query = userPlay.all()

0 commit comments

Comments
 (0)