Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/cgi-bin/activities.py
diff options
context:
space:
mode:
Diffstat (limited to 'cgi-bin/activities.py')
-rwxr-xr-xcgi-bin/activities.py117
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()
+