In InnoDB counting is essentially O(n) operation, it can be pretty fast
on indexes but when filters don't use any index it usually means doing a
full table scan.
Adding a limit will stop the scan as soon as that many records are
matched.
Print failures shouldn't generate PDF with failure message but instead escalate the error.
This prevent all the PDFs that just contain "PermissionError" from being sent.
There can be external APIs like webhooks that only send array request,
in which case Frappe has no mechanism to accept such requests.
After this PR such request data can be accessed using `data` list
argument on function.
I've considered directly storing list in form_dict but it's not
feasible:
1. It breaks semantics, "form_dict" can't be a list. That ship has long
sailed.
2. Way too much code expects form_dict to be a dict.
* refactor: Private images rendering in PDFs
Private images currently render fine if PDF is generated during a
request as we pass the cookiejar to WKHTML.
Background jobs however fail completeley because they can't retrieve
private images without cookiejar.
This PR converts all image types to base64 encoded sources in HTML
itself, so wkhtmltopdf doesn't have to a fire a request.
* test: private images in pdf
- Hash one time reset tokens instead of storing them as is
- Up the perm level
- Use better source of randomness for generating token
- minor code cleanup here and there
* perf: `Document` objects without circular references
Circular references are usuallly considered bad for GC, avoiding them
since they don't seem to be necessary.
* fix: explicitly convert to weakref
* fix: search_link fails when txt contains parentheses
* fix: updating regex to replace number params also
* chore: replacing regex with sqlparse
* chore: not including fields like count(1) in asterisk_fields
* fix: owner/module not identified as column
* chore: lint fix and removing exception
* refactor: better function name
---------
Co-authored-by: Ankush Menat <ankush@frappe.io>
* fix: set 2 as simultaneous_sessions by default
* fix: Correct offset for simultaneous_sessions
* refactor: use freeze_time instead of patching
* chore: misleading docstring
* test: set lower simultaneous_sessions for test