Commit graph

2021 commits

Author SHA1 Message Date
Ankush Menat
95f67b8de8
fix: ignore empty part in naming series (#17508)
on v13 doc.get("") returns entire doc dictionary, this gets strigified
and becomes a problem for naming.
2022-07-14 13:14:58 +05:30
Ankush Menat
e652811d55 fix: ignore virtual fields when doing db_update 2022-07-11 18:33:50 +05:30
Ankush Menat
111060224b fix: naming series tool doesn't load if missing numbers 2022-07-07 17:38:52 +05:30
Ankush Menat
261fbfcd11
Revert "fix(doc)!: Always cast datetime, date and time fields"
Revert "fix(doc)!: Always cast datetime, date and time fields (#15891)"

This reverts commit d7789ab6ff.
2022-07-05 13:43:32 +05:30
Himanshu
d7789ab6ff
fix(doc)!: Always cast datetime, date and time fields (#15891)
### BREAKING CHANGE
#### Datetime, Date and Time fields will always be cast to respective objects in `setattr`, this will ensure uniformity while accessing the values, no more `getdate`, `get_datetime`, `to_timedelta` wrapper.
- While importing data, the framework does check for `set_only_once`.
- In normal case scenarios, this will work flawlessly since most date fields might not be set_only_once.
- But in Subscription, the date field is set to `set_only_once` and in `after_insert`, `document.save` is called, and while doing so, `set_only_once` is checked [here](1944a547f9/frappe/model/document.py (L566)).
-This works fine if the data imported is in the correct format.
- If the date's data is not in the correct format, the framework throws an error.
- for eg `06-02-2022 00:00:00 != 06-02-2022`
- fixes [Issue/#15370](https://github.com/frappe/frappe/issues/15370)

> no-docs
2022-07-05 07:07:16 +00:00
Ankush Menat
9a5d11234c
fix: validate scheduler, hook method names (#17400)
* chore: warn about missing scheduler / doc events

* fix: pass list instead of filter

filter can only be iterated upon once

* refactor: many typehints in __init__.py
2022-07-04 19:29:16 +05:30
Ankush Menat
60c4819373
refactor: safer binding of outer scope in closures (#17389) 2022-07-04 13:39:56 +05:30
Ankush Menat
81b37cb7d2
refactor: clean up code to py310 supported features (#17367)
refactor: clean up code to py39+ supported syntax

- f-strings instead of format
- latest typing support instead of pre 3.9 TitleCase
- remove UTF-8 declarations.
- many more changes

Powered by https://github.com/asottile/pyupgrade/ + manual cleanups
2022-07-01 11:51:05 +05:30
Ankush Menat
181833848f
Merge pull request #17337 from ankush/lint_cleanup
fix: remove bare exception catching
2022-06-29 11:39:05 +05:30
Ankush Menat
c8ac3f922e Revert "fix: extra column in excel after exporting report with group by (#17126)"
This reverts commit 971b8160a3.
2022-06-28 18:40:27 +05:30
Ankush Menat
d35d7ffbe2 fix: remove bare exception catching
A bare except catches lots of things (like generator iteration end) and should never be used.
2022-06-28 18:05:00 +05:30
Shariq Ansari
971b8160a3
fix: extra column in excel after exporting report with group by (#17126)
Co-authored-by: gavin <gavin18d@gmail.com>
2022-06-28 12:39:45 +05:30
mergify[bot]
81d41c8d3a
Merge pull request #17297 from resilient-tech/dont-remove-custom-perms
fix!: dont delete custom permissions when doctype is deleted
2022-06-26 14:22:55 +00:00
Smit Vora
b6963b1dec fix: ignore integration request when deleting doc 2022-06-26 12:53:38 +05:30
Sagar Vora
3c617e3b06 fix!: dont delete custom permissions when doctype is deleted 2022-06-26 11:51:52 +05:30
gruener
1349a73e14
fix: Virtual DocTypes currently breaking Parent-DocType Update and Deletion (#16977)
When you create a Virtual DocType as a Child Table (which is possible without any warning), then it will lead to several errors when updating or deleting of the parent document.

This is because the following files just execute a SQL Statement for the doctype (which doesnt have a DB Table, as this is the nature of a virtual doctype ;-)

**apps/frappe/frappe/model/document.py**
```py
frappe.db.sql("""delete from `tab{0}` where parent=%s and parenttype=%s and parentfield=%s""".format(df.options), (self.name, self.doctype, fieldname))
```

**apps/frappe/frappe/model/delete_doc.py**
```py
frappe.db.sql(
	"delete from `tab%s` where parenttype=%s and parent = %s" % (t, "%s", "%s"), (doctype, name)
)
```

So at these points, I added a check to not perform any sql command for virtual doctypes. With these changes, my affected situation is solved. Perhaps there are other situations, I didn't encounter yet.

As an additional feature, those virtual doctype models should also get an information about the parent is deleted, to propagate the deletion to the remote data pools; but for now I hope this bugfix can be approved.
2022-06-23 11:38:29 +00:00
gavin
6a91c2cf14
Merge pull request #17141 from vishdha/_format_naming
fix: Use date/time field in document naming
2022-06-23 16:35:16 +05:30
Sagar Vora
c6d8f3bc7f
fix: dont clear _meta when caching doc (#17115)
fix: dont clear meta when caching doc
2022-06-22 12:13:35 +05:30
Himanshu
a4861b2cb9
Merge branch 'develop' into _format_naming 2022-06-20 16:09:23 +05:30
Raffael Meyer
7b67e1f847
fix: translate doctype in error messages (#17239) 2022-06-20 10:35:57 +05:30
vishdha
27f2cdf016 chore: remove unused code 2022-06-17 13:59:21 +05:30
vishdha
ea18460cc2 fix: date_field not able to fetch in _format_naming autoname 2022-06-17 13:59:21 +05:30
Gavin D'souza
9b4db43b84 perf(db_query): Maintain compiled pattern globally 2022-06-14 17:17:22 +05:30
Gavin D'souza
60ec324956 fix: Remove unwanted blacklist over fields
A field like 'count(`tabBOM Update Log`.name) as total_count' split by
whitespace loses it's meaning. Tried splitting it meaningfully but
didn't get the point of this tbh and stopped. I'm not sure what the code
before was trying to do and with what set of inputs.

Imagine the following fields: [count(`tabBOM Update Log`.name) as
total_count, `tabBOM Update Log`.name as update_name, `tabBOM Update
Log`.name, `tabBOM Update as Log`.name, tabBOM.name, name], I couldn't
see what the previous check was trying to protect - hence, didn't add
any equivalent functionality.
2022-06-14 16:40:41 +05:30
Faris Ansari
eea5cc52da
refactor!: Remove Data Migration Tool (#17134)
* refactor: Remove Data Migration Tool

* chore: unnecessary imports
2022-06-13 16:24:00 +05:30
Suraj Shetty
53a079f101 fix: doc.get_title should return empty string if title is not set
(cherry picked from commit b244c9148192362de43aa483b328709745f3be82)
2022-06-13 06:16:57 +00:00
Ankush Menat
21442f5cba perf: disable creating version for new docs
Each new doc inserts a version, this contains nothing but creator and
creation time.. which is already immutable information on the original
document.

This was added for cases like data import to track from where document
got created, ref: b7dfe7969d

Fix: only add a version on creation IF creation info is present on flags
2022-06-12 18:07:55 +05:30
gavin
fc9308f8ba
fix: Use same labels for standard fields throughout interfaces (#17031)
* fix(model)!: Match labels in meta & model

Labels for fields have been inconsistent. In standard filters, doc.name
would be labelled as "Name" while it's "ID" in the edit filters option.
Similarly for other fields, the same view will address the same fields
differently. This PR aims to get rid of such inconsistencies.

Changes:

* [model] Change label ID for name to 'Name'
* [meta] Match labels of owner, modified, modified_by
* [meta] Add labels for more fields - from model.js

* fix!: get_label to fetch labels as Desk does

* fix!(label): Refer to name field as 'ID' over 'Name'

* test: Use 'ID' label instead of 'Name'
2022-06-09 15:34:57 +05:30
Gavin D'souza
32b4983197 fix(re): Pass flags on instantiation 2022-06-08 16:31:58 +05:30
Gavin D'souza
b696fa6da5 perf: Pre-compile and re-use regexp pattern
Converted all possible usages of re.* that weren't compiling the regex
separately and re-using it. Separated out the compiled patterns as
global variables. Repetitive patterns could be made DRY-er.

Would be nicer to have all regexes in a single module so that we could
re-use better, keep track of outdated, and keep checks for possible
reDos' etc
2022-06-08 14:07:38 +05:30
gavin
44dba28159
Merge branch 'develop' into refactor-file 2022-06-08 12:43:35 +05:30
Faris Ansari
3d07a51442
fix: check read permission on link sub-fields (#17082) 2022-06-06 19:54:54 +05:30
Suraj Shetty
0cd41fbf0c
Merge branch 'develop' into fix-document-signature-2 2022-06-01 18:01:12 +05:30
Suraj Shetty
59c7fb9e0d fix: Add "Document Share Key" to doctypes_to_skip in delete_doc.py
- To avoid error while deleting linked document.
2022-06-01 17:59:32 +05:30
Gavin D'souza
5ec2690160 Merge branch 'develop' into refactor-file 2022-06-01 15:47:55 +05:30
Ankush Menat
462aa20386
fix: naming using doc fields (#17040) 2022-05-31 19:55:34 +05:30
Ankush Menat
45604a7f3f refactor: move all naming series related logic 2022-05-31 14:48:14 +05:30
Ankush Menat
b7a032e7e8 refactor: generate naming series preview without DB calls 2022-05-31 12:59:49 +05:30
Ankush Menat
5590cb0be8 feat: NamingSeries class
Single class to group together everything required related to naming
series
2022-05-31 11:53:58 +05:30
Ankush Menat
5c35aae876 fix: accurate prefix parsing
Previous version of prefix parsing relied on partial reimplemntation of
naming series logic which was outdated and often incorrect.
2022-05-31 11:53:58 +05:30
Ankush Menat
15dbcacd56 refactor: split transaction and prefix functions
refactor: fetching transaction list

refactor: get default naming series

refactor: simplify naming series option scrubbing

fix: remove dead code related to insert series

This code is dead in many ways
- Creates map but it's never evaluated, so it doesn't actually run :D
- Just randomly splits naming series parts to create prefix... makes no
  sense.

fix: deduplicate prefix list
2022-05-31 11:53:40 +05:30
Ankush Menat
75b7a823a9
Merge pull request #17009 from ankush/delete_doctype_changes
fix!: dont delete customizations when doctypes are deleted
2022-05-30 21:00:50 +05:30
Suraj Shetty
a22b22c703 fix: Remove shareable link feature 2022-05-30 13:22:51 +05:30
Suraj Shetty
ed72fc5a0e
Merge pull request #17003 from netchampfaris/db-query-child-table-syntax-sugar 2022-05-30 12:21:35 +05:30
Faris Ansari
87ec6d4fb9 fix: initialize link_tables in constructor 2022-05-30 10:50:16 +05:30
Ankush Menat
076eb593e3 refactor: delete_from_table
Whole lot of unnecessary complexity, closure, multiple function calls,
comprehensions all that can be replaced with single `get_all`
2022-05-29 13:46:48 +05:30
Ankush Menat
a0ecb912db fix!: dont delete customizations when doctypes are deleted
If someone deletes doctype and restores it back all customization are
lost, there's no "real" reason to delete all these customization. They
are only ever active if the doctype is being used.

Explanations:

- Custom field: is used by meta when doctype meta is requested, if meta
  isn't requested then custom field is effectively inactive.
- Client script: loaded by meta when doctype is requested by desk. So
  inactive in deleted state.
- Property setter: loaded by meta, so inactive when doctype isn't
  present.
- Report: will break doctype isn't present, but user should delete them
  manually to avoid loss of "scripts" or anything special they might
  have done. Also report's doctype don't 100% indicate that it's based
  solely on that doctype.
2022-05-29 13:46:44 +05:30
Faris Ansari
507a45d8f2 fix: dot syntax support for link fields
 test
2022-05-28 13:57:44 +05:30
Faris Ansari
96b30e714c feat: table_field.fieldname field syntax for db_query 2022-05-27 16:04:22 +05:30
Suraj Shetty
0fab4de3b8 Merge branch 'develop' of https://github.com/frappe/frappe into fix-document-signature 2022-05-25 14:18:10 +05:30