Added paging to "Your recent submissions" tab (issue #40)

Hi Ali,

Ready and tested! Well before Friday :)

A short note on the code: there's a good chunk of repeating code (in related *.py and *.html files) since I basically have to create the same part of the page in two different ways: rendering it on the server in the beginning, and then fetching only the relevant part of the page dynamically via AJAX.

I'm aware it's not a good thing and plan to clean it up - that'd actually be issue #117. So if you don't mind, I'd start working on it and remove that duplicating code in the process.


Do we need to include full unit tests output if none triggers an error?

pep8 output:

c:\Projects\Ali\Jeeqs\src>pep8 jeeqs.py
jeeqs.py:93:42: E712 comparison to False should be 'if cond is False:' or 'if not cond:'
jeeqs.py:202:44: E712 comparison to True should be 'if cond is True:' or 'if cond:'
jeeqs.py:215:46: E712 comparison to False should be 'if cond is False:' or 'if not cond:'

However, if I fix that as proposed, I'm getting exceptions from webapp. Should we investigate or just suppress this specific warning?

Best regards,
Egor.


Test units output:

C:\Python27\python.exe C:/Projects/Ali/Jeeqs/src/test_jeeqs.py "c:\Program Files\Google\google_appengine" c:\Projects\Ali\Jeeqs\src
testLoginExampleUser (test_core.CoreTestCase) ... ok
testXYZ (test_core.CoreTestCase) ... ok
testLoginExampleUser (test_jeeqs.JeeqsTestCase) ... ok
testLoginExampleUser (test_jeeqs.ProgramHandlerTestCase) ... ok
test_program_handler_print (test_jeeqs.ProgramHandlerTestCase) ... ok
testLoginExampleUser (test_program_tester.ProgramTesterTestCase) ... ok
test_compile_and_run_compile_error (test_program_tester.ProgramTesterTestCase)
test compile_and_run "pass". ... ok
test_compile_and_run_factorial (test_program_tester.ProgramTesterTestCase) ... ok
test_compile_and_run_pass (test_program_tester.ProgramTesterTestCase)
test compile_and_run "pass". ... ok
test_testcases_factorial (test_program_tester.ProgramTesterTestCase) ... ok
testLoginExampleUser (test_rpc_handler.RPCHandlerTestCase) ... ok
test_flag_attempt (test_rpc_handler.RPCHandlerTestCase)
Tests voter voting a flag for a submission ... ok
test_flag_feedback (test_rpc_handler.RPCHandlerTestCase) ... ok
test_save_draft (test_rpc_handler.RPCHandlerTestCase) ... ok
test_submit_attempt_automatic_challenge (test_rpc_handler.RPCHandlerTestCase) ... ok
test_submit_first_attempt (test_rpc_handler.RPCHandlerTestCase)
Tests submitting a first attempt to a challenge. ... ok
test_submit_first_correct_vote (test_rpc_handler.RPCHandlerTestCase)
Tests submitting a first correct vote to a submission. ... ok
test_update_displayname (test_rpc_handler.RPCHandlerTestCase) ... ok
test_vote_qualification (test_rpc_handler.RPCHandlerTestCase)
Vote as a non-qualified voter and verify that we don't persist the vote ... ok
test_exercise_cmp (test_status_code.TestUtilFunctions) ... ok

----------------------------------------------------------------------
Ran 20 tests in 9.229s

OK

Process finished with exit code 0