1. 08 Apr, 2022 1 commit
    • Romain Courteaud's avatar
      erp5_search_rank: init · ded055bc
      Romain Courteaud authored
      erp5_search_rank_catalog: do not destroy the previously calculated rank
      
      erp5_search_rank_catalog: Show module content before tools content
      
      erp5_search_rank_catalog: keep default value low, to prevent having huge rank score
      ded055bc
  2. 07 Apr, 2022 2 commits
  3. 05 Apr, 2022 8 commits
  4. 31 Mar, 2022 5 commits
  5. 30 Mar, 2022 1 commit
  6. 29 Mar, 2022 1 commit
  7. 24 Mar, 2022 2 commits
    • Julien Muchembled's avatar
      ERP55Form: drop a broken proxy field cache · 25ad9ece
      Julien Muchembled authored
      When rendering a proxy field, 3 different fields can come in play:
      1. the field to be rendered
      3. the template field (i.e. not a proxy field) that knows how to render
      2. possibly an intermediate proxy field that contains the value to render
      
      What's difficult when rendering a proxy field is to take the above 3 fields
      into account and this commit does it by creating a temporary field:
      1. 'field' variable in TALES
      2. the value
      3. the code
      
      Before this commit, 1 could be wrong.
      25ad9ece
    • Jérome Perrin's avatar
      *: stop using deprecated getWorkflowById · cc60f03a
      Jérome Perrin authored
      This was deprectated because we don't have get*ById for other modules
      and tools, we just use OFS API. This should also be slightly faster
      because one less method call (and one less call to warning)
      cc60f03a
  8. 23 Mar, 2022 4 commits
  9. 22 Mar, 2022 1 commit
  10. 21 Mar, 2022 2 commits
  11. 18 Mar, 2022 1 commit
    • Jérome Perrin's avatar
      web_renderjs_ui,officejs: don't use zope's favicon.ico · 03674992
      Jérome Perrin authored
      Most service worker precache scripts reference a favicon.ico, but this
      is using the default favicon.ico from Zope and even though it was included
      in all ERP5JS and OfficeJS web sites, this was mostly not used, only
      web_renderjs_ui web pages reference favicon.ico.
      
      There's a favicon.ico in erp5_xhtml_style skin folder, but the skin
      folder is not in ERP5JS skin selection.
      
      On Zope2, this caused ERP5JS and OfficeJS application use the default
      Zope favicon. On Zope4, the service worker can not fill its cache
      because of 404 errors, because since Zope commit 4f0770941 (Retired
      icons from the `Zope Management Interface` and various smaller cleanups
      of ZMI screens., 2011-07-02) there's no default favicon.ico anymore.
      
      To solve this, provide a favicon.ico in ERP5JS skin selection, by
      copying the one from erp5_xhtml_style. We also reference it explicitly in
      web site layout properties so that it remain in the cache.
      
      OfficeJS applications do not use favicon.ico explicitly. They use icons
      in their web application manifest, but this does not seem to be use as
      favicon unless the PWA is installed. This part is not addressed by this
      commit.
      03674992
  12. 17 Mar, 2022 6 commits
    • Jérome Perrin's avatar
      c1f288b3
    • Jérome Perrin's avatar
      01d73a50
    • Jérome Perrin's avatar
      Workflow: add a simple _checkConsistency implementation · d1be5248
      Jérome Perrin authored
      For now only checks that error_message is missing, but later we might
      extended this to perform more check on the workflow definition.
      d1be5248
    • Jérome Perrin's avatar
      core_test: increase expected value testWorkflowHistoryList.TestDedup · 0eca529a
      Jérome Perrin authored
      After df85ef46 (ERP5Workflow: DC Workflows are now ERP5 objects (!1378).,
      2020-11-18) we increased the expected value from 24 to 36, because it
      was just different with new workflow implementation and what was important
      is to have large buckets.
      
      After that, the test was flaky and eventually we changed the assertion
      from checking that the value equal the expected value to checking that
      it's larger to checking that it's larger to a satisfying value and we
      used the initial 24 for satisfying value.
      
      A large value here means the bucket contain many items, which happens
      when the pickle size is small
      
      We now understand that pickle are short when the pickler was able to
      deduplicate some strings because they were the same instances (as
      compared by `is` operator). Note that this deduplication happens before
      the one operated by Products.ERP5Type.Workflow.dedupStrings after bucket
      rotation, it's the "normal" deduplication from pickle happening when
      element are added to list.
      
      Because it's a good thing for disk usage to have small pickles, we raise
      our expectation and increase the expected minimal value to be 30.
      0eca529a
    • Jérome Perrin's avatar
    • Jérome Perrin's avatar
      component: fix error_message saved in every line of history · 8a335cca
      Jérome Perrin authored
      Because error_message variable was missing in component_validation_workflow,
      once the validation was refused for an error, every subsequent entry
      in workflow history was carrying the same error message.
      
      Adding the missing variable fix this, but it would cause diff every time
      we modify and re-export a component, so we also take care of not exporting
      it in business template, like we already did for other several variables.
      8a335cca
  13. 11 Mar, 2022 2 commits
  14. 10 Mar, 2022 4 commits
    • Vincent Pelletier's avatar
      CMFActivity.Activity.SQLBase: Factorise validation processing_node threshold · c629ee70
      Vincent Pelletier authored
      Avoid repeating processing_node condition for every single activity
      whose serialization_tag dependency is being checked. This reduces the
      length and execution complexity of produced SQL.
      c629ee70
    • Jérome Perrin's avatar
      Stop including empty items in dialog multilistfields · 9fc690ed
      Jérome Perrin authored
      The meaning of empty items for **multi** list fields for categories is
      not clear for dialogs (if user does not want to apply any filter, then
      the natural way would be to select nothing).
      
      This also caused issues with category fields, when the action script
      uses restrictedTraverse to get the uids corresponding to the category
      but a path is empty, like for example in 
      https://lab.nexedi.com/nexedi/erp5/blob/d51bb0413a806b3db0c5eb69dec06065b9601322/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountModule_getTrialBalanceReportSectionList.py#L40-48
      
      which does this:
      
      ```python
      # optional GAP filter
      node_uid = []
      gap_uid_list = []
      for gap in request.get('gap_list', ()):
        gap_uid_list.append(portal.portal_categories.gap.restrictedTraverse(gap).getUid())
      if gap_uid_list:
        node_uid = [x.uid for x in portal.portal_catalog(
                                         portal_type='Account',
                                         default_gap_uid=gap_uid_list)] or -1
      ```
      
      If an empty item is selected, then `gap_uid_list` will contain an entry for 
      `portal.portal_categories.gap.restrictedTraverse('').getUid()` which will be the
      uid of the gap base category. Searching with a base category uid nowadays does not
      match any document, but before 95e3eaec (CMFCategory: Do not index any Base Category
      as a related document., 2016-12-21), it was matching all documents having a relation
      from this base category and in the case of this trial balance report it was matching all
      accounts.
      
      This was a problem for old instances with accounts created before 95e3eaec, because when
      they were first indexed, they had the record in category table, so they were matched, but
      once they get re-indexed, they no longer had the record, so the result of this report when
      selecting the empty item became different, because accounts were no longer included.
      
      Looking back at this, maybe when updating to get 95e3eaec, we should have ran a migration
      to delete all these records (re-indexing every document in the background should be enough)
      so that if there's a problem, the problem happens right now and not after a few months
      after accounts are modified and re-indexed.
      
      When looking at this from end user level, theses empty items not only cause this problem,
      but also does not have a clear behaviour and are not needed, so the changes here are about
      removing these empty items.
      
      In accounting reports, there was a multi listfield showing all gap categories, "grouped" by
      chart of account - but the name of the chart of account was not displayed. This change to
      use a None item, which is rendered as disabled to display the chart of account name, but to
      do this we had to fix a bug in Formulator, these disabled items were only working properly
      for single item widgets, not multiple items widgets.
      
      See merge request nexedi/erp5!1572
      9fc690ed
    • Jérome Perrin's avatar
      Fix logins not published · 7b3839a5
      Jérome Perrin authored
      This addresses a regression from nexedi/erp5!1561 changing the class hierarchy caused Login to loose its docstring and became no longer publishable.
      
      This was problematic because it was not detected by the test suite, so HTML test is changed to use zope publication instead of calling the view on the context.
      
      Another notable point is that this behaves differently in ERP5JS, the Logins were still visible in ERP5JS. Because we don't actually rely on "no docstring on the class" to prevent publication, this is not changed.
      
      See merge request nexedi/erp5!1571
      7b3839a5
    • Jérome Perrin's avatar
      corporate_identity: fix markup in table of content · 1a5c5ace
      Jérome Perrin authored
      There was opening and closing tags mismatch:
          <div><a href="#references1_anchor">References</div></a>
      1a5c5ace