• Vincent Pelletier's avatar
    Optimise security group generation performance · 354c857e
    Vincent Pelletier authored
    Improvements compared to the previous implementation:
    - avoid looking up the user document again, when the PAS plugin already did
      that job
    - make it possible to call a single script when multiple sources of groups
      are based on the same documents, avoiding iterating unnecessarily on
      those same documents multiple times
    - avoid repeating the same membership value (ex: when a user has multiple
      assignments with a common membership subset)
    - avoid resolving the same relation more than once
    - do not go from document value to relative URL only to go from relative
      URL back to document value at the next step
    - move security group id extraction to unrestricted python, as the security
      overhead was taking a large amount of time
    In a security setup with 8 scripts (all Assignment-based), 6 base
    categories, and 4 Assignments (all valid), this implementation is 10 times
    faster at producing the same group id set as the previous one.
    354c857e