Пример #1
0
 def form_init(cls):
     cls.configure_relationships("users")
     keys = ("get_requests", "post_requests", "delete_requests",
             "upper_menu")
     for key in keys:
         values = [(k, k) for k, v in app.rbac[key].items()
                   if v == "access"]
         field_name = " ".join(key.split("_")).capitalize()
         setattr(cls, key, SelectMultipleField(field_name, choices=values))
     menus, pages = [], []
     for category, values in app.rbac["menu"].items():
         if values["rbac"] == "admin":
             continue
         if values["rbac"] == "access":
             menus.append(category)
         for page, page_values in values["pages"].items():
             if page_values["rbac"] == "admin":
                 continue
             if page_values["rbac"] == "access":
                 pages.append(page)
             subpages = page_values.get("subpages", {})
             for subpage, subpage_values in subpages.items():
                 if subpage_values["rbac"] == "admin":
                     continue
                 if subpage_values["rbac"] == "access":
                     pages.append(subpage)
     setattr(cls, "menu", SelectMultipleField("Menu",
                                              choices=choices(menus)))
     setattr(cls, "pages",
             SelectMultipleField("Pages", choices=choices(pages)))
Пример #2
0
class DeviceForm(ObjectForm):
    template = "object"
    form_type = HiddenField(default="device")
    id = HiddenField()
    icon = SelectField(
        "Icon",
        choices=(
            ("antenna", "Antenna"),
            ("firewall", "Firewall"),
            ("host", "Host"),
            ("optical_switch", "Optical switch"),
            ("regenerator", "Regenerator"),
            ("router", "Router"),
            ("server", "Server"),
            ("switch", "Switch"),
        ),
    )
    ip_address = StringField("IP address")
    port = IntegerField("Port", default=22)
    operating_system = StringField("Operating System")
    os_version = StringField("OS Version")
    longitude = StringField("Longitude", default=0.0)
    latitude = StringField("Latitude", default=0.0)
    username = StringField("Username")
    password = PasswordField("Password")
    enable_password = PasswordField("'Enable' Password")
    napalm_driver = SelectField("NAPALM Driver",
                                choices=app.NAPALM_DRIVERS,
                                default="ios")
    netmiko_driver = SelectField("Netmiko Driver",
                                 choices=app.NETMIKO_DRIVERS,
                                 default="cisco_ios")
    scrapli_driver = SelectField("Scrapli Driver",
                                 choices=choices(app.SCRAPLI_DRIVERS),
                                 default="cisco_iosxe")
Пример #3
0
 class RbacForm(BaseForm):
     template = "object"
     form_type = HiddenField(default="rbac")
     id = HiddenField()
     name = StringField("Name", [InputRequired()])
     email = StringField("Email")
     menu = SelectMultipleField("Menu", choices=choices(list(rbac["menu"])))
     pages = SelectMultipleField("Pages", choices=choices(rbac["pages"]))
     upper_menu = SelectMultipleField("Upper Menu",
                                      choices=choices(rbac["upper_menu"]))
     get_requests = SelectMultipleField("GET requests",
                                        choices=choices(
                                            rbac["get_requests"]))
     post_requests = SelectMultipleField("POST requests",
                                         choices=choices(
                                             rbac["post_requests"]))
Пример #4
0
 class AccessForm(RbacForm):
     template = "access"
     form_type = HiddenField(default="access")
     description = StringField("Description")
     menu = SelectMultipleField("Menu",
                                choices=choices(list(app.rbac["menu"])))
     pages = SelectMultipleField("Pages",
                                 choices=choices(app.rbac["pages"]))
     upper_menu = SelectMultipleField("Upper Menu",
                                      choices=choices(
                                          app.rbac["upper_menu"]))
     get_requests = SelectMultipleField("GET requests",
                                        choices=choices(
                                            app.rbac["get_requests"]))
     post_requests = SelectMultipleField("POST requests",
                                         choices=choices(
                                             app.rbac["post_requests"]))
     relations = ["pools", "services"]
Пример #5
0
class ScrapliForm(ConnectionForm):
    form_type = HiddenField(default="scrapli_service")
    commands = StringField(substitution=True, widget=TextArea(), render_kw={"rows": 5})
    is_configuration = BooleanField()
    driver = SelectField(choices=choices(app.SCRAPLI_DRIVERS))
    transport = SelectField(choices=choices(("system", "paramiko", "ssh2")))
    use_device_driver = BooleanField(default=True)
    groups = {
        "Main Parameters": {
            "commands": [
                "commands",
                "is_configuration",
                "driver",
                "transport",
                "use_device_driver",
            ],
            "default": "expanded",
        },
        **ConnectionForm.groups,
    }
Пример #6
0
 def configure_access_form(cls):
     cls.models = app.rbac["models"]
     for model, access_rights in cls.models.items():
         setattr(cls, model, MultipleInstanceField())
         form_properties["access"][model] = {"type": "object-list"}
         access_field = SelectMultipleStringField(
             choices=choices(access_rights))
         form_properties["access"][f"{model}_access"] = {
             "type": "multiselect-string"
         }
         setattr(cls, f"{model}_access", access_field)
     return cls
Пример #7
0
class AccessForm(RbacForm):
    template = "access"
    form_type = HiddenField(default="access")
    user_pools = MultipleInstanceField("pool")
    access_pools = MultipleInstanceField("pool")
    access_type = SelectMultipleStringField(
        "Access Type",
        choices=choices(
            ["Read", "Edit", "Run", "Schedule", "Connect", "Use as target"]),
    )
    relations = ["pools", "services"]

    @classmethod
    def form_init(cls):
        cls.configure_relationships("users")
        keys = ("get_requests", "post_requests", "delete_requests",
                "upper_menu")
        for key in keys:
            values = [(k, k) for k, v in app.rbac[key].items()
                      if v == "access"]
            field_name = " ".join(key.split("_")).capitalize()
            setattr(cls, key, SelectMultipleField(field_name, choices=values))
        menus, pages = [], []
        for category, values in app.rbac["menu"].items():
            if values["rbac"] == "admin":
                continue
            if values["rbac"] == "access":
                menus.append(category)
            for page, page_values in values["pages"].items():
                if page_values["rbac"] == "admin":
                    continue
                if page_values["rbac"] == "access":
                    pages.append(page)
                subpages = page_values.get("subpages", {})
                for subpage, subpage_values in subpages.items():
                    if subpage_values["rbac"] == "admin":
                        continue
                    if subpage_values["rbac"] == "access":
                        pages.append(subpage)
        setattr(cls, "menu", SelectMultipleField("Menu",
                                                 choices=choices(menus)))
        setattr(cls, "pages",
                SelectMultipleField("Pages", choices=choices(pages)))