[MERGE] forward port of branch 8.0 up to 591e329
[odoo/odoo.git] / addons / website / models / res_config.py
1
2 from openerp.osv import fields, osv
3
4 class website_config_settings(osv.osv_memory):
5     _name = 'website.config.settings'
6     _inherit = 'res.config.settings'
7
8     _columns = {
9         'website_id': fields.many2one('website', string="website", required=True),
10         'website_name': fields.related('website_id', 'name', type="char", string="Website Name"),
11
12         'language_ids': fields.related('website_id', 'language_ids', type='many2many', relation='res.lang', string='Languages'),
13         'default_lang_id': fields.related('website_id', 'default_lang_id', type='many2one', relation='res.lang', string='Default language'),
14         'default_lang_code': fields.related('website_id', 'default_lang_code', type="char", string="Default language code"),
15         'google_analytics_key': fields.related('website_id', 'google_analytics_key', type="char", string='Google Analytics Key'),
16         
17         'social_twitter': fields.related('website_id', 'social_twitter', type="char", string='Twitter Account'),
18         'social_facebook': fields.related('website_id', 'social_facebook', type="char", string='Facebook Account'),
19         'social_github': fields.related('website_id', 'social_github', type="char", string='GitHub Account'),
20         'social_linkedin': fields.related('website_id', 'social_linkedin', type="char", string='LinkedIn Account'),
21         'social_youtube': fields.related('website_id', 'social_youtube', type="char", string='Youtube Account'),
22         'social_googleplus': fields.related('website_id', 'social_googleplus', type="char", string='Google+ Account'),
23         'compress_html': fields.related('website_id', 'compress_html', type="boolean", string='Compress HTML'),
24         'cdn_activated': fields.related('website_id', 'cdn_activated', type="boolean", string='Use CDN'),
25         'cdn_url': fields.related('website_id', 'cdn_url', type="char", string='CDN Base URL'),
26         'cdn_filters': fields.related('website_id', 'cdn_filters', type="text", string='CDN Filters'),
27     }
28
29     def on_change_website_id(self, cr, uid, ids, website_id, context=None):
30         website_data = self.pool.get('website').read(cr, uid, [website_id], [], context=context)[0]
31         values = {'website_name': website_data['name']}
32         for fname, v in website_data.items():
33             if fname in self._columns:
34                 values[fname] = v[0] if v and self._columns[fname]._type == 'many2one' else v
35         return {'value' : values}
36
37     # FIXME in trunk for god sake. Change the fields above to fields.char instead of fields.related, 
38     # and create the function set_website who will set the value on the website_id
39     # create does not forward the values to the related many2one. Write does.
40     def create(self, cr, uid, vals, context=None):
41         config_id = super(website_config_settings, self).create(cr, uid, vals, context=context)
42         self.write(cr, uid, config_id, vals, context=context)
43         return config_id
44
45     _defaults = {
46         'website_id': lambda self,cr,uid,c: self.pool.get('website').search(cr, uid, [], context=c)[0],
47     }