Commit graph

2298 commits

Author SHA1 Message Date
Sagar Vora
bcc7cc9a3d
style: use functools.cached_property (#22304) 2023-09-04 16:50:25 +05:30
Ankush Menat
04b2c42778
Merge pull request #22239 from ankush/reveal_missing_perm
fix(UX): Highlight which permission is missing
2023-08-29 20:25:12 +05:30
Ankush Menat
edfeb0d932 fix(UX): Highlight which permission is missing 2023-08-29 19:11:58 +05:30
Ankush Menat
5fd0dfb163 fix: dont allow rename+merge for case changes 2023-08-29 18:03:16 +05:30
Ankush Menat
730e906dfd
refactor!: remove implicit primary key from logs (#22209) 2023-08-26 16:01:47 +05:30
mergify[bot]
fdcfb82f47
Merge pull request #22114 from gavindsouza/doc-bulk_insert-include_child
fix: Handle child record insertions via bulk_insert
2023-08-25 13:57:38 +00:00
Gavin D'souza
6b1609d277
fix: Cast documents iterable to list in db_insert 2023-08-25 16:12:48 +05:30
mergify[bot]
d6d82eb581
Merge pull request #22110 from resilient-tech/perf-as_dict-2
perf: undo regression in `as_dict` performance
2023-08-21 06:10:54 +00:00
Sagar Vora
7dc67f2feb chore: add back getattr for virtual docfields which get value from a property 2023-08-18 21:51:56 +05:30
Gavin D'souza
a996ff7f5b fix: Handle child record insertions via bulk_insert 2023-08-18 14:17:19 +00:00
Ankush Menat
d1495bb991 perf: ignore log links and disable in background jobs
Scheduled job type keeps getting updated for every scheduled job. This
is not required at all and not triggered by user.

This feature is for prioritizing user selected links, background jobs
should be ignored.
2023-08-18 17:47:58 +05:30
Sagar Vora
928bc46be3 perf: undo regression in as_dict performance 2023-08-18 17:44:45 +05:30
Ankush Menat
c7847395da
fix: remove thread-unsafe class attributes (#22097)
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
```
2023-08-17 20:11:20 +05:30
Ankush Menat
79392260d4
fix: autoincr caching and clear site cache after restore (#22079)
* fix: remove hazardous cache for autoincr

* fix: move cache to redis

* fix: clear all redis cache after restoring a site
2023-08-17 11:11:27 +05:30
mergify[bot]
fd10ab25cc
Merge pull request #22003 from gavindsouza/refactor-doc-bits
refactor: Use single query to delete child rows on doc.save
2023-08-11 06:45:07 +00:00
Ankush Menat
02e1311b3a build: pin typing_extensions to major version 2023-08-11 11:54:09 +05:30
Gavin D'souza
84f134a683
fix: Add "better" typing hints 2023-08-11 11:45:47 +05:30
Gavin D'souza
5554707148 refactor: Use single query to delete child rows 2023-08-10 06:29:18 +00:00
Ankush Menat
58568115a9
Merge pull request #21955 from barredterra/refactor-with-sourcery
refactor: run sourcery on all files
2023-08-10 10:11:20 +05:30
Ankush Menat
94e522185d
fix: configurable rename job queue (#21996)
This is useful for doctypes like company where very large number of
documents will be affected on a large DB.

original change:

fix: move rename enqueue action to long queue

When trying to rename company the job constantly fails.

possibly alternate fix to https://github.com/frappe/frappe/pull/21995

Job timed out because of 300 seconds timeout, no amount of optimization
will fix this because it's rewriting practically every row in
transactions.
2023-08-10 10:02:16 +05:30
barredterra
88c8baa9ee refactor: for append to extend, merge list extend
Replace a for append loop with list extend.
Create the list with values instead of creating
an empty list and extending it with another list.
2023-08-09 13:25:39 +02:00
barredterra
b553ed98d8 refactor: inline immediately returned variable
Inline a variable to a return in the case when the
variable being declared is immediately returned
2023-08-08 18:09:49 +02:00
Ankush Menat
f6326b6145
fix: check before deleting prepared report (#21950) 2023-08-07 14:00:34 +05:30
Raffael Meyer
5fce1a57c0
fix: validate fieldname in get_group_by_count (#21932)
* fix: validate fieldname in get_group_by_count

* test: call get_group_by_count with invalid field

* test: is_default_field
2023-08-06 17:33:34 +05:30
Ankush Menat
8817c228a2 fix: filter schema name on mariadb 2023-08-04 14:33:17 +05:30
Ankush Menat
fd15ab5329 fix: revert pg incompatible change 2023-08-04 14:13:36 +05:30
Ankush Menat
c4230f8760
fix: autoincr status per doctype (#21918)
* fix: autoincr status per doctype

closes https://github.com/frappe/frappe/issues/21386

* chore: Check autoincremented on the database currently being used.

* refactor: Styling and space fix

---------

Co-authored-by: Athul Cyriac Ajay <athul8720@gmail.com>
2023-08-04 13:59:39 +05:30
Raffael Meyer
dc0a8c5ccb
fix: keep privacy setting of attachments on amend (#21911) 2023-08-03 15:33:39 +05:30
Shariq Ansari
e1c1e256ef
Merge pull request #21798 from pps190/frappe/fix/ambigus-table-join 2023-07-28 12:28:04 +05:30
Ankush Menat
c40faddac7
perf: skip reset_seen for new doc (#21832)
The query is fired but document doesn't exist yet, so it does nothing really.

[skip ci]
2023-07-27 16:07:22 +05:30
Ankush Menat
8930d4b5e1
perf: drop ifnull from IS SET filter (#21822)
- Kinda confuses query planner (idk why it's not smart enough to
  understand but there are probably edge cases where it can't be done)
- `null != null` and `'' != null` both yield `null` which is falsy and
  won't be shown in results.

Alternate fix to https://github.com/frappe/frappe/pull/21817
2023-07-27 10:58:20 +05:30
Devin Slauenwhite
7a3e7b7eb2 Merge remote-tracking branch 'frappe/develop' into frappe/fix/ambigus-table-join 2023-07-24 14:23:28 -04:00
Ankush Menat
0bc5d1dc3b feat(DX): type annotated python controllers 2023-07-24 15:32:46 +05:30
Ankush Menat
1bfe585b71
fix!: Drop unused link_doctype, link_name (#21788) 2023-07-24 14:22:07 +05:30
Ankush Menat
2c99583247 perf: Lazily fetch shared documents
We eagerly fetch shared documents for ANY `get_list` query, even when
user has full read acess doctype, where it's moot to consider adding
shared document as separately.

This eliminates one entire db call from get_list and in most cases
get_list will translate to single DB call, hence probably worth the
additional complexity.
2023-07-22 18:04:35 +05:30
Ankush Menat
892c5e30a2 refactor: Simpler workflow caching
Entire document is cached, so no need to create another layer of cache.
2023-07-19 16:45:44 +05:30
Sagar Vora
7d7c440a1b fix: compare with doc.amended_from while saving version for newly amended doc 2023-07-17 16:04:28 +05:30
Deepesh Garg
e32e74f2f1
feat: Custom naming series parser via hooks (#21690)
* feat: Custom naming series parser via hooks

* chore: use assignment operatot

Co-authored-by: Ankush Menat <ankushmenat@gmail.com>

* test: Unit test for custom parser

* test: Unit test for custom parser

---------

Co-authored-by: Ankush Menat <ankushmenat@gmail.com>
2023-07-16 12:57:40 +05:30
Ankush Menat
adf30693a9 ci: update pyupgrade 2023-07-14 14:24:08 +05:30
Sagar Vora
b4f1a2328b
fix: ignore naming series validation when generating repeated address name (#21568) 2023-07-10 10:51:55 +05:30
gavin
05893bef42
fix: Rename document/update title via toolbar (update_document_title API) (#21404)
* fix: update_document_title

* Fix broken socket event
* Fix broken title + name doc update

* fix: if only title updated then dont enqueue

---------

Co-authored-by: Ankush Menat <ankush@frappe.io>
2023-06-21 15:46:09 +05:30
Dany Robert
4f3c0f6e99
feat: configurable amended document naming (#21414)
* feat: configurable amendment naming

* patch: set default amend naming

* chore: linters and document filter

* test: amended document naming

* refactor: use set_single_value

* chore: typo, fix copy

* fix(UX): move action button below table

* refactor: Series Counter -> Default Naming

The behaviour in this PR doesn't necessarily mean to apply naming series
it can be:
- Naming Series
- hash
- Naming Rule
- Some code

So the name was misleading.

---------

Co-authored-by: Ankush Menat <ankush@frappe.io>
2023-06-20 21:37:08 +05:30
Ankush Menat
8155371162
fix: ignore DOCTYPES_FOR_DOCTYPE in issingle check (#21375) 2023-06-14 18:21:55 +05:30
Ankush Menat
3f3ee12338 Revert: keep supporting set_value for singles
w/ explicit check for singles

This shouldn't have any performance impact as last function call only
happens if we THINK it's single doctype. use set_single_value to avoid
that extra function call.
2023-06-14 17:30:32 +05:30
Ankush Menat
039be73af4
refactor: Consider singles for dynamic set_value usage (#21367)
Found all usage using this semgrep rule:

```yaml
    - pattern: frappe.db.set_value($DOCTYPE, ...)
    - pattern-not: frappe.db.set_value("$STR", ...)
```
2023-06-14 10:46:25 +05:30
Ankush Menat
3005e66e45 refactor!: Drop previously deprecated code 2023-06-13 16:00:43 +05:30
Ankush Menat
8a30667a97
fix: Fetch non-cached version of Meta on Customize Form. (#21269)
* fix: Replace meta cache when uncached meta is requested

* fix: use meta from DB on customize form

* refactor: make cached kw only, use _dev_server
2023-06-12 14:59:42 +05:30
Ankush Menat
774a75dbde
perf: use cached workflow doc for transitions (#21300)
* fix: expire `RECORDER_INTERCEPT_FLAG` in one hour

Leaving this running in prod can be dangerous.

* perf: Use cached doc in workflows
2023-06-09 12:43:40 +05:30
Devin Slauenwhite
19d211f1d2
feat: rearranging standard fields in customize form (#19822)
* 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>
2023-06-08 17:14:44 +05:30
Ankush Menat
fa6dc03cc8
refactor: frappe.cache() usage to frappe.cache (#21282) 2023-06-08 11:47:17 +05:30