Add base.py, command_line.py and five other files
This commit is contained in:
		
							parent
							
								
									5153a3fcdd
								
							
						
					
					
						commit
						20e63d2d0f
					
				
							
								
								
									
										13
									
								
								base.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								base.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,13 @@ | ||||
| from sqlalchemy import create_engine | ||||
| from sqlalchemy.ext.declarative import declarative_base | ||||
| from sqlalchemy.orm import sessionmaker | ||||
| 
 | ||||
| def get_session(fil): | ||||
|   fil = 'data/store.db' | ||||
| 
 | ||||
|   engine = create_engine('sqlite:///' + fil) | ||||
|    | ||||
|   Session = sessionmaker(bind=engine) | ||||
|   return engine, Session | ||||
| 
 | ||||
| Base = declarative_base() | ||||
							
								
								
									
										76
									
								
								command_line.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										76
									
								
								command_line.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,76 @@ | ||||
| import shlex | ||||
| import inspect | ||||
| import sys | ||||
| import importlib | ||||
| 
 | ||||
| def func_supports_argcount(f, cnt): | ||||
|   argspec = inspect.getargspec(f) | ||||
|   posargs = 0 if argspec.args is None else len(argspec.args)  | ||||
|   if argspec.args[0] == 'self': | ||||
|     posargs = posargs - 1 | ||||
|   defargs = 0 if argspec.defaults is None else len(argspec.defaults) | ||||
|   varargs = 0 if argspec.varargs is None else len(argspec.varargs) | ||||
|   minargs = posargs - defargs | ||||
|   maxargs = posargs | ||||
|   if cnt < minargs: | ||||
|     return False | ||||
|   if cnt > maxargs: | ||||
|     return varargs > 0 | ||||
|   return True | ||||
|      | ||||
| 
 | ||||
| class CommandLine: | ||||
|   def __init__(self): | ||||
|     self.reloading = False | ||||
|     self.stopping = False | ||||
|    | ||||
|   def stop(self): | ||||
|     self.stopping = True | ||||
|    | ||||
|   def prompt(self): | ||||
|     return '> ' | ||||
|    | ||||
|   def handle_not_found(self, c, args): | ||||
|     print(f'command not found; {c}') | ||||
|    | ||||
|   def handle_error(self, cmd, args, e): | ||||
|     print(e) | ||||
|    | ||||
|   def handle_empty(self): | ||||
|     pass | ||||
|      | ||||
|   def do_quit(self): | ||||
|     print('byebye!') | ||||
|     self.stopping = True | ||||
|    | ||||
|      | ||||
|   def do_reload(self): | ||||
|     self.reloading = True | ||||
|        | ||||
|   def handle_cmd(self, c): | ||||
|     if c == '': | ||||
|       return self.handle_empty() | ||||
|     args = shlex.split(c) | ||||
|     cmd = args.pop(0) | ||||
|     str_handler = f'do_{cmd}' | ||||
|     if not hasattr(self, str_handler): | ||||
|       try: | ||||
|         self.handle_not_found(cmd, args) | ||||
|         return | ||||
|       except Exception as e: | ||||
|         self.handle_error(cmd, args, e) | ||||
|     handler = getattr(self, str_handler) | ||||
|     if not func_supports_argcount(handler, len(args)): | ||||
|       expect_args = ', '.join(inspect.getargspec(handler).args[1:]) | ||||
|       print('expected args: ' + expect_args) | ||||
|       return | ||||
|     try: | ||||
|       handler(*args) | ||||
|     except Exception as e: | ||||
|       self.handle_error(cmd, args, e) | ||||
|      | ||||
|   def run(self): | ||||
|     while not self.stopping and not self.reloading: | ||||
|       c = input(self.prompt()) | ||||
|       self.handle_cmd(c) | ||||
|        | ||||
							
								
								
									
										13
									
								
								models/sector.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								models/sector.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,13 @@ | ||||
| from sqlalchemy import Column, String, Integer, Date | ||||
| 
 | ||||
| from base import Base | ||||
| 
 | ||||
| 
 | ||||
| class Sector(Base): | ||||
|   __tablename__ = 'sectors' | ||||
| 
 | ||||
|   id = Column(Integer, primary_key=True) | ||||
|   symbol = Column(String) | ||||
|   magic = Column(Integer) | ||||
|   def __init__(self, symbol): | ||||
|     self.symbol = symbol | ||||
							
								
								
									
										15
									
								
								models/setting.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								models/setting.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,15 @@ | ||||
| from sqlalchemy import Column, String, Integer, Date | ||||
| 
 | ||||
| from base import Base | ||||
| 
 | ||||
| 
 | ||||
| class Setting(Base): | ||||
|   __tablename__ = 'settings' | ||||
| 
 | ||||
|   id = Column(Integer, primary_key=True) | ||||
|   name = Column(String) | ||||
|   value = Column(String) | ||||
|    | ||||
|   def __init__(self, name, value): | ||||
|     self.name = name | ||||
|     self.value = value | ||||
							
								
								
									
										13
									
								
								models/system.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								models/system.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,13 @@ | ||||
| from sqlalchemy import Column, String, Integer, Date | ||||
| 
 | ||||
| from base import Base | ||||
| 
 | ||||
| 
 | ||||
| class System(Base): | ||||
|   __tablename__ = 'systems' | ||||
| 
 | ||||
|   id = Column(Integer, primary_key=True) | ||||
|   symbol = Column(String) | ||||
|    | ||||
|   def __init__(self, symbol): | ||||
|     self.symbol = symbol | ||||
							
								
								
									
										13
									
								
								models/waypoint.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								models/waypoint.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,13 @@ | ||||
| from sqlalchemy import Column, String, Integer, Date | ||||
| 
 | ||||
| from base import Base | ||||
| 
 | ||||
| 
 | ||||
| class Waypoint(Base): | ||||
|   __tablename__ = 'waypoints' | ||||
| 
 | ||||
|   id = Column(Integer, primary_key=True) | ||||
|   symbol = Column(String) | ||||
|    | ||||
|   def __init__(self, symbol): | ||||
|     self.symbol = symbol | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Richard Bronkhorst
						Richard Bronkhorst