Example #1
0
 def verifyInput(self, parms, pmap):
     """Check that the given input is valid."""
     errmsg = ""
     for name, value in parms.items():
         if name[-2:-1] == "-":
             if parms.has_key(name[:-2]):
                 parms[name[:-2]] += (value,)
             else:
                 parms[name[:-2]] = (value,)
             del parms[name]
     for sect, opt in pmap:
         if opt is None:
             nice_section_name = sect
             continue
         if sect == "Headers" and opt in ("notate_to", "notate_subject"):
             valid_input = (
                 options["Headers", "header_ham_string"],
                 options["Headers", "header_spam_string"],
                 options["Headers", "header_unsure_string"],
             )
         else:
             valid_input = options.valid_input(sect, opt)
         html_key = sect + "_" + opt
         if not parms.has_key(html_key):
             value = ()
             entered_value = "None"
         else:
             value = parms[html_key]
             entered_value = value
             if options.is_boolean(sect, opt):
                 if value == _("No"):
                     value = False
                 elif value == _("Yes"):
                     value = True
             if options.multiple_values_allowed(sect, opt) and value == "":
                 value = ()
             value = options.convert(sect, opt, value)
         if not options.is_valid(sect, opt, value):
             errmsg += _("<li>'%s' is not a value valid for [%s] %s") % (
                 entered_value,
                 nice_section_name,
                 options.display_name(sect, opt),
             )
             if isinstance(valid_input, types.TupleType):
                 errmsg += _(". Valid values are: ")
                 for valid in valid_input:
                     errmsg += str(valid) + ","
                 errmsg = errmsg[:-1]  # cut last ','
             errmsg += "</li>"
         parms[html_key] = value
     return errmsg
Example #2
0
 def _buildConfigPageBody(self, html, parm_map):
     configTable = None
     section = None
     for sect, opt in parm_map:
         if opt is None:
             if configTable is not None and section is not None:
                 section.boxContent = configTable
                 html.configFormContent += section
             section = self.html.headedBox.clone()
             configTable = self.html.configTable.clone()
             configTextRow1 = configTable.configTextRow1.clone()
             configTextRow2 = configTable.configTextRow2.clone()
             configCbRow1 = configTable.configCbRow1.clone()
             configRow2 = configTable.configRow2.clone()
             blankRow = configTable.blankRow.clone()
             del configTable.configTextRow1
             del configTable.configTextRow2
             del configTable.configCbRow1
             del configTable.configRow2
             del configTable.blankRow
             del configTable.folderRow
             section.heading = sect
             del section.iconCell
             continue
         html_key = sect + "_" + opt
         if sect == "Headers" and opt in ("notate_to", "notate_subject"):
             valid_input = (
                 options["Headers", "header_ham_string"],
                 options["Headers", "header_spam_string"],
                 options["Headers", "header_unsure_string"],
             )
         else:
             valid_input = options.valid_input(sect, opt)
         if isinstance(valid_input, types.StringTypes):
             newConfigRow1 = configTextRow1.clone()
             newConfigRow1.label = options.display_name(sect, opt)
             newConfigRow1.input.name = html_key
             newConfigRow1.input.value = options.unconvert(sect, opt)
         else:
             newConfigRow1 = configCbRow1.clone()
             newConfigRow1.label = options.display_name(sect, opt)
             blankOption = newConfigRow1.input.clone()
             firstOpt = True
             i = 0
             for val in valid_input:
                 newOption = blankOption.clone()
                 if options.multiple_values_allowed(sect, opt):
                     if val in options[sect, opt]:
                         newOption.input_box.checked = "checked"
                     newOption.input_box.type = "checkbox"
                     newOption.input_box.name = html_key + "-" + str(i)
                     i += 1
                 else:
                     if val == options[sect, opt]:
                         newOption.input_box.checked = "checked"
                     newOption.input_box.type = "radio"
                     newOption.input_box.name = html_key
                 if options.is_boolean(sect, opt):
                     if val is True:
                         val = "Yes"
                     elif val is False:
                         val = "No"
                 newOption.val_label = str(val)
                 newOption.input_box.value = str(val)
                 if firstOpt:
                     newConfigRow1.input = newOption
                     firstOpt = False
                 else:
                     newConfigRow1.input += newOption
         newConfigRow1.helpCell = (
             "<strong>" + options.display_name(sect, opt) + ":</strong> " + cgi.escape(options.doc(sect, opt))
         )
         newConfigRow2 = configRow2.clone()
         currentValue = options[sect, opt]
         if type(currentValue) in types.StringTypes:
             currentValue = currentValue.replace(",", ", ")
             newConfigRow2 = configTextRow2.clone()
         else:
             currentValue = options.unconvert(sect, opt)
             newConfigRow2 = configRow2.clone()
         if options.is_boolean(sect, opt):
             if currentValue == "False":
                 currentValue = _("No")
             elif currentValue == "True":
                 currentValue = _("Yes")
         newConfigRow2.currentValue = currentValue
         configTable += newConfigRow1 + newConfigRow2 + blankRow
     if section is not None:
         section.boxContent = configTable
         html.configFormContent += section
     return html