def config(key=None, value=None): """ >> config [<key> [<int value>]] Configure/report various options. If no <value> is given, report the current key value; if no <key> given, report current settings. So far: * 'acknowledge_equiv_refresh', default 1 -- follow HTTP-EQUIV=REFRESH * 'readonly_controls_writeable', default 0 -- make ro controls writeable * 'require_tidy', default 0 -- *require* that tidy be installed * 'use_BeautifulSoup', default 1 -- use the BeautifulSoup parser * 'use_tidy', default 1 -- use tidy, if it's installed * 'with_default_realm', default 0 -- use a default realm for HTTP AUTH Deprecated: * 'allow_parse_errors' has been removed. """ import utils if key is None: keys = _options.keys() keys.sort() logger.info('current configuration:') for k in keys: logger.info('\t%s : %s', k, _options[k]) logger.info('') else: v = _options.get(key) if v is None: logger.error('*** no such configuration key %s', key) logger.error('valid keys are:', ";".join(_options.keys())) raise TwillException('no such configuration key: %s' % (key,)) elif value is None: logger.info('') logger.info('key %s: value %s', key, v) logger.info('') else: value = utils.make_boolean(value) _options[key] = value if key == 'acknowledge_equiv_refresh': browser.set_handle_equiv(value)
def config(key=None, value=None): """ >> config [<key> [<int value>]] Configure/report various options. If no <value> is given, report the current key value; if no <key> given, report current settings. So far: * 'acknowledge_equiv_refresh', default 1 -- follow HTTP-EQUIV=REFRESH * 'readonly_controls_writeable', default 0 -- make ro controls writeable * 'require_tidy', default 0 -- *require* that tidy be installed * 'use_BeautifulSoup', default 1 -- use the BeautifulSoup parser * 'use_tidy', default 1 -- use tidy, if it's installed * 'with_default_realm', default 0 -- use a default realm for HTTP AUTH Deprecated: * 'allow_parse_errors' has been removed. """ import utils if key is None: keys = _options.keys() keys.sort() print >> OUT, 'current configuration:' for k in keys: print >> OUT, '\t%s : %s' % (k, _options[k]) print >> OUT, '' else: v = _options.get(key) if v is None: print >> OUT, '*** no such configuration key', key print >> OUT, 'valid keys are:', ";".join(_options.keys()) raise TwillException('no such configuration key: %s' % (key, )) elif value is None: print >> OUT, '' print >> OUT, 'key %s: value %s' % (key, v) print >> OUT, '' else: value = utils.make_boolean(value) _options[key] = value
def debug(what, level): """ >> debug <what> <level> <what> can be: * http (any level >= 1), to display the HTTP transactions. * commands (any level >= 1), to display the commands being executed. * equiv-refresh (any level >= 1) to display HTTP-EQUIV refresh handling. """ import parse try: level = int(level) except ValueError: flag = utils.make_boolean(level) if flag: level = 1 else: level = 0 print>>OUT, 'DEBUG: setting %s debugging to level %d' % (what, level) if what == "http": # @BRT: Tries to set mechanize browser debug level directly; # @CTB not something supported by requests? # browser._browser.set_debug_http(level) pass elif what == 'equiv-refresh': if level: utils._debug_print_refresh = True else: utils._debug_print_refresh = False elif what == 'commands': if level: parse.debug_print_commands(True) else: parse.debug_print_commands(False) else: raise TwillException('unknown debugging type: "%s"' % (what,))
def debug(what, level): """ >> debug <what> <level> <what> can be: * http (any level >= 1), to display the HTTP transactions. * commands (any level >= 1), to display the commands being executed. * equiv-refresh (any level >= 1) to display HTTP-EQUIV refresh handling. """ import parse try: level = int(level) except ValueError: flag = utils.make_boolean(level) if flag: level = 1 else: level = 0 logger.debug('DEBUG: setting %s debugging to level %d', what, level) if what == "http": browser._browser.set_debug_http(level) elif what == 'equiv-refresh': if level: utils._debug_print_refresh = True else: utils._debug_print_refresh = False elif what == 'commands': if level: parse.debug_print_commands(True) else: parse.debug_print_commands(False) else: raise TwillException('unknown debugging type: "%s"' % (what,))
def _formvalue(self, formname, fieldname, value, track_previous_value): form, form_number = self.find_form(formname) try: fieldname = int(fieldname) fieldname -= 1 all_fields = [ i for i in form.find("input").items() ] all_fields.extend([ i for i in form.find("select").items() ]) all_fields.extend([ i for i in form.find("textarea").items() ]) if len(all_fields) > fieldname: field = all_fields[fieldname] else: raise TwineAssertionError("no field matches \"%d\"" % fieldname) except ValueError: for field_tag in ("input", "select", "textarea"): fields = [ i for i in form.find("%s[name=%s]" % (field_tag, fieldname)).items() ] if fields: matched_field_tag = field_tag break #if len(fields) > 1: #raise TwineAssertionError("multiple field matches") #if fields: #field = fields[0] #matched_field_tag = field_tag #break if not fields: raise TwineAssertionError("no field matches \"%s\"" % fieldname) field_type = fields[0].attr.type if len(fields) > 1: for field in fields: if field.attr.type != field_type: raise TwineAssertionError("field types do not match") field = fields[0] if matched_field_tag == "input": if field_type == "text" or field_type == "password": if track_previous_value: self.add_previous_form_value(form_number, fieldname, field.attr.value or "") self.fill("input[name=%s]" % fieldname, value) elif field_type == "checkbox": if track_previous_value: self.add_previous_form_value(formname, fieldname, field.attr.checked or False) checked = make_boolean(value) if checked: self.check("input[name=%s]" % fieldname) else: self.uncheck("input[name=%s]" % fieldname) elif field_type == "radio": if track_previous_value: self.add_previous_form_value(formname, fieldname, field.attr.value) self.check("input[name=%s][value=%s]" % (fieldname, value,)) elif matched_field_tag == "select": # TODO: add to previous form values self.select("option[value=%s]" % value) elif matched_field_tag == "textarea": if track_previous_value: self.add_previous_form_value(formname, fieldname, field.attr.value or "") self.fill("textarea[name=%s]" % fieldname, value) else: raise TwineAssertionError("Unknown field tag") # Keep track of last form modified self.last_form = formname