<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>salsotto.com » difundindo ideias na web</title>
	<atom:link href="http://blog.salsotto.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.salsotto.com</link>
	<description>Quando uma boa ideia acontece e seu comodismo a desperdiça, você estará em dívida contigo e com a humanidade.&#34; ( Ivan Teorilang )</description>
	<lastBuildDate>Fri, 23 Apr 2010 20:10:13 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Opções de TimeField no admin do Django</title>
		<link>http://blog.salsotto.com/2010/04/23/opcoes-de-timefield-no-admin-do-django/</link>
		<comments>http://blog.salsotto.com/2010/04/23/opcoes-de-timefield-no-admin-do-django/#comments</comments>
		<pubDate>Fri, 23 Apr 2010 20:10:13 +0000</pubDate>
		<dc:creator>Salsotto</dc:creator>
				<category><![CDATA[Django]]></category>

		<guid isPermaLink="false">http://blog.salsotto.com/?p=728</guid>
		<description><![CDATA[Em meu novo projeto com Django trabalhando com campos&#160; TimeField no admin, surgiu a necessidade de ampliar as opções&#160; horários&#160; que é disponibilizado:

Agora
Meia-Noite
6 da manhã
Meio-Dia

Para tanto, fui atrás do arquivo Javascript responsável por gerar essas opções e o encontrei em:

django/contrib/admin/media/js/admin/DateTimeShortcuts.js

Com o arquivo em mãos foi simplemesmente fácil alterar e adicionar mais opções de horário, bastando [...]]]></description>
			<content:encoded><![CDATA[<p>Em meu novo projeto com Django trabalhando com campos&nbsp; TimeField no admin, surgiu a necessidade de ampliar as opções&nbsp; horários&nbsp; que é disponibilizado:</p>
<ul>
<li>Agora</li>
<li>Meia-Noite</li>
<li>6 da manhã</li>
<li>Meio-Dia</li>
</ul>
<p>Para tanto, fui atrás do arquivo Javascript responsável por gerar essas opções e o encontrei em:</p>
<ul>
<li>django/contrib/admin/media/js/admin/DateTimeShortcuts.js</li>
</ul>
<p>Com o arquivo em mãos foi simplemesmente fácil alterar e adicionar mais opções de horário, bastando mexer nas seguintes linhas:</p>
<p><!--DEVFMTCODE--><pre class="devcodeblock" title="Javascript"><div class="devcodeoverflow"><ol><li>time_list <span style="color: #339933;">=</span> quickElement<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'ul'</span><span style="color: #339933;">,</span> clock_box<span style="color: #339933;">,</span> <span style="color: #3366CC;">''</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> </li><li>time_list.<span style="color: #660066;">className</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">'timelist'</span><span style="color: #339933;">;</span> </li><li>quickElement<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;a&quot;</span><span style="color: #339933;">,</span> quickElement<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;li&quot;</span><span style="color: #339933;">,</span> time_list<span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> gettext<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;Now&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;href&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;javascript:DateTimeShortcuts.handleClockQuicklink(&quot;</span> <span style="color: #339933;">+</span> num <span style="color: #339933;">+</span> <span style="color: #3366CC;">&quot;, new Date().getHourMinute());&quot;</span><span style="color: #009900;">&#41;</span> </li><li>quickElement<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;a&quot;</span><span style="color: #339933;">,</span> quickElement<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;li&quot;</span><span style="color: #339933;">,</span> time_list<span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> gettext<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;Midnight&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;href&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;javascript:DateTimeShortcuts.handleClockQuicklink(&quot;</span> <span style="color: #339933;">+</span> num <span style="color: #339933;">+</span> <span style="color: #3366CC;">&quot;, '00:00');&quot;</span><span style="color: #009900;">&#41;</span> </li><li>quickElement<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;a&quot;</span><span style="color: #339933;">,</span> quickElement<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;li&quot;</span><span style="color: #339933;">,</span> time_list<span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> gettext<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;6 a.m.&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;href&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;javascript:DateTimeShortcuts.handleClockQuicklink(&quot;</span> <span style="color: #339933;">+</span> num <span style="color: #339933;">+</span> <span style="color: #3366CC;">&quot;, '06:00');&quot;</span><span style="color: #009900;">&#41;</span> </li><li>quickElement<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;a&quot;</span><span style="color: #339933;">,</span> quickElement<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;li&quot;</span><span style="color: #339933;">,</span> time_list<span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> gettext<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;Noon&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;href&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;javascript:DateTimeShortcuts.handleClockQuicklink(&quot;</span> <span style="color: #339933;">+</span> num <span style="color: #339933;">+</span> <span style="color: #3366CC;">&quot;, '12:00');&quot;</span><span style="color: #009900;">&#41;</span> </li></ol></div></pre><!--END_DEVFMTCODE--></p>
<p>As linhas acima são os disponibilizados pelo Django, altere ou acrescente seu próprios horários, acho que não tem segredo!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salsotto.com/2010/04/23/opcoes-de-timefield-no-admin-do-django/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Conhecendo o novo editor UML &#8216;Astah Community&#8217;</title>
		<link>http://blog.salsotto.com/2010/04/12/conhecendo-o-novo-editor-umlastah-community/</link>
		<comments>http://blog.salsotto.com/2010/04/12/conhecendo-o-novo-editor-umlastah-community/#comments</comments>
		<pubDate>Tue, 13 Apr 2010 02:20:05 +0000</pubDate>
		<dc:creator>Salsotto</dc:creator>
				<category><![CDATA[UML]]></category>

		<guid isPermaLink="false">http://blog.salsotto.com/?p=723</guid>
		<description><![CDATA[O Astah Community é o sucessor do Jude Community, que tornou-se o editor gratuito mais utilizado pela sua grandiosidade de recursos oferecidos e por sua praticidade em elaborar diagramas completos. O Astah vem com a promessa de superar as expectativas dos tantos que utilizam essa ferramenta, e creio eu que isso irá acontecer sem sombra [...]]]></description>
			<content:encoded><![CDATA[<p>O <a title="Astah Community" href="http://astah.change-vision.com/en/product/astah-community.html" target="_blank">Astah Community</a> é o sucessor do Jude Community, que tornou-se o editor gratuito mais utilizado pela sua grandiosidade de recursos oferecidos e por sua praticidade em elaborar diagramas completos. O Astah vem com a promessa de superar as expectativas dos tantos que utilizam essa ferramenta, e creio eu que isso irá acontecer sem sombra de dúvidas.</p>
<p>Agora parando de rasgar ceda, aqui deixo somente para o conhecimento de vocês a nova ferramenta que na qual irei ensinar a como criar alguns diagramas em posts futuros (próximo&#8230; assim espero)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salsotto.com/2010/04/12/conhecendo-o-novo-editor-umlastah-community/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Incompatibilidade de som com Windows 7 e placas &#8216;Asus&#8217;</title>
		<link>http://blog.salsotto.com/2010/04/12/incompatibilidade-de-som-com-windows-7-e-placas-maes-asus/</link>
		<comments>http://blog.salsotto.com/2010/04/12/incompatibilidade-de-som-com-windows-7-e-placas-maes-asus/#comments</comments>
		<pubDate>Tue, 13 Apr 2010 02:06:15 +0000</pubDate>
		<dc:creator>Salsotto</dc:creator>
				<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://blog.salsotto.com/?p=717</guid>
		<description><![CDATA[A poucos dias instalei em minha simples máquina (AMD Athlon 64 X2 / Asus M2N-MX) o novo sistema operacional da Microsoft o Windows 7 (professional), e reparei que todos os drivers foram reconhecidos automaticamente ao final da instalação. Porém o driver de&#160; áudio só foi reconhecido o do próprio sistema operacional, de modo que o [...]]]></description>
			<content:encoded><![CDATA[<p>A poucos dias instalei em minha simples máquina (AMD Athlon 64 X2 / Asus M2N-MX) o novo sistema operacional da Microsoft o Windows 7 (professional), e reparei que todos os drivers foram reconhecidos automaticamente ao final da instalação. Porém o driver de&nbsp; áudio só foi reconhecido o do próprio sistema operacional, de modo que o som não funcionava de maneira nenhuma, levando-me a procurar incasavelmente por um driver de som da minha placa mãe ASUS que funcionasse no Windows 7.</p>
<p>Após muita procura, não encontrei nada e resolvi instalar o driver de som do Windows Vista disponibilizado no próprio site da ASUS, pois segui com a ideia que os drivers fossem da mesma arquitetura, e PIMBA&#8230; funcionou! ;D</p>
<p>Notei que o problema segue com muitos modelos de placas mães da ASUS com o Windows 7, então já sabem, se houver qualquer problema com drivers para o Windows 7 tentei instalar os drivers do Windows Vista.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salsotto.com/2010/04/12/incompatibilidade-de-som-com-windows-7-e-placas-maes-asus/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Uso similar do operador &#8216;between&#8217; do MySQL no Django</title>
		<link>http://blog.salsotto.com/2010/04/01/uso-similar-do-operador-between-do-mysql-no-orm-do-django/</link>
		<comments>http://blog.salsotto.com/2010/04/01/uso-similar-do-operador-between-do-mysql-no-orm-do-django/#comments</comments>
		<pubDate>Fri, 02 Apr 2010 03:54:42 +0000</pubDate>
		<dc:creator>Salsotto</dc:creator>
				<category><![CDATA[Django]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://blog.salsotto.com/?p=707</guid>
		<description><![CDATA[O MySQL possui um operador de comparação chamado &#8216;BETWEEN&#8217; que se encarrega de fazer comparações entre intervalos de expressões.
SELECT nome, idade FROM pessoa WHERE idade BETWEEN '18' AND '25';
Sendo sua utilização é equivalente a expressão:
SELECT nome, idade FROM pessoa WHERE idade &#62; '18' AND idade &#60; '25';
O Django não possui esse operador de comparação, então [...]]]></description>
			<content:encoded><![CDATA[<p>O MySQL possui um operador de comparação chamado &#8216;BETWEEN&#8217; que se encarrega de fazer comparações entre intervalos de expressões.</p>
<p><!--DEVFMTCODE--><pre class="devcodeblock" title="MySQL"><div class="devcodeoverflow"><ol><li><span style="color: #990099; font-weight: bold;">SELECT</span> nome<span style="color: #000033;">,</span> idade <span style="color: #990099; font-weight: bold;">FROM</span> pessoa <span style="color: #990099; font-weight: bold;">WHERE</span> idade <span style="color: #CC0099; font-weight: bold;">BETWEEN</span> <span style="color: #008000;">'18'</span> <span style="color: #CC0099; font-weight: bold;">AND</span> <span style="color: #008000;">'25'</span><span style="color: #000033;">;</span></li></ol></div></pre><!--END_DEVFMTCODE--><br />
Sendo sua utilização é equivalente a expressão:</p>
<p><!--DEVFMTCODE--><pre class="devcodeblock" title="MySQL"><div class="devcodeoverflow"><ol><li><span style="color: #990099; font-weight: bold;">SELECT</span> nome<span style="color: #000033;">,</span> idade <span style="color: #990099; font-weight: bold;">FROM</span> pessoa <span style="color: #990099; font-weight: bold;">WHERE</span> idade <span style="color: #CC0099;">&gt;</span> <span style="color: #008000;">'18'</span> <span style="color: #CC0099; font-weight: bold;">AND</span> idade <span style="color: #CC0099;">&lt;</span> <span style="color: #008000;">'25'</span><span style="color: #000033;">;</span></li></ol></div></pre><!--END_DEVFMTCODE--><br />
O Django não possui esse operador de comparação, então para fazer esse tipo de consultas com o ORM tem que sem na munheca mesmo, como exemplo abaixo:</p>
<p><!--DEVFMTCODE--><pre class="devcodeblock" title="Python"><div class="devcodeoverflow"><ol><li>Pessoa.<span style="color: black;">objects</span>.<span style="color: #008000;">filter</span><span style="color: black;">&#40;</span><span style="color: #66cc66;">**</span><span style="color: black;">&#123;</span><span style="color: #483d8b;">'idade__gte'</span> : <span style="color: #483d8b;">'18'</span><span style="color: black;">&#125;</span><span style="color: black;">&#41;</span>.<span style="color: #008000;">filter</span><span style="color: black;">&#40;</span><span style="color: #66cc66;">**</span><span style="color: black;">&#123;</span><span style="color: #483d8b;">'idade__lte'</span> : <span style="color: #483d8b;">'25'</span><span style="color: black;">&#125;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span></li></ol></div></pre><!--END_DEVFMTCODE--></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salsotto.com/2010/04/01/uso-similar-do-operador-between-do-mysql-no-orm-do-django/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Upload de arquivos com modelForms</title>
		<link>http://blog.salsotto.com/2010/04/01/upload-de-arquivos-com-modelforms/</link>
		<comments>http://blog.salsotto.com/2010/04/01/upload-de-arquivos-com-modelforms/#comments</comments>
		<pubDate>Fri, 02 Apr 2010 03:34:20 +0000</pubDate>
		<dc:creator>Salsotto</dc:creator>
				<category><![CDATA[Django]]></category>

		<guid isPermaLink="false">http://blog.salsotto.com/?p=700</guid>
		<description><![CDATA[Hoje um amigo da faculdade no qual está desenvolvendo seu &#8216;Trabalho de Conclusão de Curso&#8217; com o Django, perguntou-me como poderia ser feito o upload de arquivos guardando sua referência no banco de dados, e nisso passei um exemplo de um pequeno projeto que utilizei o modelForms.
Com isso resolvi criar um post para caso alguém [...]]]></description>
			<content:encoded><![CDATA[<p>Hoje um amigo da faculdade no qual está desenvolvendo seu &#8216;Trabalho de Conclusão de Curso&#8217; com o Django, perguntou-me como poderia ser feito o upload de arquivos guardando sua referência no banco de dados, e nisso passei um exemplo de um pequeno projeto que utilizei o <a title="modelForms - documentação Django" href="http://docs.djangoproject.com/en/dev/topics/forms/modelforms/" target="_blank">modelForms</a>.</p>
<p>Com isso resolvi criar um post para caso alguém um dia venha ter essa mesma dúvida. Antes de tudo é imprescindível que tenha em mente que trabalhar com modelForms é criar formulários a partir de um modelo previamente criado em seu arquivo models.py de seu projeto.</p>
<p><!--DEVFMTCODE--><pre class="devcodeblock" title="Python"><div class="devcodeoverflow"><ol><li><span style="color: #ff7700;font-weight:bold;">class</span> Cadastro<span style="color: black;">&#40;</span>models.<span style="color: black;">Model</span><span style="color: black;">&#41;</span>:</li><li>&nbsp;&nbsp;&nbsp;&nbsp;nome&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;= models.<span style="color: black;">CharField</span><span style="color: black;">&#40;</span>max_length=<span style="color: #ff4500;">60</span><span style="color: black;">&#41;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;idade&nbsp;&nbsp;&nbsp;&nbsp; = models.<span style="color: black;">CharField</span><span style="color: black;">&#40;</span>max_length=<span style="color: #ff4500;">100</span><span style="color: black;">&#41;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;cidade&nbsp;&nbsp;&nbsp;&nbsp;= models.<span style="color: black;">CharField</span><span style="color: black;">&#40;</span>max_length=<span style="color: #ff4500;">100</span><span style="color: black;">&#41;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;telefone&nbsp;&nbsp;= models.<span style="color: black;">CharField</span><span style="color: black;">&#40;</span>max_length=<span style="color: #ff4500;">10</span><span style="color: black;">&#41;</span>&nbsp;&nbsp;&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;curriculo = models.<span style="color: black;">FileField</span><span style="color: black;">&#40;</span>upload_to=<span style="color: #483d8b;">&quot;curriculos&quot;</span><span style="color: black;">&#41;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;portfolio = models.<span style="color: black;">URLField</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;mensagem&nbsp;&nbsp;= models.<span style="color: black;">TextField</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></li></ol></div></pre><!--END_DEVFMTCODE--></p>
<p>&nbsp;</p>
<p>Partindo de uma model criada com os respectivos tipos de campos que deseja, assim como nosso maior propósito neste post, é o campo de&nbsp; &#8216;curriculo&#8217; que será responsável por salvar a referência do arquivo copiado para o servidor. Com sua model já criada, é necessário que criemos agora o nosso formulário a partir dessa model, e para isso precisaremos escrever um bucado de código (mentira! 1º de abril&#8230; rs).</p>
<p>Em seu arquivo forms.py importe a model que acabou de criar e tcharam:</p>
<p><!--DEVFMTCODE--><pre class="devcodeblock" title="Python"><div class="devcodeoverflow"><ol><li><span style="color: #ff7700;font-weight:bold;">class</span> CadastroForm<span style="color: black;">&#40;</span>ModelForm<span style="color: black;">&#41;</span>:</li><li>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #ff7700;font-weight:bold;">class</span> Meta:</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;model = Cadastro</li></ol></div></pre><!--END_DEVFMTCODE--></p>
<p>&nbsp;</p>
<p>Pronto, seu formulário já está criado!&nbsp; Agora só falta renderizarmos ele na tela e salvá-lo, então agora abra seu arquivo views.py e crie a seguinte view:</p>
<p><!--DEVFMTCODE--><pre class="devcodeblock" title="Python"><div class="devcodeoverflow"><ol><li><span style="color: #ff7700;font-weight:bold;">def</span> cadastro_curriculo<span style="color: black;">&#40;</span>request<span style="color: black;">&#41;</span>:&nbsp;&nbsp; </li><li>&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #ff7700;font-weight:bold;">if</span> request.<span style="color: black;">method</span> == <span style="color: #483d8b;">'POST'</span>:</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;form = CadastroForm<span style="color: black;">&#40;</span>request.<span style="color: black;">POST</span>, request.<span style="color: black;">FILES</span><span style="color: black;">&#41;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #ff7700;font-weight:bold;">if</span> form.<span style="color: black;">is_valid</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;novo_cadastro = form.<span style="color: black;">save</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #ff7700;font-weight:bold;">if</span> novo_cadastro:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;aviso = <span style="color: #483d8b;">&quot;Seu cadastro foi realizado com sucesso&quot;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;form = CadastroForm<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #ff7700;font-weight:bold;">else</span>:</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;aviso = <span style="color: #483d8b;">&quot;Erro ao cadastrar&quot;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;form = CadastroForm<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></li><li>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #ff7700;font-weight:bold;">else</span>:</li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;form = CadastroForm<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></li><li>&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #ff7700;font-weight:bold;">return</span> render_to_response<span style="color: black;">&#40;</span><span style="color: #483d8b;">'projeto/cadastro.html'</span>, <span style="color: #008000;">locals</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>, context_instance=RequestContext<span style="color: black;">&#40;</span>request<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span></li></ol></div></pre><!--END_DEVFMTCODE--></p>
<p>&nbsp;</p>
<p>Com isso, basta criar uma url para a view criada e testar! Só uma observação quanto a criar a instância do formulário, pois como queremos fazer o upload de arquivos para o servidor, é necessário passar a váriavel <strong>FILES</strong> como parâmetro.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salsotto.com/2010/04/01/upload-de-arquivos-com-modelforms/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Alterando o template &#8216;change_list&#8217; no admin do Django</title>
		<link>http://blog.salsotto.com/2010/04/01/alterando-o-template-change_list-no-admin-do-django/</link>
		<comments>http://blog.salsotto.com/2010/04/01/alterando-o-template-change_list-no-admin-do-django/#comments</comments>
		<pubDate>Fri, 02 Apr 2010 02:55:05 +0000</pubDate>
		<dc:creator>Salsotto</dc:creator>
				<category><![CDATA[Django]]></category>

		<guid isPermaLink="false">http://blog.salsotto.com/?p=694</guid>
		<description><![CDATA[Em meu último trabalho com Django a pouco mais de 2 meses surgiu a necessidade de alterar o &#8216;changelist&#8217; de uma determinada área registrada no admin (assinantes da newsletter), sendo necessário criar um botão que gerasse um arquivo csv. Primeiramente fiz da forma que sempre faço para alterar templates no admin do Django, copiei o [...]]]></description>
			<content:encoded><![CDATA[<p>Em meu último trabalho com Django a pouco mais de 2 meses surgiu a necessidade de alterar o &#8216;changelist&#8217; de uma determinada área registrada no admin (assinantes da newsletter), sendo necessário criar um botão que gerasse um arquivo csv. Primeiramente fiz da forma que sempre faço para alterar templates no admin do Django, copiei o arquivo do template na pasta do Django, e na pasta templates do meu projeto copiei o arquivo realizando as devidas alterações.</p>
<p>Entretanto, dessa forma o botão apareceu em todas as áreas (imoveis, bairros, destaques&#8230;), sendo totalmente oposto ao que eu queria fazer. Depois de uma boa procura na documentação, encontrei a solução para o problema, deixando-me besta de tão simples de ser realizado.</p>
<p><!--DEVFMTCODE--><pre class="devcodeblock" title="Python"><div class="devcodeoverflow"><ol><li><span style="color: #ff7700;font-weight:bold;">class</span> NewsletterAdmin<span style="color: black;">&#40;</span>admin.<span style="color: black;">ModelAdmin</span><span style="color: black;">&#41;</span>:</li><li>&nbsp;&nbsp;&nbsp;&nbsp;list_display&nbsp;&nbsp;= <span style="color: black;">&#91;</span><span style="color: #483d8b;">'nome'</span>, <span style="color: #483d8b;">'email'</span><span style="color: black;">&#93;</span>&nbsp;&nbsp;&nbsp;&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;search_fields = <span style="color: black;">&#91;</span><span style="color: #483d8b;">'nome'</span>, <span style="color: #483d8b;">'email'</span><span style="color: black;">&#93;</span></li><li>&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;change_list_template = <span style="color: #483d8b;">'diretorio_templates_projeto/nome_template.html'</span>&nbsp;&nbsp;&nbsp;&nbsp;</li><li>&nbsp;</li><li>&nbsp;&nbsp;&nbsp;&nbsp;admin.<span style="color: #dc143c;">site</span>.<span style="color: black;">register</span><span style="color: black;">&#40;</span>Newsletter, NewsletterAdmin<span style="color: black;">&#41;</span></li></ol></div></pre><!--END_DEVFMTCODE--></p>
<p>&nbsp;</p>
<p>Na linha 07 faço a referência para onde essa área do admin deve procurar seu template, e assim, somente na área de newsletter haverá o botão de &#8216;Gerar arquivo CSV&#8217;.</p>
<p>Obs: em um próximo post irei ensinar como gerar arquivos csv&#8217;s no Django.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salsotto.com/2010/04/01/alterando-o-template-change_list-no-admin-do-django/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adicionar ítens ao menu do admin no Wordpress</title>
		<link>http://blog.salsotto.com/2010/01/21/adicionar-itens-ao-menu-do-admin-no-worpress/</link>
		<comments>http://blog.salsotto.com/2010/01/21/adicionar-itens-ao-menu-do-admin-no-worpress/#comments</comments>
		<pubDate>Fri, 22 Jan 2010 02:21:13 +0000</pubDate>
		<dc:creator>Salsotto</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://blog.salsotto.com/?p=687</guid>
		<description><![CDATA[Caso necessite criar algo especifico e simples na parte adminstrativa do Wordpress como uma simples pagina que gere um arquivo csv dos assinantes do bloge não queira criar um plugin, basta adicioná-la diretamente ao menu do painel de controle de seu site.
Para isso, acesse a pasta wp-admin e abra o arquivo menu.php, pois será nele [...]]]></description>
			<content:encoded><![CDATA[<p>Caso necessite criar algo especifico e simples na parte adminstrativa do <a title="Wordpress" href="http://wordpress.org/" target="_self">Wordpress</a> como uma simples pagina que gere um arquivo csv dos assinantes do bloge não queira criar um plugin, basta adicioná-la diretamente ao menu do painel de controle de seu site.</p>
<p>Para isso, acesse a pasta wp-admin e abra o arquivo menu.php, pois será nele que realizaremos as alterações para que a nossa página apareça no menu. Com o arquivo aberto, seguindo como exemplo citado acima uma página que gere um arquivo de todos os assinantes do blog, adicionaremos essa página como um submenu de Usuários, assumindo que a nossa página criada chama-se &#8220;csv.php&#8221; e que esteja dentro do diretório wp-admin.</p>
<p>Exemplo:<br />
<!--DEVFMTCODE--><pre class="devcodeblock" title="PHP"><div class="devcodeoverflow"><ol><li><span style="color: #000088;">$submenu</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'users.php'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span>5<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>__<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Gerar CSV'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'edit_users'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'csv.php'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></li></ol></div></pre><!--END_DEVFMTCODE--></p>
<p>&nbsp;</p>
<p>Na linha acima, dizemos que a página csv.php faz parte do array users.php e que será o primeiro da lista caso não haja outro indíce menor.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salsotto.com/2010/01/21/adicionar-itens-ao-menu-do-admin-no-worpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mudando o idioma do Wordpress</title>
		<link>http://blog.salsotto.com/2010/01/20/mudando-o-idioma-do-wordpress/</link>
		<comments>http://blog.salsotto.com/2010/01/20/mudando-o-idioma-do-wordpress/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 01:00:26 +0000</pubDate>
		<dc:creator>Salsotto</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://blog.salsotto.com/?p=681</guid>
		<description><![CDATA[O Wordpress vem por padrão o idioma inglês, que no qual não é nenhum problema creio eu que se for para uso pessoal, mas caso seja para algum cliente ou tenha dificuldades com com esse idioma, basta editar o arquivo wp-config.php que encontra-se na raiz de seu projeto.
Basta modificar a constant WPLANG:&#160;
~&#62; define (”WPLANG”, “”);&#160;&#160;
~&#62; [...]]]></description>
			<content:encoded><![CDATA[<p>O <a title="Wordpress" href="http://wordpress.org/" target="_self">Wordpress</a> vem por padrão o idioma inglês, que no qual não é nenhum problema creio eu que se for para uso pessoal, mas caso seja para algum cliente ou tenha dificuldades com com esse idioma, basta editar o arquivo wp-config.php que encontra-se na raiz de seu projeto.</p>
<p>Basta modificar a constant <strong>WPLANG</strong>:&nbsp;</p>
<p>~&gt; define (”WPLANG”, “”);&nbsp;&nbsp;</p>
<p>~&gt; define (”WPLANG”, “pt_BR”);.</p>
<p>Pronto, agora seu Wordpress está com o idioma português.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salsotto.com/2010/01/20/mudando-o-idioma-do-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ativando o mod_rewrite no Apache</title>
		<link>http://blog.salsotto.com/2010/01/20/ativando-o-mod-rewrite-no-apache/</link>
		<comments>http://blog.salsotto.com/2010/01/20/ativando-o-mod-rewrite-no-apache/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 00:42:31 +0000</pubDate>
		<dc:creator>Salsotto</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://blog.salsotto.com/?p=674</guid>
		<description><![CDATA[Em um projeto de otimização do portal &#8220;Seu Restaurante&#8221; em meados de 2009, o mesmo sofreu alteração em suas urls, tornando-as em as famosas urls amigáveis. Nesse projeto utilizei o mod_rewrite para executar essa tarefa, tais que ensino em um dos posts do blog: Criando urls amigáveis com mod_rewrite.
Porém, a poucos dias troquei minha estação [...]]]></description>
			<content:encoded><![CDATA[<p>Em um projeto de otimização do portal &#8220;Seu Restaurante&#8221; em meados de 2009, o mesmo sofreu alteração em suas urls, tornando-as em as famosas urls amigáveis. Nesse projeto utilizei o mod_rewrite para executar essa tarefa, tais que ensino em um dos posts do blog: <a title="Criando urls amigáveis com mod_rewrite" href="http://blog.salsotto.com/2009/10/27/criando-urls-amigaveis-com-mod_rewrite/" target="_self">Criando urls amigáveis com mod_rewrite.</a></p>
<p>Porém, a poucos dias troquei minha estação de trabalho com sistema operacional Linux, pois já estava no bico do corvo e peguei uma máquina nova e instalei o Windows 7. Nisso instalei o XAMPP que é um instalador de PHP, MySQL e Apache, e fui baixando os&nbsp; projetos que trabalho do repositório do SVN.</p>
<p>Quando houve a necessidade de fazer uma alteração no portal do Seu Restaurante, deparei-me com as páginas 404 toda hora que fazia uma requisição de uma url. Depois de uns 20 minutos matutando lembrei-me que era necessário ativar o mod_rewrite nas configurações do apache. Para fazer isso basta achar seu arquivo httpd.conf no diretório do apache e na chamada dos módulos tirar o &#8216;#&#8217; , para assim descomentar o módulo e ativando-o.</p>
<p>Obs: Para aqueles que usam o XAMPP, siga os passos a seguir:</p>
<p>Meu Computador<br />
- -&gt; xampp<br />
- &#8211; - -&gt; apache<br />
- &#8211; - &#8211; - -&gt; conf<br />
- &#8211; - &#8211; - &#8211; - -&gt; httpd.conf</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salsotto.com/2010/01/20/ativando-o-mod-rewrite-no-apache/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Calendário de eventos no Wordpress</title>
		<link>http://blog.salsotto.com/2010/01/20/calendario-de-eventos-no-wordpress/</link>
		<comments>http://blog.salsotto.com/2010/01/20/calendario-de-eventos-no-wordpress/#comments</comments>
		<pubDate>Wed, 20 Jan 2010 12:38:21 +0000</pubDate>
		<dc:creator>Salsotto</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://blog.salsotto.com/?p=670</guid>
		<description><![CDATA[Em um projeto recente que participei utilizando o cms Wordpress, foi necessário que eu criasse um calendário de eventos para gerenciar os shows de uma banda de música clássica. Com isso iniciei a busca de um plugin que atende-se as necessidades do que precisava ser feito, e com muita procura, após de instalar mais de [...]]]></description>
			<content:encoded><![CDATA[<p>Em um projeto recente que participei utilizando o cms Wordpress, foi necessário que eu criasse um calendário de eventos para gerenciar os shows de uma banda de música clássica. Com isso iniciei a busca de um plugin que atende-se as necessidades do que precisava ser feito, e com muita procura, após de instalar mais de 15 plugins similares encontrei um que atendesse minhas expectativas, sendo somente necessário eu fazer pequenas customizações relevantes ao projeto.<br />
Sendo assim, deixo aqui a minha dica para quem necessite de algo semelhante, pois esse plugin é completíssimo.</p>
<p>Plugin: <a title="Baixe o Event Calendar" href="http://wpcal.firetree.net/" target="_blank">Event Calendar</a></p>
<p>Abraços</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.salsotto.com/2010/01/20/calendario-de-eventos-no-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
