homepage_url.py 1.1 KB

1234567891011121314151617181920212223242526272829303132
  1. from homepagebuilder.interfaces import require, script
  2. pref_module = require('homepage_preference')
  3. PREFERENCE_LIST = pref_module.PREFERENCE_LIST
  4. PREFERENCE_LIST_LENGTH = len(PREFERENCE_LIST)
  5. DOMAIN = pref_module.DOMAIN
  6. @script('Link')
  7. def link_script(page_name, context, *_args, **kwargs):
  8. settings:dict = context.setter.toProperties()
  9. settings_length = len(settings)
  10. if '.json' not in page_name:
  11. page_name += '.json'
  12. if settings_length == 0:
  13. return DOMAIN + page_name
  14. new_args = []
  15. # 判断优化: 取长度小的遍历
  16. if PREFERENCE_LIST_LENGTH > len(settings):
  17. for name, value in settings.items():
  18. if name in PREFERENCE_LIST:
  19. new_args.append(name + '=' + value)
  20. else:
  21. for name in PREFERENCE_LIST:
  22. if value := settings.get(name, None) is not None:
  23. new_args.append(name + '=' + value)
  24. if len(new_args) == 0:
  25. return DOMAIN + page_name
  26. if '?' not in page_name:
  27. page_name += '?'
  28. else:
  29. page_name += '&'
  30. return DOMAIN + page_name + '&'.join(new_args)