Skip to content
Snippets Groups Projects
  1. Sep 07, 2023
    • Hugo Santos's avatar
      [CLA] corporate/factorlibre - Add contributor · feb22b43
      Hugo Santos authored
      
      closes odoo/odoo#134469
      
      Signed-off-by: default avatarMartin Trigaux (mat) <mat@odoo.com>
      feb22b43
    • yhu-odoo's avatar
      [FIX] mrp: wrong workorder state in tests · a2574b45
      yhu-odoo authored
      As a good pratice, in compute method, we assign a default value before
      we do the actual calculation to avoid issues like no value is assigned
      for fields with required=True. For example `reservation_state`:
      https://github.com/odoo/odoo/blob/7ebc8cc5771d069b32722d493dd0ae5341e54c96/addons/mrp/models/mrp_production.py#L572
      However, since workorder state is depends on this field:
      https://github.com/odoo/odoo/blob/7ebc8cc5771d069b32722d493dd0ae5341e54c96/addons/mrp/models/mrp_workorder.py#L158-L159
      
      
      For some reason, this unexpected false value can lead to some transit
      wrong state in tests (it happens when you run the test, but correct
      state show when you put a breakpoint and step into each state
      computation).
      To solve it, we remove this default value assignment. It should be safe
      since this field is not required.
      
      closes odoo/odoo#134264
      
      Related: odoo/enterprise#46875
      Signed-off-by: default avatarSteve Van Essche <svs@odoo.com>
      a2574b45
    • Gauthier Wala (gawa)'s avatar
      [IMP] l10n_pl_{jpk/sale_stock}: Add fields necessary for JPK · 82e85c14
      Gauthier Wala (gawa) authored
      
      For the JPK and the EDI, a lot of additional informations are needed.
      We provide them in community, so it's available later for EDI.
      
      The delivery date is needed in Poland, and we compute it if
      sale_stock is installed. It will be done later for all localizations,
      but not in stable, so we will merge it with the other ones later.
      
      closes odoo/odoo#115225
      
      Related: odoo/enterprise#38166
      Signed-off-by: default avatarOlivier Colson (oco) <oco@odoo.com>
      82e85c14
    • Gauthier Wala (gawa)'s avatar
      [FIX] l10n_pl: tax report and tax changes for JPK · f41aa416
      Gauthier Wala (gawa) authored
      Some taxes and tax report lines are needed for the export of JPK
      (and EDI that will be done later)
      
      Part-of: odoo/odoo#115225
      f41aa416
    • Maruan Aguerdouh (magm)'s avatar
      [FIX] website_sale: add to cart modal properly displayed on list view · 643141dd
      Maruan Aguerdouh (magm) authored
      
      Made the modal for add to cart to be the same when in Grid view and list
      view. We achieve this by modifying the css inside
      `#products_grid.o_wsale_layout_list`.
      
      opw-3235969
      
      closes odoo/odoo#133439
      
      Signed-off-by: default avatarAntoine Vandevenne (anv) <anv@odoo.com>
      643141dd
    • Nicolas Bayet's avatar
      [FIX] web_editor: strengthen collab stale detection & recovery · 37836c0a
      Nicolas Bayet authored
      
      Before this commit, the stale document detection was imprecise and
      incomplete.
      
      The stale document could happen in different scenario:
      1)  Client B save when client A is disconnected (therefore client A
          should be notified that the document is stale upon reconnection):
      
          - For that scenario, the code had a heuristic to detect if the
          internet connection disconnected and reconnected but was imprecise
          as the browser api is not 100% reliable on all browser and
          platforms. That made the code under-checking or over-checking with
          the server.
      
      2)  The user has not yet focused on the element and before this
          commit, the stale document was not detected.
      
      3) If there is a partition in the peer to peer network and a member of
         another partition that save, all other partition will not be aware
         that they are working on a stale document.
      
      4) The stale document happen before 2 peers could be fully connected.
      
      For any of those scenarios, if a stale document was not detected and
      the user tried to save changes, only then, a popup would inform that
      the version was stale. And if the user closed the tab thinking the
      document would automatically save, the change would not be saved
      (without warning).
      
      This commit:
      1) improve detection of stale document
      To detect the document this commit add a message in the odoo bus.bus
      for the channel of the record for each write. That will ensure the
      message to be received as soon as a user is connected to odoo.
      
      2) improve recovery from stale document
      Before this commit, the recovery was only made from the server.
      
      As a detection is now direct (rather than delayed by the previous
      heuristic), a document could be detected stale before receiving a step
      that would not make it stale. Therefore, we cannot just reset from the
      server as a recovery mechanism.
      
      To recover, this commit first tries to reset from missing steps from
      all peers. If unsuccessful, it will tries to reset from a snapshot. If
      unsuccessful, it will reset from the server.
      
      3) add a mechanism for aborting requests
      To prevent unexpected concurrency behavior, this commit add a mechanism
      to abort requests.
      
      4) a framework for testing the collaboration of the wysiwyg
      As it could be quite tedious and error prone to manually tests
      concurrency issues related to the wysiwyg, this commit add a framework
      for testing the collaboration of the wysiwyg and test the detection
      and recovery of stale document.
      
      task-3217965
      
      closes odoo/odoo#128847
      
      Signed-off-by: default avatarDavid Monjoie (dmo) <dmo@odoo.com>
      37836c0a
    • Nicolas Bayet's avatar
      [FIX] web_editor: move _getNewPtp out of a closure · 115393d5
      Nicolas Bayet authored
      In a subsequent commit, we need to change the content of the method
      `_getNewPtp` and to patch it in tests.
      
      To make that commit more readable by understanding which lines
      changed, this commit moves the creation _getNewPtp to the Wysiwyg
      prototype rather in a closure.
      
      task-3217965
      
      Part-of: odoo/odoo#128847
      115393d5
  2. Sep 06, 2023
  3. Sep 05, 2023
    • Arthur Detroux (ard)'s avatar
      [IMP] website: stay in backend on F5 or CTRL-R while in website preview · e69c6eae
      Arthur Detroux (ard) authored
      Since [1], it was no longer possible to refresh the page and stay in
      the backend at the same time. This was known at the time and was an
      accepted downside.
      
      However, with this commit, a compromise has been found, if the keyboard
      shortcut for a refresh (CTRL-R or F5) is used while the Website Preview
      is shown (mounted), then the website preview will do its best to keep
      the user inside the backend.
      
      This will make developing features for the website modules easier, as
      before, every refresh would require an extra click to return to the
      backend.
      
      To note: the debug=[mode] param would also be lost
      on refreshing a website page. Starting 16.4, since [2], this would make
      tracebacks harder to read as for every refresh, they would no longer
      point to the source, rather just the minified file. Therefore, with
      this commit, we also keep the debug mode in the URL when doing a
      keyboard refresh.
      
      [1]: https://github.com/odoo/odoo/commit/1c18b79972c3b0a97197b98390e0ba9fda703585
      [2]: https://github.com/odoo/odoo/commit/59f49d6a8c856a5d8ca28dcfd7840baaa1c7672f
      
      
      
      task-3458691
      
      closes odoo/odoo#131236
      
      Signed-off-by: default avatarRomain Derie (rde) <rde@odoo.com>
      e69c6eae
    • prye-odoo's avatar
      [FIX] hr_holidays: handle tz attribute error if user timezone empty · 904edbdb
      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#134208
      
      X-original-commit: 2b0f9e39
      Signed-off-by: default avatarSofie Gvaladze (sgv) <sgv@odoo.com>
      904edbdb
    • Maximilien (malb)'s avatar
      [FIX] l10n_de: translation issues · 696cfac2
      Maximilien (malb) authored
      
      There was inconsistency in the translation for the words "price unit", with this
       commit all the "price unit" are translated the same.
      
      closes odoo/odoo#134107
      
      Task-id: 3262408
      Signed-off-by: default avatarBrice Bartoletti (bib) <bib@odoo.com>
      Signed-off-by: default avatarMaximilien La Barre (malb) <malb@odoo.com>
      696cfac2
    • Maximilien (malb)'s avatar
      [FIX] l10n_de: print and preview css · f7812ae8
      Maximilien (malb) authored
      This PR solve two things:
      - Preview: due to the hardcoded width the preview didn't take all the page and
      was push on the left.
      - PDF: Weird stuff happened with the header, he was hiding information below
       the header.
      
      Task-id: 3262408
      Part-of: odoo/odoo#134107
      f7812ae8
    • Maximilien (malb)'s avatar
      [FIX] l10n_de: shipping address traceback · 0d273e68
      Maximilien (malb) authored
      Before this PR, when there is no shipping address, the pdf show an empty
      "Shipping Address" header. By changing the colspan dynamically we can manage to
      keep the layout like it was and remove the useless section.
      
      Task-id: 3262408
      Part-of: odoo/odoo#134107
      0d273e68
    • Yolann Sabaux's avatar
      [FIX] account: display the move to check · d8498091
      Yolann Sabaux authored
      
      Steps to reproduce:
      - Set "To Check" for a bill in the Bill list view
      - go back to the dashboard
      
      Issue:
      There won't be the "To Check" shortcut as it was the case in 15.0
      
      opw-3455414
      
      closes odoo/odoo#133296
      
      Signed-off-by: default avatarWilliam André (wan) <wan@odoo.com>
      d8498091
    • Sina Chaichi Maleki (cmsi)'s avatar
      [FIX] hr_holidays: Ensure the name is mandatory in public holidays · 732f27c4
      Sina Chaichi Maleki (cmsi) authored
      
      The name field was previously optional when adding a new instance
      from the tree view, which in the absence of a name, 'false' is indicated
      in the calendar view. The field is now set as mandatory.
      
      closes odoo/odoo#132772
      
      Task: #3469914
      Signed-off-by: default avatarSofie Gvaladze (sgv) <sgv@odoo.com>
      732f27c4
    • Aaron Bohy's avatar
      [FIX] web: DELETE_ALL command should forget, not delete · 57b37c0a
      Aaron Bohy authored
      Have a list view with a many2many field, and an onchange on a
      field in the list that returns a command 5 (CLEAR, or DELETE_ALL
      in the js terminology). Before this commit, the command 5 was
      mapped to a list of commands 2 (DELETE), i.e. all records in the
      many2many relation were deleted when the record was saved. We
      instead want those records to be removed from the relation, i.e.
      the command 5 should be mapped to a list of command 3 (UNLINK, or
      FORGET in the js terminology).
      
      Note that this only impacts list and kanban views, as the form
      view still used the BasicModel.
      
      Issue reported here https://github.com/odoo/odoo/commit/48ef812a635f70571b395f82ffdb2969ce99da9e#r126483773
      
      
      
      closes odoo/odoo#134318
      
      Signed-off-by: default avatarFrancois Georis (fge) <fge@odoo.com>
      57b37c0a
    • Victor Piryns (pivi)'s avatar
      [FIX] web: truncate filename when importing custom module via studio · 8a3e2739
      Victor Piryns (pivi) authored
      
      Issue:
      When uploading a large custom module via studio for importing, Chrome
      crashes with an internal SIGKILL and Firefox manages to load, but is
      really sluggish.
      
      Steps to reproduce:
      - Install Studio
      - In the Apps Dashboard > Customizations > Import
      - Upload a large custom module (50 MiB)
      - Chrome crashes, while on Firefox the page is sluggish
      
      Cause:
      In the module `base_import_module`, the `module_file` doesn't have a
      corresponding `filename`, therefor the name used to be displayed in
      the wizard is the content of the binary file in base64 encoding...
      For a module that is of a large size, this is a *gigantic* string
      that crashes Chrome and slows down the DOM on Firefox.
      
      Fix:
      Truncate the maximum filename that is displayed in the template to
      the max length necessary to encode in base64 (0xFF) 255 bytes, as
      255 bytes is the maximum filename size on Linux/Windows/MacOS.
      
      Affected versions:
      16.0 up to master
      
      Reference:
      opw-3491998
      
      closes odoo/odoo#134165
      
      Signed-off-by: default avatarAaron Bohy (aab) <aab@odoo.com>
      8a3e2739
    • Thomas Lefebvre (thle)'s avatar
      [FIX] mail: add luxon in context · 0b0fd85c
      Thomas Lefebvre (thle) authored
      
      Steps to reproduce:
      -------------------
      - go to Appraisal app;
      - click on Activity button;
      - schedule an activity if there is none;
      
      Issue:
      ------
      A traceback occurs.
      
      Solution:
      ---------
      Add luxon library to context.
      
      Note:
      -----
      Backport of commit:
      e602a555
      
      opw-3488028
      
      closes odoo/odoo#134101
      
      Signed-off-by: default avatarFlorent Dardenne (dafl) <dafl@odoo.com>
      0b0fd85c
    • Odoo's Mergebot's avatar
      [FW][MERGE] base, (test_)mail, various: be defensive in email formatting · a33fb767
      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#134188
      
      Forward-port-of: odoo/odoo#134143
      Forward-port-of: odoo/odoo#74474
      Related: odoo/enterprise#46828
      Signed-off-by: default avatarThibault Delavallee (tde) <tde@openerp.com>
      a33fb767
    • Thibault Delavallée's avatar
      [FIX] mail: correctly parse formatted email in JS · f94300d1
      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)
      
      X-original-commit: odoo/odoo@8694ff1e2ebcf79b0f3f9e26984df9388203b687
      Part-of: odoo/odoo#134188
      f94300d1
    • Thibault Delavallée's avatar
      [FIX] tools, base, mail: add a fallback when parsing wrongly-formatted emails · 4911dd2a
      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#134188
      4911dd2a
    • Thibault Delavallée's avatar
      [IMP] tools, base, mail: better support non-ascii / IDNA when normalizing · d265356a
      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#134188
      d265356a
Loading