Beispiel #1
0
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)
Beispiel #3
0
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
Beispiel #4
0
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
Beispiel #5
0
    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()
Beispiel #6
0
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()
Beispiel #7
0
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)