kopano-archiver-aclset 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #!/usr/bin/env python
  2. import logging
  3. import sys
  4. import kopano
  5. """
  6. enable or disable write permissions for users archived to subfolders
  7. """
  8. ROLE_OWNER = [
  9. 'folder_owner',
  10. 'folder_visible',
  11. 'delete_own',
  12. 'edit_all',
  13. 'delete_all',
  14. 'create_subfolders',
  15. 'edit_own',
  16. 'read_items',
  17. 'create_items',
  18. ]
  19. ROLE_REVIEWER = [
  20. 'folder_visible',
  21. 'read_items',
  22. ]
  23. def logger(options):
  24. logging.basicConfig(stream=sys.stdout, level=options.loglevel)
  25. return logging.getLogger('aclset')
  26. def opt_args():
  27. parser = kopano.parser('spkul')
  28. parser.add_option('-w', '--writable', dest='writable', action='store_true',
  29. help='Enable or disable write permissions')
  30. options, args = parser.parse_args()
  31. return options, args
  32. def main():
  33. options, args = opt_args()
  34. log = logger(options)
  35. stats = {'users': 0, 'errors': 0}
  36. server = kopano.Server(options=options)
  37. for user in server.users():
  38. with kopano.log_exc(log, stats):
  39. log.info('processing user %s', user.name)
  40. stats['users'] += 1
  41. if user.archive_folder:
  42. if options.writable:
  43. log.debug('setting rights to owner')
  44. rights = ROLE_OWNER
  45. else:
  46. log.debug('setting rights to reviewer')
  47. rights = ROLE_REVIEWER
  48. user.archive_folder.permission(user, create=True).rights = rights
  49. else:
  50. log.debug('user has no archive folder')
  51. log.info('processed %(users)d user(s) (%(errors)d error(s))' % stats)
  52. if __name__ == '__main__':
  53. main()