def common_edit(DynamicModel, form, view): id = request.args.get('id', '') if id: # 查询 model = DynamicModel.query.get(id) if model: if request.method == 'GET': dict = model_util.get_model_colums_dict(model) for key, value in dict.items(): if key in form.__dict__ and value: field = getattr(form, key) field.data = dict.get(key) setattr(form, key, field) # 修改 if request.method == 'POST': if form.validate_on_submit(): for field in form: if field.type == 'FileField': file = request.files[field.name] if file.filename: file.save( os.path.join(config.read("UPLOAD_PATH"), file.filename)) setattr(model, field.name, file.filename) else: setattr(model, field.name, field.data) db.session.add(model) db.session.commit() flash('修改成功') else: model_util.flash_errors(form) else: # 新增 if form.validate_on_submit(): dict = model_util.get_model_colums_dict(DynamicModel) conditions = [] for field in form: if field.name in dict.keys(): if field.type == "FileField": file = request.files[field.name] if file.filename: file.save( os.path.join(config.read("UPLOAD_PATH"), file.filename)) conditions.append("{}='{}'".format( field.name, file.filename)) else: conditions.append("{}='{}'".format( field.name, field.data)) fields = ",".join(conditions) m = eval("{}({})".format(DynamicModel.__name__, fields), None, None) db.session.add(m) db.session.commit() flash('保存成功') else: model_util.flash_errors(form) return render_template(view, form=form, current_user=current_user)
def get_settings(): config = configparser.ConfigParser() config.read("app.config") Image, Confidence, Data = config['IMAGE'], config['CONFIDENCE'], config[ "DATA"] w, h, r, R = int(Image["width in px"]), int(Image["height in px"]), float( Image["ratio in px/m"]), float(Image["Radius in m"]) data_path, static_path = Data["data_path"], Data["static_path"] model_path = Confidence["model_path"] loaded_model = pickle.load(open(Confidence["model_path"], 'rb')) return config.Settings(w=w, h=h, r=r, R=R, data_path=data_path, static_path=static_path, loaded_model=loaded_model)
def isAuthenticated(username, password): global userdata if userdata == None: with open("./app/userdata.conf") as config: userdata = eval(config.read()) try: if userdata[username] == password: return True except Exception: return False
def read_config(): global config, config_file config_file = config.read("config.ini")[0] Creds = namedtuple("Creds", ["email", "password", "otp", "token", "refresh_token"]) db_cfg = Config().query.one() creds = Creds(email=config['Credentials']["email"], password=config['Credentials']["password"], otp=config['Credentials']["otp"], token=db_cfg.auth_token, refresh_token=db_cfg.refresh_token) return creds
def open(self, *args, **kwargs): logger.info("Websocket 打开") if args: server_id = int(args[0]) server = Server.query.get(server_id) # if server.passwd: # self.ssh = SSH(server.host, server.port, # server.user, server.passwd) # elif server.perm: # keyfile = os.path.join(config.read("UPLOAD_PATH"), server.perm) # self.ssh = SSH(server.ip, server.port, # server.user, keyfile=keyfile) if server.perm: keyfile = os.path.join(config.read("UPLOAD_PATH"), server.perm) else: keyfile = None self.ssh = SSH(server.ip, server.port, server.user, server.passwd, keyfile, server.passcode) t = threading.Thread(target=self._reading) t.setDaemon(True) t.start()
import os app = WSGIContainer(app) # term_manager = SingleTermManager(shell_command=['bash']) # print('11') # print(term_manager.extra_env) handlers = [ (r"/websocket/(.*)", SshHandler,{}),# {'term_manager': term_manager}), # (r"/ssh", StaticFileHandler, {'path': 'index.html'}), # (r"/(.*)", tornado.web.StaticFileHandler, {'path': '.'}), (r"/(.*)", FallbackHandler, dict(fallback=app)) ] application = Application(handlers,debug=True) # application.listen(5000) if __name__ == "__main__": sp = config.read("secure_path") if sp: # ssl_ctx = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH) # ssl_ctx.load_cert_chain(os.path.join(config.read("secure_path"), "mydomain.crt"), # os.path.join(config.read("secure_path"), "mydomain.key")) httpserver = HTTPServer(application,ssl_options={ "certfile": os.path.join(config.read("secure_path"), "1_home.mixoo.cn_bundle.crt"), "keyfile": os.path.join(config.read("secure_path"), "2_home.mixoo.cn.key"), }) else: httpserver = HTTPServer(application) httpserver.listen(int(config.read("PORT"))) IOLoop.current().start()
def common_edit(DynamicModel, form, view, pk="id", **context): try: id = request.args.get(pk, '') if id: # 查询 model = DynamicModel.query.get(id) if model: if request.method == 'GET': dict = model_util.get_model_colums_dict(model) for key, value in dict.items(): if key in form.__dict__ and value: field = getattr(form, key) if field.type == "SelectMultipleField": field.data = [x.id for x in dict.get(key)] else: field.data = dict.get(key) setattr(form, key, field) # 修改 if request.method == 'POST': if form.validate_on_submit(): for field in form: logger.debug(f"修改字段:{field}的类型:{field.type}") if field.type == 'FileField': file = request.files[field.name] if file.filename: file.save( os.path.join( config.read("UPLOAD_PATH"), file.filename)) setattr(model, field.name, file.filename) elif field.type == 'BooleanField': setattr(model, field.name, bool(field.data)) elif field.type == "SelectMultipleField": # 获取关联对象类型 for rel in isp(model).mapper.relationships: if str(rel).split('.')[1].lower( ) == field.name.lower(): mapper = rel.mapper.class_ value = [ mapper.query.get(item) for item in field.data ] logger.debug( f"设置字段:{field.name}多选值:{value}") setattr(model, field.name, value) break else: setattr(model, field.name, field.data) db.session.add(model) db.session.commit() flash('修改成功') else: model_util.flash_errors(form) else: # 新增 if form.validate_on_submit(): dict = model_util.get_model_colums_dict(DynamicModel) conditions = [] for field in form: if field.name in dict.keys(): if field.type == "FileField": file = request.files.get(field.name, None) if file and file.filename: file.save( os.path.join(config.read("UPLOAD_PATH"), file.filename)) conditions.append("{}='{}'".format( field.name, file.filename)) elif field.type == 'BooleanField': conditions.append(f"{field.name}={field.data}") # [TODO] 创建SelectMultipleField elif field.type == "SelectMultipleField": # 获取关联对象类型 for k, v in DynamicModel.__dict__.items(): if k == field.name: conditions.append( f"{field.name}={[v.class_.query.get(i) for i in field.data]}" ) break # for rel in isp(model).mapper.relationships: # if str(rel).split('.')[1].lower() == field.name.lower(): # mapper = rel.mapper.class_ # value = [ # mapper.query.get(item) for item in field.data] # logger.debug( # f"设置字段:{field.name}多选值:{value}") # setattr(model, field.name, value) # break else: conditions.append("{}='{}'".format( field.name, field.data)) fields = ",".join(conditions) # [FIXME] eval should not use m = eval("{}({})".format(DynamicModel.__name__, fields), None, None) db.session.add(m) db.session.commit() flash('保存成功') else: model_util.flash_errors(form) except Exception as err: logger.error(f"通用模型添加或修改异常:{traceback.format_exc()}") return render_template(view, form=form, current_user=current_user, **context)