~azzar1/unity/add-show-desktop-key

« back to all changes in this revision

Viewing changes to bin/ivle-addexercise

  • Committer: William Grant
  • Date: 2010-02-23 08:08:27 UTC
  • Revision ID: grantw@unimelb.edu.au-20100223080827-wklsx122pcw79wi7
Reject off-site non-GET requests.

Show diffs side-by-side

added added

removed removed

Lines of Context:
20
20
 
21
21
"""Script to upload an exercise file into the database"""
22
22
 
23
 
import os, sys
 
23
import os, sys, traceback
24
24
import xml.dom.minidom as minidom
25
25
 
 
26
from ivle.config import Config
26
27
from ivle.database import Exercise, TestSuite, TestCase, TestSuiteVar, TestCasePart, get_store
27
28
 
28
29
class XMLMalformedError(Exception):
61
62
    cases = []
62
63
    case_num = 0
63
64
    for case_node in suite_node.getElementsByTagName('function'):
 
65
        cases.append(add_test_case(case_node, case_num, store))
64
66
        case_num += 1
65
 
        cases.append(add_test_case(case_node, case_num, store))
66
67
 
67
68
    ## ALLOWED TAGS ##
68
69
    # stdin     - Stdin for the suite - Unique - Text inside element
152
153
            filename = child_node.getAttribute('name')
153
154
            if filename == "":
154
155
                raise XMLMalformedException('file tag must have names')
155
 
            parts.append(add_part(store, element_type, test_type, data,
 
156
            parts.append(add_part(store, part_type, test_type, data,
156
157
                                        filename))
157
158
            
158
159
        elif child_node.tagName in allowed_parts:
175
176
xmlfile = sys.argv[1]
176
177
 
177
178
def add_exercise(xmlfile):
 
179
    # Skip existing ones.
 
180
    if store.find(Exercise, id=unicode(xmlfile)).count():
 
181
        return
 
182
 
 
183
    print "Adding exercise", xmlfile
178
184
    try:
179
185
        filedom = minidom.parse(xmlfile)
180
186
    except IOError, e:
215
221
        elif child.tagName == 'desc':
216
222
            description = getTextData(child)
217
223
 
218
 
    if solution is None:
219
 
        raise XMLMalformedError("ivle-addexercise: error parsing XML: No solution given")
220
 
    if len(test_suite_nodes) == 0:
221
 
        raise XMLMalformedError("ivle-addexercise: error parsing XML: No Tests Given!")
222
 
 
223
 
    store = get_store()
224
224
    new_exercise = Exercise()
225
225
    new_exercise.id = unicode(xmlfile)
226
226
    new_exercise.name = exercisename
238
238
 
239
239
    store.add(new_exercise)
240
240
    store.commit()
241
 
    
 
241
 
 
242
store = get_store(Config())
 
243
 
242
244
xmlfiles = sys.argv[1:]
243
245
for xmlfile in xmlfiles:
244
 
    print "Adding exercise", xmlfile
245
 
    #try:
246
 
    add_exercise(xmlfile)
247
 
    #except Exception, e:
248
 
    #    print "ERROR: Could not add file", xmlfile
249
 
    #    print e.stacktrace()
 
246
    try:
 
247
        add_exercise(xmlfile)
 
248
    except Exception, e:
 
249
        print "ERROR: Could not add file", xmlfile