mirror of
				https://github.com/avatao-content/baseimage-tutorial-framework
				synced 2025-11-04 13:32:56 +00:00 
			
		
		
		
	Refactor handling of working directory for SourceCodeEventHandler
This commit is contained in:
		@@ -2,8 +2,10 @@ from source_code_event_handler import SourceCodeEventHandler
 | 
			
		||||
from terminado_event_handler import TerminadoEventHandler
 | 
			
		||||
from tornado.ioloop import IOLoop
 | 
			
		||||
 | 
			
		||||
from tfw.config.envvars import WEBIDE_WD
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
if __name__ == '__main__':
 | 
			
		||||
    anchor_webide = SourceCodeEventHandler('anchor_webide', 'login_projectdir', 'login')
 | 
			
		||||
    anchor_webide = SourceCodeEventHandler('anchor_webide', WEBIDE_WD, 'login')
 | 
			
		||||
    anchor_terminado = TerminadoEventHandler('anchor_terminado', 'terminado')
 | 
			
		||||
    IOLoop.instance().start()
 | 
			
		||||
 
 | 
			
		||||
@@ -1,9 +1,7 @@
 | 
			
		||||
from shutil import copy, rmtree, copytree
 | 
			
		||||
from os.path import splitext, isfile, join, relpath
 | 
			
		||||
from glob import glob
 | 
			
		||||
 | 
			
		||||
from tfw.util import SupervisorMixin
 | 
			
		||||
from tfw.config import LOGIN_APP_DIR
 | 
			
		||||
from tfw.event_handler_base import EventHandlerBase
 | 
			
		||||
 | 
			
		||||
from tfw.config.logs import logging
 | 
			
		||||
@@ -11,10 +9,8 @@ log = logging.getLogger(__name__)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class FileManager:
 | 
			
		||||
    def __init__(self, source_directory, working_directory, selected_file=None):
 | 
			
		||||
        self._sourcedir = source_directory
 | 
			
		||||
    def __init__(self, working_directory, selected_file=None):
 | 
			
		||||
        self._workdir = working_directory
 | 
			
		||||
        self._reload_files()
 | 
			
		||||
        self.filename = selected_file or self._relpath(self.files[0])
 | 
			
		||||
        self.language = map_file_extension_to_language(self.filename)
 | 
			
		||||
 | 
			
		||||
@@ -44,15 +40,11 @@ class FileManager:
 | 
			
		||||
    def _relpath(self, filename):
 | 
			
		||||
        return relpath(self._filepath(filename), start=self._workdir)
 | 
			
		||||
 | 
			
		||||
    def _reload_files(self):
 | 
			
		||||
        rmtree(self._workdir, ignore_errors=True)
 | 
			
		||||
        copytree(self._sourcedir, self._workdir)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class SourceCodeEventHandler(EventHandlerBase, SupervisorMixin):
 | 
			
		||||
    def __init__(self, anchor, directory, process_name=None, selected_file=None):
 | 
			
		||||
        super().__init__(anchor)
 | 
			
		||||
        self.filemanager = FileManager(directory, LOGIN_APP_DIR, selected_file=selected_file)
 | 
			
		||||
        self.filemanager = FileManager(directory, selected_file=selected_file)
 | 
			
		||||
        self.process_name = process_name
 | 
			
		||||
 | 
			
		||||
        self.commands = {
 | 
			
		||||
@@ -61,10 +53,6 @@ class SourceCodeEventHandler(EventHandlerBase, SupervisorMixin):
 | 
			
		||||
            'select': self.select
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        # Supervisor needs these to run the login program
 | 
			
		||||
        copy('source_code_server/server.py', LOGIN_APP_DIR)
 | 
			
		||||
        copy('source_code_server/users.db', LOGIN_APP_DIR)
 | 
			
		||||
 | 
			
		||||
    def read(self, data):
 | 
			
		||||
        data['filename'] = self.filemanager.filename
 | 
			
		||||
        data['content'] = self.filemanager.file_contents
 | 
			
		||||
 
 | 
			
		||||
@@ -1,9 +1,10 @@
 | 
			
		||||
import json
 | 
			
		||||
 | 
			
		||||
import json, sys
 | 
			
		||||
from tornado.ioloop import IOLoop
 | 
			
		||||
from tornado.web import RequestHandler, Application
 | 
			
		||||
 | 
			
		||||
from tfw.config import LOGIN_APP_PORT
 | 
			
		||||
from tfw.config import LOGIN_APP_PORT, WEBIDE_WD
 | 
			
		||||
 | 
			
		||||
sys.path.append(WEBIDE_WD)
 | 
			
		||||
from login_component import authorize_login
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user