You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

49 lines
1.9 KiB

  1. # Copyright 2014 ACSONE SA/NV (<http://acsone.eu>)
  2. # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
  3. from odoo import models, exceptions
  4. from odoo.tools.translate import _
  5. class HelpOnline(models.TransientModel):
  6. _name = 'help.online'
  7. def _get_view_name(self, model, view_type, domain=None, context=None):
  8. parameter_model = self.env['ir.config_parameter']
  9. page_prefix = parameter_model.get_param('help_online_page_prefix',
  10. False)
  11. if not page_prefix:
  12. raise exceptions.Warning(_('No page prefix parameter specified !'))
  13. name = '%s-%s' % (page_prefix, model.replace('.', '-'))
  14. return name
  15. def get_existing_pages(self, name, limit=None):
  16. website = self.env['website']
  17. return website.search_pages(needle=name, limit=limit)
  18. def get_page_url(self, model, view_type, domain=None, context=None):
  19. user_model = self.env['res.users']
  20. if not user_model.has_group('help_online.help_online_group_reader'):
  21. return {}
  22. ir_model = self.env['ir.model']
  23. description = self.env[model]._description
  24. res = ir_model.name_search(model, operator='=')
  25. if res:
  26. description = res[0][1]
  27. name = self._get_view_name(model, view_type, domain, context)
  28. pages = self.get_existing_pages(name, limit=1)
  29. if pages:
  30. url = pages[0]['loc']
  31. if view_type:
  32. url = url + '#' + view_type
  33. title = _('Help on %s') % description
  34. return {'url': url,
  35. 'title': title,
  36. 'exists': True}
  37. elif user_model.has_group('help_online.help_online_group_writer'):
  38. title = _('Create Help page for %s') % description
  39. return {'url': 'website/add/%s' % name,
  40. 'title': title,
  41. 'exists': False}
  42. else:
  43. return {}