def delete(self, id_): self.set_header("Content-Type", "text/json;charset=utf-8") meta = DataTableModule.__entity_mapping__.get(id_) if not meta: self.set_status(403, "Error!") entity = import_object(meta["name"]) custom_filter = ObjectPool.datatable_provider.get(meta["name"]) custom_filter_obj = None if custom_filter: custom_filter_obj = custom_filter() valid_msg = "" message = dict() message["flag"] = "delete" rec_id = self.get_argument("id") sf = SessionFactory.new() cur_row = sf.query(entity).get(rec_id) if hasattr(custom_filter_obj, "before_delete"): valid_msg = custom_filter_obj.before_delete(cur_row, sf, self) if not valid_msg: sf.delete(cur_row) sf.commit() if hasattr(custom_filter_obj, "after_delete"): custom_filter_obj.after_delete(cur_row, sf, self) message["success"] = True message["msg"] = "Deleted" self.write(Utils.encode(message)) else: message["success"] = False message["msg"] = valid_msg self.write(Utils.encode(message))
def get(self, id_): cls = ObjectPool.autocomplete_keys.get(id_) self.set_header("Content-Type", "text/json;charset=utf-8") if cls: obj = cls() if hasattr(obj, "text"): text = obj.text(self.get_argument("id"), self) self.write(Utils.encode([text])) else: self.write(Utils.encode([""]))
def post(self, id_): cls = ObjectPool.autocomplete_keys.get(id_) self.set_header("Content-Type", "text/json;charset=utf-8") if cls: obj = cls() if hasattr(obj, "data"): search_word = self.get_argument("search_word") data = obj.data(search_word, self) self.write(Utils.encode(data)) else: self.write(Utils.encode(list()))
def update(self, id_): message = dict() self.set_header("Content-Type", "text/json;charset=utf-8") meta = DataTableModule.__entity_mapping__.get(id_) if not meta: self.set_status(403, "Error!") entity = import_object(meta["name"]) custom_filter = ObjectPool.datatable_provider.get(meta["name"]) custom_filter_obj = None if custom_filter: custom_filter_obj = custom_filter() rec_id = self.get_argument("id") valid_msg = "" if not rec_id: message["flag"] = "add" sf = SessionFactory.new() obj = self.wrap_entity(entity()) if hasattr(custom_filter_obj, "before_add"): valid_msg = custom_filter_obj.before_add(obj, sf, self) # 检查没有数据上的问题才执行保存动作 if not valid_msg: sf.add(obj) sf.commit() if hasattr(custom_filter_obj, "after_add"): custom_filter_obj.after_add(obj, sf, self) message["success"] = True message["msg"] = obj.id self.write(Utils.encode(message)) else: message["success"] = False message["msg"] = valid_msg self.write(Utils.encode(message)) else: message["flag"] = "update" sf = SessionFactory.new() cur_row = sf.query(entity).get(rec_id) self.wrap_entity(cur_row) if hasattr(custom_filter_obj, "before_modify"): valid_msg = custom_filter_obj.before_modify(cur_row, sf, self) if not valid_msg: sf.commit() if hasattr(custom_filter_obj, "after_modify"): custom_filter_obj.after_modify(cur_row, sf, self) message["success"] = True message["msg"] = "Updated" self.write(Utils.encode(message)) else: message["success"] = False message["msg"] = valid_msg self.write(Utils.encode(message))
def update(self, id_): message = dict() message["success"] = False message["msg"] = "Miss DataProvider!" self.set_header("Content-Type", "text/json;charset=utf-8") name = DataViewModule.__view_mapping__.get(id_) if not name: self.set_status(403, "Error!") custom_data_provider = ObjectPool.dataview_provider.get(name) obj = None if custom_data_provider: obj = custom_data_provider() rec_id = self.get_argument("id") if not rec_id: message["flag"] = "add" if hasattr(obj, "add"): msg = obj.add(self) if type(msg) == int: message["success"] = True message["msg"] = msg else: message["success"] = False message["msg"] = msg else: message["flag"] = "update" if hasattr(obj, "modify"): msg = obj.modify(rec_id, self) if msg: message["success"] = False message["msg"] = msg else: message["success"] = True message["msg"] = "Updated" self.write(Utils.encode(message))
def get(self, *args, **kwargs): insp = reflection.Inspector.from_engine(SessionFactory.__engine__) context_data = dict() context_data["entity_map"] = Utils.encode(SessionFactory.entitys) table_cols = dict() table_cols_text = dict() for table_name in SessionFactory.entitys: cols_def = insp.get_columns(table_name) cols = list() for col_def in cols_def: cols.append(col_def["name"]) table_cols[table_name] = cols table_cols_text[table_name] = Utils.encode(cols) context_data["table_cols"] = table_cols context_data["table_cols_text"] = table_cols_text return self.render("workbench/dev.widgets.html", context=context_data)
def post(self, key): data_type = self.get_argument("__data_type__") if data_type == "json": self.set_header("Content-Type", "text/json;charset=utf-8") elif data_type == "script": self.set_header("Content-Type", "text/javascript;charset=utf-8") elif data_type == "html": self.set_header("Content-Type", "text/html;charset=utf-8") if not key: self.write("alert('Ajax key require.')") else: cls = ObjectPool.ajax.get(key) if not cls: self.write("Class not found.") else: method_name = self.get_argument("__method_name__") obj = cls() if hasattr(obj, method_name): setattr(obj, "request", self) setattr(obj, "__params__", self.wrap_params_to_dict()) setattr(obj, "param", lambda key_: obj.__params__.get(key_)) func = getattr(obj, method_name) result = func() if data_type == "json": self.write(Utils.encode(result)) else: self.write(result)
def req(self, key, method_name): """ Url: localhost/api/key/method :param key: example: com.tinyms.category.v2 :return: example: @api("com.tinyms.category.v2") class ApiTest(): def create(): prama1 = self.param("prama1"); req = self.request # IRequest client side: $.post("/api/com.tinyms.category.v2/create",params,func,"json"); """ self.set_header("Content-Type", "text/json;charset=utf-8") if not key: self.write("Key require.") else: cls = ObjectPool.api.get(key) if not cls: self.write("Object not found.") else: obj = cls() if hasattr(obj, method_name): setattr(obj, "request", self) setattr(obj, "body", self.request.body) setattr(obj, "files", self.request.files) setattr(obj, "__params__", self.wrap_params_to_dict()) setattr(obj, "param", lambda key: obj.__params__.get(key)) func = getattr(obj, method_name) result = func() self.write(Utils.encode(result))
def post(self, *args, **kwargs): self.set_header("Content-Type", "text/json;charset=utf-8") #build path upload_path = "/upload/%s/%s" % (Utils.format_year_month(Utils.current_datetime()), Utils.current_datetime().date().day) path = self.get_webroot_path() + upload_path Utils.mkdirs(path) files = self.request.files items = list() for key in files: item = dict() meta = files[key] file_name = meta["filename"] ext_name = os.path.splitext(file_name) name_ = Utils.uniq_index() if not ext_name: new_file_name = name_ else: new_file_name = "%s.%s" % (name_, ext_name) save_path = "%s/%s" % (path, new_file_name) with open(save_path, "wb") as uploader: uploader.write(meta["body"]) item["local_name"] = file_name item["ext_name"] = ext_name item["upload_path"] = "%s/%s" % (upload_path, new_file_name) item["archives_id"] = self.get_current_user() items.append(item) self.write(Utils.encode(["OK"]))
def post(self, id_, act): point = DataTableModule.__security_points__.get(id_) print(point) message = dict() if act == "list": if not self.auth({point.list}): self.write(dict()) else: self.list(id_) elif act == "view": if not self.auth({point.view}): message["success"] = False message["msg"] = "UnAuth" self.write(Utils.encode(message)) else: self.view(id_) elif act == "save": if not self.auth({point.update}): message["success"] = False message["msg"] = "UnAuth" self.write(Utils.encode(message)) else: self.update(id_) elif act == "saveNext": if not self.auth({point.update}): message["success"] = False message["msg"] = "UnAuth" self.write(Utils.encode(message)) else: self.update(id_) elif act == "delete": if not self.auth({point.delete}): message["success"] = False message["msg"] = "UnAuth" self.write(Utils.encode(message)) else: self.delete(id_)
def view(self, id_): message = dict() message["success"] = False self.set_header("Content-Type", "text/json;charset=utf-8") meta = DataTableModule.__entity_mapping__.get(id_) if not meta: self.set_status(403, "Error!") entity = import_object(meta["name"]) rec_id = self.get_argument("id") if rec_id: sf = SessionFactory.new() item = sf.query(entity).get(rec_id) if item: message["success"] = True message["msg"] = item.dict() self.write(Utils.encode(message)) else: item = entity() message["msg"] = item.dict() self.write(Utils.encode(message)) else: item = entity() message["msg"] = item.dict() self.write(Utils.encode(message))
def view(self, id_): message = dict() message["success"] = True self.set_header("Content-Type", "text/json;charset=utf-8") name = DataViewModule.__view_mapping__.get(id_) if not name: self.set_status(403, "Error!") custom_filter = ObjectPool.dataview_provider.get(name) rec_id = self.get_argument("id") if custom_filter: custom_filter_obj = custom_filter() if hasattr(custom_filter_obj, "view"): dict_item = custom_filter_obj.view(rec_id, self) message["msg"] = dict_item self.write(Utils.encode(message)) else: message["msg"] = dict() self.write(message)
def delete(self, id_): self.set_header("Content-Type", "text/json;charset=utf-8") name = DataViewModule.__view_mapping__.get(id_) if not name: self.set_status(403, "Error!") message = dict() message["flag"] = "delete" message["success"] = False message["msg"] = "Miss DataProvider!" rec_id = self.get_argument("id") custom_filter = ObjectPool.dataview_provider.get(name) if custom_filter: custom_filter_obj = custom_filter() if hasattr(custom_filter_obj, "delete"): msg = custom_filter_obj.delete(rec_id, self) if msg: message["success"] = False message["msg"] = msg else: message["success"] = True message["msg"] = "Deleted" self.write(Utils.encode(message))