1 # -*- coding: utf-8 -*-
5 from openerp import tools
6 from openerp.addons.web import http
7 from openerp.addons.website.models.website import slug
8 from openerp.addons.web.http import request
11 class MailGroup(http.Controller):
14 def _get_archives(self, group_id):
15 MailMessage = request.registry['mail.message']
16 groups = MailMessage.read_group(
17 request.cr, request.uid, [('model', '=', 'mail.group'), ('res_id', '=', group_id)], ['subject', 'date'],
18 groupby="date", orderby="date asc", context=request.context)
20 begin_date = datetime.datetime.strptime(group['__domain'][0][2], tools.DEFAULT_SERVER_DATETIME_FORMAT).date()
21 end_date = datetime.datetime.strptime(group['__domain'][1][2], tools.DEFAULT_SERVER_DATETIME_FORMAT).date()
22 group['date_begin'] = '%s' % datetime.date.strftime(begin_date, tools.DEFAULT_SERVER_DATE_FORMAT)
23 group['date_end'] = '%s' % datetime.date.strftime(end_date, tools.DEFAULT_SERVER_DATE_FORMAT)
26 @http.route("/groups", type='http', auth="public", website=True)
27 def view(self, **post):
28 cr, uid, context = request.cr, request.uid, request.context
29 group_obj = request.registry.get('mail.group')
30 group_ids = group_obj.search(cr, uid, [], context=context)
31 values = {'groups': group_obj.browse(cr, uid, group_ids, context)}
32 return request.website.render('website_mail_group.mail_groups', values)
34 @http.route(["/groups/subscription/"], type='json', auth="user")
35 def subscription(self, group_id=0, action=False, **post):
36 cr, uid, context = request.cr, request.uid, request.context
37 group_obj = request.registry.get('mail.group')
39 group_obj.message_subscribe_users(cr, uid, [group_id], context=context)
41 group_obj.message_unsubscribe_users(cr, uid, [group_id], context=context)
45 "/groups/<model('mail.group'):group>",
46 "/groups/<model('mail.group'):group>/page/<int:page>"
47 ], type='http', auth="public", website=True)
48 def thread_headers(self, group, page=1, mode='thread', date_begin=None, date_end=None, **post):
49 cr, uid, context = request.cr, request.uid, request.context
50 thread_obj = request.registry.get('mail.message')
52 domain = [('model', '=', 'mail.group'), ('res_id', '=', group.id)]
54 domain += [('parent_id', '=', False)]
55 if date_begin and date_end:
56 domain += [('date', '>=', date_begin), ('date', '<=', date_end)]
58 thread_count = thread_obj.search_count(cr, uid, domain, context=context)
59 pager = request.website.pager(
60 url='/groups/%s' % slug(group),
63 step=self._thread_per_page,
64 url_args={'mode': mode, 'date_begin': date_begin or '', 'date_end': date_end or ''},
66 thread_ids = thread_obj.search(cr, uid, domain, limit=self._thread_per_page, offset=pager['offset'])
67 messages = thread_obj.browse(cr, uid, thread_ids, context)
73 'archives': self._get_archives(group.id),
74 'date_begin': date_begin,
77 return request.website.render('website_mail_group.group_messages', values)
80 '''/groups/<model('mail.group'):group>/<model('mail.message', "[('model','=','mail.group'), ('res_id','=',group[0])]"):message>''',
81 ], type='http', auth="public", website=True)
82 def thread_discussion(self, group, message, mode='thread', date_begin=None, date_end=None, **post):
83 cr, uid, context = request.cr, request.uid, request.context
88 'date_begin': date_begin,
91 return request.website.render('website_mail_group.group_message', values)