[IMP] website: fix the pager; website_mail: use website pager
bzr revid: chm@openerp.com-20130814094122-s21uaicmnwnhuxwm
This commit is contained in:
@@ -437,7 +437,7 @@
|
||||
</template>
|
||||
|
||||
<template id="pager">
|
||||
<div t-if="pager['page_count'] != 1" t-attf-class="#{ classname or '' } pagination">
|
||||
<div t-if="pager['page_count'] > 1" t-attf-class="#{ classname or '' } pagination">
|
||||
<ul>
|
||||
<li t-att-class=" 'disabled' if pager['page']['num'] == 1 else '' " >
|
||||
<a t-att-href=" pager['page_start']['url'] if pager['page']['num'] != 1 else '' ">Prev</a>
|
||||
|
||||
@@ -73,7 +73,7 @@ class website(osv.osv):
|
||||
def pager(self, url, total, page=1, step=30, scope=5):
|
||||
# Compute Pager
|
||||
d = {}
|
||||
d["page_count"] = int(math.ceil(total / step))
|
||||
d["page_count"] = int(math.ceil(float(total) / step))
|
||||
|
||||
page = max(1, min(int(page), d["page_count"]))
|
||||
|
||||
|
||||
@@ -13,8 +13,9 @@ _months = {1:_("January"), 2:_("February"), 3:_("March"), 4:_("April"), 5:_("May
|
||||
|
||||
class website_mail(http.Controller):
|
||||
|
||||
@http.route(['/blog', '/blog/<int:mail_group_id>/', '/blog/<int:mail_group_id>/<int:blog_id>/'], type='http', auth="public")
|
||||
def blog(self, mail_group_id=None, blog_id=None, **post):
|
||||
@http.route(['/blog/', '/blog/<int:mail_group_id>/', '/blog/<int:mail_group_id>/<int:blog_id>/',
|
||||
'/blog/page/<int:page>/', '/blog/<int:mail_group_id>/page/<int:page>/', '/blog/<int:mail_group_id>/<int:blog_id>/page/<int:page>/'], type='http', auth="public")
|
||||
def blog(self, mail_group_id=None, blog_id=None, page=0, **post):
|
||||
website = request.registry['website']
|
||||
group_obj = request.registry['mail.group']
|
||||
message_obj = request.registry['mail.message']
|
||||
@@ -24,8 +25,6 @@ class website_mail(http.Controller):
|
||||
'blog_ids': None,
|
||||
'blog_id': None,
|
||||
'nav_list': dict(),
|
||||
'prev_date': None,
|
||||
'next_date': None,
|
||||
'mail_group_id': mail_group_id,
|
||||
'subscribe': post.get('subscribe'),
|
||||
'website': website,
|
||||
@@ -38,27 +37,22 @@ class website_mail(http.Controller):
|
||||
|
||||
domain = mail_group_id and [("res_id", "=", mail_group_id)] or []
|
||||
|
||||
for group in message_obj.read_group(request.cr, request.uid, domain + group_obj.get_public_blog(request.cr, request.uid), ['subject', 'date'], groupby="date", orderby="create_date asc"):
|
||||
for group in message_obj.read_group(request.cr, request.uid, domain + group_obj.get_domain_public_blog(request.cr, request.uid), ['subject', 'date'], groupby="date", orderby="create_date asc"):
|
||||
year = group['date'].split(" ")[1]
|
||||
if not values['nav_list'].get(year):
|
||||
values['nav_list'][year] = {'name': year, 'date_count': 0, 'months': []}
|
||||
values['nav_list'][year]['date_count'] += group['date_count']
|
||||
values['nav_list'][year]['months'].append(group)
|
||||
|
||||
if post.get('date'):
|
||||
ids = group_obj.get_public_message_ids(request.cr, request.uid, domain=domain + [("date", ">", post.get('date'))], order="create_date asc", limit=10)
|
||||
if ids:
|
||||
values['prev_date'] = message_obj.browse(request.cr, request.uid, ids.pop()).date
|
||||
domain += [("date", "<=", post.get('date'))]
|
||||
|
||||
message_ids = group_obj.get_public_message_ids(request.cr, request.uid, domain=domain, order="create_date desc", limit=11)
|
||||
if message_ids:
|
||||
values['blog_ids'] = message_obj.browse(request.cr, request.uid, message_ids)
|
||||
if len(message_ids) > 10:
|
||||
values['next_date'] = values['blog_ids'].pop().date
|
||||
|
||||
if blog_id:
|
||||
values['blog_id'] = message_obj.browse(request.cr, request.uid, blog_id)
|
||||
else:
|
||||
step = 20
|
||||
message_count = len(group_obj.get_public_message_ids(request.cr, request.uid, domain=domain, order="create_date desc"))
|
||||
pager = website.pager(url="/blog/%s/" % mail_group_id, total=message_count, page=page, step=step, scope=7)
|
||||
message_ids = group_obj.get_public_message_ids(request.cr, request.uid, domain=domain, order="create_date desc", limit=step, offset=pager['offset'])
|
||||
values['pager'] = pager
|
||||
values['blog_ids'] = message_obj.browse(request.cr, request.uid, message_ids)
|
||||
|
||||
return website.render("website_mail.index", values)
|
||||
|
||||
|
||||
@@ -32,12 +32,12 @@ class mail_message(osv.osv):
|
||||
class mail_group(osv.Model):
|
||||
_inherit = 'mail.group'
|
||||
|
||||
def get_public_blog(self, cr, uid, context=None):
|
||||
def get_domain_public_blog(self, cr, uid, context=None):
|
||||
mail_group_ids = self.search(cr, uid, [('public', '=', 'public')], context=context)
|
||||
return [ ("type", "in", ['comment']),
|
||||
("parent_id", "=", False),
|
||||
("model", "=", 'mail.group'), ("res_id", "in", mail_group_ids)]
|
||||
|
||||
def get_public_message_ids(self, cr, uid, domain=[], order="create_date desc", limit=10, offset=0, context=None):
|
||||
domain += self.get_public_blog(cr, uid, context=context)
|
||||
def get_public_message_ids(self, cr, uid, domain=[], order="create_date desc", limit=None, offset=0, context=None):
|
||||
domain += self.get_domain_public_blog(cr, uid, context=context)
|
||||
return self.pool.get('mail.message').search(cr, uid, domain, order=order, limit=limit, offset=offset, context=context)
|
||||
|
||||
@@ -78,6 +78,7 @@
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="span8" t-if="not blog_id and blog_ids">
|
||||
<ul class="media-list">
|
||||
<li t-foreach="blog_ids" t-as="blog" class="media well">
|
||||
@@ -98,14 +99,9 @@
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="pager">
|
||||
<li t-if="next_date" class="previous">
|
||||
<a t-att-href="'?date=%%s' %% (next_date)">&larr; Older</a>
|
||||
</li>
|
||||
<li t-if="prev_date" class="next">
|
||||
<a t-att-href="'?date=%%s' %% (prev_date)">Newer &rarr;</a>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="text-center">
|
||||
<t t-call="website.pager" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user