def post(self): nodes = [(n.node_name, n.node_desc) for n in self.db.query(models.TrNode)] products = [(p.id,p.product_name) for p in self.db.query(models.TrProduct)] form = operator_form.operator_add_form(nodes,products) if not form.validates(source=self.get_params()): return self.render("base_form.html", form=form) if self.db.query(models.TrOperator.id).filter_by(operator_name=form.d.operator_name).count() > 0: return self.render("base_form.html", form=form, msg=u"操作员已经存在") operator = models.TrOperator() operator.operator_name = form.d.operator_name operator.operator_pass = md5(form.d.operator_pass.encode()).hexdigest() operator.operator_type = 1 operator.operator_desc = form.d.operator_desc operator.operator_status = form.d.operator_status self.db.add(operator) self.add_oplog(u'新增操作员信息:%s' % utils.safeunicode(operator.operator_name)) for node in self.get_arguments("operator_nodes"): onode = models.TrOperatorNodes() onode.operator_name = form.d.operator_name onode.node_name = node self.db.add(onode) for product_id in self.get_arguments("operator_products"): oproduct = models.TrOperatorProducts() oproduct.operator_name = form.d.operator_name oproduct.product_id = product_id self.db.add(oproduct) for path in self.get_arguments("rule_item"): item = permit.get_route(path) if not item: continue rule = models.TrOperatorRule() rule.operator_name = operator.operator_name rule.rule_name = item['name'] rule.rule_path = item['path'] rule.rule_category = item['category'] self.db.add(rule) self.db.commit() for rule in self.db.query(models.TrOperatorRule).filter_by(operator_name=operator.operator_name): permit.bind_opr(rule.operator_name, rule.rule_path) self.redirect("/admin/operator",permanent=False)
def get(self): nodes = [(n.node_name, n.node_desc) for n in self.db.query(models.TrNode)] products = [(p.id,p.product_name) for p in self.db.query(models.TrProduct) ] self.render("opr_form.html", form=operator_form.operator_add_form(nodes,products),rules=[])