我如何解析和转换日期&时代?

时间:2016-09-12 21:04:43

标签: datetime report openerp

我在不到一个月前的第一次见到Odoo,并且,90年代的DOS系统分析师正在帮助一个小型但发展迅速的本地制造商实施它。在过去的15年中,我不是专业人士,而是快速学习Python,HTML(一些过去的专业知识)和Java ......

我已经浏览了Developer Docs,以及开发者的食谱& Essentials和各种在线教程(几乎所有Google都可以从几个搜索词组合中得到)。

我阅读了关于这个问题的封闭帖子并得到了显然没有实际的Odoo参考...

有人可以告诉我在哪里可以找到'日期/时间'解析和转换功能,我可以从使用'canned''hr.employee'模型的报告中查看?

<?xml version="1.0"?>
<t t-name="hr_attendance.report_attendancelog">
    <t t-call="report.html_container">
        <t t-call="report.external_layout">
            <div class="page">
                <div class="oe_structure"/>
                <div class="row">
                    <div class="col-xs-6">
                        <h2><br/>Attendance Log: </h2>
                    </div>
                </div>
                <table class="table table-condensed mt32">
                    <thead>
                        <th><strong>Date / Time</strong></th>
                        <th><strong> Operation</strong></th>
                    </thead>
                    <tbody>
                        <t t-foreach="docs" t-as="o">
                            <t t-set="DspDate" t-value="o.name"/>
                            <t t-set="DspTime" t-value="o.name"/>

<!-- I want to parse 'o.name', which is 'date time' format (from
             Attendance record) to separate 'Date' and 'Time' fields... -->
                        <!-- t t-set="DspDate" t-value="FUNC?(o.name)"/ -->
                        <!-- t t-set="DspTime" t-value="FUNC?(o.name)"/ -->
<!-- and do calcs with date & time...) -->
                        <!-- t t-set="ClcDt1" t-value="FUNC?('PrvDt')"/ -->
                        <!-- t t-set="ClcDt2" t-value="FUNC?(DspDate)"/ -->
                        <!-- t t-set="ClcTm1" t-value="FUNC?('PrvTm')"/ -->
                        <!-- t t-set="ClcTm2" t-value="FUNC?(DspTime)"/ -->

                            <tr>
                                <t t-if="ClcDt1 == ClcDt2">
                                    <td><span t-esc="DspDate"/></td>
                                    <td><span t-esc="DspTime"/></td>
                                    <td><span t-esc="o.action"/></td>
                                </t
                            </tr>
                        </t>
                        <tr class="border-black">
                            <td colspan="3"><strong>Total period</strong></td>
                            <td><strong t-esc="o.worked_hours"/></td -->
                        </tr>
                    </tbody>
                </table>
            </div>
        </t>
    </t>
</t>

我将'br /'加上H2来保持它正确定位(仅显示在第一页),但后续页面遮盖了布局标题后面的col标题......这可能是显而易见的,我没有注意到,但如何通过'report.external_layout'将'H2'位置调整到'header'设置之下?

1 个答案:

答案 0 :(得分:1)

在QWeb渲染上,您可以使用python libs time,datetime和relativedelta。它们包含在所谓的QWeb上下文中,用于报告中代码的评估(python eval)。您可以在Odoo代码here中看到这一点。

这意味着你做了这样的事情:

<t t-set="DspDate" t-value="datetime.datetime.strptime(o.name, '%Y-%m-%d %H:%M:%S').strftime('%d/%m/%Y')" />

我更喜欢报表的解析器类来定义一些常用函数。例如:您可以定义执行解析或转换内容的函数getDate。解析器函数的报告代码会更好:

<t t-set="DspDate" t-value="getDate(o.name)" />