1. 12 Jun, 2024 4 commits
    • Carlos Ramos Carreño's avatar
      Fixes the error in test_onErrorCallback. · d6a3cf60
      Carlos Ramos Carreño authored
      The test testCMFActivity.TestCMFActivity.test_onErrorCallback was
      failing because some weak references were not dropped.
      The reason was that _DequeueMessageException was declared as global
      and it kept a traceback including the variables pointed by the weak
      references, preventing their garbage collection.
      This was fixed by using a class for the _DequeueMessageException
      instead of a singleton, and creating a new instance on every raise.
      d6a3cf60
    • Jérome Perrin's avatar
      testCMFActivity: support pickle protocol > 0 in test_insert_max_payload · 35de126e
      Jérome Perrin authored
      This test assumed that activating a method with a string of length `n+x`
      as argument would be serialized in `x` more bytes that activating the
      same method with a string of length `n` as argument, which is only true
      for protocol 0 for multiple reasons ( short strings and long strings
      are serialized differently, "frames" are used with protocol 5) and
      db.string_literal seems to introduce a difference.
      
      Change the test to mock Message.dump to produce longer dumps instead of
      relying on this assumption.
      35de126e
    • Jérome Perrin's avatar
      testCMFActivity: do not rely on unittest internals (_resultForDoCleanups) · 0ad9117d
      Jérome Perrin authored
      _resultForDoCleanups no longer exists on python3, getting the status
      of a test in teardown is very different accross python versions ( see
      https://stackoverflow.com/q/4414234 ) and just executing this code when
      the test failed only has the problem that a test method may count as
      two failures or errors, which is after all not a big problem.
      0ad9117d
    • Jérome Perrin's avatar
      ComponentTool: update new test snippet · 3c139dde
      Jérome Perrin authored
      On recent pylint, this is flagged as unnecessary-pass
      
      Also update the link that was pointing to python2 doc
      3c139dde
  2. 11 Jun, 2024 2 commits
  3. 09 Jun, 2024 2 commits
    • Jérome Perrin's avatar
      d885e20e
    • Jérome Perrin's avatar
      oauth_google_login: reimplement with oauthlib/requests · c3488a67
      Jérome Perrin authored
      Because the librairies used here were never ported to python3.
      
      Notable changes:
      
        - ERP5Site_createGoogleUserToOAuth is dropped
        - internal API changed radically, so customizations made by overriding
          scripts are broken.
        - the core logic is now implemented in a connector class (still in
          portal_oauth for simplicity, but it would be simpler to move it to
          portal_web_services)
      
      No changes required in the google console, the redirect uri is still
      ERP5Site_receiveGoogleCallback
      c3488a67
  4. 06 Jun, 2024 3 commits
  5. 05 Jun, 2024 6 commits
  6. 04 Jun, 2024 6 commits
  7. 03 Jun, 2024 6 commits
  8. 31 May, 2024 6 commits
    • Jérome Perrin's avatar
      simple fixes from python3 port · fe7a66eb
      Jérome Perrin authored
      See merge request nexedi/erp5!1941
      fe7a66eb
    • Jérome Perrin's avatar
      administration,core: wrong location when reporting pylint errors · 0b8b8475
      Jérome Perrin authored
      In Check Source Code report on business template and CodingStyle tests,
      the lines were off by 1 and column off by 2 for python scripts.
      0b8b8475
    • Jérome Perrin's avatar
      ERP5TypeTestCase: rework default manager password generation · 445e8fa8
      Jérome Perrin authored
      The default manager user (ERP5TypeTestCase) now have a random password
      generated at the beginning of test. The password is stored as a class
      attribute of the test case instance.
      Many tests have been updated to not generate manager user and use the
      existing one instead. When tests need to create users (for example
      users in the root acl_users), we try to give them a random password and
      to delete the users afterward.
      
      For functional tests, the approach is that ERP5TypeFunctionalTestCase
      sets cookies with manager username and password before running zelenium
      tests, so that in case tests want to log in again as manager, they can
      read the username and password from cookies.
      
      Another significant changes is that we no longer have the same user in
      ERP5/acl_users and /acl_users, some tests were logging in as the root
      user in ways that never seemed intentional.
      
      This also revealed (through test_manager_actions_on_portal from
      testERP5Core) that some tests were running with a user without all the
      expected permissions and the "Manager Components" actions was not
      visible for the default manager user. Fixing this also revealed that
      two actions ("Manage Components" and "Manage Callables") had the same
      priority, so the later was modified to use a different priority.
      445e8fa8
    • Jérome Perrin's avatar
      ERP5Security/ERP5KeyAuthPlugin: replace pycrypto by cryptography · 9964c13d
      Jérome Perrin authored
      pycrypto is unmaintained and the python3 version no longer work with
      buildout 3 (it uses a tricky way to run 2to3 in setup.py that no longer
      happens with pip based buildout3)
      
      Also make the rest of this file python3 compatible.
      9964c13d
    • Jérome Perrin's avatar
      */form_render: update an outdated comment · 3c64c1d3
      Jérome Perrin authored
      There is no fallback on group id, if no group title, no legend is
      displayed
      3c64c1d3
    • Jérome Perrin's avatar
      ERP5JS: display form groups legends · e78a57a1
      Jérome Perrin authored
      This is same as "xhtml_style: display form groups legends", but applied
      to ERP5JS.
      
      The returned type of `group_list` changed in the API, it use to be a
      list of lists with 2 elements: group id (str) and field list (list),
      it is now a list with 3 elements: group id (str), field list (list)
      and group title (str).
      
      There's now a new `legend` element in the DOM, only when the group has a
      title.
      e78a57a1
  9. 30 May, 2024 1 commit
    • Jérome Perrin's avatar
      xhtml_style: display form groups legends · 11cf3ce8
      Jérome Perrin authored
      For erp5_web it is possible to define form groups following a naming
      rule "group_id (Group Title)" and "Group Title" is displayed in a legend,
      according to this comment in form_render.zpt:
      
      > It is possible to specify a group id and a group title by naming a group following the
      >   "group id (Group Title)" pattern. In this case the group id will be used as fieldset css
      >   class and as tag id. The group title will be used as a legend for the fieldset. If no group
      >   title is found, we use group id as title.
      
      For historical reasons, the legend was hidden, this feature was only
      used in erp5_web, but this does not seem bad to enable it in
      erp5_xhtml_style as well.
      
      At the moment, this is not used much, this script
      
      ```py
      for sf in context.getPortalObject().portal_skins.objectValues():
        for f in sf.objectValues():
          if not hasattr(f, 'get_groups'):
            continue
          for group in f.get_groups():
            if '(' in group:
              print('/'.join(f.getPhysicalPath()[1:]), group)
      
      return printed
      ```
      
      when running on a site with many business template installed yields
      
      ```
      erp5/portal_skins/erp5_base/EmbeddedFile_view left (Document Reference)
      erp5/portal_skins/erp5_base/EmbeddedFile_view right (Publication Information)
      erp5/portal_skins/erp5_base/NotificationMessage_viewEditor left (Page Properties)
      erp5/portal_skins/erp5_knowledge_pad/Base_viewKnowledgePadFieldLibrary right column (Toolbox)
      erp5/portal_skins/erp5_web/StaticWebSite_viewRedirectAssistConfiguration left (Style)
      erp5/portal_skins/erp5_web/WebPage_view left (Page Properties)
      erp5/portal_skins/erp5_web/WebPage_view right (Publication)
      erp5/portal_skins/erp5_web/WebPage_view bottom (Content)
      erp5/portal_skins/erp5_web/WebPage_viewEditor left (Page Properties)
      erp5/portal_skins/erp5_web/WebPage_viewFieldLibrary left (Page Properties)
      erp5/portal_skins/erp5_web/WebPage_viewFieldLibrary right (Publication)
      erp5/portal_skins/erp5_web/WebPage_viewFieldLibrary bottom (Content)
      erp5/portal_skins/erp5_web/WebSection_view left (Content)
      erp5/portal_skins/erp5_web/WebSection_view right (Layout)
      erp5/portal_skins/erp5_web/WebSection_view center (Description)
      erp5/portal_skins/erp5_web/WebSection_view bottom (Subsections)
      erp5/portal_skins/erp5_web/WebSection_viewDefaultThemeConfiguration left (Style)
      erp5/portal_skins/erp5_web/WebSection_viewDefaultThemeConfiguration right (Widgets)
      erp5/portal_skins/erp5_web/WebSite_view left (Content)
      erp5/portal_skins/erp5_web/WebSite_view right (Layout)
      erp5/portal_skins/erp5_web/WebSite_view center (Description)
      erp5/portal_skins/erp5_web/WebSite_view bottom (Subsections)
      erp5/portal_skins/erp5_web/WebSite_viewRegistrationDialog left (User Login)
      erp5/portal_skins/erp5_web/WebSite_viewRegistrationDialog right (User Identity)
      erp5/portal_skins/erp5_web_minimal_theme/erp5_web_content_layout left column transparent (Logo)
      erp5/portal_skins/erp5_web_minimal_theme/erp5_web_content_layout left column (Navigation)
      erp5/portal_skins/erp5_web_minimal_theme/erp5_web_content_layout left column (Sections)
      erp5/portal_skins/erp5_web_minimal_theme/erp5_web_content_layout left column (Contents)
      erp5/portal_skins/erp5_web_minimal_theme/erp5_web_content_layout left column (Search)
      erp5/portal_skins/erp5_web_minimal_theme/erp5_web_content_layout left column (Debug)
      erp5/portal_skins/erp5_web_minimal_theme/erp5_web_content_layout right column (News)
      erp5/portal_skins/erp5_web_minimal_theme/erp5_web_content_layout right column (Toolbox)
      erp5/portal_skins/erp5_web_minimal_theme/erp5_web_content_layout right column (Highlight)
      erp5/portal_skins/erp5_web_minimal_theme/erp5_web_layout left column transparent (Logo)
      erp5/portal_skins/erp5_web_minimal_theme/erp5_web_layout left column (Navigation)
      erp5/portal_skins/erp5_web_minimal_theme/erp5_web_layout left column (Sections)
      erp5/portal_skins/erp5_web_minimal_theme/erp5_web_layout left column (Contents)
      erp5/portal_skins/erp5_web_minimal_theme/erp5_web_layout left column (Search)
      erp5/portal_skins/erp5_web_minimal_theme/erp5_web_layout left column (Debug)
      erp5/portal_skins/erp5_web_minimal_theme/erp5_web_layout right column (News)
      erp5/portal_skins/erp5_web_minimal_theme/erp5_web_layout right column (Toolbox)
      erp5/portal_skins/erp5_web_minimal_theme/erp5_web_layout right column (Highlight)
      erp5/portal_skins/erp5_web_minimal_theme/erp5_web_layout right column (Action)
      erp5/portal_skins/erp5_web_minimal_theme/erp5_web_section_layout left column transparent (Logo)
      erp5/portal_skins/erp5_web_minimal_theme/erp5_web_section_layout left column (Navigation)
      erp5/portal_skins/erp5_web_minimal_theme/erp5_web_section_layout left column (Sections)
      erp5/portal_skins/erp5_web_minimal_theme/erp5_web_section_layout left column (Contents)
      erp5/portal_skins/erp5_web_minimal_theme/erp5_web_section_layout left column (Search)
      erp5/portal_skins/erp5_web_minimal_theme/erp5_web_section_layout left column (Debug)
      erp5/portal_skins/erp5_web_minimal_theme/erp5_web_section_layout right column (News)
      erp5/portal_skins/erp5_web_minimal_theme/erp5_web_section_layout right column (Toolbox)
      erp5/portal_skins/erp5_web_minimal_theme/erp5_web_section_layout right column (Highlight)
      erp5/portal_skins/erp5_dms/Document_viewFieldLibrary left (Document Reference)
      erp5/portal_skins/erp5_dms/Document_viewFieldLibrary right (Publication Information)
      erp5/portal_skins/erp5_dms/ExternalSource_view left (Document Reference)
      erp5/portal_skins/erp5_dms/ExternalSource_view right (Publication Information)
      erp5/portal_skins/erp5_dms/OOoDocument_view left (Document Reference)
      erp5/portal_skins/erp5_dms/OOoDocument_view right (Publication Information)
      erp5/portal_skins/erp5_dms_base/File_view left (Document Reference)
      erp5/portal_skins/erp5_dms_base/File_view right (Publication Information)
      erp5/portal_skins/erp5_dms_base/Image_view left (Document Reference)
      erp5/portal_skins/erp5_dms_base/Image_view right (Publication Information)
      erp5/portal_skins/erp5_dms_web/WebIllustration_view left (Document Reference)
      erp5/portal_skins/erp5_dms_web/WebIllustration_view right (Publication Information)
      erp5/portal_skins/erp5_dms_web/WebIllustration_view bottom (Preview)
      erp5/portal_skins/erp5_dms_web/WebPage_view left (Document Reference)
      erp5/portal_skins/erp5_dms_web/WebPage_view right (Publication Information)
      erp5/portal_skins/erp5_dms_web/WebPage_view bottom (Preview)
      erp5/portal_skins/erp5_multimedia/Sound_view left (Document Reference)
      erp5/portal_skins/erp5_multimedia/Sound_view right (Publication Information)
      erp5/portal_skins/erp5_run_my_doc/Review_view left (Document Reference)
      erp5/portal_skins/erp5_run_my_doc/Review_view right (Publication Information)
      erp5/portal_skins/erp5_run_my_doc/TestPage_view left (Document Reference)
      erp5/portal_skins/erp5_run_my_doc/TestPage_view right (Publication Information)
      erp5/portal_skins/erp5_run_my_doc/TestPage_view bottom (Preview)
      erp5/portal_skins/erp5_run_my_doc/TestPage_viewFieldLibrary left (Page Properties)
      erp5/portal_skins/erp5_run_my_doc/TestPage_viewFieldLibrary right (Publication)
      erp5/portal_skins/erp5_run_my_doc/TestPage_viewFieldLibrary bottom (Content)
      erp5/portal_skins/erp5_run_my_doc/TestPage_viewTestReport bottom (Content)
      erp5/portal_skins/erp5_officejs_slideshow_editor/WebPage_viewForSlideshowEditor bottom (Preview)
      erp5/portal_skins/erp5_credential/CredentialRequest_view left (Personal Information)
      erp5/portal_skins/erp5_credential/CredentialRequest_view left (Organisation Information)
      erp5/portal_skins/erp5_credential/CredentialRequest_view right (Login Information)
      erp5/portal_skins/erp5_credential/CredentialUpdate_view left (Personal Information)
      erp5/portal_skins/erp5_credential/CredentialUpdate_view left (Organisation Information)
      erp5/portal_skins/erp5_credential/CredentialUpdate_view right (Login Information)
      erp5/portal_skins/erp5_km/WebSection_viewKMMinimalThemeConfiguration left (Colors)
      erp5/portal_skins/erp5_km/WebSection_viewKMMinimalThemeConfiguration right (Static Content)
      erp5/portal_skins/erp5_km/WebSection_viewKMMinimalThemeConfiguration left (Navigation)
      erp5/portal_skins/erp5_km/WebSection_viewKMMinimalThemeConfiguration right (Gadgets)
      erp5/portal_skins/erp5_km_theme/Base_viewKMFieldLibrary right column (Toolbox)
      erp5/portal_skins/erp5_km_theme/WebSection_viewMinimalKMWidgetFieldLibrary bottom gadget (Bottom Gadget)
      erp5/portal_skins/erp5_km_theme/WebSection_viewMinimalKMWidgetFieldLibrary right column gadget (Right Gadget)
      erp5/portal_skins/erp5_km_theme/erp5_km_minimal_content_layout bottom gadget (Bottom Gadget)
      erp5/portal_skins/erp5_km_theme/erp5_km_minimal_content_layout right column gadget (Right Gadget)
      erp5/portal_skins/erp5_km_theme/erp5_km_minimal_layout bottom gadget (Bottom Gadget)
      erp5/portal_skins/erp5_km_theme/erp5_km_minimal_layout right column gadget (Right Gadget)
      erp5/portal_skins/erp5_km_theme/login_form left registration (Login)
      erp5/portal_skins/erp5_km_theme/login_form right registration (New User Registration)
      ```
      
      and this does not look bad when viewing the forms.
      11cf3ce8
  10. 29 May, 2024 2 commits
  11. 28 May, 2024 2 commits