Exemplo n.º 1
0
def main():
	import time
	t = time.strftime('%X %x %Z')
	log_message('package_local.py started at ' + str(t))
	msg = 'package local completed'
	ret = package_local()
	if ret == -1:
		msg = 'package local failed'
	log_message('package_local.py returned ' + str(ret))
	print msg
Exemplo n.º 2
0
def cleanup_local(course):
    log_message('cleanup_local enter')
    target_file_name = course['CourseFileName']
    target_file_name = os.path.join(TARGET_BASE, target_file_name)
    if os.path.isfile(target_file_name):
        os.remove(target_file_name)
    else:
        print target_file_name, ' does not exist '
    log_message('cleanup_local exit')
    return True
Exemplo n.º 3
0
def cleanup_local(course):
	log_message('cleanup_local enter')
	target_file_name = course['CourseFileName']
	target_file_name = os.path.join(TARGET_BASE, target_file_name)
	if os.path.isfile(target_file_name):
		os.remove(target_file_name)
	else:
		print target_file_name, ' does not exist '
	log_message('cleanup_local exit')
	return True
Exemplo n.º 4
0
def main():
    import time
    t = time.strftime('%X %x %Z')
    log_message('package_local.py started at ' + str(t))
    msg = 'package local completed'
    ret = package_local()
    if ret == -1:
        msg = 'package local failed'
    log_message('package_local.py returned ' + str(ret))
    print msg
Exemplo n.º 5
0
def copy_remote_to_local():
	log_message('copy_remote_to_local enter')
	ret = -1
	student_id = read_student_id()
	if student_id:
		local_paths = get_local_course_paths(student_id)
		remote_paths = get_remote_course_paths(student_id)
		if local_paths and remote_paths:
			ret = copy_files(remote_paths, local_paths)
	log_message('copy_remote_to_local exit')
	return ret
Exemplo n.º 6
0
def find_my_dir_path():
 	log_message('find_my_dir_path enter')
 	file_path = sys.argv[0]
 	log_message('sys.argv[0] file_path ' + file_path)
 	if os.path.islink(file_path):
 		file_path = os.readlink(file_path)
 	file_path = os.path.realpath(file_path)
 	log_message('sys.argv[0] real file_path ' + file_path)
 	dir_path = os.path.dirname(file_path)
 	log_message('dir_path ' + dir_path)
 	log_message('find_my_dir_path exit')
 	return dir_path 
Exemplo n.º 7
0
def get_relative_file_paths_in_dir(dir_path):
	log_message('get_relative_file_paths_in_dir enter')
	relative_file_paths = []
	for root, dirs, files in os.walk(dir_path):
		rel_root = root.replace(dir_path, '')
		if rel_root and len(rel_root) > 0:
			if rel_root[0] == '/':
				rel_root = rel_root[1:]
			if rel_root:
				for file_ in files:
					relative_file_path = os.path.join(rel_root, file_)
					# log_message('get_relative_file_paths_in_dir adding relative_file_path=' + str(relative_file_path))
					relative_file_paths.append(relative_file_path)
	log_message('get_relative_file_paths_in_dir exit')
	return relative_file_paths
Exemplo n.º 8
0
def get_relative_file_paths_in_dir(dir_path):
    log_message('get_relative_file_paths_in_dir enter')
    relative_file_paths = []
    for root, dirs, files in os.walk(dir_path):
        rel_root = root.replace(dir_path, '')
        if rel_root and len(rel_root) > 0:
            if rel_root[0] == '/':
                rel_root = rel_root[1:]
            if rel_root:
                for file_ in files:
                    relative_file_path = os.path.join(rel_root, file_)
                    # log_message('get_relative_file_paths_in_dir adding relative_file_path=' + str(relative_file_path))
                    relative_file_paths.append(relative_file_path)
    log_message('get_relative_file_paths_in_dir exit')
    return relative_file_paths
Exemplo n.º 9
0
def package_local():
	log_message('package_local enter')
	# cleanup
	for packagename in COURSE_PACKAGES:
		course = COURSE_PACKAGES[packagename]
		cleanup_local(course)
	create_tmp()
	copy_common_tmp()
	for packagename in COURSE_PACKAGES:
		course = COURSE_PACKAGES[packagename]
		cleanup_local(course)
		copy_course_tmp(course)
		package_tmp(course)
		cleanup_course_tmp(course)
	cleanup_tmp()
	log_message('package_local exit')
	return 0
Exemplo n.º 10
0
def package_local():
    log_message('package_local enter')
    # cleanup
    for packagename in COURSE_PACKAGES:
        course = COURSE_PACKAGES[packagename]
        cleanup_local(course)
    create_tmp()
    copy_common_tmp()
    for packagename in COURSE_PACKAGES:
        course = COURSE_PACKAGES[packagename]
        cleanup_local(course)
        copy_course_tmp(course)
        package_tmp(course)
        cleanup_course_tmp(course)
    cleanup_tmp()
    log_message('package_local exit')
    return 0
Exemplo n.º 11
0
def copy_common_tmp():
	log_message('copy_common_tmp enter')
	files_to_copy = []
	target_dirs = []
	files_to_copy.append(SCRIPTS_BASE)
	target_dirs.append(os.path.join(TARGET_TEMP_UPDATES, TARGET_SCRIPTS_BASE))
	files_to_copy.append(CONFIG_BASE)
	target_dirs.append(os.path.join(TARGET_TEMP_UPDATES, TARGET_CONFIG_BASE))
	for i in range(len(files_to_copy)):
		file_to_copy = files_to_copy[i]
		target_dir = target_dirs[i]
		pdir = os.path.dirname(target_dir)
		mkdirs(pdir)
		shutil.copytree(file_to_copy, target_dir)
	os.chdir(TARGET_TEMP_UPDATES)
	os.system('ln -s scripts/update_course.py "Classroom Updates"')
	os.system('chmod u+x "Classroom Updates"')
	log_message('copy_common_tmp enter')
Exemplo n.º 12
0
def copy_common_tmp():
    log_message('copy_common_tmp enter')
    files_to_copy = []
    target_dirs = []
    files_to_copy.append(SCRIPTS_BASE)
    target_dirs.append(os.path.join(TARGET_TEMP_UPDATES, TARGET_SCRIPTS_BASE))
    files_to_copy.append(CONFIG_BASE)
    target_dirs.append(os.path.join(TARGET_TEMP_UPDATES, TARGET_CONFIG_BASE))
    for i in range(len(files_to_copy)):
        file_to_copy = files_to_copy[i]
        target_dir = target_dirs[i]
        pdir = os.path.dirname(target_dir)
        mkdirs(pdir)
        shutil.copytree(file_to_copy, target_dir)
    os.chdir(TARGET_TEMP_UPDATES)
    os.system('ln -s scripts/update_course.py "Classroom Updates"')
    os.system('chmod u+x "Classroom Updates"')
    log_message('copy_common_tmp enter')
Exemplo n.º 13
0
def close_all_running_instances():
    log_message('close_all_running_instances enter')
    proc = subprocess.Popen(['ps', '-ef'], stdin=subprocess.PIPE, \
     stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
    line = proc.stdout.readline()
    success = True
    while True:
        if not line or line == '':
            break
        if re.search("libreoffice", line):
            success = False
            request_close_libreoffice()
            break
        line = proc.stdout.readline()
    proc.stdin.close()
    proc.stdout.close()
    if success:
        do_actual_remove_odt_files()
    log_message('close_all_running_instances exit')
Exemplo n.º 14
0
def internet_on():
	log_message('internet_on enter')
	ret = 0
	try:
		response = urllib2.urlopen('https://www.dropbox.com', timeout=4)
		log_message("internet_on response " + str(response))
	except:
		ret = -1
		log_message('internet_on failed!')
		log_error()
	log_message('internet_on exit')
	return ret
Exemplo n.º 15
0
def close_all_running_instances():
	log_message('close_all_running_instances enter')
	proc = subprocess.Popen(['ps', '-ef'], stdin=subprocess.PIPE, \
		stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
	line = proc.stdout.readline()
	success = True
	while True:
		if not line or line == '':
			break
		if re.search("libreoffice", line):
			success = False
			request_close_libreoffice()
			break
		line = proc.stdout.readline()
	proc.stdin.close()
	proc.stdout.close()
	if success:
		do_actual_remove_odt_files()
	log_message('close_all_running_instances exit')
Exemplo n.º 16
0
def copy_course_tmp(course):
	log_message('copy_tmp enter')
	files_to_copy = []
	target_dirs = []
	coursename = course['CourseName']
	coursecontents = course['CourseContent']
	for contentkey in coursecontents:
		contents = coursecontents[contentkey]
		for content in contents:
			content_path = os.path.join(COURSES_BASE, coursename, contentkey, content)
			files_to_copy.append(content_path)
			target_dirs.append(os.path.join(TARGET_TEMP_UPDATES, TARGET_COURSES_BASE, coursename, contentkey, content))
	for i in range(len(files_to_copy)):
		file_to_copy = files_to_copy[i]
		target_dir = target_dirs[i]
		pdir = os.path.dirname(target_dir)
		mkdirs(pdir)
		shutil.copytree(file_to_copy, target_dir)
	log_message('copy_tmp exit')
	return True
Exemplo n.º 17
0
def main():
    import time
    t = time.strftime('%X %x %Z')
    log_message('submit_course.py started at ' + str(t))
    msg = 'submit course completed successfully'
    ret = 0
    # ret = internet_on()
    if ret == -1:
        msg = 'submit course failed (no internet connection)'
    else:
        ret = 0
        # ret = restart_dropbox()
        if ret == -1:
            msg = 'submit course failed (cannot sync)'
        else:
            ret = copy_local_to_remote()
            if ret == -1:
                msg = 'submit course failed (cannot copy)'
    log_message('submit_course.py returned ' + str(ret))
    gui = TinkerAcademyMessage(msg)
    gui.show()
Exemplo n.º 18
0
def get_local_course_paths(student_id):
	log_message('get_local_course_paths enter')
	log_message('get_local_course_paths student_id='+str(student_id))
	local_base_file_path = BASE_LOCAL
	local_course_paths = get_course_paths(local_base_file_path, student_id)
	log_message('get_local_course_paths exit')
	return local_course_paths
Exemplo n.º 19
0
def get_remote_course_paths(student_id):
	log_message('get_remote_course_paths enter')
	log_message('get_remote_course_paths student_id='+str(student_id))
	remote_base_file_path = BASE_REMOTE
	remote_course_paths = get_course_paths(remote_base_file_path, student_id)
	log_message('get_remote_course_paths exit')
	return remote_course_paths
Exemplo n.º 20
0
def main():
	import time
	t = time.strftime('%X %x %Z')
	log_message('update_course.py started at ' + str(t))
	msg = 'update course completed'
	ret = 0
	# ret = internet_on()
	if ret == -1:
		msg = 'update course failed (no internet connection)'
	else:	
		ret = 0
		# ret = restart_dropbox()
		if ret == -1:
			msg = 'update course failed (cannot sync)'
		else:
			ret = copy_remote_to_local()
			if ret == -1:
				msg = 'update course failed (cannot copy)'	
	log_message('update_course.py returned ' + str(ret))
	gui = TinkerAcademyMessage(msg)
	gui.show()
	run_post_update_hook()
Exemplo n.º 21
0
def do_actual_remove_odt_files():
	student_id = read_student_id()
	local_path = BASE_LOCAL
	relative_file_paths = get_relative_file_paths_in_dir(local_path)
	rm_file_list = []
	for relative_file_path in relative_file_paths:
		if os.path.splitext(relative_file_path)[1].lower() == '.odt':
			file_path = os.path.join(local_path, relative_file_path)
			dir_path = os.path.dirname(file_path)
			file_paths = os.listdir(dir_path)
			for file_path in file_paths:
				if re.search("\.\~lock\..*\.odt\#", file_path):
					full_file_path = os.path.join(dir_path, file_path)
					rm_file_list.append(full_file_path)
	for rm_file in rm_file_list:
		log_message(' removing file ' + rm_file)
		subprocess.call(['rm', '-rf', rm_file])
	msg = 'No files had to be fixed! You can restart LibreOffice now.'
	if len(rm_file_list) > 0:
		msg = str(len(rm_file_list)) + ' files had to be fixed!. You can restart LibreOffice now.'
	gui = TinkerAcademyMessage(msg)	
	gui.show()
Exemplo n.º 22
0
def copy_course_tmp(course):
    log_message('copy_tmp enter')
    files_to_copy = []
    target_dirs = []
    coursename = course['CourseName']
    coursecontents = course['CourseContent']
    for contentkey in coursecontents:
        contents = coursecontents[contentkey]
        for content in contents:
            content_path = os.path.join(COURSES_BASE, coursename, contentkey,
                                        content)
            files_to_copy.append(content_path)
            target_dirs.append(
                os.path.join(TARGET_TEMP_UPDATES, TARGET_COURSES_BASE,
                             coursename, contentkey, content))
    for i in range(len(files_to_copy)):
        file_to_copy = files_to_copy[i]
        target_dir = target_dirs[i]
        pdir = os.path.dirname(target_dir)
        mkdirs(pdir)
        shutil.copytree(file_to_copy, target_dir)
    log_message('copy_tmp exit')
    return True
Exemplo n.º 23
0
def do_actual_remove_odt_files():
    student_id = read_student_id()
    local_path = BASE_LOCAL
    relative_file_paths = get_relative_file_paths_in_dir(local_path)
    rm_file_list = []
    for relative_file_path in relative_file_paths:
        if os.path.splitext(relative_file_path)[1].lower() == '.odt':
            file_path = os.path.join(local_path, relative_file_path)
            dir_path = os.path.dirname(file_path)
            file_paths = os.listdir(dir_path)
            for file_path in file_paths:
                if re.search("\.\~lock\..*\.odt\#", file_path):
                    full_file_path = os.path.join(dir_path, file_path)
                    rm_file_list.append(full_file_path)
    for rm_file in rm_file_list:
        log_message(' removing file ' + rm_file)
        subprocess.call(['rm', '-rf', rm_file])
    msg = 'No files had to be fixed! You can restart LibreOffice now.'
    if len(rm_file_list) > 0:
        msg = str(
            len(rm_file_list)
        ) + ' files had to be fixed!. You can restart LibreOffice now.'
    gui = TinkerAcademyMessage(msg)
    gui.show()
Exemplo n.º 24
0
def reset_minecraft():
	log_message('reset_minecraft enter')
	try:
		subprocess.call(['rm', '-rf', '/home/student/.minecraft'])
		msg = 'Minecraft reset successfully'
		gui = TinkerAcademyMessage(msg)
		gui.show()
	except:
		log_message('reset_minecraft failed!')
		log_error()
	log_message('reset_minecraft exit')
Exemplo n.º 25
0
def reset_minecraft():
    log_message('reset_minecraft enter')
    try:
        subprocess.call(['rm', '-rf', '/home/tinkeracademystudent/.minecraft'])
        msg = 'Minecraft reset successfully'
        gui = TinkerAcademyMessage(msg)
        gui.show()
    except:
        log_message('reset_minecraft failed!')
        log_error()
    log_message('reset_minecraft exit')
Exemplo n.º 26
0
def copy_local_to_remote():
    log_message('copy_local_to_remote enter')
    ret = -1
    student_id = read_student_id()
    log_message('copy_local_to_remote student_id=' + str(student_id))
    if student_id:
        local_paths = get_local_course_paths(student_id)
        remote_paths = get_remote_course_paths(student_id)
        if local_paths and remote_paths:
            ret = copy_files(local_paths, remote_paths)
    log_message('copy_local_to_remote exit')
    return ret
Exemplo n.º 27
0
def restart_dropbox():
	log_message('restart_dropbox enter')
	ret = 0
	try:
		subprocess.call(['dropbox', 'stop'])
		subprocess.call(['dropbox', 'start'])
	except:
		ret = -1
		log_message('restart_dropbox failed!')
		log_error()
	log_message('restart_dropbox exit')
	return ret
Exemplo n.º 28
0
def reset_submit():
	log_message('reset_submit enter')
	try:
		remote_student_path = get_remote_student_path()
		subprocess.call(['rm', '-rf', remote_student_path])
		msg = 'Run Course Submit Again after a few minutes!'
		gui = TinkerAcademyMessage(msg)
		gui.show()
	except:
		log_message('reset_submit failed!')
		log_error()
	log_message('reset_submit exit')
Exemplo n.º 29
0
def reset_submit():
    log_message('reset_submit enter')
    try:
        student_id = read_student_id()
        remote_student_path = get_remote_student_path(student_id)
        subprocess.call(['rm', '-rf', remote_student_path])
        msg = 'Run Course Submit Again after a few minutes!'
        gui = TinkerAcademyMessage(msg)
        gui.show()
    except:
        log_message('reset_submit failed!')
        log_error()
    log_message('reset_submit exit')
Exemplo n.º 30
0
def main():
	import time
	t = time.strftime('%X %x %Z')
	log_message('reset_submit.py started at ' + str(t))
	msg = 'Are you sure you want to reset Course Submit?'
	check_reset_submit(msg)
Exemplo n.º 31
0
def check_reset_submit(msg):
	log_message('check_reset_submit enter')
	gui = TinkerAcademyConfirmDialog(msg, confirm_files_saved_and_closed)
	gui.show()
Exemplo n.º 32
0
def confirm_files_saved_and_closed():
	log_message('confirm_files_saved_and_closed enter')
	msg = 'Have you saved all files and closed all applications?'
	gui = TinkerAcademyConfirmDialog(msg, reset_submit)
	gui.show()
Exemplo n.º 33
0
def create_tmp():
	log_message('create_tmp enter')
	mkdirs(TARGET_TEMP_BASE)
	log_message('create_tmp exit')
Exemplo n.º 34
0
def main():
	import time
	t = time.strftime('%X %x %Z')
	log_message('reset_minecraft.py started at ' + str(t))
	msg = 'Are you sure you want to reset Minecraft?'
	check_reset_minecraft(msg)
Exemplo n.º 35
0
def main():
    import time
    t = time.strftime('%X %x %Z')
    log_message('reset_submit.py started at ' + str(t))
    msg = 'Are you sure you want to reset Course Submit?'
    check_reset_submit(msg)
Exemplo n.º 36
0
def main():
	for file_ in FIX_IT_FILES:
		log_message('fix_it ' + str(file_))
		subprocess.call(['python', file_])
Exemplo n.º 37
0
def create_tmp():
    log_message('create_tmp enter')
    mkdirs(TARGET_TEMP_BASE)
    log_message('create_tmp exit')
Exemplo n.º 38
0
def confirm_fix_odt_files():
    log_message('confirm_fix_odt_files enter')
    msg = 'Do you need to fix any of the quiz files?'
    gui = TinkerAcademyConfirmDialog(msg, remove_locks_on_odt_files)
    gui.show()
    log_message('confirm_fix_odt_files exit')
Exemplo n.º 39
0
def confirm_fix_odt_files():
	log_message('confirm_fix_odt_files enter')
	msg = 'Do you need to fix any of the quiz files?'
	gui = TinkerAcademyConfirmDialog(msg, remove_locks_on_odt_files)
	gui.show()
	log_message('confirm_fix_odt_files exit')
Exemplo n.º 40
0
def check_reset_minecraft(msg):
	log_message('check_reset_minecraft enter')
	gui = TinkerAcademyConfirmDialog(msg, reset_minecraft)
	gui.show()
Exemplo n.º 41
0
def confirm_files_saved_and_closed():
    log_message('confirm_files_saved_and_closed enter')
    msg = 'Have you saved all files and closed all applications?'
    gui = TinkerAcademyConfirmDialog(msg, reset_submit)
    gui.show()
Exemplo n.º 42
0
def check_reset_minecraft(msg):
    log_message('check_reset_minecraft enter')
    gui = TinkerAcademyConfirmDialog(msg, reset_minecraft)
    gui.show()
Exemplo n.º 43
0
def check_reset_submit(msg):
    log_message('check_reset_submit enter')
    gui = TinkerAcademyConfirmDialog(msg, confirm_files_saved_and_closed)
    gui.show()
Exemplo n.º 44
0
def main():
    import time
    t = time.strftime('%X %x %Z')
    log_message('reset_minecraft.py started at ' + str(t))
    msg = 'Are you sure you want to reset Minecraft?'
    check_reset_minecraft(msg)
Exemplo n.º 45
0
def update_submit():
	log_message('update_submit enter')
	try:
		student_id = read_student_id()
		log_message('update_submit student_id='+str(student_id))
		if student_id:
			log_message('update_submit processing, student_id='+str(student_id))
			other_remote_student_paths = get_other_remote_student_paths(student_id)
			remote_student_path = get_remote_student_path(student_id)
			subprocess.call(['dropbox', 'exclude', 'remove', remote_student_path])
			for other_remote_student_path in other_remote_student_paths:
				subprocess.call(['dropbox', 'exclude', 'add', other_remote_student_path])
		else:
			log_message('update_submit skipping, invalid student_id='+str(student_id))
	except:
		log_message('update_submit failed!')
		log_error()
	log_message('update_submit exit')
Exemplo n.º 46
0
def main():
    for file_ in FIX_IT_FILES:
        log_message('fix_it ' + str(file_))
        subprocess.call(['python', file_])