<?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>SOASI &#187; superuser</title>
	<atom:link href="http://www.soasi.com/tag/superuser/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.soasi.com</link>
	<description>Sviluppo Software e Sistemi Open Source a Forlì</description>
	<lastBuildDate>Wed, 25 Jan 2012 15:06:25 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Filtrare gli oggetti visti dallo staff nell&#8217;admin di Django</title>
		<link>http://www.soasi.com/2008/09/filtrare-gli-oggetti-visti-dallo-staff-admin-di-django/</link>
		<comments>http://www.soasi.com/2008/09/filtrare-gli-oggetti-visti-dallo-staff-admin-di-django/#comments</comments>
		<pubDate>Mon, 22 Sep 2008 07:25:06 +0000</pubDate>
		<dc:creator>SOASI</dc:creator>
				<category><![CDATA[django]]></category>
		<category><![CDATA[admin]]></category>
		<category><![CDATA[filtrare]]></category>
		<category><![CDATA[oggetti]]></category>
		<category><![CDATA[superuser]]></category>
		<category><![CDATA[superutente]]></category>

		<guid isPermaLink="false">http://www.soasi.com/?p=260</guid>
		<description><![CDATA[Uno dei vantaggi dell&#8217;utilizzo di Django risiede nella possibilità di avere una interfaccia di amministrazione dei modelli praticamente già pronta. Nel caso si abbiano più amministratori del portale si può però voler filtrare gli oggetti modificabili e visualizzabili dallo staff, a seconda dell&#8217;utente. Nel caso di un portale di notizie, ad esempio, può essere necessario [...]]]></description>
			<content:encoded><![CDATA[<p>Uno dei vantaggi dell&#8217;utilizzo di Django risiede nella possibilità di avere una interfaccia di amministrazione dei modelli praticamente già pronta.</p>
<p>Nel caso si abbiano più amministratori del portale si può però voler filtrare gli oggetti modificabili e visualizzabili dallo staff, a seconda dell&#8217;utente. Nel caso di un portale di notizie, ad esempio, può essere necessario filtrare l&#8217;elenco degli articoli mostrando solo quelli il cui autore è l&#8217;utente loggato, e dare solo al super amministratore la possibilità di vedere tutto.</p>
<p>In django 1.0 ci viene in aiuto la classe admin del nostro modello.<span id="more-260"></span></p>
<pre class="brush: python; title: ;">
class SchedaOptions(admin.ModelAdmin):
    def has_change_permission(self, request, obj=None):
        if obj and request.user == obj.referente: # (1)
            return super(SchedaOptions, self).has_change_permission(request, obj)
        elif obj is None or request.user.is_superuser:
            return True
        else:
            return False

    def queryset(self, request):
       # Limit the queryset to some subset based on the value of user.
       qs = super(SchedaOptions,self).queryset(request)
       utente = request.user
       if utente.is_superuser:
           return qs
       else:
           return qs.filter(referente=utente) # (2)
</pre>
<p>In questo esempio solo il referente di una scheda (referente == request.user) può modificare (vedi riga contrassegnata (1), ed il set di oggetti visualizzato (queryset) dall&#8217;admin è filtrato con la riga (2).</p>
<p>Una volta salvato provate a loggarvi con il superutente: nulla sarà cambiato (ed è bene che sia così nel 99% dei casi). Entrando con un utente staff, invece, vedrete solo gli oggetti che avete la possibilità di modificare.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.soasi.com/2008/09/filtrare-gli-oggetti-visti-dallo-staff-admin-di-django/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

