Django Utilidades :: Marinho Brandaohttp://marinhobrandao.com/pt-brTue, 06 Jan 2009 09:20:55 -0000Criando Google Gadgets no Djangohttp://marinhobrandao.com/blog/p/criando-google-gadgets-no-django_120/<div class="document"> <p>Criei mais um projetinho bacana pra quem está interessado em escrever aplicações para o iGoogle e para sistemas que utilizem a API OpenSocial (como MySpace, Hi5, Orkut, etc.) <a class="footnote-reference" href="#id8" id="id1" name="id1">[1]</a>, chama-se <strong>django-gadgets</strong> <a class="footnote-reference" href="#id9" id="id2" name="id2">[2]</a>.</p> <p>Para utilizá-lo, faça o download disponível através do <strong>svn</strong> <a class="footnote-reference" href="#id10" id="id3" name="id3">[3]</a> (ou em tarball <a class="footnote-reference" href="#id13" id="id4" name="id4">[6]</a>) e crie um link da pasta <strong>gadgets</strong> na pasta de <strong>contrib</strong> do Django ou em alguma outra que você prefira.</p> <p>Segue um exemplo abaixo:</p> <p><strong>Modulo</strong></p> <pre><code>from django.contrib.gadgets.models import GadgetModule, UserPrefEnum from adoradores.gadgets.models import AgendamentoVersiculo from adoradores.biblia.models import Versiculo class VersosModule(GadgetModule): title = 'Versos da Biblia' description = 'Leia todos os dias versos inspirados da Biblia' author = 'Marinho Brandao' author_email = 'marinho@gmail.com' user_prefs = [UserPrefEnum('tema', enumvalues={'1':'Esperanca','2':'Paz',}),] content_template = """ <style> * { font-family: arial, helvetica; font-size: 12px; } </style> <div class="all2"><div class="all"><div class="body"> %s </div></div></div> """ def render(self): opcoes = AgendamentoVersiculo.objects.all() #filter(data_agendamento=datetime.today()) self.content_html = self.content_template % '<br/>'.join(opcoes.latest('id').conteudo_para_lista()) return super(VersosModule, self).render()</code></pre><p><strong>URL</strong></p> <pre><code>urlpatterns = patterns('', (r'^versos/$', 'django.contrib.gadgets.views.gadget', {'module': VersosModule}), )</code></pre><p>Para ver um exemplo prático, adicione <a class="footnote-reference" href="#id11" id="id5" name="id5">[4]</a> como aplicação em seu iGoogle ou no SandBox do Orkut <a class="footnote-reference" href="#id12" id="id6" name="id6">[5]</a></p> <p><strong>Atualização</strong></p> <p>Você pode testar seus gadgets sem precisar adicioná-los ao iGoogle ou ao Orkut. Dê uma olhada no projeto <strong>opensocial-container-sample</strong> <a class="footnote-reference" href="#id14" id="id7" name="id7">[7]</a> que foi criado para isso.</p> <p><strong>Links relacionados</strong></p> <table class="docutils footnote" frame="void" id="id8" rules="none"> <colgroup><col class="label" /><col /></colgroup> <tbody valign="top"> <tr><td class="label"><a class="fn-backref" href="#id1" name="id8">[1]</a></td><td><a class="reference" href="http://code.google.com/apis/opensocial/">http://code.google.com/apis/opensocial/</a></td></tr> </tbody> </table> <table class="docutils footnote" frame="void" id="id9" rules="none"> <colgroup><col class="label" /><col /></colgroup> <tbody valign="top"> <tr><td class="label"><a class="fn-backref" href="#id2" name="id9">[2]</a></td><td><a class="reference" href="http://code.google.com/p/django-gadgets/">http://code.google.com/p/django-gadgets/</a></td></tr> </tbody> </table> <table class="docutils footnote" frame="void" id="id10" rules="none"> <colgroup><col class="label" /><col /></colgroup> <tbody valign="top"> <tr><td class="label"><a class="fn-backref" href="#id3" name="id10">[3]</a></td><td><a class="reference" href="http://code.google.com/p/django-gadgets/source">http://code.google.com/p/django-gadgets/source</a></td></tr> </tbody> </table> <table class="docutils footnote" frame="void" id="id11" rules="none"> <colgroup><col class="label" /><col /></colgroup> <tbody valign="top"> <tr><td class="label"><a class="fn-backref" href="#id5" name="id11">[4]</a></td><td><a class="reference" href="http://adorador.es/gadgets/versos/">http://adorador.es/gadgets/versos/</a></td></tr> </tbody> </table> <table class="docutils footnote" frame="void" id="id12" rules="none"> <colgroup><col class="label" /><col /></colgroup> <tbody valign="top"> <tr><td class="label"><a class="fn-backref" href="#id6" name="id12">[5]</a></td><td><a class="reference" href="http://sandbox.orkut.com/">http://sandbox.orkut.com/</a></td></tr> </tbody> </table> <table class="docutils footnote" frame="void" id="id13" rules="none"> <colgroup><col class="label" /><col /></colgroup> <tbody valign="top"> <tr><td class="label"><a class="fn-backref" href="#id4" name="id13">[6]</a></td><td><a class="reference" href="http://django-gadgets.googlecode.com/files/django-gadgets-0.9.tar.gz">http://django-gadgets.googlecode.com/files/django-gadgets-0.9.tar.gz</a></td></tr> </tbody> </table> <table class="docutils footnote" frame="void" id="id14" rules="none"> <colgroup><col class="label" /><col /></colgroup> <tbody valign="top"> <tr><td class="label"><a class="fn-backref" href="#id7" name="id14">[7]</a></td><td><a class="reference" href="http://code.google.com/p/opensocial-container-sample/">http://code.google.com/p/opensocial-container-sample/</a></td></tr> </tbody> </table> </div> Android faz o gPhone parecer um brinquedinhohttp://marinhobrandao.com/blog/p/android-faz-o-gphone-parecer-um-brinquedinho_102/<div class="document"> <p>A legião de especuladores cada vez maior sobre &quot;o futuro do Google&quot; (ou &quot;qual será o próximo passo do Google para dominar o mundo&quot;) &quot;sofreu&quot; um <strong>tapa na cara</strong> nesta última terça-feira.</p> <p>Quando todos esperavam um &quot;iPhone killer&quot; ou um pacote de aplicativos móveis, o Google mostrou que possui mais imaginação do que eles, e exatamente por isso, provou que o tapa na cara foi excitante.</p> <p>Também, já me incomodava a possibilidade de o Google criar um pacote de aplicativos, quanto mais um aparelho móvel... seria muito pouco para uma empresa com as aspirações que ele possui. Pois ele fez jus à fama: lançou [4] a maior cartada do Linux pós-Ubuntu e calou novamente qualquer um que ousa dizer que eles não são uma empresa empreendedora [6] ou não dê lucros [5] (uma frase dessa só podia sair da mente doentia do <strong>Steve Ballmer</strong>).</p> <p>O <strong>Android</strong> está mais para &quot;Symbian killer&quot; e provavelmente até para &quot;Microsoft/Apple estrangulator&quot;. Basta fluir a imaginação – como fez <strong>Rafael Lullis</strong> em seu “Android é o PC 2.0, a versão mobile do IBM PC” [1] – para perceber que o Android não é “apenas mais um Linux” [2]. Ele é uma sacada tão imensa quanto foi a da dobradinha IBM/Microsoft na virada do PC em cima do Macintosh, porém com um elemento que agora ganha um peso ainda mais extraordinário: a filosofia software-livre, encabeçada pelo Linux.</p> <p>Daqui a 5 dias sai o aguardado Android SDK [3] e estará a iniciada a corrida pelas pepitas de ouro da nova plataforma. Eu estarei lá, procurando por <strong>compatilibidade com Python/Django</strong>. E você?</p> <p><strong>Links relacionados:</strong></p> <p>[1] <a class="reference" href="http://webinsider.uol.com.br/index.php/2007/11/06/android-e-o-pc-20-a-versao-mobile-do-ibm-pc/">http://webinsider.uol.com.br/index.php/2007/11/06/android-e-o-pc-20-a-versao-mobile-do-ibm-pc/</a></p> <p>[2] <a class="reference" href="http://pcworld.uol.com.br/noticias/2007/11/06/idgnoticia.2007-11-06.1911146740/">http://pcworld.uol.com.br/noticias/2007/11/06/idgnoticia.2007-11-06.1911146740/</a></p> <p>[3] <a class="reference" href="http://www.openhandsetalliance.com/developers.html">http://www.openhandsetalliance.com/developers.html</a></p> <p>[4] <a class="reference" href="http://www.openhandsetalliance.com/">http://www.openhandsetalliance.com/</a></p> <p>[5] <a class="reference" href="http://googlediscovery.com/2007/10/18/balanco-da-google-surpreende-os-investidores/">http://googlediscovery.com/2007/10/18/balanco-da-google-surpreende-os-investidores/</a></p> <p>[6] <a class="reference" href="http://www.agenciainternet.com.br/noticias.php?id_noticia=160">http://www.agenciainternet.com.br/noticias.php?id_noticia=160</a></p> </div>