[MERGE] upstream

This commit is contained in:
Fabien Meghazi 2014-05-14 09:27:20 +02:00
commit 0d49bbb8e0
5 changed files with 64 additions and 69 deletions

View File

@ -167,9 +167,6 @@ class crm_lead(format_address, osv.osv):
""" """
:return dict: difference between current date and log date :return dict: difference between current date and log date
""" """
cal_obj = self.pool.get('resource.calendar')
res_obj = self.pool.get('resource.resource')
res = {} res = {}
for lead in self.browse(cr, uid, ids, context=context): for lead in self.browse(cr, uid, ids, context=context):
for field in fields: for field in fields:
@ -181,39 +178,14 @@ class crm_lead(format_address, osv.osv):
date_create = datetime.strptime(lead.create_date, "%Y-%m-%d %H:%M:%S") date_create = datetime.strptime(lead.create_date, "%Y-%m-%d %H:%M:%S")
date_open = datetime.strptime(lead.date_open, "%Y-%m-%d %H:%M:%S") date_open = datetime.strptime(lead.date_open, "%Y-%m-%d %H:%M:%S")
ans = date_open - date_create ans = date_open - date_create
date_until = lead.date_open
elif field == 'day_close': elif field == 'day_close':
if lead.date_closed: if lead.date_closed:
date_create = datetime.strptime(lead.create_date, "%Y-%m-%d %H:%M:%S") date_create = datetime.strptime(lead.create_date, "%Y-%m-%d %H:%M:%S")
date_close = datetime.strptime(lead.date_closed, "%Y-%m-%d %H:%M:%S") date_close = datetime.strptime(lead.date_closed, "%Y-%m-%d %H:%M:%S")
date_until = lead.date_closed
ans = date_close - date_create ans = date_close - date_create
if ans: if ans:
resource_id = False duration = abs(int(ans.days))
if lead.user_id: res[lead.id][field] = duration
resource_ids = res_obj.search(cr, uid, [('user_id','=',lead.user_id.id)])
if len(resource_ids):
resource_id = resource_ids[0]
duration = float(ans.days)
if lead.section_id and lead.section_id.resource_calendar_id:
duration = float(ans.days) * 24
new_dates = cal_obj.interval_get(cr,
uid,
lead.section_id.resource_calendar_id and lead.section_id.resource_calendar_id.id or False,
datetime.strptime(lead.create_date, '%Y-%m-%d %H:%M:%S'),
duration,
resource=resource_id
)
no_days = []
date_until = datetime.strptime(date_until, '%Y-%m-%d %H:%M:%S')
for in_time, out_time in new_dates:
if in_time.date not in no_days:
no_days.append(in_time.date)
if out_time > date_until:
break
duration = len(no_days)
res[lead.id][field] = abs(int(duration))
return res return res
_columns = { _columns = {
@ -253,7 +225,7 @@ class crm_lead(format_address, osv.osv):
'day_open': fields.function(_compute_day, string='Days to Open', \ 'day_open': fields.function(_compute_day, string='Days to Open', \
multi='day_open', type="float", store=True), multi='day_open', type="float", store=True),
'day_close': fields.function(_compute_day, string='Days to Close', \ 'day_close': fields.function(_compute_day, string='Days to Close', \
multi='day_close', type="float", store=True), multi='day_open', type="float", store=True),
'date_last_stage_update': fields.datetime('Last Stage Update', select=True), 'date_last_stage_update': fields.datetime('Last Stage Update', select=True),
# Messaging and marketing # Messaging and marketing

View File

@ -73,7 +73,7 @@ class WebsiteForum(http.Controller):
forums = Forum.browse(cr, uid, obj_ids, context=context) forums = Forum.browse(cr, uid, obj_ids, context=context)
return request.website.render("website_forum.forum_all", {'forums': forums}) return request.website.render("website_forum.forum_all", {'forums': forums})
@http.route('/forum/new', type='http', auth="user", multilang=True, website=True) @http.route('/forum/new', type='http', auth="user", methods=['POST'], multilang=True, website=True)
def forum_create(self, forum_name="New Forum", **kwargs): def forum_create(self, forum_name="New Forum", **kwargs):
forum_id = request.registry['forum.forum'].create(request.cr, request.uid, { forum_id = request.registry['forum.forum'].create(request.cr, request.uid, {
'name': forum_name, 'name': forum_name,
@ -220,7 +220,7 @@ class WebsiteForum(http.Controller):
request.registry['forum.post'].write(request.cr, request.uid, [question.id], {'favourite_ids': favourite_ids}, context=request.context) request.registry['forum.post'].write(request.cr, request.uid, [question.id], {'favourite_ids': favourite_ids}, context=request.context)
return favourite return favourite
@http.route('/forum/<model("forum.forum"):forum>/question/<model("forum.post"):question>/ask_for_close', type='http', auth="user", multilang=True, website=True) @http.route('/forum/<model("forum.forum"):forum>/question/<model("forum.post"):question>/ask_for_close', type='http', auth="user", methods=['POST'], multilang=True, website=True)
def question_ask_for_close(self, forum, question, **post): def question_ask_for_close(self, forum, question, **post):
check_res = self._has_enough_karma(question.create_uid.id == request.uid and '_karma_modo_close_own' or '_karma_modo_close_all') check_res = self._has_enough_karma(question.create_uid.id == request.uid and '_karma_modo_close_own' or '_karma_modo_close_all')
if not check_res[0]: if not check_res[0]:
@ -261,7 +261,7 @@ class WebsiteForum(http.Controller):
}, context=request.context) }, context=request.context)
return werkzeug.utils.redirect("/forum/%s/question/%s" % (slug(forum), slug(question))) return werkzeug.utils.redirect("/forum/%s/question/%s" % (slug(forum), slug(question)))
@http.route('/forum/<model("forum.forum"):forum>/question/<model("forum.post"):question>/reopen', type='http', auth="user", multilang=True, website=True) @http.route('/forum/<model("forum.forum"):forum>/question/<model("forum.post"):question>/reopen', type='http', auth="user", methods=['POST'], multilang=True, website=True)
def question_reopen(self, forum, question, **kwarg): def question_reopen(self, forum, question, **kwarg):
check_res = self._has_enough_karma(question.create_uid.id == request.uid and '_karma_modo_close_own' or '_karma_modo_close_all') check_res = self._has_enough_karma(question.create_uid.id == request.uid and '_karma_modo_close_own' or '_karma_modo_close_all')
if not check_res[0]: if not check_res[0]:
@ -270,7 +270,7 @@ class WebsiteForum(http.Controller):
request.registry['forum.post'].write(request.cr, request.uid, [question.id], {'state': 'active'}, context=request.context) request.registry['forum.post'].write(request.cr, request.uid, [question.id], {'state': 'active'}, context=request.context)
return werkzeug.utils.redirect("/forum/%s/question/%s" % (slug(forum), slug(question))) return werkzeug.utils.redirect("/forum/%s/question/%s" % (slug(forum), slug(question)))
@http.route('/forum/<model("forum.forum"):forum>/question/<model("forum.post"):question>/delete', type='http', auth="user", multilang=True, website=True) @http.route('/forum/<model("forum.forum"):forum>/question/<model("forum.post"):question>/delete', type='http', auth="user", methods=['POST'], multilang=True, website=True)
def question_delete(self, forum, question, **kwarg): def question_delete(self, forum, question, **kwarg):
check_res = self._has_enough_karma(question.create_uid.id == request.uid and '_karma_modo_unlink_own' or '_karma_modo_unlink_all') check_res = self._has_enough_karma(question.create_uid.id == request.uid and '_karma_modo_unlink_own' or '_karma_modo_unlink_all')
if not check_res[0]: if not check_res[0]:
@ -279,7 +279,7 @@ class WebsiteForum(http.Controller):
request.registry['forum.post'].write(request.cr, request.uid, [question.id], {'active': False}, context=request.context) request.registry['forum.post'].write(request.cr, request.uid, [question.id], {'active': False}, context=request.context)
return werkzeug.utils.redirect("/forum/%s/question/%s" % (slug(forum), slug(question))) return werkzeug.utils.redirect("/forum/%s/question/%s" % (slug(forum), slug(question)))
@http.route('/forum/<model("forum.forum"):forum>/question/<model("forum.post"):question>/undelete', type='http', auth="user", multilang=True, website=True) @http.route('/forum/<model("forum.forum"):forum>/question/<model("forum.post"):question>/undelete', type='http', auth="user", methods=['POST'], multilang=True, website=True)
def question_undelete(self, forum, question, **kwarg): def question_undelete(self, forum, question, **kwarg):
check_res = self._has_enough_karma(question.create_uid.id == request.uid and '_karma_modo_unlink_own' or '_karma_modo_unlink_all') check_res = self._has_enough_karma(question.create_uid.id == request.uid and '_karma_modo_unlink_own' or '_karma_modo_unlink_all')
if not check_res[0]: if not check_res[0]:
@ -338,7 +338,7 @@ class WebsiteForum(http.Controller):
request.registry['forum.post'].write(cr, uid, [post.id], {'is_correct': not post.is_correct}, context=context) request.registry['forum.post'].write(cr, uid, [post.id], {'is_correct': not post.is_correct}, context=context)
return not post.is_correct return not post.is_correct
@http.route('/forum/<model("forum.forum"):forum>/post/<model("forum.post"):post>/delete', type='http', auth="user", multilang=True, website=True) @http.route('/forum/<model("forum.forum"):forum>/post/<model("forum.post"):post>/delete', type='http', auth="user", methods=['POST'], multilang=True, website=True)
def post_delete(self, forum, post, **kwargs): def post_delete(self, forum, post, **kwargs):
check_res = self._has_enough_karma(post.create_uid.id == request.uid and '_karma_modo_unlink_own' or '_karma_modo_unlink_all') check_res = self._has_enough_karma(post.create_uid.id == request.uid and '_karma_modo_unlink_own' or '_karma_modo_unlink_all')
if not check_res[0]: if not check_res[0]:
@ -548,7 +548,7 @@ class WebsiteForum(http.Controller):
}) })
return request.website.render("website_forum.edit_profile", values) return request.website.render("website_forum.edit_profile", values)
@http.route('/forum/<model("forum.forum"):forum>/user/<model("res.users"):user>/save', type='http', auth="user", multilang=True, website=True) @http.route('/forum/<model("forum.forum"):forum>/user/<model("res.users"):user>/save', type='http', auth="user", methods=['POST'], multilang=True, website=True)
def save_edited_profile(self, forum, user, **kwargs): def save_edited_profile(self, forum, user, **kwargs):
request.registry['res.users'].write(request.cr, request.uid, [user.id], { request.registry['res.users'].write(request.cr, request.uid, [user.id], {
'name': kwargs.get('name'), 'name': kwargs.get('name'),
@ -589,7 +589,7 @@ class WebsiteForum(http.Controller):
# Messaging # Messaging
# -------------------------------------------------- # --------------------------------------------------
@http.route('/forum/<model("forum.forum"):forum>/post/<model("forum.post"):post>/comment/<model("mail.message"):comment>/convert_to_answer', type='http', auth="public", multilang=True, website=True) @http.route('/forum/<model("forum.forum"):forum>/post/<model("forum.post"):post>/comment/<model("mail.message"):comment>/convert_to_answer', type='http', auth="public", methods=['POST'], multilang=True, website=True)
def convert_comment_to_answer(self, forum, post, comment, **kwarg): def convert_comment_to_answer(self, forum, post, comment, **kwarg):
body = comment.body body = comment.body
request.registry['mail.message'].unlink(request.cr, request.uid, [comment.id], context=request.context) request.registry['mail.message'].unlink(request.cr, request.uid, [comment.id], context=request.context)
@ -599,7 +599,7 @@ class WebsiteForum(http.Controller):
return self.post_comment(forum, answer, comment=html2plaintext(body)) return self.post_comment(forum, answer, comment=html2plaintext(body))
return self.post_new(forum, question, content=body) return self.post_new(forum, question, content=body)
@http.route('/forum/<model("forum.forum"):forum>/post/<model("forum.post"):post>/convert_to_comment', type='http', auth="user", multilang=True, website=True) @http.route('/forum/<model("forum.forum"):forum>/post/<model("forum.post"):post>/convert_to_comment', type='http', auth="user", methods=['POST'], multilang=True, website=True)
def convert_answer_to_comment(self, forum, post, **kwarg): def convert_answer_to_comment(self, forum, post, **kwarg):
values = { values = {
'comment': html2plaintext(post.content), 'comment': html2plaintext(post.content),

View File

@ -21,9 +21,9 @@
</template> </template>
<!-- helper --> <!-- helper -->
<template id="muted_button"> <template id="link_button">
<form method="POST" t-att-action="url"> <form method="POST" t-att-action="url">
<button t-attf-class="text-muted fa btn-link #{classes}"> <button t-attf-class="fa btn-link #{classes}">
<t t-esc="label"/></button> <t t-esc="label"/></button>
</form> </form>
</template> </template>
@ -440,7 +440,11 @@
on <span t-field="question.closed_date"/></b> on <span t-field="question.closed_date"/></b>
</p> </p>
<div t-if="question.state == 'close' and user.karma&gt;=500" class="mb24 text-center"> <div t-if="question.state == 'close' and user.karma&gt;=500" class="mb24 text-center">
<a class="fa fa-arrow-right" t-attf-href="/forum/#{ slug(forum) }/question/#{slug(question)}/reopen"> Reopen</a> <t t-call="website_forum.link_button">
<t t-set="url"><t t-escf="/forum/#{ slug(forum) }/question/#{slug(question)}/reopen"/></t>
<t t-set="label"> Reopen</t>
<t t-set="classes">fa-arrow-right</t>
</t>
</div> </div>
</div> </div>
<t t-raw="question.content"/> <t t-raw="question.content"/>
@ -460,19 +464,39 @@
</a> </a>
</li> </li>
<li t-if="question.state != 'close' and ((user.id == question.create_uid.id and can_close_own) or can_close_all)"> <li t-if="question.state != 'close' and ((user.id == question.create_uid.id and can_close_own) or can_close_all)">
<a class="text-muted fa fa-times" t-attf-href="/forum/#{ slug(forum) }/question/#{slug(question)}/ask_for_close"> Close</a> <t t-call="website_forum.link_button">
<t t-set="url"><t t-escf="/forum/#{ slug(forum) }/question/#{slug(question)}/ask_for_close"/></t>
<t t-set="label"> Close</t>
<t t-set="classes">text-muted fa-times</t>
</t>
</li> </li>
<li t-if="question.state == 'close' and ((user.id == question.create_uid.id and can_close_own) or can_close_all)"> <li t-if="question.state == 'close' and ((user.id == question.create_uid.id and can_close_own) or can_close_all)">
<a class="text-muted fa fa-undo" t-attf-href="/forum/#{ slug(forum) }/question/#{slug(question)}/reopen"> Reopen</a> <t t-call="website_forum.link_button">
<t t-set="url"><t t-escf="/forum/#{ slug(forum) }/question/#{slug(question)}/reopen"/></t>
<t t-set="label"> Reopen</t>
<t t-set="classes">text-muted fa-undo</t>
</t>
</li> </li>
<li t-if="(user.id == question.create_uid.id and can_edit_own) or can_edit_all"> <li t-if="(user.id == question.create_uid.id and can_edit_own) or can_edit_all">
<a class="text-muted fa fa-edit" t-attf-href="/forum/#{ slug(forum) }/post/#{slug(question)}/edit"> Edit</a> <t t-call="website_forum.link_button">
<t t-set="url"><t t-escf="/forum/#{ slug(forum) }/post/#{slug(question)}/edit"/></t>
<t t-set="label"> Edit</t>
<t t-set="classes">text-muted fa-edit</t>
</t>
</li> </li>
<li t-if="question.active and ((user.id == question.create_uid.id and can_unlink_own) or can_unlink_all)"> <li t-if="question.active and ((user.id == question.create_uid.id and can_unlink_own) or can_unlink_all)">
<a class="text-muted fa fa-trash-o" t-attf-href="/forum/#{ slug(forum) }/question/#{slug(question)}/delete"> Delete</a> <t t-call="website_forum.link_button">
<t t-set="url"><t t-escf="/forum/#{ slug(forum) }/question/#{slug(question)}/delete"/></t>
<t t-set="label"> Delete</t>
<t t-set="classes">text-muted fa-trash-o</t>
</t>
</li> </li>
<li t-if="not question.active and ((user.id == question.create_uid.id and can_unlink_own) or can_unlink_all)"> <li t-if="not question.active and ((user.id == question.create_uid.id and can_unlink_own) or can_unlink_all)">
<a class="text-muted fa fa-trash-o" t-attf-href="/forum/#{ slug(forum) }/question/#{slug(question)}/undelete"> Undelete</a> <t t-call="website_forum.link_button">
<t t-set="url"><t t-escf="/forum/#{ slug(forum) }/question/#{slug(question)}/undelete"/></t>
<t t-set="label"> Undelete</t>
<t t-set="classes">text-muted fa-trash-o</t>
</t>
</li> </li>
</ul> </ul>
</div> </div>
@ -519,17 +543,17 @@
<a class="text-muted fa fa-edit" t-attf-href="/forum/#{slug(forum)}/post/#{slug(answer)}/edit"> Edit</a> <a class="text-muted fa fa-edit" t-attf-href="/forum/#{slug(forum)}/post/#{slug(answer)}/edit"> Edit</a>
</li> </li>
<li t-if="(user.id == answer.create_uid.id and can_unlink_own) or can_unlink_all"> <li t-if="(user.id == answer.create_uid.id and can_unlink_own) or can_unlink_all">
<t t-call="website_forum.muted_button"> <t t-call="website_forum.link_button">
<t t-set="url"><t t-escf="/forum/#{slug(forum)}/post/#{slug(answer)}/delete"/></t> <t t-set="url"><t t-escf="/forum/#{slug(forum)}/post/#{slug(answer)}/delete"/></t>
<t t-set="label"> Delete</t> <t t-set="label"> Delete</t>
<t t-set="classes">fa-trash-o</t> <t t-set="classes">text-muted fa-trash-o</t>
</t> </t>
</li> </li>
<li t-if="user.id == answer.create_uid.id"> <li t-if="user.id == answer.create_uid.id">
<t t-call="website_forum.muted_button"> <t t-call="website_forum.link_button">
<t t-set="url"><t t-escf="/forum/#{slug(forum)}/post/#{slug(answer)}/convert_to_comment"/></t> <t t-set="url"><t t-escf="/forum/#{slug(forum)}/post/#{slug(answer)}/convert_to_comment"/></t>
<t t-set="label">Convert as a comment</t> <t t-set="label">Convert as a comment</t>
<t t-set="classes">fa-magic</t> <t t-set="classes">text-muted fa-magic</t>
</t> </t>
</li> </li>
</ul> </ul>
@ -574,10 +598,10 @@
style="display: inline-block;"/> style="display: inline-block;"/>
on <span t-field="message.date" t-field-options='{"format":"short"}'/> on <span t-field="message.date" t-field-options='{"format":"short"}'/>
<t t-call="website_forum.muted_button"> <t t-call="website_forum.link_button">
<t t-set="url"><t t-escf="/forum/#{slug(forum)}/post/#{slug(object)}/comment/#{slug(message)}/convert_to_answer"/></t> <t t-set="url"><t t-escf="/forum/#{slug(forum)}/post/#{slug(object)}/comment/#{slug(message)}/convert_to_answer"/></t>
<t t-set="label"> Convert as an answer</t> <t t-set="label"> Convert as an answer</t>
<t t-set="classes">fa-magic pull-right</t> <t t-set="classes">text-muted fa-magic pull-right</t>
</t> </t>
</small> </small>
</div> </div>

View File

@ -1,6 +1,5 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import openerp
from openerp import SUPERUSER_ID from openerp import SUPERUSER_ID
from openerp.addons.web import http from openerp.addons.web import http
from openerp.addons.web.http import request from openerp.addons.web.http import request
@ -39,7 +38,7 @@ class WebsiteMembership(http.Controller):
current_country = None current_country = None
# base domain for groupby / searches # base domain for groupby / searches
base_line_domain = [("partner.website_published", "=", True),('state', 'in', ['free', 'paid'])] base_line_domain = [("partner.website_published", "=", True), ('state', 'in', ['free', 'paid'])]
if membership_id: if membership_id:
base_line_domain.append(('membership_id', '=', membership_id)) base_line_domain.append(('membership_id', '=', membership_id))
membership = product_obj.browse(cr, uid, membership_id, context=context) membership = product_obj.browse(cr, uid, membership_id, context=context)
@ -76,12 +75,10 @@ class WebsiteMembership(http.Controller):
membership_line_ids = membership_line_obj.search(cr, uid, line_domain, context=context) membership_line_ids = membership_line_obj.search(cr, uid, line_domain, context=context)
membership_lines = membership_line_obj.browse(cr, uid, membership_line_ids, context=context) membership_lines = membership_line_obj.browse(cr, uid, membership_line_ids, context=context)
membership_lines.sort(key=lambda x: x.membership_id.website_sequence) membership_lines.sort(key=lambda x: x.membership_id.website_sequence)
partner_ids = [m.partner and m.partner.id for m in membership_lines] partner_ids = [m.partner.id for m in membership_lines]
google_map_partner_ids = ",".join(map(str, partner_ids)) google_map_partner_ids = ",".join(map(str, partner_ids))
partners_data = {} partners = dict((p.id, p) for p in partner_obj.browse(request.cr, SUPERUSER_ID, partner_ids, request.context))
for partner in partner_obj.read(cr, openerp.SUPERUSER_ID, partner_ids, request.website.get_partner_white_list_fields(), context=context):
partners_data[partner.get("id")] = partner
# format domain for group_by and memberships # format domain for group_by and memberships
membership_ids = product_obj.search(cr, uid, [('membership', '=', True)], order="website_sequence", context=context) membership_ids = product_obj.search(cr, uid, [('membership', '=', True)], order="website_sequence", context=context)
@ -91,7 +88,7 @@ class WebsiteMembership(http.Controller):
pager = request.website.pager(url="/members", total=len(membership_line_ids), page=page, step=self._references_per_page, scope=7, url_args=post) pager = request.website.pager(url="/members", total=len(membership_line_ids), page=page, step=self._references_per_page, scope=7, url_args=post)
values = { values = {
'partners_data': partners_data, 'partners': partners,
'membership_lines': membership_lines, 'membership_lines': membership_lines,
'memberships': memberships, 'memberships': memberships,
'membership': membership, 'membership': membership,
@ -107,8 +104,7 @@ class WebsiteMembership(http.Controller):
@http.route(['/members/<int:partner_id>', '/members/<partner_name>-<int:partner_id>'], type='http', auth="public", website=True, multilang=True) @http.route(['/members/<int:partner_id>', '/members/<partner_name>-<int:partner_id>'], type='http', auth="public", website=True, multilang=True)
def partners_ref(self, partner_id, **post): def partners_ref(self, partner_id, **post):
partner = request.registry['res.partner'].browse(request.cr, SUPERUSER_ID, partner_id, context=request.context) values = website_partner.get_partner_template_value(partner_id)
values = website_partner.get_partner_template_value(partner)
if not values: if not values:
return self.members(**post) return self.members(**post)
values['main_object'] = values['partner'] values['main_object'] = values['partner']

View File

@ -59,14 +59,17 @@
<t t-set="current_membership_id" t-value="membership_line_id.membership_id.id"/> <t t-set="current_membership_id" t-value="membership_line_id.membership_id.id"/>
<h3 class="text-center"><span t-field="membership_line_id.membership_id"/></h3> <h3 class="text-center"><span t-field="membership_line_id.membership_id"/></h3>
</t> </t>
<t t-set="partner_data" t-value="partners_data[membership_line_id.partner.id]"/> <t t-set="partner" t-value="partners[membership_line_id.partner.id]"/>
<div class="media"> <div class="media">
<a class="pull-left" t-attf-href="/members/#{ slug([partner_data.get('id'), partner_data.get('name')]) }"> <a class="pull-left" t-attf-href="/members/#{slug(partner)}"
<img class="media-object" t-attf-src="data:image/png;base64,#{partner_data.get('image_small')}"/> t-field="partner.image_small"
</a> t-field-options='{"widget": "image", "class": "media-object"}'
></a>
<div class="media-body" style="min-height: 64px;"> <div class="media-body" style="min-height: 64px;">
<a class="media-heading" t-attf-href="/members/#{ slug([partner_data.get('id'), partner_data.get('name')]) }"><t t-if="partner_data.get('parent_id')"><span t-esc="partner_data.get('parent_id')[1]"/></t> <span t-esc="partner_data.get('name')"/></a> <a class="media-heading" t-attf-href="/members/#{slug(partner)}">
<div t-raw="partner_data.get('website_short_description')"/> <span t-field="partner.display_name"/>
</a>
<div t-field="partner.website_short_description"/>
</div> </div>
</div> </div>
</t> </t>