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...