<?xml version="1.0" encoding="UTF-8"?>
<response>
  <status>success</status>
  <result>
    <project>
      <id>80841</id>
      <name>spiff-guard</name>
      <created_at>2008-12-20T08:06:01Z</created_at>
      <updated_at>2008-12-20T08:06:01Z</updated_at>
      <description>Spiff Guard is a library implementing generic access lists for Python. It was designed to provide a clean API, high security and high scalability. 

Spiff Guard's features include recursion, groups, Python type awareness, inverse lookup, and a lot more. For a more complete example, have a look into the README file included with the package. 

Working with an ACL is as simple as this: 

from Guard import *
guard   = DB(db_connection)
group   = ResourceGroup(&quot;My Group&quot;)
user    = Resource(&quot;My User&quot;)
website = ResourceGroup(&quot;My Website&quot;)
view    = Action(&quot;View&quot;)
write   = Action(&quot;Edit&quot;)
guard.add_action([view, write])
guard.add_resource([user, group, website])
guard.grant(group, view, website)
guard.grant(user,  edit, website)
if guard.has_permission(user, view, website):
    print 'Permission granted.'</description>
      <homepage_url>http://code.google.com/p/spiff-guard</homepage_url>
      <download_url></download_url>
      <url_name>spiff-guard</url_name>
      <user_count>0</user_count>
      <average_rating></average_rating>
      <rating_count>0</rating_count>
      <analysis_id></analysis_id>
      <licenses>
        <license>
          <name>lgpl</name>
          <nice_name>GNU Lesser General Public License 2.1</nice_name>
        </license>
      </licenses>
    </project>
  </result>
</response>
