Skip to content
Snippets Groups Projects
  1. Sep 12, 2023
    • Pratik Awasthi's avatar
      [FIX] portal: set right color on text ellipsis when `a` tag is used in `td` · 70d35c31
      Pratik Awasthi authored
      
      Before this commit, when `a` tag is in a td, the color of text ellipsis
      (3 dots) is different than the text because the text-ellipsis is set on
      the parent element, that is `td` element and the color is set on the `a`.
      
      This commit sets the right color on td element when that element has `a`
      element.
      
      Limitation (only for td inside element with `o_portal_my_doc_table` class):
      if the `td` element contains `a` tag and another element
      then the color has to be set to that other html element otherwise,
      the color will be the one of the a tag.
      
      task-3251721
      
      closes odoo/odoo#134361
      
      X-original-commit: b28459dd
      Signed-off-by: default avatarXavier Bol (xbo) <xbo@odoo.com>
      Signed-off-by: default avatarPratik Awasthi (praw) <praw@odoo.com>
      70d35c31
  2. Sep 11, 2023
    • Fabien Meghazi's avatar
      [ADD] base: add support for custom functions in imbus & cron_trigger notify · 71b5ffd7
      Fabien Meghazi authored
      
      This patch provides the possibility to implement a custom security layer on top
      of Odoo's bus notification system (and cron live triggering system) which both
      use postgresql's NOTIFY command.
      
      The key addition is the `ODOO_NOTIFY_FUNCTION` environment variable (opt-in),
      which can now define a postgresql function to be called instead of the NOTIFY
      command. This allows for greater flexibility and control over the notification
      and triggering mechanisms within Odoo.
      
      closes odoo/odoo#130370
      
      Signed-off-by: default avatarFabien Meghazi (fme) <fme@odoo.com>
      71b5ffd7
    • Antoine Boonen's avatar
      [IMP] hr_expense: Don't hide taxes on hr.expense when product has cost · 25923e66
      Antoine Boonen authored
      
      Problem
      ---------
      In 15, taxes are hidden from hr.expense when the expense category has a
      cost. They can however be configured and added. The current behaviour is
      counter intuitive.
      
      Objective
      ---------
      Don't hide taxes when product has cost in v15.
      
      Solution
      ---------
      Remove the `hidden` attribute in the expense xml form as well as the
      `groups` attribute.
      
      task-3491868
      
      closes odoo/odoo#134147
      
      Signed-off-by: default avatarQuentin De Paoli <qdp@odoo.com>
      25923e66
    • miad-odoo's avatar
      [FIX] mass_mailing: fix finding duplicate mails · 66f9aa25
      miad-odoo authored
      
      Before the commit, the _get_seen_list() function in the mass_mailing module was
      not able to correctly identify all the duplicate email addresses in a given mass
      mailing. This was because the function chose and used only one way to find an
      email address for each record in the mailing list, even though there are many
      ways to find an email address for a record.
      
      For example, a crm.lead record might have an email address in its partner_id
      field, but it might also have an email address in its email_normalized field.
      This can vary from record to record.
      
      To fix this issue, the _get_seen_list() function was updated to only look at the
      email address to which emails have already been sent, rather than trying to
      fetch it from the record itself. This ensures that all duplicate emails are
      correctly identified and that no duplicate emails are sent in the mass mailing.
      
      Task-3234378
      
      closes odoo/odoo#134867
      
      X-original-commit: dc0ccc19
      Signed-off-by: default avatarThibault Delavallee (tde) <tde@openerp.com>
      66f9aa25
    • Francesco Ballerini's avatar
      [FIX] mrp: fix typo in mrp_immediate_production_views · 3bee8aa5
      Francesco Ballerini authored
      
      Typo error detected on `/mrp/wizard/mrp_immediate_production_views.xml`.
      It doesn't cause any issue on module installation or updates, but
      it's probably gonna cause issue on view inheritance.
      
      If you can confirm this is unintended typo I will edit commit msg.
      I also detected this on version 15.0 and 16.0.
      
      closes odoo/odoo#134773
      
      X-original-commit: 80e8222f
      Signed-off-by: default avatarWilliam Henrotin (whe) <whe@odoo.com>
      3bee8aa5
  3. Aug 29, 2023
  4. Sep 10, 2023
  5. Sep 08, 2023
  6. Sep 07, 2023
  7. Sep 06, 2023
  8. Sep 05, 2023
    • Abderraouf Ghrissi (abgh)'s avatar
      [FIX] sale_timesheet: default_service_policy not working in product form · f6869bf2
      Abderraouf Ghrissi (abgh) authored
      
      Before this commit:
      - There is a bug in odoo enterprise.
      project.project form view > invoicing notebook > services created using create and edit
      should be configured by default with an 'invoicing policy' set to 'based on timesheets'.
      Technically, while we're using 'default_service_policy' with the right value, we're
      getting a different value in the form.
      
      After this commit:
      - The bug is fixed.
      
      closes odoo/odoo#134360
      
      X-original-commit: fa034b2a
      Signed-off-by: default avatarXavier Bol (xbo) <xbo@odoo.com>
      f6869bf2
    • Maitri Patel's avatar
      [FIX] calendar: handle singleton exception for sync calendar event · 6ba4a671
      Maitri Patel authored
      This error occurs when recurrence_id has no records when the user tries to
      delete the sync calendar which has recurrent events.
      
      Error: 'Expected singleton: calendar.recurrence()'
      
      See-
      https://github.com/odoo/odoo/blob/15.0/addons/calendar/models/calendar_event.py#L715
      
      
      
      sentry-4367276387
      
      closes odoo/odoo#131155
      
      Signed-off-by: default avatarArnaud Joset (arj) <arj@odoo.com>
      6ba4a671
    • Jinjiu Liu's avatar
      [FIX] website_sale: add conditions to make sure partner's name exists · 593277de
      Jinjiu Liu authored
      Reproduction:
      1. Install Event, Sales, Website, Contacts
      2. Login as Admin, create a new portal user 123, set the password as 123
      3. Go to Contacts, find the created user, add a shipping address, leave
      the name blank
      4. Open another tab login as the portal user, place an order
      5. At the Address step, Edit the billing address, change the name from
      empty to “Test Name”, click next
      5. An error is thrown cause the new name is not equal to empty value
      
      Fix: this fix aimed the conditions we have in the previous PR: https://github.com/odoo/odoo/pull/111708
      This change will allow the user to add a name for shipping address at
      checkout.Without the fix, if you
      change the name of a shipping address, it won’t be able to get through.
      This is because of how we manage the shipping address, e.g. shipping
      address is managed as child partners. For shipping address, the check
      can_edit_vat is always false. See here: https://github.com/odoo/odoo/blob/14.0/addons/portal/models/res_partner.py
      Another check, e.g. if shipping is being edited, is added to make sure
      name/email can be changed for delivery address. For internal user, the
      editing of shipping address is not blocked because of the `share` check.
      But the same condition is used to ensure the consistency in case we
      change how the shipping address is managed in the future.
      
      Note: if the data is '' for name for example, the pre-process will
      convert it to `False`. Thus the edge case that `'' != False` doen't
      exist anymore
      
      Related PR: https://github.com/odoo/odoo/pull/111708
      
      
      
      opw-3126325
      
      closes odoo/odoo#134328
      
      X-original-commit: 38ca3917
      Signed-off-by: default avatarAntoine Vandevenne (anv) <anv@odoo.com>
      Signed-off-by: default avatarJinjiu Liu (jili) <jili@odoo.com>
      593277de
    • Yann Papouin's avatar
      [FIX] sale_timesheet: Invalid `read_group` usage · fb47754e
      Yann Papouin authored
      
      `read_group` signature is not respected: the offset integer param is filled with a list
      
      closes odoo/odoo#134265
      
      X-original-commit: d805521d
      Signed-off-by: default avatarXavier Bol (xbo) <xbo@odoo.com>
      fb47754e
    • Andrea Grazioso (agr-odoo)'s avatar
      [FIX] sale_timesheet_margin: sale order line cost · cb551051
      Andrea Grazioso (agr-odoo) authored
      
      Set Default UoM on Timesheet Settings page: Hours
      Set [Employee] Timesheet Cost (HR Settings tab): 65.00/hour
      Create a product [TEST] as follows:
      - Product type: service
      - Invoicing Policy: Based on Timesheets
      - Create on Order: Project & Task
      - Unit of Measure: Days
      - Purchase UoM: Days
      - Sales Price: 1.00
      - Cost: 0.00
      Create a sales order
      Add an order line with product [TEST], quantity 1
      Confirm. Project and task will be created
      On the task add a 1 hour timesheet entry for [Employee]
      Save and go back to the SO
      
      Issue: SO line cost is incorrectly computed.
      
      opw-3378688
      
      closes odoo/odoo#133448
      
      Signed-off-by: default avatarXavier Bol (xbo) <xbo@odoo.com>
      cb551051
    • tsm-odoo's avatar
      [FIX] mail: fix push to talk key registration · ecb77c94
      tsm-odoo authored
      
      Before this commit, the push to talk key was not correctly
      captured. Indeed, Alt/Control/Shift/Meta was condifered
      twice when present, resulting in an incorrect HotKey registration.
      
      Steps to reproduce:
      - Go a discuss channel
      - Access the call setting menu
      - Try to set your push to talk key to "Ctrl + Alt"
      - The HotKey is incorrect ("Ctrl + Alt + Alt").
      
      task-3058665
      
      closes odoo/odoo#134248
      
      Signed-off-by: default avatarAlexandre Kühn (aku) <aku@odoo.com>
      ecb77c94
    • Adnan Saiyed's avatar
      [FIX] web_editor: unexpected copy paste behaviour of link · db6d65a4
      Adnan Saiyed authored
      
      Current behaviour before commit:
      
      -When pasting copied content from editor inside
      link inserts text with HTML content, in result
      the pasted content seems isolated from the link.
      
      e.g. <a href="#">te[]st</a>
      	+ pasting <h1>123</h1>  <=>
      	<a href="#">te<h1>123</h1>st</a>
      
      Desired behaviour after commit:
      
      -Now only text content is pasted which makes
      pasted content as a part of the link.
      
      e.g. <a href="#">te[]st</a>
      	+ pasting <h1>123</h1>  <=>
      	<a href="#">te123st</a>
      
      closes odoo/odoo#125776
      
      Signed-off-by: default avatarDavid Monjoie (dmo) <dmo@odoo.com>
      db6d65a4
  9. Sep 04, 2023
    • prye-odoo's avatar
      [FIX] hr_holidays: handle tz attribute error if user timezone empty · 2b0f9e39
      prye-odoo authored
      When a user tries to create a leave request without linking an employee
      with the user and without a configured login user timezone, a traceback
      will be generated.
      
      Steps to reproduce:
      - Install the "hr_holidays" module.
      - Create a new user, e.g., "Test user", and login with another browser.
      - Login as an admin user and go to Settings > Users & Companies.
      - Search for "Test user" and set Timzone as empty.
      - Go to the Time Off menu and create a leave request; after that, a traceback
      will be generated.
      Error: AttributeError: 'bool' object has no attribute 'upper' 
      
      When a user tries to create a leave request without linking an employee with the
      user and without a configured login user timezone, the
      _get_start_or_end_from_attendance() function of the "hr.leave" object will call
      at that time timzone not getting.
      Code reference:
      https://github.com/odoo/odoo/blob/15.0/addons/hr_holidays/models/hr_leave.py#L111
      
      
      
      Sentry-4441512696
      
      closes odoo/odoo#133955
      
      Signed-off-by: default avatarSofie Gvaladze (sgv) <sgv@odoo.com>
      2b0f9e39
    • Nicolas Bayet's avatar
      [FIX] web_editor: prevent creation of RTCPeerConnection when offline · 8f9a3e1e
      Nicolas Bayet authored
      
      Before this commit, when the browser was offline and when an attempt
      to make a RTCPeerConnection was made, a traceback was raised by
      firefox:
      
      > InvalidStateError: Can't create RTCPeerConnections when the network is
      > down
      
      This commit prevents the creation of the RTCPeerConnection when the
      browser is offline.
      
      task-3186872
      
      closes odoo/odoo#133770
      
      Signed-off-by: default avatarDavid Monjoie (dmo) <dmo@odoo.com>
      8f9a3e1e
    • utag-odoo's avatar
      [FIX] website: make navbar content invisible when block invisible · d120b838
      utag-odoo authored
      
      Steps to reproduce:
       1. Go to the website
       2. Add website languages
       3. Drag Table Of Content
       4. Select snippet block
       5. Go to customize the block
       6. Select visibility conditionally - set visible/hide for languages.
      
      Before the commit, selecting block visibility conditionally makes only
      the block is invisible but not the navbar content is invisible due to the
      absence of the `data-visibility-id` attribute.
      
      In this commit, handling conditional visibility of the navbar when the
      the snippet block is invisible.
      Also, This PR addresses an issue where a scroll bar was appearing on
      `list-group-item` elements in Bootstrap 4.1.3. The scroll bar was caused
      by the CSS property `margin-bottom: -1px;`.
      
      task-3373943
      
      closes odoo/odoo#126705
      
      Signed-off-by: default avatarRomain Derie (rde) <rde@odoo.com>
      d120b838
    • Odoo's Mergebot's avatar
      [FW][MERGE] base, (test_)mail, various: be defensive in email formatting · bf090c48
      Odoo's Mergebot authored
      
      PURPOSE
      
      Be defensive when dealing with email fields, notably when having multi-emails
      or email field containing an already-formatted email.
      
      RATIONALE
      
      Two main use case of corner case usage of 'email' fields are tested in this PR
      and their support is improved
      
        * formatted emails: `"Full Name" <email@domain.com>` stored into the 'email'
          field;
        * multi emails: `email1@domain.com, email2@domain.com` stored into a single
          'email' field;
      
      IMPLICATION
      
      Email field is generally managed as "containing a valid email". This means
      it is sometimes used as it in 'formataddr' as well as to perform searches or
      identification checks. Example of issue: partner 'Raoul' has a formatted email
      like "Raoul" <raoul@raoul.fr>. Using 'formataddr' in email_from leads to
      
        from: "Raoul" <"Raoul" <raoul@raoul.fr>>
        -> which is incorrect (but often dynamically corrected by email servers);
      
      Email field holding multi-emails are not normalized, as current normalize
      is done only if the field holds a single email. It means
      
        * no easy finding based on 'email_normalized', e.g. various tools like
          '_mail_find_partner_from_emails' or 'find_or_create' do not find partners
          based on this email;
        * no exclusion list management;
        * issue with formatting, like
      
        to: "Raoul" <raoul@raoul.fr,raoul.other@raoul.fr>
        -> which is incorrect (but often dynamically corrected by email servers);
      
      USAGE: OUTGOING EMAILS
      
      Those use cases currently generate faulty outgoing emails. This is valid for
      recipients ('email_cc', 'email_to') as well as author ('email_from').
      
      For formatted emails: `email_to` is formatted again based on name and email
      which leads to sending emails to `"Full Name" <"Other"<email@domain.com>>`.
      
      Note that multi emails without formatting may work as it leads to email_to
      `"Full name" <email1@domain.com,email2@domain.com>`. Some outgoing email
      servers correctly send multiple emails. It depends on their fault
      tolerance.
      
      USAGE: FIND BASED ON EMAIL (NORMALIZED)
      
      When searching for partners (e.g. using '_mail_find_partner_from_emails' or
      'find_or_create') normalized version of input is used.
      
      In case of multi emails sanitize is 'False', as normalization expects a single
      email in the field. Therefore no partner is found. In processes that do a
      "search or create" (e.g. using a template on a record) this leads to creating
      a new partner (or several partners in case of multi emails) each time.
      
      USAGE: OTHER FLOWS
      
      Other flows are build on top of '_mail_find_partner_from_emails' / 'create'
      of outgoing emails and are impacted by formatted email / multi email usage.
      Those include notably
      
        * mass_mailing: '_message_get_default_recipients' should be defensive to
          give correct values when creating mailing emails;
        * mass_mailing: faulty emails is based on normalize and multi-emails are
          considered as faulty and ignored;
        * after post hook: '_message_post_after_hook' tries to link messages without
          author (but email_from) with newly-created partners, when partners are
          created from chatter. It is therefore impacted by those corner cases;
        * marketing_automation: built on top of mass_mailing and suffers from the
          same issues;
      
      USAGE: UNICODE
      
      Unicode in emails should be supported. 'formataddr' and IrMailServer notably
      received fixes to support unicode. Some check performed on email addresses
      fail when unicode is involved, which leads to some emails not being sent
      while they could.
      
      USAGE: WRONG EMAIL FORMATTING
      
      With input 'name email@domain.com' (missing chevrons allowing to clearly spot
      the email part) 'getaddresses' returns ('', 'name email@domain.com) i.e. the
      whole input is considered as being the email.
      
      To improve the heuristic we can add a fallback by recalling 'getadresses'
      on the input with spaces replaced by commas when it found only an email and
      no name. The new email will be split into sub pairs allowing to find the real
      email and various name parts, allowing to make a new name / email pair.
      
      Emails should not contain spaces thus this is coherent with email formation.
      This fallback actually comes from a specific code done in '_parse_partner_name'
      of Partner model. Supporting it directly at tools level make the behavior
      coherent for all models.
      
      SPECIFICATIONS
      
      This PR contains first tests to cover current support of those use cases. Then
      we gradually improve support of multi-emails and formatted emails in various
      layers of mail code, from mail.mail to mass_mailing or email formatting.
      
      See individual commit for more explanation, each of them solving a specific
      issue / use case.
      
      Task-2612945 (Mail: Defensive email formatting)
      
      closes odoo/odoo#133958
      
      Forward-port-of: odoo/odoo#74474
      Related: odoo/enterprise#46698
      Signed-off-by: default avatarThibault Delavallee (tde) <tde@openerp.com>
      bf090c48
    • Thibault Delavallée's avatar
      [FIX] mail: correctly parse formatted email in JS · 8694ff1e
      Thibault Delavallée authored
      Formatted emails using our own formataddr contains quotes to correctly
      separate name from emails, like'"Name" <email@domain.com'. However
      JS parse function does not correctly handle quotes, assuming everything
      being left of opening chevron is the name.
      
      Task-2612945 (Mail: Defensive email formatting)
      
      Part-of: odoo/odoo#133958
      8694ff1e
    • Thibault Delavallée's avatar
      [FIX] tools, base, mail: add a fallback when parsing wrongly-formatted emails · 325e0ab4
      Thibault Delavallée authored
      With input 'name email@domain.com' (missing chevrons allowing to clearly spot
      the email part) 'getaddresses' returns ('', 'name email@domain.com) i.e. the
      whole input is considered as being the email.
      
      To improve the heuristic we can add a fallback by recalling 'getadresses'
      on the input with spaces replaced by commas when it found only an email and
      no name. The new email will be split into sub pairs allowing to find the real
      email and various name parts, allowing to make a new name / email pair.
      
      Emails should not contain spaces thus this is coherent with email formation.
      This fallback actually comes from a specific code done in '_parse_partner_name'
      of Partner model. Supporting it directly at tools level make the behavior
      coherent for all models.
      
      Task-2612945 (Mail: Defensive email formatting)
      
      X-original-commit: odoo/odoo@b2f3f0f3e13cef993541bcd093e61ffbb6a8c92e
      Part-of: odoo/odoo#133958
      325e0ab4
    • Thibault Delavallée's avatar
      [IMP] tools, base, mail: better support non-ascii / IDNA when normalizing · 2ca736b8
      Thibault Delavallée authored
      PURPOSE
      
      Be defensive when dealing with email fields, notably when having multi-emails
      or email field containing an already-formatted email.
      
      SPECIFICATIONS
      
      As of rfc5322 section 3.4.1 local-part is case-sensitive. However most main
      providers do consider the local-part as case insensitive. With the introduction
      of smtp-utf8 within odoo, this assumption is certain to fall short for
      international emails. We now consider that
      
        * if local part is ascii: normalize still 'lower' ;
        * else: use as it, SMTP-UF8 is made for non-ascii local parts;
      
      Concerning domain part of the address, as of v14 international domain (IDNA)
      are handled fine. The domain is always lowercase, lowering it is fine as it
      is probably an error. With the introduction of IDNA, there is an encoding
      that allow non-ascii characters to be encoded to ascii ones, using 'idna.encode'.
      
      Also remove usage of 'email_re' in mailing email check. It is too restrictive
      compared to real formatting we support (or try to). Valid outgoing emails
      were directly canceled, notably when containing unicode.
      
      Task-2612945 (Mail: Defensive email formatting)
      
      X-original-commit: odoo/odoo@a70327daaf3b88af887f657c222222e7baec29c1
      Part-of: odoo/odoo#133958
      2ca736b8
    • Thibault Delavallée's avatar
      [IMP] various: support multi-emails in mailings · 6c53bc6f
      Thibault Delavallée authored
      PURPOSE
      
      Be defensive when dealing with email fields, notably when having multi-emails
      or email field containing an already-formatted email.
      
      SPECIFICATIONS: MAIL COMPOSER IN MAILING
      
      When using the composer with a mailing, it currently skips recipients whose
      email is a multi-email due to the strict usage of 'email_normalize'.
      
      We can improve multi-email support by effectively checking for the first
      email found, using the "less strict" mode of normalize. It means more emails
      are detected as valid, and therefore sent.
      
      Due to lower support of multi-emails when sending emails, this even allows
      to send multiple emails as all emails are mailed.
      
      SPECIFICATIONS: DEFAULT RECIPIENTS
      
      Mailings are generally done using default recipients, aka using a model method
      that returns the people to mail: customers ('partner_id'), customer emails
      ('email_from'), specific implementation, ...
      
      This is implementation using '_message_get_default_recipients' that returns
      'partner_ids', 'email_to' and 'email_cc' that are then used in the mail
      composer to generate final recipients.
      
      In this commit we better handle the content of email fields to avoid issues
      with multi-emails. For that purpose we correctly split the content of those
      fields. We now have several 'email_to' for records having multi-emails instead
      of a single badly-formatted 'email_to'.
      
      Task-2612945 (Mail: Defensive email formatting)
      
      X-original-commit: odoo/odoo@516ccbc9e716b887cbf712c72af37fd2a3c7dbe9
      Part-of: odoo/odoo#133958
      6c53bc6f
Loading