From a6fdc988ec58903c5db9c6f23eca795ed6d1cb54 Mon Sep 17 00:00:00 2001 From: "ajay javiya (OpenERP)" Date: Fri, 7 Mar 2014 18:54:49 +0530 Subject: [PATCH] [ADD] : module website_mail_group bzr revid: aja@tinyerp.com-20140307132449-zy216yv5kmt3o0zw --- addons/mail/mail_message.py | 2 +- addons/mail/mail_thread.py | 3 +- addons/website_mail_group/__init__.py | 2 + addons/website_mail_group/__openerp__.py | 23 ++++ .../controllers/__init__.py | 3 + addons/website_mail_group/controllers/main.py | 104 +++++++++++++++ .../data/website_mail_group_data.xml | 4 + .../data/website_mail_group_demo.xml | 5 + addons/website_mail_group/models/__init__.py | 1 + .../website_mail_group/models/mail_group.py | 25 ++++ .../security/ir.model.access.csv | 0 .../static/src/css/website_mail_group.css | 0 .../views/website_mail_group.xml | 120 ++++++++++++++++++ .../views/website_mail_group_backend.xml | 5 + 14 files changed, 295 insertions(+), 2 deletions(-) create mode 100644 addons/website_mail_group/__init__.py create mode 100644 addons/website_mail_group/__openerp__.py create mode 100644 addons/website_mail_group/controllers/__init__.py create mode 100644 addons/website_mail_group/controllers/main.py create mode 100644 addons/website_mail_group/data/website_mail_group_data.xml create mode 100644 addons/website_mail_group/data/website_mail_group_demo.xml create mode 100644 addons/website_mail_group/models/__init__.py create mode 100644 addons/website_mail_group/models/mail_group.py create mode 100644 addons/website_mail_group/security/ir.model.access.csv create mode 100644 addons/website_mail_group/static/src/css/website_mail_group.css create mode 100644 addons/website_mail_group/views/website_mail_group.xml create mode 100644 addons/website_mail_group/views/website_mail_group_backend.xml diff --git a/addons/mail/mail_message.py b/addons/mail/mail_message.py index 40a51df91d2..2b10ce46b85 100644 --- a/addons/mail/mail_message.py +++ b/addons/mail/mail_message.py @@ -181,6 +181,7 @@ class mail_message(osv.Model): 'subject': fields.char('Subject'), 'date': fields.datetime('Date'), 'message_id': fields.char('Message-Id', help='Message unique identifier', select=1, readonly=1), + 'parent_message': fields.char('Immediate Parent', select=1, readonly=1), 'body': fields.html('Contents', help='Automatically sanitized HTML contents'), 'to_read': fields.function(_get_to_read, fnct_search=_search_to_read, type='boolean', string='To read', @@ -834,7 +835,6 @@ class mail_message(osv.Model): if context is None: context = {} default_starred = context.pop('default_starred', False) - if 'email_from' not in values: # needed to compute reply_to values['email_from'] = self._get_default_from(cr, uid, context=context) if 'message_id' not in values: diff --git a/addons/mail/mail_thread.py b/addons/mail/mail_thread.py index c72ef8a77cb..a306d1160e7 100644 --- a/addons/mail/mail_thread.py +++ b/addons/mail/mail_thread.py @@ -1259,6 +1259,7 @@ class mail_thread(osv.AbstractModel): parent_ids = self.pool.get('mail.message').search(cr, uid, [('message_id', '=', decode(message['In-Reply-To']))]) if parent_ids: msg_dict['parent_id'] = parent_ids[0] + msg_dict['parent_message'] = message.get('In-Reply-To') if message.get('References') and 'parent_id' not in msg_dict: parent_ids = self.pool.get('mail.message').search(cr, uid, [('message_id', 'in', @@ -1866,4 +1867,4 @@ class mail_thread(osv.AbstractModel): message_obj.write(cr, uid, msg_ids_comment, {"res_id" : new_res_id, "model" : new_model}, context=context) message_obj.write(cr, uid, msg_ids_not_comment, {"res_id" : new_res_id, "model" : new_model, "subtype_id" : None}, context=context) - return True \ No newline at end of file + return True diff --git a/addons/website_mail_group/__init__.py b/addons/website_mail_group/__init__.py new file mode 100644 index 00000000000..9f86759e32b --- /dev/null +++ b/addons/website_mail_group/__init__.py @@ -0,0 +1,2 @@ +import controllers +import models diff --git a/addons/website_mail_group/__openerp__.py b/addons/website_mail_group/__openerp__.py new file mode 100644 index 00000000000..f90d654036f --- /dev/null +++ b/addons/website_mail_group/__openerp__.py @@ -0,0 +1,23 @@ +{ + 'name': 'Mailing List Archive', + 'category': 'Website', + 'summary': '', + 'version': '1.0', + 'description': """ +OpenERP Mail Group : Mailing List Archive +================== + + """, + 'author': 'OpenERP SA', + 'depends': ['website','mail'], + 'data': [ + 'views/website_mail_group.xml', + 'views/website_mail_group_backend.xml', + 'data/website_mail_group_data.xml', + ], + 'demo': [ + 'data/website_mail_group_demo.xml' + ], + 'qweb': ['static/src/xml/*.xml'], + 'installable': True, +} diff --git a/addons/website_mail_group/controllers/__init__.py b/addons/website_mail_group/controllers/__init__.py new file mode 100644 index 00000000000..e11f9ba81bb --- /dev/null +++ b/addons/website_mail_group/controllers/__init__.py @@ -0,0 +1,3 @@ +import main + +# vim:expandtab:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/website_mail_group/controllers/main.py b/addons/website_mail_group/controllers/main.py new file mode 100644 index 00000000000..8f36503aa32 --- /dev/null +++ b/addons/website_mail_group/controllers/main.py @@ -0,0 +1,104 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2013-Today OpenERP SA (). +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + +from openerp import SUPERUSER_ID +from openerp.addons.web import http +from openerp.addons.web.http import request +import werkzeug +import datetime +import time + +from openerp.tools.translate import _ + +class MailGroup(http.Controller): + _thread_per_page = 10 + + @http.route([ + "/groups", + ], type='http', auth="public", website=True) + def view(self, **post): + cr, uid, context = request.cr , request.uid, request.context + group_obj = request.registry.get('mail.group') + user_obj = request.registry.get('res.users') + group_ids = group_obj.search(cr, SUPERUSER_ID, [], context=context) + values = { + 'groups': group_obj.browse(cr, uid, group_ids, context), + } + return request.website.render('website_mail_group.mail_groups', values) + + @http.route([ + "/groups/follow/", + ], type='http', auth="public", website=True) + def follow(self, group_id, **post): + cr, uid, context = request.cr , request.uid, request.context + group_obj = request.registry.get('mail.group') + group_obj.message_subscribe_users(cr, uid, [group_id], context=context) + return werkzeug.utils.redirect('/groups') + + @http.route([ + "/groups/unfollow/", + ], type='http', auth="public", website=True) + def unfollow(self, group_id, **post): + cr, uid, context = request.cr , request.uid, request.context + group_obj = request.registry.get('mail.group') + group_obj.message_unsubscribe_users(cr, uid, [group_id], context=context) + return werkzeug.utils.redirect('/groups') + + @http.route([ + "/groups//", + "/groups//page//" + ], type='http', auth="public", website=True) + def thread(self, group_id, page=1, **post): + cr, uid, context = request.cr , request.uid, request.context + group_obj = request.registry.get('mail.group') + thread_obj = request.registry.get('mail.message') + thread_ids = thread_obj.search(cr, uid, [('type','=','email'),('model','=','mail.group'),('res_id','=',group_id),('parent_message','=',False)]) + group_ids = group_obj.search(cr, SUPERUSER_ID, []) + pager = request.website.pager( + url='/groups/%s/' % group_id, + total=len(thread_ids), + page=page, + step=self._thread_per_page, + ) + pager_begin = (page - 1) * self._thread_per_page + pager_end = page * self._thread_per_page + thread_ids = thread_ids[pager_begin:pager_end] + values = { + 'groups': group_obj.browse(cr, uid, group_ids, context), + 'thread_list': thread_obj.browse(cr, uid, thread_ids, context), + 'active_group': group_obj.browse(cr, uid, group_id, context), + 'pager': pager, + } + return request.website.render('website_mail_group.group_thread_list', values) + + @http.route([ + "/groups/thread/", + ], type='http', auth="public", website=True) + def get_thread(self, message_id, **post): + cr, uid, context = request.cr , request.uid, request.context + group_obj = request.registry.get('mail.group') + thread_obj = request.registry.get('mail.message') + child_ids = thread_obj.search(cr, uid, [('parent_id','=',message_id)]) + values = { + 'main_thread' : thread_obj.browse(cr, uid, message_id, context), + 'child_thread' : thread_obj.browse(cr, uid, child_ids, context), + } + return request.website.render('website_mail_group.group_thread', values) diff --git a/addons/website_mail_group/data/website_mail_group_data.xml b/addons/website_mail_group/data/website_mail_group_data.xml new file mode 100644 index 00000000000..b020c6a30ae --- /dev/null +++ b/addons/website_mail_group/data/website_mail_group_data.xml @@ -0,0 +1,4 @@ + + + + diff --git a/addons/website_mail_group/data/website_mail_group_demo.xml b/addons/website_mail_group/data/website_mail_group_demo.xml new file mode 100644 index 00000000000..ebc084668b7 --- /dev/null +++ b/addons/website_mail_group/data/website_mail_group_demo.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/addons/website_mail_group/models/__init__.py b/addons/website_mail_group/models/__init__.py new file mode 100644 index 00000000000..ea8be51acde --- /dev/null +++ b/addons/website_mail_group/models/__init__.py @@ -0,0 +1 @@ +import mail_group diff --git a/addons/website_mail_group/models/mail_group.py b/addons/website_mail_group/models/mail_group.py new file mode 100644 index 00000000000..66a7481fb52 --- /dev/null +++ b/addons/website_mail_group/models/mail_group.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2013-Today OpenERP SA (). +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + +from openerp.osv import osv, fields +import uuid +import time +import datetime diff --git a/addons/website_mail_group/security/ir.model.access.csv b/addons/website_mail_group/security/ir.model.access.csv new file mode 100644 index 00000000000..e69de29bb2d diff --git a/addons/website_mail_group/static/src/css/website_mail_group.css b/addons/website_mail_group/static/src/css/website_mail_group.css new file mode 100644 index 00000000000..e69de29bb2d diff --git a/addons/website_mail_group/views/website_mail_group.xml b/addons/website_mail_group/views/website_mail_group.xml new file mode 100644 index 00000000000..a3abfaf605a --- /dev/null +++ b/addons/website_mail_group/views/website_mail_group.xml @@ -0,0 +1,120 @@ + + + + + + + + + + diff --git a/addons/website_mail_group/views/website_mail_group_backend.xml b/addons/website_mail_group/views/website_mail_group_backend.xml new file mode 100644 index 00000000000..cc8d30d080d --- /dev/null +++ b/addons/website_mail_group/views/website_mail_group_backend.xml @@ -0,0 +1,5 @@ + + + + +