* fix: meta
* fix: test case
save is required:
1. Fetch values
```python
def get_invalid_links(self, is_submittable=False):
"""Return list of invalid links and also update fetch values if not set."""
...
```
2. Is triggered by
```python
def _validate_links(self):
if self.flags.ignore_links or self._action == "cancel":
return
...
```
3. Which is triggered by either `_save` or `insert`
----
`reload` does not trigger link fetch
```python
def reload(self) -> "Self":
"""Reload document from database"""
return self.load_from_db()
```
Neither does the new calling path which does not excempt Document
from caching when initializing meta.
It can be proven that this revert would be an alternative fix. But this
seems design by accident and there's no preceivable reason to excempt
Document args from being cached normally.
diff --git a/frappe/model/meta.py b/frappe/model/meta.py
index c4321f0128..87452c812c 100644
--- a/frappe/model/meta.py
+++ b/frappe/model/meta.py
@@ -70,11 +70,10 @@ def get_meta(doctype: str | dict | DocRef, cached=True) -> "_Meta":
Returns:
Meta object for the given doctype.
"""
- if cached and (
- doctype_name := getattr(doctype, "doctype", doctype)
- if not isinstance(doctype, dict)
- else doctype.get("doctype")
- ):
+ if cached and not isinstance(doctype, Document):
+ doctype_name = (
+ getattr(doctype, "doctype", doctype) if not isinstance(doctype, dict) else doctype.get("doctype")
+ )
if meta := frappe.cache.hget("doctype_meta", doctype_name):
return meta
Therefore, we comply the test.
* refactor: improve maintainability with a simple dispatcher
* refactor: improve maintainability with a init dispatcher on Document
* refactor: improve maintainability with an init dispatcher on meta
- Since the field name is specified use it as a non standard field because it is hard to determine which field is standard. It is often wrong to assume the first entry has the statndard field
The problem is same as mutable defaults. Container type class attributes
are mutable and shared between all objects.
```python
class CLS:
attr = {}
...
a = CLS()
b = CLS()
a.attr is b.attr # => True
```
* 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>
* fix(meta): ensure that `insert_after` is always considered when sorting fields
* test: add nosemgrep to comment
Co-authored-by: Dany Roberts <danyrt@wahni.com>
* Revert "fix: drop Meta cache during update (#18182)"
This reverts commit 656f6df257.
* fix: replace meta cache keys
Old keys stored different types of data `dict` changing key to indicate
change in type.