[IMP] website: fix the pager; website_mail: use website pager

bzr revid: chm@openerp.com-20130814094122-s21uaicmnwnhuxwm
This commit is contained in:
Christophe Matthieu
2013-08-14 11:41:22 +02:00
parent 2d1ec50f37
commit 1b31e4255d
5 changed files with 20 additions and 30 deletions
+1 -1
View File
@@ -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>
+1 -1
View File
@@ -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"]))
+11 -17
View File
@@ -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)
+3 -3
View File
@@ -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)
+4 -8
View File
@@ -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)">&amp;larr; Older</a>
</li>
<li t-if="prev_date" class="next">
<a t-att-href="'?date=%%s' %% (prev_date)">Newer &amp;rarr;</a>
</li>
</ul>
<div class="text-center">
<t t-call="website.pager" />
</div>
</div>
</div>
</div>