Example #1
0
    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_update_form(nodes, products)
        if not form.validates(source=self.get_params()):
            rules = self.db.query(models.TrOperatorRule.rule_path).filter_by(
                operator_name=form.d.operator_name)
            rules = [r[0] for r in rules]
            return self.render("base_form.html", form=form, rules=rules)
        operator = self.db.query(models.TrOperator).get(form.d.id)
        if form.d.operator_pass:
            operator.operator_pass = md5(
                form.d.operator_pass.encode()).hexdigest()
        operator.operator_desc = form.d.operator_desc
        operator.operator_status = form.d.operator_status

        self.db.query(models.TrOperatorNodes).filter_by(
            operator_name=operator.operator_name).delete()
        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)

        self.db.query(models.TrOperatorProducts).filter_by(
            operator_name=operator.operator_name).delete()
        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)

        self.add_oplog(u'修改操作员%s信息' %
                       utils.safeunicode(operator.operator_name))

        # update rules
        self.db.query(models.TrOperatorRule).filter_by(
            operator_name=operator.operator_name).delete()

        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)

        permit.unbind_opr(operator.operator_name)

        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)
Example #2
0
    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_update_form(nodes,products)
        if not form.validates(source=self.get_params()):
            rules = self.db.query(models.TrOperatorRule.rule_path).filter_by(operator_name=form.d.operator_name)
            rules = [r[0] for r in rules]
            return self.render("base_form.html", form=form,rules=rules)
        operator = self.db.query(models.TrOperator).get(form.d.id)
        if form.d.operator_pass:
            operator.operator_pass = md5(form.d.operator_pass.encode()).hexdigest()
        operator.operator_desc = form.d.operator_desc
        operator.operator_status = form.d.operator_status

        self.db.query(models.TrOperatorNodes).filter_by(operator_name=operator.operator_name).delete()
        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)

        self.db.query(models.TrOperatorProducts).filter_by(operator_name=operator.operator_name).delete()
        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)

        self.add_oplog(u'修改操作员%s信息' % utils.safeunicode(operator.operator_name))

        # update rules
        self.db.query(models.TrOperatorRule).filter_by(operator_name=operator.operator_name).delete()

        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)

        permit.unbind_opr(operator.operator_name)

        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)
Example #3
0
    def get(self):
        operator_id = self.get_argument("operator_id")
        opr = self.db.query(models.TrOperator).get(operator_id)
        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_update_form(nodes,products)
        form.fill(self.db.query(models.TrOperator).get(operator_id))
        form.operator_pass.set_value('')

        onodes = self.db.query(models.TrOperatorNodes).filter_by(operator_name=form.d.operator_name)
        oproducts = self.db.query(models.TrOperatorProducts).filter_by(operator_name=form.d.operator_name)
        form.operator_products.set_value([int(p.product_id) for p in oproducts])
        form.operator_nodes.set_value([ond.node_name for ond in onodes])
        

        rules = self.db.query(models.TrOperatorRule.rule_path).filter_by(operator_name=opr.operator_name)
        rules = [r[0] for r in rules]
        return self.render("opr_form.html", form=form, rules=rules)
Example #4
0
    def get(self):
        operator_id = self.get_argument("operator_id")
        opr = self.db.query(models.TrOperator).get(operator_id)
        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_update_form(nodes,products)
        form.fill(self.db.query(models.TrOperator).get(operator_id))
        form.operator_pass.set_value('')

        onodes = self.db.query(models.TrOperatorNodes).filter_by(operator_name=form.d.operator_name)
        oproducts = self.db.query(models.TrOperatorProducts).filter_by(operator_name=form.d.operator_name)
        form.operator_products.set_value([int(p.product_id) for p in oproducts])
        form.operator_nodes.set_value([ond.node_name for ond in onodes])
        

        rules = self.db.query(models.TrOperatorRule.rule_path).filter_by(operator_name=opr.operator_name)
        rules = [r[0] for r in rules]
        return self.render("opr_form.html", form=form, rules=rules)