From 52e9aefbf76ad3267c89aea90201c693831c81cd Mon Sep 17 00:00:00 2001 From: Massimo Di Pierro Date: Tue, 14 Nov 2023 23:19:29 -0800 Subject: [PATCH] version 1.20231114.2, fixed Makefile and updated docs --- Makefile | 10 +- apps/_documentation/static/en/.buildinfo | 2 +- .../_sphinx_javascript_frameworks_compat.js | 257 ++++++++------- .../en/_static/documentation_options.js | 2 +- .../static/en/_static/jquery.js | 4 +- .../static/en/_static/sphinx_highlight.js | 298 +++++++++--------- apps/_documentation/static/en/chapter-01.html | 8 +- apps/_documentation/static/en/chapter-02.html | 8 +- apps/_documentation/static/en/chapter-03.html | 8 +- apps/_documentation/static/en/chapter-04.html | 8 +- apps/_documentation/static/en/chapter-05.html | 8 +- apps/_documentation/static/en/chapter-06.html | 8 +- apps/_documentation/static/en/chapter-07.html | 18 +- apps/_documentation/static/en/chapter-08.html | 8 +- apps/_documentation/static/en/chapter-09.html | 8 +- apps/_documentation/static/en/chapter-10.html | 8 +- apps/_documentation/static/en/chapter-11.html | 8 +- apps/_documentation/static/en/chapter-12.html | 8 +- apps/_documentation/static/en/chapter-13.html | 8 +- apps/_documentation/static/en/chapter-14.html | 8 +- apps/_documentation/static/en/chapter-15.html | 8 +- apps/_documentation/static/en/chapter-16.html | 8 +- apps/_documentation/static/en/genindex.html | 8 +- apps/_documentation/static/en/index.html | 8 +- apps/_documentation/static/en/objects.inv | Bin 8240 -> 8240 bytes apps/_documentation/static/en/search.html | 8 +- apps/_documentation/static/pt/.buildinfo | 2 +- .../pt/_static/documentation_options.js | 2 +- apps/_documentation/static/pt/chapter-01.html | 8 +- apps/_documentation/static/pt/chapter-02.html | 8 +- apps/_documentation/static/pt/chapter-03.html | 8 +- apps/_documentation/static/pt/chapter-04.html | 8 +- apps/_documentation/static/pt/chapter-05.html | 8 +- apps/_documentation/static/pt/chapter-06.html | 8 +- apps/_documentation/static/pt/chapter-07.html | 22 +- apps/_documentation/static/pt/chapter-08.html | 8 +- apps/_documentation/static/pt/chapter-09.html | 8 +- apps/_documentation/static/pt/chapter-10.html | 8 +- apps/_documentation/static/pt/chapter-11.html | 8 +- apps/_documentation/static/pt/chapter-12.html | 8 +- apps/_documentation/static/pt/chapter-13.html | 8 +- apps/_documentation/static/pt/chapter-14.html | 8 +- apps/_documentation/static/pt/chapter-15.html | 8 +- apps/_documentation/static/pt/chapter-16.html | 8 +- apps/_documentation/static/pt/genindex.html | 8 +- apps/_documentation/static/pt/index.html | 8 +- apps/_documentation/static/pt/objects.inv | Bin 9319 -> 9319 bytes apps/_documentation/static/pt/search.html | 8 +- apps/_documentation/static/pt/searchindex.js | 2 +- docs/chapter-07.rst | 10 +- docs/locales/pt/LC_MESSAGES/chapter-08.mo | Bin 8637 -> 8486 bytes py4web/__init__.py | 2 +- pyproject.toml | 2 +- 53 files changed, 465 insertions(+), 456 deletions(-) diff --git a/Makefile b/Makefile index ac186ad0a..93fedd92e 100644 --- a/Makefile +++ b/Makefile @@ -35,9 +35,9 @@ upgrade-utils: upgrade-vue: curl -L https://unpkg.com/vue/dist/vue.min.js > apps/_dashboard/static/js/vue.min.js find apps -name "vue.min.js" -exec cp apps/_dashboard/static/js/vue.min.js {} \; -build: clean assets - python -m pip install --upgrade build - python -m pip install --upgrade twine - python -m build +build: clean assets venv + venv/bin/pip install --upgrade build + venv/bin/pip install --upgrade twine + venv/bin/python -m build deploy: build - python -m twine upload dist/* + venv/bin/python -m twine upload dist/* diff --git a/apps/_documentation/static/en/.buildinfo b/apps/_documentation/static/en/.buildinfo index d3db54e5c..baa7959b7 100644 --- a/apps/_documentation/static/en/.buildinfo +++ b/apps/_documentation/static/en/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: 90b4a7e22a0fb2b9450da2f43bdcd9b4 +config: e4c0fd3efac36737b88b83f1c2a424ec tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/apps/_documentation/static/en/_static/_sphinx_javascript_frameworks_compat.js b/apps/_documentation/static/en/_static/_sphinx_javascript_frameworks_compat.js index c08376bc1..81415803e 100644 --- a/apps/_documentation/static/en/_static/_sphinx_javascript_frameworks_compat.js +++ b/apps/_documentation/static/en/_static/_sphinx_javascript_frameworks_compat.js @@ -1,134 +1,123 @@ -/* - * _sphinx_javascript_frameworks_compat.js - * ~~~~~~~~~~ - * - * Compatability shim for jQuery and underscores.js. - * - * WILL BE REMOVED IN Sphinx 6.0 - * xref RemovedInSphinx60Warning - * - */ - -/** - * select a different prefix for underscore - */ -$u = _.noConflict(); - - -/** - * small helper function to urldecode strings - * - * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#Decoding_query_parameters_from_a_URL - */ -jQuery.urldecode = function(x) { - if (!x) { - return x - } - return decodeURIComponent(x.replace(/\+/g, ' ')); -}; - -/** - * small helper function to urlencode strings - */ -jQuery.urlencode = encodeURIComponent; - -/** - * This function returns the parsed url parameters of the - * current request. Multiple values per key are supported, - * it will always return arrays of strings for the value parts. - */ -jQuery.getQueryParameters = function(s) { - if (typeof s === 'undefined') - s = document.location.search; - var parts = s.substr(s.indexOf('?') + 1).split('&'); - var result = {}; - for (var i = 0; i < parts.length; i++) { - var tmp = parts[i].split('=', 2); - var key = jQuery.urldecode(tmp[0]); - var value = jQuery.urldecode(tmp[1]); - if (key in result) - result[key].push(value); - else - result[key] = [value]; - } - return result; -}; - -/** - * highlight a given string on a jquery object by wrapping it in - * span elements with the given class name. - */ -jQuery.fn.highlightText = function(text, className) { - function highlight(node, addItems) { - if (node.nodeType === 3) { - var val = node.nodeValue; - var pos = val.toLowerCase().indexOf(text); - if (pos >= 0 && - !jQuery(node.parentNode).hasClass(className) && - !jQuery(node.parentNode).hasClass("nohighlight")) { - var span; - var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg"); - if (isInSVG) { - span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); - } else { - span = document.createElement("span"); - span.className = className; - } - span.appendChild(document.createTextNode(val.substr(pos, text.length))); - node.parentNode.insertBefore(span, node.parentNode.insertBefore( - document.createTextNode(val.substr(pos + text.length)), - node.nextSibling)); - node.nodeValue = val.substr(0, pos); - if (isInSVG) { - var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); - var bbox = node.parentElement.getBBox(); - rect.x.baseVal.value = bbox.x; - rect.y.baseVal.value = bbox.y; - rect.width.baseVal.value = bbox.width; - rect.height.baseVal.value = bbox.height; - rect.setAttribute('class', className); - addItems.push({ - "parent": node.parentNode, - "target": rect}); - } - } - } - else if (!jQuery(node).is("button, select, textarea")) { - jQuery.each(node.childNodes, function() { - highlight(this, addItems); - }); - } - } - var addItems = []; - var result = this.each(function() { - highlight(this, addItems); - }); - for (var i = 0; i < addItems.length; ++i) { - jQuery(addItems[i].parent).before(addItems[i].target); - } - return result; -}; - -/* - * backward compatibility for jQuery.browser - * This will be supported until firefox bug is fixed. - */ -if (!jQuery.browser) { - jQuery.uaMatch = function(ua) { - ua = ua.toLowerCase(); - - var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || - /(webkit)[ \/]([\w.]+)/.exec(ua) || - /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || - /(msie) ([\w.]+)/.exec(ua) || - ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || - []; - - return { - browser: match[ 1 ] || "", - version: match[ 2 ] || "0" - }; - }; - jQuery.browser = {}; - jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; -} \ No newline at end of file +/* Compatability shim for jQuery and underscores.js. + * + * Copyright Sphinx contributors + * Released under the two clause BSD licence + */ + +/** + * small helper function to urldecode strings + * + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#Decoding_query_parameters_from_a_URL + */ +jQuery.urldecode = function(x) { + if (!x) { + return x + } + return decodeURIComponent(x.replace(/\+/g, ' ')); +}; + +/** + * small helper function to urlencode strings + */ +jQuery.urlencode = encodeURIComponent; + +/** + * This function returns the parsed url parameters of the + * current request. Multiple values per key are supported, + * it will always return arrays of strings for the value parts. + */ +jQuery.getQueryParameters = function(s) { + if (typeof s === 'undefined') + s = document.location.search; + var parts = s.substr(s.indexOf('?') + 1).split('&'); + var result = {}; + for (var i = 0; i < parts.length; i++) { + var tmp = parts[i].split('=', 2); + var key = jQuery.urldecode(tmp[0]); + var value = jQuery.urldecode(tmp[1]); + if (key in result) + result[key].push(value); + else + result[key] = [value]; + } + return result; +}; + +/** + * highlight a given string on a jquery object by wrapping it in + * span elements with the given class name. + */ +jQuery.fn.highlightText = function(text, className) { + function highlight(node, addItems) { + if (node.nodeType === 3) { + var val = node.nodeValue; + var pos = val.toLowerCase().indexOf(text); + if (pos >= 0 && + !jQuery(node.parentNode).hasClass(className) && + !jQuery(node.parentNode).hasClass("nohighlight")) { + var span; + var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.className = className; + } + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + node.parentNode.insertBefore(span, node.parentNode.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling)); + node.nodeValue = val.substr(0, pos); + if (isInSVG) { + var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); + var bbox = node.parentElement.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute('class', className); + addItems.push({ + "parent": node.parentNode, + "target": rect}); + } + } + } + else if (!jQuery(node).is("button, select, textarea")) { + jQuery.each(node.childNodes, function() { + highlight(this, addItems); + }); + } + } + var addItems = []; + var result = this.each(function() { + highlight(this, addItems); + }); + for (var i = 0; i < addItems.length; ++i) { + jQuery(addItems[i].parent).before(addItems[i].target); + } + return result; +}; + +/* + * backward compatibility for jQuery.browser + * This will be supported until firefox bug is fixed. + */ +if (!jQuery.browser) { + jQuery.uaMatch = function(ua) { + ua = ua.toLowerCase(); + + var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || + /(webkit)[ \/]([\w.]+)/.exec(ua) || + /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || + /(msie) ([\w.]+)/.exec(ua) || + ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || + []; + + return { + browser: match[ 1 ] || "", + version: match[ 2 ] || "0" + }; + }; + jQuery.browser = {}; + jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; +} diff --git a/apps/_documentation/static/en/_static/documentation_options.js b/apps/_documentation/static/en/_static/documentation_options.js index 7554d64db..cc520f6d2 100644 --- a/apps/_documentation/static/en/_static/documentation_options.js +++ b/apps/_documentation/static/en/_static/documentation_options.js @@ -1,5 +1,5 @@ const DOCUMENTATION_OPTIONS = { - VERSION: '1.20231029.1', + VERSION: '1.20231114.1', LANGUAGE: 'en', COLLAPSE_INDEX: false, BUILDER: 'html', diff --git a/apps/_documentation/static/en/_static/jquery.js b/apps/_documentation/static/en/_static/jquery.js index 3906124dc..c4c6022f2 100644 --- a/apps/_documentation/static/en/_static/jquery.js +++ b/apps/_documentation/static/en/_static/jquery.js @@ -1,2 +1,2 @@ -/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0 { - if (node.nodeType === Node.TEXT_NODE) { - const val = node.nodeValue; - const parent = node.parentNode; - const pos = val.toLowerCase().indexOf(text); - if ( - pos >= 0 && - !parent.classList.contains(className) && - !parent.classList.contains("nohighlight") - ) { - let span; - - const closestNode = parent.closest("body, svg, foreignObject"); - const isInSVG = closestNode && closestNode.matches("svg"); - if (isInSVG) { - span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); - } else { - span = document.createElement("span"); - span.classList.add(className); - } - - span.appendChild(document.createTextNode(val.substr(pos, text.length))); - parent.insertBefore( - span, - parent.insertBefore( - document.createTextNode(val.substr(pos + text.length)), - node.nextSibling - ) - ); - node.nodeValue = val.substr(0, pos); - - if (isInSVG) { - const rect = document.createElementNS( - "http://www.w3.org/2000/svg", - "rect" - ); - const bbox = parent.getBBox(); - rect.x.baseVal.value = bbox.x; - rect.y.baseVal.value = bbox.y; - rect.width.baseVal.value = bbox.width; - rect.height.baseVal.value = bbox.height; - rect.setAttribute("class", className); - addItems.push({ parent: parent, target: rect }); - } - } - } else if (node.matches && !node.matches("button, select, textarea")) { - node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); - } -}; -const _highlightText = (thisNode, text, className) => { - let addItems = []; - _highlight(thisNode, addItems, text, className); - addItems.forEach((obj) => - obj.parent.insertAdjacentElement("beforebegin", obj.target) - ); -}; - -/** - * Small JavaScript module for the documentation. - */ -const SphinxHighlight = { - - /** - * highlight the search words provided in localstorage in the text - */ - highlightSearchWords: () => { - if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight - - // get and clear terms from localstorage - const url = new URL(window.location); - const highlight = - localStorage.getItem("sphinx_highlight_terms") - || url.searchParams.get("highlight") - || ""; - localStorage.removeItem("sphinx_highlight_terms") - url.searchParams.delete("highlight"); - window.history.replaceState({}, "", url); - - // get individual terms from highlight string - const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); - if (terms.length === 0) return; // nothing to do - - // There should never be more than one element matching "div.body" - const divBody = document.querySelectorAll("div.body"); - const body = divBody.length ? divBody[0] : document.querySelector("body"); - window.setTimeout(() => { - terms.forEach((term) => _highlightText(body, term, "highlighted")); - }, 10); - - const searchBox = document.getElementById("searchbox"); - if (searchBox === null) return; - searchBox.appendChild( - document - .createRange() - .createContextualFragment( - '" - ) - ); - }, - - /** - * helper function to hide the search marks again - */ - hideSearchWords: () => { - document - .querySelectorAll("#searchbox .highlight-link") - .forEach((el) => el.remove()); - document - .querySelectorAll("span.highlighted") - .forEach((el) => el.classList.remove("highlighted")); - localStorage.removeItem("sphinx_highlight_terms") - }, - - initEscapeListener: () => { - // only install a listener if it is really needed - if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return; - - document.addEventListener("keydown", (event) => { - // bail for input elements - if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; - // bail with special keys - if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return; - if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === "Escape")) { - SphinxHighlight.hideSearchWords(); - event.preventDefault(); - } - }); - }, -}; - -_ready(SphinxHighlight.highlightSearchWords); -_ready(SphinxHighlight.initEscapeListener); \ No newline at end of file +/* Highlighting utilities for Sphinx HTML documentation. */ +"use strict"; + +const SPHINX_HIGHLIGHT_ENABLED = true + +/** + * highlight a given string on a node by wrapping it in + * span elements with the given class name. + */ +const _highlight = (node, addItems, text, className) => { + if (node.nodeType === Node.TEXT_NODE) { + const val = node.nodeValue; + const parent = node.parentNode; + const pos = val.toLowerCase().indexOf(text); + if ( + pos >= 0 && + !parent.classList.contains(className) && + !parent.classList.contains("nohighlight") + ) { + let span; + + const closestNode = parent.closest("body, svg, foreignObject"); + const isInSVG = closestNode && closestNode.matches("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.classList.add(className); + } + + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + const rest = document.createTextNode(val.substr(pos + text.length)); + parent.insertBefore( + span, + parent.insertBefore( + rest, + node.nextSibling + ) + ); + node.nodeValue = val.substr(0, pos); + /* There may be more occurrences of search term in this node. So call this + * function recursively on the remaining fragment. + */ + _highlight(rest, addItems, text, className); + + if (isInSVG) { + const rect = document.createElementNS( + "http://www.w3.org/2000/svg", + "rect" + ); + const bbox = parent.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute("class", className); + addItems.push({ parent: parent, target: rect }); + } + } + } else if (node.matches && !node.matches("button, select, textarea")) { + node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); + } +}; +const _highlightText = (thisNode, text, className) => { + let addItems = []; + _highlight(thisNode, addItems, text, className); + addItems.forEach((obj) => + obj.parent.insertAdjacentElement("beforebegin", obj.target) + ); +}; + +/** + * Small JavaScript module for the documentation. + */ +const SphinxHighlight = { + + /** + * highlight the search words provided in localstorage in the text + */ + highlightSearchWords: () => { + if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight + + // get and clear terms from localstorage + const url = new URL(window.location); + const highlight = + localStorage.getItem("sphinx_highlight_terms") + || url.searchParams.get("highlight") + || ""; + localStorage.removeItem("sphinx_highlight_terms") + url.searchParams.delete("highlight"); + window.history.replaceState({}, "", url); + + // get individual terms from highlight string + const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); + if (terms.length === 0) return; // nothing to do + + // There should never be more than one element matching "div.body" + const divBody = document.querySelectorAll("div.body"); + const body = divBody.length ? divBody[0] : document.querySelector("body"); + window.setTimeout(() => { + terms.forEach((term) => _highlightText(body, term, "highlighted")); + }, 10); + + const searchBox = document.getElementById("searchbox"); + if (searchBox === null) return; + searchBox.appendChild( + document + .createRange() + .createContextualFragment( + '" + ) + ); + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords: () => { + document + .querySelectorAll("#searchbox .highlight-link") + .forEach((el) => el.remove()); + document + .querySelectorAll("span.highlighted") + .forEach((el) => el.classList.remove("highlighted")); + localStorage.removeItem("sphinx_highlight_terms") + }, + + initEscapeListener: () => { + // only install a listener if it is really needed + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return; + if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === "Escape")) { + SphinxHighlight.hideSearchWords(); + event.preventDefault(); + } + }); + }, +}; + +_ready(() => { + /* Do not call highlightSearchWords() when we are on the search page. + * It will highlight words from the *previous* search query. + */ + if (typeof Search === "undefined") SphinxHighlight.highlightSearchWords(); + SphinxHighlight.initEscapeListener(); +}); diff --git a/apps/_documentation/static/en/chapter-01.html b/apps/_documentation/static/en/chapter-01.html index a6459ad45..e37b3d28c 100644 --- a/apps/_documentation/static/en/chapter-01.html +++ b/apps/_documentation/static/en/chapter-01.html @@ -4,7 +4,7 @@ - What is py4web? — py4web 1.20231029.1 documentation + What is py4web? — py4web 1.20231114.1 documentation @@ -16,7 +16,7 @@ - + @@ -40,7 +40,7 @@
- 1.20231029.1 + 1.20231114.1
@@ -256,7 +256,7 @@

Acknowledgments - v: 1.20231029.1 + v: 1.20231114.1
diff --git a/apps/_documentation/static/en/chapter-02.html b/apps/_documentation/static/en/chapter-02.html index 933b8b95f..c3320c746 100644 --- a/apps/_documentation/static/en/chapter-02.html +++ b/apps/_documentation/static/en/chapter-02.html @@ -4,7 +4,7 @@ - Help, resources and hints — py4web 1.20231029.1 documentation + Help, resources and hints — py4web 1.20231114.1 documentation @@ -16,7 +16,7 @@ - + @@ -40,7 +40,7 @@
- 1.20231029.1 + 1.20231114.1
@@ -261,7 +261,7 @@

How to contribute - v: 1.20231029.1 + v: 1.20231114.1
diff --git a/apps/_documentation/static/en/chapter-03.html b/apps/_documentation/static/en/chapter-03.html index 3ec68490a..2a373d743 100644 --- a/apps/_documentation/static/en/chapter-03.html +++ b/apps/_documentation/static/en/chapter-03.html @@ -4,7 +4,7 @@ - Installation and Startup — py4web 1.20231029.1 documentation + Installation and Startup — py4web 1.20231114.1 documentation @@ -16,7 +16,7 @@ - + @@ -41,7 +41,7 @@
- 1.20231029.1 + 1.20231114.1
@@ -700,7 +700,7 @@

Deployment on Ubuntu - v: 1.20231029.1 + v: 1.20231114.1
diff --git a/apps/_documentation/static/en/chapter-04.html b/apps/_documentation/static/en/chapter-04.html index cbb3034c2..19484bcf4 100644 --- a/apps/_documentation/static/en/chapter-04.html +++ b/apps/_documentation/static/en/chapter-04.html @@ -4,7 +4,7 @@ - The Dashboard — py4web 1.20231029.1 documentation + The Dashboard — py4web 1.20231114.1 documentation @@ -16,7 +16,7 @@ - + @@ -40,7 +40,7 @@
- 1.20231029.1 + 1.20231114.1
@@ -198,7 +198,7 @@

Login into the Dashboard - v: 1.20231029.1 + v: 1.20231114.1
diff --git a/apps/_documentation/static/en/chapter-05.html b/apps/_documentation/static/en/chapter-05.html index cda15ea8b..e88e70562 100644 --- a/apps/_documentation/static/en/chapter-05.html +++ b/apps/_documentation/static/en/chapter-05.html @@ -4,7 +4,7 @@ - Creating your first app — py4web 1.20231029.1 documentation + Creating your first app — py4web 1.20231114.1 documentation @@ -16,7 +16,7 @@ - + @@ -40,7 +40,7 @@
- 1.20231029.1 + 1.20231114.1
@@ -525,7 +525,7 @@

Watch for files change - v: 1.20231029.1 + v: 1.20231114.1
diff --git a/apps/_documentation/static/en/chapter-06.html b/apps/_documentation/static/en/chapter-06.html index 3896d3139..2d7591760 100644 --- a/apps/_documentation/static/en/chapter-06.html +++ b/apps/_documentation/static/en/chapter-06.html @@ -4,7 +4,7 @@ - Fixtures — py4web 1.20231029.1 documentation + Fixtures — py4web 1.20231114.1 documentation @@ -16,7 +16,7 @@ - + @@ -40,7 +40,7 @@
- 1.20231029.1 + 1.20231114.1
@@ -987,7 +987,7 @@

Convenience Decorators - v: 1.20231029.1 + v: 1.20231114.1
diff --git a/apps/_documentation/static/en/chapter-07.html b/apps/_documentation/static/en/chapter-07.html index 67bede5a5..603ff16d5 100644 --- a/apps/_documentation/static/en/chapter-07.html +++ b/apps/_documentation/static/en/chapter-07.html @@ -4,7 +4,7 @@ - The Database Abstraction Layer (DAL) — py4web 1.20231029.1 documentation + The Database Abstraction Layer (DAL) — py4web 1.20231114.1 documentation @@ -16,7 +16,7 @@ - + @@ -40,7 +40,7 @@
- 1.20231029.1 + 1.20231114.1
@@ -1724,11 +1724,11 @@

validate_and_in

except that it calls the validators for the fields before performing the insert and bails out if the validation does not pass. If validation does -not pass the errors can be found in ret.errors. ret.errors holds +not pass the errors can be found in ret["errors"]. ret["errors"] holds a key-value mapping where each key is the field name whose validation failed, and the value of the key is the result from the validation error -(much like form.errors). If it passes, the id of the new record is -in ret.id. Mind that normally validation is done by the form +(much like form["errors"]). If it passes, the id of the new record is +in ret["id"]. Mind that normally validation is done by the form processing logic so this function is rarely needed.

Similarly

ret = db(query).validate_and_update(field='value')
@@ -1740,8 +1740,8 @@ 

validate_and_in

except that it calls the validators for the fields before performing the update. Notice that it only works if query involves a single table. The -number of updated records can be found in ret.updated and errors -will be in ret.errors.

+number of updated records can be found in ret["updated"] and errors +will be in ret["errors"].

drop

@@ -4532,7 +4532,7 @@

Google NoSQL (Datastore) - v: 1.20231029.1 + v: 1.20231114.1
diff --git a/apps/_documentation/static/en/chapter-08.html b/apps/_documentation/static/en/chapter-08.html index a840def5b..5a5c77b1e 100644 --- a/apps/_documentation/static/en/chapter-08.html +++ b/apps/_documentation/static/en/chapter-08.html @@ -4,7 +4,7 @@ - The RestAPI — py4web 1.20231029.1 documentation + The RestAPI — py4web 1.20231114.1 documentation @@ -16,7 +16,7 @@ - + @@ -40,7 +40,7 @@
- 1.20231029.1 + 1.20231114.1
@@ -1169,7 +1169,7 @@

The RestAPI response - v: 1.20231029.1 + v: 1.20231114.1
diff --git a/apps/_documentation/static/en/chapter-09.html b/apps/_documentation/static/en/chapter-09.html index c3fb8b359..f5084c880 100644 --- a/apps/_documentation/static/en/chapter-09.html +++ b/apps/_documentation/static/en/chapter-09.html @@ -4,7 +4,7 @@ - YATL Template Language — py4web 1.20231029.1 documentation + YATL Template Language — py4web 1.20231114.1 documentation @@ -16,7 +16,7 @@ - + @@ -40,7 +40,7 @@
- 1.20231029.1 + 1.20231114.1
@@ -760,7 +760,7 @@

Mobile development - v: 1.20231029.1 + v: 1.20231114.1
diff --git a/apps/_documentation/static/en/chapter-10.html b/apps/_documentation/static/en/chapter-10.html index 22224e274..59238ae45 100644 --- a/apps/_documentation/static/en/chapter-10.html +++ b/apps/_documentation/static/en/chapter-10.html @@ -4,7 +4,7 @@ - YATL helpers — py4web 1.20231029.1 documentation + YATL helpers — py4web 1.20231114.1 documentation @@ -16,7 +16,7 @@ - + @@ -40,7 +40,7 @@
- 1.20231029.1 + 1.20231114.1
@@ -870,7 +870,7 @@

Using Inject - v: 1.20231029.1 + v: 1.20231114.1
diff --git a/apps/_documentation/static/en/chapter-11.html b/apps/_documentation/static/en/chapter-11.html index 0faa1e401..231955b22 100644 --- a/apps/_documentation/static/en/chapter-11.html +++ b/apps/_documentation/static/en/chapter-11.html @@ -4,7 +4,7 @@ - Internationalization — py4web 1.20231029.1 documentation + Internationalization — py4web 1.20231114.1 documentation @@ -16,7 +16,7 @@ - + @@ -40,7 +40,7 @@
- 1.20231029.1 + 1.20231114.1
@@ -218,7 +218,7 @@

Update the translation files - v: 1.20231029.1 + v: 1.20231114.1
diff --git a/apps/_documentation/static/en/chapter-12.html b/apps/_documentation/static/en/chapter-12.html index 7a5cfdd86..f8b17dabd 100644 --- a/apps/_documentation/static/en/chapter-12.html +++ b/apps/_documentation/static/en/chapter-12.html @@ -4,7 +4,7 @@ - Forms — py4web 1.20231029.1 documentation + Forms — py4web 1.20231114.1 documentation @@ -16,7 +16,7 @@ - + @@ -40,7 +40,7 @@
- 1.20231029.1 + 1.20231114.1
@@ -1615,7 +1615,7 @@

Validation functions - v: 1.20231029.1 + v: 1.20231114.1
diff --git a/apps/_documentation/static/en/chapter-13.html b/apps/_documentation/static/en/chapter-13.html index 851468ad2..1757f0b04 100644 --- a/apps/_documentation/static/en/chapter-13.html +++ b/apps/_documentation/static/en/chapter-13.html @@ -4,7 +4,7 @@ - Authentication and authorization — py4web 1.20231029.1 documentation + Authentication and authorization — py4web 1.20231114.1 documentation @@ -16,7 +16,7 @@ - + @@ -40,7 +40,7 @@
- 1.20231029.1 + 1.20231114.1
@@ -608,7 +608,7 @@

User Impersonation - v: 1.20231029.1 + v: 1.20231114.1
diff --git a/apps/_documentation/static/en/chapter-14.html b/apps/_documentation/static/en/chapter-14.html index b742fa7de..4ea91a174 100644 --- a/apps/_documentation/static/en/chapter-14.html +++ b/apps/_documentation/static/en/chapter-14.html @@ -4,7 +4,7 @@ - Grid — py4web 1.20231029.1 documentation + Grid — py4web 1.20231114.1 documentation @@ -16,7 +16,7 @@ - + @@ -40,7 +40,7 @@
- 1.20231029.1 + 1.20231114.1
@@ -650,7 +650,7 @@

Reference Fields - v: 1.20231029.1 + v: 1.20231114.1
diff --git a/apps/_documentation/static/en/chapter-15.html b/apps/_documentation/static/en/chapter-15.html index 3a93b2b8f..d62d098b7 100644 --- a/apps/_documentation/static/en/chapter-15.html +++ b/apps/_documentation/static/en/chapter-15.html @@ -4,7 +4,7 @@ - From web2py to py4web — py4web 1.20231029.1 documentation + From web2py to py4web — py4web 1.20231114.1 documentation @@ -16,7 +16,7 @@ - + @@ -40,7 +40,7 @@
- 1.20231029.1 + 1.20231114.1
@@ -488,7 +488,7 @@

“auth” example - v: 1.20231029.1 + v: 1.20231114.1
diff --git a/apps/_documentation/static/en/chapter-16.html b/apps/_documentation/static/en/chapter-16.html index 53a2bc3d9..8ea9f96fe 100644 --- a/apps/_documentation/static/en/chapter-16.html +++ b/apps/_documentation/static/en/chapter-16.html @@ -4,7 +4,7 @@ - Advanced topics and examples — py4web 1.20231029.1 documentation + Advanced topics and examples — py4web 1.20231114.1 documentation @@ -16,7 +16,7 @@ - + @@ -39,7 +39,7 @@
- 1.20231029.1 + 1.20231114.1
@@ -756,7 +756,7 @@

The T object - v: 1.20231029.1 + v: 1.20231114.1
diff --git a/apps/_documentation/static/en/genindex.html b/apps/_documentation/static/en/genindex.html index 14b5d23d3..0e6ae88b8 100644 --- a/apps/_documentation/static/en/genindex.html +++ b/apps/_documentation/static/en/genindex.html @@ -3,7 +3,7 @@ - Index — py4web 1.20231029.1 documentation + Index — py4web 1.20231114.1 documentation @@ -15,7 +15,7 @@ - + @@ -38,7 +38,7 @@
- 1.20231029.1 + 1.20231114.1
@@ -132,7 +132,7 @@

Index

- v: 1.20231029.1 + v: 1.20231114.1
diff --git a/apps/_documentation/static/en/index.html b/apps/_documentation/static/en/index.html index dedd156bd..eb3364f3d 100644 --- a/apps/_documentation/static/en/index.html +++ b/apps/_documentation/static/en/index.html @@ -4,7 +4,7 @@ - py4web: the reference Manual — py4web 1.20231029.1 documentation + py4web: the reference Manual — py4web 1.20231114.1 documentation @@ -16,7 +16,7 @@ - + @@ -39,7 +39,7 @@
- 1.20231029.1 + 1.20231114.1
@@ -275,7 +275,7 @@

Indices and tables - v: 1.20231029.1 + v: 1.20231114.1
diff --git a/apps/_documentation/static/en/objects.inv b/apps/_documentation/static/en/objects.inv index 8d94adea7e756d22f8e5063f74e8473c381876cd..25af296409d6fd1dd995a11e03138d559000f21a 100644 GIT binary patch delta 14 Vcmdnsu)$%1BeS8Q$wrqq@&G9J1xo+` delta 14 Vcmdnsu)$%1BeQ{# - Search — py4web 1.20231029.1 documentation + Search — py4web 1.20231114.1 documentation @@ -16,7 +16,7 @@ - + @@ -41,7 +41,7 @@
- 1.20231029.1 + 1.20231114.1
@@ -139,7 +139,7 @@ - v: 1.20231029.1 + v: 1.20231114.1
diff --git a/apps/_documentation/static/pt/.buildinfo b/apps/_documentation/static/pt/.buildinfo index 194e97c81..aaf9e14d6 100644 --- a/apps/_documentation/static/pt/.buildinfo +++ b/apps/_documentation/static/pt/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: c5e20d13f84abfca8be392ce51417f21 +config: 9fd761a34f20cac4ddb42338a51d4e44 tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/apps/_documentation/static/pt/_static/documentation_options.js b/apps/_documentation/static/pt/_static/documentation_options.js index 2354421df..a99fed98a 100644 --- a/apps/_documentation/static/pt/_static/documentation_options.js +++ b/apps/_documentation/static/pt/_static/documentation_options.js @@ -1,5 +1,5 @@ const DOCUMENTATION_OPTIONS = { - VERSION: '1.20231029.1', + VERSION: '1.20231114.1', LANGUAGE: 'pt', COLLAPSE_INDEX: false, BUILDER: 'html', diff --git a/apps/_documentation/static/pt/chapter-01.html b/apps/_documentation/static/pt/chapter-01.html index 146776608..18c1e8ed3 100644 --- a/apps/_documentation/static/pt/chapter-01.html +++ b/apps/_documentation/static/pt/chapter-01.html @@ -4,7 +4,7 @@ - O que é py4web? — Documentação py4web 1.20231029.1 + O que é py4web? — Documentação py4web 1.20231114.1 @@ -16,7 +16,7 @@ - + @@ -41,7 +41,7 @@
- 1.20231029.1 + 1.20231114.1
@@ -231,7 +231,7 @@

Acknowledgments - v: 1.20231029.1 + v: 1.20231114.1
diff --git a/apps/_documentation/static/pt/chapter-02.html b/apps/_documentation/static/pt/chapter-02.html index 00d9d72ba..650d18acc 100644 --- a/apps/_documentation/static/pt/chapter-02.html +++ b/apps/_documentation/static/pt/chapter-02.html @@ -4,7 +4,7 @@ - Ajuda, recursos e dicas — Documentação py4web 1.20231029.1 + Ajuda, recursos e dicas — Documentação py4web 1.20231114.1 @@ -16,7 +16,7 @@ - + @@ -41,7 +41,7 @@
- 1.20231029.1 + 1.20231114.1
@@ -254,7 +254,7 @@

Como contribuir - v: 1.20231029.1 + v: 1.20231114.1
diff --git a/apps/_documentation/static/pt/chapter-03.html b/apps/_documentation/static/pt/chapter-03.html index 0f0980738..0178ef5b0 100644 --- a/apps/_documentation/static/pt/chapter-03.html +++ b/apps/_documentation/static/pt/chapter-03.html @@ -4,7 +4,7 @@ - Instalação e colocação em funcionamento — Documentação py4web 1.20231029.1 + Instalação e colocação em funcionamento — Documentação py4web 1.20231114.1 @@ -16,7 +16,7 @@ - + @@ -42,7 +42,7 @@
- 1.20231029.1 + 1.20231114.1
@@ -653,7 +653,7 @@

Deployment on Ubuntu - v: 1.20231029.1 + v: 1.20231114.1
diff --git a/apps/_documentation/static/pt/chapter-04.html b/apps/_documentation/static/pt/chapter-04.html index 5eb4cb455..6b2ed0966 100644 --- a/apps/_documentation/static/pt/chapter-04.html +++ b/apps/_documentation/static/pt/chapter-04.html @@ -4,7 +4,7 @@ - O Dashboard — Documentação py4web 1.20231029.1 + O Dashboard — Documentação py4web 1.20231114.1 @@ -16,7 +16,7 @@ - + @@ -41,7 +41,7 @@
- 1.20231029.1 + 1.20231114.1
@@ -188,7 +188,7 @@

Sessão no Dashboard - v: 1.20231029.1 + v: 1.20231114.1
diff --git a/apps/_documentation/static/pt/chapter-05.html b/apps/_documentation/static/pt/chapter-05.html index d20446163..6e1bba68d 100644 --- a/apps/_documentation/static/pt/chapter-05.html +++ b/apps/_documentation/static/pt/chapter-05.html @@ -4,7 +4,7 @@ - Criando seu primeiro aplicativo — Documentação py4web 1.20231029.1 + Criando seu primeiro aplicativo — Documentação py4web 1.20231114.1 @@ -16,7 +16,7 @@ - + @@ -41,7 +41,7 @@
- 1.20231029.1 + 1.20231114.1
@@ -470,7 +470,7 @@

Watch for files change - v: 1.20231029.1 + v: 1.20231114.1
diff --git a/apps/_documentation/static/pt/chapter-06.html b/apps/_documentation/static/pt/chapter-06.html index cfa0b41bf..8031ccfcb 100644 --- a/apps/_documentation/static/pt/chapter-06.html +++ b/apps/_documentation/static/pt/chapter-06.html @@ -4,7 +4,7 @@ - Fixures — Documentação py4web 1.20231029.1 + Fixures — Documentação py4web 1.20231114.1 @@ -16,7 +16,7 @@ - + @@ -41,7 +41,7 @@
- 1.20231029.1 + 1.20231114.1
@@ -949,7 +949,7 @@

Decoradores de conveniência - v: 1.20231029.1 + v: 1.20231114.1
diff --git a/apps/_documentation/static/pt/chapter-07.html b/apps/_documentation/static/pt/chapter-07.html index b6ba7fea3..6f148f40c 100644 --- a/apps/_documentation/static/pt/chapter-07.html +++ b/apps/_documentation/static/pt/chapter-07.html @@ -4,7 +4,7 @@ - The Database Abstraction Layer (DAL) — Documentação py4web 1.20231029.1 + The Database Abstraction Layer (DAL) — Documentação py4web 1.20231114.1 @@ -16,7 +16,7 @@ - + @@ -41,7 +41,7 @@
- 1.20231029.1 + 1.20231114.1
@@ -1477,7 +1477,14 @@

`` Validate_and_insert``, `` validate_and_update``
id = db.mytable.insert(field='value')
 

-

exceto que ele chama os validadores para os campos antes de realizar a inserção e fianças se a validação não passa. Se a validação não passa os erros podem ser encontradas em `` ret.errors``. `` Ret.errors`` mantém um mapeamento de valores-chave, onde cada chave é o nome do campo cuja validação falhou, e o valor da chave é o resultado do erro de validação (muito parecido com `` form.errors``). Se passar, o ID do novo registro é em `` ret.id``. Mente que normalmente validação é feita pela lógica de processamento de formulário para essa função é raramente necessária.

+

except that it calls the validators for the fields before performing the +insert and bails out if the validation does not pass. If validation does +not pass the errors can be found in ret["errors"]. ret["errors"] holds +a key-value mapping where each key is the field name whose validation +failed, and the value of the key is the result from the validation error +(much like form["errors"]). If it passes, the id of the new record is +in ret["id"]. Mind that normally validation is done by the form +processing logic so this function is rarely needed.

Similarmente

-

exceto que ele chama os validadores para os campos antes de realizar a atualização. Note que ele só funciona se consulta envolve uma única tabela. O número de registros atualizados podem ser encontrados em `` ret.updated`` e erros será no `` ret.errors``.

+

except that it calls the validators for the fields before performing the +update. Notice that it only works if query involves a single table. The +number of updated records can be found in ret["updated"] and errors +will be in ret["errors"].

`` Drop``

@@ -3812,7 +3822,7 @@

Google NoSQL (Datastore) - v: 1.20231029.1 + v: 1.20231114.1
diff --git a/apps/_documentation/static/pt/chapter-08.html b/apps/_documentation/static/pt/chapter-08.html index 07511fb77..51a255f2a 100644 --- a/apps/_documentation/static/pt/chapter-08.html +++ b/apps/_documentation/static/pt/chapter-08.html @@ -4,7 +4,7 @@ - The RestAPI — Documentação py4web 1.20231029.1 + The RestAPI — Documentação py4web 1.20231114.1 @@ -16,7 +16,7 @@ - + @@ -41,7 +41,7 @@
- 1.20231029.1 + 1.20231114.1
@@ -1167,7 +1167,7 @@

The RestAPI response - v: 1.20231029.1 + v: 1.20231114.1
diff --git a/apps/_documentation/static/pt/chapter-09.html b/apps/_documentation/static/pt/chapter-09.html index e65aaf231..f4f8bf113 100644 --- a/apps/_documentation/static/pt/chapter-09.html +++ b/apps/_documentation/static/pt/chapter-09.html @@ -4,7 +4,7 @@ - Linguagem de template YATL — Documentação py4web 1.20231029.1 + Linguagem de template YATL — Documentação py4web 1.20231114.1 @@ -16,7 +16,7 @@ - + @@ -41,7 +41,7 @@
- 1.20231029.1 + 1.20231114.1
@@ -732,7 +732,7 @@

Mobile development - v: 1.20231029.1 + v: 1.20231114.1
diff --git a/apps/_documentation/static/pt/chapter-10.html b/apps/_documentation/static/pt/chapter-10.html index 352a3dac4..d3c7eb8ac 100644 --- a/apps/_documentation/static/pt/chapter-10.html +++ b/apps/_documentation/static/pt/chapter-10.html @@ -4,7 +4,7 @@ - Helpers YATL — Documentação py4web 1.20231029.1 + Helpers YATL — Documentação py4web 1.20231114.1 @@ -16,7 +16,7 @@ - + @@ -41,7 +41,7 @@
- 1.20231029.1 + 1.20231114.1
@@ -841,7 +841,7 @@

Using Inject - v: 1.20231029.1 + v: 1.20231114.1
diff --git a/apps/_documentation/static/pt/chapter-11.html b/apps/_documentation/static/pt/chapter-11.html index 255e6c11c..92fe8beb1 100644 --- a/apps/_documentation/static/pt/chapter-11.html +++ b/apps/_documentation/static/pt/chapter-11.html @@ -4,7 +4,7 @@ - Internacionalização — Documentação py4web 1.20231029.1 + Internacionalização — Documentação py4web 1.20231114.1 @@ -16,7 +16,7 @@ - + @@ -41,7 +41,7 @@
- 1.20231029.1 + 1.20231114.1
@@ -210,7 +210,7 @@

Atualizar os arquivos de tradução - v: 1.20231029.1 + v: 1.20231114.1
diff --git a/apps/_documentation/static/pt/chapter-12.html b/apps/_documentation/static/pt/chapter-12.html index 80af59410..917ff235c 100644 --- a/apps/_documentation/static/pt/chapter-12.html +++ b/apps/_documentation/static/pt/chapter-12.html @@ -4,7 +4,7 @@ - Forumlários — Documentação py4web 1.20231029.1 + Forumlários — Documentação py4web 1.20231114.1 @@ -16,7 +16,7 @@ - + @@ -41,7 +41,7 @@
- 1.20231029.1 + 1.20231114.1
@@ -1616,7 +1616,7 @@

Validation functions - v: 1.20231029.1 + v: 1.20231114.1
diff --git a/apps/_documentation/static/pt/chapter-13.html b/apps/_documentation/static/pt/chapter-13.html index f59521c71..2754995dc 100644 --- a/apps/_documentation/static/pt/chapter-13.html +++ b/apps/_documentation/static/pt/chapter-13.html @@ -4,7 +4,7 @@ - Authentication and authorization — Documentação py4web 1.20231029.1 + Authentication and authorization — Documentação py4web 1.20231114.1 @@ -16,7 +16,7 @@ - + @@ -41,7 +41,7 @@
- 1.20231029.1 + 1.20231114.1
@@ -596,7 +596,7 @@

User Impersonation - v: 1.20231029.1 + v: 1.20231114.1
diff --git a/apps/_documentation/static/pt/chapter-14.html b/apps/_documentation/static/pt/chapter-14.html index e48ee0911..ca9214b59 100644 --- a/apps/_documentation/static/pt/chapter-14.html +++ b/apps/_documentation/static/pt/chapter-14.html @@ -4,7 +4,7 @@ - Rede — Documentação py4web 1.20231029.1 + Rede — Documentação py4web 1.20231114.1 @@ -16,7 +16,7 @@ - + @@ -41,7 +41,7 @@
- 1.20231029.1 + 1.20231114.1
@@ -625,7 +625,7 @@

Os campos de referência - v: 1.20231029.1 + v: 1.20231114.1
diff --git a/apps/_documentation/static/pt/chapter-15.html b/apps/_documentation/static/pt/chapter-15.html index 23a7dc5e9..fc48c459d 100644 --- a/apps/_documentation/static/pt/chapter-15.html +++ b/apps/_documentation/static/pt/chapter-15.html @@ -4,7 +4,7 @@ - De web2py para py4web — Documentação py4web 1.20231029.1 + De web2py para py4web — Documentação py4web 1.20231114.1 @@ -16,7 +16,7 @@ - + @@ -41,7 +41,7 @@
- 1.20231029.1 + 1.20231114.1
@@ -489,7 +489,7 @@

“auth” example - v: 1.20231029.1 + v: 1.20231114.1
diff --git a/apps/_documentation/static/pt/chapter-16.html b/apps/_documentation/static/pt/chapter-16.html index cdf601f5f..f316beae3 100644 --- a/apps/_documentation/static/pt/chapter-16.html +++ b/apps/_documentation/static/pt/chapter-16.html @@ -4,7 +4,7 @@ - Advanced topics and examples — Documentação py4web 1.20231029.1 + Advanced topics and examples — Documentação py4web 1.20231114.1 @@ -16,7 +16,7 @@ - + @@ -40,7 +40,7 @@
- 1.20231029.1 + 1.20231114.1
@@ -757,7 +757,7 @@

The T object - v: 1.20231029.1 + v: 1.20231114.1
diff --git a/apps/_documentation/static/pt/genindex.html b/apps/_documentation/static/pt/genindex.html index 6942a655c..4e0c9672c 100644 --- a/apps/_documentation/static/pt/genindex.html +++ b/apps/_documentation/static/pt/genindex.html @@ -3,7 +3,7 @@ - Índice — Documentação py4web 1.20231029.1 + Índice — Documentação py4web 1.20231114.1 @@ -15,7 +15,7 @@ - + @@ -39,7 +39,7 @@
- 1.20231029.1 + 1.20231114.1
@@ -133,7 +133,7 @@

Índice

- v: 1.20231029.1 + v: 1.20231114.1
diff --git a/apps/_documentation/static/pt/index.html b/apps/_documentation/static/pt/index.html index 07b20c658..0dd06fba4 100644 --- a/apps/_documentation/static/pt/index.html +++ b/apps/_documentation/static/pt/index.html @@ -4,7 +4,7 @@ - py4web: o manual de referência — Documentação py4web 1.20231029.1 + py4web: o manual de referência — Documentação py4web 1.20231114.1 @@ -16,7 +16,7 @@ - + @@ -40,7 +40,7 @@
- 1.20231029.1 + 1.20231114.1
@@ -276,7 +276,7 @@

Índices e tabelas - v: 1.20231029.1 + v: 1.20231114.1
diff --git a/apps/_documentation/static/pt/objects.inv b/apps/_documentation/static/pt/objects.inv index 89dd6e42c1e31a4a151fb8aeaafeff702041f912..c527d3cb465781544857516f33d6dc1658112bb4 100644 GIT binary patch delta 14 VcmaFv@!VsABeS8Q$wn7t6#y;31qA>A delta 14 VcmaFv@!VsABeQ{# - Pesquisar — Documentação py4web 1.20231029.1 + Pesquisar — Documentação py4web 1.20231114.1 @@ -16,7 +16,7 @@ - + @@ -42,7 +42,7 @@
- 1.20231029.1 + 1.20231114.1
@@ -140,7 +140,7 @@ - v: 1.20231029.1 + v: 1.20231114.1
diff --git a/apps/_documentation/static/pt/searchindex.js b/apps/_documentation/static/pt/searchindex.js index f7391c451..79d770f0e 100644 --- a/apps/_documentation/static/pt/searchindex.js +++ b/apps/_documentation/static/pt/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["chapter-01", "chapter-02", "chapter-03", "chapter-04", "chapter-05", "chapter-06", "chapter-07", "chapter-08", "chapter-09", "chapter-10", "chapter-11", "chapter-12", "chapter-13", "chapter-14", "chapter-15", "chapter-16", "index"], "filenames": ["chapter-01.rst", "chapter-02.rst", "chapter-03.rst", "chapter-04.rst", "chapter-05.rst", "chapter-06.rst", "chapter-07.rst", "chapter-08.rst", "chapter-09.rst", "chapter-10.rst", "chapter-11.rst", "chapter-12.rst", "chapter-13.rst", "chapter-14.rst", "chapter-15.rst", "chapter-16.rst", "index.rst"], "titles": ["O que \u00e9 py4web?", "Ajuda, recursos e dicas", "Instala\u00e7\u00e3o e coloca\u00e7\u00e3o em funcionamento", "O Dashboard", "Criando seu primeiro aplicativo", "Fixures", "The Database Abstraction Layer (DAL)", "The RestAPI", "Linguagem de template YATL", "Helpers YATL", "Internacionaliza\u00e7\u00e3o", "Foruml\u00e1rios", "Authentication and authorization", "Rede", "De web2py para py4web", "Advanced topics and examples", "py4web: o manual de refer\u00eancia"], "terms": {"is": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "web": [0, 1, 2, 5, 6, 8, 12, 13, 14, 15, 16], "framework": [0, 2, 11, 12, 13, 14, 15], "rapid": [0, 11, 15], "development": [0, 1, 4, 6], "of": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "efficient": 0, "databas": [0, 1, 3, 4, 7, 12, 13, 14, 15, 16], "driven": 0, "applications": [0, 2, 3, 4, 6, 11, 12, 13], "it": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], "an": [0, 1, 2, 3, 4, 5, 6, 8, 9, 11, 12, 13, 14, 15], "evolution": 0, "the": [0, 3, 8, 9, 10, 12, 14, 16], "popul": [0, 6], "web2py": [0, 1, 2, 3, 4, 6, 11, 12, 13, 16], "but": [0, 1, 2, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "much": [0, 1, 5, 6, 8, 11, 13, 14, 15], "fast": [0, 4, 6, 8, 14, 15], "and": [0, 1, 2, 3, 4, 5, 9, 16], "slick": 0, "its": [0, 1, 2, 3, 4, 5, 6, 8, 9, 11, 12, 13, 14, 15], "internal": [0, 1, 8, 12], "design": [0, 12, 15, 16], "has": [0, 2, 4, 5, 6, 8, 11, 12, 13, 14, 15], "been": [0, 2, 5, 6, 8, 11], "simplified": [0, 4, 8], "compared": 0, "to": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15], "can": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], "be": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "seen": [0, 5, 7, 9, 11, 13, 15], "competitor": 0, "other": [0, 1, 2, 4, 5, 6, 7, 8, 9, 12, 13, 14, 15], "frameworks": [0, 2, 5, 14, 15], "lik": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15], "djang": [0, 1, 14], "or": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "flask": [0, 14], "indeed": [0, 5], "serv": [0, 2, 3, 4, 7, 8, 12, 14, 15, 16], "sam": [0, 2, 5, 6, 7, 8, 11, 12, 14, 15], "purpos": [0, 4, 6, 9, 11, 12, 14], "yet": [0, 2, 4, 5, 8, 11, 15], "aims": 0, "provid": [0, 4, 5, 6, 8, 9, 11, 12, 13, 14, 15], "larg": [0, 11], "featur": [0, 4, 6, 7, 8, 14, 16], "set": [0, 2, 5, 7, 8, 9, 10, 13, 14, 15], "out": [0, 1, 5, 8, 11, 15], "box": [0, 6, 11], "reduc": [0, 15], "tim": [0, 4, 5, 6, 8, 13, 14, 15], "new": [0, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], "apps": [0, 1, 2, 3, 4, 5, 6, 8, 12, 14], "from": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], "historical": 0, "perspectiv": 0, "our": [0, 1, 2, 5, 6, 9, 11, 15], "story": 0, "starts": [0, 3, 5, 8, 14], "in": [0, 1, 2, 3, 4, 6, 7, 10, 11, 12, 13, 14, 16], "2007": 0, "when": [0, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "was": [0, 5, 6, 11, 12], "first": [0, 2, 3, 5, 7, 8, 9, 11, 12, 13, 14, 15], "released": 0, "designed": [0, 4, 6, 8, 11], "all": [0, 1, 2, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "inclusiv": [0, 11], "solution": [0, 15], "one": [0, 2, 4, 5, 6, 7, 8, 11, 12, 13, 15], "zip": [0, 2, 6, 11], "fil": [0, 1, 2, 3, 5, 6, 8, 9, 10, 12, 13, 15, 16], "containing": [0, 2, 5, 11, 12, 13, 15], "python": [0, 2, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15], "interpret": [0, 6], "based": [0, 3, 4, 5, 7, 8, 11, 12, 13, 14, 15], "ide": [0, 1, 2, 3, 6], "collection": [0, 14], "battl": 0, "tested": [0, 2, 9, 12], "packag": [0, 6, 9], "that": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], "work": [0, 2, 4, 5, 6, 8, 9, 11, 15], "well": [0, 5, 6, 8, 11, 12, 15], "togeth": [0, 8], "many": [0, 1, 2, 4, 5, 7, 8, 11, 13, 14, 15], "ways": [0, 2, 4, 6, 12, 13, 15], "immensely": 0, "successful": [0, 12], "succeeded": 0, "providing": [0, 13, 14], "low": [0, 11], "barri": 0, "entry": [0, 6, 14], "developers": [0, 1, 6, 12, 15], "very": [0, 4, 8, 9, 11, 12, 14], "secur": [0, 11], "platform": [0, 1], "remains": 0, "backwards": [0, 11], "compatibl": [0, 1, 9, 11], "until": [0, 5, 6, 8, 11], "today": [0, 11, 15], "always": [0, 2, 4, 5, 6, 11, 15], "suffered": 0, "probl": [0, 6, 8, 13], "monolithic": 0, "most": [0, 4, 5, 6, 11, 12, 13, 14, 15], "experienced": 0, "did": [0, 4, 15], "not": [0, 1, 2, 4, 5, 7, 8, 9, 11, 12, 13, 14, 15], "understand": [0, 2, 4, 6, 7, 8], "how": [0, 2, 4, 5, 6, 7, 8, 11, 12, 13, 14, 15], "use": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "components": [0, 3, 9, 11, 15], "outsid": [0, 5, 6, 11, 13, 14, 15], "third": [0, 5, 11], "party": [0, 5], "within": [0, 1, 5, 6, 8, 9, 11, 15], "we": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "thought": [0, 6, 12], "perfect": 0, "tool": 0, "hav": [0, 1, 2, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "broken": [0, 6, 11], "into": [0, 2, 4, 5, 6, 8, 9, 11, 14, 15], "piec": [0, 11], "becaus": [0, 4, 5, 6, 8, 9, 11, 13, 15], "would": [0, 5, 6, 9, 11, 15], "compromis": 0, "security": [0, 7, 12], "turned": 0, "wer": [0, 4], "wrong": [0, 5, 6], "playing": 0, "with": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 13, 15], "others": [0, 6, 14], "important": [0, 2, 4, 5, 6, 11, 12], "henc": [0, 2, 5, 6, 11], "sinc": [0, 2, 4, 5, 7, 8, 11, 13, 14], "2015": 0, "worked": 0, "on": [0, 1, 3, 4, 5, 6, 7, 8, 11, 12, 13, 14, 15], "thre": [0, 5, 6], "fronts": 0, "N\u00f3s": [0, 1, 5], "port": [0, 2, 3, 5, 6, 14], "par": [0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 15, 16], "3": [0, 1, 2, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "quebr": 0, "m\u00f3dul": [0, 1, 2, 5, 6], "pod": [0, 1, 2, 4, 5, 6, 7, 8, 9, 10, 12, 13], "ser": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13], "usad": [0, 4, 6, 9, 10, 12, 13], "form": [0, 4, 5, 6, 7, 10, 12, 13, 16], "independent": [0, 5, 6, 12], "reagrup": 0, "alguns": [0, 2, 4, 5, 6, 7, 8, 9], "dess": [0, 5, 6, 12], "nov": [0, 1, 2, 3, 4, 13], "modul": [0, 2, 4, 6, 8, 9, 11, 12, 13, 14], "quadr": [0, 1, 6], "mor": [0, 2, 4, 5, 6, 7, 8, 9, 11, 13, 14, 15], "than": [0, 5, 6, 8, 9, 11, 12, 13, 15], "repackaging": 0, "complet": [0, 2, 6, 9, 11, 13], "redesign": 0, "uses": [0, 1, 2, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "som": [0, 1, 2, 4, 5, 6, 7, 8, 9, 11, 12, 14], "them": [0, 1, 2, 4, 5, 6, 7, 8, 11, 12, 13, 14], "cas": [0, 1, 2, 3, 4, 5, 8, 9, 11, 12, 13, 14, 15], "bett": [0, 1, 2, 4, 6, 13, 14], "functionality": [0, 8, 14], "removed": [0, 6, 9, 11], "added": [0, 2, 5, 11, 12, 15], "tried": 0, "preserv": [0, 5], "syntax": [0, 1, 4, 5, 6, 7, 8, 9, 11, 14, 15], "users": [0, 1, 4, 5, 12, 14], "loved": 0, "her": [0, 1, 2, 4, 5, 6, 7, 8, 9, 11, 12, 13, 15], "explicit": [0, 2, 4, 5, 6, 8, 11], "list": [0, 1, 2, 4, 5, 7, 8, 9, 11, 12, 13, 15], "see": [0, 3, 4, 5, 6, 8, 9, 11, 12, 13, 15], "De": [0, 1, 4, 6, 16], "details": [0, 1, 5, 6, 7, 8, 11, 13], "if": [0, 1, 2, 3, 4, 5, 6, 7, 9, 11, 12, 13, 14, 15], "you": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "come": [0, 5], "contr\u00e1ri": [0, 4, 6, 8], "requ": [0, 2, 5, 6, 11, 12, 13, 14, 15], "unlik": [0, 2, 7, 8, 14, 15], "installed": [0, 1, 2, 3, 4, 5, 6], "using": [0, 1, 3, 4, 6, 7, 11, 14, 16], "pip": [0, 1, 6], "dependenc": [0, 2, 5, 14], "are": [0, 1, 2, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "managed": 0, "requirements": [0, 2, 11], "txt": [0, 2, 4, 6], "regul": [0, 2, 4, 6, 7, 8, 10, 11, 13, 14, 15], "this": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "different": [0, 2, 5, 6, 8, 11, 12, 14, 15], "particul": [0, 1, 6, 11, 13, 14, 15], "ditched": 0, "custom": [0, 4, 6, 8, 9, 14, 15, 16], "import": [0, 1, 2, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16], "rely": [0, 4, 6], "now": [0, 4, 5, 6, 11, 13, 15], "exclusively": [0, 5, 6], "mechanism": [0, 6, 8, 9, 12, 14], "m\u00faltipl": [0, 6], "aplic": [0, 2, 3, 5, 13, 14, 16], "concorrent": 0, "enquant": [0, 6, 8], "s\u00e3": [0, 1, 3, 4, 5, 6, 8, 9, 10, 12, 13], "subm\u00f3dul": 0, "ombott": [0, 4, 14], "reduced": 0, "spin": [0, 4], "off": [0, 2, 4, 13, 15], "bottl": [0, 4, 5, 8, 14], "request": [0, 1, 2, 5, 6, 7, 11, 12, 13, 14, 15], "object": [0, 4, 5, 6, 7, 8, 9, 11, 12, 14, 16], "routing": [0, 4, 14], "does": [0, 2, 5, 6, 8, 11, 12, 13, 14, 15], "creat": [0, 1, 2, 4, 5, 6, 8, 11, 12, 13, 15], "environment": [0, 1, 4, 5, 6], "at": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "every": [0, 5, 6, 12, 13, 14, 15], "introduc": 0, "concept": [0, 12], "fixtur": [0, 2, 6, 9, 14, 16], "explicitly": [0, 2, 5, 6, 8, 9, 11], "declar": [0, 4, 5, 6, 8], "which": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "objects": [0, 4, 5, 6, 9, 11, 13, 14, 15], "need": [0, 1, 2, 5, 6, 8, 9, 11, 12, 13, 14, 15], "re": [0, 1, 2, 4, 5, 6, 8, 9, 11, 12, 13, 14, 15], "initialized": 0, "http": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "arriv": [0, 6], "needs": [0, 4, 5, 6, 12, 14, 15], "cleanup": 0, "completed": [0, 6], "mak": [0, 1, 2, 5, 6, 8, 9, 11, 12, 13, 14, 15], "session": [0, 2, 4, 6, 9, 11, 12, 13, 14, 15, 16], "s": [0, 1, 2, 4, 5, 7, 8, 9, 10, 11, 12, 13, 15], "strong": [0, 9, 12], "encryption": 0, "dat": [0, 2, 5, 6, 7, 8, 9, 12, 13, 14, 15], "sessions": [0, 6, 14], "long": [0, 6, 11], "stored": [0, 5, 6, 11, 12, 14, 15], "system": [0, 2, 5, 6, 9, 12, 15], "created": [0, 2, 4, 5, 6, 8, 11, 12], "performanc": [0, 5, 6, 14], "issu": [0, 6], "cooki": [0, 4, 6, 15], "red": [0, 3, 4, 6, 8, 9, 11, 16], "memcach": [0, 6], "optionally": [0, 2], "also": [0, 1, 2, 4, 5, 6, 8, 9, 11, 12, 13, 14, 15], "limited": [0, 5, 14, 15], "json": [0, 1, 2, 4, 5, 6, 7, 10, 11, 14, 15], "serializabl": [0, 5, 6], "built": [0, 1, 4, 6, 8, 11, 15, 16], "sistem": [0, 2, 5, 6], "bilh\u00e9t": 0, "global": [0, 6, 14, 15], "n\u00e3": [0, 1, 2, 3, 4, 5, 6, 8, 9, 12, 13], "Os": [0, 3, 4, 8, 9, 12, 16], "bilhet": [0, 3, 6], "armazen": [0, 2, 5, 6, 9], "arquiv": [0, 2, 3, 4, 5, 6, 12, 16], "individu": [0, 2, 5, 6], "Eles": [0, 4, 6], "\u00fanic": [0, 2, 6, 9], "banc": [0, 1, 3, 4, 5, 12], "dad": [0, 1, 3, 4, 5, 12, 16], "pydal": [0, 2, 3, 4, 5, 6, 7, 11, 12, 13, 14, 15], "leverag": 0, "restap": [0, 3, 16], "usa": [0, 4, 5, 6, 8], "linguag": [0, 4, 5, 16], "templat": [0, 4, 9, 11, 12, 14, 15, 16], "yatl": [0, 4, 5, 6, 11, 13, 15, 16], "padr\u00e3": [0, 2, 4, 5, 8, 9, 13], "suport": [0, 10, 16], "delimit": [0, 6, 8], "evit": [0, 1, 2, 6, 8, 11], "conflit": [0, 2, 4, 6], "model": [0, 3, 7, 9, 14, 15], "js": [0, 4, 5, 8, 10, 14, 16], "vue": [0, 4, 15], "angularjs": 0, "inclu": [0, 4, 6, 8, 9, 13], "subconjunt": [0, 6], "ajud": [0, 2, 4, 6, 14, 16], "bibliotec": [0, 4, 10], "pluraliz": [0, 4, 5, 13, 15, 16], "internacionaliz": [0, 4, 16], "Na": 0, "pr\u00e1tic": [0, 6, 7], "exp\u00f5": [0, 3, 4, 6, 12], "objet": [0, 5, 6, 8, 9, 10], "t": [0, 2, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14], "muit": [0, 1, 2, 4, 5], "semelh": [0, 4, 5, 6, 9], "fornec": [0, 2, 3, 4, 5, 6, 9, 12, 13], "melhor": [0, 1, 6, 10, 13, 16], "cach": [0, 2, 4, 5, 11], "capac": 0, "flex\u00edv": 0, "vem": [0, 4, 6], "painel": [0, 2, 3], "app": [0, 1, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16], "administr": [0, 2, 6], "substitu": [0, 2, 6, 8, 9], "Esta": [0, 1, 2, 4, 6], "carreg": [0, 6], "gest\u00e3": [0, 1], "edi\u00e7\u00e3": 0, "interfac": [0, 3, 5, 6, 13, 14, 15], "bas": [0, 2, 4, 8, 13, 15], "Isto": [0, 2, 3, 4, 5, 6, 9, 13], "funcional": [0, 2, 5, 6], "appadmin": [0, 6], "comes": [0, 5, 8, 11, 12, 13, 14, 15], "grid": [0, 16], "simil": [0, 11, 14], "sqlform": [0, 11, 14], "auth": [0, 2, 4, 6, 8, 9, 15, 16], "f\u00e1cil": [0, 6, 8, 9, 12], "estend": [0, 5, 6], "Fora": 0, "caix": [0, 6, 9], "b\u00e1sic": [0, 1, 6, 16], "regist": [0, 4, 5, 6, 8, 12, 13, 14], "login": [0, 2, 3, 4, 5, 6, 8, 11, 12, 14], "logout": [0, 8, 12], "alter": [0, 2, 4, 5, 6, 10], "senh": [0, 2, 3, 5, 6, 12], "solicit": [0, 6], "edit": [0, 2, 3, 4, 8, 11, 12, 13, 14, 15], "perfil": [0, 12], "bem": [0, 4, 5, 6, 12], "integr": 0, "pam": [0, 5], "saml2": 0, "ldap": [0, 5], "oauth2": [0, 5], "googl": [0, 3, 5, 8, 11, 13], "facebook": [0, 5], "twitt": [0, 5, 12], "tags": [0, 5, 6, 8, 9, 14, 15, 16], "tag": [0, 6, 7, 8, 12, 14, 15], "groups": [0, 1, 3, 5, 12, 14], "search": [0, 6, 11, 12, 13, 16], "by": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "apply": [0, 5, 11, 12, 13], "permissions": [0, 5, 6, 12, 14], "membership": [0, 5, 11, 12, 14], "component": [0, 4, 5, 8, 9, 11, 12, 15], "personaliz": [0, 2, 16], "projet": [0, 2], "interag": 0, "geral": [0, 2, 6, 7, 9], "Essas": 0, "apis": [0, 6, 12, 14], "permit": [0, 3, 5, 6, 8, 9, 12, 13], "servidor": [0, 4, 5, 6], "defin": [0, 4, 5, 8, 9, 11, 13, 15], "pol\u00edt": 0, "sobr": [0, 8], "qua": [0, 6], "oper": [0, 3, 10, 16], "client": [0, 7, 11, 12, 15], "execut": [0, 2, 3, 6, 11], "d\u00e1": [0, 2, 13], "flexibil": [0, 13], "dentr": [0, 2, 4, 6, 13], "restri\u00e7\u00f5": [0, 6], "dois": [0, 5, 6, 8], "princip": 0, "mtabl": 0, "grad": 0, "api": [0, 6, 7, 9, 11, 12, 15], "continu": [0, 6, 8, 15], "mesm": [0, 1, 2, 4, 5, 8, 9, 10, 13], "desenvolv": 0, "acess": [0, 2, 4, 5, 6], "produ\u00e7\u00e3": 0, "r\u00e1p": [0, 6], "segur": [0, 5], "thanks": 0, "everyon": [0, 1], "who": [0, 12], "contributed": 0, "project": [0, 2, 4, 5, 6], "especially": [0, 2, 5, 11, 12], "massim": [0, 6], "di": [0, 5], "pierr": 0, "luc": [0, 1], "alfar": [0, 1], "cassi": 0, "botar": 0, "dan": 0, "carroll": 0, "jim": [0, 1, 13], "steil": [0, 1, 13], "john": [0, 6], "m": [0, 2, 6, 9, 11], "wolf": 0, "micah": 0, "beasley": 0, "nic": [0, 15], "zanferrar": 0, "pirsch": 0, "sugiz": 0, "valq7711": [0, 4], "kevin": 0, "kell": 0, "log": [0, 2, 4, 5, 6, 8, 9, 12, 14, 15], "special": [0, 5, 6, 8, 12, 14, 16], "official": [0, 11, 15], "friendly": [0, 5, 8], "call": [0, 5, 6, 8, 11, 12, 15], "axel": 0, "axolotl": 0, "magically": 0, "represents": [0, 6], "sens": [0, 11], "kindness": 0, "inclusion": 0, "believ": [0, 5], "cornerston": 0, "growing": [0, 15], "community": [0, 6], "fiz": 1, "noss": [1, 4, 5, 6], "torn": [1, 2, 5, 6, 9, 13], "simpl": [1, 2, 4, 5, 6, 7, 8, 9, 11, 13, 15, 16], "limp": 1, "Mas": [1, 4, 6], "voc": [1, 2, 3, 4, 5, 6, 8, 9, 12, 13], "sab": [1, 2, 6, 8], "program": [1, 3, 6, 8], "\u00e9": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16], "taref": [1, 5, 6, 12], "dif\u00edcil": [1, 2], "Ela": [1, 6, 8], "exig": [1, 2, 6, 12], "ment": [1, 6], "abert": [1, 3, 6], "capaz": [1, 2], "salt": [1, 11], "frequ\u00eanc": 1, "perd": [1, 2, 6], "html": [1, 2, 4, 5, 7, 8, 10, 11, 12, 13, 14, 15], "javascript": [1, 4, 7, 9, 15], "css": [1, 4, 5, 8, 9, 11, 12, 13, 15], "tenh": [1, 5, 6], "med": 1, "nest": [1, 6, 8, 9], "vam": [1, 6, 9], "lo": [1, 2, 3, 4, 6, 7, 8, 9], "lad": [1, 2, 5, 6], "jorn": 1, "E": [1, 6, 12], "outr": [1, 2, 4, 5, 9, 10, 12, 13, 16], "valios": 1, "mostr": [1, 4, 6, 13], "referenc": [1, 6, 7, 8, 9, 11, 13], "availabl": [1, 2, 6, 8, 9, 12, 14, 15], "onlin": [1, 6], "https": [1, 3, 4, 5, 7, 8, 11, 12, 13, 15], "_documentation": [1, 3], "static": [1, 4, 8, 9, 14], "index": [1, 2, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "wher": [1, 2, 4, 6, 8, 11, 12, 14, 15], "ll": [1, 2, 3, 5, 6, 8, 11, 13, 15], "find": [1, 2, 4, 11, 12, 13], "pdf": [1, 11], "ebook": 1, "version": [1, 3, 7, 8, 11, 15], "multipl": [1, 2, 6, 8, 9, 11, 14, 15, 16], "languag": [1, 4, 5, 8, 10, 14, 15], "written": [1, 8, 11, 13], "restructuredtext": 1, "generated": [1, 5, 6, 8, 11, 13, 15], "sphinx": 1, "exist": [1, 2, 4, 5, 6, 8, 11, 15], "discuss\u00e3": 1, "dedic": [1, 4, 14], "hosped": 1, "consult": [1, 7, 12, 13], "g": [1, 6, 9, 11], "principal": [1, 5, 6, 16], "discuss\u00f5": 1, "desenvolvedor": [1, 8, 12, 13], "usu\u00e1ri": [1, 2, 3, 4, 5, 6, 12, 14], "qualqu": [1, 2, 4, 5, 6, 7, 8, 12], "problem": [1, 6], "dev": [1, 2, 3, 4, 5, 6, 8, 9, 12, 13], "enfrent": [1, 6], "lug": [1, 5, 6], "cert": [1, 2, 6, 13], "procur": [1, 6], "solu\u00e7\u00e3": [1, 2, 6], "For": [1, 2, 4, 5, 6, 7, 8, 9, 11, 12, 14, 15], "quick": [1, 11], "questions": [1, 2], "chats": 1, "fre": [1, 5, 12], "dedicated": [1, 5, 9], "could": [1, 2, 4, 6, 8, 9, 11, 12, 14], "usually": [1, 5, 7, 11], "hanging": 1, "channel": 1, "ther": [1, 2, 5, 6, 8, 11, 12, 13, 14, 15], "tutorials": 1, "vid": [1, 2, 15], "learn": [1, 6], "sit": [1, 2, 4, 5, 6, 9, 13, 15], "lots": 1, "excellent": [1, 13], "training": 1, "cours": [1, 8], "2020": 1, "uc": 1, "sant": 1, "cruz": [1, 6], "blog": [1, 6, 9], "andrew": 1, "gavgavian": 1, "replicat": [1, 5], "famous": 1, "corey": 1, "schaf": 1, "tutorial": [1, 2, 4, 13, 15], "seri": 1, "creating": [1, 2, 6, 12, 14], "south": 1, "breez": 1, "enterpris": [1, 12], "dem": [1, 2, 15], "around": [1, 14], "structur": [1, 4, 6, 12, 13, 14, 16], "microsoft": [1, 12], "northwind": 1, "converted": [1, 6, 11], "sqlit": [1, 4, 5, 7, 11, 12, 13], "view": [1, 5, 6], "final": [1, 2, 5, 6, 10], "result": [1, 4, 6, 7, 8, 11, 13, 15], "last": [1, 5, 8, 11, 12, 13, 15], "least": [1, 2, 11, 14, 15], "open": [1, 2, 4, 5, 6, 9], "sourc": [1, 2, 3, 4, 6, 11], "bsd": 1, "v3": 1, "licens": 1, "hosted": 1, "means": [1, 2, 3, 5, 6, 8, 11, 12, 14], "read": [1, 4, 5, 6, 7, 13, 15], "study": 1, "experiment": [1, 11], "yourself": [1, 11], "par\u00e1graf": [1, 9], "prelimin": 1, "\u00fate": [1, 6], "antes": [1, 6, 8, 9, 12, 13], "comec": [1, 2, 4, 6], "aprend": 1, "A": [1, 2, 4, 5, 7, 8, 10, 12, 13, 14, 15, 16], "fim": [1, 2, 5, 6], "compreend": [1, 13], "precis": [1, 2, 4, 5, 6, 13], "pel": [1, 4, 5, 6, 8, 9, 10, 12], "men": [1, 2, 5, 6], "conhec": [1, 6], "H\u00e1": [1, 5, 6, 13], "livr": [1, 6], "curs": 1, "dispon\u00edv": 1, "escolh": [1, 4, 6], "decor": [1, 4, 16], "marc": [1, 6, 9, 12], "total": [1, 6, 7], "following": [1, 4, 5, 6, 8, 9, 11, 12, 13, 14, 15], "chapters": [1, 5], "will": [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "start": [1, 2, 3, 4, 5, 6, 9, 11, 12, 13], "coding": 1, "your": [1, 2, 3, 4, 5, 6, 8, 9, 11, 12, 13, 14, 15], "comput": 1, "suggest": [1, 11], "setup": [1, 3, 4, 12, 15], "workplac": 1, "plan": [1, 15], "efficiently": [1, 14], "safely": [1, 13], "even": [1, 4, 5, 6, 8, 9, 11, 13, 14], "running": [1, 2, 5], "exampl": [1, 2, 4, 5, 6, 8, 9, 10, 12, 16], "experimenting": 1, "littl": [1, 5, 6], "strongly": [1, 5, 11, 13], "integrated": 1, "programming": [1, 6, 8, 15], "experienc": [1, 12], "allowing": [1, 11], "checking": [1, 11, 12, 14], "linting": 1, "visual": 1, "debugging": [1, 4], "nowadays": 1, "two": [1, 2, 4, 5, 6, 8, 11, 13, 14, 15], "mult": [1, 2, 6, 14], "main": [1, 2, 3, 4, 6, 8, 13, 14, 15], "choic": [1, 11, 13], "studi": 1, "cod": [1, 2, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "aka": 1, "jetbrains": 1, "quand": [1, 4, 6, 8, 13], "vai": [1, 4, 6, 8], "lid": [1, 4, 5, 6, 13], "complex": [1, 2, 4, 5, 6, 8, 9, 12, 14, 15], "confiabil": 1, "necess": [1, 2, 4, 5, 6, 8], "suger": [1, 6], "usar": [1, 2, 4, 5, 6, 8, 9, 13], "ambient": [1, 2], "virtu": 1, "cham": [1, 2, 4, 5, 7, 8, 10, 13], "virtualenv": [1, 2], "vej": [1, 2, 3], "aqu": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], "docs": [1, 2, 4], "org": [1, 2, 4, 7, 9, 15], "7": [1, 2, 7, 8, 11, 14], "venv": [1, 2], "__": [1, 2, 4], "introdu": [1, 2], "Em": [1, 2, 5, 6, 8, 9], "confus": [1, 6], "git": [1, 2], "keep": [1, 2, 4, 5, 6, 7, 8, 9, 11, 14], "track": [1, 14], "progr": [1, 2, 3, 9], "chang": [1, 2, 3, 5, 6, 7, 8, 11, 12, 13, 14, 15, 16], "sav": [1, 5, 6, 10, 11], "saf": [1, 6, 11, 13, 14], "plac": [1, 5, 6, 8, 11, 13, 15], "gitlat": 1, "bitbucket": 1, "editor": [1, 8], "highlighting": [1, 8], "highly": [1, 13], "recommend": [1, 5], "quit": [1, 5, 7, 8, 11, 13], "run": [1, 3, 4, 6, 8, 12], "debug": [1, 2, 5, 6, 8], "just": [1, 2, 4, 5, 6, 7, 8, 11, 13, 15], "fold": [1, 2, 3, 4, 5, 6, 7, 10, 11, 13, 14], "add": [1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], "args": [1, 2, 6], "your_full_path_to_py4web": 1, "py": [1, 2, 4, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15], "launch": [1, 2], "configuration": 1, "windows": [1, 2, 4, 6], "paramet": [1, 2, 4, 5, 6, 12, 13, 15], "must": [1, 2, 3, 4, 5, 6, 8, 9, 11, 12, 14], "forward": 1, "slash": [1, 4, 5, 12], "only": [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "c": [1, 2, 3, 5, 6, 8, 9, 11, 14], "your_nam": [1, 15], "instead": [1, 4, 5, 6, 8, 9, 11, 12, 13, 14, 15], "copy": [1, 3, 4, 6, 13], "standard": [1, 2, 3, 6, 7, 12, 13, 14, 15, 16], "insid": [1, 2, 4, 5, 6, 8, 9, 11, 13, 14, 15], "renam": 1, "order": [1, 2, 4, 5, 6, 7, 9, 11, 13, 14], "avoid": [1, 2, 5, 6, 11], "errors": [1, 5, 6, 7, 11, 14], "lat": [1, 2, 4, 5, 6, 8, 9, 11, 13], "usr": 1, "bin": [1, 2], "env": [1, 14], "python3": [1, 2], "cor": [1, 2, 4, 5, 11], "cli": [1, 2], "both": [1, 5, 6, 8, 11, 14], "should": [1, 2, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "get": [1, 2, 4, 5, 6, 8, 11, 12, 13, 14, 15, 16], "gevent": [1, 2], "tru": [1, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "enabl": [1, 5, 7, 9, 12, 14, 15], "settings": [1, 4, 5, 6, 9, 12, 14], "build": [1, 2, 4, 5, 9, 13, 15], "execution": 1, "deployment": 1, "debugg": 1, "help": [1, 2, 5, 6, 7, 8, 9, 11, 13, 14], "support": [1, 2, 6, 11, 14], "efforts": 1, "participat": 1, "group": [1, 3, 5, 12, 14], "trying": [1, 12], "answer": 1, "submit": [1, 5, 6, 9, 11, 13], "bugs": 1, "pull": 1, "requests": [1, 4, 5, 14], "repository": [1, 2, 3], "Se": [1, 2, 3, 4, 6, 8, 9, 13], "desej": [1, 2, 5, 6, 12, 13], "corrig": 1, "ampli": 1, "traduz": [1, 6, 8, 10], "l\u00edngu": 1, "estrangeir": [1, 13], "ler": [1, 6], "tod": [1, 2, 3, 4, 5, 7, 8, 9, 10, 12, 13, 15], "inform": [1, 4, 5, 6, 11], "necess\u00e1r": [1, 5, 6], "diret": [1, 5, 6, 8], "readm": [1, 4, 11], "espec\u00edf": [1, 2, 6], "blob": [1, 6], "mast": [1, 2, 13], "md": [1, 4], "really": [1, 4], "rst": 1, "doc": 1, "brows": [1, 2, 3, 5, 7, 8, 13, 15], "once": [1, 2, 5, 6, 11, 12, 15], "pr": 1, "accepted": [1, 2, 6, 11, 14, 15], "branch": [1, 2], "reflected": 1, "pag": [1, 3, 4, 5, 6, 9, 11, 12, 13, 14, 15, 16], "epub": 1, "next": [1, 5, 6, 8, 11], "output": [1, 5, 8, 11, 15], "generation": 1, "befor": [2, 5, 6, 8, 11, 12, 13], "everything": [2, 4, 14], "else": [2, 4, 6, 11, 12, 13, 14, 15], "imported": [2, 11, 12, 14], "charg": [2, 14], "starting": [2, 4, 6, 11], "reason": [2, 5, 6, 13, 14], "things": [2, 5, 6], "py4web": [2, 3, 4, 5, 7, 8, 9, 11, 12, 13], "download": 2, "pypi": 2, "github": [2, 3, 4, 6, 13], "folders": 2, "collections": 2, "want": [2, 4, 5, 6, 8, 11, 15], "command": [2, 4, 6, 8], "lin": [2, 4, 5, 7, 8, 9, 11, 12, 13, 15], "options": [2, 6, 7, 9, 12, 14, 15], "initializ": 2, "existing": [2, 5, 6, 11], "scaffolding": [2, 4, 5, 6, 8, 14, 15], "under": [2, 3, 4, 5, 6, 11], "concurrently": [2, 11], "served": [2, 6], "process": [2, 4, 5, 6, 8, 9, 11, 12, 13, 14, 15], "address": [2, 11, 12], "each": [2, 5, 6, 7, 8, 9, 11, 12, 13, 14], "runs": [2, 4, 12, 14], "fin": [2, 12, 13], "mac": [2, 6], "linux": 2, "prerequisit": [2, 5], "advanc": [2, 12, 13], "except": [2, 5, 6, 8, 9, 11, 12, 15], "binari": 2, "four": [2, 6], "alternativ": [2, 8, 11], "level": [2, 6, 7, 11, 12], "difficulty": 2, "flexibility": [2, 15], "let": [2, 7, 11, 15], "look": [2, 5, 6, 7, 11, 12], "pros": 2, "cons": [2, 6], "real": [2, 4, 7, 8, 11], "porqu": [2, 4, 5, 6, 8, 10], "acab": [2, 6], "copi": 2, "mont": [2, 12], "modific": [2, 4], "maneir": [2, 5, 6, 13], "da\u00ed": 2, "especial": [2, 4, 6, 10], "inic": [2, 4], "alun": 2, "direit": [2, 3, 6], "Por": [2, 3, 4, 5, 6, 9], "experimental": [2, 5], "cont": [2, 5, 9, 10, 12], "liber": 2, "idad": 2, "adicion": [2, 5, 10, 11, 12, 13], "us\u00e1": [2, 6, 8], "faz": [2, 5, 8, 9, 11, 12], "recent": [2, 3, 6, 11, 13], "reposit\u00f3ri": 2, "extern": 2, "nicozanf": 2, "pyinstall": 2, "descompact": 2, "past": [2, 4], "abrir": 2, "l\u00e1": [2, 4], "Com": [2, 6], "tip": [2, 4, 13], "lembr": [2, 3, 6, 8, 11], "sempr": [2, 6, 8], "vez": [2, 4, 5, 8, 9, 12, 13], "seguint": [2, 4, 5, 6, 8, 9, 10, 11, 12, 13], "document": [2, 6, 8, 9, 11, 15], "notic": [2, 4, 5, 6, 8, 9, 11, 12, 13, 14, 15], "correspond": [2, 4, 6, 10], "latest": [2, 6, 14], "stabl": 2, "although": [2, 8, 11], "best": [2, 5, 6], "up": [2, 5, 6, 8, 12, 15], "installation": 2, "procedur": 2, "quickly": [2, 11, 13], "install": [2, 6, 12], "releas": 2, "upgrad": [2, 6], "dir": [2, 11, 15], "user": [2, 4, 5, 6, 7, 8, 9, 11, 13, 14, 15], "try": [2, 5, 6, 8, 11, 12], "specify": [2, 4, 5, 6, 7, 11, 12, 13], "full": [2, 4, 6, 8, 11, 15], "8": [2, 6, 7, 11], "ir\u00e1": [2, 3, 4, 6, 8, 12, 13], "dependent": [2, 3, 4, 5], "caminh": [2, 4, 6, 13], "ativ": [2, 6], "cont\u00e9m": [2, 4, 5, 6], "cri": [2, 3, 5, 6, 8, 9, 12, 13, 16], "ap\u00f3s": [2, 6, 13], "trabalh": [2, 4, 6, 7], "path": [2, 4, 5, 6, 7, 10, 11, 13, 14, 15], "exe": 2, "pointing": [2, 3, 8], "type": [2, 5, 7, 8, 9, 12, 15], "option": [2, 3, 5, 6, 11, 12, 15], "mistak": 2, "then": [2, 4, 5, 6, 8, 9, 11, 12, 13, 14, 15], "needed": [2, 4, 5, 6, 9, 11, 12, 15], "commands": [2, 4, 6, 8, 9], "indesej": [2, 6], "bom": 2, "h\u00e1bit": 2, "Este": [2, 6, 8, 9, 13, 14], "recurs": [2, 8, 16], "aind": [2, 6, 12], "moment": [2, 6], "descobert": [2, 10], "instructions": [2, 11], "activating": 2, "activat": [2, 12], "without": [2, 6, 8, 9, 15, 16], "traditional": 2, "way": [2, 3, 5, 6, 8, 9, 11, 12, 14], "works": [2, 8, 11, 12, 13, 14, 15], "normally": [2, 6, 8, 9, 11, 13], "utility": [2, 11], "along": [2, 4, 9, 11, 15], "links": [2, 6, 13, 15], "clon": [2, 4, 6, 15], "cd": 2, "assets": 2, "test": [2, 6, 8, 9, 11, 13], "content": [2, 4, 5, 6, 8, 9, 11, 13, 14, 15], "missing": [2, 12, 13], "manually": [2, 4, 6, 9, 12, 13], "upgraded": 2, "itself": [2, 6, 11, 15], "copied": 2, "useful": [2, 4, 8, 9, 11, 13, 15], "already": [2, 4, 5, 9, 11, 12, 13], "working": [2, 11], "locally": 2, "globally": [2, 6], "present": [2, 6, 8, 11, 12], "gain": 2, "potentially": 2, "untested": [2, 12], "go": [2, 4, 13], "given": [2, 5, 6, 8, 11], "r": [2, 6, 11], "tiv": [2, 6], "tant": [2, 6, 15], "observ": [2, 4, 6, 8], "forc": [2, 6, 7, 11, 12], "praz": 2, "programs": [2, 11], "executed": [2, 5, 6, 8, 14, 15], "ones": [2, 7, 11, 14], "don": [2, 4, 6, 8, 11, 12, 13, 14], "directly": [2, 4, 6, 7, 9, 11, 12, 13, 15], "usual": [2, 8, 9, 11], "atualiz": [2, 16], "automat": [2, 4, 6, 8, 9, 12, 13], "dashboard": [2, 4, 6, 8, 11, 16], "remov": [2, 4, 6, 9, 11, 12], "manual": [2, 3, 4, 6], "los": [2, 4, 6, 11], "precau\u00e7\u00e3": 2, "seguranc": [2, 5, 6, 9], "fez": [2, 6], "any": [2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "backup": [2, 6, 11], "personal": 2, "ve": [2, 3, 5, 8, 9, 11, 13, 15], "delet": [2, 4, 7, 11, 13, 15], "old": [2, 5, 11, 14], "again": [2, 4, 5, 6, 11, 15], "utiliz": [2, 3, 4, 5, 6, 9, 12, 13], "anterior": [2, 6], "produz": [2, 5, 6, 8, 9], "sa\u00edd": [2, 4, 6, 8, 9], "generally": [2, 5, 8], "nam": [2, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "wit": 2, "nothing": [2, 5, 6, 11, 15], "prevents": [2, 5, 15], "grouping": 2, "expects": [2, 9], "_dashboard": [2, 3], "default": [2, 3, 4, 5, 6, 7, 9, 11, 12, 13, 14, 15], "_default": [2, 4], "installs": 2, "Ele": [2, 3, 5, 6, 9], "descrit": [2, 4, 6, 13], "pr\u00f3xim": [2, 6], "cap\u00edtul": [2, 4, 5, 14], "nad": [2, 4, 6], "diferent": [2, 5, 6, 10, 13], "boas": 2, "vind": 2, "t\u00eam": [2, 4, 6, 12], "papel": 2, "portant": [2, 4, 5, 6, 9], "nom": [2, 4, 5, 7, 9, 11, 12, 13], "_": [2, 11, 15], "Uma": [2, 4, 6, 8, 9], "send": [2, 6, 11, 12], "urls": [2, 11, 14], "localhost": [2, 4, 5, 6, 11], "8000": [2, 3, 4, 11, 13], "yourappnam": 2, "stop": [2, 12], "acert": 2, "kbd": 2, "control": [2, 8, 11, 12, 13, 15], "janel": 2, "onde": [2, 6, 7, 8, 11], "soment": [2, 4, 6, 8], "appnam": [2, 5, 12, 14], "prefix": [2, 4, 6, 7, 8, 11, 14], "quer": [2, 4, 5, 6, 9], "lig": [2, 5, 6, 9], "simbol": 2, "trailing": [2, 11], "optional": [2, 4, 5, 6, 7, 8, 11, 12, 13, 14], "ctrl": [2, 3], "break": [2, 6], "fn": 2, "paus": 2, "v\u00e1r": [2, 4, 5, 6], "argument": [2, 4, 5, 6, 8, 9, 11, 12], "ter": [2, 4, 5, 6, 9], "adicional": [2, 5, 6], "h": [2, 11], "usag": [2, 3, 4, 5, 6, 9, 11, 12, 13], "apps_fold": 2, "func": [2, 5], "function": [2, 4, 5, 6, 7, 8, 9, 11, 13, 14, 15], "y": [2, 9, 11], "yes": [2, 6], "No": [2, 5, 6, 8, 13], "prompt": [2, 4, 6], "assum": [2, 5, 6, 7, 10], "fals": [2, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "text": [2, 5, 6, 8, 9, 13, 15], "arguments": [2, 5, 6, 8, 9, 11, 12, 14], "passed": [2, 4, 5, 6, 9, 11, 12, 13, 15], "show": [2, 5, 6], "messag": [2, 4, 5, 7, 8, 11, 13, 14, 15], "exit": 2, "myfunction": 2, "x": [2, 6, 8, 9, 11, 13], "100": [2, 6, 7, 8, 11], "singl": [2, 5, 6, 7, 8, 11, 12, 13], "doubl": [2, 6, 8], "quot": [2, 9], "shown": [2, 6, 11, 12], "parameters": [2, 6], "app_nam": [2, 4, 5, 6], "copying": [2, 8, 9, 16], "scaffold_zip": 2, "erro": [2, 3, 6], "orig": [2, 10], "host": [2, 5, 11, 12], "127": [2, 3, 5, 11, 13], "0": [2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], "1": [2, 3, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15], "p": [2, 8, 11], "integ": [2, 6, 7, 9, 11, 15], "numb": [2, 5, 6, 8, 11], "password_fil": 2, "encrypted": [2, 5], "password": [2, 6, 8, 11, 12, 14, 15], "wsgiref": 2, "gunicorn": 2, "waitress": 2, "geventwebsocketserv": 2, "wsgirefthreadingserv": 2, "rocketserv": 2, "w": [2, 4, 5, 6], "number_workers": 2, "workers": 2, "d": [2, 7, 9, 11], "dashboard_mod": 2, "mod": [2, 4, 5, 6, 11, 12], "readonly": [2, 11, 15], "non": [2, 4, 5, 6, 7, 9, 11, 13, 14, 15], "watch": [2, 3, 16], "sync": [2, 6], "lazy": [2, 4, 6], "reload": [2, 3, 4, 5, 11], "automatically": [2, 3, 4, 5, 6, 11, 12, 13, 14, 15], "ssl_cert": 2, "ssl": 2, "certificat": 2, "ssl_key": 2, "key": [2, 4, 5, 6, 7, 9, 11, 12, 16], "errorlog": 2, "error": [2, 3, 5, 6, 7, 8, 9, 11, 15], "logs": [2, 5, 6], "stdout": 2, "stderr": 2, "tickets_only": 2, "filenam": [2, 4, 5, 6, 11], "l": [2, 11], "logging_level": 2, "50": [2, 7], "30": [2, 6, 8, 11], "warning": [2, 5], "switch": [2, 5, 6], "application": [2, 5, 6, 8, 12, 14, 15], "upon": [2, 12, 14], "reloading": [2, 4, 5], "occur": [2, 11, 15], "incoming": 2, "changed": [2, 3, 4, 5, 6, 8, 11, 14, 15], "pref": [2, 15], "immediat": 2, "production": [2, 4], "servers": [2, 6], "unneded": 2, "checks": [2, 6, 8, 11, 12], "restart": [2, 4, 5, 6, 13], "directiv": [2, 8, 11], "looks": [2, 6, 11], "occurring": 2, "modifications": 2, "requir": [2, 5, 6, 11, 12], "used": [2, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "currently": [2, 5, 8], "behaviour": [2, 11, 13], "rocket3": [2, 14], "threaded": [2, 14], "stripped": [2, 14], "python2": [2, 14], "logic": [2, 4, 5, 12, 14], "valu": [2, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15], "defined": [2, 4, 5, 6, 8, 11, 12, 13, 14, 15], "logging": [2, 12], "corresponds": [2, 6, 9], "common": [2, 4, 5, 8, 11, 12, 14, 15], "notset": 2, "10": [2, 6, 7, 8, 9, 10, 11, 12, 15], "20": [2, 7, 10, 11], "info": [2, 4, 5, 12], "40": [2, 9, 15], "critical": 2, "telling": [2, 12], "library": [2, 6, 10, 11, 14, 15], "handl": [2, 4, 5, 6, 14, 15], "events": [2, 15], "sets": [2, 5, 6, 11], "calls": [2, 6, 8, 15], "functions": [2, 5, 9, 15], "found": [2, 11], "invalid": [2, 6, 11], "saved": [2, 5, 6, 11], "administrator": 2, "asked": 2, "cad": [2, 4, 5, 8, 10, 13], "ped": [2, 4, 5, 6, 13], "uso": [2, 5, 13], "Isso": [2, 4, 6], "chat": 2, "pdkdf2": 2, "hash": [2, 6, 11], "vou": 2, "exclu\u00edd": [2, 6], "my_password_fil": 2, "depo": [2, 3, 6], "reutiliz": [2, 6], "temp": [2, 8], "execu": [2, 4], "validators": [2, 14], "crypt": 2, "writ": [2, 4, 5, 6, 8], "str": [2, 5, 6, 9, 14, 15], "input": [2, 5, 6, 8, 11, 15], "reinstall": 2, "reinstal": 2, "necess\u00e1ri": [2, 4, 5, 6], "confirm": [2, 11, 13], "cria\u00e7\u00e3": [2, 6, 13], "segu": [2, 4, 5, 6, 8], "atual": [2, 6], "existent": [2, 6, 12, 13], "parent": [2, 6, 8, 15], "O": [2, 8, 9, 11, 12, 16], "apen": [2, 5, 6, 7], "pesquis": [2, 3, 6, 13], "ent\u00e3": [2, 4, 6, 12], "exempl": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], "conch": 2, "pud": 2, "myapp": [2, 4], "db": [2, 3, 4, 5, 7, 9, 11, 12, 13, 14, 15], "translator": [2, 10, 16], "dal": [2, 4, 7, 11, 13, 15, 16], "field": [2, 4, 5, 7, 12, 13, 14, 15, 16], "utils": [2, 4, 5, 8, 9, 11, 12, 13, 14, 16], "versions": [2, 5, 11], "too": [2, 5, 6, 11, 15], "cannot": [2, 5, 6, 8, 11, 15], "generic": [2, 4, 5, 6, 11], "described": [2, 4, 5, 6, 11], "called": [2, 5, 6, 7, 8, 9, 11, 13, 14, 15], "deployment_tools": 2, "collects": 2, "recip": 2, "they": [2, 4, 5, 6, 7, 8, 11, 12, 14, 15], "briefly": 2, "tips": [2, 13], "tricks": 2, "thes": [2, 4, 5, 6, 8, 9, 11, 13, 15], "steps": 2, "generat": [2, 6, 8, 9, 11, 12, 13, 14, 15], "followed": [2, 5, 11], "www": [2, 8, 9, 13], "section": [2, 4, 6, 8, 11, 12], "io": [2, 6], "engineering": 2, "education": 2, "securely": 2, "vscod": 2, "may": [2, 4, 5, 6, 8, 9, 11, 14, 15], "updat": [2, 5, 11, 13, 14, 15], "contain": [2, 4, 5, 6, 8, 9, 11, 12, 15], "configurations": 2, "workspacefold": 2, "path_t": 2, "crt": [2, 6], "absolut": [2, 6, 14], "location": [2, 4, 6, 8, 14], "so": [2, 5, 6, 8, 9, 11, 13, 14, 15], "feasibl": [2, 11], "simply": [2, 4, 5, 6, 8, 15], "py4web_wsg": 2, "4": [2, 5, 6, 7, 8, 11, 13], "tak": [2, 3, 5, 6, 8, 11, 12, 13, 15], "consol": [2, 9, 12, 15], "obtain": [2, 12, 15], "id": [2, 5, 7, 8, 9, 11, 12, 13, 14, 15], "project_nam": 2, "mkdir": [2, 4, 7, 11, 13], "supond": [2, 6], "cp": 2, "development_tools": 2, "talvez": [2, 5], "__init": 2, "vazi": [2, 6], "ver": [2, 6, 12], "makefil": 2, "__init__": [2, 4, 5, 6, 7, 11, 13, 14, 15], "lib": 2, "yaml": 2, "sdk": 2, "config": [2, 4], "email": [2, 8, 11, 12, 14], "mail": [2, 3, 5, 11, 12], "obtid": [2, 6], "agor": [2, 4, 5, 6, 8], "bast": 2, "deploy": 2, "atend": [2, 6], "youtub": [2, 6], "follow": [2, 4, 7, 12, 13, 14], "detailed": [2, 13], "bottle_app": 2, "script": [2, 5, 8, 15], "dockerfil": 2, "compos": 2, "yml": 2, "setting": [2, 4, 5, 6, 11, 13], "postgresql": [2, 6], "advantag": [2, 6, 8, 15], "requiring": [2, 14], "sud": [2, 12], "background": [2, 4, 11, 15], "daemon": 2, "bash": 2, "04": 2, "03": [2, 6, 7], "lts": 2, "nginx": 2, "self": [2, 5, 6, 9, 11, 13, 15], "signed": [2, 5, 11], "manag": [2, 3, 4, 5, 6, 12], "iptabl": 2, "surely": [3, 4], "extensively": 3, "check": [3, 4, 5, 6, 11, 12, 13], "looking": 3, "good": [3, 11], "exploring": 3, "listening": 3, "tcp": 3, "local": [3, 5, 8, 11, 12, 13], "pc": 3, "protocol": 3, "connect": [3, 6], "firefox": [3, 15], "chrom": [3, 15], "bot\u00f5": [3, 16], "describ": [3, 11], "chapt": [3, 4, 5, 6, 8, 9, 11, 13], "documentation": [3, 11, 15], "20201112": 3, "browsing": 3, "discuss": 3, "forum": 3, "pression": 3, "bot\u00e3": 3, "transmit": 3, "inser": [3, 8], "ref": [3, 5, 6, 9, 11, 16], "comando": [3, 4, 6, 9, 16], "set_password": 3, "configur": [3, 12, 13, 14, 16], "exib": [3, 6, 8, 9, 13], "abas": 3, "comprim": 3, "cliqu": [3, 13], "t\u00edtul": [3, 9, 13], "gui": 3, "expand": 3, "As": [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15], "context": [3, 5, 6, 8], "aba": 3, "instal": [3, 6, 12, 16], "selecion": [3, 6], "rot": [3, 13], "tab": [3, 5, 11], "allows": [3, 4, 5, 6, 7, 8, 11, 12, 13, 15], "contains": [3, 5, 7, 8, 10, 11, 13, 14, 15], "selected": [3, 4, 7, 9, 11, 15], "compris": 3, "reloaded": [3, 4, 15], "unless": [3, 5, 6, 8, 11], "op\u00e7\u00e3": [3, 4, 6, 8, 9], "click": [3, 9, 11, 13, 15], "effect": [3, 6, 11], "fails": [3, 11], "load": [3, 5, 15], "corresponding": [3, 6, 11, 12, 13, 14], "button": [3, 4, 5, 11, 13, 15], "displayed": [3, 6, 9, 11, 13, 15], "realiz": [3, 4, 5, 6], "busc": [3, 6, 13], "crud": [3, 11, 15], "visit": [3, 5, 11], "desencad": 3, "emit": [3, 6], "registr": [3, 4, 11, 12, 13], "edi\u00e7\u00f5": 3, "comuns": 3, "filesyst": [4, 5, 6], "going": [4, 15], "own": [4, 5, 6, 8, 11, 12, 13, 14, 15], "mind": [4, 6, 7, 8, 11], "therefor": [4, 5, 8, 11, 14], "empty": [4, 11, 15], "strictly": [4, 15], "enter": [4, 11, 12], "echo": 4, "backslash": 4, "i": [4, 5, 6, 7, 8, 11, 12, 15], "press": [4, 13], "recogniz": 4, "automatic": [4, 6, 8, 14], "whenev": 4, "required": [4, 5, 6, 7, 11, 15], "anything": 4, "arbitrary": [4, 12], "access": [4, 5, 9, 12, 14, 15], "typically": [4, 8], "expos": [4, 5], "dynamic": [4, 8, 12], "expor": [4, 12], "simples": [4, 6, 10], "subpast": 4, "public": 4, "hell": [4, 5, 6, 8, 9, 11, 12, 15], "world": [4, 5, 6, 8, 9, 11], "rec\u00e9m": [4, 6, 10], "sob": [4, 6], "internally": [4, 5, 6, 13], "supports": [4, 5, 8, 9, 11, 15], "streaming": [4, 14], "partial": [4, 6, 14], "rang": [4, 6, 8, 12, 14], "modified": [4, 11, 14], "handled": [4, 5, 11, 15], "headers": [4, 8, 15], "fun\u00e7\u00e3": [4, 6, 8, 9], "conte\u00fad": [4, 6, 9], "novaaplicaca": 4, "init": [4, 13], "seg": 4, "datetim": [4, 5, 6, 7, 11, 15], "action": [4, 5, 6, 7, 9, 11, 12, 13, 14, 15], "def": [4, 5, 6, 7, 9, 11, 12, 13, 14, 15], "return": [4, 5, 6, 7, 9, 11, 12, 13, 15], "accessibl": 4, "\u00edndic": 4, "opcional": [4, 6, 9, 11], "Ao": [4, 6, 8, 13], "estrutur": [4, 5, 6, 10], "c\u00f3dig": [4, 5, 6, 8, 9], "ocorr": [4, 6, 8], "v\u00e1ri": [4, 5, 6, 10], "fun\u00e7\u00f5": [4, 8], "prepends": 4, "sej": [4, 6], "url": [4, 5, 7, 8, 11, 12, 13, 14, 15], "a\u00e7\u00e3": [4, 5, 6, 12, 16], "anteced": 4, "ambigu": [4, 6], "exce\u00e7\u00e3": [4, 5, 6, 8], "link": [4, 7, 8, 9, 11, 12, 13], "simb\u00f3l": 4, "actions": [4, 5, 6, 13, 14, 16], "string": [4, 5, 6, 7, 9, 10, 11, 13], "dictionary": [4, 5, 6, 9, 11, 14], "tell": [4, 12, 15], "what": [4, 5, 6, 8, 11, 12, 14, 15], "serializ": [4, 6, 8, 9], "end": [4, 6, 8, 11, 12, 13, 15], "colors": [4, 6], "blu": [4, 6, 11, 14], "green": [4, 6, 14], "vis\u00edvel": 4, "vermelh": 4, "azul": 4, "verd": 4, "conven\u00e7\u00e3": 4, "transform": [4, 5, 6, 11, 15], "inteir": [4, 6], "tard": [4, 6], "irem": [4, 5], "brev": 4, "poss\u00edvel": [4, 6], "map": [4, 6, 9, 10], "padr\u00f5": [4, 6, 9], "color": [4, 6, 8, 9, 11, 15], "picked": 4, "unknown": 4, "sintax": [4, 6, 9, 12, 16], "garraf": 4, "bottlepy": [4, 5], "wildcard": 4, "filt": [4, 7, 11, 13], "possibl": [4, 5, 6, 8, 11, 13, 14], "filters": [4, 11], "int": [4, 6, 11, 12, 14], "d\u00edgit": [4, 6], "assinatur": [4, 5], "convert": [4, 6, 9], "n\u00famer": [4, 6, 10, 13], "float": [4, 11], "decim": 4, "personagens": [4, 6], "caracter": 4, "barr": 4, "gananc": 4, "combin": [4, 5, 9, 13], "segment": 4, "exp": [4, 6], "expression": [4, 6, 8, 10, 11, 13], "matched": [4, 7, 9, 11], "harmoniz": 4, "car\u00e1ct": [4, 6], "universal": [4, 6, 9], "pass": [4, 5, 6, 8, 9, 11, 12, 13, 14, 15], "vari\u00e1vel": [4, 6, 9, 10], "especific": [4, 5, 6], "al\u00e9m": [4, 6, 13], "diss": [4, 6, 13], "ac\u00e7\u00e3": [4, 5, 6, 7], "method": [4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "m\u00e9tod": [4, 5, 6, 8, 13], "post": [4, 6, 7, 9, 11, 12, 13, 14, 15], "paint": [4, 11], "query": [4, 5, 7, 9, 11, 13, 14, 15], "painting": 4, "equivalent": [4, 5, 6, 9, 11, 14], "additional": [4, 5, 7, 8, 11, 13], "attribut": [4, 5, 6, 9, 11, 13, 14, 15], "identify": 4, "decl": [4, 6], "head": [4, 5, 6, 8, 13, 15], "style": [4, 6, 8, 11, 15, 16], "body": [4, 8, 12, 13, 15], "h1": [4, 8], "tint": 4, "dict": [4, 5, 6, 10, 11, 13, 14, 15], "fund": 4, "correspondent": [4, 6, 9], "ingredient": 4, "chav": [4, 8, 9, 10, 13], "lumin\u00e1r": 4, "disposit": [4, 5, 12], "el\u00e9tr": [4, 5, 12], "comport": [4, 6, 9, 13], "inicializ": [4, 5], "filtrag": [4, 13], "entrad": [4, 6, 9, 10], "depend": [4, 5, 6], "\u00e2mbit": 4, "encaix": 4, "\u00e1rvor": 4, "explic": [4, 6], "acess\u00f3ri": 4, "especif": [4, 6], "dand": 4, "Esse": 4, "estar": [4, 6, 9], "localiz": 4, "diret\u00f3ri": 4, "ser\u00e3": [4, 6, 9], "cord": [4, 6, 10], "facil": [4, 5, 6], "linguagens": 4, "diz": [4, 6, 12, 13], "obter": [4, 6], "conex\u00e3": 4, "part": [4, 9, 14], "piscin": [4, 6], "compromet": [4, 6], "sucess": [4, 6], "revers\u00e3": 4, "falh": 4, "sess\u00e3": [4, 16], "analis": [4, 6, 10], "recuper": [4, 6], "salv": [4, 6, 10], "tradutor": 4, "cabe\u00e7alh": [4, 9], "accept": [4, 5, 11, 15], "determin": [4, 5, 6, 10, 11, 12, 13], "\u00f3ptim": 4, "regr": [4, 5], "liga\u00e7\u00e3": [4, 5, 6], "ambos": [4, 5, 6], "trat": [4, 6], "writing": [4, 6, 14], "scratch": 4, "san": 4, "conventions": [4, 6], "outlined": [4, 5], "putting": 4, "organized": 4, "properly": 4, "pre": [4, 5, 13], "shows": [4, 8, 11, 12], "registration": [4, 11], "building": [4, 11, 15], "construction": 4, "giv": [4, 5, 6, 8, 11, 12], "kind": 4, "normal": [4, 5, 6, 8, 11, 13, 15], "encontr": [4, 6, 8, 10, 12], "andaim": 4, "la": [4, 6], "usand": [4, 5, 8, 9, 12, 16], "imports": 4, "controllers": [4, 6, 8, 9, 11, 14, 15], "metadat": [4, 6], "models": [4, 6, 7, 13, 14], "tabl": [4, 5, 7, 11, 12, 13, 14, 15, 16], "settings_privat": 4, "privat": [4, 5, 11], "ship": 4, "bulm": [4, 11, 13, 15], "agnostic": 4, "favicon": 4, "ico": 4, "replac": [4, 6, 8, 9, 13, 15], "tasks": [4, 6], "etc": [4, 5, 6, 7, 10, 14], "general": [4, 5, 6, 11, 12], "layout": [4, 11, 12, 13, 14, 15, 16], "translations": [4, 5, 10, 15], "internationalization": [4, 5, 11, 14], "pluralization": [4, 14], "italian": [4, 5, 10], "respons": [4, 5, 6, 8, 14, 15, 16], "abort": [4, 6], "redirect": [4, 5, 11, 12, 13, 15], "helpers": [4, 6, 8, 11, 13, 14, 16], "welcom": [4, 5, 8, 14, 15], "get_us": [4, 5, 12, 14], "first_nam": [4, 5, 12, 13], "format": [4, 5, 7, 9, 10, 12, 13], "hom\u00f3log": 4, "div": [4, 5, 8, 11, 14, 15], "span": [4, 14], "img": 4, "indic": [4, 6], "esper": [4, 5, 6], "v\u00e1l": 4, "redirecion": [4, 12, 13], "provavel": [4, 5, 6], "mud": [4, 5, 6], "agn\u00f3st": 4, "algum": [4, 6, 9], "exce\u00e7\u00f5": 4, "quis": [4, 6], "scaffold": [4, 15], "lot": [4, 6], "point": [4, 5, 6, 11, 14, 15], "testing": [4, 6], "developing": 4, "whol": [4, 11], "anoth": [4, 5, 6, 8, 11, 12], "my_app": 4, "loaded": [4, 8, 13, 15], "select": [4, 7, 10, 11, 12, 13, 14, 15, 16], "upload": [4, 6], "upper": [4, 5, 11], "finally": [4, 13], "facilitat": 4, "reloads": [4, 5], "fact": [4, 5, 14], "watched": 4, "app_watch_handl": 4, "decorator": [4, 5, 6, 14], "reported": 4, "worry": 4, "fully": [4, 5, 6, 11], "assist": 4, "sass": 4, "compil": [4, 8, 9, 11], "libsass": 4, "static_dev": 4, "overrid": [4, 6, 8, 12, 13, 14, 15], "sass_compil": 4, "changed_fil": 4, "print": [4, 6, 9, 10, 12, 14], "abov": [4, 5, 6, 7, 8, 11, 13], "compiled_css": 4, "filep": 4, "include_paths": 4, "includ": [4, 6, 7, 9, 13, 15], "output_styl": 4, "compressed": 4, "dest": [4, 6, 11], "join": [4, 5, 7, 11, 13, 14], "compiled": [4, 8, 9, 11], "valid": [4, 6, 9, 14, 16], "esprim": 4, "implementation": [4, 8, 11, 14], "nod": 4, "dbadmin": 4, "validate_js": 4, "cf": 4, "validation": [4, 7, 8, 13], "abspath": 4, "parsemodul": 4, "filepaths": 4, "relativ": [4, 14], "ignored": [4, 8, 9, 13, 15], "exceptions": [4, 5, 15], "handlers": 4, "printed": 4, "terminal": 4, "Um": 5, "pec": [5, 6], "equip": 5, "mobili\u00e1ri": 5, "fix": [5, 6], "posi\u00e7\u00e3": [5, 9], "edif\u00edci": 5, "ve\u00edcul": 5, "algo": [5, 6, 7, 8], "respost": [5, 8], "processing": [5, 6, 8, 11, 15], "operations": [5, 6], "perform": [5, 6, 11, 12], "pars": [5, 6, 11, 12], "information": [5, 6, 7, 11, 12, 14, 16], "commit": [5, 7, 13], "transaction": [5, 6], "preferred": [5, 6], "lookup": [5, 7], "prop": [5, 6, 13], "pick": [5, 12], "connection": [5, 6, 11], "pool": 5, "after": [5, 6, 8, 11, 12, 13], "back": [5, 6, 11], "mecan": [5, 6, 8], "ignor": [5, 6, 8, 11, 13], "eficient": [5, 6], "reduz": 5, "clich": 5, "middlewar": 5, "wsgi": 5, "plug": 5, "excet": [5, 6], "a\u00e7\u00f5": 5, "uns": 5, "signing": 5, "explained": [5, 6, 11, 13], "connections": [5, 6, 14], "authentication": [5, 13, 16], "develop": [5, 6, 8, 12, 13, 14], "paragraph": [5, 9, 11, 13], "previous": [5, 8, 9, 11, 15], "decorators": [5, 14], "applied": [5, 11, 13, 15], "knows": 5, "depends": [5, 6, 14], "exception": [5, 6, 11, 12], "otherwis": [5, 6, 8, 11, 12, 13], "various": 5, "delimiters": [5, 14], "retorn": [5, 8, 9], "posterior": 5, "jinja2": 5, "comum": [5, 6], "pouc": [5, 6], "a\u00e7\u00fac": 5, "sint\u00e1t": 5, "duas": [5, 6], "linh": [5, 6, 8, 9, 13, 16], "cached": 5, "ram": [5, 6], "right": [5, 6, 8], "careful": [5, 6, 8, 14, 15], "documentations": 5, "exactly": 5, "opposit": 5, "early": 5, "february": 5, "2022": 5, "extend": [5, 6, 12, 14, 15], "passing": [5, 6, 9], "implications": 5, "avoiding": [5, 11], "clean": [5, 9], "able": [5, 6, 11], "variabl": [5, 6, 9, 11, 13, 15], "my_var": [5, 9], "t_fold": 5, "dirnam": [5, 7, 11, 13], "__file__": [5, 7, 11, 13], "translated": [5, 8, 11], "specified": [5, 6, 8, 9, 11, 12, 13, 14, 15], "match": [5, 6, 8, 9, 10, 11], "class": [5, 6, 8, 9, 11, 12, 14, 15], "implement": [5, 6, 8, 12], "contador": [5, 6], "dbstor": 5, "memory": [5, 6], "storag": [5, 6, 7, 11, 13], "count": [5, 7, 12, 13, 15], "n": [5, 6, 10, 15], "tradu\u00e7\u00e3": [5, 16], "tradu\u00e7\u00f5": [5, 10], "en": [5, 7], "2": [5, 6, 7, 8, 9, 10, 11, 12, 14, 15], "twic": [5, 6], "6": [5, 6, 7, 11, 12, 14], "5": [5, 6, 7, 8, 10, 11, 12, 13, 15], "visiting": [5, 12], "preferenc": 5, "english": 5, "tent": [5, 6], "ti": 5, "ho": 5, "mai": 5, "vist": [5, 6, 9], "prim": [5, 11], "gia": 5, "volt": [5, 6], "piu": 5, "display": [5, 11, 12, 13, 15], "alerts": [5, 8, 14], "displaying": [5, 11, 13], "stat": [5, 7, 14, 15], "preserved": 5, "redirection": [5, 14], "dismissibl": 5, "auxili": [5, 6, 8, 9], "del": [5, 6, 9], "_class": [5, 9, 11, 15], "sanitiz": [5, 9, 14], "src": [5, 6, 8, 9, 15], "globals": [5, 6, 8, 12, 14], "xml": [5, 8, 11, 14, 15], "returned": [5, 6, 7, 8, 9, 11, 15], "triggers": 5, "position": 5, "convenienc": 5, "injected": [5, 8, 9, 11], "redirected": [5, 15], "remembered": 5, "achieved": [5, 14], "asking": 5, "temporarily": 5, "sent": [5, 6, 12, 15], "returning": 5, "overwritten": [5, 14], "mensagens": [5, 6], "defaults": [5, 11, 13, 14], "alert": [5, 8, 9, 11, 14], "success": [5, 7, 15], "hardcod": 5, "thos": [5, 6, 8, 9, 12, 14, 15], "basic": [5, 16], "speaking": 5, "desired": [5, 11], "persist": 5, "throughout": 5, "interaction": 5, "words": [5, 13], "rend": [5, 6, 11, 13, 14, 15], "stateless": [5, 15], "stateful": 5, "secret": [5, 12], "my": [5, 8, 9, 11, 12, 15], "increased": 5, "opening": 5, "updated": [5, 6, 11], "closing": [5, 6], "reopening": 5, "window": [5, 8, 11], "related": [5, 6], "usernam": [5, 6, 12], "visited": [5, 8], "shopping": 5, "cart": 5, "jwt": 5, "specifically": [5, 6, 11, 15], "token": [5, 11], "stor": [5, 6, 12], "serialized": [5, 6, 9, 11], "__str__": [5, 8, 9], "operator": [5, 6, 11], "lost": [5, 14], "composing": 5, "still": [5, 6, 9, 11, 13, 14], "minimal": [5, 13, 16], "identifying": [5, 11], "clients": 5, "sess\u00f5": 5, "nunc": [5, 6], "expir": 5, "contenh": 5, "hist\u00f3r": [5, 6], "par\u00e2metr": [5, 13], "expiration": 5, "3600": [5, 6], "algorithm": [5, 11], "hs256": 5, "same_sit": 5, "lax": 5, "_sesson": 5, "passphras": 5, "sign": [5, 8, 12], "maximum": [5, 11], "lifetim": 5, "seconds": [5, 11], "timeout": 5, "signatur": [5, 6, 7, 9, 11], "alternat": [5, 15], "csrf": [5, 11], "attacks": [5, 9], "cross": [5, 9], "forgery": 5, "enabled": [5, 7, 12, 14], "provided": [5, 6, 8, 9, 11, 13], "uuid": [5, 6], "why": [5, 8, 14], "appname_session": 5, "encoded": [5, 6, 11, 15], "preventing": 5, "tampering": [5, 6], "trivial": [5, 6], "communications": 5, "disk": [5, 6], "sensitiv": [5, 11], "invalidated": 5, "vic": 5, "vers": 5, "small": [5, 11], "siz": [5, 8, 11], "limit": [5, 6, 7, 11, 12], "kbytes": 5, "being": [5, 6, 7, 8, 11, 15], "put": [5, 7, 11, 15], "configured": [5, 11, 14], "conn": 5, "11211": 5, "6379": 5, "lambd": [5, 6, 9, 11, 13, 15], "k": [5, 8, 14], "v": [5, 9, 11, 15], "cs": 5, "ct": 5, "ttl": 5, "avis": [5, 6, 12], "rem": 5, "macac": 5, "multiprocess": 5, "quirk": 5, "deterministic": 5, "unsaf": [5, 9], "tud": [5, 6], "imagin": [5, 6, 8, 15], "fsstorag": 5, "exists": [5, 6, 11], "fp": 5, "dump": 5, "tmp": [5, 6], "leav": [5, 6], "exercis": 5, "per": [5, 7], "subfolders": [5, 6], "locking": 5, "storing": 5, "inefficient": 5, "scal": [5, 8], "app1": 5, "app2": 5, "wants": 5, "shar": [5, 6, 14], "assuming": 5, "sessons": 5, "session_secret_key": 5, "app1_session": 5, "tells": [5, 15], "sur": [5, 11, 15], "shared": 5, "between": [5, 9, 11, 14], "consistent": 5, "session_app1": 5, "restrict": [5, 7, 11, 15], "enforc": [5, 11], "workflow": [5, 16], "step1": 5, "step_completed": 5, "_href": [5, 8, 9, 11, 13], "step2": 5, "locals": [5, 14], "step3": 5, "on_request": 5, "evaluat": [5, 11, 15], "listed": [5, 11, 15], "rais": [5, 11, 12, 14], "404": [5, 11, 12], "cond": 5, "400": [5, 14], "raised": 5, "on_fals": 5, "13": [5, 6, 11], "giving": 5, "memberships": 5, "specific": [5, 6, 8, 9, 11, 12, 14, 15], "auth_us": [5, 6, 12], "requires_membership": 5, "group_nam": [5, 12], "user_id": [5, 6, 12, 14], "payroll": 5, "employ": 5, "permission": [5, 12], "typical": [5, 6, 11], "follows": [5, 6, 11], "url_sign": 5, "somepath": 5, "controll": [5, 6, 8, 9, 11, 12, 13, 14, 15], "signs": 5, "signed_url": 5, "anotherpath": 5, "verify": 5, "verified": [5, 11], "usou": [5, 6], "queir": 5, "abstraction": [5, 14, 16], "lay": [5, 14, 16], "documented": [5, 11], "pleas": [5, 6], "rememb": [5, 6], "doesn": 5, "db_fold": [5, 7, 11, 13], "pool_siz": [5, 6], "define_tabl": [5, 7, 11, 12, 13, 14], "visit_log": 5, "client_ip": 5, "timestamp": [5, 7, 15], "environ": [5, 14], "remote_addr": [5, 12], "insert": [5, 7, 8, 11, 12, 13, 15], "utcnow": [5, 6], "picks": 5, "wrapped": 5, "commits": [5, 6], "on_success": 5, "rolls": 5, "on_error": 5, "rol": [5, 9], "construtor": [5, 9, 11, 16], "tabel": [5, 9, 12, 13, 14], "camp": [5, 7, 9, 11, 16], "last_nam": [5, 12, 13], "sso_id": [5, 12], "action_token": [5, 12], "\u00faltim": [5, 6, 12], "intern": [5, 6], "registers": 5, "including": [5, 11, 13, 14, 15], "presenc": [5, 6], "_scaffold": [5, 8, 9, 11, 12, 13, 14, 16], "returns": [5, 6, 7, 9, 11, 12, 14, 15], "logged": [5, 8, 12, 14], "redirects": [5, 12], "desd": [5, 6], "verific": [5, 6, 12], "plugin": [5, 11, 12, 13, 15], "methods": [5, 7, 9, 11, 12, 13, 16], "authorization": [5, 16], "compartilh": [5, 6], "permiss\u00e3": [5, 6, 12], "estad": [5, 6], "threads": [5, 6], "atribut": [5, 9], "thing": [5, 6, 14], "writabl": [5, 6, 11, 14], "readabl": [5, 6, 13, 14], "espec": [5, 6, 9], "threadsafevariabl": 5, "Esses": [5, 6], "parec": [5, 6], "rosc": 5, "loc": 5, "est\u00e3": [5, 6, 7, 9, 12], "valor": [5, 9, 10, 11, 13], "signif": [5, 6, 7], "m\u00ednim": [5, 6], "myfixtur": 5, "transforms": 5, "determining": 5, "eventually": 5, "accessing": [5, 6], "inner": [5, 15], "layers": 5, "coming": 5, "calling": [5, 6, 8], "b": [5, 6, 8, 9, 11, 14, 15], "circumstanc": 5, "think": [5, 8, 13, 15], "onion": 5, "cent": [5, 6, 8], "entering": 5, "exiting": 5, "processed": [5, 6, 8, 11], "previously": [5, 6, 11], "current": [5, 6, 9, 12, 13, 14, 15], "uppercas": [5, 11], "upper_cas": 5, "tracebacks": 5, "logerrors": 5, "stre": [5, 6], "errlog": 5, "myerrors": 5, "__prerequisite__": 5, "appended": [5, 6], "__prerequisites__": 5, "guarant": 5, "singleton": [5, 14], "declared": 5, "considered": [5, 6, 8, 14], "httrespons": 5, "whil": [5, 6, 7, 11, 12, 14], "actual": [5, 6, 8, 12, 13], "complicated": 5, "individual": [5, 6, 7, 8, 11], "know": [5, 13], "wheth": [5, 6, 11, 12, 14], "keeps": [5, 13], "easy": [5, 8, 11], "communicat": 5, "retriev": [5, 6, 15], "stated": 5, "mandatory": [5, 8], "consid": [5, 8, 9, 11, 13], "happen": 5, "sequenc": [5, 6], "revers": [5, 6], "transformed": [5, 6], "extra": [5, 6, 11, 12], "almost": 5, "contexts": 5, "futur": [5, 14, 15], "implements": [5, 6], "recently": 5, "lru": 5, "via": [5, 6, 8, 9, 15], "1000": [5, 6, 11, 15], "60": [5, 6], "uuid4": [5, 6], "registered": [5, 12], "mention": 5, "rendered": [5, 7, 8, 11, 13, 14, 15], "unauthenticated": [5, 6, 9], "authenticated": [5, 6], "below": [5, 6, 7, 11, 13], "rout": [5, 13, 14, 15], "separated": [5, 6, 13, 15], "combined": [5, 6, 11], "preced": [5, 6, 8], "maps": [6, 9], "such": [6, 9, 11, 13, 14], "queri": [6, 7, 13, 14, 15], "records": [6, 7, 11, 12, 13], "dynamically": [6, 7, 8, 11], "dialect": 6, "dialects": 6, "term": 6, "generically": 6, "portabl": 6, "among": [6, 11], "choosen": 6, "pur": 6, "conceived": 6, "tast": 6, "transactions": 6, "aggregat": 6, "nested": [6, 8], "differenc": [6, 11, 14], "caveat": [6, 8, 14], "startup": [6, 14], "downsid": [6, 14], "approach": [6, 14], "nev": [6, 8, 11, 14, 15], "thread": [6, 14], "practical": [6, 11, 14, 16], "mailing": 6, "adapters": [6, 15], "modern": [6, 12, 15], "distribution": 6, "actually": [6, 8], "driv": 6, "sqlite3": 6, "included": [6, 8, 11, 13], "binary": 6, "appropriat": [6, 11], "drivers": 6, "pysqlite2": 6, "zxjdbc": 6, "jython": 6, "psycopg2": 6, "pymysql": 6, "mysqldb": 6, "cx_oracl": 6, "pyodbc": 6, "pypyodbc": 6, "firebird": 6, "kinterbasdb": 6, "fdb": 6, "db2": 6, "informix": 6, "informixdb": 6, "ingres": 6, "ingresdb": 6, "cubrid": 6, "cubriddb": 6, "sybas": 6, "teradat": 6, "sapdb": 6, "mongodb": 6, "pymong": 6, "imap": 6, "imaplib": 6, "treated": [6, 14], "gotch": 6, "about": [6, 7, 12, 13, 14, 15, 16], "comp\u00f5": 6, "instantiat": [6, 12, 14], "mytabl": 6, "myfield": 6, "truncat": 6, "import_from_csv_fil": 6, "instantiated": 6, "claus": 6, "myquery": 6, "myset": 6, "somevalu": 6, "something": [6, 7, 8, 9, 11], "derived": 6, "myord": 6, "advisabl": 6, "persistent": [6, 12], "hesitat": 6, "doing": [6, 11, 15], "snippets": 6, "executabl": [6, 9], "auth_user_tag_groups": [6, 12], "person": [6, 7, 11, 13], "superher": [6, 7, 11, 13, 15], "superpow": [6, 7], "product": [6, 11, 15], "superman": [6, 7, 11, 13], "real_identity": [6, 7], "zer": [6, 8, 11, 13], "sak": 6, "simplicity": [6, 15], "discussion": 6, "engin": [6, 11], "conect": [6, 12], "_ur": 6, "_dbnam": 6, "instanc": [6, 9, 11, 13, 15], "uniform": 6, "resourc": [6, 12], "identifi": 6, "liga\u00e7\u00f5": [6, 9], "supor": 6, "situa\u00e7\u00e3": 6, "dummy": [6, 8], "db_codec": 6, "utf": 6, "check_reserved": 6, "migrate_enabled": 6, "fake_migrate_all": 6, "decode_credentials": 6, "driver_args": 6, "adapter_args": 6, "attempts": [6, 12], "auto_import": 6, "bigint_id": 6, "lazy_tabl": 6, "db_uid": 6, "do_connect": 6, "after_connection": 6, "ignore_field_cas": 6, "entity_quoting": 6, "table_hash": 6, "estabelec": 6, "atrav\u00e9s": [6, 8, 9, 12], "inst\u00e2nc": [6, 13], "dar": 6, "seq\u00fc\u00eanc": 6, "set_encoding": 6, "utf8mb4": 6, "postgr": 6, "2005": 6, "mssql3": 6, "2012": 6, "mssql4": 6, "oracl": 6, "dsn": 6, "uid": 6, "pwd": 6, "ndb": 6, "consists": [6, 13], "locked": 6, "accessed": [6, 9, 11], "established": 6, "appropriately": 6, "encoding": 6, "avoids": 6, "utf8": 6, "charact": [6, 11], "unicod": [6, 11], "characters": [6, 11], "consist": [6, 14], "bytes": 6, "turns": [6, 15], "buff": 6, "often": [6, 12, 15], "completely": [6, 8, 12], "had": 6, "connecting": 6, "_select": 6, "_insert": 6, "_updat": 6, "_delet": 6, "usos": 6, "codific": 6, "caract": [6, 9], "latin1": 6, "unicodedecodeerror": 6, "rath": [6, 8, 11, 15], "slow": 6, "establish": 6, "pooling": 6, "closed": [6, 8], "goes": [6, 11], "tri": [6, 14], "recycl": 6, "cresc": 6, "m\u00e1xim": 6, "simult\u00e2n": 6, "receb": [6, 8], "tamanh": 6, "sequencial": 6, "t\u00f3pic": 6, "benef\u00edci": 6, "conseg": 6, "segund": 6, "fracass": 6, "permanec": 6, "fech": [6, 8, 9], "grac": 6, "repeti\u00e7\u00e3": 6, "restabelec": 6, "interromp": 6, "major": 6, "boost": [6, 8], "creation": 6, "deferred": [6, 15], "referenced": [6, 7], "possibly": 6, "concurrency": [6, 15], "problems": [6, 12, 15], "howev": [6, 8, 11, 15], "demand": 6, "referred": [6, 7], "responsibility": 6, "housekeeping": 6, "definitions": [6, 7, 14], "maintainability": 6, "expect": [6, 11], "uris": 6, "deal": [6, 15], "distribut": 6, "workload": 6, "primeir": [6, 8, 12, 16], "eo": 6, "terceir": 6, "distribu": 6, "carg": 6, "mestr": 6, "escrav": 6, "colun": [6, 13], "contr": 6, "alvo": 6, "nenhum": [6, 12], "cont\u00eam": [6, 10], "against": [6, 7, 9, 11, 13], "ordem": 6, "op\u00e7\u00f5": [6, 16], "extras": 6, "tais": 6, "ends": [6, 8, 14], "reserved": [6, 11], "keywords": 6, "append": [6, 9, 11, 13, 15], "_nonreserved": 6, "postgres_nonreserved": 6, "backends": 6, "cit": [6, 9, 11], "entidad": 6, "identific": [6, 9], "ger": [6, 8, 9, 12, 13], "n\u00edvel": [6, 10], "cot": 6, "mai\u00fascul": 6, "min\u00fascul": 6, "assim": [6, 8], "dobr": 6, "motor": 6, "acord": 6, "norm": 6, "conform": [6, 12], "dobrag": 6, "certez": 6, "esquem": 6, "organiz": 6, "ambas": 6, "acim": [6, 7, 8, 12], "table1": 6, "column": [6, 13], "\u00c0s": [6, 9], "recomend": 6, "detalh": [6, 13], "user_nam": 6, "user_password": 6, "server_addr": 6, "db_nam": 6, "sslmod": 6, "sslrootcert": 6, "root": [6, 8, 12, 13], "sslcert": 6, "sslkey": 6, "aceit": [6, 10, 11], "migration": 6, "migrations": 6, "booleans": 6, "afet": 6, "migr": 6, "desat": 6, "verdadeir": [6, 11, 13], "aren": 6, "committed": [6, 14], "immediately": 6, "depending": [6, 8, 11, 13], "activiti": 6, "ever": 6, "granul": 6, "bob": 6, "roll": 6, "revert": 6, "views": 6, "enclosed": 6, "pseud": 6, "traceback": 6, "ticket": 6, "visitor": 6, "tablenam": [6, 7, 11, 15], "kwargs": [6, 15], "preenchiment": 6, "obrigat\u00f3ri": 6, "subcl": 6, "defini\u00e7\u00e3": 6, "opcion": [6, 9], "common_filt": 6, "discut": 6, "abaix": 6, "loj": 6, "pesso": 6, "peg": 6, "increment": 6, "original": [6, 8, 9, 11], "external": 6, "elements": [6, 9, 11, 15], "redefini\u00e7\u00e3": 6, "provoc": 6, "anonymous": [6, 8, 11], "downs": 6, "othertabl": 6, "otherfield": 6, "referencing": 6, "constructor": [6, 12, 16], "representation": [6, 9], "backend": 6, "ali": [6, 11], "constructing": 6, "illustrat": 6, "qualified": 6, "belonging": 6, "db1": 6, "dbo": 6, "helps": [6, 8, 11], "legacy": 6, "primary": [6, 8, 12], "keys": [6, 7], "keyed": 6, "sub": 6, "refer": [6, 7], "relev": 6, "num\u00e9r": 6, "acion": 6, "embor": 6, "mudanc": 6, "din\u00e2m": [6, 16], "mes": [6, 9], "vantagens": 6, "adi": 6, "age": 6, "set_attribut": 6, "is_not_empty": 6, "is_int_in_rang": 6, "120": 6, "realment": 6, "defini\u00e7\u00f5": 6, "ea": 6, "entant": [6, 8, 9, 13], "tom": 6, "is_in_db": [6, 13], "sometabl": 6, "somefield": 6, "some_valu": 6, "caus": [6, 11], "in\u00edci": 6, "keyword": [6, 8, 9], "attached": [6, 12], "preceded": [6, 11], "underscor": [6, 9, 11], "naming": 6, "conflicts": 6, "_extr": 6, "condi\u00e7\u00f5": 6, "easiest": 6, "conditions": [6, 11], "met": [6, 8, 9], "uniqu": [6, 7, 11], "autom\u00e1t": 6, "account": 6, "accnum": 6, "acctype": 6, "accdesc": 6, "null": [6, 7, 11, 15], "fieldnam": [6, 15], "dispon": 6, "escrit": [6, 8], "garant": [6, 8], "obras": 6, "simplific": 6, "vis\u00e3": 6, "Estes": 6, "length": [6, 11], "ondelet": 6, "notnull": 6, "uploadfield": 6, "widget": [6, 11], "label": [6, 7, 8, 11, 15], "comment": [6, 9], "searchabl": 6, "listabl": 6, "authoriz": [6, 7], "autodelet": 6, "uploadfold": 6, "uploadseparat": 6, "uploadfs": 6, "custom_qualifi": 6, "map_non": 6, "Nem": 6, "compriment": 6, "compat": 6, "constru\u00edd": [6, 13], "preench": 6, "previ": [6, 11], "apropri": 6, "ness": 6, "validator": [6, 11], "foruml\u00e1ri": [6, 9, 16], "enforced": [6, 11, 14], "forms": [6, 9, 13, 14, 15], "addition": [6, 8], "sometim": [6, 8, 9, 11], "seem": 6, "redundant": 6, "maintain": [6, 8, 15], "distinction": 6, "efet": 6, "instru\u00e7\u00e3": 6, "cascat": 6, "exclu": 6, "desativ": 6, "conjunt": [6, 9, 10, 13], "imped": [6, 9], "nul": 6, "exclus": 6, "appli": [6, 11, 15], "somewher": 6, "uploads": 6, "discussed": [6, 8, 9, 11], "detail": [6, 9, 13, 15], "uploaded": [6, 11, 14], "upload_fold": [6, 11], "points": [6, 7, 11, 13], "optimized": 6, "subfold": 6, "attention": 6, "breaking": 6, "eith": [6, 11], "separat": [6, 11, 12, 15], "changing": 6, "behavior": [6, 11, 14, 15], "prevent": [6, 9, 11], "happens": 6, "mov": 6, "amazon": 6, "s3": 6, "sftp": 6, "pyfilesyst": 6, "funcion": [6, 16], "apont": 6, "deleted": 6, "due": [6, 7, 11], "operation": [6, 12], "trigg": [6, 15], "associated": [6, 11, 12], "autogenerated": 6, "grav\u00e1vel": 6, "formul\u00e1ri": [6, 12, 13, 16], "leg\u00edvel": 6, "autentic": 6, "autoriz": 6, "altern": 6, "guaranteed": [6, 14], "reset": 6, "is_length": 6, "512": 6, "32": [6, 11], "768": 6, "31": [6, 7, 11], "gib": 6, "boolean": [6, 13], "is_float_in_rang": 6, "1e100": 6, "decimal": [6, 11], "is_decimal_in_rang": 6, "is_dat": 6, "is_tim": 6, "is_datetim": 6, "_id": [6, 9, 11, 15], "is_empty_or": 6, "is_json": 6, "bigint": 6, "63": [6, 11], "grand": 6, "devolv": [6, 8], "pont": 6, "respect": [6, 11, 13], "certain": [6, 8, 11, 13], "denormalization": 6, "listproperty": 6, "stringlistproperty": 6, "relational": 6, "lists": [6, 13], "items": [6, 7, 8, 11], "item": [6, 8, 9], "escaped": [6, 8, 9], "pretty": [6, 11, 14], "explanatory": 6, "backported": 6, "portability": 6, "base64": [6, 8, 15], "decoded": 6, "extracted": 6, "negativ": [6, 11], "33": [6, 11], "spac": [6, 8, 11, 13], "necessary": [6, 8, 9], "making": [6, 8], "communication": 6, "escaping": [6, 8], "maior": [6, 7], "_format": 6, "sublinh": 6, "poss\u00edv": 6, "Da": 6, "pai": 6, "_tabl": [6, 11, 15], "_tablenam": 6, "_db": 6, "constru\u00e7\u00e3": [6, 9, 13], "v\u00ea": 6, "validat": [6, 11], "tupl": [6, 8, 9], "consider": [6, 8, 9], "myfil": 6, "imag": [6, 8, 9, 11], "relat": 6, "atribu\u00edd": 6, "habilit": 6, "duplicat": 6, "file_content": [6, 15], "file_nam": [6, 15], "feit": 6, "ocasional": 6, "mei": 6, "rb": 6, "Tamb\u00e9m": 6, "ficheir": 6, "corrent": 6, "lev": [6, 9], "flux": 6, "extens\u00e3": 6, "tempor\u00e1ri": 6, "assoc": [6, 10], "inv\u00e9s": 6, "image_fil": 6, "opost": 6, "fullnam": 6, "nameonly": 6, "recup": 6, "pront": 6, "clos": [6, 9], "contextlib": 6, "shutil": 6, "wb": 6, "copyfileobj": 6, "definition": [6, 7, 11, 13], "differs": [6, 13], "letting": 6, "removing": 6, "second": [6, 9, 11, 12, 14], "adding": [6, 11, 13], "newly": 6, "referim": 6, "logfil": 6, "unnamed": 6, "Nos": 6, "descart": 6, "columns": [6, 16], "recommended": [6, 11], "disabl": [6, 13], "impor": 6, "solt": 6, "hor": 6, "lix": 6, "fins": 6, "reclam": 6, "an\u00e1lis": 6, "corromp": 6, "quest\u00e3": 6, "actualiz": 6, "gen\u00e9r": 6, "t\u00edpic": 6, "transa\u00e7\u00f5": 6, "menor": 6, "\u00e9poc": 6, "comet": 6, "fic": 6, "envolv": 6, "convers\u00e3": 6, "acontec": 6, "exat": [6, 8], "reconstru": 6, "metad": 6, "aquel": [6, 12], "attempting": 6, "prudent": 6, "yourapp": 6, "descrev": 6, "estreit": 6, "fak": 6, "alex": 6, "trunc": 6, "reinic": 6, "recomec": 6, "identity": [6, 7, 11, 14], "bulk_insert": 6, "inser\u00e7\u00f5": 6, "relacion": 6, "vantag": 6, "looping": 6, "veloc": 6, "caiu": 6, "tr\u00eas": 6, "carl": 6, "pertenc": 6, "q": [6, 13], "tal": 6, "escrev": [6, 8, 9], "fat": 6, "birthplac": 6, "chicag": 6, "houv": 6, "nasc": 6, "terr": 6, "natal": 6, "crit\u00e9ri": 6, "selec\u00e7\u00e3": 6, "pet": [6, 7, 13], "rov": 6, "ret": 6, "fianc": 6, "erros": 6, "mant\u00e9m": 6, "mapeament": 6, "cuj": 6, "rar": 6, "similar": [6, 9], "etiquet": [6, 9], "propriedad": 6, "anex": 6, "tools": [6, 12, 15], "properti": [6, 11], "id1": 6, "cha": 6, "id2": 6, "material": 6, "wood": 6, "assert": 6, "implemented": 6, "thing_tags_default": 6, "tail": 6, "flexibl": [6, 12], "instru\u00e7\u00f5": 6, "u": [6, 9], "seleccion": 6, "cinc": 6, "placeholders": 6, "colnam": 6, "as_ordered_dict": 6, "substitu\u00edd": 6, "espac": [6, 10, 13], "results": [6, 8, 11, 13], "cursor": [6, 15], "dictionari": 6, "applying": [6, 13], "field1": 6, "val1_row1": 6, "field2": 6, "val2_row1": 6, "val1_row2": 6, "val2_row2": 6, "bonit": 6, "tecl": [6, 10], "ordereddict": 6, "reflet": 6, "adi\u00e7\u00e3": 6, "extra\u00edd": 6, "express\u00e3": [6, 7, 10, 13], "quaisqu": [6, 11], "r\u00f3tul": [6, 9, 13], "arbitr\u00e1ri": 6, "fict\u00edci": 6, "rea": 6, "\u00fatil": 6, "depur": [6, 8], "selecting": 6, "timed": 6, "_timings": 6, "took": 6, "expl\u00edcit": [6, 12], "recorrent": 6, "myidx": 6, "dialet": 6, "SE": 6, "direct": 6, "sid": [6, 15, 16], "comand": 6, "_count": 6, "susan": 6, "iterabl": [6, 11], "whos": [6, 8, 11], "act": 6, "diff": 6, "latt": [6, 11, 14], "fileir": 6, "loop": [6, 8], "imprim": 6, "etap": 6, "entend": 6, "pergunt": 6, "particularly": 6, "handy": 6, "compact": 6, "nota\u00e7\u00e3": [6, 9], "sim": 6, "incomum": 6, "delete_record": 6, "iterators": 6, "avali": [6, 8], "aliment": 6, "lac": 6, "tradicion": 6, "tradicional": 6, "dramat": 6, "iterselect": 6, "cerc": 6, "m\u00e1quin": [6, 9], "reescrev": 6, "sele\u00e7\u00e3": [6, 9], "tir": 6, "proveit": 6, "repr_row": 6, "gerador": 6, "wouldn": 6, "anyway": 6, "myrecord": 6, "shortcut": [6, 8, 11], "19": [6, 7, 11], "02": [6, 11], "convenient": [6, 16], "aparent": 6, "flex\u00edvel": 6, "verif": 6, "levant": 6, "cois": 6, "owner_id": 6, "vincul": 6, "ineficient": 6, "tr\u00e1s": 6, "owns": 6, "actu": 6, "decomp\u00f5": 6, "s\u00e9ri": 6, "classific": [6, 13], "invers": 6, "til": 6, "aparec": 6, "aleat\u00f3r": 6, "random": [6, 8, 11, 12, 15], "super": 6, "concaten": 6, "grup": [6, 12], "condicional": 6, "condi\u00e7\u00e3": 6, "query1": 6, "query2": 6, "consulta1": 6, "efeit": 6, "necessit": 6, "sen\u00e3": 6, "desloc": 6, "offset": [6, 7], "m\u00e1x": 6, "implicit": 6, "pagin": [6, 13], "desempenh": 6, "involved": [6, 8], "managing": 6, "sections": 6, "respectively": [6, 11], "cacheabl": 6, "caching": [6, 16], "trad": 6, "offs": 6, "bin\u00e1ri": 6, "neg": 6, "invert": [6, 11], "nega\u00e7\u00e3": 6, "un\u00e1ri": 6, "sobrecarg": 6, "forma\u00e7\u00e3": 6, "precedent": 6, "compar": [6, 14], "par\u00eantes": 6, "unit\u00e1ri": 6, "elev": 6, "negated": 6, "constru": [6, 9, 13], "vaz": 6, "contag": 6, "jog": [6, 10], "elimin": [6, 13], "ken": 6, "visits": 6, "clicks": [6, 15], "cl\u00e1usul": [6, 8], "condition": [6, 11, 16], "yes_or_n": 6, "curt": 6, "confund": 6, "philip": 6, "modified_on": 6, "retain": 6, "mindful": 6, "inclu\u00edd": [6, 9], "compost": [6, 9], "vari": 6, "usam": 6, "first_row": 6, "last_row": 6, "obvi": 6, "indo": 6, "pretend": 6, "esquec": 6, "table_nam": 6, "consegu": 6, "otimiz": 6, "rows_list": 6, "first_row_dict": 6, "themselv": [6, 8], "allowed": [6, 7, 11, 12], "rows1": 6, "rows2": 6, "uni\u00e3": 6, "rows3": 6, "remo\u00e7\u00e3": 6, "intersec\u00e7\u00e3": 6, "in\u00fatil": 6, "manipul": 6, "inalter": 6, "origin": 6, "signific": [6, 8], "\u00f3bvi": [6, 8], "element": [6, 8, 9, 11, 13, 15], "validad": 6, "cache_db_select": 6, "cache\u00e1vel": 6, "falt": 6, "aceler": 6, "calcul": 6, "unit_pric": 6, "quantity": [6, 11], "total_pric": 6, "rid": 6, "99": 6, "9": [6, 7, 11, 13, 14], "95": 6, "1l": 6, "retrieval": 6, "wik": [6, 7], "searching": [6, 9], "normalized": 6, "evaluated": [6, 7], "subse\u00e7\u00e3": 6, "dif": 6, "daquel": 6, "se\u00e7\u00e3": 6, "discounted_total": 6, "discount": 6, "impl\u00edcit": 6, "pens": 6, "niss": 6, "percentual": 6, "dig": 6, "15": [6, 11, 12, 13], "appe": [6, 11], "cont\u00eain": 6, "instanci": 6, "myvirtualfields": 6, "virtualfields": 6, "order_it": 6, "agir": [6, 9], "setvirtualfields": 6, "myvirtualfields1": 6, "discounted_unit_pric": 6, "90": [6, 7], "myvirtualfields2": 6, "discounted_total_pric": 6, "lazy_total_pric": 6, "ilustr": [6, 8], "owner": [6, 11], "intended": [6, 15], "ex": 6, "c\u00edclic": 6, "insir": 6, "boat": 6, "sho": 6, "adquir": 6, "jun\u00e7\u00e3": [6, 12], "transparent": [6, 8, 11], "si": [6, 13], "unid": 6, "owner_id1": 6, "owner_id2": 6, "with_al": 6, "particip": 6, "esquerd": [6, 13], "jun\u00e7\u00f5": 6, "pertencent": 6, "propriet\u00e1ri": 6, "incorpor": 6, "clar": 6, "igual": [6, 7], "pr\u00f3pri": [6, 13], "ajust": 6, "barc": 6, "intermedi\u00e1r": 6, "ownership": 6, "reescrit": 6, "co": [6, 11], "propriet\u00e1r": 6, "vias": 6, "persons_and_things": 6, "rela\u00e7\u00f5": 6, "father_id": 6, "mother_id": 6, "deriv": 6, "fid": 6, "mid": 6, "claud": 6, "fath": 6, "moth": 6, "AS": 6, "opt\u00e1m": 6, "distin\u00e7\u00e3": 6, "comunic": 6, "diferenc": 6, "sutil": 6, "errad": 6, "corret": 6, "event": 6, "event_tim": 6, "gravidad": 6, "severity": 6, "Como": [6, 16], "varredur": 6, "inje\u00e7\u00e3": 6, "xss": [6, 8, 9], "scan": 6, "injection": 6, "unauthorized": 6, "personag": 6, "sinal": 6, "wild": 6, "card": 6, "sequ\u00eanc": 6, "ansi": 6, "COMO": 6, "sens\u00edvel": 6, "case_sensitiv": 6, "aproxim": 6, "meaning": [6, 11, 12], "value1": 6, "value2": 6, "grau": 6, "apoi": 6, "gost": 6, "2018": 6, "aninh": [6, 9], "bad_days": 6, "jonathan": 6, "nested_select": 6, "m\u00e9d": 6, "estam": 6, "43": 6, "substring": [6, 11], "pux": 6, "sysus": 6, "pow": [6, 15], "coa": 6, "matem\u00e1t": 6, "resgat": 6, "dumpfil": 6, "converting": 6, "produc": [6, 9, 11, 12], "newlin": [6, 11], "export_to_csv_fil": 6, "explict": 6, "exporting": 6, "importing": 6, "finds": 6, "assigned": [6, 11, 12, 14], "ids": 6, "restaur": 6, "somefil": 6, "field3": 6, "separ": [6, 13], "extrem": 6, "despej": 6, "suficient": [6, 13], "ter\u00e3": 6, "nid": 6, "c\u00f3p": 6, "mescl": 6, "acompanh": 6, "64": [6, 8, 15], "stringi": 6, "set_head": 6, "getvalu": 6, "import_and_sync": 6, "_type": [6, 9, 11, 15], "_nam": [6, 9, 11, 15], "vars": [6, 9, 11, 14], "rpc": 6, "nel": 6, "rotul": 6, "uuids": 6, "preocup": 6, "thead": 6, "tr": 6, "th": 6, "tbody": 6, "w2p_odd": 6, "odd": [6, 8], "td": 6, "w2p_even": 6, "easily": [6, 8, 9, 11, 13], "f": [6, 12, 13, 14, 15], "brut": 6, "quotech": 6, "aspas": 6, "cota\u00e7\u00e3": 6, "quote_minimal": 6, "oufil": 6, "quote_nonnumeric": 6, "35": 6, "description": [6, 7, 11, 12], "2013": 6, "oficial": 6, "itens": 6, "escap": [6, 8, 9], "is_in_set": 6, "toy": 6, "car": 6, "products": 6, "costum": 6, "requisit": [6, 16], "particular": 6, "normaliz": 6, "restri\u00e7\u00e3": 6, "got": 6, "v\u00edrgul": 6, "leitur": 6, "gend": 6, "doctor": 6, "specialization": 6, "fict\u00edc": 6, "is_activ": 6, "created_on": 6, "created_by": 6, "modified_by": 6, "payment": 6, "amount": 6, "princ\u00edpi": [6, 16], "activ": [6, 12], "herd": 6, "certifiqu": [6, 10], "accomplished": [6, 12, 14], "anyobj": 6, "obj": [6, 8], "dumps": [6, 15], "loads": [6, 15], "myobj": 6, "aid": 6, "myobjnam": 6, "accomplish": 6, "sqlcustomtyp": 6, "seis": 6, "_before_insert": 6, "_after_insert": 6, "_before_updat": 6, "_after_updat": 6, "_before_delet": 6, "_after_delet": 6, "acrescent": 6, "ressalv": 6, "pprint": 6, "callback": [6, 12, 15], "before_insert": 6, "after_insert": 6, "oprow": 6, "before_updat": 6, "after_updat": 6, "before_delet": 6, "after_delet": 6, "especializ": 6, "_antes_": 6, "dispar": 6, "infinit": 6, "update_naiv": 6, "schem": [6, 11], "relationships": 6, "deletions": 6, "known": [6, 8], "cascading": 6, "informed": 6, "consequenc": [6, 11, 15], "deletion": 6, "enable_record_versioning": 6, "stored_it": 6, "ocult": [6, 11], "padroniz": 6, "vers\u00f5": 6, "_enable_record_versioning": 6, "archive_db": 6, "archive_nam": 6, "stored_item_archiv": 6, "current_record": 6, "grav": 6, "escond": 6, "generaliz": 6, "tenancy": 6, "blog_post": 6, "subject": [6, 7, 12], "post_text": 6, "is_public": 6, "posts": 6, "p\u00fablic": 6, "_common_filt": 6, "fras": 6, "visualiz": 6, "ignore_common_filters": [6, 11], "common_filters": 6, "suponh": 6, "enderec": 6, "ip": [6, 11], "ip2int": 6, "sv": 6, "ipv4": [6, 11], "sp": 6, "split": [6, 7, 8, 11], "iip": 6, "int2ip": 6, "iv": 6, "ov": 6, "divmod": 6, "256": 6, "nativ": 6, "encod": 6, "decod": 6, "websit": [6, 15], "ipaddr": 6, "wikiped": [6, 7], "91": 6, "198": 6, "174": 6, "192": [6, 11], "172": [6, 11], "217": 6, "11": [6, 11], "74": 6, "125": 6, "65": 6, "207": 6, "97": 6, "227": 6, "239": 6, "f\u00e1bric": 6, "Seu": 6, "quant": 6, "marked": 6, "across": [6, 8], "v\u00e3": 6, "fug": [6, 8], "fas": 6, "db_a": 6, "db_b": 6, "simultan": 6, "distributed_transaction_commit": 6, "desfaz": 6, "possibil": 6, "suced": 6, "estiv": 6, "mydb": 6, "font": [6, 8, 11, 13], "cam": [6, 10], "abstra\u00e7\u00e3": 6, "2010": 6, "connectionpool": 6, "baseadapt": 6, "extends": [6, 8, 15], "se\u00e7\u00f5": 6, "conf": 6, "myvalu": 6, "deleg": 6, "_adapt": 6, "_listify": 6, "list_of_fields": 6, "constr\u00f3": 6, "book": 6, "sqliteadapt": 6, "jdbcsqliteadapt": 6, "mysqladapt": 6, "postgresqladapt": 6, "jdbcpostgresqladapt": 6, "oracleadapt": 6, "mssqladapt": 6, "mssql2adapt": 6, "mssql3adapt": 6, "mssql4adapt": 6, "firebirdadapt": 6, "firebirdembeddedadapt": 6, "informixadapt": 6, "db2adapt": 6, "ingresadapt": 6, "ingresunicodeadapt": 6, "googlesqladapt": 6, "nosqladapt": 6, "googledatastoreadapt": 6, "cubridadapt": 6, "teradataadapt": 6, "sapdbadapt": 6, "couchdbadapt": 6, "imapadapt": 6, "mongodbadapt": 6, "verticaadapt": 6, "sybaseadapt": 6, "char": 6, "varch": 6, "longtext": 6, "credential_decod": 6, "pool_connection": 6, "foreign_key_checks": 6, "sql_mod": 6, "no_backslash_escap": 6, "lastrowid": 6, "last_insert_id": 6, "fetchon": 6, "olhand": 6, "mapping": [6, 11, 14], "couchdb": 6, "ibm_db_dbi": 6, "db2ibm": 6, "db2pyodbc": 6, "firebird_embedded": 6, "firebirdembedded": 6, "googlemysql": 6, "googledatastor": 6, "googlepostgr": 6, "googlesql": 6, "informixs": 6, "ingresu": 6, "ingresunicod": 6, "jdbc": 6, "jdbcpostgr": 6, "jdbcsqlit": 6, "mong": 6, "mssql1": 6, "mssql2": 6, "mssql1n": 6, "mssql3n": 6, "mssql4n": 6, "mssqln": 6, "postgres2": 6, "postgrenew": 6, "postgrepsyconew": 6, "postgres3": 6, "postgreboolean": 6, "postgrepsycoboolean": 6, "postgrepsyc": 6, "pytds": 6, "sap": 6, "spatialit": 6, "vertic": 6, "parsed": 6, "obtained": 6, "sqladapt": 6, "recognized": 6, "mysqldv": 6, "dropping": 6, "altering": 6, "remain": [6, 11], "invisibl": 6, "decid": [6, 11, 13], "reinstat": 6, "fail": [6, 8, 11], "rebuilt": 6, "awar": 6, "extract": [6, 11], "cient": 6, "failur": [6, 11, 15], "unfortunat": 6, "prevented": 6, "fixed": [6, 14], "aftermath": 6, "migrated": 6, "corruption": 6, "migrating": [6, 14], "deleting": [6, 13], "corrupted": 6, "py4web_filesyst": 6, "fetch": [6, 14, 15], "reforc": 6, "raz\u00f5": 6, "superseeded": 6, "obsolet": 6, "circul": 6, "bug": 6, "on_delete_action": 6, "NO": 6, "alcanc": 6, "agreg": 6, "run_in_transaction": 6, "seq\u00fcenc": 6, "liststringproperty": 6, "restful": [7, 12], "cit0801": 7, "inspired": 7, "graphql": 7, "cit0802": 7, "less": [7, 11, 14], "powerful": [7, 12, 14], "spirit": 7, "easi": [7, 8], "denormaliz": 7, "policy": 7, "impli": 7, "disabled": [7, 9, 11], "fields": [7, 11, 12, 13, 14, 16], "specifications": 7, "might": [7, 11], "superhero": 7, "isdir": [7, 11, 13], "job": [7, 11, 13], "strength": 7, "entri": [7, 11, 13], "clark": [7, 13], "kent": [7, 13], "journalist": [7, 13], "park": [7, 13], "photograph": [7, 13], "bruc": [7, 13], "wayn": [7, 13], "ceo": [7, 13], "spiderman": [7, 13], "batman": [7, 11, 13], "flight": 7, "speed": [7, 8], "durability": 7, "75": 7, "80": [7, 11], "70": 7, "allowed_patterns": 7, "reasons": 7, "rec_id": 7, "allow": [7, 8, 9, 11, 12, 13, 15], "deny": 7, "record_id": [7, 15], "get_vars": [7, 14], "post_vars": [7, 14], "patterns": 7, "pattern": 7, "expost": 7, "diagr": 7, "interpreting": 7, "posted": 7, "formdat": 7, "eq": 7, "gt": [7, 9], "queried": 7, "sup": 7, "her\u00f3": 7, "ident": 7, "refers": 7, "superpotent": 7, "preceding": 7, "linked": 7, "v\u00f4o": 7, "said": 7, "record": [7, 11, 12, 14, 15], "equal": [7, 11, 12, 15], "modifiers": 7, "obvious": [7, 8, 12], "status": 7, "200": [7, 11, 14, 15], "2019": 7, "05": 7, "19t05": 7, "38": 7, "00": 7, "132635": 7, "api_version": 7, "2021": 7, "01": 7, "04t07": 7, "466030": 7, "regex": [7, 9, 11], "post_writabl": 7, "referenced_by": 7, "put_writabl": 7, "178974": 7, "desnormaliz": 7, "renom": 7, "123218": 7, "recolh": [7, 13], "559918": 7, "201988": 7, "322494": 7, "readability": 7, "powers": 7, "309903": 7, "355181": 7, "34": 7, "974953": 7, "405515": 7, "366288": 7, "451907": 7, "453020": 7, "iso": 7, "8601": 7, "matching": [7, 9, 11], "representational_state_transf": 7, "distinct": [8, 11], "rendering": [8, 9], "reno": 8, "plus": [8, 12, 13], "minor": [8, 14], "trickery": 8, "seamlessly": 8, "squar": 8, "brackets": [8, 11], "embedded": [8, 11], "angle": 8, "editors": 8, "mix": 8, "soon": [8, 15], "bracket": 8, "separating": [8, 11], "embedding": 8, "indented": 8, "according": 8, "rul": [8, 11, 13], "un": [8, 9, 10, 15], "indentation": 8, "blocks": 8, "ending": 8, "colon": 8, "beginning": [8, 11, 12], "palavr": [8, 9, 10], "emacs": 8, "divis\u00e3": 8, "bloc": [8, 9], "indent": 8, "br": [8, 9], "report": 8, "debugged": 8, "dom": [8, 16], "inspector": 8, "introduz": 8, "mediant": 8, "corp": [8, 9], "interior": 8, "p\u00e1gin": [8, 9, 13, 16], "vulner": 8, "transparently": 8, "replaced": [8, 9, 11, 15], "dummyrespons": 8, "practic": [8, 11], "editing": [8, 9, 11, 12, 13], "new_app": [8, 9], "iter": 8, "ul": [8, 11, 12, 15], "li": [8, 11, 12, 15], "apresent": 8, "condicion": 8, "randint": [8, 12], "h2": [8, 11], "45": [8, 11], "encerr": 8, "incorret": 8, "divisibl": [8, 11], "statements": [8, 11], "division": [8, 9], "excep\u00e7\u00e3": 8, "ol\u00e1": 8, "itemize1": 8, "href": [8, 9, 12, 13], "itemize2": 8, "exact": [8, 14], "represent": [8, 9, 11], "pedac": 8, "frent": 8, "terminat": [8, 15], "statement": 8, "modifying": 8, "tre": [8, 11], "foot": 8, "convention": [8, 11, 14], "minimalist": [8, 14], "minimalist_pag": 8, "extended": 8, "titl": [8, 11, 15], "recursively": 8, "resulting": [8, 11, 15], "bytecod": 8, "pyc": 8, "entir": [8, 14, 15], "inserted": 8, "sidebar_enabled": 8, "hom": 8, "excerpt": 8, "sideb": 8, "assignment": 8, "gets": [8, 12], "anywher": [8, 14], "worth": 8, "though": 8, "impos": 8, "limitation": 8, "noted": 8, "determined": [8, 11], "compiling": 8, "significant": 8, "avoided": 8, "some_condition": 8, "this_templat": 8, "that_templat": 8, "compilation": 8, "layouts": [8, 13], "encapsulat": [8, 9], "commonality": 8, "footers": 8, "menus": [8, 11], "mysideb": 8, "contents": [8, 9, 15], "predefin": 8, "enclosing": 8, "over": [8, 13, 15], "riding": 8, "consistency": 8, "desir": 8, "substitutions": 8, "ships": 8, "doctyp": [8, 13], "viewport": 8, "width": [8, 11], "devic": 8, "initial": [8, 11], "rel": [8, 13], "icon": [8, 13], "aaabaaeaaqeaaaeaiaawaaaafgaaacgaaaabaaaaagaaaaeaiaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaapaaaaa": 8, "stylesheet": [8, 13], "cdnjs": [8, 13], "cloudflar": [8, 13], "ajax": [8, 13, 15], "libs": [8, 9, 13], "awesom": [8, 13], "14": [8, 11, 13], "min": [8, 11, 13], "integrity": 8, "sha512": [8, 11], "1pkogiy59xj8co8": 8, "ne6fz": 8, "loazkjy": 8, "ky8iq0g4b3cyey6wyhn3yt9pw0xpsrivlkmxe40ptknxrlnz9": 8, "fkdaog": 8, "crossorigin": 8, "margin": [8, 15], "top": [8, 11, 12], "16px": 8, "8em": [8, 15], "page_head": 8, "customiz": [8, 11, 13], "navigation": [8, 15], "bar": [8, 13], "nav": 8, "black": [8, 11], "Do": [8, 11, 13, 16], "touch": 8, "hamburg": 8, "checkbox": [8, 9], "left": [8, 11, 13, 15], "menu": [8, 11, 12], "page_left_menu": 8, "navb": [8, 12], "profil": [8, 12, 14], "change_password": [8, 12], "flash": [8, 15, 16], "padded": [8, 14], "contect": 8, "mad": [8, 11, 13], "gott": 8, "page_scripts": 8, "scripts": [8, 9], "few": [8, 12, 15], "html5": 8, "58": 8, "accordingly": 8, "54": 8, "123": [9, 11], "myclass": 9, "thisisatest": 9, "programmatically": [9, 11], "positional": 9, "interpreted": 9, "contained": [9, 11, 13], "named": 9, "dicion\u00e1ri": [9, 10, 11], "metatag": 9, "tagg": 9, "xmlescap": 9, "expressions": [9, 11, 15], "prest": 9, "lt": 9, "strings": [9, 11, 13], "equivalently": 9, "shell": 9, "concatenating": 9, "rela\u00e7\u00e3": 9, "ab": [9, 11], "yb": 9, "h\u00edfens": 9, "_dat": 9, "collapsibl": 9, "hyphen": 9, "notation": 9, "pairs": 9, "dinam": 9, "soap": 9, "whatev": [9, 15], "_xmlns": 9, "xmlns": 9, "renderiz": 9, "insegur": 9, "entered": 9, "scripting": 9, "visitors": [9, 11], "injections": 9, "permitted_tags": 9, "allowed_attribut": 9, "blockquot": 9, "target": [9, 15], "alt": 9, "colspan": 9, "assistent": 9, "_bgcolor": 9, "bgcolor": 9, "concatenat": 9, "bold": 9, "insist": 9, "_action": 9, "_method": 9, "headings": [9, 13], "subheadings": 9, "cabec": [9, 13], "tagging": [9, 12], "it\u00e1l": 9, "embed": 9, "_src": 9, "png": [9, 11], "_alt": 9, "inclus\u00e3": 9, "est\u00e1t": [9, 16], "envi": [9, 13], "r\u00e1di": 9, "_valu": [9, 11, 15], "radi": [9, 11], "buttons": [9, 11, 13, 15], "_checked": 9, "checked": [9, 11], "stands": 9, "ordered": 9, "_selected": 9, "thank": 9, "ok": [9, 14], "pr\u00e9": [9, 13, 16], "prefer": 9, "listagens": 9, "marca\u00e7\u00e3": 9, "whit": [9, 15], "Estas": 9, "junt": [9, 13], "matriz": 9, "posicion": 9, "rows": [9, 11, 13, 14], "oposi\u00e7\u00e3": 9, "rodap": 9, "_cols": 9, "_rows": 9, "cols": 9, "monoespac": 9, "unordered": 9, "generator": 9, "_c": 9, "suprim": 9, "aut": 9, "fechament": 9, "termin": 9, "agrad": 9, "retribu": 9, "0x7fa533ff7640": 9, "kargs": 9, "supplied": 9, "first_only": 9, "z": [9, 11], "jquery": [9, 11, 15], "accepting": 9, "selector": [9, 15], "selector1": 9, "selector2": 9, "selectorn": 9, "descendant": 9, "ancestor": 9, "equals": [9, 12], "unquoted": 9, "_u": 9, "_disabled": 9, "specifying": 9, "abc": [9, 11], "xyz": [9, 11], "callabl": [9, 11], "el": 9, "searched": [9, 13], "textual": 9, "efg": 9, "factori": 9, "injecting": 9, "timeoffset": 9, "sidebar_menu": 9, "i18n": 10, "p10n": 10, "fr": 10, "dog": [10, 11, 15], "tantissim": 10, "superior": 10, "express\u00f5": 10, "plural": 10, "chec": 10, "bed": 10, "postel": 10, "cachorr": 10, "deform": 10, "reserv": 10, "max": [10, 11, 15], "idiom": 10, "envolt": 10, "find_match": 10, "update_languag": 10, "supported": [10, 11, 12], "german": 10, "known_expressions": 10, "high": [11, 12], "deletabl": [11, 13], "formstyl": [11, 13, 15], "formstyledefault": [11, 13], "dbi": 11, "keep_valu": 11, "form_nam": 11, "hidden": [11, 15], "csrf_session": 11, "csrf_protection": 11, "lifespan": 11, "signing_inf": 11, "apag": 11, "disallow": 11, "renders": 11, "formstylebulm": [11, 13, 15], "formstylebootstrap4": 11, "grava\u00e7\u00f5": 11, "submet": 11, "validity": 11, "form_minimal": 11, "product_nam": 11, "product_quantity": 11, "not_accepted": 11, "form_exampl": 11, "intentionally": 11, "nor": 11, "management": 11, "form_basic": 11, "realnam": 11, "univers": 11, "dc": [11, 12], "comics": 11, "marvel": 11, "dual": 11, "explain": 11, "row": [11, 13, 15], "bottom": 11, "choos": [11, 12], "dropdown": [11, 13, 15], "prototyping": 11, "hand": [11, 15], "your_app": 11, "form_upload": 11, "required_fold": 11, "hashed": 11, "plugins": [11, 15], "checkboxwidget": 11, "datetimewidget": 11, "fileuploadwidget": 11, "listwidget": 11, "passwordwidget": 11, "radiowidget": 11, "selectwidget": 11, "textareawidget": 11, "improved": 11, "form_widgets": 11, "subclassing": 11, "improving": [11, 12], "form_custom_widgets": 11, "mycustomwidget": 11, "placehold": [11, 15], "no_tabl": [11, 15], "s_": [11, 15], "_placehold": [11, 15], "_titl": [11, 15], "_style": [11, 15], "mystyle": 11, "foreground": 11, "manipulated": 11, "manipulat": 11, "modify": [11, 13, 15], "granulary": 11, "submission": [11, 15], "inserting": 11, "begin": [11, 13], "detail_fields": 11, "frequently": 11, "redundancy": 11, "types": 11, "clash": 11, "isn": [11, 13], "ensur": 11, "surrounding": 11, "controls": 11, "correctly": 11, "stuff": [11, 13], "inject": [11, 16], "_onclick": 11, "doh": 11, "cancel": [11, 15], "attrs": [11, 13, 15], "history": 11, "drop": 11, "down": [11, 15], "lookups": 11, "selection": 11, "constructors": 11, "error_messag": 11, "fist": 11, "wrap": 11, "fill": [11, 15], "translation": [11, 14], "letters": 11, "numbers": 11, "alphanumeric": 11, "converts": 11, "us": 11, "phon": 11, "strict": 11, "fits": 11, "boundari": 11, "inputs": [11, 15], "maxsiz": 11, "255": 11, "minsiz": 11, "minimum": 11, "short": 11, "16": 11, "1kb": 11, "1mb": 11, "1048576": 11, "1024": 11, "cgi": 11, "fieldstorag": 11, "intuitively": 11, "rejects": 11, "breaks": 11, "syntactic": 11, "domain": [11, 12], "rfc": 11, "2616": 11, "semantic": [11, 12], "prepend": [11, 15], "front": [11, 15], "abbreviated": 11, "ca": 11, "2396": 11, "customizabl": [11, 13], "allowed_schem": 11, "exclud": 11, "lacking": 11, "rejected": 11, "prepended": [11, 14], "prepend_schem": 11, "prepending": 11, "internationalized": 11, "idn": 11, "3490": 11, "asci": 11, "punycod": 11, "3492": 11, "bit": 11, "beyond": 11, "standards": [11, 13], "hex": 11, "0x4e86": 11, "becom": 11, "4e": 11, "86": 11, "ftps": 11, "maxlen": 11, "slug": 11, "validated": 11, "repeated": 11, "dash": 11, "native_json": 11, "unchanged": 11, "hh": 11, "mm": 11, "ss": 11, "formats": 11, "yyyy": 11, "dd": 11, "symbols": 11, "symbol": 11, "year": [11, 15], "century": 11, "1963": 11, "day": 11, "month": 11, "28": 11, "08": 11, "aug": 11, "august": 11, "hour": 11, "24": 11, "clock": 11, "12": 11, "am": 11, "pm": 11, "minut": 11, "59": 11, "2008": 11, "2009": 11, "passwords": 11, "neith": 11, "strip": 11, "empty_regex": 11, "deprecated": [11, 15], "express": 11, "arrang": 11, "backward": 11, "compatibility": 11, "expressed": 11, "logical": 11, "terms": 11, "dot": 11, "fall": 11, "comparison": 11, "arithmetic": 11, "limits": 11, "internationaliz": 11, "decimals": 11, "floating": 11, "definit": 11, "ie": 11, "numerical": 11, "conversion": [11, 16], "filled": 11, "acceptanc": 11, "descriptiv": 11, "apple": 11, "banan": 11, "cherry": 11, "alphabetically": 11, "labels": 11, "sort": 11, "hulk": 11, "06": 11, "multiselect": 11, "exclusiv": [11, 12], "specials": 11, "forbidden": 11, "digit": [11, 12], "obviously": 11, "clev": 11, "enough": [11, 12], "cle": 11, "entropy": 11, "53": 11, "implicitly": 11, "performs": 11, "iterations": 11, "pbkdf2": 11, "byte": 11, "md5": 11, "hmac": 11, "thisisthekey": 11, "useless": [11, 14], "constant": 11, "mysaltvalu": 11, "somewhat": 11, "min_length": 11, "alg": 11, "consequently": 11, "invalidating": 11, "valued": 11, "emails": 11, "filter_in": 11, "split_emails": 11, "findall": 11, "mailt": 11, "customization": 11, "textar": 11, "sqlforms": 11, "blanks": 11, "operat": 11, "stand": 11, "onvalidation": 11, "accepts": 11, "emails_onvalidation": 11, "acts": 11, "attempted": 11, "through": 11, "dimensions": 11, "height": [11, 13, 15], "bmp": 11, "gif": 11, "jpeg": 11, "imaging": 11, "parts": 11, "taken": 11, "source1": 11, "extensions": 11, "lowercas": 11, "bypass": [11, 12], "200x200": 11, "pixels": 11, "extension": [11, 14], "crit": 11, "lastdot": 11, "separator": 11, "indicat": [11, 14], "tar": 11, "gz": 11, "insensitiv": 11, "thumbnail": 11, "jpg": 11, "older": 11, "regexlib": 11, "minip": 11, "maxip": 11, "is_localhost": 11, "is_privat": 11, "is_automatic": 11, "lowest": 11, "highest": 11, "flag": 11, "168": 11, "integers": 11, "boundary": 11, "199": 11, "forbid": 11, "meanings": 11, "169": 11, "254": 11, "network": [11, 12], "is_link_local": 11, "is_reserved": 11, "is_multicast": 11, "is_routeabl": 11, "is_6to4": 11, "is_tered": 11, "subnets": 11, "ipv6": 11, "allocated": 11, "networks": [11, 12], "fe80": 11, "ietf": 11, "multicast": 11, "ff00": 11, "6to4": 11, "2002": 11, "tered": 11, "2001": 11, "forcing": 11, "subnet": 11, "memb": [11, 12], "fb00": 11, "heading": 11, "blank": [11, 13], "removal": 11, "456": 11, "123456": 11, "synops": 11, "his": 11, "requirement": 11, "probability": 11, "rac": 11, "occurs": 11, "operationalerror": 11, "inserts": 11, "dbset": 11, "allowed_overrid": 11, "persons": 11, "days": 11, "registration_stamp": 11, "timedelt": 11, "value_field": 11, "representing_field": 11, "fourth": 11, "ten": 11, "selections": 11, "represented": 11, "orderby": [11, 12, 13, 15], "groupby": 11, "sorting": 11, "usefull": 11, "wishing": 11, "occasionally": 11, "_and": 11, "owners": 11, "subset": 11, "check_nonnegative_quantity": 11, "vital": 12, "multius": 12, "interchangeably": 12, "proc": 12, "confirms": 12, "say": 12, "guidelin": 12, "approv": 12, "step": [12, 14], "adiant": 12, "bloqu": 12, "nomeaplic": 12, "request_reset_password": 12, "reset_password": 12, "verify_email": 12, "sair": 12, "change_email": 12, "pr\u00f3pr": [12, 13], "allowed_actions": 12, "turn": [12, 13, 15], "verification": 12, "activated": 12, "successfully": 12, "challeng": 12, "submitting": 12, "correct": 12, "instantiation": [12, 13], "two_factor_filt": 12, "bypassed": 12, "sampl": 12, "user_outside_network": 12, "ipaddress": 12, "22": 12, "ip_list": 12, "ipv4network": 12, "ipv4address": 12, "mfa": 12, "sends": 12, "send_two_factor_email": 12, "from_address": 12, "youremail": 12, "flow": 12, "two_factor": 12, "endpoint": [12, 15], "_next_url": 12, "auth_plugins": 12, "hierarchical": 12, "saml": 12, "oauth": 12, "ui": 12, "adapt": 12, "exibi\u00e7\u00e3": [12, 13], "pam_plugin": 12, "pamplugin": 12, "register_plugin": 12, "vir": 12, "authenticat": 12, "directory": 12, "ldap_plugin": 12, "ldapplugin": 12, "ldap_setting": 12, "ad": 12, "base_dn": 12, "cn": 12, "ldap_settings": 12, "ubuntu": 12, "librari": 12, "apt": 12, "libldap2": 12, "libsasl2": 12, "oauth2googl": 12, "client_id": 12, "client_secret": 12, "callback_url": 12, "segred": 12, "oauth2facebook": 12, "oauth2discord": 12, "discord_client_id": 12, "discord_client_secret": 12, "uri": 12, "discriminator": 12, "mentioned": [12, 15], "verifying": 12, "existenc": 12, "showed": 12, "suffers": 12, "overkill": 12, "tagged_db": 12, "_tag": 12, "tagged_nam": 12, "danc": 12, "teach": 12, "auth_user_tagged_groups": 12, "chars": 12, "footing": 12, "authorized": 12, "displays": [12, 13], "not_authorized": 12, "find_by_tag": 12, "deix": 12, "exerc\u00edci": 12, "has_membership": 12, "school": 12, "physics": 12, "professor": 12, "ensin": 12, "m\u00e9di": 12, "f\u00edsic": 12, "colegial": 12, "creativity": 12, "auth_group": 12, "auth_groups": 12, "zapp": 12, "zap_id": 12, "zap": 12, "belongs": 12, "zapped": 12, "belong": [12, 14], "filtr": [12, 13], "membr": 12, "impersonat": 12, "impersonating": 12, "start_impersonating": 12, "is_impersonating": 12, "stop_impersonating": 12, "capabiliti": [13, 15], "corn": 13, "ston": 13, "exclus\u00e3": 13, "desc": 13, "search_queri": 13, "OU": 13, "search_form": 13, "p\u00f3s": 13, "substitui\u00e7\u00f5": 13, "jpsteil": 13, "grid_tutorial": 13, "advised": 13, "doubt": 13, "finding": 13, "precious": 13, "hints": 13, "grid_class_styl": 13, "gridclassstyl": 13, "gridclassstylebulm": 13, "val": 13, "perfectly": 13, "usabl": 13, "refresh": 13, "icons": 13, "showing": 13, "placing": 13, "maintainabl": 13, "lead": [13, 15], "advanced": [13, 16], "topics": [13, 16], "htmx": [13, 16], "forget": 13, "field_id": 13, "show_id": 13, "editabl": [13, 14], "pre_action_buttons": 13, "post_action_buttons": 13, "auto_process": [13, 15], "rows_per_pag": 13, "include_action_button_text": 13, "search_button_text": 13, "responsibl": 13, "especifiqu": 13, "action_button": 13, "imediat": 13, "estil": 13, "styling": 13, "styles": 13, "utilizing": 13, "during": 13, "involv": [13, 14], "fifth": 13, "clickabl": 13, "hid": 13, "modifi": 13, "handling": 13, "por\u00e7\u00f5": 13, "grelh": 13, "primarily": 13, "class_styl": 13, "unfortunately": 13, "bootstrap": 13, "gridactionbutton": 13, "additional_cl": 13, "additional_styl": 13, "override_cl": 13, "override_styl": 13, "append_id": 13, "ignore_attribute_plugin": 13, "naveg": 13, "clic": 13, "fa": 13, "calend": 13, "aul": 13, "mensag": 13, "verdad": 13, "id_field_nam": 13, "id_valu": 13, "querystring": 13, "defining": 13, "improvement": 13, "10px": 13, "foo": 13, "filter_out": 13, "foreign": 13, "company": 13, "is_null_or": 13, "empres": 13, "qued": 13, "empreg": 13, "joined": 13, "employe": 13, "joins": [13, 16], "clicked": [13, 15], "sorted": 13, "search_text": 13, "far": [13, 15], "grids": 13, "antig": 14, "similariti": 14, "identical": 14, "light": 14, "predetermined": 14, "debuggers": 14, "ides": 14, "constraining": 14, "mann": 14, "admin": 14, "locat": 14, "my_url_path": 14, "assumed": 14, "postfix": 14, "matters": 14, "expected": 14, "wrappers": 14, "hard": 14, "analogy": 14, "hous": 14, "preprocessing": 14, "postprocessing": 14, "carry": 14, "underlying": 14, "preguic": 14, "dangerous": 14, "pyweb": 14, "ability": 14, "extensibl": 14, "lacks": 14, "requires_": 14, "mean": 14, "establishing": 14, "attaching": 14, "labeling": 14, "assigning": 14, "rocket": 14, "301": 14, "sophisticated": 14, "dismissal": 14, "file_path": 14, "csv": 14, "app_fold": 14, "requires_login": 14, "user_email": 14, "retrieved": 14, "big": 14, "decorated": 14, "websocket": 15, "async": 15, "play": 15, "compliant": 15, "great": 15, "react": 15, "angul": 15, "complexity": 15, "systems": 15, "reaping": 15, "benefits": 15, "ecosyst": 15, "difficult": 15, "road": 15, "reactivity": 15, "emerging": 15, "complexiti": 15, "technically": 15, "transitions": 15, "sockets": 15, "hypertext": 15, "cit1601": 15, "frontends": 15, "integration": 15, "coupl": 15, "hx": 15, "_hx": 15, "url_to_post_t": 15, "submitted": 15, "started": 15, "htmx_form_dem": 15, "htmx_list": 15, "htmx_form": 15, "cancel_attrs": 15, "sidec": 15, "unpkg": 15, "sh": 15, "functional": 15, "maintenanc": 15, "navigat": 15, "anchor": 15, "fancy": 15, "confirmation": 15, "htmx_grid": 15, "attributes_plugin": 15, "attributespluginhtmx": 15, "new_sidec": 15, "edit_sidec": 15, "confirmations": 15, "widgets": [15, 16], "dropdowns": 15, "functools": 15, "params": 15, "autocomplete_query": 15, "fk_tabl": 15, "ktabl": 15, "fk_field": 15, "kfield": 15, "_autocomplete_search_fields": 15, "sf": 15, "_search": 15, "len": 15, "data_label": 15, "htmxautocompletewidget": 15, "simple_query": 15, "pop": 15, "hold": 15, "hidden_input": 15, "hidden_div": 15, "keyup": 15, "delay": 15, "500ms": 15, "s_autocomplete_results": 15, "indicator": 15, "vals": 15, "search_valu": 15, "s_search": 15, "_autocomplet": 15, "onload": 15, "elt": 15, "queryselector": 15, "onkeydown": 15, "check_": 15, "s_down_key": 15, "keycod": 15, "s_autocomplet": 15, "focus": 15, "selectedindex": 15, "formatt": 15, "formstylefactory": 15, "class_inner_exceptions": 15, "vendor": 15, "vendor_typ": 15, "product_record": 15, "earli": 15, "whichev": 15, "wish": 15, "overriding": 15, "vendors": 15, "limiting": 15, "subqueri": 15, "clearly": 15, "prototyp": 15, "var": 15, "supporting": 15, "selected_elements": 15, "queryselectorall": 15, "array": 15, "eval": 15, "sandbox": 15, "math": 15, "wrapp": 15, "recereived": 15, "get_cooki": 15, "extracts": 15, "register_vue_component": 15, "lazily": 15, "res": 15, "upload_help": 15, "bind": 15, "my_id": 15, "reimplementation": 15, "basically": 15, "translat": 15, "clientsid": 15, "serversid": 15, "debounc": 15, "stepping": 15, "setinterval": 15, "500": 15, "skip": 15, "implementations": 15, "delaying": 15, "200ms": 15, "onclick": 15, "1000ms": 15, "tags_inputs": 15, "comm": 15, "browsers": 15, "jsl": 15, "tags_input": 15, "zip_cod": 15, "freetext": 15, "safar": 15, "edge": 15, "datalist": 15, "firfox": 15, "undocumented": 15, "padding": 15, "inlin": 15, "block": 15, "bord": 15, "radius": 15, "100px": 15, "111111": 15, "3em": 15, "2em": 15, "2px": 15, "opacity": 15, "capitaliz": 15, "tag_input": 15, "score_input": 15, "scor": 15, "new_password": 15, "poor": 15, "man": 15, "trapped": 15, "component_1": 15, "mycomponent": 15, "blink": 15, "loading": 15, "serving": 15, "envelop": 15, "moreov": 15, "other_pag": 15, "acknowledgments": 16, "dic": 16, "sugest\u00f5": 16, "contribu": 16, "coloc": 16, "understanding": 16, "plataform": 16, "proced": 16, "corr": 16, "installations": 16, "fixur": 16, "urlsign": 16, "caveats": 16, "memoiz": 16, "introduction": 16, "migra\u00e7\u00f5": 16, "raw": 16, "sql": 16, "Comando": 16, "computed": 16, "virtual": 16, "relations": 16, "export": 16, "caracter\u00edst": 16, "avanc": 16, "pegadinh": 16, "polic": 16, "overview": 16, "customizing": 16, "asynci": 16, "genindex": 16, "modindex": 16}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"O": [0, 1, 3, 4, 5, 6], "\u00e9": 0, "py4web": [0, 1, 6, 14, 15, 16], "acknowledgments": 0, "ajud": 1, "recurs": [1, 6], "dic": 1, "Este": 1, "manual": [1, 16], "grup": 1, "googl": [1, 2, 6, 12], "the": [1, 2, 4, 5, 6, 7, 11, 13, 15], "discord": [1, 12], "serv": [1, 5, 6, 9], "tutori": 1, "v\u00edd": 1, "As": 1, "font": [1, 2], "github": 1, "sugest\u00f5": 1, "pr\u00e9": [1, 2], "requisit": [1, 2], "Um": [1, 6], "local": [1, 2, 6], "trabalh": 1, "python": 1, "modern": 1, "depur": 1, "vscod": 1, "pycharm": 1, "Como": 1, "contribu": 1, "instal": 2, "coloc": 2, "funcion": 2, "understanding": 2, "design": [2, 11], "plataform": 2, "suport": [2, 6], "proced": 2, "configur": [2, 6], "part": [2, 6], "bin\u00e1ri": 2, "pip": 2, "installing": 2, "using": [2, 5, 8, 9, 12, 13, 15], "virtual": [2, 6], "environment": 2, "global": 2, "melhor": 2, "primeir": [2, 4], "corr": 2, "op\u00e7\u00f5": 2, "linh": 2, "comando": 2, "op\u00e7\u00e3": 2, "call": 2, "new_app": 2, "run": 2, "set_password": 2, "setup": 2, "shell": [2, 6], "version": [2, 6], "special": [2, 11], "installations": 2, "https": 2, "wsgi": 2, "deployment": 2, "on": 2, "gcloud": 2, "aka": 2, "gae": 2, "app": [2, 4], "engin": 2, "implant": 2, "pythonanywher": 2, "dock": 2, "podman": 2, "ubuntu": 2, "dashboard": 3, "A": [3, 6, 9, 11], "p\u00e1gin": [3, 4], "web": [3, 4], "principal": 3, "sess\u00e3": 3, "cri": 4, "aplic": [4, 6], "Do": 4, "princ\u00edpi": 4, "est\u00e1t": 4, "din\u00e2m": 4, "Em": 4, "valor": [4, 6], "retorn": [4, 6], "rot": 4, "objet": 4, "request": 4, "model": [4, 6], "_scaffold": 4, "copying": 4, "watch": 4, "fil": [4, 11, 14], "chang": 4, "fixur": 5, "fixtur": 5, "templat": [5, 8, 13], "inject": [5, 9], "translator": 5, "flash": [5, 14], "session": 5, "client": 5, "sid": [5, 9], "in": [5, 8, 9, 15], "cooki": 5, "memcach": 5, "red": [5, 13], "databas": [5, 6, 11], "anywher": 5, "sharing": 5, "sessions": 5, "condition": 5, "urlsign": 5, "dal": [5, 6], "auth": [5, 12, 14], "caveats": 5, "about": 5, "personaliz": [5, 6, 9, 13], "multipl": [5, 12], "caching": 5, "memoiz": 5, "decor": 5, "convenient": 5, "abstraction": 6, "lay": 6, "introduction": 6, "supported": 6, "quick": 6, "tour": 6, "usand": [6, 13], "stand": 6, "alon": 6, "experiment": 6, "construtor": 6, "assinatur": 6, "strings": 6, "conex\u00e3": 6, "par\u00e2metr": 6, "uri": 6, "pool": 6, "conex\u00f5": 6, "falh": 6, "tentat": 6, "tabel": [6, 16], "preguic": 6, "less": 6, "banc": 6, "dad": 6, "replic": 6, "palavr": 6, "chav": 6, "reserv": 6, "quoting": 6, "cas": 6, "faz": 6, "segur": 6, "outr": 6, "past": 6, "padr\u00e3": 6, "migra\u00e7\u00e3": 6, "commit": 6, "rollback": 6, "tabl": [6, 9], "define_tabl": 6, "id": 6, "not": 6, "sobr": 6, "prim\u00e1r": 6, "plural": 6, "singul": 6, "redefin": 6, "format": [6, 11, 15], "represent": 6, "fich": 6, "rnam": 6, "nom": 6, "real": 6, "primarykey": 6, "par": [6, 8, 14], "leg": 6, "migrat": 6, "fake_migrat": 6, "table_class": 6, "sequence_nam": 6, "trigger_nam": 6, "polymodel": 6, "on_defin": 6, "adicion": 6, "atribut": 6, "camp": [6, 13], "field": [6, 11], "types": 6, "and": [6, 7, 8, 11, 12, 13, 14, 15], "validators": [6, 11], "modific": 6, "temp": 6, "execu": 6, "Mais": 6, "envi": 6, "migra\u00e7\u00f5": 6, "fixa\u00e7\u00e3": 6, "quebr": 6, "resum": 6, "control": 6, "methods": [6, 14], "insert": 6, "query": 6, "set": [6, 11], "rows": 6, "update_or_insert": 6, "validate_and_insert": 6, "validate_and_updat": 6, "drop": 6, "marca\u00e7\u00e3": 6, "registr": 6, "raw": 6, "sql": 6, "executesql": 6, "_lastsql": 6, "temporiz": 6, "consult": 6, "\u00edndic": [6, 16], "generating": 6, "Comando": 6, "select": [6, 9], "selet": 6, "uso": 6, "mem\u00f3r": 6, "inferior": 6, "bas": 6, "iter": 6, "renderiz": 6, "atalh": 6, "obten\u00e7\u00e3": 6, "row": 6, "s": 6, "orderby": 6, "groupby": 6, "limitby": 6, "distinct": 6, "having": 6, "orderby_on_limitby": 6, "join": 6, "left": 6, "cach": 6, "orden": 6, "tend": 6, "distint": 6, "junt": 6, "deix": 6, "oper": 6, "l\u00f3gic": 6, "count": [6, 14], "isempty": 6, "delet": 6, "updat": 6, "express\u00f5": 6, "update_record": 6, "inser": 6, "atualiz": [6, 10], "dicion\u00e1ri": 6, "first": 6, "last": 6, "as_dict": 6, "as_list": 6, "combin": 6, "find": [6, 9], "exclud": 6, "sort": 6, "selects": 6, "computed": 6, "fields": 6, "comput": 6, "virtu": 6, "nov": 6, "estil": 6, "experimental": 6, "velh": 6, "antig": 6, "joins": 6, "relations": 6, "muit": 6, "rela\u00e7\u00e3": 6, "inner": 6, "out": 6, "agrup": 6, "cont": 6, "many": 6, "to": 6, "relation": 6, "aut": 6, "referent": [6, 13, 16], "alias": 6, "lik": 6, "ilik": 6, "regexp": 6, "startswith": 6, "endswith": 6, "contains": 6, "upper": 6, "low": 6, "year": 6, "month": 6, "day": 6, "hour": 6, "minut": 6, "seconds": 6, "belongs": 6, "sum": 6, "avg": 6, "min": 6, "max": 6, "len": 6, "substrings": 6, "Os": [6, 13], "defeit": 6, "coalesc": 6, "coalesce_zer": 6, "export": 6, "import": 6, "csv": 6, "cad": 6, "vez": 6, "tod": 6, "mesm": 6, "sincroniz": 6, "remot": 6, "html": [6, 9], "xml": [6, 9], "caracter\u00edst": 6, "avanc": 6, "list": 6, "type": [6, 11], "heranc": 6, "filter_in": 6, "filter_out": 6, "cham": 6, "inser\u00e7\u00e3": 6, "exclus\u00e3": 6, "cascad": 6, "record": 6, "filtr": 6, "comuns": 6, "tip": 6, "defin": 6, "transa\u00e7\u00e3": 6, "distribu\u00edd": 6, "copi": 6, "db": 6, "pegadinh": 6, "adapt": 6, "sqlit": 6, "mysql": 6, "mssql": 6, "microsoft": 6, "or\u00e1cul": 6, "nosql": 6, "datastor": 6, "restap": 7, "polic": 7, "actions": [7, 12], "get": 7, "practical": 7, "exampl": [7, 11, 13, 14, 15], "respons": 7, "linguag": 8, "yatl": [8, 9], "sintax": 8, "b\u00e1sic": 8, "whil": 8, "if": 8, "elif": 8, "else": 8, "tent": 8, "excet": 8, "finally": 8, "def": 8, "return": [8, 14], "information": 8, "workflow": 8, "extend": 8, "includ": 8, "extending": 8, "variabl": [8, 14], "functions": [8, 11], "block": 8, "sup": 8, "pag": 8, "layout": 8, "standard": [8, 11], "structur": [8, 11], "default": 8, "mobil": 8, "development": 8, "helpers": 9, "overview": 9, "built": 9, "body": 9, "cat": 9, "div": 9, "EM": 9, "form": [9, 11, 14, 15], "h1": 9, "h2": 9, "h3": 9, "h4": 9, "h5": 9, "h6": 9, "head": 9, "i": 9, "img": 9, "input": 9, "label": 9, "li": 9, "ol": 9, "option": 9, "p": 9, "pre": 9, "script": 9, "span": 9, "style": [9, 13], "tr": 9, "td": 9, "tbody": 9, "textar": 9, "th": 9, "thead": 9, "titl": 9, "tt": 9, "ul": 9, "url": 9, "tag": 9, "beautify": 9, "dom": 9, "children": 9, "internacionaliz": 10, "pluraliz": 10, "arquiv": 10, "tradu\u00e7\u00e3": 10, "foruml\u00e1ri": 11, "constructor": 11, "minimal": 11, "without": 11, "basic": [11, 13], "upload": 11, "widgets": 11, "custom": [11, 13], "advanced": [11, 15], "manipulation": 11, "forms": 11, "sidec": 11, "paramet": 11, "valid": 11, "formul\u00e1ri": 11, "text": 11, "is_alphanumeric": 11, "is_low": 11, "is_upp": 11, "is_email": 11, "is_match": 11, "is_length": 11, "is_url": 11, "is_slug": 11, "is_json": 11, "dat": 11, "tim": 11, "is_tim": 11, "is_dat": 11, "is_datetim": 11, "is_date_in_rang": 11, "is_datetime_in_rang": 11, "rang": 11, "equality": 11, "is_equal_t": 11, "is_not_empty": 11, "is_null_or": 11, "is_empty_or": 11, "is_expr": 11, "is_decimal_in_rang": 11, "is_float_in_rang": 11, "is_int_in_rang": 11, "is_in_set": 11, "checkbox": 11, "validation": 11, "dictionari": 11, "tupl": 11, "with": [11, 12, 14], "sorted": 11, "options": 11, "tagging": 11, "complexity": 11, "security": 11, "is_strong": 11, "crypt": 11, "is_list_of": 11, "is_list_of_emails": 11, "any_of": 11, "is_imag": 11, "is_fil": 11, "is_upload_filenam": 11, "is_ipv4": 11, "is_ipv6": 11, "is_ipaddress": 11, "other": 11, "cleanup": 11, "is_not_in_db": 11, "is_in_db": 11, "authentication": 12, "authorization": 12, "interfac": 12, "autentic": 12, "insid": 12, "two": 12, "factor": 12, "two_factor_required": 12, "two_factor_send": 12, "two_factor_tri": 12, "plugins": 12, "pam": 12, "ldap": 12, "oauth2": 12, "facebook": 12, "tags": 12, "etiquet": 12, "permiss\u00f5": 12, "objects": 12, "user": 12, "impersonation": 12, "key": 13, "featur": 13, "grid": [13, 14, 15], "object": [13, 15], "searching": 13, "filtering": 13, "crud": 13, "settings": 13, "columns": 13, "customizing": 13, "a\u00e7\u00e3": 13, "bot\u00f5": 13, "bot\u00e3": 13, "class": 13, "amostr": 13, "callabl": 13, "parameters": 13, "De": 14, "web2py": 14, "simpl": 14, "conversion": 14, "hell": 14, "world": 14, "redirect": 14, "returning": 14, "args": 14, "calling": 14, "setting": 14, "up": 14, "view": 14, "accessing": 14, "OS": 14, "topics": 15, "asynci": 15, "htmx": 15, "usag": 15, "autocomplet": 15, "widget": 15, "utils": 15, "js": 15, "string": 15, "q": 15, "t": 15, "conte\u00fad": 16}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 60}, "alltitles": {"O que \u00e9 py4web?": [[0, "what-is-py4web"]], "Acknowledgments": [[0, "acknowledgments"]], "Ajuda, recursos e dicas": [[1, "help-resources-and-hints"]], "Recursos": [[1, "resources"]], "Este manual": [[1, "this-manual"]], "O grupo Google": [[1, "the-google-group"]], "The Discord server": [[1, "the-discord-server"]], "Tutoriais e v\u00eddeo": [[1, "tutorials-and-video"]], "As fontes no GitHub": [[1, "the-sources-on-github"]], "Dicas e sugest\u00f5es": [[1, "hints-and-tips"]], "Pr\u00e9-requisitos": [[1, "prerequisites"]], "Um local de trabalho python moderna": [[1, "a-modern-python-workplace"]], "Depura\u00e7\u00e3o py4web com VScode": [[1, "debugging-py4web-with-vscode"]], "Depura\u00e7\u00e3o py4web com PyCharm": [[1, "debugging-py4web-with-pycharm"]], "Como contribuir": [[1, "how-to-contribute"]], "Instala\u00e7\u00e3o e coloca\u00e7\u00e3o em funcionamento": [[2, "installation-and-startup"]], "Understanding the design": [[2, "understanding-the-design"]], "Plataformas e pr\u00e9-requisitos suportados": [[2, "supported-platforms-and-prerequisites"]], "Procedimentos de configura\u00e7\u00e3o": [[2, "setup-procedures"]], "Instalando a partir de bin\u00e1rios": [[2, "installing-from-binaries"]], "Instalando a partir de pip": [[2, "installing-from-pip"]], "Installing using a virtual environment": [[2, "installing-using-a-virtual-environment"]], "Instala\u00e7\u00e3o de fonte (globalmente)": [[2, "installing-from-source-globally"]], "Instalando a partir de fonte (localmente)": [[2, "installing-from-source-locally"]], "Melhoramento": [[2, "upgrading"]], "Primeira corrida": [[2, "first-run"]], "Op\u00e7\u00f5es de linha de comando": [[2, "command-line-options"]], "Op\u00e7\u00e3o `` comando call``": [[2, "call-command-option"]], "Op\u00e7\u00e3o `` comando new_app``": [[2, "new-app-command-option"]], "Op\u00e7\u00e3o `` comando run``": [[2, "run-command-option"]], "Op\u00e7\u00e3o `` comando set_password``": [[2, "set-password-command-option"]], "Op\u00e7\u00e3o `` comando setup``": [[2, "setup-command-option"]], "Op\u00e7\u00e3o `` comando shell``": [[2, "shell-command-option"]], "Op\u00e7\u00e3o `` comando version``": [[2, "version-command-option"]], "Special installations": [[2, "special-installations"]], "HTTPS": [[2, "https"]], "WSGI": [[2, "wsgi"]], "Deployment on GCloud (aka GAE - Google App Engine)": [[2, "deployment-on-gcloud-aka-gae-google-app-engine"]], "Implanta\u00e7\u00e3o em PythonAnywhere.com": [[2, "deployment-on-pythonanywhere-com"]], "Deployment on Docker/Podman": [[2, "deployment-on-docker-podman"]], "Deployment on Ubuntu": [[2, "deployment-on-ubuntu"]], "O Dashboard": [[3, "the-dashboard"]], "A p\u00e1gina Web principal": [[3, "the-main-web-page"]], "Sess\u00e3o no Dashboard": [[3, "login-into-the-dashboard"]], "Criando seu primeiro aplicativo": [[4, "creating-your-first-app"]], "Do princ\u00edpio": [[4, "from-scratch"]], "P\u00e1ginas est\u00e1ticas": [[4, "static-web-pages"]], "P\u00e1ginas web din\u00e2micas": [[4, "dynamic-web-pages"]], "Em valores de retorno": [[4, "on-return-values"]], "Rotas": [[4, "routes"]], "O objeto `` request``": [[4, "the-request-object"]], "Modelos": [[4, "templates"]], "The _scaffold app": [[4, "the-scaffold-app"]], "Copying the _scaffold app": [[4, "copying-the-scaffold-app"]], "Watch for files change": [[4, "watch-for-files-change"]], "Fixures": [[5, "fixtures"]], "Using Fixtures": [[5, "using-fixtures"]], "The Template fixture": [[5, "the-template-fixture"]], "The Inject fixture": [[5, "the-inject-fixture"]], "The Translator fixture": [[5, "the-translator-fixture"]], "O fixture flash": [[5, "the-flash-fixture"]], "The Session fixture": [[5, "the-session-fixture"]], "Client-side session in cookies": [[5, "client-side-session-in-cookies"]], "Server-side session in memcache": [[5, "server-side-session-in-memcache"]], "Server-side session in Redis": [[5, "server-side-session-in-redis"]], "Server-side session in database": [[5, "server-side-session-in-database"]], "Server-side session anywhere": [[5, "server-side-session-anywhere"]], "Sharing sessions": [[5, "sharing-sessions"]], "The Condition fixture": [[5, "the-condition-fixture"]], "The URLsigner fixture": [[5, "the-urlsigner-fixture"]], "O fixture DAL": [[5, "the-dal-fixture"]], "The Auth fixture": [[5, "the-auth-fixture"]], "Caveats about fixtures": [[5, "caveats-about-fixtures"]], "Fixtures personalizados": [[5, "custom-fixtures"]], "Multiple fixtures": [[5, "multiple-fixtures"]], "Caching e Memoize": [[5, "caching-and-memoize"]], "Decoradores de conveni\u00eancia": [[5, "convenience-decorators"]], "The Database Abstraction Layer (DAL)": [[6, "the-database-abstraction-layer-dal"]], "DAL introduction": [[6, "dal-introduction"]], "py4web model": [[6, "py4web-model"]], "Supported databases": [[6, "supported-databases"]], "The DAL: a quick tour": [[6, "the-dal-a-quick-tour"]], "Usando o DAL \u201cstand-alone\u201d": [[6, "using-the-dal-stand-alone"]], "Experimentar com o shell py4web": [[6, "experiment-with-the-py4web-shell"]], "Construtor DAL": [[6, "dal-constructor"]], "Assinatura da DAL": [[6, "dal-signature"]], "Strings de conex\u00e3o (o par\u00e2metro uri)": [[6, "connection-strings-the-uri-parameter"]], "O pool de conex\u00f5es": [[6, "connection-pooling"]], "Falhas de conex\u00e3o (par\u00e2metro tentativas)": [[6, "connection-failures-attempts-parameter"]], "Tabelas pregui\u00e7osos": [[6, "lazy-tables"]], "Aplicativos de modelo-less": [[6, "model-less-applications"]], "Bancos de dados replicados": [[6, "replicated-databases"]], "Palavras-chave reservadas": [[6, "reserved-keywords"]], "Configura\u00e7\u00f5es de quoting e case e do banco de dados": [[6, "database-quoting-and-case-settings"]], "Fazendo uma conex\u00e3o segura": [[6, "making-a-secure-connection"]], "Outros par\u00e2metros do construtor DAL": [[6, "other-dal-constructor-parameters"]], "Local de pasta do banco de dados": [[6, "database-folder-location"]], "Configura\u00e7\u00f5es padr\u00e3o de migra\u00e7\u00e3o": [[6, "default-migration-settings"]], "`` `` commit`` e rollback``": [[6, "commit-and-rollback"]], "Construtor Table": [[6, "table-constructor"]], "assinatura define_table": [[6, "define-table-signature"]], "`` Id``: Notas sobre a chave prim\u00e1ria": [[6, "id-notes-about-the-primary-key"]], "`` `` Plural`` e singular``": [[6, "plural-and-singular"]], "`` Redefine``": [[6, "redefine"]], "`` Format``: representa\u00e7\u00e3o da ficha": [[6, "format-record-representation"]], "`` Rname``: nome real": [[6, "rname-real-name"]], "`` Primarykey``: Suporte para tabelas legadas": [[6, "primarykey-support-for-legacy-tables"]], "`` Migrate``, `` fake_migrate``": [[6, "migrate-fake-migrate"]], "`` Table_class``": [[6, "table-class"]], "`` Sequence_name``": [[6, "sequence-name"]], "`` Trigger_name``": [[6, "trigger-name"]], "`` polymodel``": [[6, "polymodel"]], "`` On_define``": [[6, "on-define"]], "Adicionando atributos para campos e tabelas": [[6, "adding-attributes-to-fields-and-tables"]], "Bancos de dados legados e tabelas com chave": [[6, "legacy-databases-and-keyed-tables"]], "Construtor Field": [[6, "field-constructor"]], "Field types and validators": [[6, "field-types-and-validators"]], "modifica\u00e7\u00e3o da tabela e campo em tempo de execu\u00e7\u00e3o": [[6, "run-time-field-and-table-modification"]], "Mais sobre envios": [[6, "more-on-uploads"]], "Migra\u00e7\u00f5es": [[6, "migrations"]], "Fixa\u00e7\u00e3o migra\u00e7\u00f5es quebrados": [[6, "fixing-broken-migrations"]], "Migra\u00e7\u00e3o resumo controle": [[6, "migration-control-summary"]], "Table methods": [[6, "table-methods"]], "`` Insert``": [[6, "insert"]], "`` Query``, `` Set``, `` Rows``": [[6, "query-set-rows"]], "`` Update_or_insert``": [[6, "update-or-insert"]], "`` Validate_and_insert``, `` validate_and_update``": [[6, "validate-and-insert-validate-and-update"]], "`` Drop``": [[6, "drop"]], "Marca\u00e7\u00e3o de registros": [[6, "tagging-records"]], "Raw SQL": [[6, "raw-sql"]], "`` executesql``": [[6, "executesql"]], "`` _Lastsql``": [[6, "lastsql"]], "Temporiza\u00e7\u00e3o de consultas": [[6, "timing-queries"]], "\u00cdndices": [[6, "indexes"]], "Generating raw SQL": [[6, "generating-raw-sql"]], "`` Comando SELECT``": [[6, "select-command"]], "Usando um seleto para uso de mem\u00f3ria inferior \u00e0 base de iterador": [[6, "using-an-iterator-based-select-for-lower-memory-use"]], "Renderizando Rows com represent": [[6, "rendering-rows-using-represent"]], "Atalhos": [[6, "shortcuts"]], "A obten\u00e7\u00e3o de um `` row``": [[6, "fetching-a-row"]], "Recursivas `` s SELECT``": [[6, "recursive-selects"]], "`` Orderby``, `` groupby``, `` limitby``, `` distinct``, `` having``, `` orderby_on_limitby``, `` join``, `` left``, `` cache``": [[6, "orderby-groupby-limitby-distinct-having-orderby-on-limitby-join-left-cache"]], "ordenar por": [[6, "orderby"]], "groupby, tendo": [[6, "groupby-having"]], "distinto": [[6, "distinct"]], "limitby": [[6, "limitby"]], "orderby_on_limitby": [[6, "orderby-on-limitby"]], "juntar-se, deixou": [[6, "join-left"]], "cache, em cache": [[6, "cache-cacheable"]], "Operadores l\u00f3gicos": [[6, "logical-operators"]], "`` Count``, `` isempty``, `` DELETE``, `` update``": [[6, "count-isempty-delete-update"]], "Express\u00f5es": [[6, "expressions"]], "`` case``": [[6, "case"]], "`` Update_record``": [[6, "update-record"]], "Inserir e atualizar a partir de um dicion\u00e1rio": [[6, "inserting-and-updating-from-a-dictionary"]], "`` `` First`` e last``": [[6, "first-and-last"]], "`` `` As_dict`` e as_list``": [[6, "as-dict-and-as-list"]], "Combinando Rows": [[6, "combining-rows"]], "`` Find``, `` exclude``, `` sort``": [[6, "find-exclude-sort"]], "Selects com cache": [[6, "caching-selects"]], "Computed and Virtual fields": [[6, "computed-and-virtual-fields"]], "Campos computados": [[6, "computed-fields"]], "Campos virtuais": [[6, "virtual-fields"]], "Campos virtuais novo estilo (experimental)": [[6, "new-style-virtual-fields-experimental"]], "Campos virtuais velho antigo": [[6, "old-style-virtual-fields"]], "Joins and Relations": [[6, "joins-and-relations"]], "Um para muitos rela\u00e7\u00e3o": [[6, "one-to-many-relation"]], "Inner join": [[6, "inner-join"]], "Left outer join": [[6, "left-outer-join"]], "Agrupamento e contando": [[6, "grouping-and-counting"]], "Many to many relation": [[6, "many-to-many-relation"]], "A auto-refer\u00eancia e aliases": [[6, "self-reference-and-aliases"]], "Outros operadores": [[6, "other-operators"]], "`` Like``, `` ilike``, `` regexp``, `` startswith``, `` endswith``, `` contains``, `` upper``, `` lower``": [[6, "like-ilike-regexp-startswith-endswith-contains-upper-lower"]], "`` Year``, `` month``, `` day``, `` hour``, `` minutes``, `` seconds``": [[6, "year-month-day-hour-minutes-seconds"]], "`` Belongs``": [[6, "belongs"]], "`` Sum``, `` avg``, `` min``, `` `` max`` e len``": [[6, "sum-avg-min-max-and-len"]], "Substrings": [[6, "substrings"]], "Os valores por defeito com `` `` coalesce`` e coalesce_zero``": [[6, "default-values-with-coalesce-and-coalesce-zero"]], "Exportar e importar dados": [[6, "exporting-and-importing-data"]], "CSV (uma tabela de cada vez)": [[6, "csv-one-table-at-a-time"]], "CSV (todas as tabelas ao mesmo tempo)": [[6, "csv-all-tables-at-once"]], "CSV e sincroniza\u00e7\u00e3o de banco de dados remoto": [[6, "csv-and-remote-database-synchronization"]], "HTML e XML (uma tabela de cada vez)": [[6, "html-and-xml-one-table-at-a-time"]], "Representa\u00e7\u00e3o de dados": [[6, "data-representation"]], "Caracter\u00edsticas avan\u00e7adas": [[6, "advanced-features"]], "`` Lista: `` e `` contains``": [[6, "list-type-and-contains"]], "Heran\u00e7a de tabela": [[6, "table-inheritance"]], "`` `` Filter_in`` e filter_out``": [[6, "filter-in-and-filter-out"]], "retornos de chamada no registro de inser\u00e7\u00e3o, exclus\u00e3o e atualiza\u00e7\u00e3o": [[6, "callbacks-on-record-insert-delete-and-update"]], "Cascades no banco de dados": [[6, "database-cascades"]], "versionamento recorde": [[6, "record-versioning"]], "filtros comuns": [[6, "common-filters"]], "Personalizados `` tipos Field``": [[6, "custom-field-types"]], "Usando DAL sem definir tabelas": [[6, "using-dal-without-define-tables"]], "Transa\u00e7\u00e3o distribu\u00edda": [[6, "distributed-transaction"]], "Copiar dados de um para outro db": [[6, "copy-data-from-one-db-into-another"]], "Pegadinhas": [[6, "gotchas"]], "Nota sobre novo DAL e adaptadores": [[6, "note-on-new-dal-and-adapters"]], "SQLite": [[6, "sqlite"]], "MySQL": [[6, "mysql"]], "Google SQL": [[6, "google-sql"]], "MSSQL (Microsoft SQL Server)": [[6, "mssql-microsoft-sql-server"]], "Or\u00e1culo": [[6, "oracle"]], "Google NoSQL (Datastore)": [[6, "google-nosql-datastore"]], "The RestAPI": [[7, "the-restapi"]], "RestAPI policies and actions": [[7, "restapi-policies-and-actions"]], "RestAPI GET": [[7, "restapi-get"]], "RestAPI practical examples": [[7, "restapi-practical-examples"]], "The RestAPI response": [[7, "the-restapi-response"]], "Linguagem de template YATL": [[8, "yatl-template-language"]], "Sintaxe b\u00e1sica": [[8, "basic-syntax"]], "`` Para \u2026 in``": [[8, "for-in"]], "`` While``": [[8, "while"]], "`` If \u2026 elif \u2026 else``": [[8, "if-elif-else"]], "`` Tentar \u2026 exceto \u2026 else \u2026 finally``": [[8, "try-except-else-finally"]], "`` Def \u2026 return``": [[8, "def-return"]], "Information workflow": [[8, "information-workflow"]], "extend and include": [[8, "extend-and-include"]], "Extending using variables": [[8, "extending-using-variables"]], "Template Functions": [[8, "template-functions"]], "block and super": [[8, "block-and-super"]], "Page layout standard structure": [[8, "page-layout-standard-structure"]], "Default page layout": [[8, "default-page-layout"]], "Mobile development": [[8, "mobile-development"]], "Helpers YATL": [[9, "yatl-helpers"]], "Helpers overview": [[9, "helpers-overview"]], "Built-in helpers": [[9, "built-in-helpers"]], "`` XML``": [[9, "xml"]], "`` A``": [[9, "a"]], "`` BODY``": [[9, "body"]], "`` CAT``": [[9, "cat"]], "`` Div``": [[9, "div"]], "`` EM``": [[9, "em"]], "`` Form``": [[9, "form"]], "`` H1``, `` h2``, `` H3``, `` H4``, `` H5``, `` H6``": [[9, "h1-h2-h3-h4-h5-h6"]], "`` HEAD``": [[9, "head"]], "`` HTML``": [[9, "html"]], "`` I``": [[9, "i"]], "`` IMG``": [[9, "img"]], "`` INPUT``": [[9, "input"]], "`` Label``": [[9, "label"]], "`` LI``": [[9, "li"]], "`` OL``": [[9, "ol"]], "`` OPTION``": [[9, "option"]], "`` P``": [[9, "p"]], "`` PRE``": [[9, "pre"]], "`` SCRIPT``": [[9, "script"]], "`` SELECT``": [[9, "select"]], "`` SPAN``": [[9, "span"]], "`` STYLE``": [[9, "style"]], "`` TABLE``, `` TR``, `` TD``": [[9, "table-tr-td"]], "`` TBODY``": [[9, "tbody"]], "`` TEXTAREA``": [[9, "textarea"]], "`` TH``": [[9, "th"]], "`` THEAD``": [[9, "thead"]], "`` TITLE``": [[9, "title"]], "`` TT``": [[9, "tt"]], "`` UL``": [[9, "ul"]], "`` URL``": [[9, "url"]], "Helpers personalizados": [[9, "custom-helpers"]], "`` TAG``": [[9, "tag"]], "`` BEAUTIFY``": [[9, "beautify"]], "Server-side DOM": [[9, "server-side-dom"]], "children": [[9, "children"]], "find": [[9, "find"]], "Using Inject": [[9, "using-inject"]], "Internacionaliza\u00e7\u00e3o": [[10, "internationalization"]], "Pluralizar": [[10, "pluralize"]], "Atualizar os arquivos de tradu\u00e7\u00e3o": [[10, "update-the-translation-files"]], "Foruml\u00e1rios": [[11, "forms"]], "The Form constructor": [[11, "the-form-constructor"]], "A minimal form example without a database": [[11, "a-minimal-form-example-without-a-database"]], "Basic form example": [[11, "basic-form-example"]], "File upload field": [[11, "file-upload-field"]], "Widgets": [[11, "widgets"]], "Standard widgets": [[11, "standard-widgets"]], "Custom widgets": [[11, "custom-widgets"]], "Advanced form design": [[11, "advanced-form-design"]], "Form structure manipulation": [[11, "form-structure-manipulation"]], "Custom forms": [[11, "custom-forms"]], "The sidecar parameter": [[11, "the-sidecar-parameter"]], "Valida\u00e7\u00e3o de formul\u00e1rio": [[11, "form-validation"]], "Text format validators": [[11, "text-format-validators"]], "IS_ALPHANUMERIC": [[11, "is-alphanumeric"]], "IS_LOWER": [[11, "is-lower"]], "IS_UPPER": [[11, "is-upper"]], "IS_EMAIL": [[11, "is-email"]], "IS_MATCH": [[11, "is-match"]], "IS_LENGTH": [[11, "is-length"]], "IS_URL": [[11, "is-url"]], "IS_SLUG": [[11, "is-slug"]], "IS_JSON": [[11, "is-json"]], "Date and time validators": [[11, "date-and-time-validators"]], "IS_TIME": [[11, "is-time"]], "IS_DATE": [[11, "is-date"]], "IS_DATETIME": [[11, "is-datetime"]], "IS_DATE_IN_RANGE": [[11, "is-date-in-range"]], "IS_DATETIME_IN_RANGE": [[11, "is-datetime-in-range"]], "Range, set and equality validators": [[11, "range-set-and-equality-validators"]], "IS_EQUAL_TO": [[11, "is-equal-to"]], "IS_NOT_EMPTY": [[11, "is-not-empty"]], "IS_NULL_OR": [[11, "is-null-or"]], "IS_EMPTY_OR": [[11, "is-empty-or"]], "IS_EXPR": [[11, "is-expr"]], "IS_DECIMAL_IN_RANGE": [[11, "is-decimal-in-range"]], "IS_FLOAT_IN_RANGE": [[11, "is-float-in-range"]], "IS_INT_IN_RANGE": [[11, "is-int-in-range"]], "IS_IN_SET": [[11, "is-in-set"]], "Checkbox validation": [[11, "checkbox-validation"]], "Dictionaries and tuples with IS_IN_SET": [[11, "dictionaries-and-tuples-with-is-in-set"]], "Sorted options": [[11, "sorted-options"]], "IS_IN_SET and Tagging": [[11, "is-in-set-and-tagging"]], "Complexity and security validators": [[11, "complexity-and-security-validators"]], "IS_STRONG": [[11, "is-strong"]], "CRYPT": [[11, "crypt"]], "Special type validators": [[11, "special-type-validators"]], "IS_LIST_OF": [[11, "is-list-of"]], "IS_LIST_OF_EMAILS": [[11, "is-list-of-emails"]], "ANY_OF": [[11, "any-of"]], "IS_IMAGE": [[11, "is-image"]], "IS_FILE": [[11, "is-file"]], "IS_UPLOAD_FILENAME": [[11, "is-upload-filename"]], "IS_IPV4": [[11, "is-ipv4"]], "IS_IPV6": [[11, "is-ipv6"]], "IS_IPADDRESS": [[11, "is-ipaddress"]], "Other validators": [[11, "other-validators"]], "CLEANUP": [[11, "cleanup"]], "Database validators": [[11, "database-validators"]], "IS_NOT_IN_DB": [[11, "is-not-in-db"]], "IS_IN_DB": [[11, "is-in-db"]], "IS_IN_DB and Tagging": [[11, "is-in-db-and-tagging"]], "Validation functions": [[11, "validation-functions"]], "Authentication and authorization": [[12, "authentication-and-authorization"]], "Authentication using Auth": [[12, "authentication-using-auth"]], "Interface de autentica\u00e7\u00e3o": [[12, "auth-ui"]], "Using Auth inside actions": [[12, "using-auth-inside-actions"]], "Two Factor Authentication": [[12, "two-factor-authentication"]], "two_factor_required": [[12, "two-factor-required"]], "two_factor_send": [[12, "two-factor-send"]], "two_factor_tries": [[12, "two-factor-tries"]], "Plugins de Autentica\u00e7\u00e3o": [[12, "auth-plugins"]], "PAM": [[12, "pam"]], "LDAP": [[12, "ldap"]], "OAuth2 with Google": [[12, "oauth2-with-google"]], "OAuth2 with Facebook": [[12, "oauth2-with-facebook"]], "OAuth2 with Discord": [[12, "oauth2-with-discord"]], "Authorization using Tags": [[12, "authorization-using-tags"]], "Etiquetas e permiss\u00f5es": [[12, "tags-and-permissions"]], "Multiple Tags objects": [[12, "multiple-tags-objects"]], "User Impersonation": [[12, "user-impersonation"]], "Rede": [[13, "grid"]], "Key features": [[13, "key-features"]], "Basic grid example": [[13, "basic-grid-example"]], "The Grid object": [[13, "the-grid-object"]], "Searching and filtering": [[13, "searching-and-filtering"]], "CRUD settings": [[13, "crud-settings"]], "Custom columns": [[13, "custom-columns"]], "Usando templates": [[13, "using-templates"]], "Customizing style": [[13, "customizing-style"]], "A\u00e7\u00e3o personalizada Bot\u00f5es": [[13, "custom-action-buttons"]], "Bot\u00e3o Classe A\u00e7\u00e3o Amostra": [[13, "sample-action-button-class"]], "Using callable parameters": [[13, "using-callable-parameters"]], "Os campos de refer\u00eancia": [[13, "reference-fields"]], "De web2py para py4web": [[14, "from-web2py-to-py4web"]], "Simple conversion examples": [[14, "simple-conversion-examples"]], "\u201cHello world\u201d example": [[14, "hello-world-example"]], "\u201cRedirect with variables\u201d example": [[14, "redirect-with-variables-example"]], "\u201cReturning variables\u201d example": [[14, "returning-variables-example"]], "\u201cReturning args\u201d example": [[14, "returning-args-example"]], "\u201cReturn calling methods\u201d example": [[14, "return-calling-methods-example"]], "\u201cSetting up a counter\u201d example": [[14, "setting-up-a-counter-example"]], "\u201cView\u201d example": [[14, "view-example"]], "\u201cForm and flash\u201d example": [[14, "form-and-flash-example"]], "\u201cgrid\u201d example": [[14, "grid-example"]], "\u201cAccessing OS files\u201d example": [[14, "accessing-os-files-example"]], "\u201cauth\u201d example": [[14, "auth-example"]], "Advanced topics and examples": [[15, "advanced-topics-and-examples"]], "py4web and asyncio": [[15, "py4web-and-asyncio"]], "htmx": [[15, "htmx"]], "htmx usage in Form": [[15, "htmx-usage-in-form"]], "htmx usage in Grid": [[15, "htmx-usage-in-grid"]], "Autocomplete Widget using htmx": [[15, "autocomplete-widget-using-htmx"]], "utils.js": [[15, "utils-js"]], "string.format": [[15, "string-format"]], "The Q object": [[15, "the-q-object"]], "The T object": [[15, "the-t-object"]], "py4web: o manual de refer\u00eancia": [[16, "py4web-the-reference-manual"]], "Conte\u00fado:": [[16, null]], "\u00cdndices e tabelas": [[16, "indices-and-tables"]]}, "indexentries": {}}) \ No newline at end of file +Search.setIndex({"docnames": ["chapter-01", "chapter-02", "chapter-03", "chapter-04", "chapter-05", "chapter-06", "chapter-07", "chapter-08", "chapter-09", "chapter-10", "chapter-11", "chapter-12", "chapter-13", "chapter-14", "chapter-15", "chapter-16", "index"], "filenames": ["chapter-01.rst", "chapter-02.rst", "chapter-03.rst", "chapter-04.rst", "chapter-05.rst", "chapter-06.rst", "chapter-07.rst", "chapter-08.rst", "chapter-09.rst", "chapter-10.rst", "chapter-11.rst", "chapter-12.rst", "chapter-13.rst", "chapter-14.rst", "chapter-15.rst", "chapter-16.rst", "index.rst"], "titles": ["O que \u00e9 py4web?", "Ajuda, recursos e dicas", "Instala\u00e7\u00e3o e coloca\u00e7\u00e3o em funcionamento", "O Dashboard", "Criando seu primeiro aplicativo", "Fixures", "The Database Abstraction Layer (DAL)", "The RestAPI", "Linguagem de template YATL", "Helpers YATL", "Internacionaliza\u00e7\u00e3o", "Foruml\u00e1rios", "Authentication and authorization", "Rede", "De web2py para py4web", "Advanced topics and examples", "py4web: o manual de refer\u00eancia"], "terms": {"is": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "web": [0, 1, 2, 5, 6, 8, 12, 13, 14, 15, 16], "framework": [0, 2, 11, 12, 13, 14, 15], "rapid": [0, 11, 15], "development": [0, 1, 4, 6], "of": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "efficient": 0, "databas": [0, 1, 3, 4, 7, 12, 13, 14, 15, 16], "driven": 0, "applications": [0, 2, 3, 4, 6, 11, 12, 13], "it": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], "an": [0, 1, 2, 3, 4, 5, 6, 8, 9, 11, 12, 13, 14, 15], "evolution": 0, "the": [0, 3, 8, 9, 10, 12, 14, 16], "popul": [0, 6], "web2py": [0, 1, 2, 3, 4, 6, 11, 12, 13, 16], "but": [0, 1, 2, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "much": [0, 1, 5, 6, 8, 11, 13, 14, 15], "fast": [0, 4, 6, 8, 14, 15], "and": [0, 1, 2, 3, 4, 5, 9, 16], "slick": 0, "its": [0, 1, 2, 3, 4, 5, 6, 8, 9, 11, 12, 13, 14, 15], "internal": [0, 1, 8, 12], "design": [0, 12, 15, 16], "has": [0, 2, 4, 5, 6, 8, 11, 12, 13, 14, 15], "been": [0, 2, 5, 6, 8, 11], "simplified": [0, 4, 8], "compared": 0, "to": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15], "can": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], "be": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "seen": [0, 5, 7, 9, 11, 13, 15], "competitor": 0, "other": [0, 1, 2, 4, 5, 6, 7, 8, 9, 12, 13, 14, 15], "frameworks": [0, 2, 5, 14, 15], "lik": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15], "djang": [0, 1, 14], "or": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "flask": [0, 14], "indeed": [0, 5], "serv": [0, 2, 3, 4, 7, 8, 12, 14, 15, 16], "sam": [0, 2, 5, 6, 7, 8, 11, 12, 14, 15], "purpos": [0, 4, 6, 9, 11, 12, 14], "yet": [0, 2, 4, 5, 8, 11, 15], "aims": 0, "provid": [0, 4, 5, 6, 8, 9, 11, 12, 13, 14, 15], "larg": [0, 11], "featur": [0, 4, 6, 7, 8, 14, 16], "set": [0, 2, 5, 7, 8, 9, 10, 13, 14, 15], "out": [0, 1, 5, 8, 11, 15], "box": [0, 6, 11], "reduc": [0, 15], "tim": [0, 4, 5, 6, 8, 13, 14, 15], "new": [0, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], "apps": [0, 1, 2, 3, 4, 5, 6, 8, 12, 14], "from": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], "historical": 0, "perspectiv": 0, "our": [0, 1, 2, 5, 6, 9, 11, 15], "story": 0, "starts": [0, 3, 5, 8, 14], "in": [0, 1, 2, 3, 4, 6, 7, 10, 11, 12, 13, 14, 16], "2007": 0, "when": [0, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "was": [0, 5, 6, 11, 12], "first": [0, 2, 3, 5, 7, 8, 9, 11, 12, 13, 14, 15], "released": 0, "designed": [0, 4, 6, 8, 11], "all": [0, 1, 2, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "inclusiv": [0, 11], "solution": [0, 15], "one": [0, 2, 4, 5, 6, 7, 8, 11, 12, 13, 15], "zip": [0, 2, 6, 11], "fil": [0, 1, 2, 3, 5, 6, 8, 9, 10, 12, 13, 15, 16], "containing": [0, 2, 5, 11, 12, 13, 15], "python": [0, 2, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15], "interpret": [0, 6], "based": [0, 3, 4, 5, 7, 8, 11, 12, 13, 14, 15], "ide": [0, 1, 2, 3, 6], "collection": [0, 14], "battl": 0, "tested": [0, 2, 9, 12], "packag": [0, 6, 9], "that": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], "work": [0, 2, 4, 5, 6, 8, 9, 11, 15], "well": [0, 5, 6, 8, 11, 12, 15], "togeth": [0, 8], "many": [0, 1, 2, 4, 5, 7, 8, 11, 13, 14, 15], "ways": [0, 2, 4, 6, 12, 13, 15], "immensely": 0, "successful": [0, 12], "succeeded": 0, "providing": [0, 13, 14], "low": [0, 11], "barri": 0, "entry": [0, 6, 14], "developers": [0, 1, 6, 12, 15], "very": [0, 4, 8, 9, 11, 12, 14], "secur": [0, 11], "platform": [0, 1], "remains": 0, "backwards": [0, 11], "compatibl": [0, 1, 9, 11], "until": [0, 5, 6, 8, 11], "today": [0, 11, 15], "always": [0, 2, 4, 5, 6, 11, 15], "suffered": 0, "probl": [0, 6, 8, 13], "monolithic": 0, "most": [0, 4, 5, 6, 11, 12, 13, 14, 15], "experienced": 0, "did": [0, 4, 15], "not": [0, 1, 2, 4, 5, 7, 8, 9, 11, 12, 13, 14, 15], "understand": [0, 2, 4, 6, 7, 8], "how": [0, 2, 4, 5, 6, 7, 8, 11, 12, 13, 14, 15], "use": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "components": [0, 3, 9, 11, 15], "outsid": [0, 5, 6, 11, 13, 14, 15], "third": [0, 5, 11], "party": [0, 5], "within": [0, 1, 5, 6, 8, 9, 11, 15], "we": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "thought": [0, 6, 12], "perfect": 0, "tool": 0, "hav": [0, 1, 2, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "broken": [0, 6, 11], "into": [0, 2, 4, 5, 6, 8, 9, 11, 14, 15], "piec": [0, 11], "becaus": [0, 4, 5, 6, 8, 9, 11, 13, 15], "would": [0, 5, 6, 9, 11, 15], "compromis": 0, "security": [0, 7, 12], "turned": 0, "wer": [0, 4], "wrong": [0, 5, 6], "playing": 0, "with": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 13, 15], "others": [0, 6, 14], "important": [0, 2, 4, 5, 6, 11, 12], "henc": [0, 2, 5, 6, 11], "sinc": [0, 2, 4, 5, 7, 8, 11, 13, 14], "2015": 0, "worked": 0, "on": [0, 1, 3, 4, 5, 6, 7, 8, 11, 12, 13, 14, 15], "thre": [0, 5, 6], "fronts": 0, "N\u00f3s": [0, 1, 5], "port": [0, 2, 3, 5, 6, 14], "par": [0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 15, 16], "3": [0, 1, 2, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "quebr": 0, "m\u00f3dul": [0, 1, 2, 5, 6], "pod": [0, 1, 2, 4, 5, 6, 7, 8, 9, 10, 12, 13], "ser": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13], "usad": [0, 4, 6, 9, 10, 12, 13], "form": [0, 4, 5, 6, 7, 10, 12, 13, 16], "independent": [0, 5, 6, 12], "reagrup": 0, "alguns": [0, 2, 4, 5, 6, 7, 8, 9], "dess": [0, 5, 6, 12], "nov": [0, 1, 2, 3, 4, 13], "modul": [0, 2, 4, 6, 8, 9, 11, 12, 13, 14], "quadr": [0, 1, 6], "mor": [0, 2, 4, 5, 6, 7, 8, 9, 11, 13, 14, 15], "than": [0, 5, 6, 8, 9, 11, 12, 13, 15], "repackaging": 0, "complet": [0, 2, 6, 9, 11, 13], "redesign": 0, "uses": [0, 1, 2, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "som": [0, 1, 2, 4, 5, 6, 7, 8, 9, 11, 12, 14], "them": [0, 1, 2, 4, 5, 6, 7, 8, 11, 12, 13, 14], "cas": [0, 1, 2, 3, 4, 5, 8, 9, 11, 12, 13, 14, 15], "bett": [0, 1, 2, 4, 6, 13, 14], "functionality": [0, 8, 14], "removed": [0, 6, 9, 11], "added": [0, 2, 5, 11, 12, 15], "tried": 0, "preserv": [0, 5], "syntax": [0, 1, 4, 5, 6, 7, 8, 9, 11, 14, 15], "users": [0, 1, 4, 5, 12, 14], "loved": 0, "her": [0, 1, 2, 4, 5, 6, 7, 8, 9, 11, 12, 13, 15], "explicit": [0, 2, 4, 5, 6, 8, 11], "list": [0, 1, 2, 4, 5, 7, 8, 9, 11, 12, 13, 15], "see": [0, 3, 4, 5, 6, 8, 9, 11, 12, 13, 15], "De": [0, 1, 4, 6, 16], "details": [0, 1, 5, 6, 7, 8, 11, 13], "if": [0, 1, 2, 3, 4, 5, 6, 7, 9, 11, 12, 13, 14, 15], "you": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "come": [0, 5], "contr\u00e1ri": [0, 4, 6, 8], "requ": [0, 2, 5, 6, 11, 12, 13, 14, 15], "unlik": [0, 2, 7, 8, 14, 15], "installed": [0, 1, 2, 3, 4, 5, 6], "using": [0, 1, 3, 4, 6, 7, 11, 14, 16], "pip": [0, 1, 6], "dependenc": [0, 2, 5, 14], "are": [0, 1, 2, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "managed": 0, "requirements": [0, 2, 11], "txt": [0, 2, 4, 6], "regul": [0, 2, 4, 6, 7, 8, 10, 11, 13, 14, 15], "this": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "different": [0, 2, 5, 6, 8, 11, 12, 14, 15], "particul": [0, 1, 6, 11, 13, 14, 15], "ditched": 0, "custom": [0, 4, 6, 8, 9, 14, 15, 16], "import": [0, 1, 2, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16], "rely": [0, 4, 6], "now": [0, 4, 5, 6, 11, 13, 15], "exclusively": [0, 5, 6], "mechanism": [0, 6, 8, 9, 12, 14], "m\u00faltipl": [0, 6], "aplic": [0, 2, 3, 5, 13, 14, 16], "concorrent": 0, "enquant": [0, 6, 8], "s\u00e3": [0, 1, 3, 4, 5, 6, 8, 9, 10, 12, 13], "subm\u00f3dul": 0, "ombott": [0, 4, 14], "reduced": 0, "spin": [0, 4], "off": [0, 2, 4, 13, 15], "bottl": [0, 4, 5, 8, 14], "request": [0, 1, 2, 5, 6, 7, 11, 12, 13, 14, 15], "object": [0, 4, 5, 6, 7, 8, 9, 11, 12, 14, 16], "routing": [0, 4, 14], "does": [0, 2, 5, 6, 8, 11, 12, 13, 14, 15], "creat": [0, 1, 2, 4, 5, 6, 8, 11, 12, 13, 15], "environment": [0, 1, 4, 5, 6], "at": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "every": [0, 5, 6, 12, 13, 14, 15], "introduc": 0, "concept": [0, 12], "fixtur": [0, 2, 6, 9, 14, 16], "explicitly": [0, 2, 5, 6, 8, 9, 11], "declar": [0, 4, 5, 6, 8], "which": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "objects": [0, 4, 5, 6, 9, 11, 13, 14, 15], "need": [0, 1, 2, 5, 6, 8, 9, 11, 12, 13, 14, 15], "re": [0, 1, 2, 4, 5, 6, 8, 9, 11, 12, 13, 14, 15], "initialized": 0, "http": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "arriv": [0, 6], "needs": [0, 4, 5, 6, 12, 14, 15], "cleanup": 0, "completed": [0, 6], "mak": [0, 1, 2, 5, 6, 8, 9, 11, 12, 13, 14, 15], "session": [0, 2, 4, 6, 9, 11, 12, 13, 14, 15, 16], "s": [0, 1, 2, 4, 5, 7, 8, 9, 10, 11, 12, 13, 15], "strong": [0, 9, 12], "encryption": 0, "dat": [0, 2, 5, 6, 7, 8, 9, 12, 13, 14, 15], "sessions": [0, 6, 14], "long": [0, 6, 11], "stored": [0, 5, 6, 11, 12, 14, 15], "system": [0, 2, 5, 6, 9, 12, 15], "created": [0, 2, 4, 5, 6, 8, 11, 12], "performanc": [0, 5, 6, 14], "issu": [0, 6], "cooki": [0, 4, 6, 15], "red": [0, 3, 4, 6, 8, 9, 11, 16], "memcach": [0, 6], "optionally": [0, 2], "also": [0, 1, 2, 4, 5, 6, 8, 9, 11, 12, 13, 14, 15], "limited": [0, 5, 14, 15], "json": [0, 1, 2, 4, 5, 6, 7, 10, 11, 14, 15], "serializabl": [0, 5, 6], "built": [0, 1, 4, 6, 8, 11, 15, 16], "sistem": [0, 2, 5, 6], "bilh\u00e9t": 0, "global": [0, 6, 14, 15], "n\u00e3": [0, 1, 2, 3, 4, 5, 6, 8, 9, 12, 13], "Os": [0, 3, 4, 8, 9, 12, 16], "bilhet": [0, 3, 6], "armazen": [0, 2, 5, 6, 9], "arquiv": [0, 2, 3, 4, 5, 6, 12, 16], "individu": [0, 2, 5, 6], "Eles": [0, 4, 6], "\u00fanic": [0, 2, 6, 9], "banc": [0, 1, 3, 4, 5, 12], "dad": [0, 1, 3, 4, 5, 12, 16], "pydal": [0, 2, 3, 4, 5, 6, 7, 11, 12, 13, 14, 15], "leverag": 0, "restap": [0, 3, 16], "usa": [0, 4, 5, 6, 8], "linguag": [0, 4, 5, 16], "templat": [0, 4, 9, 11, 12, 14, 15, 16], "yatl": [0, 4, 5, 6, 11, 13, 15, 16], "padr\u00e3": [0, 2, 4, 5, 8, 9, 13], "suport": [0, 10, 16], "delimit": [0, 6, 8], "evit": [0, 1, 2, 6, 8, 11], "conflit": [0, 2, 4, 6], "model": [0, 3, 7, 9, 14, 15], "js": [0, 4, 5, 8, 10, 14, 16], "vue": [0, 4, 15], "angularjs": 0, "inclu": [0, 4, 6, 8, 9, 13], "subconjunt": [0, 6], "ajud": [0, 2, 4, 6, 14, 16], "bibliotec": [0, 4, 10], "pluraliz": [0, 4, 5, 13, 15, 16], "internacionaliz": [0, 4, 16], "Na": 0, "pr\u00e1tic": [0, 6, 7], "exp\u00f5": [0, 3, 4, 6, 12], "objet": [0, 5, 6, 8, 9, 10], "t": [0, 2, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14], "muit": [0, 1, 2, 4, 5], "semelh": [0, 4, 5, 6, 9], "fornec": [0, 2, 3, 4, 5, 6, 9, 12, 13], "melhor": [0, 1, 6, 10, 13, 16], "cach": [0, 2, 4, 5, 11], "capac": 0, "flex\u00edv": 0, "vem": [0, 4, 6], "painel": [0, 2, 3], "app": [0, 1, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16], "administr": [0, 2, 6], "substitu": [0, 2, 6, 8, 9], "Esta": [0, 1, 2, 4, 6], "carreg": [0, 6], "gest\u00e3": [0, 1], "edi\u00e7\u00e3": 0, "interfac": [0, 3, 5, 6, 13, 14, 15], "bas": [0, 2, 4, 8, 13, 15], "Isto": [0, 2, 3, 4, 5, 6, 9, 13], "funcional": [0, 2, 5, 6], "appadmin": [0, 6], "comes": [0, 5, 8, 11, 12, 13, 14, 15], "grid": [0, 16], "simil": [0, 11, 14], "sqlform": [0, 11, 14], "auth": [0, 2, 4, 6, 8, 9, 15, 16], "f\u00e1cil": [0, 6, 8, 9, 12], "estend": [0, 5, 6], "Fora": 0, "caix": [0, 6, 9], "b\u00e1sic": [0, 1, 6, 16], "regist": [0, 4, 5, 6, 8, 12, 13, 14], "login": [0, 2, 3, 4, 5, 6, 8, 11, 12, 14], "logout": [0, 8, 12], "alter": [0, 2, 4, 5, 6, 10], "senh": [0, 2, 3, 5, 6, 12], "solicit": [0, 6], "edit": [0, 2, 3, 4, 8, 11, 12, 13, 14, 15], "perfil": [0, 12], "bem": [0, 4, 5, 6, 12], "integr": 0, "pam": [0, 5], "saml2": 0, "ldap": [0, 5], "oauth2": [0, 5], "googl": [0, 3, 5, 8, 11, 13], "facebook": [0, 5], "twitt": [0, 5, 12], "tags": [0, 5, 6, 8, 9, 14, 15, 16], "tag": [0, 6, 7, 8, 12, 14, 15], "groups": [0, 1, 3, 5, 12, 14], "search": [0, 6, 11, 12, 13, 16], "by": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "apply": [0, 5, 11, 12, 13], "permissions": [0, 5, 6, 12, 14], "membership": [0, 5, 11, 12, 14], "component": [0, 4, 5, 8, 9, 11, 12, 15], "personaliz": [0, 2, 16], "projet": [0, 2], "interag": 0, "geral": [0, 2, 6, 7, 9], "Essas": 0, "apis": [0, 6, 12, 14], "permit": [0, 3, 5, 6, 8, 9, 12, 13], "servidor": [0, 4, 5, 6], "defin": [0, 4, 5, 8, 9, 11, 13, 15], "pol\u00edt": 0, "sobr": [0, 8], "qua": [0, 6], "oper": [0, 3, 10, 16], "client": [0, 7, 11, 12, 15], "execut": [0, 2, 3, 6, 11], "d\u00e1": [0, 2, 13], "flexibil": [0, 13], "dentr": [0, 2, 4, 6, 13], "restri\u00e7\u00f5": [0, 6], "dois": [0, 5, 6, 8], "princip": 0, "mtabl": 0, "grad": 0, "api": [0, 6, 7, 9, 11, 12, 15], "continu": [0, 6, 8, 15], "mesm": [0, 1, 2, 4, 5, 8, 9, 10, 13], "desenvolv": 0, "acess": [0, 2, 4, 5, 6], "produ\u00e7\u00e3": 0, "r\u00e1p": [0, 6], "segur": [0, 5], "thanks": 0, "everyon": [0, 1], "who": [0, 12], "contributed": 0, "project": [0, 2, 4, 5, 6], "especially": [0, 2, 5, 11, 12], "massim": [0, 6], "di": [0, 5], "pierr": 0, "luc": [0, 1], "alfar": [0, 1], "cassi": 0, "botar": 0, "dan": 0, "carroll": 0, "jim": [0, 1, 13], "steil": [0, 1, 13], "john": [0, 6], "m": [0, 2, 6, 9, 11], "wolf": 0, "micah": 0, "beasley": 0, "nic": [0, 15], "zanferrar": 0, "pirsch": 0, "sugiz": 0, "valq7711": [0, 4], "kevin": 0, "kell": 0, "log": [0, 2, 4, 5, 6, 8, 9, 12, 14, 15], "special": [0, 5, 6, 8, 12, 14, 16], "official": [0, 11, 15], "friendly": [0, 5, 8], "call": [0, 5, 6, 8, 11, 12, 15], "axel": 0, "axolotl": 0, "magically": 0, "represents": [0, 6], "sens": [0, 11], "kindness": 0, "inclusion": 0, "believ": [0, 5], "cornerston": 0, "growing": [0, 15], "community": [0, 6], "fiz": 1, "noss": [1, 4, 5, 6], "torn": [1, 2, 5, 6, 9, 13], "simpl": [1, 2, 4, 5, 6, 7, 8, 9, 11, 13, 15, 16], "limp": 1, "Mas": [1, 4, 6], "voc": [1, 2, 3, 4, 5, 6, 8, 9, 12, 13], "sab": [1, 2, 6, 8], "program": [1, 3, 6, 8], "\u00e9": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16], "taref": [1, 5, 6, 12], "dif\u00edcil": [1, 2], "Ela": [1, 6, 8], "exig": [1, 2, 6, 12], "ment": 1, "abert": [1, 3, 6], "capaz": [1, 2], "salt": [1, 11], "frequ\u00eanc": 1, "perd": [1, 2, 6], "html": [1, 2, 4, 5, 7, 8, 10, 11, 12, 13, 14, 15], "javascript": [1, 4, 7, 9, 15], "css": [1, 4, 5, 8, 9, 11, 12, 13, 15], "tenh": [1, 5, 6], "med": 1, "nest": [1, 6, 8, 9], "vam": [1, 6, 9], "lo": [1, 2, 3, 4, 6, 7, 8, 9], "lad": [1, 2, 5, 6], "jorn": 1, "E": [1, 6, 12], "outr": [1, 2, 4, 5, 9, 10, 12, 13, 16], "valios": 1, "mostr": [1, 4, 6, 13], "referenc": [1, 6, 7, 8, 9, 11, 13], "availabl": [1, 2, 6, 8, 9, 12, 14, 15], "onlin": [1, 6], "https": [1, 3, 4, 5, 7, 8, 11, 12, 13, 15], "_documentation": [1, 3], "static": [1, 4, 8, 9, 14], "index": [1, 2, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "wher": [1, 2, 4, 6, 8, 11, 12, 14, 15], "ll": [1, 2, 3, 5, 6, 8, 11, 13, 15], "find": [1, 2, 4, 11, 12, 13], "pdf": [1, 11], "ebook": 1, "version": [1, 3, 7, 8, 11, 15], "multipl": [1, 2, 6, 8, 9, 11, 14, 15, 16], "languag": [1, 4, 5, 8, 10, 14, 15], "written": [1, 8, 11, 13], "restructuredtext": 1, "generated": [1, 5, 6, 8, 11, 13, 15], "sphinx": 1, "exist": [1, 2, 4, 5, 6, 8, 11, 15], "discuss\u00e3": 1, "dedic": [1, 4, 14], "hosped": 1, "consult": [1, 7, 12, 13], "g": [1, 6, 9, 11], "principal": [1, 5, 6, 16], "discuss\u00f5": 1, "desenvolvedor": [1, 8, 12, 13], "usu\u00e1ri": [1, 2, 3, 4, 5, 6, 12, 14], "qualqu": [1, 2, 4, 5, 6, 7, 8, 12], "problem": [1, 6], "dev": [1, 2, 3, 4, 5, 6, 8, 9, 12, 13], "enfrent": [1, 6], "lug": [1, 5, 6], "cert": [1, 2, 6, 13], "procur": [1, 6], "solu\u00e7\u00e3": [1, 2, 6], "For": [1, 2, 4, 5, 6, 7, 8, 9, 11, 12, 14, 15], "quick": [1, 11], "questions": [1, 2], "chats": 1, "fre": [1, 5, 12], "dedicated": [1, 5, 9], "could": [1, 2, 4, 6, 8, 9, 11, 12, 14], "usually": [1, 5, 7, 11], "hanging": 1, "channel": 1, "ther": [1, 2, 5, 6, 8, 11, 12, 13, 14, 15], "tutorials": 1, "vid": [1, 2, 15], "learn": [1, 6], "sit": [1, 2, 4, 5, 6, 9, 13, 15], "lots": 1, "excellent": [1, 13], "training": 1, "cours": [1, 8], "2020": 1, "uc": 1, "sant": 1, "cruz": [1, 6], "blog": [1, 6, 9], "andrew": 1, "gavgavian": 1, "replicat": [1, 5], "famous": 1, "corey": 1, "schaf": 1, "tutorial": [1, 2, 4, 13, 15], "seri": 1, "creating": [1, 2, 6, 12, 14], "south": 1, "breez": 1, "enterpris": [1, 12], "dem": [1, 2, 15], "around": [1, 14], "structur": [1, 4, 6, 12, 13, 14, 16], "microsoft": [1, 12], "northwind": 1, "converted": [1, 6, 11], "sqlit": [1, 4, 5, 7, 11, 12, 13], "view": [1, 5, 6], "final": [1, 2, 5, 6, 10], "result": [1, 4, 6, 7, 8, 11, 13, 15], "last": [1, 5, 8, 11, 12, 13, 15], "least": [1, 2, 11, 14, 15], "open": [1, 2, 4, 5, 6, 9], "sourc": [1, 2, 3, 4, 6, 11], "bsd": 1, "v3": 1, "licens": 1, "hosted": 1, "means": [1, 2, 3, 5, 6, 8, 11, 12, 14], "read": [1, 4, 5, 6, 7, 13, 15], "study": 1, "experiment": [1, 11], "yourself": [1, 11], "par\u00e1graf": [1, 9], "prelimin": 1, "\u00fate": [1, 6], "antes": [1, 6, 8, 9, 12, 13], "comec": [1, 2, 4, 6], "aprend": 1, "A": [1, 2, 4, 5, 7, 8, 10, 12, 13, 14, 15, 16], "fim": [1, 2, 5, 6], "compreend": [1, 13], "precis": [1, 2, 4, 5, 6, 13], "pel": [1, 4, 5, 6, 8, 9, 10, 12], "men": [1, 2, 5, 6], "conhec": [1, 6], "H\u00e1": [1, 5, 6, 13], "livr": [1, 6], "curs": 1, "dispon\u00edv": 1, "escolh": [1, 4, 6], "decor": [1, 4, 16], "marc": [1, 6, 9, 12], "total": [1, 6, 7], "following": [1, 4, 5, 6, 8, 9, 11, 12, 13, 14, 15], "chapters": [1, 5], "will": [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "start": [1, 2, 3, 4, 5, 6, 9, 11, 12, 13], "coding": 1, "your": [1, 2, 3, 4, 5, 6, 8, 9, 11, 12, 13, 14, 15], "comput": 1, "suggest": [1, 11], "setup": [1, 3, 4, 12, 15], "workplac": 1, "plan": [1, 15], "efficiently": [1, 14], "safely": [1, 13], "even": [1, 4, 5, 6, 8, 9, 11, 13, 14], "running": [1, 2, 5], "exampl": [1, 2, 4, 5, 6, 8, 9, 10, 12, 16], "experimenting": 1, "littl": [1, 5, 6], "strongly": [1, 5, 11, 13], "integrated": 1, "programming": [1, 6, 8, 15], "experienc": [1, 12], "allowing": [1, 11], "checking": [1, 11, 12, 14], "linting": 1, "visual": 1, "debugging": [1, 4], "nowadays": 1, "two": [1, 2, 4, 5, 6, 8, 11, 13, 14, 15], "mult": [1, 2, 6, 14], "main": [1, 2, 3, 4, 6, 8, 13, 14, 15], "choic": [1, 11, 13], "studi": 1, "cod": [1, 2, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "aka": 1, "jetbrains": 1, "quand": [1, 4, 6, 8, 13], "vai": [1, 4, 6, 8], "lid": [1, 4, 5, 6, 13], "complex": [1, 2, 4, 5, 6, 8, 9, 12, 14, 15], "confiabil": 1, "necess": [1, 2, 4, 5, 6, 8], "suger": [1, 6], "usar": [1, 2, 4, 5, 6, 8, 9, 13], "ambient": [1, 2], "virtu": 1, "cham": [1, 2, 4, 5, 7, 8, 10, 13], "virtualenv": [1, 2], "vej": [1, 2, 3], "aqu": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], "docs": [1, 2, 4], "org": [1, 2, 4, 7, 9, 15], "7": [1, 2, 7, 8, 11, 14], "venv": [1, 2], "__": [1, 2, 4], "introdu": [1, 2], "Em": [1, 2, 5, 6, 8, 9], "confus": [1, 6], "git": [1, 2], "keep": [1, 2, 4, 5, 6, 7, 8, 9, 11, 14], "track": [1, 14], "progr": [1, 2, 3, 9], "chang": [1, 2, 3, 5, 6, 7, 8, 11, 12, 13, 14, 15, 16], "sav": [1, 5, 6, 10, 11], "saf": [1, 6, 11, 13, 14], "plac": [1, 5, 6, 8, 11, 13, 15], "gitlat": 1, "bitbucket": 1, "editor": [1, 8], "highlighting": [1, 8], "highly": [1, 13], "recommend": [1, 5], "quit": [1, 5, 7, 8, 11, 13], "run": [1, 3, 4, 6, 8, 12], "debug": [1, 2, 5, 6, 8], "just": [1, 2, 4, 5, 6, 7, 8, 11, 13, 15], "fold": [1, 2, 3, 4, 5, 6, 7, 10, 11, 13, 14], "add": [1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], "args": [1, 2, 6], "your_full_path_to_py4web": 1, "py": [1, 2, 4, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15], "launch": [1, 2], "configuration": 1, "windows": [1, 2, 4, 6], "paramet": [1, 2, 4, 5, 6, 12, 13, 15], "must": [1, 2, 3, 4, 5, 6, 8, 9, 11, 12, 14], "forward": 1, "slash": [1, 4, 5, 12], "only": [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "c": [1, 2, 3, 5, 6, 8, 9, 11, 14], "your_nam": [1, 15], "instead": [1, 4, 5, 6, 8, 9, 11, 12, 13, 14, 15], "copy": [1, 3, 4, 6, 13], "standard": [1, 2, 3, 6, 7, 12, 13, 14, 15, 16], "insid": [1, 2, 4, 5, 6, 8, 9, 11, 13, 14, 15], "renam": 1, "order": [1, 2, 4, 5, 6, 7, 9, 11, 13, 14], "avoid": [1, 2, 5, 6, 11], "errors": [1, 5, 6, 7, 11, 14], "lat": [1, 2, 4, 5, 6, 8, 9, 11, 13], "usr": 1, "bin": [1, 2], "env": [1, 14], "python3": [1, 2], "cor": [1, 2, 4, 5, 11], "cli": [1, 2], "both": [1, 5, 6, 8, 11, 14], "should": [1, 2, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "get": [1, 2, 4, 5, 6, 8, 11, 12, 13, 14, 15, 16], "gevent": [1, 2], "tru": [1, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "enabl": [1, 5, 7, 9, 12, 14, 15], "settings": [1, 4, 5, 6, 9, 12, 14], "build": [1, 2, 4, 5, 9, 13, 15], "execution": 1, "deployment": 1, "debugg": 1, "help": [1, 2, 5, 6, 7, 8, 9, 11, 13, 14], "support": [1, 2, 6, 11, 14], "efforts": 1, "participat": 1, "group": [1, 3, 5, 12, 14], "trying": [1, 12], "answer": 1, "submit": [1, 5, 6, 9, 11, 13], "bugs": 1, "pull": 1, "requests": [1, 4, 5, 14], "repository": [1, 2, 3], "Se": [1, 2, 3, 4, 6, 8, 9, 13], "desej": [1, 2, 5, 6, 12, 13], "corrig": 1, "ampli": 1, "traduz": [1, 6, 8, 10], "l\u00edngu": 1, "estrangeir": [1, 13], "ler": [1, 6], "tod": [1, 2, 3, 4, 5, 7, 8, 9, 10, 12, 13, 15], "inform": [1, 4, 5, 6, 11], "necess\u00e1r": [1, 5, 6], "diret": [1, 5, 6, 8], "readm": [1, 4, 11], "espec\u00edf": [1, 2, 6], "blob": [1, 6], "mast": [1, 2, 13], "md": [1, 4], "really": [1, 4], "rst": 1, "doc": 1, "brows": [1, 2, 3, 5, 7, 8, 13, 15], "once": [1, 2, 5, 6, 11, 12, 15], "pr": 1, "accepted": [1, 2, 6, 11, 14, 15], "branch": [1, 2], "reflected": 1, "pag": [1, 3, 4, 5, 6, 9, 11, 12, 13, 14, 15, 16], "epub": 1, "next": [1, 5, 6, 8, 11], "output": [1, 5, 8, 11, 15], "generation": 1, "befor": [2, 5, 6, 8, 11, 12, 13], "everything": [2, 4, 14], "else": [2, 4, 6, 11, 12, 13, 14, 15], "imported": [2, 11, 12, 14], "charg": [2, 14], "starting": [2, 4, 6, 11], "reason": [2, 5, 6, 13, 14], "things": [2, 5, 6], "py4web": [2, 3, 4, 5, 7, 8, 9, 11, 12, 13], "download": 2, "pypi": 2, "github": [2, 3, 4, 6, 13], "folders": 2, "collections": 2, "want": [2, 4, 5, 6, 8, 11, 15], "command": [2, 4, 6, 8], "lin": [2, 4, 5, 7, 8, 9, 11, 12, 13, 15], "options": [2, 6, 7, 9, 12, 14, 15], "initializ": 2, "existing": [2, 5, 6, 11], "scaffolding": [2, 4, 5, 6, 8, 14, 15], "under": [2, 3, 4, 5, 6, 11], "concurrently": [2, 11], "served": [2, 6], "process": [2, 4, 5, 6, 8, 9, 11, 12, 13, 14, 15], "address": [2, 11, 12], "each": [2, 5, 6, 7, 8, 9, 11, 12, 13, 14], "runs": [2, 4, 12, 14], "fin": [2, 12, 13], "mac": [2, 6], "linux": 2, "prerequisit": [2, 5], "advanc": [2, 12, 13], "except": [2, 5, 6, 8, 9, 11, 12, 15], "binari": 2, "four": [2, 6], "alternativ": [2, 8, 11], "level": [2, 6, 7, 11, 12], "difficulty": 2, "flexibility": [2, 15], "let": [2, 7, 11, 15], "look": [2, 5, 6, 7, 11, 12], "pros": 2, "cons": [2, 6], "real": [2, 4, 7, 8, 11], "porqu": [2, 4, 5, 6, 8, 10], "acab": [2, 6], "copi": 2, "mont": [2, 12], "modific": [2, 4], "maneir": [2, 5, 6, 13], "da\u00ed": 2, "especial": [2, 4, 6, 10], "inic": [2, 4], "alun": 2, "direit": [2, 3, 6], "Por": [2, 3, 4, 5, 6, 9], "experimental": [2, 5], "cont": [2, 5, 9, 10, 12], "liber": 2, "idad": 2, "adicion": [2, 5, 10, 11, 12, 13], "us\u00e1": [2, 6, 8], "faz": [2, 5, 8, 9, 11, 12], "recent": [2, 3, 6, 11, 13], "reposit\u00f3ri": 2, "extern": 2, "nicozanf": 2, "pyinstall": 2, "descompact": 2, "past": [2, 4], "abrir": 2, "l\u00e1": [2, 4], "Com": [2, 6], "tip": [2, 4, 13], "lembr": [2, 3, 6, 8, 11], "sempr": [2, 6, 8], "vez": [2, 4, 5, 8, 9, 12, 13], "seguint": [2, 4, 5, 6, 8, 9, 10, 11, 12, 13], "document": [2, 6, 8, 9, 11, 15], "notic": [2, 4, 5, 6, 8, 9, 11, 12, 13, 14, 15], "correspond": [2, 4, 6, 10], "latest": [2, 6, 14], "stabl": 2, "although": [2, 8, 11], "best": [2, 5, 6], "up": [2, 5, 6, 8, 12, 15], "installation": 2, "procedur": 2, "quickly": [2, 11, 13], "install": [2, 6, 12], "releas": 2, "upgrad": [2, 6], "dir": [2, 11, 15], "user": [2, 4, 5, 6, 7, 8, 9, 11, 13, 14, 15], "try": [2, 5, 6, 8, 11, 12], "specify": [2, 4, 5, 6, 7, 11, 12, 13], "full": [2, 4, 6, 8, 11, 15], "8": [2, 6, 7, 11], "ir\u00e1": [2, 3, 4, 6, 8, 12, 13], "dependent": [2, 3, 4, 5], "caminh": [2, 4, 6, 13], "ativ": [2, 6], "cont\u00e9m": [2, 4, 5, 6], "cri": [2, 3, 5, 6, 8, 9, 12, 13, 16], "ap\u00f3s": [2, 6, 13], "trabalh": [2, 4, 6, 7], "path": [2, 4, 5, 6, 7, 10, 11, 13, 14, 15], "exe": 2, "pointing": [2, 3, 8], "type": [2, 5, 7, 8, 9, 12, 15], "option": [2, 3, 5, 6, 11, 12, 15], "mistak": 2, "then": [2, 4, 5, 6, 8, 9, 11, 12, 13, 14, 15], "needed": [2, 4, 5, 6, 9, 11, 12, 15], "commands": [2, 4, 6, 8, 9], "indesej": [2, 6], "bom": 2, "h\u00e1bit": 2, "Este": [2, 6, 8, 9, 13, 14], "recurs": [2, 8, 16], "aind": [2, 6, 12], "moment": [2, 6], "descobert": [2, 10], "instructions": [2, 11], "activating": 2, "activat": [2, 12], "without": [2, 6, 8, 9, 15, 16], "traditional": 2, "way": [2, 3, 5, 6, 8, 9, 11, 12, 14], "works": [2, 6, 8, 11, 12, 13, 14, 15], "normally": [2, 6, 8, 9, 11, 13], "utility": [2, 11], "along": [2, 4, 9, 11, 15], "links": [2, 6, 13, 15], "clon": [2, 4, 6, 15], "cd": 2, "assets": 2, "test": [2, 6, 8, 9, 11, 13], "content": [2, 4, 5, 6, 8, 9, 11, 13, 14, 15], "missing": [2, 12, 13], "manually": [2, 4, 6, 9, 12, 13], "upgraded": 2, "itself": [2, 6, 11, 15], "copied": 2, "useful": [2, 4, 8, 9, 11, 13, 15], "already": [2, 4, 5, 9, 11, 12, 13], "working": [2, 11], "locally": 2, "globally": [2, 6], "present": [2, 6, 8, 11, 12], "gain": 2, "potentially": 2, "untested": [2, 12], "go": [2, 4, 13], "given": [2, 5, 6, 8, 11], "r": [2, 6, 11], "tiv": [2, 6], "tant": [2, 6, 15], "observ": [2, 4, 6, 8], "forc": [2, 6, 7, 11, 12], "praz": 2, "programs": [2, 11], "executed": [2, 5, 6, 8, 14, 15], "ones": [2, 7, 11, 14], "don": [2, 4, 6, 8, 11, 12, 13, 14], "directly": [2, 4, 6, 7, 9, 11, 12, 13, 15], "usual": [2, 8, 9, 11], "atualiz": [2, 16], "automat": [2, 4, 6, 8, 9, 12, 13], "dashboard": [2, 4, 6, 8, 11, 16], "remov": [2, 4, 6, 9, 11, 12], "manual": [2, 3, 4, 6], "los": [2, 4, 6, 11], "precau\u00e7\u00e3": 2, "seguranc": [2, 5, 6, 9], "fez": [2, 6], "any": [2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "backup": [2, 6, 11], "personal": 2, "ve": [2, 3, 5, 8, 9, 11, 13, 15], "delet": [2, 4, 7, 11, 13, 15], "old": [2, 5, 11, 14], "again": [2, 4, 5, 6, 11, 15], "utiliz": [2, 3, 4, 5, 6, 9, 12, 13], "anterior": [2, 6], "produz": [2, 5, 6, 8, 9], "sa\u00edd": [2, 4, 6, 8, 9], "generally": [2, 5, 8], "nam": [2, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "wit": 2, "nothing": [2, 5, 6, 11, 15], "prevents": [2, 5, 15], "grouping": 2, "expects": [2, 9], "_dashboard": [2, 3], "default": [2, 3, 4, 5, 6, 7, 9, 11, 12, 13, 14, 15], "_default": [2, 4], "installs": 2, "Ele": [2, 3, 5, 6, 9], "descrit": [2, 4, 6, 13], "pr\u00f3xim": [2, 6], "cap\u00edtul": [2, 4, 5, 14], "nad": [2, 4, 6], "diferent": [2, 5, 6, 10, 13], "boas": 2, "vind": 2, "t\u00eam": [2, 4, 6, 12], "papel": 2, "portant": [2, 4, 5, 6, 9], "nom": [2, 4, 5, 7, 9, 11, 12, 13], "_": [2, 11, 15], "Uma": [2, 4, 6, 8, 9], "send": [2, 6, 11, 12], "urls": [2, 11, 14], "localhost": [2, 4, 5, 6, 11], "8000": [2, 3, 4, 11, 13], "yourappnam": 2, "stop": [2, 12], "acert": 2, "kbd": 2, "control": [2, 8, 11, 12, 13, 15], "janel": 2, "onde": [2, 6, 7, 8, 11], "soment": [2, 4, 6, 8], "appnam": [2, 5, 12, 14], "prefix": [2, 4, 6, 7, 8, 11, 14], "quer": [2, 4, 5, 6, 9], "lig": [2, 5, 6, 9], "simbol": 2, "trailing": [2, 11], "optional": [2, 4, 5, 6, 7, 8, 11, 12, 13, 14], "ctrl": [2, 3], "break": [2, 6], "fn": 2, "paus": 2, "v\u00e1r": [2, 4, 5, 6], "argument": [2, 4, 5, 6, 8, 9, 11, 12], "ter": [2, 4, 5, 6, 9], "adicional": [2, 5, 6], "h": [2, 11], "usag": [2, 3, 4, 5, 6, 9, 11, 12, 13], "apps_fold": 2, "func": [2, 5], "function": [2, 4, 5, 6, 7, 8, 9, 11, 13, 14, 15], "y": [2, 9, 11], "yes": [2, 6], "No": [2, 5, 6, 8, 13], "prompt": [2, 4, 6], "assum": [2, 5, 6, 7, 10], "fals": [2, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "text": [2, 5, 6, 8, 9, 13, 15], "arguments": [2, 5, 6, 8, 9, 11, 12, 14], "passed": [2, 4, 5, 6, 9, 11, 12, 13, 15], "show": [2, 5, 6], "messag": [2, 4, 5, 7, 8, 11, 13, 14, 15], "exit": 2, "myfunction": 2, "x": [2, 6, 8, 9, 11, 13], "100": [2, 6, 7, 8, 11], "singl": [2, 5, 6, 7, 8, 11, 12, 13], "doubl": [2, 6, 8], "quot": [2, 9], "shown": [2, 6, 11, 12], "parameters": [2, 6], "app_nam": [2, 4, 5, 6], "copying": [2, 8, 9, 16], "scaffold_zip": 2, "erro": [2, 3, 6], "orig": [2, 10], "host": [2, 5, 11, 12], "127": [2, 3, 5, 11, 13], "0": [2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], "1": [2, 3, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15], "p": [2, 8, 11], "integ": [2, 6, 7, 9, 11, 15], "numb": [2, 5, 6, 8, 11], "password_fil": 2, "encrypted": [2, 5], "password": [2, 6, 8, 11, 12, 14, 15], "wsgiref": 2, "gunicorn": 2, "waitress": 2, "geventwebsocketserv": 2, "wsgirefthreadingserv": 2, "rocketserv": 2, "w": [2, 4, 5, 6], "number_workers": 2, "workers": 2, "d": [2, 7, 9, 11], "dashboard_mod": 2, "mod": [2, 4, 5, 6, 11, 12], "readonly": [2, 11, 15], "non": [2, 4, 5, 6, 7, 9, 11, 13, 14, 15], "watch": [2, 3, 16], "sync": [2, 6], "lazy": [2, 4, 6], "reload": [2, 3, 4, 5, 11], "automatically": [2, 3, 4, 5, 6, 11, 12, 13, 14, 15], "ssl_cert": 2, "ssl": 2, "certificat": 2, "ssl_key": 2, "key": [2, 4, 5, 6, 7, 9, 11, 12, 16], "errorlog": 2, "error": [2, 3, 5, 6, 7, 8, 9, 11, 15], "logs": [2, 5, 6], "stdout": 2, "stderr": 2, "tickets_only": 2, "filenam": [2, 4, 5, 6, 11], "l": [2, 11], "logging_level": 2, "50": [2, 7], "30": [2, 6, 8, 11], "warning": [2, 5], "switch": [2, 5, 6], "application": [2, 5, 6, 8, 12, 14, 15], "upon": [2, 12, 14], "reloading": [2, 4, 5], "occur": [2, 11, 15], "incoming": 2, "changed": [2, 3, 4, 5, 6, 8, 11, 14, 15], "pref": [2, 15], "immediat": 2, "production": [2, 4], "servers": [2, 6], "unneded": 2, "checks": [2, 6, 8, 11, 12], "restart": [2, 4, 5, 6, 13], "directiv": [2, 8, 11], "looks": [2, 6, 11], "occurring": 2, "modifications": 2, "requir": [2, 5, 6, 11, 12], "used": [2, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "currently": [2, 5, 8], "behaviour": [2, 11, 13], "rocket3": [2, 14], "threaded": [2, 14], "stripped": [2, 14], "python2": [2, 14], "logic": [2, 4, 5, 6, 12, 14], "valu": [2, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15], "defined": [2, 4, 5, 6, 8, 11, 12, 13, 14, 15], "logging": [2, 12], "corresponds": [2, 6, 9], "common": [2, 4, 5, 8, 11, 12, 14, 15], "notset": 2, "10": [2, 6, 7, 8, 9, 10, 11, 12, 15], "20": [2, 7, 10, 11], "info": [2, 4, 5, 12], "40": [2, 9, 15], "critical": 2, "telling": [2, 12], "library": [2, 6, 10, 11, 14, 15], "handl": [2, 4, 5, 6, 14, 15], "events": [2, 15], "sets": [2, 5, 6, 11], "calls": [2, 6, 8, 15], "functions": [2, 5, 9, 15], "found": [2, 6, 11], "invalid": [2, 6, 11], "saved": [2, 5, 6, 11], "administrator": 2, "asked": 2, "cad": [2, 4, 5, 8, 10, 13], "ped": [2, 4, 5, 6, 13], "uso": [2, 5, 13], "Isso": [2, 4, 6], "chat": 2, "pdkdf2": 2, "hash": [2, 6, 11], "vou": 2, "exclu\u00edd": [2, 6], "my_password_fil": 2, "depo": [2, 3, 6], "reutiliz": [2, 6], "temp": [2, 8], "execu": [2, 4], "validators": [2, 14], "crypt": 2, "writ": [2, 4, 5, 6, 8], "str": [2, 5, 6, 9, 14, 15], "input": [2, 5, 6, 8, 11, 15], "reinstall": 2, "reinstal": 2, "necess\u00e1ri": [2, 4, 5, 6], "confirm": [2, 11, 13], "cria\u00e7\u00e3": [2, 6, 13], "segu": [2, 4, 5, 6, 8], "atual": [2, 6], "existent": [2, 6, 12, 13], "parent": [2, 6, 8, 15], "O": [2, 8, 9, 11, 12, 16], "apen": [2, 5, 6, 7], "pesquis": [2, 3, 6, 13], "ent\u00e3": [2, 4, 6, 12], "exempl": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], "conch": 2, "pud": 2, "myapp": [2, 4], "db": [2, 3, 4, 5, 7, 9, 11, 12, 13, 14, 15], "translator": [2, 10, 16], "dal": [2, 4, 7, 11, 13, 15, 16], "field": [2, 4, 5, 7, 12, 13, 14, 15, 16], "utils": [2, 4, 5, 8, 9, 11, 12, 13, 14, 16], "versions": [2, 5, 11], "too": [2, 5, 6, 11, 15], "cannot": [2, 5, 6, 8, 11, 15], "generic": [2, 4, 5, 6, 11], "described": [2, 4, 5, 6, 11], "called": [2, 5, 6, 7, 8, 9, 11, 13, 14, 15], "deployment_tools": 2, "collects": 2, "recip": 2, "they": [2, 4, 5, 6, 7, 8, 11, 12, 14, 15], "briefly": 2, "tips": [2, 13], "tricks": 2, "thes": [2, 4, 5, 6, 8, 9, 11, 13, 15], "steps": 2, "generat": [2, 6, 8, 9, 11, 12, 13, 14, 15], "followed": [2, 5, 11], "www": [2, 8, 9, 13], "section": [2, 4, 6, 8, 11, 12], "io": [2, 6], "engineering": 2, "education": 2, "securely": 2, "vscod": 2, "may": [2, 4, 5, 6, 8, 9, 11, 14, 15], "updat": [2, 5, 11, 13, 14, 15], "contain": [2, 4, 5, 6, 8, 9, 11, 12, 15], "configurations": 2, "workspacefold": 2, "path_t": 2, "crt": [2, 6], "absolut": [2, 6, 14], "location": [2, 4, 6, 8, 14], "so": [2, 5, 6, 8, 9, 11, 13, 14, 15], "feasibl": [2, 11], "simply": [2, 4, 5, 6, 8, 15], "py4web_wsg": 2, "4": [2, 5, 6, 7, 8, 11, 13], "tak": [2, 3, 5, 6, 8, 11, 12, 13, 15], "consol": [2, 9, 12, 15], "obtain": [2, 12, 15], "id": [2, 5, 7, 8, 9, 11, 12, 13, 14, 15], "project_nam": 2, "mkdir": [2, 4, 7, 11, 13], "supond": [2, 6], "cp": 2, "development_tools": 2, "talvez": [2, 5], "__init": 2, "vazi": [2, 6], "ver": [2, 6, 12], "makefil": 2, "__init__": [2, 4, 5, 6, 7, 11, 13, 14, 15], "lib": 2, "yaml": 2, "sdk": 2, "config": [2, 4], "email": [2, 8, 11, 12, 14], "mail": [2, 3, 5, 11, 12], "obtid": [2, 6], "agor": [2, 4, 5, 6, 8], "bast": 2, "deploy": 2, "atend": [2, 6], "youtub": [2, 6], "follow": [2, 4, 7, 12, 13, 14], "detailed": [2, 13], "bottle_app": 2, "script": [2, 5, 8, 15], "dockerfil": 2, "compos": 2, "yml": 2, "setting": [2, 4, 5, 6, 11, 13], "postgresql": [2, 6], "advantag": [2, 6, 8, 15], "requiring": [2, 14], "sud": [2, 12], "background": [2, 4, 11, 15], "daemon": 2, "bash": 2, "04": 2, "03": [2, 6, 7], "lts": 2, "nginx": 2, "self": [2, 5, 6, 9, 11, 13, 15], "signed": [2, 5, 11], "manag": [2, 3, 4, 5, 6, 12], "iptabl": 2, "surely": [3, 4], "extensively": 3, "check": [3, 4, 5, 6, 11, 12, 13], "looking": 3, "good": [3, 11], "exploring": 3, "listening": 3, "tcp": 3, "local": [3, 5, 8, 11, 12, 13], "pc": 3, "protocol": 3, "connect": [3, 6], "firefox": [3, 15], "chrom": [3, 15], "bot\u00f5": [3, 16], "describ": [3, 11], "chapt": [3, 4, 5, 6, 8, 9, 11, 13], "documentation": [3, 11, 15], "20201112": 3, "browsing": 3, "discuss": 3, "forum": 3, "pression": 3, "bot\u00e3": 3, "transmit": 3, "inser": [3, 8], "ref": [3, 5, 6, 9, 11, 16], "comando": [3, 4, 6, 9, 16], "set_password": 3, "configur": [3, 12, 13, 14, 16], "exib": [3, 6, 8, 9, 13], "abas": 3, "comprim": 3, "cliqu": [3, 13], "t\u00edtul": [3, 9, 13], "gui": 3, "expand": 3, "As": [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15], "context": [3, 5, 6, 8], "aba": 3, "instal": [3, 6, 12, 16], "selecion": [3, 6], "rot": [3, 13], "tab": [3, 5, 11], "allows": [3, 4, 5, 6, 7, 8, 11, 12, 13, 15], "contains": [3, 5, 7, 8, 10, 11, 13, 14, 15], "selected": [3, 4, 7, 9, 11, 15], "compris": 3, "reloaded": [3, 4, 15], "unless": [3, 5, 6, 8, 11], "op\u00e7\u00e3": [3, 4, 6, 8, 9], "click": [3, 9, 11, 13, 15], "effect": [3, 6, 11], "fails": [3, 11], "load": [3, 5, 15], "corresponding": [3, 6, 11, 12, 13, 14], "button": [3, 4, 5, 11, 13, 15], "displayed": [3, 6, 9, 11, 13, 15], "realiz": [3, 4, 5, 6], "busc": [3, 6, 13], "crud": [3, 11, 15], "visit": [3, 5, 11], "desencad": 3, "emit": [3, 6], "registr": [3, 4, 11, 12, 13], "edi\u00e7\u00f5": 3, "comuns": 3, "filesyst": [4, 5, 6], "going": [4, 15], "own": [4, 5, 6, 8, 11, 12, 13, 14, 15], "mind": [4, 6, 7, 8, 11], "therefor": [4, 5, 8, 11, 14], "empty": [4, 11, 15], "strictly": [4, 15], "enter": [4, 11, 12], "echo": 4, "backslash": 4, "i": [4, 5, 6, 7, 8, 11, 12, 15], "press": [4, 13], "recogniz": 4, "automatic": [4, 6, 8, 14], "whenev": 4, "required": [4, 5, 6, 7, 11, 15], "anything": 4, "arbitrary": [4, 12], "access": [4, 5, 9, 12, 14, 15], "typically": [4, 8], "expos": [4, 5], "dynamic": [4, 8, 12], "expor": [4, 12], "simples": [4, 6, 10], "subpast": 4, "public": 4, "hell": [4, 5, 6, 8, 9, 11, 12, 15], "world": [4, 5, 6, 8, 9, 11], "rec\u00e9m": [4, 6, 10], "sob": [4, 6], "internally": [4, 5, 6, 13], "supports": [4, 5, 8, 9, 11, 15], "streaming": [4, 14], "partial": [4, 6, 14], "rang": [4, 6, 8, 12, 14], "modified": [4, 11, 14], "handled": [4, 5, 11, 15], "headers": [4, 8, 15], "fun\u00e7\u00e3": [4, 6, 8, 9], "conte\u00fad": [4, 6, 9], "novaaplicaca": 4, "init": [4, 13], "seg": 4, "datetim": [4, 5, 6, 7, 11, 15], "action": [4, 5, 6, 7, 9, 11, 12, 13, 14, 15], "def": [4, 5, 6, 7, 9, 11, 12, 13, 14, 15], "return": [4, 5, 6, 7, 9, 11, 12, 13, 15], "accessibl": 4, "\u00edndic": 4, "opcional": [4, 6, 9, 11], "Ao": [4, 6, 8, 13], "estrutur": [4, 5, 6, 10], "c\u00f3dig": [4, 5, 6, 8, 9], "ocorr": [4, 6, 8], "v\u00e1ri": [4, 5, 6, 10], "fun\u00e7\u00f5": [4, 8], "prepends": 4, "sej": [4, 6], "url": [4, 5, 7, 8, 11, 12, 13, 14, 15], "a\u00e7\u00e3": [4, 5, 6, 12, 16], "anteced": 4, "ambigu": [4, 6], "exce\u00e7\u00e3": [4, 5, 6, 8], "link": [4, 7, 8, 9, 11, 12, 13], "simb\u00f3l": 4, "actions": [4, 5, 6, 13, 14, 16], "string": [4, 5, 6, 7, 9, 10, 11, 13], "dictionary": [4, 5, 6, 9, 11, 14], "tell": [4, 12, 15], "what": [4, 5, 6, 8, 11, 12, 14, 15], "serializ": [4, 6, 8, 9], "end": [4, 6, 8, 11, 12, 13, 15], "colors": [4, 6], "blu": [4, 6, 11, 14], "green": [4, 6, 14], "vis\u00edvel": 4, "vermelh": 4, "azul": 4, "verd": 4, "conven\u00e7\u00e3": 4, "transform": [4, 5, 6, 11, 15], "inteir": [4, 6], "tard": [4, 6], "irem": [4, 5], "brev": 4, "poss\u00edvel": [4, 6], "map": [4, 6, 9, 10], "padr\u00f5": [4, 6, 9], "color": [4, 6, 8, 9, 11, 15], "picked": 4, "unknown": 4, "sintax": [4, 6, 9, 12, 16], "garraf": 4, "bottlepy": [4, 5], "wildcard": 4, "filt": [4, 7, 11, 13], "possibl": [4, 5, 6, 8, 11, 13, 14], "filters": [4, 11], "int": [4, 6, 11, 12, 14], "d\u00edgit": [4, 6], "assinatur": [4, 5], "convert": [4, 6, 9], "n\u00famer": [4, 6, 10, 13], "float": [4, 11], "decim": 4, "personagens": [4, 6], "caracter": 4, "barr": 4, "gananc": 4, "combin": [4, 5, 9, 13], "segment": 4, "exp": [4, 6], "expression": [4, 6, 8, 10, 11, 13], "matched": [4, 7, 9, 11], "harmoniz": 4, "car\u00e1ct": [4, 6], "universal": [4, 6, 9], "pass": [4, 5, 6, 8, 9, 11, 12, 13, 14, 15], "vari\u00e1vel": [4, 6, 9, 10], "especific": [4, 5, 6], "al\u00e9m": [4, 6, 13], "diss": [4, 6, 13], "ac\u00e7\u00e3": [4, 5, 6, 7], "method": [4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15], "m\u00e9tod": [4, 5, 6, 8, 13], "post": [4, 6, 7, 9, 11, 12, 13, 14, 15], "paint": [4, 11], "query": [4, 5, 7, 9, 11, 13, 14, 15], "painting": 4, "equivalent": [4, 5, 6, 9, 11, 14], "additional": [4, 5, 7, 8, 11, 13], "attribut": [4, 5, 6, 9, 11, 13, 14, 15], "identify": 4, "decl": [4, 6], "head": [4, 5, 6, 8, 13, 15], "style": [4, 6, 8, 11, 15, 16], "body": [4, 8, 12, 13, 15], "h1": [4, 8], "tint": 4, "dict": [4, 5, 6, 10, 11, 13, 14, 15], "fund": 4, "correspondent": [4, 6, 9], "ingredient": 4, "chav": [4, 8, 9, 10, 13], "lumin\u00e1r": 4, "disposit": [4, 5, 12], "el\u00e9tr": [4, 5, 12], "comport": [4, 6, 9, 13], "inicializ": [4, 5], "filtrag": [4, 13], "entrad": [4, 6, 9, 10], "depend": [4, 5, 6], "\u00e2mbit": 4, "encaix": 4, "\u00e1rvor": 4, "explic": [4, 6], "acess\u00f3ri": 4, "especif": [4, 6], "dand": 4, "Esse": 4, "estar": [4, 6, 9], "localiz": 4, "diret\u00f3ri": 4, "ser\u00e3": [4, 6, 9], "cord": [4, 6, 10], "facil": [4, 5, 6], "linguagens": 4, "diz": [4, 6, 12, 13], "obter": [4, 6], "conex\u00e3": 4, "part": [4, 9, 14], "piscin": [4, 6], "compromet": [4, 6], "sucess": [4, 6], "revers\u00e3": 4, "falh": 4, "sess\u00e3": [4, 16], "analis": [4, 6, 10], "recuper": [4, 6], "salv": [4, 6, 10], "tradutor": 4, "cabe\u00e7alh": [4, 9], "accept": [4, 5, 11, 15], "determin": [4, 5, 6, 10, 11, 12, 13], "\u00f3ptim": 4, "regr": [4, 5], "liga\u00e7\u00e3": [4, 5, 6], "ambos": [4, 5, 6], "trat": [4, 6], "writing": [4, 6, 14], "scratch": 4, "san": 4, "conventions": [4, 6], "outlined": [4, 5], "putting": 4, "organized": 4, "properly": 4, "pre": [4, 5, 13], "shows": [4, 8, 11, 12], "registration": [4, 11], "building": [4, 11, 15], "construction": 4, "giv": [4, 5, 6, 8, 11, 12], "kind": 4, "normal": [4, 5, 6, 8, 11, 13, 15], "encontr": [4, 6, 8, 10, 12], "andaim": 4, "la": [4, 6], "usand": [4, 5, 8, 9, 12, 16], "imports": 4, "controllers": [4, 6, 8, 9, 11, 14, 15], "metadat": [4, 6], "models": [4, 6, 7, 13, 14], "tabl": [4, 5, 7, 11, 12, 13, 14, 15, 16], "settings_privat": 4, "privat": [4, 5, 11], "ship": 4, "bulm": [4, 11, 13, 15], "agnostic": 4, "favicon": 4, "ico": 4, "replac": [4, 6, 8, 9, 13, 15], "tasks": [4, 6], "etc": [4, 5, 6, 7, 10, 14], "general": [4, 5, 6, 11, 12], "layout": [4, 11, 12, 13, 14, 15, 16], "translations": [4, 5, 10, 15], "internationalization": [4, 5, 11, 14], "pluralization": [4, 14], "italian": [4, 5, 10], "respons": [4, 5, 6, 8, 14, 15, 16], "abort": [4, 6], "redirect": [4, 5, 11, 12, 13, 15], "helpers": [4, 6, 8, 11, 13, 14, 16], "welcom": [4, 5, 8, 14, 15], "get_us": [4, 5, 12, 14], "first_nam": [4, 5, 12, 13], "format": [4, 5, 7, 9, 10, 12, 13], "hom\u00f3log": 4, "div": [4, 5, 8, 11, 14, 15], "span": [4, 14], "img": 4, "indic": [4, 6], "esper": [4, 5, 6], "v\u00e1l": 4, "redirecion": [4, 12, 13], "provavel": [4, 5, 6], "mud": [4, 5, 6], "agn\u00f3st": 4, "algum": [4, 6, 9], "exce\u00e7\u00f5": 4, "quis": [4, 6], "scaffold": [4, 15], "lot": [4, 6], "point": [4, 5, 6, 11, 14, 15], "testing": [4, 6], "developing": 4, "whol": [4, 11], "anoth": [4, 5, 6, 8, 11, 12], "my_app": 4, "loaded": [4, 8, 13, 15], "select": [4, 7, 10, 11, 12, 13, 14, 15, 16], "upload": [4, 6], "upper": [4, 5, 11], "finally": [4, 13], "facilitat": 4, "reloads": [4, 5], "fact": [4, 5, 14], "watched": 4, "app_watch_handl": 4, "decorator": [4, 5, 6, 14], "reported": 4, "worry": 4, "fully": [4, 5, 6, 11], "assist": 4, "sass": 4, "compil": [4, 8, 9, 11], "libsass": 4, "static_dev": 4, "overrid": [4, 6, 8, 12, 13, 14, 15], "sass_compil": 4, "changed_fil": 4, "print": [4, 6, 9, 10, 12, 14], "abov": [4, 5, 6, 7, 8, 11, 13], "compiled_css": 4, "filep": 4, "include_paths": 4, "includ": [4, 6, 7, 9, 13, 15], "output_styl": 4, "compressed": 4, "dest": [4, 6, 11], "join": [4, 5, 7, 11, 13, 14], "compiled": [4, 8, 9, 11], "valid": [4, 6, 9, 14, 16], "esprim": 4, "implementation": [4, 8, 11, 14], "nod": 4, "dbadmin": 4, "validate_js": 4, "cf": 4, "validation": [4, 6, 7, 8, 13], "abspath": 4, "parsemodul": 4, "filepaths": 4, "relativ": [4, 14], "ignored": [4, 8, 9, 13, 15], "exceptions": [4, 5, 15], "handlers": 4, "printed": 4, "terminal": 4, "Um": 5, "pec": [5, 6], "equip": 5, "mobili\u00e1ri": 5, "fix": [5, 6], "posi\u00e7\u00e3": [5, 9], "edif\u00edci": 5, "ve\u00edcul": 5, "algo": [5, 6, 7, 8], "respost": [5, 8], "processing": [5, 6, 8, 11, 15], "operations": [5, 6], "perform": [5, 6, 11, 12], "pars": [5, 6, 11, 12], "information": [5, 6, 7, 11, 12, 14, 16], "commit": [5, 7, 13], "transaction": [5, 6], "preferred": [5, 6], "lookup": [5, 7], "prop": [5, 6, 13], "pick": [5, 12], "connection": [5, 6, 11], "pool": 5, "after": [5, 6, 8, 11, 12, 13], "back": [5, 6, 11], "mecan": [5, 6, 8], "ignor": [5, 6, 8, 11, 13], "eficient": [5, 6], "reduz": 5, "clich": 5, "middlewar": 5, "wsgi": 5, "plug": 5, "excet": [5, 6], "a\u00e7\u00f5": 5, "uns": 5, "signing": 5, "explained": [5, 6, 11, 13], "connections": [5, 6, 14], "authentication": [5, 13, 16], "develop": [5, 6, 8, 12, 13, 14], "paragraph": [5, 9, 11, 13], "previous": [5, 8, 9, 11, 15], "decorators": [5, 14], "applied": [5, 11, 13, 15], "knows": 5, "depends": [5, 6, 14], "exception": [5, 6, 11, 12], "otherwis": [5, 6, 8, 11, 12, 13], "various": 5, "delimiters": [5, 14], "retorn": [5, 8, 9], "posterior": 5, "jinja2": 5, "comum": [5, 6], "pouc": [5, 6], "a\u00e7\u00fac": 5, "sint\u00e1t": 5, "duas": [5, 6], "linh": [5, 6, 8, 9, 13, 16], "cached": 5, "ram": [5, 6], "right": [5, 6, 8], "careful": [5, 6, 8, 14, 15], "documentations": 5, "exactly": 5, "opposit": 5, "early": 5, "february": 5, "2022": 5, "extend": [5, 6, 12, 14, 15], "passing": [5, 6, 9], "implications": 5, "avoiding": [5, 11], "clean": [5, 9], "able": [5, 6, 11], "variabl": [5, 6, 9, 11, 13, 15], "my_var": [5, 9], "t_fold": 5, "dirnam": [5, 7, 11, 13], "__file__": [5, 7, 11, 13], "translated": [5, 8, 11], "specified": [5, 6, 8, 9, 11, 12, 13, 14, 15], "match": [5, 6, 8, 9, 10, 11], "class": [5, 6, 8, 9, 11, 12, 14, 15], "implement": [5, 6, 8, 12], "contador": [5, 6], "dbstor": 5, "memory": [5, 6], "storag": [5, 6, 7, 11, 13], "count": [5, 7, 12, 13, 15], "n": [5, 6, 10, 15], "tradu\u00e7\u00e3": [5, 16], "tradu\u00e7\u00f5": [5, 10], "en": [5, 7], "2": [5, 6, 7, 8, 9, 10, 11, 12, 14, 15], "twic": [5, 6], "6": [5, 6, 7, 11, 12, 14], "5": [5, 6, 7, 8, 10, 11, 12, 13, 15], "visiting": [5, 12], "preferenc": 5, "english": 5, "tent": [5, 6], "ti": 5, "ho": 5, "mai": 5, "vist": [5, 6, 9], "prim": [5, 11], "gia": 5, "volt": [5, 6], "piu": 5, "display": [5, 11, 12, 13, 15], "alerts": [5, 8, 14], "displaying": [5, 11, 13], "stat": [5, 7, 14, 15], "preserved": 5, "redirection": [5, 14], "dismissibl": 5, "auxili": [5, 6, 8, 9], "del": [5, 6, 9], "_class": [5, 9, 11, 15], "sanitiz": [5, 9, 14], "src": [5, 6, 8, 9, 15], "globals": [5, 6, 8, 12, 14], "xml": [5, 8, 11, 14, 15], "returned": [5, 6, 7, 8, 9, 11, 15], "triggers": 5, "position": 5, "convenienc": 5, "injected": [5, 8, 9, 11], "redirected": [5, 15], "remembered": 5, "achieved": [5, 14], "asking": 5, "temporarily": 5, "sent": [5, 6, 12, 15], "returning": 5, "overwritten": [5, 14], "mensagens": [5, 6], "defaults": [5, 11, 13, 14], "alert": [5, 8, 9, 11, 14], "success": [5, 7, 15], "hardcod": 5, "thos": [5, 6, 8, 9, 12, 14, 15], "basic": [5, 16], "speaking": 5, "desired": [5, 11], "persist": 5, "throughout": 5, "interaction": 5, "words": [5, 13], "rend": [5, 6, 11, 13, 14, 15], "stateless": [5, 15], "stateful": 5, "secret": [5, 12], "my": [5, 8, 9, 11, 12, 15], "increased": 5, "opening": 5, "updated": [5, 6, 11], "closing": [5, 6], "reopening": 5, "window": [5, 8, 11], "related": [5, 6], "usernam": [5, 6, 12], "visited": [5, 8], "shopping": 5, "cart": 5, "jwt": 5, "specifically": [5, 6, 11, 15], "token": [5, 11], "stor": [5, 6, 12], "serialized": [5, 6, 9, 11], "__str__": [5, 8, 9], "operator": [5, 6, 11], "lost": [5, 14], "composing": 5, "still": [5, 6, 9, 11, 13, 14], "minimal": [5, 13, 16], "identifying": [5, 11], "clients": 5, "sess\u00f5": 5, "nunc": [5, 6], "expir": 5, "contenh": 5, "hist\u00f3r": [5, 6], "par\u00e2metr": [5, 13], "expiration": 5, "3600": [5, 6], "algorithm": [5, 11], "hs256": 5, "same_sit": 5, "lax": 5, "_sesson": 5, "passphras": 5, "sign": [5, 8, 12], "maximum": [5, 11], "lifetim": 5, "seconds": [5, 11], "timeout": 5, "signatur": [5, 6, 7, 9, 11], "alternat": [5, 15], "csrf": [5, 11], "attacks": [5, 9], "cross": [5, 9], "forgery": 5, "enabled": [5, 7, 12, 14], "provided": [5, 6, 8, 9, 11, 13], "uuid": [5, 6], "why": [5, 8, 14], "appname_session": 5, "encoded": [5, 6, 11, 15], "preventing": 5, "tampering": [5, 6], "trivial": [5, 6], "communications": 5, "disk": [5, 6], "sensitiv": [5, 11], "invalidated": 5, "vic": 5, "vers": 5, "small": [5, 11], "siz": [5, 8, 11], "limit": [5, 6, 7, 11, 12], "kbytes": 5, "being": [5, 6, 7, 8, 11, 15], "put": [5, 7, 11, 15], "configured": [5, 11, 14], "conn": 5, "11211": 5, "6379": 5, "lambd": [5, 6, 9, 11, 13, 15], "k": [5, 8, 14], "v": [5, 9, 11, 15], "cs": 5, "ct": 5, "ttl": 5, "avis": [5, 6, 12], "rem": 5, "macac": 5, "multiprocess": 5, "quirk": 5, "deterministic": 5, "unsaf": [5, 9], "tud": [5, 6], "imagin": [5, 6, 8, 15], "fsstorag": 5, "exists": [5, 6, 11], "fp": 5, "dump": 5, "tmp": [5, 6], "leav": [5, 6], "exercis": 5, "per": [5, 7], "subfolders": [5, 6], "locking": 5, "storing": 5, "inefficient": 5, "scal": [5, 8], "app1": 5, "app2": 5, "wants": 5, "shar": [5, 6, 14], "assuming": 5, "sessons": 5, "session_secret_key": 5, "app1_session": 5, "tells": [5, 15], "sur": [5, 11, 15], "shared": 5, "between": [5, 9, 11, 14], "consistent": 5, "session_app1": 5, "restrict": [5, 7, 11, 15], "enforc": [5, 11], "workflow": [5, 16], "step1": 5, "step_completed": 5, "_href": [5, 8, 9, 11, 13], "step2": 5, "locals": [5, 14], "step3": 5, "on_request": 5, "evaluat": [5, 11, 15], "listed": [5, 11, 15], "rais": [5, 11, 12, 14], "404": [5, 11, 12], "cond": 5, "400": [5, 14], "raised": 5, "on_fals": 5, "13": [5, 6, 11], "giving": 5, "memberships": 5, "specific": [5, 6, 8, 9, 11, 12, 14, 15], "auth_us": [5, 6, 12], "requires_membership": 5, "group_nam": [5, 12], "user_id": [5, 6, 12, 14], "payroll": 5, "employ": 5, "permission": [5, 12], "typical": [5, 6, 11], "follows": [5, 6, 11], "url_sign": 5, "somepath": 5, "controll": [5, 6, 8, 9, 11, 12, 13, 14, 15], "signs": 5, "signed_url": 5, "anotherpath": 5, "verify": 5, "verified": [5, 11], "usou": [5, 6], "queir": 5, "abstraction": [5, 14, 16], "lay": [5, 14, 16], "documented": [5, 11], "pleas": [5, 6], "rememb": [5, 6], "doesn": 5, "db_fold": [5, 7, 11, 13], "pool_siz": [5, 6], "define_tabl": [5, 7, 11, 12, 13, 14], "visit_log": 5, "client_ip": 5, "timestamp": [5, 7, 15], "environ": [5, 14], "remote_addr": [5, 12], "insert": [5, 7, 8, 11, 12, 13, 15], "utcnow": [5, 6], "picks": 5, "wrapped": 5, "commits": [5, 6], "on_success": 5, "rolls": 5, "on_error": 5, "rol": [5, 9], "construtor": [5, 9, 11, 16], "tabel": [5, 9, 12, 13, 14], "camp": [5, 7, 9, 11, 16], "last_nam": [5, 12, 13], "sso_id": [5, 12], "action_token": [5, 12], "\u00faltim": [5, 6, 12], "intern": [5, 6], "registers": 5, "including": [5, 11, 13, 14, 15], "presenc": [5, 6], "_scaffold": [5, 8, 9, 11, 12, 13, 14, 16], "returns": [5, 6, 7, 9, 11, 12, 14, 15], "logged": [5, 8, 12, 14], "redirects": [5, 12], "desd": [5, 6], "verific": [5, 6, 12], "plugin": [5, 11, 12, 13, 15], "methods": [5, 7, 9, 11, 12, 13, 16], "authorization": [5, 16], "compartilh": [5, 6], "permiss\u00e3": [5, 6, 12], "estad": [5, 6], "threads": [5, 6], "atribut": [5, 9], "thing": [5, 6, 14], "writabl": [5, 6, 11, 14], "readabl": [5, 6, 13, 14], "espec": [5, 6, 9], "threadsafevariabl": 5, "Esses": [5, 6], "parec": [5, 6], "rosc": 5, "loc": 5, "est\u00e3": [5, 6, 7, 9, 12], "valor": [5, 9, 10, 11, 13], "signif": [5, 6, 7], "m\u00ednim": [5, 6], "myfixtur": 5, "transforms": 5, "determining": 5, "eventually": 5, "accessing": [5, 6], "inner": [5, 15], "layers": 5, "coming": 5, "calling": [5, 6, 8], "b": [5, 6, 8, 9, 11, 14, 15], "circumstanc": 5, "think": [5, 8, 13, 15], "onion": 5, "cent": [5, 6, 8], "entering": 5, "exiting": 5, "processed": [5, 6, 8, 11], "previously": [5, 6, 11], "current": [5, 6, 9, 12, 13, 14, 15], "uppercas": [5, 11], "upper_cas": 5, "tracebacks": 5, "logerrors": 5, "stre": [5, 6], "errlog": 5, "myerrors": 5, "__prerequisite__": 5, "appended": [5, 6], "__prerequisites__": 5, "guarant": 5, "singleton": [5, 14], "declared": 5, "considered": [5, 6, 8, 14], "httrespons": 5, "whil": [5, 6, 7, 11, 12, 14], "actual": [5, 6, 8, 12, 13], "complicated": 5, "individual": [5, 6, 7, 8, 11], "know": [5, 13], "wheth": [5, 6, 11, 12, 14], "keeps": [5, 13], "easy": [5, 8, 11], "communicat": 5, "retriev": [5, 6, 15], "stated": 5, "mandatory": [5, 8], "consid": [5, 8, 9, 11, 13], "happen": 5, "sequenc": [5, 6], "revers": [5, 6], "transformed": [5, 6], "extra": [5, 6, 11, 12], "almost": 5, "contexts": 5, "futur": [5, 14, 15], "implements": [5, 6], "recently": 5, "lru": 5, "via": [5, 6, 8, 9, 15], "1000": [5, 6, 11, 15], "60": [5, 6], "uuid4": [5, 6], "registered": [5, 12], "mention": 5, "rendered": [5, 7, 8, 11, 13, 14, 15], "unauthenticated": [5, 6, 9], "authenticated": [5, 6], "below": [5, 6, 7, 11, 13], "rout": [5, 13, 14, 15], "separated": [5, 6, 13, 15], "combined": [5, 6, 11], "preced": [5, 6, 8], "maps": [6, 9], "such": [6, 9, 11, 13, 14], "queri": [6, 7, 13, 14, 15], "records": [6, 7, 11, 12, 13], "dynamically": [6, 7, 8, 11], "dialect": 6, "dialects": 6, "term": 6, "generically": 6, "portabl": 6, "among": [6, 11], "choosen": 6, "pur": 6, "conceived": 6, "tast": 6, "transactions": 6, "aggregat": 6, "nested": [6, 8], "differenc": [6, 11, 14], "caveat": [6, 8, 14], "startup": [6, 14], "downsid": [6, 14], "approach": [6, 14], "nev": [6, 8, 11, 14, 15], "thread": [6, 14], "practical": [6, 11, 14, 16], "mailing": 6, "adapters": [6, 15], "modern": [6, 12, 15], "distribution": 6, "actually": [6, 8], "driv": 6, "sqlite3": 6, "included": [6, 8, 11, 13], "binary": 6, "appropriat": [6, 11], "drivers": 6, "pysqlite2": 6, "zxjdbc": 6, "jython": 6, "psycopg2": 6, "pymysql": 6, "mysqldb": 6, "cx_oracl": 6, "pyodbc": 6, "pypyodbc": 6, "firebird": 6, "kinterbasdb": 6, "fdb": 6, "db2": 6, "informix": 6, "informixdb": 6, "ingres": 6, "ingresdb": 6, "cubrid": 6, "cubriddb": 6, "sybas": 6, "teradat": 6, "sapdb": 6, "mongodb": 6, "pymong": 6, "imap": 6, "imaplib": 6, "treated": [6, 14], "gotch": 6, "about": [6, 7, 12, 13, 14, 15, 16], "comp\u00f5": 6, "instantiat": [6, 12, 14], "mytabl": 6, "myfield": 6, "truncat": 6, "import_from_csv_fil": 6, "instantiated": 6, "claus": 6, "myquery": 6, "myset": 6, "somevalu": 6, "something": [6, 7, 8, 9, 11], "derived": 6, "myord": 6, "advisabl": 6, "persistent": [6, 12], "hesitat": 6, "doing": [6, 11, 15], "snippets": 6, "executabl": [6, 9], "auth_user_tag_groups": [6, 12], "person": [6, 7, 11, 13], "superher": [6, 7, 11, 13, 15], "superpow": [6, 7], "product": [6, 11, 15], "superman": [6, 7, 11, 13], "real_identity": [6, 7], "zer": [6, 8, 11, 13], "sak": 6, "simplicity": [6, 15], "discussion": 6, "engin": [6, 11], "conect": [6, 12], "_ur": 6, "_dbnam": 6, "instanc": [6, 9, 11, 13, 15], "uniform": 6, "resourc": [6, 12], "identifi": 6, "liga\u00e7\u00f5": [6, 9], "supor": 6, "situa\u00e7\u00e3": 6, "dummy": [6, 8], "db_codec": 6, "utf": 6, "check_reserved": 6, "migrate_enabled": 6, "fake_migrate_all": 6, "decode_credentials": 6, "driver_args": 6, "adapter_args": 6, "attempts": [6, 12], "auto_import": 6, "bigint_id": 6, "lazy_tabl": 6, "db_uid": 6, "do_connect": 6, "after_connection": 6, "ignore_field_cas": 6, "entity_quoting": 6, "table_hash": 6, "estabelec": 6, "atrav\u00e9s": [6, 8, 9, 12], "inst\u00e2nc": [6, 13], "dar": 6, "seq\u00fc\u00eanc": 6, "set_encoding": 6, "utf8mb4": 6, "postgr": 6, "2005": 6, "mssql3": 6, "2012": 6, "mssql4": 6, "oracl": 6, "dsn": 6, "uid": 6, "pwd": 6, "ndb": 6, "consists": [6, 13], "locked": 6, "accessed": [6, 9, 11], "established": 6, "appropriately": 6, "encoding": 6, "avoids": 6, "utf8": 6, "charact": [6, 11], "unicod": [6, 11], "characters": [6, 11], "consist": [6, 14], "bytes": 6, "turns": [6, 15], "buff": 6, "often": [6, 12, 15], "completely": [6, 8, 12], "had": 6, "connecting": 6, "_select": 6, "_insert": 6, "_updat": 6, "_delet": 6, "usos": 6, "codific": 6, "caract": [6, 9], "latin1": 6, "unicodedecodeerror": 6, "rath": [6, 8, 11, 15], "slow": 6, "establish": 6, "pooling": 6, "closed": [6, 8], "goes": [6, 11], "tri": [6, 14], "recycl": 6, "cresc": 6, "m\u00e1xim": 6, "simult\u00e2n": 6, "receb": [6, 8], "tamanh": 6, "sequencial": 6, "t\u00f3pic": 6, "benef\u00edci": 6, "conseg": 6, "segund": 6, "fracass": 6, "permanec": 6, "fech": [6, 8, 9], "grac": 6, "repeti\u00e7\u00e3": 6, "restabelec": 6, "interromp": 6, "major": 6, "boost": [6, 8], "creation": 6, "deferred": [6, 15], "referenced": [6, 7], "possibly": 6, "concurrency": [6, 15], "problems": [6, 12, 15], "howev": [6, 8, 11, 15], "demand": 6, "referred": [6, 7], "responsibility": 6, "housekeeping": 6, "definitions": [6, 7, 14], "maintainability": 6, "expect": [6, 11], "uris": 6, "deal": [6, 15], "distribut": 6, "workload": 6, "primeir": [6, 8, 12, 16], "eo": 6, "terceir": 6, "distribu": 6, "carg": 6, "mestr": 6, "escrav": 6, "colun": [6, 13], "contr": 6, "alvo": 6, "nenhum": [6, 12], "cont\u00eam": [6, 10], "against": [6, 7, 9, 11, 13], "ordem": 6, "op\u00e7\u00f5": [6, 16], "extras": 6, "tais": 6, "ends": [6, 8, 14], "reserved": [6, 11], "keywords": 6, "append": [6, 9, 11, 13, 15], "_nonreserved": 6, "postgres_nonreserved": 6, "backends": 6, "cit": [6, 9, 11], "entidad": 6, "identific": [6, 9], "ger": [6, 8, 9, 12, 13], "n\u00edvel": [6, 10], "cot": 6, "mai\u00fascul": 6, "min\u00fascul": 6, "assim": [6, 8], "dobr": 6, "motor": 6, "acord": 6, "norm": 6, "conform": [6, 12], "dobrag": 6, "certez": 6, "esquem": 6, "organiz": 6, "ambas": 6, "acim": [6, 7, 8, 12], "table1": 6, "column": [6, 13], "\u00c0s": [6, 9], "recomend": 6, "detalh": [6, 13], "user_nam": 6, "user_password": 6, "server_addr": 6, "db_nam": 6, "sslmod": 6, "sslrootcert": 6, "root": [6, 8, 12, 13], "sslcert": 6, "sslkey": 6, "aceit": [6, 10, 11], "migration": 6, "migrations": 6, "booleans": 6, "afet": 6, "migr": 6, "desat": 6, "verdadeir": [6, 11, 13], "aren": 6, "committed": [6, 14], "immediately": 6, "depending": [6, 8, 11, 13], "activiti": 6, "ever": 6, "granul": 6, "bob": 6, "roll": 6, "revert": 6, "views": 6, "enclosed": 6, "pseud": 6, "traceback": 6, "ticket": 6, "visitor": 6, "tablenam": [6, 7, 11, 15], "kwargs": [6, 15], "preenchiment": 6, "obrigat\u00f3ri": 6, "subcl": 6, "defini\u00e7\u00e3": 6, "opcion": [6, 9], "common_filt": 6, "discut": 6, "abaix": 6, "loj": 6, "pesso": 6, "peg": 6, "increment": 6, "original": [6, 8, 9, 11], "external": 6, "elements": [6, 9, 11, 15], "redefini\u00e7\u00e3": 6, "provoc": 6, "anonymous": [6, 8, 11], "downs": 6, "othertabl": 6, "otherfield": 6, "referencing": 6, "constructor": [6, 12, 16], "representation": [6, 9], "backend": 6, "ali": [6, 11], "constructing": 6, "illustrat": 6, "qualified": 6, "belonging": 6, "db1": 6, "dbo": 6, "helps": [6, 8, 11], "legacy": 6, "primary": [6, 8, 12], "keys": [6, 7], "keyed": 6, "sub": 6, "refer": [6, 7], "relev": 6, "num\u00e9r": 6, "acion": 6, "embor": 6, "mudanc": 6, "din\u00e2m": [6, 16], "mes": [6, 9], "vantagens": 6, "adi": 6, "age": 6, "set_attribut": 6, "is_not_empty": 6, "is_int_in_rang": 6, "120": 6, "realment": 6, "defini\u00e7\u00f5": 6, "ea": 6, "entant": [6, 8, 9, 13], "tom": 6, "is_in_db": [6, 13], "sometabl": 6, "somefield": 6, "some_valu": 6, "caus": [6, 11], "in\u00edci": 6, "keyword": [6, 8, 9], "attached": [6, 12], "preceded": [6, 11], "underscor": [6, 9, 11], "naming": 6, "conflicts": 6, "_extr": 6, "condi\u00e7\u00f5": 6, "easiest": 6, "conditions": [6, 11], "met": [6, 8, 9], "uniqu": [6, 7, 11], "autom\u00e1t": 6, "account": 6, "accnum": 6, "acctype": 6, "accdesc": 6, "null": [6, 7, 11, 15], "fieldnam": [6, 15], "dispon": 6, "escrit": [6, 8], "garant": [6, 8], "obras": 6, "simplific": 6, "vis\u00e3": 6, "Estes": 6, "length": [6, 11], "ondelet": 6, "notnull": 6, "uploadfield": 6, "widget": [6, 11], "label": [6, 7, 8, 11, 15], "comment": [6, 9], "searchabl": 6, "listabl": 6, "authoriz": [6, 7], "autodelet": 6, "uploadfold": 6, "uploadseparat": 6, "uploadfs": 6, "custom_qualifi": 6, "map_non": 6, "Nem": 6, "compriment": 6, "compat": 6, "constru\u00edd": [6, 13], "preench": 6, "previ": [6, 11], "apropri": 6, "ness": 6, "validator": [6, 11], "foruml\u00e1ri": [6, 9, 16], "enforced": [6, 11, 14], "forms": [6, 9, 13, 14, 15], "addition": [6, 8], "sometim": [6, 8, 9, 11], "seem": 6, "redundant": 6, "maintain": [6, 8, 15], "distinction": 6, "efet": 6, "instru\u00e7\u00e3": 6, "cascat": 6, "exclu": 6, "desativ": 6, "conjunt": [6, 9, 10, 13], "imped": [6, 9], "nul": 6, "exclus": 6, "appli": [6, 11, 15], "somewher": 6, "uploads": 6, "discussed": [6, 8, 9, 11], "detail": [6, 9, 13, 15], "uploaded": [6, 11, 14], "upload_fold": [6, 11], "points": [6, 7, 11, 13], "optimized": 6, "subfold": 6, "attention": 6, "breaking": 6, "eith": [6, 11], "separat": [6, 11, 12, 15], "changing": 6, "behavior": [6, 11, 14, 15], "prevent": [6, 9, 11], "happens": 6, "mov": 6, "amazon": 6, "s3": 6, "sftp": 6, "pyfilesyst": 6, "funcion": [6, 16], "apont": 6, "deleted": 6, "due": [6, 7, 11], "operation": [6, 12], "trigg": [6, 15], "associated": [6, 11, 12], "autogenerated": 6, "grav\u00e1vel": 6, "formul\u00e1ri": [6, 12, 13, 16], "leg\u00edvel": 6, "autentic": 6, "autoriz": 6, "altern": 6, "guaranteed": [6, 14], "reset": 6, "is_length": 6, "512": 6, "32": [6, 11], "768": 6, "31": [6, 7, 11], "gib": 6, "boolean": [6, 13], "is_float_in_rang": 6, "1e100": 6, "decimal": [6, 11], "is_decimal_in_rang": 6, "is_dat": 6, "is_tim": 6, "is_datetim": 6, "_id": [6, 9, 11, 15], "is_empty_or": 6, "is_json": 6, "bigint": 6, "63": [6, 11], "grand": 6, "devolv": [6, 8], "pont": 6, "respect": [6, 11, 13], "certain": [6, 8, 11, 13], "denormalization": 6, "listproperty": 6, "stringlistproperty": 6, "relational": 6, "lists": [6, 13], "items": [6, 7, 8, 11], "item": [6, 8, 9], "escaped": [6, 8, 9], "pretty": [6, 11, 14], "explanatory": 6, "backported": 6, "portability": 6, "base64": [6, 8, 15], "decoded": 6, "extracted": 6, "negativ": [6, 11], "33": [6, 11], "spac": [6, 8, 11, 13], "necessary": [6, 8, 9], "making": [6, 8], "communication": 6, "escaping": [6, 8], "maior": [6, 7], "_format": 6, "sublinh": 6, "poss\u00edv": 6, "Da": 6, "pai": 6, "_tabl": [6, 11, 15], "_tablenam": 6, "_db": 6, "constru\u00e7\u00e3": [6, 9, 13], "v\u00ea": 6, "validat": [6, 11], "tupl": [6, 8, 9], "consider": [6, 8, 9], "myfil": 6, "imag": [6, 8, 9, 11], "relat": 6, "atribu\u00edd": 6, "habilit": 6, "duplicat": 6, "file_content": [6, 15], "file_nam": [6, 15], "feit": 6, "ocasional": 6, "mei": 6, "rb": 6, "Tamb\u00e9m": 6, "ficheir": 6, "corrent": 6, "lev": [6, 9], "flux": 6, "extens\u00e3": 6, "tempor\u00e1ri": 6, "assoc": [6, 10], "inv\u00e9s": 6, "image_fil": 6, "opost": 6, "fullnam": 6, "nameonly": 6, "recup": 6, "pront": 6, "clos": [6, 9], "contextlib": 6, "shutil": 6, "wb": 6, "copyfileobj": 6, "definition": [6, 7, 11, 13], "differs": [6, 13], "letting": 6, "removing": 6, "second": [6, 9, 11, 12, 14], "adding": [6, 11, 13], "newly": 6, "referim": 6, "logfil": 6, "unnamed": 6, "Nos": 6, "descart": 6, "columns": [6, 16], "recommended": [6, 11], "disabl": [6, 13], "impor": 6, "solt": 6, "hor": 6, "lix": 6, "fins": 6, "reclam": 6, "an\u00e1lis": 6, "corromp": 6, "quest\u00e3": 6, "actualiz": 6, "gen\u00e9r": 6, "t\u00edpic": 6, "transa\u00e7\u00f5": 6, "menor": 6, "\u00e9poc": 6, "comet": 6, "fic": 6, "envolv": 6, "convers\u00e3": 6, "acontec": 6, "exat": [6, 8], "reconstru": 6, "metad": 6, "aquel": [6, 12], "attempting": 6, "prudent": 6, "yourapp": 6, "descrev": 6, "estreit": 6, "fak": 6, "alex": 6, "trunc": 6, "reinic": 6, "recomec": 6, "identity": [6, 7, 11, 14], "bulk_insert": 6, "inser\u00e7\u00f5": 6, "relacion": 6, "vantag": 6, "looping": 6, "veloc": 6, "caiu": 6, "tr\u00eas": 6, "carl": 6, "pertenc": 6, "q": [6, 13], "tal": 6, "escrev": [6, 8, 9], "fat": 6, "birthplac": 6, "chicag": 6, "houv": 6, "nasc": 6, "terr": 6, "natal": 6, "crit\u00e9ri": 6, "selec\u00e7\u00e3": 6, "pet": [6, 7, 13], "rov": 6, "ret": 6, "performing": 6, "bails": 6, "holds": 6, "mapping": [6, 11, 14], "whos": [6, 8, 11], "failed": 6, "rarely": 6, "similar": [6, 9], "involv": [6, 13, 14], "etiquet": [6, 9], "propriedad": 6, "anex": 6, "tools": [6, 12, 15], "properti": [6, 11], "id1": 6, "cha": 6, "id2": 6, "material": 6, "wood": 6, "assert": 6, "implemented": 6, "thing_tags_default": 6, "tail": 6, "flexibl": [6, 12], "instru\u00e7\u00f5": 6, "u": [6, 9], "seleccion": 6, "cinc": 6, "placeholders": 6, "colnam": 6, "as_ordered_dict": 6, "substitu\u00edd": 6, "espac": [6, 10, 13], "results": [6, 8, 11, 13], "cursor": [6, 15], "dictionari": 6, "applying": [6, 13], "field1": 6, "val1_row1": 6, "field2": 6, "val2_row1": 6, "val1_row2": 6, "val2_row2": 6, "bonit": 6, "tecl": [6, 10], "ordereddict": 6, "reflet": 6, "adi\u00e7\u00e3": 6, "extra\u00edd": 6, "express\u00e3": [6, 7, 10, 13], "quaisqu": [6, 11], "r\u00f3tul": [6, 9, 13], "arbitr\u00e1ri": 6, "fict\u00edci": 6, "rea": 6, "\u00fatil": 6, "depur": [6, 8], "selecting": 6, "timed": 6, "_timings": 6, "took": 6, "expl\u00edcit": [6, 12], "recorrent": 6, "myidx": 6, "dialet": 6, "SE": 6, "direct": 6, "sid": [6, 15, 16], "comand": 6, "_count": 6, "susan": 6, "iterabl": [6, 11], "act": 6, "diff": 6, "latt": [6, 11, 14], "fileir": 6, "loop": [6, 8], "imprim": 6, "etap": 6, "entend": 6, "pergunt": 6, "particularly": 6, "handy": 6, "compact": 6, "nota\u00e7\u00e3": [6, 9], "sim": 6, "incomum": 6, "rar": 6, "delete_record": 6, "iterators": 6, "avali": [6, 8], "aliment": 6, "lac": 6, "tradicion": 6, "tradicional": 6, "dramat": 6, "iterselect": 6, "cerc": 6, "m\u00e1quin": [6, 9], "reescrev": 6, "sele\u00e7\u00e3": [6, 9], "tir": 6, "proveit": 6, "repr_row": 6, "gerador": 6, "wouldn": 6, "anyway": 6, "myrecord": 6, "shortcut": [6, 8, 11], "19": [6, 7, 11], "02": [6, 11], "convenient": [6, 16], "aparent": 6, "flex\u00edvel": 6, "verif": 6, "levant": 6, "cois": 6, "owner_id": 6, "vincul": 6, "ineficient": 6, "tr\u00e1s": 6, "owns": 6, "actu": 6, "decomp\u00f5": 6, "s\u00e9ri": 6, "classific": [6, 13], "invers": 6, "til": 6, "aparec": 6, "aleat\u00f3r": 6, "random": [6, 8, 11, 12, 15], "super": 6, "concaten": 6, "grup": [6, 12], "condicional": 6, "condi\u00e7\u00e3": 6, "query1": 6, "query2": 6, "consulta1": 6, "efeit": 6, "necessit": 6, "sen\u00e3": 6, "desloc": 6, "offset": [6, 7], "m\u00e1x": 6, "implicit": 6, "pagin": [6, 13], "desempenh": 6, "involved": [6, 8], "managing": 6, "sections": 6, "respectively": [6, 11], "cacheabl": 6, "caching": [6, 16], "trad": 6, "offs": 6, "bin\u00e1ri": 6, "neg": 6, "invert": [6, 11], "nega\u00e7\u00e3": 6, "un\u00e1ri": 6, "sobrecarg": 6, "forma\u00e7\u00e3": 6, "precedent": 6, "compar": [6, 14], "par\u00eantes": 6, "unit\u00e1ri": 6, "elev": 6, "negated": 6, "constru": [6, 9, 13], "vaz": 6, "contag": 6, "jog": [6, 10], "elimin": [6, 13], "ken": 6, "visits": 6, "clicks": [6, 15], "cl\u00e1usul": [6, 8], "condition": [6, 11, 16], "yes_or_n": 6, "curt": 6, "confund": 6, "philip": 6, "modified_on": 6, "retain": 6, "mindful": 6, "inclu\u00edd": [6, 9], "compost": [6, 9], "vari": 6, "usam": 6, "first_row": 6, "last_row": 6, "obvi": 6, "indo": 6, "pretend": 6, "esquec": 6, "table_nam": 6, "consegu": 6, "otimiz": 6, "rows_list": 6, "first_row_dict": 6, "themselv": [6, 8], "allowed": [6, 7, 11, 12], "rows1": 6, "rows2": 6, "uni\u00e3": 6, "rows3": 6, "remo\u00e7\u00e3": 6, "intersec\u00e7\u00e3": 6, "in\u00fatil": 6, "manipul": 6, "inalter": 6, "origin": 6, "signific": [6, 8], "\u00f3bvi": [6, 8], "cuj": 6, "element": [6, 8, 9, 11, 13, 15], "validad": 6, "cache_db_select": 6, "cache\u00e1vel": 6, "falt": 6, "aceler": 6, "calcul": 6, "unit_pric": 6, "quantity": [6, 11], "total_pric": 6, "rid": 6, "99": 6, "9": [6, 7, 11, 13, 14], "95": 6, "1l": 6, "retrieval": 6, "wik": [6, 7], "searching": [6, 9], "normalized": 6, "evaluated": [6, 7], "subse\u00e7\u00e3": 6, "dif": 6, "daquel": 6, "se\u00e7\u00e3": 6, "discounted_total": 6, "discount": 6, "impl\u00edcit": 6, "pens": 6, "niss": 6, "percentual": 6, "dig": 6, "15": [6, 11, 12, 13], "appe": [6, 11], "cont\u00eain": 6, "instanci": 6, "myvirtualfields": 6, "virtualfields": 6, "order_it": 6, "agir": [6, 9], "setvirtualfields": 6, "myvirtualfields1": 6, "discounted_unit_pric": 6, "90": [6, 7], "myvirtualfields2": 6, "discounted_total_pric": 6, "lazy_total_pric": 6, "ilustr": [6, 8], "owner": [6, 11], "intended": [6, 15], "ex": 6, "c\u00edclic": 6, "insir": 6, "boat": 6, "sho": 6, "adquir": 6, "jun\u00e7\u00e3": [6, 12], "transparent": [6, 8, 11], "si": [6, 13], "unid": 6, "owner_id1": 6, "owner_id2": 6, "with_al": 6, "particip": 6, "esquerd": [6, 13], "jun\u00e7\u00f5": 6, "pertencent": 6, "propriet\u00e1ri": 6, "incorpor": 6, "clar": 6, "igual": [6, 7], "pr\u00f3pri": [6, 13], "ajust": 6, "barc": 6, "intermedi\u00e1r": 6, "ownership": 6, "reescrit": 6, "co": [6, 11], "propriet\u00e1r": 6, "vias": 6, "persons_and_things": 6, "rela\u00e7\u00f5": 6, "father_id": 6, "mother_id": 6, "deriv": 6, "fid": 6, "mid": 6, "claud": 6, "fath": 6, "moth": 6, "AS": 6, "opt\u00e1m": 6, "distin\u00e7\u00e3": 6, "comunic": 6, "diferenc": 6, "sutil": 6, "errad": 6, "corret": 6, "event": 6, "event_tim": 6, "gravidad": 6, "severity": 6, "Como": [6, 16], "varredur": 6, "inje\u00e7\u00e3": 6, "xss": [6, 8, 9], "scan": 6, "injection": 6, "unauthorized": 6, "personag": 6, "sinal": 6, "wild": 6, "card": 6, "sequ\u00eanc": 6, "ansi": 6, "COMO": 6, "sens\u00edvel": 6, "case_sensitiv": 6, "aproxim": 6, "meaning": [6, 11, 12], "value1": 6, "value2": 6, "grau": 6, "apoi": 6, "gost": 6, "2018": 6, "aninh": [6, 9], "bad_days": 6, "jonathan": 6, "nested_select": 6, "m\u00e9d": 6, "estam": 6, "43": 6, "substring": [6, 11], "pux": 6, "sysus": 6, "pow": [6, 15], "coa": 6, "matem\u00e1t": 6, "resgat": 6, "dumpfil": 6, "converting": 6, "produc": [6, 9, 11, 12], "newlin": [6, 11], "export_to_csv_fil": 6, "explict": 6, "exporting": 6, "importing": 6, "finds": 6, "assigned": [6, 11, 12, 14], "ids": 6, "restaur": 6, "somefil": 6, "field3": 6, "separ": [6, 13], "extrem": 6, "despej": 6, "suficient": [6, 13], "ter\u00e3": 6, "nid": 6, "c\u00f3p": 6, "mescl": 6, "acompanh": 6, "64": [6, 8, 15], "stringi": 6, "set_head": 6, "getvalu": 6, "import_and_sync": 6, "_type": [6, 9, 11, 15], "_nam": [6, 9, 11, 15], "vars": [6, 9, 11, 14], "rpc": 6, "nel": 6, "rotul": 6, "uuids": 6, "preocup": 6, "thead": 6, "tr": 6, "th": 6, "tbody": 6, "w2p_odd": 6, "odd": [6, 8], "td": 6, "w2p_even": 6, "easily": [6, 8, 9, 11, 13], "f": [6, 12, 13, 14, 15], "brut": 6, "quotech": 6, "aspas": 6, "cota\u00e7\u00e3": 6, "quote_minimal": 6, "oufil": 6, "quote_nonnumeric": 6, "35": 6, "description": [6, 7, 11, 12], "2013": 6, "oficial": 6, "itens": 6, "escap": [6, 8, 9], "is_in_set": 6, "toy": 6, "car": 6, "products": 6, "costum": 6, "requisit": [6, 16], "particular": 6, "normaliz": 6, "restri\u00e7\u00e3": 6, "got": 6, "v\u00edrgul": 6, "leitur": 6, "gend": 6, "doctor": 6, "specialization": 6, "fict\u00edc": 6, "is_activ": 6, "created_on": 6, "created_by": 6, "modified_by": 6, "payment": 6, "amount": 6, "princ\u00edpi": [6, 16], "activ": [6, 12], "herd": 6, "certifiqu": [6, 10], "accomplished": [6, 12, 14], "anyobj": 6, "obj": [6, 8], "dumps": [6, 15], "loads": [6, 15], "myobj": 6, "aid": 6, "myobjnam": 6, "accomplish": 6, "sqlcustomtyp": 6, "seis": 6, "_before_insert": 6, "_after_insert": 6, "_before_updat": 6, "_after_updat": 6, "_before_delet": 6, "_after_delet": 6, "acrescent": 6, "ressalv": 6, "pprint": 6, "callback": [6, 12, 15], "before_insert": 6, "after_insert": 6, "oprow": 6, "before_updat": 6, "after_updat": 6, "before_delet": 6, "after_delet": 6, "especializ": 6, "_antes_": 6, "dispar": 6, "infinit": 6, "update_naiv": 6, "schem": [6, 11], "relationships": 6, "deletions": 6, "known": [6, 8], "cascading": 6, "informed": 6, "consequenc": [6, 11, 15], "deletion": 6, "enable_record_versioning": 6, "stored_it": 6, "ocult": [6, 11], "padroniz": 6, "vers\u00f5": 6, "_enable_record_versioning": 6, "archive_db": 6, "archive_nam": 6, "stored_item_archiv": 6, "current_record": 6, "grav": 6, "escond": 6, "generaliz": 6, "tenancy": 6, "blog_post": 6, "subject": [6, 7, 12], "post_text": 6, "is_public": 6, "posts": 6, "p\u00fablic": 6, "_common_filt": 6, "fras": 6, "visualiz": 6, "ignore_common_filters": [6, 11], "common_filters": 6, "suponh": 6, "enderec": 6, "ip": [6, 11], "ip2int": 6, "sv": 6, "ipv4": [6, 11], "sp": 6, "split": [6, 7, 8, 11], "iip": 6, "int2ip": 6, "iv": 6, "ov": 6, "divmod": 6, "256": 6, "nativ": 6, "encod": 6, "decod": 6, "websit": [6, 15], "ipaddr": 6, "wikiped": [6, 7], "91": 6, "198": 6, "174": 6, "192": [6, 11], "172": [6, 11], "217": 6, "11": [6, 11], "74": 6, "125": 6, "65": 6, "207": 6, "97": 6, "227": 6, "239": 6, "f\u00e1bric": 6, "Seu": 6, "quant": 6, "marked": 6, "across": [6, 8], "v\u00e3": 6, "fug": [6, 8], "fas": 6, "db_a": 6, "db_b": 6, "simultan": 6, "distributed_transaction_commit": 6, "desfaz": 6, "possibil": 6, "suced": 6, "estiv": 6, "mydb": 6, "font": [6, 8, 11, 13], "cam": [6, 10], "abstra\u00e7\u00e3": 6, "2010": 6, "connectionpool": 6, "baseadapt": 6, "extends": [6, 8, 15], "se\u00e7\u00f5": 6, "conf": 6, "myvalu": 6, "deleg": 6, "_adapt": 6, "_listify": 6, "list_of_fields": 6, "constr\u00f3": 6, "book": 6, "sqliteadapt": 6, "jdbcsqliteadapt": 6, "mysqladapt": 6, "postgresqladapt": 6, "jdbcpostgresqladapt": 6, "oracleadapt": 6, "mssqladapt": 6, "mssql2adapt": 6, "mssql3adapt": 6, "mssql4adapt": 6, "firebirdadapt": 6, "firebirdembeddedadapt": 6, "informixadapt": 6, "db2adapt": 6, "ingresadapt": 6, "ingresunicodeadapt": 6, "googlesqladapt": 6, "nosqladapt": 6, "googledatastoreadapt": 6, "cubridadapt": 6, "teradataadapt": 6, "sapdbadapt": 6, "couchdbadapt": 6, "imapadapt": 6, "mongodbadapt": 6, "verticaadapt": 6, "sybaseadapt": 6, "char": 6, "varch": 6, "longtext": 6, "credential_decod": 6, "pool_connection": 6, "foreign_key_checks": 6, "sql_mod": 6, "no_backslash_escap": 6, "lastrowid": 6, "last_insert_id": 6, "fetchon": 6, "olhand": 6, "couchdb": 6, "ibm_db_dbi": 6, "db2ibm": 6, "db2pyodbc": 6, "firebird_embedded": 6, "firebirdembedded": 6, "googlemysql": 6, "googledatastor": 6, "googlepostgr": 6, "googlesql": 6, "informixs": 6, "ingresu": 6, "ingresunicod": 6, "jdbc": 6, "jdbcpostgr": 6, "jdbcsqlit": 6, "mong": 6, "mssql1": 6, "mssql2": 6, "mssql1n": 6, "mssql3n": 6, "mssql4n": 6, "mssqln": 6, "postgres2": 6, "postgrenew": 6, "postgrepsyconew": 6, "postgres3": 6, "postgreboolean": 6, "postgrepsycoboolean": 6, "postgrepsyc": 6, "pytds": 6, "sap": 6, "spatialit": 6, "vertic": 6, "parsed": 6, "obtained": 6, "sqladapt": 6, "recognized": 6, "mysqldv": 6, "dropping": 6, "altering": 6, "remain": [6, 11], "invisibl": 6, "decid": [6, 11, 13], "reinstat": 6, "fail": [6, 8, 11], "rebuilt": 6, "awar": 6, "extract": [6, 11], "cient": 6, "failur": [6, 11, 15], "unfortunat": 6, "prevented": 6, "fixed": [6, 14], "aftermath": 6, "migrated": 6, "corruption": 6, "migrating": [6, 14], "deleting": [6, 13], "corrupted": 6, "py4web_filesyst": 6, "fetch": [6, 14, 15], "reforc": 6, "raz\u00f5": 6, "superseeded": 6, "obsolet": 6, "circul": 6, "bug": 6, "on_delete_action": 6, "NO": 6, "alcanc": 6, "agreg": 6, "run_in_transaction": 6, "seq\u00fcenc": 6, "liststringproperty": 6, "restful": [7, 12], "cit0801": 7, "inspired": 7, "graphql": 7, "cit0802": 7, "less": [7, 11, 14], "powerful": [7, 12, 14], "spirit": 7, "easi": [7, 8], "denormaliz": 7, "policy": 7, "impli": 7, "disabled": [7, 9, 11], "fields": [7, 11, 12, 13, 14, 16], "specifications": 7, "might": [7, 11], "superhero": 7, "isdir": [7, 11, 13], "job": [7, 11, 13], "strength": 7, "entri": [7, 11, 13], "clark": [7, 13], "kent": [7, 13], "journalist": [7, 13], "park": [7, 13], "photograph": [7, 13], "bruc": [7, 13], "wayn": [7, 13], "ceo": [7, 13], "spiderman": [7, 13], "batman": [7, 11, 13], "flight": 7, "speed": [7, 8], "durability": 7, "75": 7, "80": [7, 11], "70": 7, "allowed_patterns": 7, "reasons": 7, "rec_id": 7, "allow": [7, 8, 9, 11, 12, 13, 15], "deny": 7, "record_id": [7, 15], "get_vars": [7, 14], "post_vars": [7, 14], "patterns": 7, "pattern": 7, "expost": 7, "diagr": 7, "interpreting": 7, "posted": 7, "formdat": 7, "eq": 7, "gt": [7, 9], "queried": 7, "sup": 7, "her\u00f3": 7, "ident": 7, "refers": 7, "superpotent": 7, "preceding": 7, "linked": 7, "v\u00f4o": 7, "said": 7, "record": [7, 11, 12, 14, 15], "equal": [7, 11, 12, 15], "modifiers": 7, "obvious": [7, 8, 12], "status": 7, "200": [7, 11, 14, 15], "2019": 7, "05": 7, "19t05": 7, "38": 7, "00": 7, "132635": 7, "api_version": 7, "2021": 7, "01": 7, "04t07": 7, "466030": 7, "regex": [7, 9, 11], "post_writabl": 7, "referenced_by": 7, "put_writabl": 7, "178974": 7, "desnormaliz": 7, "renom": 7, "123218": 7, "recolh": [7, 13], "559918": 7, "201988": 7, "322494": 7, "readability": 7, "powers": 7, "309903": 7, "355181": 7, "34": 7, "974953": 7, "405515": 7, "366288": 7, "451907": 7, "453020": 7, "iso": 7, "8601": 7, "matching": [7, 9, 11], "representational_state_transf": 7, "distinct": [8, 11], "rendering": [8, 9], "reno": 8, "plus": [8, 12, 13], "minor": [8, 14], "trickery": 8, "seamlessly": 8, "squar": 8, "brackets": [8, 11], "embedded": [8, 11], "angle": 8, "editors": 8, "mix": 8, "soon": [8, 15], "bracket": 8, "separating": [8, 11], "embedding": 8, "indented": 8, "according": 8, "rul": [8, 11, 13], "un": [8, 9, 10, 15], "indentation": 8, "blocks": 8, "ending": 8, "colon": 8, "beginning": [8, 11, 12], "palavr": [8, 9, 10], "emacs": 8, "divis\u00e3": 8, "bloc": [8, 9], "indent": 8, "br": [8, 9], "report": 8, "debugged": 8, "dom": [8, 16], "inspector": 8, "introduz": 8, "mediant": 8, "corp": [8, 9], "interior": 8, "p\u00e1gin": [8, 9, 13, 16], "vulner": 8, "transparently": 8, "replaced": [8, 9, 11, 15], "dummyrespons": 8, "practic": [8, 11], "editing": [8, 9, 11, 12, 13], "new_app": [8, 9], "iter": 8, "ul": [8, 11, 12, 15], "li": [8, 11, 12, 15], "apresent": 8, "condicion": 8, "randint": [8, 12], "h2": [8, 11], "45": [8, 11], "encerr": 8, "incorret": 8, "divisibl": [8, 11], "statements": [8, 11], "division": [8, 9], "excep\u00e7\u00e3": 8, "ol\u00e1": 8, "itemize1": 8, "href": [8, 9, 12, 13], "itemize2": 8, "exact": [8, 14], "represent": [8, 9, 11], "pedac": 8, "frent": 8, "terminat": [8, 15], "statement": 8, "modifying": 8, "tre": [8, 11], "foot": 8, "convention": [8, 11, 14], "minimalist": [8, 14], "minimalist_pag": 8, "extended": 8, "titl": [8, 11, 15], "recursively": 8, "resulting": [8, 11, 15], "bytecod": 8, "pyc": 8, "entir": [8, 14, 15], "inserted": 8, "sidebar_enabled": 8, "hom": 8, "excerpt": 8, "sideb": 8, "assignment": 8, "gets": [8, 12], "anywher": [8, 14], "worth": 8, "though": 8, "impos": 8, "limitation": 8, "noted": 8, "determined": [8, 11], "compiling": 8, "significant": 8, "avoided": 8, "some_condition": 8, "this_templat": 8, "that_templat": 8, "compilation": 8, "layouts": [8, 13], "encapsulat": [8, 9], "commonality": 8, "footers": 8, "menus": [8, 11], "mysideb": 8, "contents": [8, 9, 15], "predefin": 8, "enclosing": 8, "over": [8, 13, 15], "riding": 8, "consistency": 8, "desir": 8, "substitutions": 8, "ships": 8, "doctyp": [8, 13], "viewport": 8, "width": [8, 11], "devic": 8, "initial": [8, 11], "rel": [8, 13], "icon": [8, 13], "aaabaaeaaqeaaaeaiaawaaaafgaaacgaaaabaaaaagaaaaeaiaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaapaaaaa": 8, "stylesheet": [8, 13], "cdnjs": [8, 13], "cloudflar": [8, 13], "ajax": [8, 13, 15], "libs": [8, 9, 13], "awesom": [8, 13], "14": [8, 11, 13], "min": [8, 11, 13], "integrity": 8, "sha512": [8, 11], "1pkogiy59xj8co8": 8, "ne6fz": 8, "loazkjy": 8, "ky8iq0g4b3cyey6wyhn3yt9pw0xpsrivlkmxe40ptknxrlnz9": 8, "fkdaog": 8, "crossorigin": 8, "margin": [8, 15], "top": [8, 11, 12], "16px": 8, "8em": [8, 15], "page_head": 8, "customiz": [8, 11, 13], "navigation": [8, 15], "bar": [8, 13], "nav": 8, "black": [8, 11], "Do": [8, 11, 13, 16], "touch": 8, "hamburg": 8, "checkbox": [8, 9], "left": [8, 11, 13, 15], "menu": [8, 11, 12], "page_left_menu": 8, "navb": [8, 12], "profil": [8, 12, 14], "change_password": [8, 12], "flash": [8, 15, 16], "padded": [8, 14], "contect": 8, "mad": [8, 11, 13], "gott": 8, "page_scripts": 8, "scripts": [8, 9], "few": [8, 12, 15], "html5": 8, "58": 8, "accordingly": 8, "54": 8, "123": [9, 11], "myclass": 9, "thisisatest": 9, "programmatically": [9, 11], "positional": 9, "interpreted": 9, "contained": [9, 11, 13], "named": 9, "dicion\u00e1ri": [9, 10, 11], "metatag": 9, "tagg": 9, "xmlescap": 9, "expressions": [9, 11, 15], "prest": 9, "lt": 9, "strings": [9, 11, 13], "equivalently": 9, "shell": 9, "concatenating": 9, "rela\u00e7\u00e3": 9, "ab": [9, 11], "yb": 9, "h\u00edfens": 9, "_dat": 9, "collapsibl": 9, "hyphen": 9, "notation": 9, "pairs": 9, "dinam": 9, "soap": 9, "whatev": [9, 15], "_xmlns": 9, "xmlns": 9, "renderiz": 9, "insegur": 9, "entered": 9, "scripting": 9, "visitors": [9, 11], "injections": 9, "permitted_tags": 9, "allowed_attribut": 9, "blockquot": 9, "target": [9, 15], "alt": 9, "colspan": 9, "assistent": 9, "_bgcolor": 9, "bgcolor": 9, "concatenat": 9, "bold": 9, "insist": 9, "_action": 9, "_method": 9, "headings": [9, 13], "subheadings": 9, "cabec": [9, 13], "tagging": [9, 12], "it\u00e1l": 9, "embed": 9, "_src": 9, "png": [9, 11], "_alt": 9, "inclus\u00e3": 9, "est\u00e1t": [9, 16], "envi": [9, 13], "r\u00e1di": 9, "_valu": [9, 11, 15], "radi": [9, 11], "buttons": [9, 11, 13, 15], "_checked": 9, "checked": [9, 11], "stands": 9, "ordered": 9, "_selected": 9, "thank": 9, "ok": [9, 14], "pr\u00e9": [9, 13, 16], "prefer": 9, "listagens": 9, "marca\u00e7\u00e3": 9, "whit": [9, 15], "Estas": 9, "junt": [9, 13], "matriz": 9, "posicion": 9, "rows": [9, 11, 13, 14], "oposi\u00e7\u00e3": 9, "rodap": 9, "_cols": 9, "_rows": 9, "cols": 9, "monoespac": 9, "unordered": 9, "generator": 9, "_c": 9, "suprim": 9, "aut": 9, "fechament": 9, "termin": 9, "agrad": 9, "retribu": 9, "0x7fa533ff7640": 9, "kargs": 9, "supplied": 9, "first_only": 9, "z": [9, 11], "jquery": [9, 11, 15], "accepting": 9, "selector": [9, 15], "selector1": 9, "selector2": 9, "selectorn": 9, "descendant": 9, "ancestor": 9, "equals": [9, 12], "unquoted": 9, "_u": 9, "_disabled": 9, "specifying": 9, "abc": [9, 11], "xyz": [9, 11], "callabl": [9, 11], "el": 9, "searched": [9, 13], "textual": 9, "efg": 9, "factori": 9, "injecting": 9, "timeoffset": 9, "sidebar_menu": 9, "i18n": 10, "p10n": 10, "fr": 10, "dog": [10, 11, 15], "tantissim": 10, "superior": 10, "express\u00f5": 10, "plural": 10, "chec": 10, "bed": 10, "postel": 10, "cachorr": 10, "deform": 10, "reserv": 10, "max": [10, 11, 15], "idiom": 10, "envolt": 10, "find_match": 10, "update_languag": 10, "supported": [10, 11, 12], "german": 10, "known_expressions": 10, "high": [11, 12], "deletabl": [11, 13], "formstyl": [11, 13, 15], "formstyledefault": [11, 13], "dbi": 11, "keep_valu": 11, "form_nam": 11, "hidden": [11, 15], "csrf_session": 11, "csrf_protection": 11, "lifespan": 11, "signing_inf": 11, "apag": 11, "disallow": 11, "renders": 11, "formstylebulm": [11, 13, 15], "formstylebootstrap4": 11, "grava\u00e7\u00f5": 11, "submet": 11, "validity": 11, "form_minimal": 11, "product_nam": 11, "product_quantity": 11, "not_accepted": 11, "form_exampl": 11, "intentionally": 11, "nor": 11, "management": 11, "form_basic": 11, "realnam": 11, "univers": 11, "dc": [11, 12], "comics": 11, "marvel": 11, "dual": 11, "explain": 11, "row": [11, 13, 15], "bottom": 11, "choos": [11, 12], "dropdown": [11, 13, 15], "prototyping": 11, "hand": [11, 15], "your_app": 11, "form_upload": 11, "required_fold": 11, "hashed": 11, "plugins": [11, 15], "checkboxwidget": 11, "datetimewidget": 11, "fileuploadwidget": 11, "listwidget": 11, "passwordwidget": 11, "radiowidget": 11, "selectwidget": 11, "textareawidget": 11, "improved": 11, "form_widgets": 11, "subclassing": 11, "improving": [11, 12], "form_custom_widgets": 11, "mycustomwidget": 11, "placehold": [11, 15], "no_tabl": [11, 15], "s_": [11, 15], "_placehold": [11, 15], "_titl": [11, 15], "_style": [11, 15], "mystyle": 11, "foreground": 11, "manipulated": 11, "manipulat": 11, "modify": [11, 13, 15], "granulary": 11, "submission": [11, 15], "inserting": 11, "begin": [11, 13], "detail_fields": 11, "frequently": 11, "redundancy": 11, "types": 11, "clash": 11, "isn": [11, 13], "ensur": 11, "surrounding": 11, "controls": 11, "correctly": 11, "stuff": [11, 13], "inject": [11, 16], "_onclick": 11, "doh": 11, "cancel": [11, 15], "attrs": [11, 13, 15], "history": 11, "drop": 11, "down": [11, 15], "lookups": 11, "selection": 11, "constructors": 11, "error_messag": 11, "fist": 11, "wrap": 11, "fill": [11, 15], "translation": [11, 14], "letters": 11, "numbers": 11, "alphanumeric": 11, "converts": 11, "us": 11, "phon": 11, "strict": 11, "fits": 11, "boundari": 11, "inputs": [11, 15], "maxsiz": 11, "255": 11, "minsiz": 11, "minimum": 11, "short": 11, "16": 11, "1kb": 11, "1mb": 11, "1048576": 11, "1024": 11, "cgi": 11, "fieldstorag": 11, "intuitively": 11, "rejects": 11, "breaks": 11, "syntactic": 11, "domain": [11, 12], "rfc": 11, "2616": 11, "semantic": [11, 12], "prepend": [11, 15], "front": [11, 15], "abbreviated": 11, "ca": 11, "2396": 11, "customizabl": [11, 13], "allowed_schem": 11, "exclud": 11, "lacking": 11, "rejected": 11, "prepended": [11, 14], "prepend_schem": 11, "prepending": 11, "internationalized": 11, "idn": 11, "3490": 11, "asci": 11, "punycod": 11, "3492": 11, "bit": 11, "beyond": 11, "standards": [11, 13], "hex": 11, "0x4e86": 11, "becom": 11, "4e": 11, "86": 11, "ftps": 11, "maxlen": 11, "slug": 11, "validated": 11, "repeated": 11, "dash": 11, "native_json": 11, "unchanged": 11, "hh": 11, "mm": 11, "ss": 11, "formats": 11, "yyyy": 11, "dd": 11, "symbols": 11, "symbol": 11, "year": [11, 15], "century": 11, "1963": 11, "day": 11, "month": 11, "28": 11, "08": 11, "aug": 11, "august": 11, "hour": 11, "24": 11, "clock": 11, "12": 11, "am": 11, "pm": 11, "minut": 11, "59": 11, "2008": 11, "2009": 11, "passwords": 11, "neith": 11, "strip": 11, "empty_regex": 11, "deprecated": [11, 15], "express": 11, "arrang": 11, "backward": 11, "compatibility": 11, "expressed": 11, "logical": 11, "terms": 11, "dot": 11, "fall": 11, "comparison": 11, "arithmetic": 11, "limits": 11, "internationaliz": 11, "decimals": 11, "floating": 11, "definit": 11, "ie": 11, "numerical": 11, "conversion": [11, 16], "filled": 11, "acceptanc": 11, "descriptiv": 11, "apple": 11, "banan": 11, "cherry": 11, "alphabetically": 11, "labels": 11, "sort": 11, "hulk": 11, "06": 11, "multiselect": 11, "exclusiv": [11, 12], "specials": 11, "forbidden": 11, "digit": [11, 12], "obviously": 11, "clev": 11, "enough": [11, 12], "cle": 11, "entropy": 11, "53": 11, "implicitly": 11, "performs": 11, "iterations": 11, "pbkdf2": 11, "byte": 11, "md5": 11, "hmac": 11, "thisisthekey": 11, "useless": [11, 14], "constant": 11, "mysaltvalu": 11, "somewhat": 11, "min_length": 11, "alg": 11, "consequently": 11, "invalidating": 11, "valued": 11, "emails": 11, "filter_in": 11, "split_emails": 11, "findall": 11, "mailt": 11, "customization": 11, "textar": 11, "sqlforms": 11, "blanks": 11, "operat": 11, "stand": 11, "onvalidation": 11, "accepts": 11, "emails_onvalidation": 11, "acts": 11, "attempted": 11, "through": 11, "dimensions": 11, "height": [11, 13, 15], "bmp": 11, "gif": 11, "jpeg": 11, "imaging": 11, "parts": 11, "taken": 11, "source1": 11, "extensions": 11, "lowercas": 11, "bypass": [11, 12], "200x200": 11, "pixels": 11, "extension": [11, 14], "crit": 11, "lastdot": 11, "separator": 11, "indicat": [11, 14], "tar": 11, "gz": 11, "insensitiv": 11, "thumbnail": 11, "jpg": 11, "older": 11, "regexlib": 11, "minip": 11, "maxip": 11, "is_localhost": 11, "is_privat": 11, "is_automatic": 11, "lowest": 11, "highest": 11, "flag": 11, "168": 11, "integers": 11, "boundary": 11, "199": 11, "forbid": 11, "meanings": 11, "169": 11, "254": 11, "network": [11, 12], "is_link_local": 11, "is_reserved": 11, "is_multicast": 11, "is_routeabl": 11, "is_6to4": 11, "is_tered": 11, "subnets": 11, "ipv6": 11, "allocated": 11, "networks": [11, 12], "fe80": 11, "ietf": 11, "multicast": 11, "ff00": 11, "6to4": 11, "2002": 11, "tered": 11, "2001": 11, "forcing": 11, "subnet": 11, "memb": [11, 12], "fb00": 11, "heading": 11, "blank": [11, 13], "removal": 11, "456": 11, "123456": 11, "synops": 11, "his": 11, "requirement": 11, "probability": 11, "rac": 11, "occurs": 11, "operationalerror": 11, "inserts": 11, "dbset": 11, "allowed_overrid": 11, "persons": 11, "days": 11, "registration_stamp": 11, "timedelt": 11, "value_field": 11, "representing_field": 11, "fourth": 11, "ten": 11, "selections": 11, "represented": 11, "orderby": [11, 12, 13, 15], "groupby": 11, "sorting": 11, "usefull": 11, "wishing": 11, "occasionally": 11, "_and": 11, "owners": 11, "subset": 11, "check_nonnegative_quantity": 11, "vital": 12, "multius": 12, "interchangeably": 12, "proc": 12, "confirms": 12, "say": 12, "guidelin": 12, "approv": 12, "step": [12, 14], "adiant": 12, "bloqu": 12, "nomeaplic": 12, "request_reset_password": 12, "reset_password": 12, "verify_email": 12, "sair": 12, "change_email": 12, "pr\u00f3pr": [12, 13], "allowed_actions": 12, "turn": [12, 13, 15], "verification": 12, "activated": 12, "successfully": 12, "challeng": 12, "submitting": 12, "correct": 12, "instantiation": [12, 13], "two_factor_filt": 12, "bypassed": 12, "sampl": 12, "user_outside_network": 12, "ipaddress": 12, "22": 12, "ip_list": 12, "ipv4network": 12, "ipv4address": 12, "mfa": 12, "sends": 12, "send_two_factor_email": 12, "from_address": 12, "youremail": 12, "flow": 12, "two_factor": 12, "endpoint": [12, 15], "_next_url": 12, "auth_plugins": 12, "hierarchical": 12, "saml": 12, "oauth": 12, "ui": 12, "adapt": 12, "exibi\u00e7\u00e3": [12, 13], "pam_plugin": 12, "pamplugin": 12, "register_plugin": 12, "vir": 12, "authenticat": 12, "directory": 12, "ldap_plugin": 12, "ldapplugin": 12, "ldap_setting": 12, "ad": 12, "base_dn": 12, "cn": 12, "ldap_settings": 12, "ubuntu": 12, "librari": 12, "apt": 12, "libldap2": 12, "libsasl2": 12, "oauth2googl": 12, "client_id": 12, "client_secret": 12, "callback_url": 12, "segred": 12, "oauth2facebook": 12, "oauth2discord": 12, "discord_client_id": 12, "discord_client_secret": 12, "uri": 12, "discriminator": 12, "mentioned": [12, 15], "verifying": 12, "existenc": 12, "showed": 12, "suffers": 12, "overkill": 12, "tagged_db": 12, "_tag": 12, "tagged_nam": 12, "danc": 12, "teach": 12, "auth_user_tagged_groups": 12, "chars": 12, "footing": 12, "authorized": 12, "displays": [12, 13], "not_authorized": 12, "find_by_tag": 12, "deix": 12, "exerc\u00edci": 12, "has_membership": 12, "school": 12, "physics": 12, "professor": 12, "ensin": 12, "m\u00e9di": 12, "f\u00edsic": 12, "colegial": 12, "creativity": 12, "auth_group": 12, "auth_groups": 12, "zapp": 12, "zap_id": 12, "zap": 12, "belongs": 12, "zapped": 12, "belong": [12, 14], "filtr": [12, 13], "membr": 12, "impersonat": 12, "impersonating": 12, "start_impersonating": 12, "is_impersonating": 12, "stop_impersonating": 12, "capabiliti": [13, 15], "corn": 13, "ston": 13, "exclus\u00e3": 13, "desc": 13, "search_queri": 13, "OU": 13, "search_form": 13, "p\u00f3s": 13, "substitui\u00e7\u00f5": 13, "jpsteil": 13, "grid_tutorial": 13, "advised": 13, "doubt": 13, "finding": 13, "precious": 13, "hints": 13, "grid_class_styl": 13, "gridclassstyl": 13, "gridclassstylebulm": 13, "val": 13, "perfectly": 13, "usabl": 13, "refresh": 13, "icons": 13, "showing": 13, "placing": 13, "maintainabl": 13, "lead": [13, 15], "advanced": [13, 16], "topics": [13, 16], "htmx": [13, 16], "forget": 13, "field_id": 13, "show_id": 13, "editabl": [13, 14], "pre_action_buttons": 13, "post_action_buttons": 13, "auto_process": [13, 15], "rows_per_pag": 13, "include_action_button_text": 13, "search_button_text": 13, "responsibl": 13, "especifiqu": 13, "action_button": 13, "imediat": 13, "estil": 13, "styling": 13, "styles": 13, "utilizing": 13, "during": 13, "fifth": 13, "clickabl": 13, "hid": 13, "modifi": 13, "handling": 13, "por\u00e7\u00f5": 13, "grelh": 13, "primarily": 13, "class_styl": 13, "unfortunately": 13, "bootstrap": 13, "gridactionbutton": 13, "additional_cl": 13, "additional_styl": 13, "override_cl": 13, "override_styl": 13, "append_id": 13, "ignore_attribute_plugin": 13, "naveg": 13, "clic": 13, "fa": 13, "calend": 13, "aul": 13, "mensag": 13, "verdad": 13, "id_field_nam": 13, "id_valu": 13, "querystring": 13, "defining": 13, "improvement": 13, "10px": 13, "foo": 13, "filter_out": 13, "foreign": 13, "company": 13, "is_null_or": 13, "empres": 13, "qued": 13, "empreg": 13, "joined": 13, "employe": 13, "joins": [13, 16], "clicked": [13, 15], "sorted": 13, "search_text": 13, "far": [13, 15], "grids": 13, "antig": 14, "similariti": 14, "identical": 14, "light": 14, "predetermined": 14, "debuggers": 14, "ides": 14, "constraining": 14, "mann": 14, "admin": 14, "locat": 14, "my_url_path": 14, "assumed": 14, "postfix": 14, "matters": 14, "expected": 14, "wrappers": 14, "hard": 14, "analogy": 14, "hous": 14, "preprocessing": 14, "postprocessing": 14, "carry": 14, "underlying": 14, "preguic": 14, "dangerous": 14, "pyweb": 14, "ability": 14, "extensibl": 14, "lacks": 14, "requires_": 14, "mean": 14, "establishing": 14, "attaching": 14, "labeling": 14, "assigning": 14, "rocket": 14, "301": 14, "sophisticated": 14, "dismissal": 14, "file_path": 14, "csv": 14, "app_fold": 14, "requires_login": 14, "user_email": 14, "retrieved": 14, "big": 14, "decorated": 14, "websocket": 15, "async": 15, "play": 15, "compliant": 15, "great": 15, "react": 15, "angul": 15, "complexity": 15, "systems": 15, "reaping": 15, "benefits": 15, "ecosyst": 15, "difficult": 15, "road": 15, "reactivity": 15, "emerging": 15, "complexiti": 15, "technically": 15, "transitions": 15, "sockets": 15, "hypertext": 15, "cit1601": 15, "frontends": 15, "integration": 15, "coupl": 15, "hx": 15, "_hx": 15, "url_to_post_t": 15, "submitted": 15, "started": 15, "htmx_form_dem": 15, "htmx_list": 15, "htmx_form": 15, "cancel_attrs": 15, "sidec": 15, "unpkg": 15, "sh": 15, "functional": 15, "maintenanc": 15, "navigat": 15, "anchor": 15, "fancy": 15, "confirmation": 15, "htmx_grid": 15, "attributes_plugin": 15, "attributespluginhtmx": 15, "new_sidec": 15, "edit_sidec": 15, "confirmations": 15, "widgets": [15, 16], "dropdowns": 15, "functools": 15, "params": 15, "autocomplete_query": 15, "fk_tabl": 15, "ktabl": 15, "fk_field": 15, "kfield": 15, "_autocomplete_search_fields": 15, "sf": 15, "_search": 15, "len": 15, "data_label": 15, "htmxautocompletewidget": 15, "simple_query": 15, "pop": 15, "hold": 15, "hidden_input": 15, "hidden_div": 15, "keyup": 15, "delay": 15, "500ms": 15, "s_autocomplete_results": 15, "indicator": 15, "vals": 15, "search_valu": 15, "s_search": 15, "_autocomplet": 15, "onload": 15, "elt": 15, "queryselector": 15, "onkeydown": 15, "check_": 15, "s_down_key": 15, "keycod": 15, "s_autocomplet": 15, "focus": 15, "selectedindex": 15, "formatt": 15, "formstylefactory": 15, "class_inner_exceptions": 15, "vendor": 15, "vendor_typ": 15, "product_record": 15, "earli": 15, "whichev": 15, "wish": 15, "overriding": 15, "vendors": 15, "limiting": 15, "subqueri": 15, "clearly": 15, "prototyp": 15, "var": 15, "supporting": 15, "selected_elements": 15, "queryselectorall": 15, "array": 15, "eval": 15, "sandbox": 15, "math": 15, "wrapp": 15, "recereived": 15, "get_cooki": 15, "extracts": 15, "register_vue_component": 15, "lazily": 15, "res": 15, "upload_help": 15, "bind": 15, "my_id": 15, "reimplementation": 15, "basically": 15, "translat": 15, "clientsid": 15, "serversid": 15, "debounc": 15, "stepping": 15, "setinterval": 15, "500": 15, "skip": 15, "implementations": 15, "delaying": 15, "200ms": 15, "onclick": 15, "1000ms": 15, "tags_inputs": 15, "comm": 15, "browsers": 15, "jsl": 15, "tags_input": 15, "zip_cod": 15, "freetext": 15, "safar": 15, "edge": 15, "datalist": 15, "firfox": 15, "undocumented": 15, "padding": 15, "inlin": 15, "block": 15, "bord": 15, "radius": 15, "100px": 15, "111111": 15, "3em": 15, "2em": 15, "2px": 15, "opacity": 15, "capitaliz": 15, "tag_input": 15, "score_input": 15, "scor": 15, "new_password": 15, "poor": 15, "man": 15, "trapped": 15, "component_1": 15, "mycomponent": 15, "blink": 15, "loading": 15, "serving": 15, "envelop": 15, "moreov": 15, "other_pag": 15, "acknowledgments": 16, "dic": 16, "sugest\u00f5": 16, "contribu": 16, "coloc": 16, "understanding": 16, "plataform": 16, "proced": 16, "corr": 16, "installations": 16, "fixur": 16, "urlsign": 16, "caveats": 16, "memoiz": 16, "introduction": 16, "migra\u00e7\u00f5": 16, "raw": 16, "sql": 16, "Comando": 16, "computed": 16, "virtual": 16, "relations": 16, "export": 16, "caracter\u00edst": 16, "avanc": 16, "pegadinh": 16, "polic": 16, "overview": 16, "customizing": 16, "asynci": 16, "genindex": 16, "modindex": 16}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"O": [0, 1, 3, 4, 5, 6], "\u00e9": 0, "py4web": [0, 1, 6, 14, 15, 16], "acknowledgments": 0, "ajud": 1, "recurs": [1, 6], "dic": 1, "Este": 1, "manual": [1, 16], "grup": 1, "googl": [1, 2, 6, 12], "the": [1, 2, 4, 5, 6, 7, 11, 13, 15], "discord": [1, 12], "serv": [1, 5, 6, 9], "tutori": 1, "v\u00edd": 1, "As": 1, "font": [1, 2], "github": 1, "sugest\u00f5": 1, "pr\u00e9": [1, 2], "requisit": [1, 2], "Um": [1, 6], "local": [1, 2, 6], "trabalh": 1, "python": 1, "modern": 1, "depur": 1, "vscod": 1, "pycharm": 1, "Como": 1, "contribu": 1, "instal": 2, "coloc": 2, "funcion": 2, "understanding": 2, "design": [2, 11], "plataform": 2, "suport": [2, 6], "proced": 2, "configur": [2, 6], "part": [2, 6], "bin\u00e1ri": 2, "pip": 2, "installing": 2, "using": [2, 5, 8, 9, 12, 13, 15], "virtual": [2, 6], "environment": 2, "global": 2, "melhor": 2, "primeir": [2, 4], "corr": 2, "op\u00e7\u00f5": 2, "linh": 2, "comando": 2, "op\u00e7\u00e3": 2, "call": 2, "new_app": 2, "run": 2, "set_password": 2, "setup": 2, "shell": [2, 6], "version": [2, 6], "special": [2, 11], "installations": 2, "https": 2, "wsgi": 2, "deployment": 2, "on": 2, "gcloud": 2, "aka": 2, "gae": 2, "app": [2, 4], "engin": 2, "implant": 2, "pythonanywher": 2, "dock": 2, "podman": 2, "ubuntu": 2, "dashboard": 3, "A": [3, 6, 9, 11], "p\u00e1gin": [3, 4], "web": [3, 4], "principal": 3, "sess\u00e3": 3, "cri": 4, "aplic": [4, 6], "Do": 4, "princ\u00edpi": 4, "est\u00e1t": 4, "din\u00e2m": 4, "Em": 4, "valor": [4, 6], "retorn": [4, 6], "rot": 4, "objet": 4, "request": 4, "model": [4, 6], "_scaffold": 4, "copying": 4, "watch": 4, "fil": [4, 11, 14], "chang": 4, "fixur": 5, "fixtur": 5, "templat": [5, 8, 13], "inject": [5, 9], "translator": 5, "flash": [5, 14], "session": 5, "client": 5, "sid": [5, 9], "in": [5, 8, 9, 15], "cooki": 5, "memcach": 5, "red": [5, 13], "databas": [5, 6, 11], "anywher": 5, "sharing": 5, "sessions": 5, "condition": 5, "urlsign": 5, "dal": [5, 6], "auth": [5, 12, 14], "caveats": 5, "about": 5, "personaliz": [5, 6, 9, 13], "multipl": [5, 12], "caching": 5, "memoiz": 5, "decor": 5, "convenient": 5, "abstraction": 6, "lay": 6, "introduction": 6, "supported": 6, "quick": 6, "tour": 6, "usand": [6, 13], "stand": 6, "alon": 6, "experiment": 6, "construtor": 6, "assinatur": 6, "strings": 6, "conex\u00e3": 6, "par\u00e2metr": 6, "uri": 6, "pool": 6, "conex\u00f5": 6, "falh": 6, "tentat": 6, "tabel": [6, 16], "preguic": 6, "less": 6, "banc": 6, "dad": 6, "replic": 6, "palavr": 6, "chav": 6, "reserv": 6, "quoting": 6, "cas": 6, "faz": 6, "segur": 6, "outr": 6, "past": 6, "padr\u00e3": 6, "migra\u00e7\u00e3": 6, "commit": 6, "rollback": 6, "tabl": [6, 9], "define_tabl": 6, "id": 6, "not": 6, "sobr": 6, "prim\u00e1r": 6, "plural": 6, "singul": 6, "redefin": 6, "format": [6, 11, 15], "represent": 6, "fich": 6, "rnam": 6, "nom": 6, "real": 6, "primarykey": 6, "par": [6, 8, 14], "leg": 6, "migrat": 6, "fake_migrat": 6, "table_class": 6, "sequence_nam": 6, "trigger_nam": 6, "polymodel": 6, "on_defin": 6, "adicion": 6, "atribut": 6, "camp": [6, 13], "field": [6, 11], "types": 6, "and": [6, 7, 8, 11, 12, 13, 14, 15], "validators": [6, 11], "modific": 6, "temp": 6, "execu": 6, "Mais": 6, "envi": 6, "migra\u00e7\u00f5": 6, "fixa\u00e7\u00e3": 6, "quebr": 6, "resum": 6, "control": 6, "methods": [6, 14], "insert": 6, "query": 6, "set": [6, 11], "rows": 6, "update_or_insert": 6, "validate_and_insert": 6, "validate_and_updat": 6, "drop": 6, "marca\u00e7\u00e3": 6, "registr": 6, "raw": 6, "sql": 6, "executesql": 6, "_lastsql": 6, "temporiz": 6, "consult": 6, "\u00edndic": [6, 16], "generating": 6, "Comando": 6, "select": [6, 9], "selet": 6, "uso": 6, "mem\u00f3r": 6, "inferior": 6, "bas": 6, "iter": 6, "renderiz": 6, "atalh": 6, "obten\u00e7\u00e3": 6, "row": 6, "s": 6, "orderby": 6, "groupby": 6, "limitby": 6, "distinct": 6, "having": 6, "orderby_on_limitby": 6, "join": 6, "left": 6, "cach": 6, "orden": 6, "tend": 6, "distint": 6, "junt": 6, "deix": 6, "oper": 6, "l\u00f3gic": 6, "count": [6, 14], "isempty": 6, "delet": 6, "updat": 6, "express\u00f5": 6, "update_record": 6, "inser": 6, "atualiz": [6, 10], "dicion\u00e1ri": 6, "first": 6, "last": 6, "as_dict": 6, "as_list": 6, "combin": 6, "find": [6, 9], "exclud": 6, "sort": 6, "selects": 6, "computed": 6, "fields": 6, "comput": 6, "virtu": 6, "nov": 6, "estil": 6, "experimental": 6, "velh": 6, "antig": 6, "joins": 6, "relations": 6, "muit": 6, "rela\u00e7\u00e3": 6, "inner": 6, "out": 6, "agrup": 6, "cont": 6, "many": 6, "to": 6, "relation": 6, "aut": 6, "referent": [6, 13, 16], "alias": 6, "lik": 6, "ilik": 6, "regexp": 6, "startswith": 6, "endswith": 6, "contains": 6, "upper": 6, "low": 6, "year": 6, "month": 6, "day": 6, "hour": 6, "minut": 6, "seconds": 6, "belongs": 6, "sum": 6, "avg": 6, "min": 6, "max": 6, "len": 6, "substrings": 6, "Os": [6, 13], "defeit": 6, "coalesc": 6, "coalesce_zer": 6, "export": 6, "import": 6, "csv": 6, "cad": 6, "vez": 6, "tod": 6, "mesm": 6, "sincroniz": 6, "remot": 6, "html": [6, 9], "xml": [6, 9], "caracter\u00edst": 6, "avanc": 6, "list": 6, "type": [6, 11], "heranc": 6, "filter_in": 6, "filter_out": 6, "cham": 6, "inser\u00e7\u00e3": 6, "exclus\u00e3": 6, "cascad": 6, "record": 6, "filtr": 6, "comuns": 6, "tip": 6, "defin": 6, "transa\u00e7\u00e3": 6, "distribu\u00edd": 6, "copi": 6, "db": 6, "pegadinh": 6, "adapt": 6, "sqlit": 6, "mysql": 6, "mssql": 6, "microsoft": 6, "or\u00e1cul": 6, "nosql": 6, "datastor": 6, "restap": 7, "polic": 7, "actions": [7, 12], "get": 7, "practical": 7, "exampl": [7, 11, 13, 14, 15], "respons": 7, "linguag": 8, "yatl": [8, 9], "sintax": 8, "b\u00e1sic": 8, "whil": 8, "if": 8, "elif": 8, "else": 8, "tent": 8, "excet": 8, "finally": 8, "def": 8, "return": [8, 14], "information": 8, "workflow": 8, "extend": 8, "includ": 8, "extending": 8, "variabl": [8, 14], "functions": [8, 11], "block": 8, "sup": 8, "pag": 8, "layout": 8, "standard": [8, 11], "structur": [8, 11], "default": 8, "mobil": 8, "development": 8, "helpers": 9, "overview": 9, "built": 9, "body": 9, "cat": 9, "div": 9, "EM": 9, "form": [9, 11, 14, 15], "h1": 9, "h2": 9, "h3": 9, "h4": 9, "h5": 9, "h6": 9, "head": 9, "i": 9, "img": 9, "input": 9, "label": 9, "li": 9, "ol": 9, "option": 9, "p": 9, "pre": 9, "script": 9, "span": 9, "style": [9, 13], "tr": 9, "td": 9, "tbody": 9, "textar": 9, "th": 9, "thead": 9, "titl": 9, "tt": 9, "ul": 9, "url": 9, "tag": 9, "beautify": 9, "dom": 9, "children": 9, "internacionaliz": 10, "pluraliz": 10, "arquiv": 10, "tradu\u00e7\u00e3": 10, "foruml\u00e1ri": 11, "constructor": 11, "minimal": 11, "without": 11, "basic": [11, 13], "upload": 11, "widgets": 11, "custom": [11, 13], "advanced": [11, 15], "manipulation": 11, "forms": 11, "sidec": 11, "paramet": 11, "valid": 11, "formul\u00e1ri": 11, "text": 11, "is_alphanumeric": 11, "is_low": 11, "is_upp": 11, "is_email": 11, "is_match": 11, "is_length": 11, "is_url": 11, "is_slug": 11, "is_json": 11, "dat": 11, "tim": 11, "is_tim": 11, "is_dat": 11, "is_datetim": 11, "is_date_in_rang": 11, "is_datetime_in_rang": 11, "rang": 11, "equality": 11, "is_equal_t": 11, "is_not_empty": 11, "is_null_or": 11, "is_empty_or": 11, "is_expr": 11, "is_decimal_in_rang": 11, "is_float_in_rang": 11, "is_int_in_rang": 11, "is_in_set": 11, "checkbox": 11, "validation": 11, "dictionari": 11, "tupl": 11, "with": [11, 12, 14], "sorted": 11, "options": 11, "tagging": 11, "complexity": 11, "security": 11, "is_strong": 11, "crypt": 11, "is_list_of": 11, "is_list_of_emails": 11, "any_of": 11, "is_imag": 11, "is_fil": 11, "is_upload_filenam": 11, "is_ipv4": 11, "is_ipv6": 11, "is_ipaddress": 11, "other": 11, "cleanup": 11, "is_not_in_db": 11, "is_in_db": 11, "authentication": 12, "authorization": 12, "interfac": 12, "autentic": 12, "insid": 12, "two": 12, "factor": 12, "two_factor_required": 12, "two_factor_send": 12, "two_factor_tri": 12, "plugins": 12, "pam": 12, "ldap": 12, "oauth2": 12, "facebook": 12, "tags": 12, "etiquet": 12, "permiss\u00f5": 12, "objects": 12, "user": 12, "impersonation": 12, "key": 13, "featur": 13, "grid": [13, 14, 15], "object": [13, 15], "searching": 13, "filtering": 13, "crud": 13, "settings": 13, "columns": 13, "customizing": 13, "a\u00e7\u00e3": 13, "bot\u00f5": 13, "bot\u00e3": 13, "class": 13, "amostr": 13, "callabl": 13, "parameters": 13, "De": 14, "web2py": 14, "simpl": 14, "conversion": 14, "hell": 14, "world": 14, "redirect": 14, "returning": 14, "args": 14, "calling": 14, "setting": 14, "up": 14, "view": 14, "accessing": 14, "OS": 14, "topics": 15, "asynci": 15, "htmx": 15, "usag": 15, "autocomplet": 15, "widget": 15, "utils": 15, "js": 15, "string": 15, "q": 15, "t": 15, "conte\u00fad": 16}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 60}, "alltitles": {"O que \u00e9 py4web?": [[0, "what-is-py4web"]], "Acknowledgments": [[0, "acknowledgments"]], "Ajuda, recursos e dicas": [[1, "help-resources-and-hints"]], "Recursos": [[1, "resources"]], "Este manual": [[1, "this-manual"]], "O grupo Google": [[1, "the-google-group"]], "The Discord server": [[1, "the-discord-server"]], "Tutoriais e v\u00eddeo": [[1, "tutorials-and-video"]], "As fontes no GitHub": [[1, "the-sources-on-github"]], "Dicas e sugest\u00f5es": [[1, "hints-and-tips"]], "Pr\u00e9-requisitos": [[1, "prerequisites"]], "Um local de trabalho python moderna": [[1, "a-modern-python-workplace"]], "Depura\u00e7\u00e3o py4web com VScode": [[1, "debugging-py4web-with-vscode"]], "Depura\u00e7\u00e3o py4web com PyCharm": [[1, "debugging-py4web-with-pycharm"]], "Como contribuir": [[1, "how-to-contribute"]], "Instala\u00e7\u00e3o e coloca\u00e7\u00e3o em funcionamento": [[2, "installation-and-startup"]], "Understanding the design": [[2, "understanding-the-design"]], "Plataformas e pr\u00e9-requisitos suportados": [[2, "supported-platforms-and-prerequisites"]], "Procedimentos de configura\u00e7\u00e3o": [[2, "setup-procedures"]], "Instalando a partir de bin\u00e1rios": [[2, "installing-from-binaries"]], "Instalando a partir de pip": [[2, "installing-from-pip"]], "Installing using a virtual environment": [[2, "installing-using-a-virtual-environment"]], "Instala\u00e7\u00e3o de fonte (globalmente)": [[2, "installing-from-source-globally"]], "Instalando a partir de fonte (localmente)": [[2, "installing-from-source-locally"]], "Melhoramento": [[2, "upgrading"]], "Primeira corrida": [[2, "first-run"]], "Op\u00e7\u00f5es de linha de comando": [[2, "command-line-options"]], "Op\u00e7\u00e3o `` comando call``": [[2, "call-command-option"]], "Op\u00e7\u00e3o `` comando new_app``": [[2, "new-app-command-option"]], "Op\u00e7\u00e3o `` comando run``": [[2, "run-command-option"]], "Op\u00e7\u00e3o `` comando set_password``": [[2, "set-password-command-option"]], "Op\u00e7\u00e3o `` comando setup``": [[2, "setup-command-option"]], "Op\u00e7\u00e3o `` comando shell``": [[2, "shell-command-option"]], "Op\u00e7\u00e3o `` comando version``": [[2, "version-command-option"]], "Special installations": [[2, "special-installations"]], "HTTPS": [[2, "https"]], "WSGI": [[2, "wsgi"]], "Deployment on GCloud (aka GAE - Google App Engine)": [[2, "deployment-on-gcloud-aka-gae-google-app-engine"]], "Implanta\u00e7\u00e3o em PythonAnywhere.com": [[2, "deployment-on-pythonanywhere-com"]], "Deployment on Docker/Podman": [[2, "deployment-on-docker-podman"]], "Deployment on Ubuntu": [[2, "deployment-on-ubuntu"]], "O Dashboard": [[3, "the-dashboard"]], "A p\u00e1gina Web principal": [[3, "the-main-web-page"]], "Sess\u00e3o no Dashboard": [[3, "login-into-the-dashboard"]], "Criando seu primeiro aplicativo": [[4, "creating-your-first-app"]], "Do princ\u00edpio": [[4, "from-scratch"]], "P\u00e1ginas est\u00e1ticas": [[4, "static-web-pages"]], "P\u00e1ginas web din\u00e2micas": [[4, "dynamic-web-pages"]], "Em valores de retorno": [[4, "on-return-values"]], "Rotas": [[4, "routes"]], "O objeto `` request``": [[4, "the-request-object"]], "Modelos": [[4, "templates"]], "The _scaffold app": [[4, "the-scaffold-app"]], "Copying the _scaffold app": [[4, "copying-the-scaffold-app"]], "Watch for files change": [[4, "watch-for-files-change"]], "Fixures": [[5, "fixtures"]], "Using Fixtures": [[5, "using-fixtures"]], "The Template fixture": [[5, "the-template-fixture"]], "The Inject fixture": [[5, "the-inject-fixture"]], "The Translator fixture": [[5, "the-translator-fixture"]], "O fixture flash": [[5, "the-flash-fixture"]], "The Session fixture": [[5, "the-session-fixture"]], "Client-side session in cookies": [[5, "client-side-session-in-cookies"]], "Server-side session in memcache": [[5, "server-side-session-in-memcache"]], "Server-side session in Redis": [[5, "server-side-session-in-redis"]], "Server-side session in database": [[5, "server-side-session-in-database"]], "Server-side session anywhere": [[5, "server-side-session-anywhere"]], "Sharing sessions": [[5, "sharing-sessions"]], "The Condition fixture": [[5, "the-condition-fixture"]], "The URLsigner fixture": [[5, "the-urlsigner-fixture"]], "O fixture DAL": [[5, "the-dal-fixture"]], "The Auth fixture": [[5, "the-auth-fixture"]], "Caveats about fixtures": [[5, "caveats-about-fixtures"]], "Fixtures personalizados": [[5, "custom-fixtures"]], "Multiple fixtures": [[5, "multiple-fixtures"]], "Caching e Memoize": [[5, "caching-and-memoize"]], "Decoradores de conveni\u00eancia": [[5, "convenience-decorators"]], "The Database Abstraction Layer (DAL)": [[6, "the-database-abstraction-layer-dal"]], "DAL introduction": [[6, "dal-introduction"]], "py4web model": [[6, "py4web-model"]], "Supported databases": [[6, "supported-databases"]], "The DAL: a quick tour": [[6, "the-dal-a-quick-tour"]], "Usando o DAL \u201cstand-alone\u201d": [[6, "using-the-dal-stand-alone"]], "Experimentar com o shell py4web": [[6, "experiment-with-the-py4web-shell"]], "Construtor DAL": [[6, "dal-constructor"]], "Assinatura da DAL": [[6, "dal-signature"]], "Strings de conex\u00e3o (o par\u00e2metro uri)": [[6, "connection-strings-the-uri-parameter"]], "O pool de conex\u00f5es": [[6, "connection-pooling"]], "Falhas de conex\u00e3o (par\u00e2metro tentativas)": [[6, "connection-failures-attempts-parameter"]], "Tabelas pregui\u00e7osos": [[6, "lazy-tables"]], "Aplicativos de modelo-less": [[6, "model-less-applications"]], "Bancos de dados replicados": [[6, "replicated-databases"]], "Palavras-chave reservadas": [[6, "reserved-keywords"]], "Configura\u00e7\u00f5es de quoting e case e do banco de dados": [[6, "database-quoting-and-case-settings"]], "Fazendo uma conex\u00e3o segura": [[6, "making-a-secure-connection"]], "Outros par\u00e2metros do construtor DAL": [[6, "other-dal-constructor-parameters"]], "Local de pasta do banco de dados": [[6, "database-folder-location"]], "Configura\u00e7\u00f5es padr\u00e3o de migra\u00e7\u00e3o": [[6, "default-migration-settings"]], "`` `` commit`` e rollback``": [[6, "commit-and-rollback"]], "Construtor Table": [[6, "table-constructor"]], "assinatura define_table": [[6, "define-table-signature"]], "`` Id``: Notas sobre a chave prim\u00e1ria": [[6, "id-notes-about-the-primary-key"]], "`` `` Plural`` e singular``": [[6, "plural-and-singular"]], "`` Redefine``": [[6, "redefine"]], "`` Format``: representa\u00e7\u00e3o da ficha": [[6, "format-record-representation"]], "`` Rname``: nome real": [[6, "rname-real-name"]], "`` Primarykey``: Suporte para tabelas legadas": [[6, "primarykey-support-for-legacy-tables"]], "`` Migrate``, `` fake_migrate``": [[6, "migrate-fake-migrate"]], "`` Table_class``": [[6, "table-class"]], "`` Sequence_name``": [[6, "sequence-name"]], "`` Trigger_name``": [[6, "trigger-name"]], "`` polymodel``": [[6, "polymodel"]], "`` On_define``": [[6, "on-define"]], "Adicionando atributos para campos e tabelas": [[6, "adding-attributes-to-fields-and-tables"]], "Bancos de dados legados e tabelas com chave": [[6, "legacy-databases-and-keyed-tables"]], "Construtor Field": [[6, "field-constructor"]], "Field types and validators": [[6, "field-types-and-validators"]], "modifica\u00e7\u00e3o da tabela e campo em tempo de execu\u00e7\u00e3o": [[6, "run-time-field-and-table-modification"]], "Mais sobre envios": [[6, "more-on-uploads"]], "Migra\u00e7\u00f5es": [[6, "migrations"]], "Fixa\u00e7\u00e3o migra\u00e7\u00f5es quebrados": [[6, "fixing-broken-migrations"]], "Migra\u00e7\u00e3o resumo controle": [[6, "migration-control-summary"]], "Table methods": [[6, "table-methods"]], "`` Insert``": [[6, "insert"]], "`` Query``, `` Set``, `` Rows``": [[6, "query-set-rows"]], "`` Update_or_insert``": [[6, "update-or-insert"]], "`` Validate_and_insert``, `` validate_and_update``": [[6, "validate-and-insert-validate-and-update"]], "`` Drop``": [[6, "drop"]], "Marca\u00e7\u00e3o de registros": [[6, "tagging-records"]], "Raw SQL": [[6, "raw-sql"]], "`` executesql``": [[6, "executesql"]], "`` _Lastsql``": [[6, "lastsql"]], "Temporiza\u00e7\u00e3o de consultas": [[6, "timing-queries"]], "\u00cdndices": [[6, "indexes"]], "Generating raw SQL": [[6, "generating-raw-sql"]], "`` Comando SELECT``": [[6, "select-command"]], "Usando um seleto para uso de mem\u00f3ria inferior \u00e0 base de iterador": [[6, "using-an-iterator-based-select-for-lower-memory-use"]], "Renderizando Rows com represent": [[6, "rendering-rows-using-represent"]], "Atalhos": [[6, "shortcuts"]], "A obten\u00e7\u00e3o de um `` row``": [[6, "fetching-a-row"]], "Recursivas `` s SELECT``": [[6, "recursive-selects"]], "`` Orderby``, `` groupby``, `` limitby``, `` distinct``, `` having``, `` orderby_on_limitby``, `` join``, `` left``, `` cache``": [[6, "orderby-groupby-limitby-distinct-having-orderby-on-limitby-join-left-cache"]], "ordenar por": [[6, "orderby"]], "groupby, tendo": [[6, "groupby-having"]], "distinto": [[6, "distinct"]], "limitby": [[6, "limitby"]], "orderby_on_limitby": [[6, "orderby-on-limitby"]], "juntar-se, deixou": [[6, "join-left"]], "cache, em cache": [[6, "cache-cacheable"]], "Operadores l\u00f3gicos": [[6, "logical-operators"]], "`` Count``, `` isempty``, `` DELETE``, `` update``": [[6, "count-isempty-delete-update"]], "Express\u00f5es": [[6, "expressions"]], "`` case``": [[6, "case"]], "`` Update_record``": [[6, "update-record"]], "Inserir e atualizar a partir de um dicion\u00e1rio": [[6, "inserting-and-updating-from-a-dictionary"]], "`` `` First`` e last``": [[6, "first-and-last"]], "`` `` As_dict`` e as_list``": [[6, "as-dict-and-as-list"]], "Combinando Rows": [[6, "combining-rows"]], "`` Find``, `` exclude``, `` sort``": [[6, "find-exclude-sort"]], "Selects com cache": [[6, "caching-selects"]], "Computed and Virtual fields": [[6, "computed-and-virtual-fields"]], "Campos computados": [[6, "computed-fields"]], "Campos virtuais": [[6, "virtual-fields"]], "Campos virtuais novo estilo (experimental)": [[6, "new-style-virtual-fields-experimental"]], "Campos virtuais velho antigo": [[6, "old-style-virtual-fields"]], "Joins and Relations": [[6, "joins-and-relations"]], "Um para muitos rela\u00e7\u00e3o": [[6, "one-to-many-relation"]], "Inner join": [[6, "inner-join"]], "Left outer join": [[6, "left-outer-join"]], "Agrupamento e contando": [[6, "grouping-and-counting"]], "Many to many relation": [[6, "many-to-many-relation"]], "A auto-refer\u00eancia e aliases": [[6, "self-reference-and-aliases"]], "Outros operadores": [[6, "other-operators"]], "`` Like``, `` ilike``, `` regexp``, `` startswith``, `` endswith``, `` contains``, `` upper``, `` lower``": [[6, "like-ilike-regexp-startswith-endswith-contains-upper-lower"]], "`` Year``, `` month``, `` day``, `` hour``, `` minutes``, `` seconds``": [[6, "year-month-day-hour-minutes-seconds"]], "`` Belongs``": [[6, "belongs"]], "`` Sum``, `` avg``, `` min``, `` `` max`` e len``": [[6, "sum-avg-min-max-and-len"]], "Substrings": [[6, "substrings"]], "Os valores por defeito com `` `` coalesce`` e coalesce_zero``": [[6, "default-values-with-coalesce-and-coalesce-zero"]], "Exportar e importar dados": [[6, "exporting-and-importing-data"]], "CSV (uma tabela de cada vez)": [[6, "csv-one-table-at-a-time"]], "CSV (todas as tabelas ao mesmo tempo)": [[6, "csv-all-tables-at-once"]], "CSV e sincroniza\u00e7\u00e3o de banco de dados remoto": [[6, "csv-and-remote-database-synchronization"]], "HTML e XML (uma tabela de cada vez)": [[6, "html-and-xml-one-table-at-a-time"]], "Representa\u00e7\u00e3o de dados": [[6, "data-representation"]], "Caracter\u00edsticas avan\u00e7adas": [[6, "advanced-features"]], "`` Lista: `` e `` contains``": [[6, "list-type-and-contains"]], "Heran\u00e7a de tabela": [[6, "table-inheritance"]], "`` `` Filter_in`` e filter_out``": [[6, "filter-in-and-filter-out"]], "retornos de chamada no registro de inser\u00e7\u00e3o, exclus\u00e3o e atualiza\u00e7\u00e3o": [[6, "callbacks-on-record-insert-delete-and-update"]], "Cascades no banco de dados": [[6, "database-cascades"]], "versionamento recorde": [[6, "record-versioning"]], "filtros comuns": [[6, "common-filters"]], "Personalizados `` tipos Field``": [[6, "custom-field-types"]], "Usando DAL sem definir tabelas": [[6, "using-dal-without-define-tables"]], "Transa\u00e7\u00e3o distribu\u00edda": [[6, "distributed-transaction"]], "Copiar dados de um para outro db": [[6, "copy-data-from-one-db-into-another"]], "Pegadinhas": [[6, "gotchas"]], "Nota sobre novo DAL e adaptadores": [[6, "note-on-new-dal-and-adapters"]], "SQLite": [[6, "sqlite"]], "MySQL": [[6, "mysql"]], "Google SQL": [[6, "google-sql"]], "MSSQL (Microsoft SQL Server)": [[6, "mssql-microsoft-sql-server"]], "Or\u00e1culo": [[6, "oracle"]], "Google NoSQL (Datastore)": [[6, "google-nosql-datastore"]], "The RestAPI": [[7, "the-restapi"]], "RestAPI policies and actions": [[7, "restapi-policies-and-actions"]], "RestAPI GET": [[7, "restapi-get"]], "RestAPI practical examples": [[7, "restapi-practical-examples"]], "The RestAPI response": [[7, "the-restapi-response"]], "Linguagem de template YATL": [[8, "yatl-template-language"]], "Sintaxe b\u00e1sica": [[8, "basic-syntax"]], "`` Para \u2026 in``": [[8, "for-in"]], "`` While``": [[8, "while"]], "`` If \u2026 elif \u2026 else``": [[8, "if-elif-else"]], "`` Tentar \u2026 exceto \u2026 else \u2026 finally``": [[8, "try-except-else-finally"]], "`` Def \u2026 return``": [[8, "def-return"]], "Information workflow": [[8, "information-workflow"]], "extend and include": [[8, "extend-and-include"]], "Extending using variables": [[8, "extending-using-variables"]], "Template Functions": [[8, "template-functions"]], "block and super": [[8, "block-and-super"]], "Page layout standard structure": [[8, "page-layout-standard-structure"]], "Default page layout": [[8, "default-page-layout"]], "Mobile development": [[8, "mobile-development"]], "Helpers YATL": [[9, "yatl-helpers"]], "Helpers overview": [[9, "helpers-overview"]], "Built-in helpers": [[9, "built-in-helpers"]], "`` XML``": [[9, "xml"]], "`` A``": [[9, "a"]], "`` BODY``": [[9, "body"]], "`` CAT``": [[9, "cat"]], "`` Div``": [[9, "div"]], "`` EM``": [[9, "em"]], "`` Form``": [[9, "form"]], "`` H1``, `` h2``, `` H3``, `` H4``, `` H5``, `` H6``": [[9, "h1-h2-h3-h4-h5-h6"]], "`` HEAD``": [[9, "head"]], "`` HTML``": [[9, "html"]], "`` I``": [[9, "i"]], "`` IMG``": [[9, "img"]], "`` INPUT``": [[9, "input"]], "`` Label``": [[9, "label"]], "`` LI``": [[9, "li"]], "`` OL``": [[9, "ol"]], "`` OPTION``": [[9, "option"]], "`` P``": [[9, "p"]], "`` PRE``": [[9, "pre"]], "`` SCRIPT``": [[9, "script"]], "`` SELECT``": [[9, "select"]], "`` SPAN``": [[9, "span"]], "`` STYLE``": [[9, "style"]], "`` TABLE``, `` TR``, `` TD``": [[9, "table-tr-td"]], "`` TBODY``": [[9, "tbody"]], "`` TEXTAREA``": [[9, "textarea"]], "`` TH``": [[9, "th"]], "`` THEAD``": [[9, "thead"]], "`` TITLE``": [[9, "title"]], "`` TT``": [[9, "tt"]], "`` UL``": [[9, "ul"]], "`` URL``": [[9, "url"]], "Helpers personalizados": [[9, "custom-helpers"]], "`` TAG``": [[9, "tag"]], "`` BEAUTIFY``": [[9, "beautify"]], "Server-side DOM": [[9, "server-side-dom"]], "children": [[9, "children"]], "find": [[9, "find"]], "Using Inject": [[9, "using-inject"]], "Internacionaliza\u00e7\u00e3o": [[10, "internationalization"]], "Pluralizar": [[10, "pluralize"]], "Atualizar os arquivos de tradu\u00e7\u00e3o": [[10, "update-the-translation-files"]], "Foruml\u00e1rios": [[11, "forms"]], "The Form constructor": [[11, "the-form-constructor"]], "A minimal form example without a database": [[11, "a-minimal-form-example-without-a-database"]], "Basic form example": [[11, "basic-form-example"]], "File upload field": [[11, "file-upload-field"]], "Widgets": [[11, "widgets"]], "Standard widgets": [[11, "standard-widgets"]], "Custom widgets": [[11, "custom-widgets"]], "Advanced form design": [[11, "advanced-form-design"]], "Form structure manipulation": [[11, "form-structure-manipulation"]], "Custom forms": [[11, "custom-forms"]], "The sidecar parameter": [[11, "the-sidecar-parameter"]], "Valida\u00e7\u00e3o de formul\u00e1rio": [[11, "form-validation"]], "Text format validators": [[11, "text-format-validators"]], "IS_ALPHANUMERIC": [[11, "is-alphanumeric"]], "IS_LOWER": [[11, "is-lower"]], "IS_UPPER": [[11, "is-upper"]], "IS_EMAIL": [[11, "is-email"]], "IS_MATCH": [[11, "is-match"]], "IS_LENGTH": [[11, "is-length"]], "IS_URL": [[11, "is-url"]], "IS_SLUG": [[11, "is-slug"]], "IS_JSON": [[11, "is-json"]], "Date and time validators": [[11, "date-and-time-validators"]], "IS_TIME": [[11, "is-time"]], "IS_DATE": [[11, "is-date"]], "IS_DATETIME": [[11, "is-datetime"]], "IS_DATE_IN_RANGE": [[11, "is-date-in-range"]], "IS_DATETIME_IN_RANGE": [[11, "is-datetime-in-range"]], "Range, set and equality validators": [[11, "range-set-and-equality-validators"]], "IS_EQUAL_TO": [[11, "is-equal-to"]], "IS_NOT_EMPTY": [[11, "is-not-empty"]], "IS_NULL_OR": [[11, "is-null-or"]], "IS_EMPTY_OR": [[11, "is-empty-or"]], "IS_EXPR": [[11, "is-expr"]], "IS_DECIMAL_IN_RANGE": [[11, "is-decimal-in-range"]], "IS_FLOAT_IN_RANGE": [[11, "is-float-in-range"]], "IS_INT_IN_RANGE": [[11, "is-int-in-range"]], "IS_IN_SET": [[11, "is-in-set"]], "Checkbox validation": [[11, "checkbox-validation"]], "Dictionaries and tuples with IS_IN_SET": [[11, "dictionaries-and-tuples-with-is-in-set"]], "Sorted options": [[11, "sorted-options"]], "IS_IN_SET and Tagging": [[11, "is-in-set-and-tagging"]], "Complexity and security validators": [[11, "complexity-and-security-validators"]], "IS_STRONG": [[11, "is-strong"]], "CRYPT": [[11, "crypt"]], "Special type validators": [[11, "special-type-validators"]], "IS_LIST_OF": [[11, "is-list-of"]], "IS_LIST_OF_EMAILS": [[11, "is-list-of-emails"]], "ANY_OF": [[11, "any-of"]], "IS_IMAGE": [[11, "is-image"]], "IS_FILE": [[11, "is-file"]], "IS_UPLOAD_FILENAME": [[11, "is-upload-filename"]], "IS_IPV4": [[11, "is-ipv4"]], "IS_IPV6": [[11, "is-ipv6"]], "IS_IPADDRESS": [[11, "is-ipaddress"]], "Other validators": [[11, "other-validators"]], "CLEANUP": [[11, "cleanup"]], "Database validators": [[11, "database-validators"]], "IS_NOT_IN_DB": [[11, "is-not-in-db"]], "IS_IN_DB": [[11, "is-in-db"]], "IS_IN_DB and Tagging": [[11, "is-in-db-and-tagging"]], "Validation functions": [[11, "validation-functions"]], "Authentication and authorization": [[12, "authentication-and-authorization"]], "Authentication using Auth": [[12, "authentication-using-auth"]], "Interface de autentica\u00e7\u00e3o": [[12, "auth-ui"]], "Using Auth inside actions": [[12, "using-auth-inside-actions"]], "Two Factor Authentication": [[12, "two-factor-authentication"]], "two_factor_required": [[12, "two-factor-required"]], "two_factor_send": [[12, "two-factor-send"]], "two_factor_tries": [[12, "two-factor-tries"]], "Plugins de Autentica\u00e7\u00e3o": [[12, "auth-plugins"]], "PAM": [[12, "pam"]], "LDAP": [[12, "ldap"]], "OAuth2 with Google": [[12, "oauth2-with-google"]], "OAuth2 with Facebook": [[12, "oauth2-with-facebook"]], "OAuth2 with Discord": [[12, "oauth2-with-discord"]], "Authorization using Tags": [[12, "authorization-using-tags"]], "Etiquetas e permiss\u00f5es": [[12, "tags-and-permissions"]], "Multiple Tags objects": [[12, "multiple-tags-objects"]], "User Impersonation": [[12, "user-impersonation"]], "Rede": [[13, "grid"]], "Key features": [[13, "key-features"]], "Basic grid example": [[13, "basic-grid-example"]], "The Grid object": [[13, "the-grid-object"]], "Searching and filtering": [[13, "searching-and-filtering"]], "CRUD settings": [[13, "crud-settings"]], "Custom columns": [[13, "custom-columns"]], "Usando templates": [[13, "using-templates"]], "Customizing style": [[13, "customizing-style"]], "A\u00e7\u00e3o personalizada Bot\u00f5es": [[13, "custom-action-buttons"]], "Bot\u00e3o Classe A\u00e7\u00e3o Amostra": [[13, "sample-action-button-class"]], "Using callable parameters": [[13, "using-callable-parameters"]], "Os campos de refer\u00eancia": [[13, "reference-fields"]], "De web2py para py4web": [[14, "from-web2py-to-py4web"]], "Simple conversion examples": [[14, "simple-conversion-examples"]], "\u201cHello world\u201d example": [[14, "hello-world-example"]], "\u201cRedirect with variables\u201d example": [[14, "redirect-with-variables-example"]], "\u201cReturning variables\u201d example": [[14, "returning-variables-example"]], "\u201cReturning args\u201d example": [[14, "returning-args-example"]], "\u201cReturn calling methods\u201d example": [[14, "return-calling-methods-example"]], "\u201cSetting up a counter\u201d example": [[14, "setting-up-a-counter-example"]], "\u201cView\u201d example": [[14, "view-example"]], "\u201cForm and flash\u201d example": [[14, "form-and-flash-example"]], "\u201cgrid\u201d example": [[14, "grid-example"]], "\u201cAccessing OS files\u201d example": [[14, "accessing-os-files-example"]], "\u201cauth\u201d example": [[14, "auth-example"]], "Advanced topics and examples": [[15, "advanced-topics-and-examples"]], "py4web and asyncio": [[15, "py4web-and-asyncio"]], "htmx": [[15, "htmx"]], "htmx usage in Form": [[15, "htmx-usage-in-form"]], "htmx usage in Grid": [[15, "htmx-usage-in-grid"]], "Autocomplete Widget using htmx": [[15, "autocomplete-widget-using-htmx"]], "utils.js": [[15, "utils-js"]], "string.format": [[15, "string-format"]], "The Q object": [[15, "the-q-object"]], "The T object": [[15, "the-t-object"]], "py4web: o manual de refer\u00eancia": [[16, "py4web-the-reference-manual"]], "Conte\u00fado:": [[16, null]], "\u00cdndices e tabelas": [[16, "indices-and-tables"]]}, "indexentries": {}}) \ No newline at end of file diff --git a/docs/chapter-07.rst b/docs/chapter-07.rst index 6fc2b5020..0b78aee28 100644 --- a/docs/chapter-07.rst +++ b/docs/chapter-07.rst @@ -1598,11 +1598,11 @@ works very much like except that it calls the validators for the fields before performing the insert and bails out if the validation does not pass. If validation does -not pass the errors can be found in ``ret.errors``. ``ret.errors`` holds +not pass the errors can be found in ``ret["errors"]``. ``ret["errors"]`` holds a key-value mapping where each key is the field name whose validation failed, and the value of the key is the result from the validation error -(much like ``form.errors``). If it passes, the id of the new record is -in ``ret.id``. Mind that normally validation is done by the form +(much like ``form["errors"]``). If it passes, the id of the new record is +in ``ret["id"]``. Mind that normally validation is done by the form processing logic so this function is rarely needed. Similarly @@ -1619,8 +1619,8 @@ works very much the same as except that it calls the validators for the fields before performing the update. Notice that it only works if query involves a single table. The -number of updated records can be found in ``ret.updated`` and errors -will be in ``ret.errors``. +number of updated records can be found in ``ret["updated"]`` and errors +will be in ``ret["errors"]``. ``drop`` ~~~~~~~~ diff --git a/docs/locales/pt/LC_MESSAGES/chapter-08.mo b/docs/locales/pt/LC_MESSAGES/chapter-08.mo index 7a2c279eb33fddad11ee887386a8407634de919d..8c8999538fd29cdb103462b8c42b234acc85b31b 100644 GIT binary patch delta 716 zcmYk&PiWI%7{~FatNY`u*3P==*12~m!#OjO)Ky98##&KuV<@yJL(mN4EOuGfKcJ@~ zj$ITH;?N&4U3GD$J#|Ev4AJ>5&Glra2S8$B|Oj}lE;;8-(Z0}(8(J9c&9Xk zS|0P-h0kz`OgTj)Y_Uwbq% zlGkz-$F3EZUG218b1Y@*rmh*Lrkj+OIicxEUH67!^VY2GF4pZuN6S0*lBK%Om+BR} zq@7u=ELAP#mjA_S#!RcA%p7&qa7G!UY428SB3!Rs_cmgO`_DSAQ(>!XTK2Z3vi5>g VQs%gk95uEZFm3x delta 840 zcmY+?&ubGw7{>9(q_#CSCb6}q)##R@;EzOGW0eYOQ?Ss2Es~NdB3Ao`tMFMY}GXWrS(?94m!JhM9fpvOHV z>0p2x@fjWbf+IK`lwM;MUu}?1w@LfRzi*UIVt>1I49}zKe~1Iv#5w$cSsdx`y^pix zAMt?c@02Ury4)#k#zj2E$8P=48+7ibzl9lG!!qvak{b9J$8aVr-C%-`aELq@k&fU| zWX{TC8VfjuE67jZBCga&<1g78?2EE82Kt0o$*rx@30%fie2ag0UhVcPw6x71u!-Y5 z@932d;}q`2yLb^-Fpt_U*tI^B&`R z1DOYAVpLpgv$stYP3(v)E{=$Hahd4hq5$3knWy(1Fp={PjM)pe+zS@yRlp=H-a8)@ zLR8pPPv)#reQ(=fUBt-PA)>xNFc=7>TF>U^?c4ccxqh}S(p9TQbG3LZ9h}XcsZGZQ z!`YHuC||QH&O$PCr`C)n29jCFzCLP&=8_Xm!7165VrkTxDLM=JiZz@{r-tjxu`7Xg L%OCV-_fYsBf=6TA diff --git a/py4web/__init__.py b/py4web/__init__.py index 317fd4b50..a8aa4cf4c 100644 --- a/py4web/__init__.py +++ b/py4web/__init__.py @@ -2,7 +2,7 @@ __author__ = "Massimo Di Pierro " __license__ = "BSD-3-Clause" -__version__ = "1.20231114.1" +__version__ = "1.20231114.2" def _maybe_gevent(): diff --git a/pyproject.toml b/pyproject.toml index 9b50b6c38..e12a244ce 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "py4web" -version = "1.20231114.1" +version = "1.20231114.2" authors = [{ name="Massimo Di Pierro", email="massimo.dipierro@gmail.com" },] description = "A fast, stable, comprehensive web framework" readme = "README.rst"