Purpose
=======
This fix makes no sense because it exposes some private data to
portal users. Fortunately it was only introduced in the master branch.
closesodoo/odoo#40710
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
This merge adds a section to distinguish the certification badges from the
other badges users may obtain in eLearning. Certification badges are available
on the ranks page, linked to a running survey. Clicking on them directly
redirects into the linked course.
Other commits in this merge include
* renaming a category field on challenge to challenge_category to ease
its finding in code;
* renaming some statistics fields on badge model to ease its understanding;
* various usability improvements and fixes;
Task ID : 1961053
PR #32594
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
This commit adds a section to distinguish the certification badges from the
other badges users may obtain in eLearning. Certification badges are available
on the ranks page, linked to a running survey. Clicking on them directly
redirects into the linked course.
Task ID : 1961053
PR #32594
Purpose of this commit is to ensure challenge linked to surveys linked to
slides have ``slides`` category, while challenge linked to surveys not
linked to slides (if changing survey_id for example) have ``certification``
category.
With this patch challenges are correctly categorized, allowing to accurately
filter them based on their category.
Task ID : 1961053
PR #32594
In this commit we rename stat_count into granted_count, and stat_count_distinct
into granted_users_count to reflect more what are those variables, aka count
of granted badges.
Task ID: 1961053
PR #32594
There is no unique constraint on the properties to avoid having two
properties for the same field, company and res_id.
Having two properties for the same field, company and res_id, leads to
inconsistencies through the code, as reading a company-dependent field
nondeterministically returns one of the available property value.
So now, before creating a property, we have to check that there is not
already a value for the field, company and res_id and write or create
depending on if it is already exists.
The properties of specific records already satisfy the constraint thanks
to the implementation of company-dependent fields that use the method
`set_multi`. We added a method `set_default` to set generic properties,
and its implementation does the right thing. It also simplifies the
code to set such properties, by the way.
closesodoo/odoo#40473
Signed-off-by: Xavier Morel (xmo) <xmo@odoo.com>
Co-authored-by: Raphael Collet <rco@odoo.com>
Before this commit, the field `next_serial_count` in stock.move, used to
know how many SN the user wants to generate, wasn't correctly set and
was always equals to 0.
closesodoo/odoo#40714
X-original-commit: 9a20896eddb6b98b569f4f83192ac876696baaa6
Signed-off-by: Arnold Moyaux <amoyaux@users.noreply.github.com>
Before this commit, when user creates a receipt for a product tracked by
serial number, using immediate transfer, the fields to generate and
assign SN was hidden.
The reason was the move is confirmed in this case, and those fields was
displayed only for partially available and assigned moves.
task-2123761
X-original-commit: 4f9b170e857509cf34e072051086a7e9590c330d
Before this commit, with a time range activated in a pivot view,
click on a non empty cell would not always give the right list of
records because of a bad action domain.
The reason is that the headers domain or comparisonDomain were
not always set when appropriate:
- for the headers 'Total', the corresponding group obtained
by read_group does not contain the key __domain. For that
reason both the key domain and comparisonDomain were left
undefined.
- for headers that correspond to groups not present in the two
periods compared, one of the key was left undefined.
With the present commit, we correctly set the domain and
comparisonDomain keys everytime they are useful.
closesodoo/odoo#40713
X-original-commit: 2f89820faa5966b8321d6681e9745a4e938e2bec
Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
If a component is used in a production with another unit of measure
than it's one, the created stock move line could not convert the quantity
correctly.
If there is enough quantity in stock, the created move line takes the
quant uom but the quantity in the production ones.
ex: consume 1 dozen, the quantity on the stock move line is 1 unit
This commit always uses the wo line's UoM and quantity to create the
stock move line.
closesodoo/odoo#39222
Signed-off-by: Arnold Moyaux <amoyaux@users.noreply.github.com>
Issue: open a done production. Unlock it. Add a new raw stock move.
This action will called _compute_order_finished_lot_ids on the new
stock_move. This method uses
move.raw_material_production_id.move_finished_ids.
raw_material_production_id is available but not move_finished_ids. The
reason is move_finished_id is not loaded by the web client in the
production form view.
This commit added the one2many (invisible) in the view in order to
get all the information in the compute method.
This form is mostly used in the 'Cost Analisys report' (mrp_account_enterprise module)
and needed an update to better integrated with the report
Task : 2082448
Before this commit, The addition of new stock move lines in a
finished production via the unlock button did not impact the
traceability report. This was due to the fact that the new sml
has not been linked to the finished_lot_id.
This commit extend the flexible consumption. On the workorder form view.
It's now possible to add directly new workorder line with any product
(even one not in any BoM line). For those new wo line. A confirmed stock
move is create in the record_production step.
Task : 2082448
In this commit set date field as a date and set it on the lower
right corner.
task-id:1970451
closesodoo/odoo#32968
Signed-off-by: Simon Lejeune (sle) <sle@openerp.com>
Purpose
=======
Currently, it is only possible to have 1 level of sub-tasks per task.
The user may want several levels of granurality.
Specifications
==============
Allow having multi levels of sub-tasks
- Move the parent_id field out of the debug mode and display it above the
Deadline field
- Remove the 'parent task' stat button
- Add the parent_id field to the project.task optional list view
- Display the sub-tasks stat button on sub-tasks
- The 'sub-tasks' stat button should only count/display tasks from the
first level of sub-tasks
- The name of the sub-task should be
parent task: sub task level 1: sub task level 2: sub task level 3...
- The sub-task should be created in the sub-task project set on the
parent task's project
- The subtask_planned_hours and the subtask_effective_hours fields should
take into account the planned hours of all sub-level tasks
TaskID: 2107078
Before this commit, calling gengo_authentication (executed from the
cron _send_translation_terms) returns an error when the python library
gengo is not found on the system.
If tried to request a synchronisation, got an error "NameError: name
'Gengo' is not defined"
Gengo variable was undefined as no imported.
closesodoo/odoo#40686
X-original-commit: 675b355954522caf7d72ab20cc431d19c5a05a8f
Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
No justification, commit message not linked to the diff.
If there is an issue in the line_number extraction it must be
investigated.
I suspect an outdated polib version.
closesodoo/odoo#40684
X-original-commit: 0f92dae8eb76a47326bd2bb8924df8fa09645145
Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
In case the Stripe API call fails, an Internal Server Error page is
displayed to the user, which is not user friendly.
opw-2126196
closesodoo/odoo#40678
X-original-commit: 95a452f6d928de2e8532027893a353167ffdd389
Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
Conditional expressions were already parsed, but there was no support
for executing them (or stringifying them back though I'm not sure when
that's used).
closesodoo/odoo#40502
Signed-off-by: Xavier Morel (xmo) <xmo@odoo.com>
Add a bunch of timesheets for the 2 main demo projects in the project module
+ for one of the billable projects in sale_timesheet
closesodoo/odoo#40280
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
Make some fields editable in multi edit.
Some onchange are tranformed in compute fields.
id=2078674
closesodoo/odoo#39711
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
* we can just get the variable names once for the entire expression,
no need to bother doing it bit by bit
* avoid blowing up when the domain contains computations *around*
segments.
closesodoo/odoo#40642
Signed-off-by: Raphael Collet (rco) <rco@openerp.com>
When a calendar event is created with a duration of for example 20
minutes, the end time appears as the start time + 19 minutes.
Because of the rounding of the duration (20 minutes = 0.333... hours),
the end time is incorrectly set (xx:19:59.998...) then displayed. Since
the duration can only be set by the minute, we round it before computing
the end time.
opw-2122853
closesodoo/odoo#40655
X-original-commit: f6ae9f0aea5a250cbff6734de8a43a1b741394a7
Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
A deadlock can occur between threads when concurrent requests
acquire the registry lock and conflicting database-level locks
in different orders. The database won't be able to detect and
break the deadlock because it involves an external, Python-level
lock. This situation is more likely to occur during module
installations [1].
If the server is started with the `limit_time_real` option,
it should be able to abort the deadlocked requests after the
timeout, and restart. However that could not work because
the recovery initiated by `reload()` is blocked at the end
of the `stop()` method, as it cannot acquire the registry
lock either, necessary for `Registry.delete_all()`.
Since that deletion step is in fact not necessary, it can
be skipped, avoiding the deadlock entirely.
Indeed there's no real reason anymore to delete the DB's
registry upon shutdown. This was introduced for 7.0 by
b5daffc115, in order to perform
other cleanups (including cron agent threads). These other
cleanups are not necessary anymore, and when the stop()
method of the ThreadedServer completes, the next step is
either a restart of the whole process (via execve() through
_reexec()), or a full process exit. Keeping the registry in
memory for a few cycles until this happens makes no difference.
When such a deadlock occurs, it's always possible to manually
kill the server with 2 `kill` commands, or 1 `kill -9`.
~~~~~~~~~~~~~~~~~~~~~~
[1] Reproduction info:
The following deadlock was observed in Odoo threaded server mode:
1. incoming request spawns a new thread A
A starts a transaction and does a "SELECT ... FROM res_users ..."
getting an ACCESS SHARE lock on the table
2. incoming request spawns a new thread B
B is a request that calls `button_immediate_install`, that will
install new modules and alter the res_users table.
3. B takes and holds the registry lock and executes "ALTER TABLE
res_users ...", that waits to get the ACCESS EXCLUSIVE lock on the
table until A's transaction releases the ACCESS SHARE lock.
4. A continues code execution and reaches a .sudo() call, it tries to
create a new environment. The creation of the new environment
requires to wait for the registry's lock to be release but it's held
by B.
-> A waits for B's registry lock to be released
-> B waits for A's ACCESS SHARE lock to be released
-> Deadlock that can't be broken except by force-killing the server
closesodoo/odoo#40664
X-original-commit: 9e67525418b3b0a48a796044ef24b227946ceb8f
Signed-off-by: Olivier Dony (odo) <odo@openerp.com>
Since Odoo V13, ES6 is supported and we therefore do not support IE 11
anymore.
closesodoo/odoo#40661
X-original-commit: 9071a25394aa7a1749dc497fccea095bc8261181
Signed-off-by: Victor Feyens (vfe) <vfe@odoo.com>
- Add blank lines at end of python files (pep8)
- Easier uncomment (entire blocks, and no remaining whitespaces in empty lines)
- Add `_description` to model to avoid the warning telling it's missing
- Correct compute field, `self.value` raised an `ensure_one` issue
- Change access so the user can add/edit/delete records in the web interface
by default
- Correct the server action, `self` is not in the server action context.
closesodoo/odoo#40659
X-original-commit: 622615771d0a6f8544f6810f30df46aea0e0fb9c
Signed-off-by: Denis Ledoux (dle) <dle@odoo.com>
A nicer 404 layout was introduced with e9106f8f98 but the specs got changed
just after it was merged.
It has been decided to make the 404 fully editable (before, everything was
fully editable except the popular page div).
In order to do this, the 404 template can't have inherited views, which brings
the following changes:
1. Remove every main website module xpath view adding their most popular page
2. Remove the xpath view in portal to add popular page part (was not needed
in http_routing/web). It has been decided that having `Home` ('/' url) even
without portal and/or website is not a big deal.
Those changes allow the 404 template to be written in a single view without any
inherited views.
The 404 will be the same for backend only databases, portal and website.
task-1966460
closesodoo/odoo#40637
Signed-off-by: Jérémy Kersten (jke) <jke@openerp.com>
Activate Google Synchronization, create on OE a recurrent event (no allday)
synchronize the calendar, then delete an event of the recursion on OE,
sync again on OE.
An error will popup in the console. There is a typo in the variable
sent to the google API.
https://developers.google.com/calendar/v3/reference/eventsclosesodoo/odoo#40625
X-original-commit: 299bb8a995fb8058bbc0b9e4d71b67d3e765c6af
Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
Reproduce the issue
- Install Time Off
- Select all the lines
- Action > Export
The file has only columns but no data
Cause
In `hr_leave_type.py` the `_search` method's limit is `False` when
we select all the lines.
In 04e85ef, we return the leaves ids with `[:limit]` so `[:False]`
that always returns an empty array instead of `[:None]` that returns
the full list.
This commit replaces the `[:limit]` by `[:limit or None]`
OPW-2126109
closesodoo/odoo#40622
X-original-commit: 2c0b58c161dff4fe9a8f953463ed2b1efdf7b431
Signed-off-by: Jason Van Malder <jasonvanmalder@users.noreply.github.com>
Steps to reproduce:
1. Go to the Accounting / Invoicing apps
2. Open Taxes (Configuration -> Accounting / Invoicing -> Taxes)
3. Try to create a new tax and the client crash.
It occurs because the `_processX2ManyCommands()` method doesn't handle
correctly a missing `fieldInfo` on some X2Many tags.
On mobile, when calling `load_views` the kanban view is used by default.
But if the kanban isn't defined, a default kanban view with only the id
of the model is used.
In the case of the taxes form, the `default_get` retrieved for this
form refers to a Many2Many (`tag_ids`) inside a One2Many. But this field
isn't present inside the loaded kanban view, so when we process the
command defined by the `default_get`, the `field_view` item doesn't
exist (because the default kanban loaded only contains the id of the
field).
Now instead of using an undefined `fieldInfo`, we fall back to an empty
object on the missing field to avoid the crash.
closesodoo/odoo#40617
X-original-commit: 47a306a31ac6d3c9e68e83b77a80426d5c6ceb05
Signed-off-by: res-odoo <res-odoo@users.noreply.github.com>
The Channel model contains the two following fields: `description` and
`description_html`. The former is a short plain-text description that can be
filled in the creation form. The latter is a long html-formatted description.
Before this commit:
The description displayed on the card of the course is the `description` field.
After this commit:
There is an additional `description_short` field, which is initialized to the
same value as the `description` field. If the `description` field is modified
the `description_short` reflects the modifications. This happens however only
if the user didn't modify the `description_short` field manually. If it is
modified to another value manually, the link is broken.
Description short is now used only on the course page, below title, in the
header. Description short is used in kanban card displayed in homepage.
Html description is used as a long course description on course page.
Beside, in the creation form of a course, the description textarea is now a
one-line input field to reflect the fact that it's supposed to be a relatively
short description.
Task ID: 2026165
PR #39388
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
Reproduce the issue
- Install Sales & Events
- Create an event with tickets (remember the category you choose)
- Configuration > Event categories
- Check "Ticketing" and add your tickets types
- Create a quotation with "EVENT_REG" product
- Select your event and your ticket
- Confirm the quotation
A wizard open with no lines in registration.
Cause
The backend response is different from the V12 due to some dark
and deep changes. The old response was converting the
`registration_event_ids` into a create action but it does'nt do
that anymore.
This commit specifies the action for the `registration_event_ids`.
closesodoo/odoo#40596
X-original-commit: 727675e5fce6bd4b0627491d43a6d8844362dbc8
Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
Reproduce the issue
- Install CRM
- Go in CRM > Reporting > Pipelines
- Click on the first "Group by" button
The dropdown menu is out of the screen at 100% zoom.
If we want to see the whole menu we have to dezoom ("Ctrl" + "-")
Cause
We are using bootstrap to handle dropdowns. Bootstrap uses a library
named "popper.js" to compute the position of the dropdown according
to the remaining space.
In this case, there is no space left to place the dropdown below
the button, so popper.js flip it above the button and
this cause the issue.
This commit disable the flip from popper.js and set the max height
of the dropdown menu to 140px:
- navbar: 42px
- control panel: 82px
- some margin: 6px
OPW-2116974
closesodoo/odoo#40530
X-original-commit: 9def02699d96f4dfd8dd806d2bec86a872a0c6eb
Signed-off-by: Jason Van Malder <jasonvanmalder@users.noreply.github.com>
Co-authored-by: aab-odoo <aab@odoo.com>
Go to the webshop checkout page.
Customise to add "Accept Terms & Conditions".
You get a traceback.
The 'change #checkbox_cgv' event was triggered before the initialisation
of the WebsiteSalePayment widget.
opw 2126456
opw 2122942
Closesodoo/odoo#39814closesodoo/odoo#40553
X-original-commit: 2741f3d9ab7833e3d777d87206537eca6894ef79
Signed-off-by: Nans Lefebvre (len) <len@odoo.com>
Open Accounting app, go to Accounting>"Lock Dates" and set a "Tax Lock
Date". Now create a Vendor Bill with invoice date prior to the tax lock
date, add a line, Odoo will display a warning. Remove the Tax from the
line, save.
The accounting date will be forced to tax_lock_date + 1 which should be
not the case since the order is without tax.
Adding a check to force the tax only when tax line ids are present.
opw-2115547
closesodoo/odoo#40570
X-original-commit: 8083f103287b7632351e06de6c48bf3ea32d90aa
Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
The method _get_tax_grouping_key_from_tax_line could give twice the same
key if we removed the analytic tags or tax ids: when 2 lines were
slightly different but are merged, a key conflict could happen.
If this is the case, drop the subsequent lines with the same key.
closesodoo/odoo#40583
X-original-commit: 7383452fbfc6718e32a46f5d727119171303211e
Signed-off-by: Quentin De Paoli (qdp) <qdp@openerp.com>
Task 2075249
The commit dd627b9 added a default_get to retrieve the default analytic
values. However, it was depending on self, which cannot be done in a
api.model
In this commit, we use an editable compute in order to update the
analytic values in all the cases, and to reduce the duplication of the
code.
X-original-commit: 69bf61bbc991eee96e673316ae8c37e98e1b8a1d