On 3/22/07, Thiago Garcia Tamosauskas <[EMAIL PROTECTED]>
wrote:

Como se faria um portlet que só aparecesse nas segundas feiras?
Ou melhor, um portlet que só aparecesse em um dia x da semana.

Thiago, a classe DateTime do Zope possui um método chamado dow() [sigla de
day-of-week] que retorna um inteiro, sendo 0 para domingp, 1 para
segunda-feira (...) e 6 para o sábado.

Veja estes testes, primeiro num PageTemplate:

---------------------------------------------------
<html>
 <body>
   <div tal:define="dt modules/DateTime/DateTime;
                    hoje dt">
     <h1 tal:content="hoje" />
     <h1 tal:content="python:hoje.dow()" />
   </div>
 </body>
</html>
---------------------------------------------------

Agora num Script(Python):

---------------------------------------------------
from DateTime import DateTime
hoje = DateTime()
print hoje
print hoje.dow()
return printed
---------------------------------------------------

A documentação desta classe você encontra no Help da API do Zope. Na minha
instância local, a URL é a seguinte:

http://localhost:8080/Control_Panel/Products/OFSP/Help/DateTime.py

Para fazer um portlet aparecer apenas em um dia da semana, você coloca no
div onde é definida a macro do portlet um tal:condition para testar se
hoje.dow() corresponde ao dia que você quer. Vários portlets padrão do Plone
já vêm com tal:condition em seus div principal. Por exemplo, o portlet_news
tem um tal:condition que faz com que ele só apareça se existem News. Neste
caso, seria acrescentar um "and" no tal:condition, e incluir a condição do
dia da semana.

[ ]s
Luciano

PS. Note que a classe DateTime.DateTime do Zope não é a mesma coisa que a
classe datetime.datetime do Python, porque o Zope incorporou DateTime antes
que datetime se tornasse parte da API padrão do Python... perdi um tempo
fazendo os testes agora há pouco, porque na classe datetime, o método dow()
chama-se weekday(), e foi esse o nome que eu lembrei primeiro, porque dow()
é de lascar...

Responder a