To Avoid:
```
/home/ankush/benches/develop/apps/frappe/frappe/utils/error.py:4: DeprecationWarning: 'cgitb' is deprecated and slated for removal in Python 3.13
import cgitb
```
* feat: rearranging standing fields
* fix: fixed creation of property setter
* refactor: renamed setup_sortable
* fix: loading field_order property
* refactor: removed redundant db call
* fix: field_order not found
* test: Added tests for field order in customize form
* refactor: better naming
* refactor: simplified logic
* feat: Updating field order on custom field creation
* feat: Added support for custom fiels
* refactor: moving to meta
* refactor: changed property type to json
* fix: new standard field insert order.
* fix: don't modify insert_after of system generated custom fields.
# This is because system generated fields are to be treated as standard fields. If the user restores the form to default, this value will be used to reset the original position.
# The new position of form fields are stored in the field_order Property Setter.
* fix: treat system generated fields as standard fields when sorting.
* revert: check for is_system_generated
* Revert "fix: new standard field insert order."
This reverts commit 6cdbe42f28d5944165dd100a9bb9172463951fda.
* fix: prioritize field_order over insert_after.
# Use insert_after as fallback in event the field doesn't exist in field_order
* fix(test): delete existing custom field
* fix: order of standard fields without field_order property.
* Revert "Revert "fix: new standard field insert order.""
This reverts commit c830f1ba2fe1e602b09c11a897869d9992097c1e.
* test: field order of newly migrated standard fields.
* fix(test): clear test_standard_field from previous test run.
* fix: sort with insert_after for system generated fields.
* fix(test): reset standard field creation before re-run and after successful test.
* fix: insert_after position should be + 1
* chore: remove debug statement
* test: system generated customized fields
* chore: remove print
* chore: lint all
* fix: show quick link to Table MultiSelect DocTypes
* refactor: change backend implementation of `CustomizeForm` and `Meta`
* test: simplify tests
* fix: rename `idx` to `index` for clarity
* perf: define `existing_fields` conditionally
---------
Co-authored-by: Aradhya <aradhyatripathi51@gmail.com>
Co-authored-by: Aradhya Tripathi <67282231+Aradhya-Tripathi@users.noreply.github.com>
Co-authored-by: Sagar Vora <sagar@resilient.tech>
This is more intuitive and consistent with other things like `frappe.db`.
PS: This is quite likely to break some weird usage which I can't guess right now. Normal usage inside request/job cycles will continue to work as it used to.
- System user with no role is useless
- By default adding a new system user doesn't give them ANY role so
they can't really access desk even if they have system user role.
* fix: currency formatter got incorrect format when use precision 0
* Revert "fix: currency formatter got incorrect format when use precision 0"
This reverts commit 1919cf4763b16e0cca2c2596223443d901e00e27.
* fix: allow 0 as default precision
---------
Co-authored-by: Ankush Menat <ankush@frappe.io>
Each call to evaluate if route is web view makes N queries where N = #
of web view doctypes. This entire computation can be definitely cached
for short duration.
- Added cache bursting in WebsiteGenerator doctype updates.
- Added 60 minutes TTL in case cache invalidation wasn't done reliably.
Fixture test:
This is broken cause it's trying to find doctype after it has been
deleted (wut?)
It was working so far because cache wasn't cleared correctly so you'd
still find it from cache.
db.set_value test:
converted to use last query instead of patching SQL
- Hashes are supposed to be used for representing complex object, not
multiple documents of same DocType.
- Redis's auto cache clearing wont clear individual key from hashes even if they
are rarely used.
- Keys can have expiry.