Friday, April 3, 2020
6 changes · master
Enhancements to existing features
This update simplifies an internal code safety check by removing an outdated helper that is no longer needed with supported Python versions. It also makes the normal validation path slightly faster, improving core efficiency without changing user-facing behavior.
Original PR description
It's not necessary anymore as all supported Python versions implement
get_instructions, and inlining the usage of that is as readable as
calling _get_opcodes.
Also use the subset/superset predicate for validity testing instead of
difference as it's a fair bit faster:
❯ python3.8 -mtimeit -s 's1 = set(range(10)); s2 = set(range(5))' 's2 - s1'
5000000 loops, best of 5: 88.3 nsec per loop
❯ python3.8 -mtimeit -s 's1 = set(range(10)); s2 = set(range(5, 15))' 's2 - s1'
2000000 loops, best of 5: 159 nsec per loop
❯ python3.8 -mtimeit -s 's1 = set(range(10)); s2 = set(range(5))' 's1 >= s2'
5000000 loops, best of 5: 71.1 nsec per loop
❯ python3.8 -mtimeit -s 's1 = set(range(10)); s2 = set(range(5, 15))' 's1 >= s2'
5000000 loops, best of 5: 53.6 nsec per loop
we're paying double in the failure case but that doesn't super duper matter
because we're raising an exception and bailing out, the 24% gain on the
happy path seems more relevant.Archiving and restoring records now uses the standard business processes instead of directly changing visibility flags. This keeps related items in sync, such as surveys with badges and courses with slides, and improves CRM status tracking when opportunities are lost or restored.
Original PR description
Purpose of this merge is to call toggle_active or archive / unarchive methods instead of manually writing on active field. Indeed this allows to trigger business code related to archive / unarchive which is normally located in toggle_archive (called by action_archive and action_unarchive). We also improve some active-related behavior, notably * correctly cascade channel archive status to its slides; * cascade survey archive status to its certification badge; * fix opportunity lost / activated subtype in crm; See sub commits for more details. Task ID 2170708 Community PR #46563
Odoo’s internal cache handling was simplified by using a standard Python component designed for this kind of work. This reduces maintenance complexity and may improve performance slightly without changing user-facing features.
Original PR description
OrderedDict exists largely for the purpose of writing LRUs and such (it's one of the reason OrderedDict is not and will never be an alias for the insertion-ordered dict). Rebuilding LRU on OrderedDict: * significantly reduces the amount of code even ignoring the removal of iteration * might speed things up a bit (as CPython has a C implementation [since 3.5](https://bugs.python.org/issue16991)) Also removed the `iter*` methods: they're not used and they're not actually thread-safe as generator functions & methods immediately return when invoked, so the `@synchronized` only covers the creation of the generator not the actual iteration, they could be implemented safely by being completely eager (like `keys` was) or by using a proper context manager (but then I'm not quite sure what happens if we stop iterating before the end)
Odoo’s accounting and Latin American localization modules now use the newer invoice numbering approach instead of older sequence-specific logic. This keeps invoice document numbers consistent when journals or document types change, while preserving required controls for Argentina and updating related Chilean views and translations.
The debug tour dialog now lets users reset a guided tour back to its first step so it can be run again for onboarding or testing. The dialog is also easier to navigate, with testing tours separated and tours sorted with their sequence shown.
Original PR description
Task 2229909 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The Argentina electronic invoicing module has been adapted to work with the latest Odoo version by removing older sequence-based numbering logic and using journal and AFIP data instead. This helps ensure invoices and debit notes start with the correct official numbers, improves AFIP consultation access, updates translations, and strengthens automated test coverage.