Reorder res.config.settings for website
Make website_id in no create in most view
Revamp res.configsetting and view Form simplified
Transform old 'useless' stored field for presentation by computed field.
We can consider that if there are not key, feature is disable.
Co-authored-by: rde-odoo
Co-authored-by: jke-odoo
Let x_1, ..., x_a, x_{a+1}, ..., x_{a+k}, x_{a+k+1}, ..., x_{n} be a record
sequence ordered by its 'sequence' field.
Suppose the reordering occurs between elements x_{a+k} and x_{a+1}.
If the subsequence x_1, ..., x_a is ordered, then it does not change.
This is also true of the subsequence x_{a+k+1}, ..., x_{n}.
The resquence function makes exactly this assumption, and only sends the server
the subsequence x_{a+1}, ..., x_{a+k} to update its 'sequence' field.
The update of x is done as follows: it is index + offset, where index is the
position of x in the subsequence, and offset is the 'sequence' of the first
element of the sequence (i.e. x_{a+1}.sequence).
It is easy to see that we need another hypothesis: that the sequence numbers are
unique. To show it, suppose that the sequence of x_1, ..., x_a is 0, then all
x_{a+1}, ..., x_{a+k} have sequence 1, and lastly all x_{a+k}, x_{a+k+1}, ...,
x_{n} have sequence 2. Then after the call to the server resequence, the
subsequence x_{a+1}, ..., x_{a+k} would have sequence numbers 1, 2,..., k.
Since the x_{a+k+1}, ..., x_{n} subsequence have 'sequence' value 1, this would
obviously be incorrect.
We fix the reordering of the data in the js frontend to be consistent with
what is done by the server.
Note that this is only pertinent for sequences of reordering moves, since
otherwise the data comes directly from the server.
opw 1867049
As blacklist email is unique and email is the only attribute,
it's a non sens to allow to duplicate a record.
+ To avoid import error on blacklist if import a duplicated address,
the create return the existing record instead of creating a new one
(which is not possible due to unique email constraint).
The duplicate was only editing the existing record.
Since modification on the group by filter on date field,
a forced value like group by date:month doesn't work anymore.
the user can choose the period but the forced value is not selected
when activating the group by.
Anyway, as it is more convenient to let the user choose the period
he wants to group by, the following groupby filters have been renamed
and the forced value have been removed.
In Mailings menu > Group By menu: rename 'Sent Month' by 'Sent Period'
In Mainling Lists > Group By menu: rename 'Creation Month' by 'Creation Period'
In Reporting > Group By menu: rename 'Scheduled Month' by 'Scheduled Perdiod'
Since 2f7c03d9ca it's not possible to log in as user 1.
However, we reset the base url when the admin logs in, which is now user 2.
This fixes wkhtml2pdf was not able to load css file, and probably some other side effects.
PR: none
Task: 1879620
Before this commit, if the currency of the company is not the reference
currency (rate = 1.0), then the conversion will be applied on the
sale.report with currency rate.
Example in the demo data:
- Company currency is USD
- Reference currency is EUR
- Currency rate of USD is 1.5289 (after 6th June)
Creating a SO with a total of 1000 USD in the USD company will
display 654.065 on the sale.report (= 1000 / 1.5289).
The applied computation simply takes the rate of the company currency,
which is not exactly correct. This does not cause many problem since,
usually, companies set their currency as the reference one
(with rate = 1).
Since e8f01b94ce, the rate is stored,
offering the possibility to make the code more robust and covering
the case detailled above.
The correct computation to apply is the one defined in `_convert`
method: 1000 * (1.5289 / 1.5289) (amount * (src rate / dst rate)).
This commit makes the correct convertion rate stored, instead of
the currency rate.
Doing that allow us to keep currency rates in the sale_timesheet
reporting test case.
- Description of the issue
Get internal server error while render page at website side
- Current behavior before commit:
name field does not exist in rating.rating model
because of this page should not be render and gives internal server error
- Desired behavior after commit:
set proper field res_name which is already exist in rating.rating model
Closes#26568
Since in hr_timesheet, we are binding 'timesheet_uom' widget
on existing one (and it might change according to the session
info), we came to the case a formatType is different from the
one of the widget in the registry. Then, the AbstractField
fallbacks on the field type as formatter. Example;
timesheet_uom widget is blind on float_time, but their keys
are differents in field registry, so the formatter will be
'float' and not 'float_time'.
This commit override the formatType determined by the
AbstractField for the float_time widget.
Continuation and ending of 1f848bf.
Before this commit, the bank statement reconciliation still sometimes
crashed.
Each step of the tour waits 10 secs before timeout and in this case,
changing URL may take more time since this commit b0a29c9b because
we added 'debug=assets'. It was probably a mistake.
So, removing this from the URL would probably solve the error but
the second step would always be dependent on the first.
It's why we decided to load the tour with the correct URL defined
in Python.
Co-authored-by: Adrien Dieudonné <adr@odoo.com>
Purpose
=======
Currently, as the admin as no email address, it's now impossible to install
the mail module without demo data, because of the following data:
<record model="mail.message" id="module_install_notification" context="{'mail_notify_noemail': True}">
<field name="model">mail.channel</field>
<field name="res_id" ref="mail.channel_all_employees"/>
<field name="message_type">email</field>
<field name="subtype_id" ref="mail.mt_comment"/>
<field name="subject">Welcome to Odoo!</field>
<field name="body"><![CDATA[<p>Welcome to the #general channel.</p>
<p>This channel is accessible to all users to <b>easily share company information</b>.</p>]]></field>
</record>
Because when creating a mail.message a user error is raised if no email address is found.
@api.model
def _get_default_from(self):
if self.env.user.email:
return formataddr((self.env.user.name, self.env.user.email))
raise UserError(_("Unable to post message, please configure the sender's email address."))
In a general way, all the users should have an email address.
Continuation and ending of 1f848bf.
Before this commit, the bank statement reconciliation still sometimes
crashed.
Each step of the tour waits 10 secs before timeout and in this case,
changing URL may take more time since this commit b0a29c9b because
we added 'debug=assets'. It was probably a mistake.
So, removing this from the URL would probably solve the error but
the second step would always be dependent on the first.
It's why we decided to load the tour with the correct URL defined
in Python.
Co-authored-by: Adrien Dieudonné <adr@odoo.com>
Purpose
=======
Currently, as the admin as no email address, it's now impossible to install
the mail module without demo data, because of the following data:
<record model="mail.message" id="module_install_notification" context="{'mail_notify_noemail': True}">
<field name="model">mail.channel</field>
<field name="res_id" ref="mail.channel_all_employees"/>
<field name="message_type">email</field>
<field name="subtype_id" ref="mail.mt_comment"/>
<field name="subject">Welcome to Odoo!</field>
<field name="body"><![CDATA[<p>Welcome to the #general channel.</p>
<p>This channel is accessible to all users to <b>easily share company information</b>.</p>]]></field>
</record>
Because when creating a mail.message a user error is raised if no email address is found.
@api.model
def _get_default_from(self):
if self.env.user.email:
return formataddr((self.env.user.name, self.env.user.email))
raise UserError(_("Unable to post message, please configure the sender's email address."))
In a general way, all the users should have an email address.
When using another login method than stored password (ldpa,i oauth...),
user's password is NULL in database. Passlib < 1.7 expect the encrypted
password to be a string, leading to an uncaught traceback, forbidding
login.
Related to the bug: 1874270
Purpose
=======
Keyboard shortcuts working on BlockUI and can cause some issues when used.
Specification
=============
It should not work and should not be display while some process is being executed.
- add function to remove the "accesskey" attributes to avoid the use of the
access keys while the blockUI is enable.
- add function to reset the "accesskey" attributes when the blockUI is disable.
- add condition to avoid the "Alt" key to reattribute access keys.
In the reconciliation widget, search for an amount like 5361.61
Before this commit, if the targetted line that you want to see was represented as 5361.61000001
you did not see it in the results of the search
After this commit, you do!
OPW 1872543
closes#26523
This behavior is useless in the front end (`clone_page`) as people cloning a
page will leave the page with copy in the page name without even noticing it.
Furthermore, creating or copying a website will bootstrap (clone) some pages,
suffixing all of these page by 'Copy'.
`main_object_request` was added in the navbar widget.
It would not work with `PageManagement` widget as it is added in the
website_root widget and not the navbar.
Moving it to the website_root will make the event accessible when triggering up
the event.
During rebase of 4f6ec1c, we remove accidently a part of aac21e4.
Side effect is that uid was False but success_login True.
Courtesy of @xmo-odoo for help