[IMP] website: new class website with route decorator
bzr revid: chm@openerp.com-20130726141333-047bdk1qocrpodqp
This commit is contained in:
parent
18248b94e8
commit
69acb34f3e
|
@ -9,6 +9,21 @@ from openerp.addons.web.http import request
|
|||
class website(http.Controller):
|
||||
public_user_id = None
|
||||
|
||||
def get_uid(self):
|
||||
try:
|
||||
request.session.check_security()
|
||||
uid = request.session._uid
|
||||
except http.SessionExpiredException:
|
||||
if not website.public_user_id:
|
||||
data_obj = request.registry['ir.model.data']
|
||||
website.public_user_id = data_obj.get_object_reference(request.cr, openerp.SUPERUSER_ID, 'website', 'public_user')[1]
|
||||
uid = website.public_user_id
|
||||
|
||||
return uid
|
||||
|
||||
def isloggued(self):
|
||||
return website.public_user_id != self.get_uid()
|
||||
|
||||
def render(self, cr, uid, template, add_values={}):
|
||||
script = "\n".join(['<script type="text/javascript" src="%s"></script>' % i for i in main.manifest_list('js', db=request.db)])
|
||||
css = "\n".join('<link rel="stylesheet" href="%s">' % i for i in main.manifest_list('css', db=request.db))
|
||||
|
@ -24,29 +39,11 @@ class website(http.Controller):
|
|||
_values.update(add_values)
|
||||
return request.registry.get("ir.ui.view").render(cr, uid, template, _values)
|
||||
|
||||
@staticmethod
|
||||
def get_uid():
|
||||
try:
|
||||
request.session.check_security()
|
||||
uid = request.session._uid
|
||||
except http.SessionExpiredException:
|
||||
if not website.public_user_id:
|
||||
data_obj = request.registry['ir.model.data']
|
||||
website.public_user_id = data_obj.get_object_reference(request.cr, openerp.SUPERUSER_ID, 'website', 'public_user')[1]
|
||||
uid = website.public_user_id
|
||||
|
||||
return uid
|
||||
|
||||
@staticmethod
|
||||
def isloggued():
|
||||
print website.public_user_id , website.get_uid()
|
||||
return website.public_user_id != website.get_uid()
|
||||
|
||||
@staticmethod
|
||||
def route(*args, **kwargs):
|
||||
def wrap(_funct):
|
||||
@http.route(*args, **kwargs)
|
||||
def wrapper(self, *a, **k):
|
||||
return _funct(self, request.cr, website.get_uid(), *a, **k)
|
||||
return _funct(self, request.cr, self.get_uid(), *a, **k)
|
||||
return wrapper
|
||||
return wrap
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
import openerp
|
||||
from openerp.addons.web.http import request
|
||||
from openerp.addons.website import website
|
||||
import werkzeug
|
||||
|
@ -52,23 +53,22 @@ class website_mail(website):
|
|||
|
||||
@website.route(['/blog/<int:mail_group_id>/<int:blog_id>/post'], type='http', auth="admin")
|
||||
def message_post(self, cr, uid, mail_group_id=None, blog_id=None, **post):
|
||||
message_obj = request.registry['mail.message']
|
||||
partner_obj = request.registry['res.partner']
|
||||
|
||||
blog = message_obj.browse(cr, uid, blog_id)
|
||||
if blog.website_published and post.get('body') and post.get('name') and post.get('email') and post.get('email').index('@') > 0:
|
||||
partner_ids = partner_obj.search(cr, uid, [('email', '=', post.get('email'))])
|
||||
if partner_ids:
|
||||
author_id = partner_ids[0]
|
||||
if post.get('body') and post.get('name') and post.get('email') and post.get('email').index('@') > 0:
|
||||
if self.isloggued():
|
||||
author_id = request.registry['res.users'].browse(cr, uid, uid).partner_id.id
|
||||
else:
|
||||
author_id = partner_obj.create(cr, uid, {'name': post.get('name'), 'email': post.get('email')})
|
||||
partner_obj = request.registry['res.partner']
|
||||
partner_ids = partner_obj.search(cr, uid, [('name', '=', post.get('name')), ('email', '=', post.get('email'))])
|
||||
if partner_ids:
|
||||
author_id = partner_ids[0]
|
||||
else:
|
||||
author_id = partner_obj.create(cr, openerp.SUPERUSER_ID, {'name': post.get('name'), 'email': post.get('email')})
|
||||
|
||||
values = {
|
||||
'body': post.get('body'),
|
||||
'parent_id': blog.id,
|
||||
'author_id': author_id,
|
||||
'website_published': True,
|
||||
}
|
||||
message_obj.create(cr, uid, values)
|
||||
request.registry['mail.group'].message_post(cr, uid, mail_group_id,
|
||||
body=post.get('body'),
|
||||
parent_id=blog_id,
|
||||
author_id=author_id,
|
||||
website_published= blog_id and True or False
|
||||
)
|
||||
|
||||
return werkzeug.utils.redirect("/blog/%s/%s" % (mail_group_id, blog_id))
|
||||
|
|
|
@ -5,5 +5,27 @@
|
|||
<field name="name">Visitors can reply on blogs</field>
|
||||
<field name="category_id" ref="base.module_category_hidden"/>
|
||||
</record>
|
||||
|
||||
<record id="website_mail_public" model="ir.rule">
|
||||
<field name="name">website_mail: Public message</field>
|
||||
<field name="model_id" ref="model_mail_message"/>
|
||||
<field name="domain_force">[('website_published', '=', True), ("model", "=", 'mail.group')]</field>
|
||||
<field name="groups" eval="[(4, ref('base.group_public'))]"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="False"/>
|
||||
<field name="perm_unlink" eval="False"/>
|
||||
</record>
|
||||
|
||||
<record id="website_mail_public_post" model="ir.rule">
|
||||
<field name="name">website_mail: Public post message</field>
|
||||
<field name="model_id" ref="model_mail_message"/>
|
||||
<field name="domain_force">[('website_published', '=', True), ("model", "=", 'mail.group')]</field>
|
||||
<field name="groups" eval="[(4, ref('group_website_mail_reply'))]"/>
|
||||
<field name="perm_read" eval="True"/>
|
||||
<field name="perm_write" eval="False"/>
|
||||
<field name="perm_create" eval="True"/>
|
||||
<field name="perm_unlink" eval="False"/>
|
||||
</record>
|
||||
</data>
|
||||
</openerp>
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
.css_website_mail .media {
|
||||
position: relative;
|
||||
clear: both;
|
||||
}
|
||||
.css_website_mail .media .css_button_publish {
|
||||
position: absolute;
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
.css_website_mail
|
||||
.media
|
||||
position: relative
|
||||
clear: both
|
||||
.css_button_publish
|
||||
position: absolute
|
||||
right: 5px
|
||||
|
|
Loading…
Reference in New Issue