cardinal_pythonlib.rnc_web
Original code copyright (C) 2009-2022 Rudolf Cardinal (rudolf@pobox.com).
This file is part of cardinal_pythonlib.
Licensed under the Apache License, Version 2.0 (the “License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Support for web scripts.
- cardinal_pythonlib.rnc_web.bold_if_not_blank(x: str | None) str [source]
HTML-emboldens content, unless blank.
- cardinal_pythonlib.rnc_web.cgi_method_is_post(environ: Dict[str, str]) bool [source]
Determines if the CGI method was
POST
, given the CGI environment.
- cardinal_pythonlib.rnc_web.cgi_parameter_exists(form: FieldStorage, key: str) bool [source]
Does a CGI form contain the key?
- cardinal_pythonlib.rnc_web.checkbox_checked(b: Any) str [source]
Returns
' checked="checked"'
ifb
is true; otherwise''
.Use this code to fill the
{}
in e.g.:<label> <input type="checkbox" name="myfield" value="1"{}> This will be pre-ticked if you insert " checked" where the braces are. The newer, more stringent requirement is ' checked="checked"'. </label>
- cardinal_pythonlib.rnc_web.debug_form_contents(form: FieldStorage, to_stderr: bool = True, to_logger: bool = False) None [source]
Writes the keys and values of a CGI form to
stderr
.
- cardinal_pythonlib.rnc_web.get_cgi_fieldstorage_from_wsgi_env(env: Dict[str, str], include_query_string: bool = True) FieldStorage [source]
Returns a
cgi.FieldStorage
object from the WSGI environment.
- cardinal_pythonlib.rnc_web.get_cgi_parameter_bool(form: FieldStorage, key: str) bool [source]
Extracts a boolean parameter from a CGI form, on the assumption that
"1"
isTrue
and everything else isFalse
.
- cardinal_pythonlib.rnc_web.get_cgi_parameter_bool_or_default(form: FieldStorage, key: str, default: bool | None = None) bool | None [source]
Extracts a boolean parameter from a CGI form (
"1"
=True
, other string =False
, absent/zero-length string = default value).
- cardinal_pythonlib.rnc_web.get_cgi_parameter_bool_or_none(form: FieldStorage, key: str) bool | None [source]
Extracts a boolean parameter from a CGI form (
"1"
=True
, other string = False, absent/zero-length string =None
).
- cardinal_pythonlib.rnc_web.get_cgi_parameter_datetime(form: FieldStorage, key: str) datetime | None [source]
Extracts a date/time parameter from a CGI form. Applies the LOCAL timezone if none specified.
- cardinal_pythonlib.rnc_web.get_cgi_parameter_file(form: FieldStorage, key: str) bytes | None [source]
Extracts a file’s contents from a “file” input in a CGI form, or None if no such file was uploaded.
- cardinal_pythonlib.rnc_web.get_cgi_parameter_filename_and_file(form: FieldStorage, key: str) Tuple[str | None, bytes | None] [source]
Extracts a file’s name and contents from a “file” input in a CGI form. Returns
(name, contents)
, or(None, None)
if no such file was uploaded.
- cardinal_pythonlib.rnc_web.get_cgi_parameter_float(form: FieldStorage, key: str) float | None [source]
Extracts a float parameter from a CGI form, or None if the key is absent or the string value is not convertible to
float
.
- cardinal_pythonlib.rnc_web.get_cgi_parameter_int(form: FieldStorage, key: str) int | None [source]
Extracts an integer parameter from a CGI form, or
None
if the key is absent or the string value is not convertible toint
.
- cardinal_pythonlib.rnc_web.get_cgi_parameter_list(form: FieldStorage, key: str) List[str] [source]
Extracts a list of values, all with the same key, from a CGI form.
- cardinal_pythonlib.rnc_web.get_cgi_parameter_str(form: FieldStorage, key: str, default: str | None = None) str [source]
Extracts a string parameter from a CGI form. Note:
key
is CASE-SENSITIVE.
- cardinal_pythonlib.rnc_web.get_cgi_parameter_str_or_none(form: FieldStorage, key: str) str | None [source]
Extracts a string parameter from a CGI form, or
None
if the key doesn’t exist or the string is zero-length.
- cardinal_pythonlib.rnc_web.get_float_or_none(s: str) float | None [source]
Returns the float value of a string, or
None
if it’s not convertible to afloat
.
- cardinal_pythonlib.rnc_web.get_int_or_none(s: str) int | None [source]
Returns the integer value of a string, or
None
if it’s not convertible to anint
.
- cardinal_pythonlib.rnc_web.get_png_data_url(blob: bytes | None) str [source]
Converts a PNG blob into a local URL encapsulating the PNG.
- cardinal_pythonlib.rnc_web.get_png_img_html(blob: bytes | memoryview, extra_html_class: str | None = None) str [source]
Converts a PNG blob to an HTML IMG tag with embedded data.
- cardinal_pythonlib.rnc_web.getconfigvar_escaped(config: ConfigParser, section: str, key: str) str | None [source]
Returns a CGI-escaped version of the value read from an INI file using
ConfigParser
, orNone
.
- cardinal_pythonlib.rnc_web.getenv_escaped(key: str, default: str | None = None) str | None [source]
Returns an environment variable’s value, CGI-escaped, or
None
.
- cardinal_pythonlib.rnc_web.html_result(html: str, extraheaders: List[Tuple[str, str]] | None = None) Tuple[str, List[Tuple[str, str]], bytes] [source]
Returns
(contenttype, extraheaders, data)
tuple for UTF-8 HTML.
- cardinal_pythonlib.rnc_web.html_table_from_query(rows: Iterable[Iterable[str | None]], descriptions: Iterable[str | None]) str [source]
Converts rows from an SQL query result to an HTML table.
- cardinal_pythonlib.rnc_web.is_1(s: str) bool [source]
True
if the input is the string literal"1"
, otherwiseFalse
.
- cardinal_pythonlib.rnc_web.is_valid_png(blob: bytes | None) bool [source]
Does a blob have a valid PNG signature?
- cardinal_pythonlib.rnc_web.make_urls_hyperlinks(text: str) str [source]
Adds hyperlinks to text that appears to contain URLs.
See
https://stackoverflow.com/questions/1071191
… except that double-replaces everything; e.g. try with
text = "me@somewhere.com me@somewhere.com"
- cardinal_pythonlib.rnc_web.number_to_dp(number: float | None, dp: int, default: str | None = '', en_dash_for_minus: bool = True) str [source]
Format number to
dp
decimal places, optionally using a UTF-8 en dash for minus signs.
- cardinal_pythonlib.rnc_web.option_selected(variable: Any, testvalue: Any) str [source]
Returns
' selected="selected"'
ifvariable == testvalue
else''
; for use with HTML select options.
- cardinal_pythonlib.rnc_web.pdf_result(pdf_binary: bytes, extraheaders: List[Tuple[str, str]] | None = None, filename: str | None = None) Tuple[str, List[Tuple[str, str]], bytes] [source]
Returns
(contenttype, extraheaders, data)
tuple for a PDF.
- cardinal_pythonlib.rnc_web.print_result_for_plain_cgi_script(contenttype: str, headers: List[Tuple[str, str]], content: bytes, status: str = '200 OK') None [source]
Writes HTTP request result to stdout.
- cardinal_pythonlib.rnc_web.print_result_for_plain_cgi_script_from_tuple(contenttype_headers_content: Tuple[str, List[Tuple[str, str]], bytes], status: str = '200 OK') None [source]
Writes HTTP result to stdout.
- cardinal_pythonlib.rnc_web.print_utf8(s: str) None [source]
Writes a Unicode string to
sys.stdout
in UTF-8 encoding.
- cardinal_pythonlib.rnc_web.replace_nl_with_html_br(string: str) str [source]
Replaces newlines with
<br>
.
- cardinal_pythonlib.rnc_web.text_result(text: str, extraheaders: List[Tuple[str, str]] | None = None, filename: str | None = None) Tuple[str, List[Tuple[str, str]], bytes] [source]
Returns
(contenttype, extraheaders, data)
tuple for UTF-8 text.
- cardinal_pythonlib.rnc_web.tsv_result(text: str, extraheaders: List[Tuple[str, str]] | None = None, filename: str | None = None) Tuple[str, List[Tuple[str, str]], bytes] [source]
Returns
(contenttype, extraheaders, data)
tuple for UTF-8 TSV.
- cardinal_pythonlib.rnc_web.webify(v: Any, preserve_newlines: bool = True) str [source]
Converts a value into an HTML-safe
str
(formerly, in Python 2:unicode
).Converts value
v
to a string; escapes it to be safe in HTML format (escaping ampersands, replacing newlines with<br>
, etc.). Returns""
for blank input.
- cardinal_pythonlib.rnc_web.websafe(value: str) str [source]
Makes a string safe for inclusion in ASCII-encoded HTML.
- cardinal_pythonlib.rnc_web.wsgi_simple_responder(result: str | bytes, handler: Callable[[str | bytes], Tuple[str, List[Tuple[str, str]], bytes]], start_response: Callable[[str, List[Tuple[str, str]], Tuple[Type[BaseException] | None, BaseException | None, TracebackType | None] | None], Callable[[str], None]], status: str = '200 OK', extraheaders: List[Tuple[str, str]] | None = None) Iterable[bytes] [source]
Simple WSGI app.
- Parameters:
- Returns:
WSGI application result