<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5575859809518971863</id><updated>2011-08-24T08:06:05.661+01:00</updated><category term='jquery'/><category term='buildout'/><category term='twod.wsgi'/><category term='auditing'/><category term='jobs'/><category term='javascript'/><category term='django'/><category term='mongodb'/><category term='python'/><category term='wsgi'/><category term='paste'/><title type='text'>dev@2degrees</title><subtitle type='html'>We are the software developers behind 2degrees, the world leading online community for sustainability professionals. In this blog we discuss the Free Software projects we work on and announce any job vacancies.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://dev.2degreesnetwork.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5575859809518971863/posts/default'/><link rel='alternate' type='text/html' href='http://dev.2degreesnetwork.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Gustavo Narea</name><uri>http://www.blogger.com/profile/04022688498704778104</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>9</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5575859809518971863.post-2594122765964638694</id><published>2011-08-17T16:06:00.000+01:00</published><updated>2011-08-17T16:06:47.064+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='jobs'/><title type='text'>Agile team seeks talented Software Developer</title><content type='html'>Are you a recent Software Engineering graduate looking to join an Agile team? Or do you have 3 years industry experience and a passion for learning?&lt;br /&gt;&lt;br /&gt;We're a fast-paced, well-funded Web 2.0 business looking for a pro-active software developer to join our talented, self-organizing software development team.&lt;br /&gt;&lt;h2&gt;About you&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;You are hungry to learn:&lt;/b&gt; You actively seek change — always looking for opportunities to improve professionally, and to help your team develop. You read software-related publications, welcome criticism of your work and offer your colleagues honest feedback.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;You're willing to try new things:&lt;/b&gt; Want to try your hand at requirements gathering or UI design? If the idea of becoming a &lt;a href="http://www.agilemodeling.com/essays/generalizingSpecialists.htm"&gt;Generalizing Specialist&lt;/a&gt; appeals, this could be the right job for you.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;You have excellent communication skills:&lt;/b&gt; You're comfortable communicating verbally, graphically or in written text, and you’re happy explaining technical concepts to 	non-technical people.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;You’re 	qualified and/or experienced:&lt;/b&gt; You have a Software Engineering degree, an equivalent certificate from a leading organization (e.g.: &lt;a href="http://www.computer.org/"&gt;IEEE-CS&lt;/a&gt;, &lt;a href="http://www.bcs.org/"&gt;BCS&lt;/a&gt;) or have at least 3 years experience.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;You appreciate a sociable, friendly and supportive working environment:&lt;/b&gt; We value technical expertise and encourage developers to exercise their initiative and engage with the business as a whole.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;This is primarily a Web Development role. Experience or knowledge of Python, Django, GNU/Linux, Git, jQuery, Solr, Postgres and Agile development methodologies&lt;/b&gt; is a big plus, but is not required. &lt;b&gt;We simply want someone with the right attitude&lt;/b&gt; and we'll help you get up to speed with anything you're not familiar with!&lt;br /&gt;&lt;h2&gt;About 2degrees&lt;/h2&gt;2degrees is the world leading online community for sustainability professionals. We aim to help businesses accelerate their implementation of sustainability and carbon reduction strategies on a global scale.&lt;br /&gt;&lt;br /&gt;With offices in Oxford, UK and New York City, we work with leading companies including HSBC, Coca-Cola, BASF, Sony, Marks &amp;amp; Spencer, BP, Shell, Eurostar, Sainsbury’s, Hewlett Packard and Royal Mail.&lt;br /&gt;&lt;br /&gt;Working for 2degrees, you'll enjoy:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A nice office in a great location in Oxford, full of people who are free to be themselves.&lt;/li&gt;&lt;li&gt;Managers and business people who appreciate technical staff.&lt;/li&gt;&lt;li&gt;Support in your continuing professional development.&lt;/li&gt;&lt;li&gt;A competitive salary (dependent upon experience).&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;About the Software Development Team&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;We're in the process of adopting Scrum and have successfully embedded Agile techniques such as Pair Programming, Test-Driven Development and daily stand up meetings.&lt;/li&gt;&lt;li&gt;We contribute to the Free Software we use and publish our own on &lt;a href="https://github.com/2degrees"&gt;GitHub&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Our recent and current projects include surfacing popular content, 	simplification of our sign-up process, generation of business reports on site usage, and a major rework of content access 	permissions which allows us to expose valuable content to non-authenticated users.&lt;/li&gt;&lt;li&gt;Future projects include a content recommendation system, integration with the Campaign Monitor mailing service, a re-work of our subscription 	model, user tracking and metrics, and major design and UX improvements across the whole site.&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;How to apply&lt;/h2&gt;To apply for this role, please &lt;a class="western" href="mailto:gnarea+jobs@tech.2degreesnetwork.com"&gt;send us your CV&lt;/a&gt; and tell us why you think you're the right person for this job (don't forget to mention any Free Software contributions you've made).&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5575859809518971863-2594122765964638694?l=dev.2degreesnetwork.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dev.2degreesnetwork.com/feeds/2594122765964638694/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dev.2degreesnetwork.com/2011/08/agile-team-seeks-talented-software.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5575859809518971863/posts/default/2594122765964638694'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5575859809518971863/posts/default/2594122765964638694'/><link rel='alternate' type='text/html' href='http://dev.2degreesnetwork.com/2011/08/agile-team-seeks-talented-software.html' title='Agile team seeks talented Software Developer'/><author><name>Gustavo Narea</name><uri>http://www.blogger.com/profile/04022688498704778104</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total><georss:featurename>Oxford, Oxfordshire, UK</georss:featurename><georss:point>51.77008 -1.2625590000000102</georss:point><georss:box>51.734098 -1.34249100000001 51.806062 -1.1826270000000103</georss:box></entry><entry><id>tag:blogger.com,1999:blog-5575859809518971863.post-7354278541801718904</id><published>2011-04-14T17:22:00.001+01:00</published><updated>2011-08-17T10:04:05.489+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='jquery'/><title type='text'>Announcing jquery.select2autocomplete</title><content type='html'>Ever had a select that was getting ungainly due the number of options it contains? Thought it might be good to convert this into an auto-complete field, and didn't want to write any code to handle the AJAX request to do the completion on the server?&lt;br /&gt;&lt;br /&gt;If so, then jquery.select2autocomplete could be the answer you're looking for. This is a jQuery UI widget we've been working on to convert any select element into an auto-complete widget. In contrast to jQuery UI's autocomplete widget, this constrains the value to one of the elements in the select and updates the underlying form element in place. It offers much greater speed than an AJAX request even with 30,000+ options in the select.&lt;br /&gt;&lt;br /&gt;The source is available on &lt;a href="https://github.com/2degrees/jquery.select2autocomplete"&gt;github&lt;/a&gt;. We'd welcome any feedback you have at this point on how we could improve the widget and integrate it more tightly with the UI themes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5575859809518971863-7354278541801718904?l=dev.2degreesnetwork.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dev.2degreesnetwork.com/feeds/7354278541801718904/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dev.2degreesnetwork.com/2011/04/announcing-jqueryselect2autocomplete.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5575859809518971863/posts/default/7354278541801718904'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5575859809518971863/posts/default/7354278541801718904'/><link rel='alternate' type='text/html' href='http://dev.2degreesnetwork.com/2011/04/announcing-jqueryselect2autocomplete.html' title='Announcing jquery.select2autocomplete'/><author><name>Euan</name><uri>http://www.blogger.com/profile/17227180792693544444</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5575859809518971863.post-7733562730503882674</id><published>2011-01-25T10:47:00.000Z</published><updated>2011-01-25T11:26:54.369Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Announcing djeneralize</title><content type='html'>We're pleased to announce the first alpha release of a new package, &lt;a href="https://github.com/2degrees/djeneralize"&gt;djeneralize&lt;/a&gt;, to augment the &lt;a href="http://docs.djangoproject.com/en/1.2/topics/db/models/#model-inheritance"&gt;model inheritance available in Django&lt;/a&gt;. djeneralize allows you to define specializations of general case models and then have these specializations returned from querying the database. For example:&lt;br /&gt;&lt;blockquote&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_y2vfKktyh8s/TT6zP7A8iSI/AAAAAAAADU4/WUvxYHaD4mg/s1600/code.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 62px;" src="http://4.bp.blogspot.com/_y2vfKktyh8s/TT6zP7A8iSI/AAAAAAAADU4/WUvxYHaD4mg/s400/code.png" alt="" id="BLOGGER_PHOTO_ID_5566083275597580578" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/blockquote&gt;This allows all the fruit in the database to be returned as the specialized fruit model instances rather than general Fruit model instances. We hope this functionality will allow the grouping of content types with common fields and allow rapid access to the specific model instances so that list views can be easily built which reflect the diversity of specialized content.&lt;br /&gt;&lt;br /&gt;djeneralize handles all the database lookups that you would need to perform behind the scenes and allows the vast majority of Django query syntax to be used. It supports multiple-levels of specialization to allow querying of sub-generalizations.&lt;br /&gt;&lt;br /&gt;We are planning on integrating this work into a current project to allow fine-grained categorization of all content on the 2degrees platform and hope this will offer us all the power and flexibility we need.&lt;br /&gt;&lt;br /&gt;To get djeneralize either clone the source from &lt;a href="https://github.com/2degrees/djeneralize"&gt;github&lt;/a&gt;, or install it via easy_install:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family:courier new;"&gt;$ easy_install djeneralize&lt;/span&gt;&lt;/blockquote&gt;Further information and full documentation is also &lt;a href="http://packages.python.org/djeneralize/"&gt;available&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5575859809518971863-7733562730503882674?l=dev.2degreesnetwork.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dev.2degreesnetwork.com/feeds/7733562730503882674/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dev.2degreesnetwork.com/2011/01/announcing-djeneralize.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5575859809518971863/posts/default/7733562730503882674'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5575859809518971863/posts/default/7733562730503882674'/><link rel='alternate' type='text/html' href='http://dev.2degreesnetwork.com/2011/01/announcing-djeneralize.html' title='Announcing djeneralize'/><author><name>Euan</name><uri>http://www.blogger.com/profile/17227180792693544444</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_y2vfKktyh8s/TT6zP7A8iSI/AAAAAAAADU4/WUvxYHaD4mg/s72-c/code.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5575859809518971863.post-592180116030328182</id><published>2010-09-21T17:13:00.000+01:00</published><updated>2010-09-21T17:13:28.348+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='jobs'/><title type='text'>Looking for a disciplined Software Developer</title><content type='html'>At &lt;a href="http://www.2degreesnetwork.com"&gt;2degrees&lt;/a&gt; we're looking for an experienced and disciplined Software Developer to work on the Django-based back-end of our Web site, as well as implement AJAX-based functionality from time to time.&lt;br /&gt;&lt;br /&gt;Prior Python, Django or JavaScript experience is desirable but not strictly necessary as we are looking to hire the best Software Developer we find regardless of the technologies they've used in the past.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.2degreesnetwork.com/files/static/downloads/jobs/web-developer.pdf"&gt;Learn more about this position&lt;/a&gt; and contact us if you're interested!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5575859809518971863-592180116030328182?l=dev.2degreesnetwork.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dev.2degreesnetwork.com/feeds/592180116030328182/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dev.2degreesnetwork.com/2010/09/looking-for-disciplined-software.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5575859809518971863/posts/default/592180116030328182'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5575859809518971863/posts/default/592180116030328182'/><link rel='alternate' type='text/html' href='http://dev.2degreesnetwork.com/2010/09/looking-for-disciplined-software.html' title='Looking for a disciplined Software Developer'/><author><name>Gustavo Narea</name><uri>http://www.blogger.com/profile/04022688498704778104</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5575859809518971863.post-478074805006581529</id><published>2010-07-22T11:29:00.000+01:00</published><updated>2010-07-22T11:30:01.244+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wsgi'/><category scheme='http://www.blogger.com/atom/ns#' term='twod.wsgi'/><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>twod.wsgi 1.0 is out! (Enhanced WSGI support for Django applications)</title><content type='html'>I'm very pleased to announce that &lt;a href="http://packages.python.org/twod.wsgi/"&gt;twod.wsgi&lt;/a&gt; 1.0 has been released, after several months of production use and preview releases! No bug has been found in the release candidate and therefore the final release has the same code as the candidate one.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://packages.python.org/twod.wsgi/"&gt;&lt;b&gt;twod.wsgi&lt;/b&gt;&lt;/a&gt; allows Django developers to take advantage of the &lt;a class="reference external" href="http://pypi.python.org/pypi?%3Aaction=search&amp;amp;term=wsgi"&gt;wealth of existing WSGI software&lt;/a&gt;, as the other popular Python frameworks do. It won’t break you existing Django applications because it’s 100% compatible with Django and you can start using the functionality offered by this library progressively.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://pypi.python.org/pypi/twod.wsgi/1.0"&gt;Get it&lt;/a&gt; while it's hot!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5575859809518971863-478074805006581529?l=dev.2degreesnetwork.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dev.2degreesnetwork.com/feeds/478074805006581529/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dev.2degreesnetwork.com/2010/07/twodwsgi-10-is-out-enhanced-wsgi.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5575859809518971863/posts/default/478074805006581529'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5575859809518971863/posts/default/478074805006581529'/><link rel='alternate' type='text/html' href='http://dev.2degreesnetwork.com/2010/07/twodwsgi-10-is-out-enhanced-wsgi.html' title='twod.wsgi 1.0 is out! (Enhanced WSGI support for Django applications)'/><author><name>Gustavo Narea</name><uri>http://www.blogger.com/profile/04022688498704778104</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5575859809518971863.post-1835920856739230536</id><published>2010-04-28T09:20:00.000+01:00</published><updated>2010-04-28T09:31:31.316+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='mongodb'/><category scheme='http://www.blogger.com/atom/ns#' term='auditing'/><title type='text'>Announcing django-audit</title><content type='html'>As part of some work at 2degrees on ensuring an audit trail for our Django models, we have been working on a project to add under-the-hood auditing to the Django Model class.&lt;br /&gt;&lt;br /&gt;We've published an early alpha of this code on &lt;a href="https://launchpad.net/django-audit"&gt;launchpad&lt;/a&gt;, and hope to have a final release for this package around the end of May to coincide with the deployment of our internal code.&lt;br /&gt;&lt;br /&gt;If you can't wait for the documentation, then checkout the code and have a read of the source. Otherwise documentation will be coming along shortly.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5575859809518971863-1835920856739230536?l=dev.2degreesnetwork.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dev.2degreesnetwork.com/feeds/1835920856739230536/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dev.2degreesnetwork.com/2010/04/announcing-django-audit.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5575859809518971863/posts/default/1835920856739230536'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5575859809518971863/posts/default/1835920856739230536'/><link rel='alternate' type='text/html' href='http://dev.2degreesnetwork.com/2010/04/announcing-django-audit.html' title='Announcing django-audit'/><author><name>Euan</name><uri>http://www.blogger.com/profile/17227180792693544444</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5575859809518971863.post-3177072151141340084</id><published>2010-03-08T11:31:00.000Z</published><updated>2010-03-08T11:48:57.963Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='twod.wsgi'/><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='paste'/><title type='text'>Announcing twod.wsgi: Better WSGI support for Django</title><content type='html'>We are very pleased to announce the first alpha release of &lt;a href="http://packages.python.org/twod.wsgi/"&gt;twod.wsgi&lt;/a&gt;, a library to make &lt;a href="http://wsgi.org/wsgi/What_is_WSGI"&gt;WSGI&lt;/a&gt; a first-class citizen in Django applications.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://packages.python.org/twod.wsgi/"&gt;twod.wsgi&lt;/a&gt; allows Django developers to take advantage of the huge array of existing WSGI software, to integrate 3rd party components which suit your needs or just to improve things which are not within the scope of a Web application framework.&lt;br /&gt;&lt;br /&gt;It ships with a &lt;a href="http://pythonpaste.org/deploy/"&gt;PasteDeploy&lt;/a&gt; application factory (&lt;a href="http://groups.google.com/group/django-developers/browse_thread/thread/c89e028a536514d3"&gt;which gives the enterprise some of what it needs&lt;/a&gt;) and full-featured &lt;i&gt;request&lt;/i&gt; objects extended by &lt;a href="http://pythonpaste.org/webob/"&gt;WebOb&lt;/a&gt;. It also gives you the ability to serve WSGI applications inside Django, so you can filter the requests they get and/or the responses they return (e.g., to implement Single Sign-On mechanisms). And there's more!&lt;br /&gt;&lt;br /&gt;For example, if you wanted to integrate your authentication mechanisms with your &lt;a href="http://trac.edgewall.org/"&gt;Trac&lt;/a&gt; application, you could do it in 11 lines of code:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;from django.shortcuts import redirect&lt;br /&gt;from django.conf import settings&lt;br /&gt;&lt;br /&gt;from twod.wsgi import call_wsgi_app&lt;br /&gt;from trac.web.main import dispatch_request as trac_app&lt;br /&gt;&lt;br /&gt;def make_trac(request, path_info):&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if path_info.startswith("/login"):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return redirect(request.script_name + "/login")&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; elif path_info.startswith("/logout"):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return redirect(request.script_name + "/logout")&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; request.environ['trac.env_path'] = settings.TRAC_PATH&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return call_wsgi_app(trac_app, request, path_info)&lt;/blockquote&gt;&lt;br /&gt;Don't be fooled by the "first alpha release": It's rock-solid. We've been using it for months in &lt;a href="http://www.2degreesnetwork.com/"&gt;our Web site&lt;/a&gt; and it's never ever failed. It just means the API &lt;i&gt;might &lt;/i&gt;change in a backwards incompatible way by the final release -- Which is very unlikely given how simple it is.&lt;br /&gt;&lt;br /&gt;It's also comprehensively documented and tested. For all these reasons, we believe it's safe to say it's production ready.&lt;br /&gt;&lt;br /&gt;Be warned, WSGI is very addictive! If you like it, please &lt;a href="http://packages.python.org/twod.wsgi/about.html#supporting-twod-wsgi"&gt;support it&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5575859809518971863-3177072151141340084?l=dev.2degreesnetwork.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dev.2degreesnetwork.com/feeds/3177072151141340084/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dev.2degreesnetwork.com/2010/03/announcing-twodwsgi-better-wsgi-support.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5575859809518971863/posts/default/3177072151141340084'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5575859809518971863/posts/default/3177072151141340084'/><link rel='alternate' type='text/html' href='http://dev.2degreesnetwork.com/2010/03/announcing-twodwsgi-better-wsgi-support.html' title='Announcing twod.wsgi: Better WSGI support for Django'/><author><name>Gustavo Narea</name><uri>http://www.blogger.com/profile/04022688498704778104</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5575859809518971863.post-436746897327541454</id><published>2010-03-02T10:01:00.000Z</published><updated>2010-03-02T10:11:27.180Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='wsgi'/><category scheme='http://www.blogger.com/atom/ns#' term='twod.wsgi'/><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='paste'/><title type='text'>twod.wsgi Presentation at the Django User Group in London</title><content type='html'>Last week I had the pleasure to present &lt;a href="http://packages.python.org/twod.wsgi/"&gt;twod.wsgi&lt;/a&gt;, a library to improve WSGI support in Django, at the &lt;a href="http://londonpython.eventwax.com/djugl-february"&gt;Django User Group in London&lt;/a&gt;. The slides are now available in &lt;a href="http://gustavonarea.net/files/talks/twodwsgi-djugl.odp"&gt;OpenDocument&lt;/a&gt; and &lt;a href="http://gustavonarea.net/files/talks/twodwsgi-djugl.pdf"&gt;PDF&lt;/a&gt; formats.&lt;br /&gt;&lt;br /&gt;That day I used a demo application which we are going to publish, possibly on Bitbucket. &lt;br /&gt;&lt;br /&gt;We should be releasing twod.wsgi &lt;b&gt;very soon&lt;/b&gt;, as soon as the documentation is finished. So stay tuned!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5575859809518971863-436746897327541454?l=dev.2degreesnetwork.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dev.2degreesnetwork.com/feeds/436746897327541454/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dev.2degreesnetwork.com/2010/03/twodwsgi-presentation-at-django-user.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5575859809518971863/posts/default/436746897327541454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5575859809518971863/posts/default/436746897327541454'/><link rel='alternate' type='text/html' href='http://dev.2degreesnetwork.com/2010/03/twodwsgi-presentation-at-django-user.html' title='twod.wsgi Presentation at the Django User Group in London'/><author><name>Gustavo Narea</name><uri>http://www.blogger.com/profile/04022688498704778104</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5575859809518971863.post-4283367482838929555</id><published>2010-02-08T16:24:00.000Z</published><updated>2010-02-08T17:14:59.193Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='buildout'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='paste'/><title type='text'>Starting to give back</title><content type='html'>At &lt;a href="http://www.2degreesnetwork.com/"&gt;2degrees&lt;/a&gt; we've wanted to start giving back to the Open Source Community for some time and today we finally have the first usable project: A Buildout recipe that makes PasteDeploy variables available in Buildout parts (&lt;a href="http://packages.python.org/deployrecipes/"&gt;DeployRecipes&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;It is not the first project we make public; it just happens to be the first one to be usable. We've developed the following ones which are very stable, but their documentation is far from complete as of this writing and therefore they have not been announced yet:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://what.repoze.org/docs/plugins/django/"&gt;The Django plugin for repoze.what&lt;/a&gt;. &lt;/li&gt;&lt;li&gt;A library to make &lt;a href="http://bitbucket.org/2degrees/twod.wsgi/"&gt;WSGI a first-class citizen in Django&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;A &lt;a href="http://bitbucket.org/Gustavo/pyclamdplus/"&gt;Python wrapper for Clamd&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;And more projects are coming. Stay tuned!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5575859809518971863-4283367482838929555?l=dev.2degreesnetwork.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dev.2degreesnetwork.com/feeds/4283367482838929555/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dev.2degreesnetwork.com/2010/02/starting-to-give-back.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5575859809518971863/posts/default/4283367482838929555'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5575859809518971863/posts/default/4283367482838929555'/><link rel='alternate' type='text/html' href='http://dev.2degreesnetwork.com/2010/02/starting-to-give-back.html' title='Starting to give back'/><author><name>Gustavo Narea</name><uri>http://www.blogger.com/profile/04022688498704778104</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
