1. 23 Aug, 2022 1 commit
    • Jérome Perrin's avatar
      core,monaco_editor: python language support 🚧 · d2b29af1
      Jérome Perrin authored
      some work in progress changes to improve developer experience
      
      monaco_editor: increase debounce timeout for pylint checks XXX
      
      on very large python files (>1000 lines) sometimes they queue up and we
      have to wait for all requests that were queued by zope.
      
      XXX maybe this does not happen when accessing through haproxy/apache, I
      am observing this when hitting zope directly
      
      jedi: generate stubs WIP
      
      ERP5: "quick and dirty" type annotations XXX
      
      IIRC the only thing needed is that ERP5TypeTestCase.getPortal is an
      ERP5Site
      
      monaco_editor: also enable jedi for codelens ( WIP: ZMI only )
      
      core: pass "language support url" to text editors XXX
      
      For now this is just the portal_url, but I'm thinking it could be a
      proper tool.
      
      monaco_editor: enable pylint in gadget version
      
      because pylint is a bit slow on large components, debounce every 2
      seconds. TODO: this is too slow.
      
      monaco_editor: enable formatting provider for python
      
      This makes "Format Document" / "Format Selection" work.
      
      monaco_editor: enable completion provider for python
      
      this makes completions works when using Ctrl+space
      
      monaco_editor: pass portal_type to checkPythonSourceCode
      
      python_support: new business template to act as a language server for python
      
      checkPythonSourceCode: add a cache
      
      When using checkPythonSourceCode integrated in the source code editor,
      for a scenario where developer edit a component and save we can benefit
      from caching the check message for the source code content, because the
      same check that the one happening in the editor will happen when the
      component is saved.
      
      This cache varies on:
       - "component_packages" cache cookie which is reset every time some
      component code is edited.
       - zope startup time to take into account editions of file system code.
      This assumes that after reseting file system code zope will be
      restarted.
       - portal_type, because the checks performed by this function also
      depend on portal type.
      
      jedi wip
      
      administration: keep using pylint only for now
      
      monaco_editor: jedi WIP
      
      core: use mypy to check python code ( WIP experiment )
      
      Revert "core: use mypy to check python code ( WIP experiment )"
      
      This reverts commit cfa27232.
      
      ERP5TypeTestCase: jedi workarounds
      
      monaco_editor: WIP reference provider for python
      
      monaco_editor: jedi wip (no longer use /tmp/)
      
      yapf: adjust config following up Gabriel feedback
      d2b29af1
  2. 18 Aug, 2022 6 commits
    • Jérome Perrin's avatar
      Listbox,SelectionTool: use make_query instead of crafting URL manually · 3cb786cc
      Jérome Perrin authored
      Using make_query makes sure that the query parameters are properly
      encoded and also change selection_index to become an int, because
      it keeps the type of parameters.
      
      As a consequence, we had to adjust a few place in the code where
      selection_index was tested for truthiness: because "0" as a string is
      true, but 0 as an int is not. For that, we changed to test the presence
      of selection_name instead of testing selection_index, as they are always
      used together.
      
      This fixes a problem that & in URL was encoded twice for listbox
      anchor links ( bug_module/1137 )
      3cb786cc
    • Jérome Perrin's avatar
      *: reorganise indexation methods · 2bd1d4ed
      Jérome Perrin authored
      02011d8e (immediateReindexObject: use super user to reindex script,
      2015-12-14) did not apply for inventory, because they were overloading
      immediateReindexObject.
      Introduce a new level, _immediateReindexObject that will hold the actual
      reindexing logic.
      
      Previously this method was using PortalContent.reindexObject which was
      monkey patched, to make things less complex and more future proof, move
      the monkey patch to a method on base class.
      
      This also drops alternateReindexObject on BalanceTransaction, because it
      is already defined in Inventory
      2bd1d4ed
    • Jérome Perrin's avatar
      ERP5TypeLiveTestCase: close request at the end of each test · e605544e
      Jérome Perrin authored
      This is supposed to fix "Should not load state for ${oid of a skin} when
      the connection is closed" sometimes happening with live tests (especially
      when the test self.publish and the developer access the site while the
      test is suspended on a debugger breakpoint).
      
      The object accessed after the connection is closed was a skin (python
      script, sometimes page template or form) that was cached in SKINDATA.
      The mechanism to prune entries from the cache uses REQUEST.hold API
      which expects that REQUEST.close is called on request, but because
      requests were not closed at the end of the request, it happened that
      the cache was reused from another connection.
      
      This change to close the requests, like ERP5TypeTestCase is doing in
      tearDown (the actual close is done by Testing.ZopeTestCase.connections).
      
      By closing requests at the end of tests, we also have to change so that
      at the beginning of the test we initialize the request, by using the same
      setSite and setupCurrentSkin that are done in ERP5TypeTestCase.
      e605544e
    • Jérome Perrin's avatar
      ProxyField: use Skinnable API to get current skin · 8a8f9384
      Jérome Perrin authored
      SKINDATA is an implementation detail that should not be accessed from
      this level.
      8a8f9384
    • Jérome Perrin's avatar
      BusinessTemplate: drop useless fixZSQLMethod in SkinTemplateItem.install · 45e45842
      Jérome Perrin authored
      In SkinTemplateItem.install, self._objects contains entries for skin
      folders and for all skins. objectValues method calls was called for skin
      folders (as expected) and also for all skins, which acquire objectValues
      from skin folder and do the work again.
      
      This simplifies this by only running this for skin folders.
      45e45842
    • Jérome Perrin's avatar
      Listbox: refactor computation of "default" URL · 9ca9d73d
      Jérome Perrin authored
      "default" URL is the URL when listbox column does not use URL column
      and when the brains do not have a getListItemUrl method.
      
      Move the computation in a lazyMethod, so that it is computed only once
      per line instead of once per cell.
      
      Also remove a try/except, I don't think this code is supposed to get an
      AttributeError
      9ca9d73d
  3. 09 Aug, 2022 2 commits
  4. 02 Aug, 2022 10 commits
  5. 28 Jul, 2022 1 commit
  6. 13 Jul, 2022 1 commit
    • Jérome Perrin's avatar
      accounting: fix grouping dialog loosing section category on next page · 0d8242de
      Jérome Perrin authored
      In xhtml_style, just after clicking next or previous page in the listbox
      buttons, the values selected in 'Section Category' and 'Section Category
      Strict' were not used, because they were used from request and not from
      as normal script parameters.
      
      This fixes only the xhtml_style version, ERP5JS has another problem that
      dialog fields values are reset when going to next page, so it would also
      need this problem to be fixed.
      0d8242de
  7. 12 Jul, 2022 1 commit
  8. 07 Jul, 2022 2 commits
  9. 01 Jul, 2022 1 commit
  10. 27 Jun, 2022 1 commit
  11. 24 Jun, 2022 1 commit
  12. 23 Jun, 2022 2 commits
  13. 22 Jun, 2022 3 commits
  14. 21 Jun, 2022 4 commits
  15. 20 Jun, 2022 2 commits
  16. 15 Jun, 2022 2 commits