author | amit@thunder |
Mon, 14 Jun 2010 22:02:14 +0530 | |
changeset 4 | 4d5422e5a45d |
parent 0 | 0b061d58aea3 |
permissions | -rwxr-xr-x |
0
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
1 |
# Python imports |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
2 |
import doctest |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
3 |
import logging |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
4 |
import os |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
5 |
import traceback |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
6 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
7 |
# # AppEngine imports |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
8 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
9 |
from django.contrib.auth.models import User |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
10 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
11 |
from testappproj.testapp.models import * |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
12 |
from django.http import HttpResponse |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
13 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
14 |
# from google.appengine.api import users |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
15 |
# from google.appengine.ext.webapp import template |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
16 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
17 |
# from google.appengine.ext import db |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
18 |
# from google.appengine.ext.db import djangoforms |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
19 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
20 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
21 |
# Django imports |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
22 |
#from django.conf import settings |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
23 |
#settings._target = None |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
24 |
#os.environ['DJANGO_SETTINGS_MODULE'] = 'settings' |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
25 |
#import django |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
26 |
from django import http |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
27 |
from django import shortcuts |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
28 |
from django.template import Context ,RequestContext |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
29 |
from django.template.loader import get_template |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
30 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
31 |
# Local imports |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
32 |
from forms import * |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
33 |
import models |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
34 |
from helpers import bulkuploader as pykataupload |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
35 |
from datetime import date |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
36 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
37 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
38 |
def respond(request, user,template, params=None): |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
39 |
"""Helper to render a response, passing standard stuff to the response. |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
40 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
41 |
Args: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
42 |
request: The request object. |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
43 |
user: The User object representing the current user; or None if nobody |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
44 |
is logged in. |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
45 |
template: The template name; '.html' is appended automatically. |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
46 |
params: A dict giving the template parameters; modified in-place. |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
47 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
48 |
Returns: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
49 |
Whatever render_to_response(template, params) returns. |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
50 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
51 |
Raises: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
52 |
Whatever render_to_response(template, params) raises. |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
53 |
""" |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
54 |
if params is None: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
55 |
params = {} |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
56 |
if user: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
57 |
params['user'] = user |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
58 |
params['sign_out'] = 1 |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
59 |
# params['is_admin'] = (users.is_current_user_admin()) |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
60 |
else: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
61 |
params['sign_in'] = 1 |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
62 |
# if not template.endswith('.html'): |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
63 |
template += '.html' |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
64 |
return shortcuts.render_to_response(template, params) |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
65 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
66 |
def execute_test_cases(request, test_cases, g): |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
67 |
li = [] |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
68 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
69 |
solved = True |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
70 |
for e in test_cases: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
71 |
if not e.want: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
72 |
exec e.source in g |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
73 |
continue |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
74 |
call = e.source.strip() |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
75 |
got = eval(e.source.strip(), g) |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
76 |
expected = eval(e.want, g) |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
77 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
78 |
if got == expected: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
79 |
status = 'pass' |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
80 |
else: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
81 |
status = 'fail' |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
82 |
solved = False |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
83 |
li.append([call, expected, "%r" % got, status]) |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
84 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
85 |
return li, solved |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
86 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
87 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
88 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
89 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
90 |
def index(request): |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
91 |
""" need to change user in the django.contrib way""" |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
92 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
93 |
user = request.user |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
94 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
95 |
return respond(request , user, 'index') |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
96 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
97 |
# def contribution(request): |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
98 |
# # user = users.get_current_user() |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
99 |
# return respond(request, user, 'contribution') |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
100 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
101 |
# def help(request): |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
102 |
# # user = users.get_current_user() |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
103 |
# return respond(request, user, 'help') |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
104 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
105 |
# def about(request): |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
106 |
# # user = users.get_current_user() |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
107 |
# return respond(request, user, 'about') |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
108 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
109 |
# def vision(request): |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
110 |
# # user = users.get_current_user() |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
111 |
# return respond(request, user, 'vision') |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
112 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
113 |
# def statements(request): |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
114 |
# # user = users.get_current_user() |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
115 |
# return respond(request, user, 'statements') |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
116 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
117 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
118 |
def get_pu(problem): |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
119 |
''' |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
120 |
returns: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
121 |
- "USER_NOT_SIGNED_IN": user not signed in. returning this to prevent saving anonymous user's potentially crappy solution and display it to every anonymous visitor |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
122 |
- "PU_NOT_FOUND": for signed in users when no solution has been attempted. |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
123 |
- ProblemUser: for signed in users when a solution has been attempted |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
124 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
125 |
''' |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
126 |
# user = users.get_current_user() |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
127 |
# if not user: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
128 |
# return "USER_NOT_SIGNED_IN" |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
129 |
pu_query = models.ProblemUser.all().filter('problem = ', problem).filter('user =', users.get_current_user()) |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
130 |
pu_results = pu_query.fetch(1) |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
131 |
if pu_results: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
132 |
return pu_results[0] |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
133 |
return "PU_NOT_FOUND" |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
134 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
135 |
def is_solved(problem): |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
136 |
pu = get_pu(problem) |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
137 |
if pu == "PU_NOT_FOUND" or pu == "USER_NOT_SIGNED_IN": return False |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
138 |
return pu.solved |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
139 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
140 |
def problems(request, category=None): |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
141 |
user = request.user |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
142 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
143 |
# if category is None: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
144 |
# problems = db.GqlQuery('SELECT * FROM Problem ORDER BY created DESC') |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
145 |
# else: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
146 |
# problems = db.GqlQuery('SELECT * FROM Problem WHERE categories = :1 ORDER BY created DESC', category) |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
147 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
148 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
149 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
150 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
151 |
# entries = [] |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
152 |
# for problem in problems: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
153 |
# e = dict(problem=problem, |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
154 |
# username=problem.author.nickname().partition('@')[0], |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
155 |
# solved=is_solved(problem)) |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
156 |
# entries.append(e) |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
157 |
# problems = entries |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
158 |
entries=[] |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
159 |
problems=Problem.objects.all() |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
160 |
for problem in problems: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
161 |
e = dict(problem=problem.name, |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
162 |
username=user.username, |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
163 |
problem_id=problem.id |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
164 |
) |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
165 |
entries.append(e) |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
166 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
167 |
# print entries |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
168 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
169 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
170 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
171 |
return respond(request, user, 'problems',{'entries' : entries } ) |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
172 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
173 |
def code(request, problem_id): |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
174 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
175 |
print problem_id |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
176 |
problem = Problem.objects.get(id=int(problem_id)) |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
177 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
178 |
if problem is None: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
179 |
return http.HttpResponseNotFound('No such problem.') |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
180 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
181 |
# pu = get_pu(problem) |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
182 |
# if pu == "PU_NOT_FOUND": # user is attempting problem for the first time |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
183 |
# pu = models.ProblemUser(problem=problem, user=users.get_current_user(), solution='', solved=False) |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
184 |
# pu.put() |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
185 |
# pu = None |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
186 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
187 |
return respond(request, request.user ,'code' , ) |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
188 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
189 |
def run(request): |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
190 |
user = request.user |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
191 |
problem_id = request.POST.get('problem_id') |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
192 |
if problem_id: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
193 |
problem = Problem.objects.get(id=int(problem_id)) |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
194 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
195 |
if problem is None: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
196 |
return http.HttpResponseNotFound('No such problem.') |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
197 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
198 |
user_code = request.POST.get('user_code') |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
199 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
200 |
if not user_code: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
201 |
return http.HttpResponse('bad request') |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
202 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
203 |
# pu = get_pu(problem) |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
204 |
# # update ProblemUser object for this user |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
205 |
# if (pu.__class__ == models.ProblemUser): |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
206 |
# pu.solution = user_code |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
207 |
# pu.put() |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
208 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
209 |
user_code = user_code.replace('\r\n', '\n') |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
210 |
user_code += '\n\n' |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
211 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
212 |
errors = '' |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
213 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
214 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
215 |
try: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
216 |
print user_code |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
217 |
compiled = compile(user_code, 'error_file', 'exec') |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
218 |
g = {} |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
219 |
exec compiled in g |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
220 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
221 |
# s = problem.tests.replace('\r\n', '\n') |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
222 |
# s += '\n\n' |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
223 |
# test_cases = doctest.DocTestParser().get_examples(s) |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
224 |
# results, solved = execute_test_cases(request, test_cases, g) |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
225 |
# if solved: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
226 |
# pu = get_pu(problem) |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
227 |
# if pu.__class__ == models.ProblemUser: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
228 |
# pu.solved = True |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
229 |
# pu.put() |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
230 |
# else: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
231 |
# pu = get_pu(problem) |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
232 |
# if pu.__class__ == models.ProblemUser: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
233 |
# pu.solved = False |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
234 |
# pu.put() |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
235 |
except: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
236 |
errors = traceback.format_exc() |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
237 |
return respond(request, user, 'traceback', {'errors': errors}) |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
238 |
results="solved" |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
239 |
return respond(request, request.user, 'run', {'results': results}) |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
240 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
241 |
def new_edit(request, problem_id=None, internal=False): |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
242 |
# internal indicates that it is being called internally by uploader |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
243 |
# |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
244 |
user = request.user |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
245 |
print user.username |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
246 |
if user.is_anonymous() : |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
247 |
return http.HttpResponseForbidden('You must be an signed in to create edit a problem.') |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
248 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
249 |
if problem_id is None: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
250 |
creating_new = True |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
251 |
else: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
252 |
creating_new = False |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
253 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
254 |
problem = None |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
255 |
# if problem_id: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
256 |
# problem = models.Problem.get(db.Key.from_path(models.Problem.kind(), int(problem_id))) |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
257 |
# if problem.author != user and not users.is_current_user_admin(): |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
258 |
# return http.HttpResponseForbidden('You can only edit your own problems.') |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
259 |
# if problem is None: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
260 |
# return http.HttpResponseNotFound('No such problem.') |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
261 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
262 |
form = ProblemForm(data=request.POST or None, instance=problem) |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
263 |
upload_form = UploadForm(data=request.POST) |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
264 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
265 |
if not request.POST: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
266 |
return respond(request, user, 'new_edit_problem', {'form':form, 'problem':problem, 'creating':creating_new , 'upload_form' : upload_form }) |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
267 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
268 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
269 |
errors = form.errors |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
270 |
if not errors: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
271 |
try: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
272 |
problem = form.save(commit=False) |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
273 |
except ValueError, err: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
274 |
errors['__all__'] = unicode(err) |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
275 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
276 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
277 |
if errors: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
278 |
print "new world" |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
279 |
if internal: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
280 |
return ('error',errors) |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
281 |
return respond(request, user, 'new_edit_problem', |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
282 |
{'form': form, 'problem':problem, 'creating':creating_new}) |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
283 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
284 |
if creating_new: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
285 |
# if internal: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
286 |
# if len(request.POST['user_id'])>0: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
287 |
# logging.info(request.POST) |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
288 |
# problem.author = users.User(request.POST['user_id']) |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
289 |
# else: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
290 |
# problem.author = user |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
291 |
# else: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
292 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
293 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
294 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
295 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
296 |
problem.author = user.username |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
297 |
problem.created = date.today() |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
298 |
problem. modified=date.today() |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
299 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
300 |
problem.save() |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
301 |
# l = [] |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
302 |
# for x in problem.categories: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
303 |
# l.extend(x.split()) |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
304 |
# problem.categories = l |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
305 |
# problem.put() |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
306 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
307 |
if internal: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
308 |
return ('success','success') |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
309 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
310 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
311 |
return http.HttpResponseRedirect('/problems') |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
312 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
313 |
def upload(request): |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
314 |
""" upload handler, validates the form and calls handle_uploaded_file |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
315 |
for processing further |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
316 |
""" |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
317 |
user = request.user |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
318 |
if user is None: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
319 |
return http.HttpResponseForbidden('You must be an signed in to create/edit a problem.') |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
320 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
321 |
if request.method == 'POST': |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
322 |
form = UploadForm(request.POST, request.FILES) |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
323 |
if form.is_valid(): |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
324 |
submission_report = handle_uploaded_file(request) |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
325 |
print "testing" |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
326 |
print submission_report |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
327 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
328 |
return respond(request, user, 'upload', {'report':submission_report}) |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
329 |
else: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
330 |
return http.HttpResponseForbidden('Oops something went wrong with the upload') |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
331 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
332 |
def handle_uploaded_file(request): |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
333 |
""" Handles uploaded data, pushes it to existing problem creating code |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
334 |
TODO: 1. make efficient by putting actual database code Here |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
335 |
2. Add more security and validation |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
336 |
""" |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
337 |
submission_data = request.FILES['file'].read() |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
338 |
if '#---' in submission_data: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
339 |
all_submissions = submission_data.split('#---')[1:-1] |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
340 |
# ^^ ignoring the first null and last __main__ code |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
341 |
all_submissions = [ pykataupload.Submission(x) for x in all_submissions ] |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
342 |
report = [] |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
343 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
344 |
for key,each_submission in enumerate(all_submissions): |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
345 |
# TODO: handle these later by TaskQueues to avoid timeouts on big uploads |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
346 |
# a good way would be to have ajax based status coming back to this page |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
347 |
# about each problem in the uploaded file, their status, progress etc. |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
348 |
each_submission.parse() |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
349 |
request.POST.clear() |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
350 |
request.POST.update (each_submission.data_dict) |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
351 |
upload_status, upload_response = new_edit(request, internal=True) |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
352 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
353 |
report.append ({'status':upload_status, 'name':each_submission['name'], |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
354 |
'upload_response':upload_response}) |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
355 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
356 |
# Yay this hack works :D |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
357 |
return report |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
358 |
else: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
359 |
return http.HttpResponseForbidden('The file you uploaded is not in appropriate format.') |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
360 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
361 |
def shell(request): |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
362 |
""" need to change user in the django.contrib way""" |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
363 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
364 |
user = request.user |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
365 |
statement=request.GET.get('statement','') |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
366 |
if statement is not '': |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
367 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
368 |
# the python compiler doesn't like network line endings |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
369 |
statement = statement.replace('\r\n', '\n') |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
370 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
371 |
# add a couple newlines at the end of the statement. this makes |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
372 |
# single-line expressions such as 'class Foo: pass' evaluate happily. |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
373 |
statement += '\n\n' |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
374 |
print "statement"+statement |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
375 |
# log and compile the statement up front |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
376 |
try: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
377 |
logging.info('Compiling and evaluating:\n%s' % statement) |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
378 |
compiled = compile(statement, '<string>', 'single') |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
379 |
except: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
380 |
return HttpResponse(traceback.format_exc(),mimetype="text/plain") |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
381 |
# pass |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
382 |
return HttpResponse("",mimetype="text/plain") |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
383 |
else: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
384 |
return respond(request, user, 'shell') |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
385 |
# create a dedicated module to be used as this statement's __main__ |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
386 |
statement_module = new.module('__main__') |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
387 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
388 |
# use this request's __builtin__, since it changes on each request. |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
389 |
# this is needed for import statements, among other things. |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
390 |
import __builtin__ |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
391 |
statement_module.__builtins__ = __builtin__ |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
392 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
393 |
# load the session from the datastore |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
394 |
session = Session.get(self.request.get('session')) |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
395 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
396 |
# swap in our custom module for __main__. then unpickle the session |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
397 |
# globals, run the statement, and re-pickle the session globals, all |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
398 |
# inside it. |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
399 |
old_main = sys.modules.get('__main__') |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
400 |
try: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
401 |
sys.modules['__main__'] = statement_module |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
402 |
statement_module.__name__ = '__main__' |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
403 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
404 |
# re-evaluate the unpicklables |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
405 |
for code in session.unpicklables: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
406 |
exec code in statement_module.__dict__ |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
407 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
408 |
# re-initialize the globals |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
409 |
for name, val in session.globals_dict().items(): |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
410 |
try: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
411 |
statement_module.__dict__[name] = val |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
412 |
except: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
413 |
msg = 'Dropping %s since it could not be unpickled.\n' % name |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
414 |
self.response.out.write(msg) |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
415 |
logging.warning(msg + traceback.format_exc()) |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
416 |
session.remove_global(name) |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
417 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
418 |
# run! |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
419 |
old_globals = dict(statement_module.__dict__) |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
420 |
try: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
421 |
old_stdout = sys.stdout |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
422 |
old_stderr = sys.stderr |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
423 |
try: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
424 |
sys.stdout = self.response.out |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
425 |
sys.stderr = self.response.out |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
426 |
exec compiled in statement_module.__dict__ |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
427 |
finally: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
428 |
sys.stdout = old_stdout |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
429 |
sys.stderr = old_stderr |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
430 |
except: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
431 |
self.response.out.write(traceback.format_exc()) |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
432 |
return |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
433 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
434 |
# extract the new globals that this statement added |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
435 |
new_globals = {} |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
436 |
for name, val in statement_module.__dict__.items(): |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
437 |
if name not in old_globals or val != old_globals[name]: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
438 |
new_globals[name] = val |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
439 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
440 |
if True in [isinstance(val, UNPICKLABLE_TYPES) |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
441 |
for val in new_globals.values()]: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
442 |
# this statement added an unpicklable global. store the statement and |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
443 |
# the names of all of the globals it added in the unpicklables. |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
444 |
session.add_unpicklable(statement, new_globals.keys()) |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
445 |
logging.debug('Storing this statement as an unpicklable.') |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
446 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
447 |
else: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
448 |
# this statement didn't add any unpicklables. pickle and store the |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
449 |
# new globals back into the datastore. |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
450 |
for name, val in new_globals.items(): |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
451 |
if not name.startswith('__'): |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
452 |
session.set_global(name, val) |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
453 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
454 |
finally: |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
455 |
sys.modules['__main__'] = old_main |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
456 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
457 |
session.put() |
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
458 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
459 |
|
0b061d58aea3
First commit to Fossee of testapp has the basic Pykata framework on django with some specific changes to Problems model and some views to suit an exam like system
amit@thunder
parents:
diff
changeset
|
460 |