2016-09-12 8 views
3

私はOdooをわずか1ヶ月前に初めて会ったし、90年代のDOSシステムアナリストは、小さくても急速に成長する地元のメーカーのためにそれを実装するのを手伝っている。主に過去15年間、私はプロではありませんでしたが、Python、HTML(いくつかの過去の経験)とJavaを素早く学んでいます...日付と時刻を解析して変換する方法はありますか?

私はDeveloper Docs、Developer's Cookbook & Essentials、さまざまなオンラインチュートリアル(いくつかの検索語の組み合わせからGoogleが考え出すことのできるすべてについて)

私はこのことについて尋ね、閉じた記事を読み、実際のOdoo参照が明らかにありませんことを得る...

誰かがどこ私は、私がアクセスできる「日付/時間」解析や変換機能を見つけるかもしれないを教えてくださいすることができ「缶詰め」の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> 

私はこれはおそらく明らかであると私...適切に配置しておく(最初のページのみに表示されます)、それ以降のページは、レイアウトのヘッダの後ろCOLヘッダを不明瞭にH2「にBRを/」接頭辞私は気付いていませんが、 'header'の設定が 'report.external_layout'より下になるように 'H2'の位置を調整するにはどうすればいいですか?

+0

これは最初のページである:[リンク](https://1drv.ms/i/s!AkHbZineHVjYgqR0W2mt2AAUgwxrIw)これは第二である:[リンク](HTTPS: //1drv.ms/i/s!AkHbZineHVjYgqR14KFH7orGUuVVIw)私は、H2出力を明らかにextレイアウトのヘッダの後ろに移動しました。 2ページ目では、見出しの上向きシフトに注意してください。残りのページは同様の方法で印刷されます。 – IronHorseCowboy

+0

これはヘッダーを上下に動かします( 'external_layout'フォーマットに影響します)が、問題は解決しません。ページの残りの部分は相応に上下に動いています...私が読んだことから、実際にH2の配置に影響を与えるべきである「レンダリング」(使用法)の開始位置を実際に設定する方法があることは、それが「ヘッダー」位置または絶対位置を基準にしてシフトすることです。問題には、ページが2+以上で、H2がない場合、本文が含まれます。したがって、ページ1に表示されるcol hdrsの消滅。 – IronHorseCowboy

答えて

1

QWebレンダリングでは、Pythonのlibs time、datetime、およびrelativedeltaを使用できます。それらは、レポート内のコードの評価(python評価)に使用されるいわゆるQWebコンテキストに含まれています。あなたは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)" /> 
+0

ありがとうCZ!私はあなたが言っていることを得て、Pythonコード関数を呼び出すことは、レポートビュー内で「処理」しようとするより優れた解決策であることに完全に同意します...私はオブジェクト指向開発について多くのことを学びます(特にOdooすべてのビューについて...)...そのような挑戦は私の初心者の経験にあるだろう...私はどのように作成する必要があり、必要な機能をロードし、使用する、私はちょうどそれらを作成するか分からないレポートはアクセスできます。システムの更新によって吹き飛ばされることはありません。モジュールを使用していますが、使用可能なレポートを取得しようとしています... – IronHorseCowboy

+0

したがって、datetime.datetimeを使用してください。上記のように、strptime( '%d /%m /%Y')にstrptime(o.name、 '%Y-%m-%d')を設定すると、['unconverted data' /1drv.ms/i/s!AkHbZineHVjYgqR7PfxDJCqT-F3lpA)...それは、私がストリップしようとしている時間を示しています...私は多分、時間のために 'バケット'を指定する必要がありますか? – IronHorseCowboy

+0

ああ、私はそれを逃した、 '%Y-%m-%d%H:%M:%S 'を' strptime() 'のdatetime形式として使用する必要があります。私は私の答えを編集します。 – CZoellner

関連する問題