summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--addons/website_forum_doc/controllers/main.py41
-rw-r--r--addons/website_forum_doc/data/doc_data.xml4
-rw-r--r--addons/website_forum_doc/data/doc_demo.xml6
-rw-r--r--addons/website_forum_doc/models/forum_documentation_toc.py69
-rw-r--r--addons/website_forum_doc/models/forum_post.py29
-rw-r--r--addons/website_forum_doc/views/doc.xml12
-rw-r--r--addons/website_forum_doc/views/website_doc.xml8
7 files changed, 61 insertions, 108 deletions
diff --git a/addons/website_forum_doc/controllers/main.py b/addons/website_forum_doc/controllers/main.py
index a34e8eef2a1..6817a7e5ef0 100644
--- a/addons/website_forum_doc/controllers/main.py
+++ b/addons/website_forum_doc/controllers/main.py
@@ -1,23 +1,19 @@
# -*- coding: utf-8 -*-
-from openerp import http
-from openerp.http import request
-from openerp.addons.website.models.website import slug
+from odoo import http
+from odoo.http import request
class WebsiteDoc(http.Controller):
@http.route(['/forum/how-to', '/forum/how-to/<model("forum.documentation.toc"):toc>'], type='http', auth="public", website=True)
def toc(self, toc=None, **kwargs):
- cr, uid, context, toc_id = request.cr, request.uid, request.context, False
if toc:
sections = toc.child_ids
forum = toc.forum_id
else:
- toc_obj = request.registry['forum.documentation.toc']
- obj_ids = toc_obj.search(cr, uid, [('parent_id', '=', False)], context=context)
- sections = toc_obj.browse(cr, uid, obj_ids, context=context)
- forum = sections and sections[0].forum_id or False
+ sections = request.env['forum.documentation.toc'].search([('parent_id', '=', False)], limit=1)
+ forum = sections and sections.forum_id
value = {
'toc': toc,
'main_object': toc or forum,
@@ -29,7 +25,7 @@ class WebsiteDoc(http.Controller):
@http.route(['''/forum/how-to/<model("forum.documentation.toc"):toc>/<model("forum.post", "[('documentation_toc_id','=',toc[0])]"):post>'''], type='http', auth="public", website=True)
def post(self, toc, post, **kwargs):
# TODO: implement a redirect instead of crash
- assert post.documentation_toc_id.id == toc.id, "Wrong post!"
+ assert post.documentation_toc_id == toc, "Wrong post!"
value = {
'toc': toc,
'post': post,
@@ -40,31 +36,20 @@ class WebsiteDoc(http.Controller):
@http.route('/forum/<model("forum.forum"):forum>/question/<model("forum.post"):post>/promote', type='http', auth="user", website=True)
def post_toc(self, forum, post, **kwargs):
- cr, uid, context, toc_id = request.cr, request.uid, request.context, False
- user = request.registry['res.users'].browse(cr, uid, uid, context=context)
- assert user.karma >= 200, 'You need 200 karma to promote a post to the documentation'
- toc_obj = request.registry['forum.documentation.toc']
- obj_ids = toc_obj.search(cr, uid, [], context=context)
- tocs = toc_obj.browse(cr, uid, obj_ids, context=context)
+ assert request.env.user.karma >= 200, 'You need 200 karma to promote a post to the documentation'
value = {
'post': post,
'forum': post.forum_id,
- 'chapters': filter(lambda x: not x.child_ids, tocs)
+ 'chapters': request.env['forum.documentation.toc'].search([('child_ids', '=', False)])
}
return request.website.render("website_forum_doc.promote_question", value)
@http.route('/forum/<model("forum.forum"):forum>/promote_ok', type='http', auth="user", website=True)
def post_toc_ok(self, forum, post_id, toc_id, **kwargs):
- cr, uid, context = request.cr, request.uid, request.context
- user = request.registry['res.users'].browse(cr, uid, uid, context=context)
- assert user.karma >= 200, 'Not enough karma, you need 200 to promote a documentation.'
-
- toc_obj = request.registry['forum.documentation.toc']
- stage_ids = toc_obj.search(cr, uid, [], limit=1, context=context)
-
- post_obj = request.registry['forum.post']
- post_obj.write(cr, uid, [int(post_id)], {
+ assert request.env.user.karma >= 200, 'Not enough karma, you need 200 to promote a documentation.'
+ stage = request.env['forum.documentation.toc'].search([], limit=1)
+ request.env['forum.post'].browse(int(post_id)).write({
'documentation_toc_id': toc_id and int(toc_id) or False,
- 'documentation_stage_id': stage_ids and stage_ids[0] or False
- }, context=context)
- return request.redirect('/forum/'+str(forum.id)+'/question/'+str(post_id))
+ 'documentation_stage_id': stage and stage.id
+ })
+ return request.redirect('/forum/' + str(forum.id) + '/question/' + str(post_id))
diff --git a/addons/website_forum_doc/data/doc_data.xml b/addons/website_forum_doc/data/doc_data.xml
index d9a6566d908..14992afeccb 100644
--- a/addons/website_forum_doc/data/doc_data.xml
+++ b/addons/website_forum_doc/data/doc_data.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<openerp>
+<odoo>
<data>
<!-- JUMP TO DOCUMENTATION AT INSTALL -->
<record id="action_open_documentation" model="ir.actions.act_url">
@@ -45,4 +45,4 @@
</record>
</data>
-</openerp>
+</odoo>
diff --git a/addons/website_forum_doc/data/doc_demo.xml b/addons/website_forum_doc/data/doc_demo.xml
index 0b98c483782..a1a21191274 100644
--- a/addons/website_forum_doc/data/doc_demo.xml
+++ b/addons/website_forum_doc/data/doc_demo.xml
@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<openerp>
- <data>
+<odoo>
<!-- Table Of Content -->
<record id="toc_functional_doc" model="forum.documentation.toc">
@@ -88,5 +87,4 @@
<field name="documentation_toc_id" ref="toc_cms_ecommerce"/>
</record>
- </data>
-</openerp>
+ </odoo>
diff --git a/addons/website_forum_doc/models/forum_documentation_toc.py b/addons/website_forum_doc/models/forum_documentation_toc.py
index 9f36c178c48..fc167f1ed80 100644
--- a/addons/website_forum_doc/models/forum_documentation_toc.py
+++ b/addons/website_forum_doc/models/forum_documentation_toc.py
@@ -1,9 +1,10 @@
# -*- coding: utf-8 -*-
-from openerp.osv import osv, fields
+from odoo import api, fields, models, _
+from odoo.exceptions import ValidationError
-class Documentation(osv.Model):
+class Documentation(models.Model):
_name = 'forum.documentation.toc'
_description = 'Documentation ToC'
_inherit = ['website.seo.metadata']
@@ -11,48 +12,36 @@ class Documentation(osv.Model):
_parent_order = "sequence, name"
_parent_store = True
- def name_get(self, cr, uid, ids, context=None):
- if isinstance(ids, (list, tuple)) and not len(ids):
- return []
- if isinstance(ids, (long, int)):
- ids = [ids]
- reads = self.read(cr, uid, ids, ['name', 'parent_id'], context=context)
+ sequence = fields.Integer('Sequence')
+ name = fields.Char('Name', required=True, translate=True)
+ introduction = fields.Html('Introduction', translate=True)
+ parent_id = fields.Many2one('forum.documentation.toc', string='Parent Table Of Content', ondelete='cascade')
+ child_ids = fields.One2many('forum.documentation.toc', 'parent_id', string='Children Table Of Content')
+ parent_left = fields.Integer(string='Left Parent', index=True)
+ parent_right = fields.Integer(string='Right Parent', index=True)
+ post_ids = fields.One2many('forum.post', 'documentation_toc_id', string='Posts')
+ forum_id = fields.Many2one('forum.forum', string='Forum', required=True)
+
+ @api.multi
+ def name_get(self):
res = []
- for record in reads:
- name = record['name']
- if record['parent_id']:
- name = record['parent_id'][1]+' / '+name
- res.append((record['id'], name))
+ for record in self:
+ name = record.name
+ if record.parent_id:
+ name = record.parent_id.name + ' / ' + name
+ res.append((record.id, name))
return res
- # TODO master remove me
- def _name_get_fnc(self, cr, uid, ids, prop, unknow_none, context=None):
- res = self.name_get(cr, uid, ids, context=context)
- return dict(res)
-
- _columns = {
- 'sequence': fields.integer('Sequence'),
- 'name': fields.char('Name', required=True, translate=True),
- 'introduction': fields.html('Introduction', translate=True),
- 'parent_id': fields.many2one('forum.documentation.toc', 'Parent Table Of Content', ondelete='cascade'),
- 'child_ids': fields.one2many('forum.documentation.toc', 'parent_id', 'Children Table Of Content'),
- 'parent_left': fields.integer('Left Parent', select=True),
- 'parent_right': fields.integer('Right Parent', select=True),
- 'post_ids': fields.one2many('forum.post', 'documentation_toc_id', 'Posts'),
- 'forum_id': fields.many2one('forum.forum', 'Forum', required=True),
- }
-
- _constraints = [
- (osv.osv._check_recursion, 'Error ! You cannot create recursive categories.', ['parent_id'])
- ]
-
-
-class DocumentationStage(osv.Model):
+ @api.constrains('parent_id')
+ def _check_parent_id(self):
+ if not self._check_recursion():
+ raise ValidationError(_('Error ! You cannot create recursive categories.'))
+
+
+class DocumentationStage(models.Model):
_name = 'forum.documentation.stage'
_description = 'Post Stage'
_order = 'sequence'
- _columns = {
- 'sequence': fields.integer('Sequence'),
- 'name': fields.char('Stage Name', required=True, translate=True),
- }
+ sequence = fields.Integer('Sequence')
+ name = fields.Char(string='Stage Name', required=True, translate=True)
diff --git a/addons/website_forum_doc/models/forum_post.py b/addons/website_forum_doc/models/forum_post.py
index 6973754a4f6..19eec377f15 100644
--- a/addons/website_forum_doc/models/forum_post.py
+++ b/addons/website_forum_doc/models/forum_post.py
@@ -1,30 +1,19 @@
# -*- coding: utf-8 -*-
-from openerp.osv import osv, fields
+from odoo import api, fields, models
-class Post(osv.Model):
+class Post(models.Model):
_inherit = 'forum.post'
- _columns = {
- 'documentation_toc_id': fields.many2one('forum.documentation.toc', 'Documentation ToC', ondelete='set null'),
- 'documentation_stage_id': fields.many2one('forum.documentation.stage', 'Documentation Stage'),
- 'color': fields.integer('Color Index')
- }
-
- def _get_default_stage_id(self, cr, uid, context=None):
- stage_ids = self.pool["forum.documentation.stage"].search(cr, uid, [], limit=1, context=context)
- return stage_ids and stage_ids[0] or False
-
- _defaults = {
- 'documentation_stage_id': _get_default_stage_id,
- }
+ documentation_toc_id = fields.Many2one('forum.documentation.toc', string='Documentation ToC', ondelete='set null')
+ documentation_stage_id = fields.Many2one('forum.documentation.stage', string='Documentation Stage',
+ default=lambda self: self.env['forum.documentation.stage'].search([], limit=1))
+ color = fields.Integer(string='Color Index')
- def _read_group_stage_ids(self, cr, uid, ids, domain, read_group_order=None, access_rights_uid=None, context=None):
- stage_obj = self.pool.get('forum.documentation.stage')
- stage_ids = stage_obj.search(cr, uid, [], context=context)
- result = stage_obj.name_get(cr, uid, stage_ids, context=context)
- return result, {}
+ @api.multi
+ def _read_group_stage_ids(self, domain, read_group_order=None, access_rights_uid=None):
+ return self.env['forum.documentation.stage'].search([]).name_get(), {}
_group_by_full = {
'documentation_stage_id': _read_group_stage_ids,
diff --git a/addons/website_forum_doc/views/doc.xml b/addons/website_forum_doc/views/doc.xml
index 508202497cb..0e8b7cf3caf 100644
--- a/addons/website_forum_doc/views/doc.xml
+++ b/addons/website_forum_doc/views/doc.xml
@@ -1,7 +1,5 @@
-<?xml version="1.0"?>
-<openerp>
- <data>
-
+<?xml version="1.0" encoding="utf-8"?>
+<odoo>
<!-- DOCUMENTATION TOC VIEWS -->
<record id="view_documentation_toc_list" model="ir.ui.view">
<field name="name">forum.documentation.toc.list</field>
@@ -27,7 +25,7 @@
<!-- Project Task Kanban View -->
- <record model="ir.ui.view" id="view_forum_post_kanban">
+ <record id="view_forum_post_kanban" model="ir.ui.view">
<field name="name">forum.post.kanban</field>
<field name="model">forum.post</field>
<field name="arch" type="xml">
@@ -100,6 +98,4 @@
</xpath>
</field>
</record>
-
- </data>
-</openerp>
+</odoo>
diff --git a/addons/website_forum_doc/views/website_doc.xml b/addons/website_forum_doc/views/website_doc.xml
index fbee8ec0667..6c14a86d07f 100644
--- a/addons/website_forum_doc/views/website_doc.xml
+++ b/addons/website_forum_doc/views/website_doc.xml
@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
-<openerp>
- <data>
+<odoo>
<!-- Front-end assets: custom css -->
<template id="assets_frontend" inherit_id="website.assets_frontend" name="website_forum_doc assets">
@@ -268,7 +267,4 @@
</section>
</t>
</template>
-
-
- </data>
-</openerp>
+</odoo>