No description
* 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.
|
||
|---|---|---|
| .github | ||
| billing | ||
| cypress | ||
| esbuild | ||
| frappe | ||
| realtime | ||
| tests | ||
| .coveragerc | ||
| .editorconfig | ||
| .eslintignore | ||
| .eslintrc | ||
| .git-blame-ignore-revs | ||
| .gitignore | ||
| .mergify.yml | ||
| .pre-commit-config.yaml | ||
| .releaserc | ||
| .semgrepignore | ||
| attributions.md | ||
| babel_extractors.csv | ||
| CODE_OF_CONDUCT.md | ||
| codecov.yml | ||
| CODEOWNERS | ||
| commitlint.config.js | ||
| crowdin.yml | ||
| cypress.config.js | ||
| generate_bootstrap_theme.js | ||
| hooks.md | ||
| LICENSE | ||
| node_utils.js | ||
| package.json | ||
| pyproject.toml | ||
| README.md | ||
| SECURITY.md | ||
| sider.yml | ||
| socketio.js | ||
| yarn.lock | ||
Full-stack web application framework that uses Python and MariaDB on the server side and a tightly integrated client side library. Built for ERPNext.
Login for the PWD site: (username: Administrator, password: admin)
Table of Contents
Installation
Production
- Managed Hosting on Frappe Cloud
- Easy install script using Docker images
- Manual install using Docker images
Development
Contributing
Resources
- frappeframework.com - Official documentation of the Frappe Framework.
- frappe.school - Pick from the various courses by the maintainers or from the community.
- buildwithhussain.dev - Watch Frappe Framework being used in the wild to build world-class web apps.
License
This repository has been released under the MIT License.
By contributing to Frappe, you agree that your contributions will be licensed under its MIT License.