2016-09-12 1 views
3

Я встретил Odoo в первый раз чуть меньше месяца назад, и DOS Systems Analyst из 90-х годов помогает реализовать его для небольшого, но быстро растущего местного производителя. В основном за последние 15 лет я занимаюсь не профессиональным, а быстрым обучением Python, HTML (некоторый опыт) и Java ...Как я могу анализировать и конвертировать даты и время?

Я прошел через Developer Docs, а также поваренную книгу разработчика & 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> 

Я приставка «ш /» Н2, чтобы сохранить его в правильном положении (показывает только на первой странице), но последующие страницы неясной седловины заголовки за заголовком макета ... это, вероятно, очевидно, и я «Не обращайте внимания, но как я могу настроить положение« H2 »ниже« заголовка »с помощью« report.external_layout »?

+0

Это первая страница: [ссылка] (https://1drv.ms/i/s!AkHbZineHVjYgqR0W2mt2AAUgwxrIw) Это вторая: [ссылка] (HTTPS: //1drv.ms/i/s!AkHbZineHVjYgqR14KFH7orGUuVVIw) Я переместил вывод H2, по-видимому, за заголовок макета ext. Обратите внимание на вторую страницу, сдвиг заголовков столбцов вверх ... остальная часть страниц печатается аналогичным образом. – IronHorseCowboy

+0

Это перемещает заголовок вверх и вниз (влияет на форматирование «external_layout»), но не решает проблему, так как остальная часть страницы перемещается вверх и вниз соразмерно ... Я верю из того, что я прочитал, что есть способ фактически установить начальную позицию для «рендеринга» (использование?), который, я надеюсь, должен повлиять на позиционирование H2, сдвинув его по отношению к позиции заголовка или абсолютной позиции вниз ... вопрос включает тело, как, на страницах 2+, без H2, он сдвинут; следовательно, исчезновение col hdrs, которое отлично отображено на стр. 1. – IronHorseCowboy

ответ

1

На рендеринге QWeb вы можете использовать время, время и время python libs. Они включены в так называемый контекст 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)" /> 
+0

Спасибо CZ! Я получаю то, что вы говорите, и полностью соглашаетесь с тем, что вызов кодированной функции Python - это намного лучшее решение для «обработки» в представлении отчета ... Я так много разбираюсь в разработке OO (особенно с Odoo, который, кажется, все о взглядах ...) ... Задача заключалась в моем послушном опыте с такими ... Я знаю, как создавать, загружать и использовать нужные функции, я просто не знаю, где их создавать, отчет будет иметь доступ, который не будет «сдуваться» с помощью системных обновлений ... Мы будем делать модуль, но atm просто пытается получить полезный отчет ... – IronHorseCowboy

+0

Итак, используя datetime.datetime. strptime (o.name, '% Y-% m-% d'). strftime ('% d /% m /% Y'), как показано выше, я получаю сообщение об ошибке ['unconverted data'] (https://1drv.ms/i/s!AkHbZineHVjYgqR7PfxDJCqT-F3lpA) ... и это указывает на время, которое я пытаюсь удалить ... может быть, мне нужно каким-то образом указать «ведро» на время? – IronHorseCowboy

+0

О, я пропустил это, вы должны использовать «% Y-% m-% d% H:% M:% S» в формате даты и времени для 'strptime()'. Я отредактирую свой ответ. – CZoellner