diff options
Diffstat (limited to 'cgi-bin/activities.py')
-rwxr-xr-x | cgi-bin/activities.py | 117 |
1 files changed, 104 insertions, 13 deletions
diff --git a/cgi-bin/activities.py b/cgi-bin/activities.py index 8176609..5c4f56c 100755 --- a/cgi-bin/activities.py +++ b/cgi-bin/activities.py @@ -24,6 +24,7 @@ SS = path('/library/courseware') def sftp(script, folder = None): pth = WORKPATH / 'script' subprocess.call('rm -rf ' + pth, shell=True) + subprocess.call('mkdir -p ' + WORKPATH, shell=True) fout = open(pth, 'w') fout.write(script) fout.close() @@ -36,10 +37,10 @@ def sftp(script, folder = None): srvr = serial_number[:-1] + '@schoolserver' cmd = 'sftp ' + auth + scrpt + ' ' + srvr if folder: - subprocess.call(cmd, cwd=folder, shell=True) + pid = subprocess.Popen(cmd, stdout=subprocess.PIPE, cwd=folder, shell=True) else: - subprocess.call(cmd, shell=True) - return 0 + pid = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True) + return pid.communicate()[0] def getNick(): """ Returns nick from Sugar """ @@ -58,12 +59,12 @@ def getInstalled(subject): milestones.remove('karma') return milestones -def getEntries(subject, grade, milestone): +def getEntries(subject, course, milestone): pth = path('content') /subject if len(milestone) > 0: fpth = pth / milestone / 'activities.js' else: - fpth = pth / 'activities_'+grade+'.js' + fpth = pth / course fin = open(fpth,'r') txt = fin.read() fin.close() @@ -77,12 +78,12 @@ def getEntries(subject, grade, milestone): continue return entries -def setEntries(subject, grade, milestone, entries): +def setEntries(subject, course, milestone, entries): pth = path('content') /subject if len(milestone) > 0: fpth = pth / milestone / 'activities.js' else: - fpth = pth / 'activities_'+grade+'.js' + fpth = pth / course fin = open(fpth,'r') txt = fin.read() fin.close() @@ -93,10 +94,6 @@ def setEntries(subject, grade, milestone, entries): fout = open(fpth,'w') fout.write(txtout) fout.close() - if len(milestone) < 1 and pth / 'activities.js'.exists(): - fout = open(pth / 'activities.js','w') - fout.write(txtout) - fout.close() def getMilestones(subject, grade): milestones = getEntries(subject,grade, "") @@ -112,7 +109,7 @@ def setMilestones(subject, grade, milestones): def setActivities(subject, milestone, activities): setEntries(subject, 0, milestone, activities) -def fetchMilestone(subject, grade, milestone): +def fetchMilestone(subject, milestone): if USB.exists(): #get from usb drive pth = USB / subject cmd = 'cp -r ' + pth / milestone + '.msxo ' + 'content/'+ subject @@ -121,7 +118,7 @@ def fetchMilestone(subject, grade, milestone): except: print 'failed',sys.exc_info()[:2] else: #get from schoolserver - folder = 'content/'+ subject + folder = path('content') / subject pth = SS / subject script = 'cd ' + str(pth) + '\nget ' + milestone + '.msxo' result = sftp(script, folder) @@ -141,3 +138,97 @@ def getActivitiesJs(subject): pth = SS / subject script = 'cd ' + str(pth) + '\nget activities*' result = sftp(script, folder) + +def getSubjects(): + if USB.exists(): #get from usb drive + pth = USB / 'subjects.js' + cmd = 'cp -r ' + pth + ' ' + 'content/' + subprocess.call(cmd,shell=True) + else: #get from schoolserver + folder = 'content/' + pth = SS + script = 'cd ' + str(pth) + '\nget subjects.js' + result = sftp(script, folder) + +def lsFile(path,filename): + if USB.exists(): #get from usb drive + pth = USB / path / filename + cmd = 'ls ' + pth + ' ' + pid = subprocess.Popen(cmd,stdout=PIPE,shell=True) + pid.wait() + result = pid.communicate() + else: + pth = SS + script = 'cd ' + str(pth) + '\nls '+filename + log = open('/tmp/logls','w') + print >> log,'pth',pth,'script',script + result = sftp(script) + print >> log,'result',result + log.close() + return result + +def getFile(subject,filename): + log = open('/tmp/loggetfile','w') + if USB.exists(): #get from usb drive + pth = USB / subject / filename + cmd = 'cp -r ' + pth + ' ' + tgtpth + log = open('/tmp/loggetfile','w') + print >> log, 'usb',cmd + pid = subprocess.Popen(cmd,shell=True) + pid.wait() + (result,err) = pid.communicate() + else: #get from schoolserver + print >> log, 'params', subject, filename + pth = SS / subject + if filename.find('*') > -1: + script = 'cd ' + str(pth) + '\nmget ' + filename + else: + script = 'cd ' + str(pth) + '\nget ' + filename + print >> log, 'sftp', pth, script + log.close() + result = sftp(script, path('content') / subject) + log = open('/tmp/loggetfile1','w') + print >> log,'sftp result', result + print >> log,'getFile done' + log.close() + return result + +def _getParam(txt): + pos1 = txt.find('var =') + pos2 = txt.find('=') + key = txt[pos1+5:pos2].strip() + value = txt[pos2+1:-1].strip() + value = value.replace("'","") + return(key,value) + +class Config(): + def __init__(self): + fin = open('content/karma/js/config.js','r') + txt = fin.read() + fin.close() + txtout = txt + lines = txt.split('\n') + config = {} + for line in lines: + (rkey,rvalue) = _getParam(line) + if len(rkey)>0: + config[rkey] = rvalue + self.config = config + + def setConfig(self, key, value): + self.config[key]= str(value) + + def getConfig(self, key): + try: + return self.config[key] + except: + return None + + def saveConfig(self): + txtout = '' + for key in self.config.keys(): + txtout = txtout + 'var ' + key + " = '" + self.config[key] + "';\n" + fout = open('content/karma/js/config.js','w') + fout.write(txtout) + fout.close() + |