<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>
<channel>
	<title>Comments on: Making a Flickr Killer With TurboGears - Part 2: A Flickr Clone in 37 Minutes Flat</title>
	<atom:link href="http://www.thesamet.com/blog/2007/02/20/making-a-flickr-killer-with-turbogears-part-2-a-flickr-clone-in-37-minutes-flat/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.thesamet.com/blog/2007/02/20/making-a-flickr-killer-with-turbogears-part-2-a-flickr-clone-in-37-minutes-flat/</link>
	<description>The Ramblings of a Freelance Software Developer</description>
	<pubDate>Sun, 12 Oct 2008 13:50:59 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
		<item>
		<title>By: Jitesh</title>
		<link>http://www.thesamet.com/blog/2007/02/20/making-a-flickr-killer-with-turbogears-part-2-a-flickr-clone-in-37-minutes-flat/#comment-6785</link>
		<dc:creator>Jitesh</dc:creator>
		<pubDate>Tue, 24 Jun 2008 14:15:29 +0000</pubDate>
		<guid isPermaLink="false">http://www.thesamet.com/blog/2007/02/20/making-a-flickr-killer-with-turbogears-part-2-a-flickr-clone-in-37-minutes-flat/#comment-6785</guid>
		<description>Hi,
 I am a new beein Turbogears still I can say its a very good publication for a person like me.It has aroused more interest with in me to go deeper into Turbogears and Python.

Thanks
Jitesh</description>
		<content:encoded><![CDATA[<p>Hi,<br />
 I am a new beein Turbogears still I can say its a very good publication for a person like me.It has aroused more interest with in me to go deeper into Turbogears and Python.</p>
<p>Thanks<br />
Jitesh</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Manoranjan Naik</title>
		<link>http://www.thesamet.com/blog/2007/02/20/making-a-flickr-killer-with-turbogears-part-2-a-flickr-clone-in-37-minutes-flat/#comment-6784</link>
		<dc:creator>Manoranjan Naik</dc:creator>
		<pubDate>Mon, 23 Jun 2008 10:29:47 +0000</pubDate>
		<guid isPermaLink="false">http://www.thesamet.com/blog/2007/02/20/making-a-flickr-killer-with-turbogears-part-2-a-flickr-clone-in-37-minutes-flat/#comment-6784</guid>
		<description>Hi,
I am turbogears learner.
Its really nice and funny to do this application.
But i could not find @expose(content_type=‘image/jpeg’) at turbogears documents. Needing help

Thanks,
Ranjan</description>
		<content:encoded><![CDATA[<p>Hi,<br />
I am turbogears learner.<br />
Its really nice and funny to do this application.<br />
But i could not find @expose(content_type=‘image/jpeg’) at turbogears documents. Needing help</p>
<p>Thanks,<br />
Ranjan</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Brennan Ashton</title>
		<link>http://www.thesamet.com/blog/2007/02/20/making-a-flickr-killer-with-turbogears-part-2-a-flickr-clone-in-37-minutes-flat/#comment-6775</link>
		<dc:creator>Brennan Ashton</dc:creator>
		<pubDate>Tue, 13 May 2008 06:56:34 +0000</pubDate>
		<guid isPermaLink="false">http://www.thesamet.com/blog/2007/02/20/making-a-flickr-killer-with-turbogears-part-2-a-flickr-clone-in-37-minutes-flat/#comment-6775</guid>
		<description>figures it would make it would try the actual HTML
replace the ^ with left or right tag points
&lt;code&gt;
            ^a href="#" onclick="rotate_photo(${photo.id}); return false;"^(rotate)^/a^
            ^a href="/delete/${photo.id}"^(delete)^/a^

&lt;/code&gt;

I hope that shows up correctly</description>
		<content:encoded><![CDATA[<p>figures it would make it would try the actual HTML<br />
replace the ^ with left or right tag points<br />
<code><br />
            ^a href="#" onclick="rotate_photo(${photo.id}); return false;"^(rotate)^/a^<br />
            ^a href="/delete/${photo.id}"^(delete)^/a^</p>
<p></code></p>
<p>I hope that shows up correctly</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Brennan Ashton</title>
		<link>http://www.thesamet.com/blog/2007/02/20/making-a-flickr-killer-with-turbogears-part-2-a-flickr-clone-in-37-minutes-flat/#comment-6774</link>
		<dc:creator>Brennan Ashton</dc:creator>
		<pubDate>Tue, 13 May 2008 06:53:04 +0000</pubDate>
		<guid isPermaLink="false">http://www.thesamet.com/blog/2007/02/20/making-a-flickr-killer-with-turbogears-part-2-a-flickr-clone-in-37-minutes-flat/#comment-6774</guid>
		<description>Very nice tutorial here is a simple addition that you might like that allows you to delete images as well,
in welcome.kid

&lt;code&gt;
            &lt;a href="#" rel="nofollow"&gt;(rotate)&lt;/a&gt;
            &lt;a href="/delete/${photo.id}" rel="nofollow"&gt;(delete)&lt;/a&gt;
&lt;/code&gt;

and in the controller

&lt;code&gt;
    @expose()
    def delete(self, ID):
        Photo.delete(ID)
        flash("Image successfully deleted!")
        raise redirect('/')
&lt;/code&gt;</description>
		<content:encoded><![CDATA[<p>Very nice tutorial here is a simple addition that you might like that allows you to delete images as well,<br />
in welcome.kid</p>
<p><code><br />
            <a href="#" rel="nofollow">(rotate)</a><br />
            <a href="/delete/${photo.id}" rel="nofollow">(delete)</a><br />
</code></p>
<p>and in the controller</p>
<p><code><br />
    @expose()<br />
    def delete(self, ID):<br />
        Photo.delete(ID)<br />
        flash("Image successfully deleted!")<br />
        raise redirect('/')<br />
</code></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: jay</title>
		<link>http://www.thesamet.com/blog/2007/02/20/making-a-flickr-killer-with-turbogears-part-2-a-flickr-clone-in-37-minutes-flat/#comment-6724</link>
		<dc:creator>jay</dc:creator>
		<pubDate>Fri, 15 Feb 2008 02:54:49 +0000</pubDate>
		<guid isPermaLink="false">http://www.thesamet.com/blog/2007/02/20/making-a-flickr-killer-with-turbogears-part-2-a-flickr-clone-in-37-minutes-flat/#comment-6724</guid>
		<description>This is great,
Thanks so much for posting such a great walkthrough. It's both thorough without being overwhelming and answers a lot of the corner cases I'd been wondering about (like how to upload files and ajax) !</description>
		<content:encoded><![CDATA[<p>This is great,<br />
Thanks so much for posting such a great walkthrough. It&#8217;s both thorough without being overwhelming and answers a lot of the corner cases I&#8217;d been wondering about (like how to upload files and ajax) !</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: alex</title>
		<link>http://www.thesamet.com/blog/2007/02/20/making-a-flickr-killer-with-turbogears-part-2-a-flickr-clone-in-37-minutes-flat/#comment-6714</link>
		<dc:creator>alex</dc:creator>
		<pubDate>Wed, 09 Jan 2008 21:35:36 +0000</pubDate>
		<guid isPermaLink="false">http://www.thesamet.com/blog/2007/02/20/making-a-flickr-killer-with-turbogears-part-2-a-flickr-clone-in-37-minutes-flat/#comment-6714</guid>
		<description>hi nadav,

loved your tutorial, thanks a lot!

answered me a few questions in tg development.

a small addition: on the fly jpeg translation of imported files. simple with pil (not elephant ;) ).

keep up,

alex</description>
		<content:encoded><![CDATA[<p>hi nadav,</p>
<p>loved your tutorial, thanks a lot!</p>
<p>answered me a few questions in tg development.</p>
<p>a small addition: on the fly jpeg translation of imported files. simple with pil (not elephant <img src='http://www.thesamet.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ).</p>
<p>keep up,</p>
<p>alex</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tomek</title>
		<link>http://www.thesamet.com/blog/2007/02/20/making-a-flickr-killer-with-turbogears-part-2-a-flickr-clone-in-37-minutes-flat/#comment-3918</link>
		<dc:creator>Tomek</dc:creator>
		<pubDate>Fri, 13 Apr 2007 16:13:14 +0000</pubDate>
		<guid isPermaLink="false">http://www.thesamet.com/blog/2007/02/20/making-a-flickr-killer-with-turbogears-part-2-a-flickr-clone-in-37-minutes-flat/#comment-3918</guid>
		<description>Thanks! 
This solved the problem. I needed to install PIL to make 'rotate' work. I'll have to dig slightly deeper to force kid forms display correctly labels in Polish.</description>
		<content:encoded><![CDATA[<p>Thanks!<br />
This solved the problem. I needed to install PIL to make &#8216;rotate&#8217; work. I&#8217;ll have to dig slightly deeper to force kid forms display correctly labels in Polish.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: thesamet</title>
		<link>http://www.thesamet.com/blog/2007/02/20/making-a-flickr-killer-with-turbogears-part-2-a-flickr-clone-in-37-minutes-flat/#comment-3912</link>
		<dc:creator>thesamet</dc:creator>
		<pubDate>Fri, 13 Apr 2007 11:07:59 +0000</pubDate>
		<guid isPermaLink="false">http://www.thesamet.com/blog/2007/02/20/making-a-flickr-killer-with-turbogears-part-2-a-flickr-clone-in-37-minutes-flat/#comment-3912</guid>
		<description>Hi Tomek,

It seems that the zip file contained pyc files which were used to work against an older version of Kid. If you remove them, it will start working. 

This is a common gotcha, if you upgrade Kid while working on a project, you have to delete the templates' pyc files. I've uploaded a new zip without these.</description>
		<content:encoded><![CDATA[<p>Hi Tomek,</p>
<p>It seems that the zip file contained pyc files which were used to work against an older version of Kid. If you remove them, it will start working. </p>
<p>This is a common gotcha, if you upgrade Kid while working on a project, you have to delete the templates&#8217; pyc files. I&#8217;ve uploaded a new zip without these.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tomek</title>
		<link>http://www.thesamet.com/blog/2007/02/20/making-a-flickr-killer-with-turbogears-part-2-a-flickr-clone-in-37-minutes-flat/#comment-3911</link>
		<dc:creator>Tomek</dc:creator>
		<pubDate>Fri, 13 Apr 2007 10:47:39 +0000</pubDate>
		<guid isPermaLink="false">http://www.thesamet.com/blog/2007/02/20/making-a-flickr-killer-with-turbogears-part-2-a-flickr-clone-in-37-minutes-flat/#comment-3911</guid>
		<description>It turns out that python-sqlite (python interface to SQLite 2) silently takes over access to the database file. Removing the package solved the problem of getting bad jpegs via &lt;code&gt;http://localhost:8080/images/3&lt;/code&gt; Unfortunately the package dependencies shows no conflict with python-pysqlite2.

Still, &lt;code&gt;http://localhost:8080/&lt;/code&gt; yields 
&lt;code&gt;
500 Internal error

The server encountered an unexpected condition which prevented it from fulfilling the request.

Page handler: &#62;
Traceback (most recent call last):
  File "/usr/lib/python2.4/site-packages/CherryPy-2.2.1-py2.4.egg/cherrypy/_cphttptools.py", line 105, in _run
    self.main()
  File "/usr/lib/python2.4/site-packages/CherryPy-2.2.1-py2.4.egg/cherrypy/_cphttptools.py", line 254, in main
    body = page_handler(*virtual_path, **self.params)
  File "", line 3, in index
  File "/usr/lib/python2.4/site-packages/TurboGears-1.0.1-py2.4.egg/turbogears/controllers.py", line 334, in expose
    output = database.run_with_transaction(
  File "", line 5, in run_with_transaction
  File "/usr/lib/python2.4/site-packages/TurboGears-1.0.1-py2.4.egg/turbogears/database.py", line 302, in so_rwt
    retval = func(*args, **kw)
  File "", line 5, in _expose
  File "/usr/lib/python2.4/site-packages/TurboGears-1.0.1-py2.4.egg/turbogears/controllers.py", line 351, in 
    mapping, fragment, args, kw)))
  File "/usr/lib/python2.4/site-packages/TurboGears-1.0.1-py2.4.egg/turbogears/controllers.py", line 391, in _execute_func
    return _process_output(output, template, format, content_type, mapping, fragment)
  File "/usr/lib/python2.4/site-packages/TurboGears-1.0.1-py2.4.egg/turbogears/controllers.py", line 82, in _process_output
    fragment=fragment)
  File "/usr/lib/python2.4/site-packages/TurboGears-1.0.1-py2.4.egg/turbogears/view/base.py", line 131, in render
    return engine.render(**kw)
  File "/usr/lib/python2.4/site-packages/TurboKid-0.9.9-py2.4.egg/turbokid/kidsupport.py", line 158, in render
    tclass = self.load_template(template)
  File "/usr/lib/python2.4/site-packages/TurboKid-0.9.9-py2.4.egg/turbokid/kidsupport.py", line 128, in load_template
    mod = _compile_template(package, basename, tfile, classname)
  File "/usr/lib/python2.4/site-packages/TurboKid-0.9.9-py2.4.egg/turbokid/kidsupport.py", line 15, in _compile_template
    mod = kid.load_template(tfile, name=classname)
  File "/usr/lib/python2.4/site-packages/kid-0.9.5-py2.4.egg/kid/__init__.py", line 158, in load_template
    store=cache, ns=ns, exec_module=exec_module)
  File "/usr/lib/python2.4/site-packages/kid-0.9.5-py2.4.egg/kid/importer.py", line 144, in _create_module
    raise_template_error(module=name, filename=filename)
  File "/usr/lib/python2.4/site-packages/kid-0.9.5-py2.4.egg/kid/codewriter.py", line 184, in raise_template_error
    s.insert(0, 'Error location in template file %r' % filename)
AttributeError: 'str' object has no attribute 'insert'
&lt;/code&gt;</description>
		<content:encoded><![CDATA[<p>It turns out that python-sqlite (python interface to SQLite 2) silently takes over access to the database file. Removing the package solved the problem of getting bad jpegs via <code><a href="http://localhost:8080/images/3" rel="nofollow">http://localhost:8080/images/3</a></code> Unfortunately the package dependencies shows no conflict with python-pysqlite2.</p>
<p>Still, <code><a href="http://localhost:8080/" rel="nofollow">http://localhost:8080/</a></code> yields<br />
<code><br />
500 Internal error</p>
<p>The server encountered an unexpected condition which prevented it from fulfilling the request.</p>
<p>Page handler: &gt;<br />
Traceback (most recent call last):<br />
  File "/usr/lib/python2.4/site-packages/CherryPy-2.2.1-py2.4.egg/cherrypy/_cphttptools.py", line 105, in _run<br />
    self.main()<br />
  File "/usr/lib/python2.4/site-packages/CherryPy-2.2.1-py2.4.egg/cherrypy/_cphttptools.py", line 254, in main<br />
    body = page_handler(*virtual_path, **self.params)<br />
  File "", line 3, in index<br />
  File "/usr/lib/python2.4/site-packages/TurboGears-1.0.1-py2.4.egg/turbogears/controllers.py", line 334, in expose<br />
    output = database.run_with_transaction(<br />
  File "", line 5, in run_with_transaction<br />
  File "/usr/lib/python2.4/site-packages/TurboGears-1.0.1-py2.4.egg/turbogears/database.py", line 302, in so_rwt<br />
    retval = func(*args, **kw)<br />
  File "", line 5, in _expose<br />
  File "/usr/lib/python2.4/site-packages/TurboGears-1.0.1-py2.4.egg/turbogears/controllers.py", line 351, in<br />
    mapping, fragment, args, kw)))<br />
  File "/usr/lib/python2.4/site-packages/TurboGears-1.0.1-py2.4.egg/turbogears/controllers.py", line 391, in _execute_func<br />
    return _process_output(output, template, format, content_type, mapping, fragment)<br />
  File "/usr/lib/python2.4/site-packages/TurboGears-1.0.1-py2.4.egg/turbogears/controllers.py", line 82, in _process_output<br />
    fragment=fragment)<br />
  File "/usr/lib/python2.4/site-packages/TurboGears-1.0.1-py2.4.egg/turbogears/view/base.py", line 131, in render<br />
    return engine.render(**kw)<br />
  File "/usr/lib/python2.4/site-packages/TurboKid-0.9.9-py2.4.egg/turbokid/kidsupport.py", line 158, in render<br />
    tclass = self.load_template(template)<br />
  File "/usr/lib/python2.4/site-packages/TurboKid-0.9.9-py2.4.egg/turbokid/kidsupport.py", line 128, in load_template<br />
    mod = _compile_template(package, basename, tfile, classname)<br />
  File "/usr/lib/python2.4/site-packages/TurboKid-0.9.9-py2.4.egg/turbokid/kidsupport.py", line 15, in _compile_template<br />
    mod = kid.load_template(tfile, name=classname)<br />
  File "/usr/lib/python2.4/site-packages/kid-0.9.5-py2.4.egg/kid/__init__.py", line 158, in load_template<br />
    store=cache, ns=ns, exec_module=exec_module)<br />
  File "/usr/lib/python2.4/site-packages/kid-0.9.5-py2.4.egg/kid/importer.py", line 144, in _create_module<br />
    raise_template_error(module=name, filename=filename)<br />
  File "/usr/lib/python2.4/site-packages/kid-0.9.5-py2.4.egg/kid/codewriter.py", line 184, in raise_template_error<br />
    s.insert(0, 'Error location in template file %r' % filename)<br />
AttributeError: 'str' object has no attribute 'insert'<br />
</code></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: thesamet</title>
		<link>http://www.thesamet.com/blog/2007/02/20/making-a-flickr-killer-with-turbogears-part-2-a-flickr-clone-in-37-minutes-flat/#comment-3894</link>
		<dc:creator>thesamet</dc:creator>
		<pubDate>Thu, 12 Apr 2007 21:47:45 +0000</pubDate>
		<guid isPermaLink="false">http://www.thesamet.com/blog/2007/02/20/making-a-flickr-killer-with-turbogears-part-2-a-flickr-clone-in-37-minutes-flat/#comment-3894</guid>
		<description>Hi Tomek! Dumping the data from sqlite3 via the command line does not yield a valid jpeg file here is well. It looks like sqlite gives the data encoded in some 7-bit format.

Can you send the traceback that you are getting? It might give us a clue.</description>
		<content:encoded><![CDATA[<p>Hi Tomek! Dumping the data from sqlite3 via the command line does not yield a valid jpeg file here is well. It looks like sqlite gives the data encoded in some 7-bit format.</p>
<p>Can you send the traceback that you are getting? It might give us a clue.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.279 seconds -->
