GustavoHenrique.net

  • About
  • Contact
  • RSS Feed
  • Twitter

 

28
May

Removendo "auth" e "sites" do admin do Django

By gustavohenrique|Django|3 Comments

Você não quer que apareça na tela do admin as app auth e sites? Então vou mostrar como retirar de forma fácil e rápida.
O procedimento se resume em copiar e alterar o arquivo index.html localizado dentro do diretório de templates do admin do django (django/contrib/admin/templates/admin/) e inserir o código que impede que sejam exibidas as apps auth e sites.

Exemplo de como copiar usando um terminal Linux:

$ cd meuprojeto/templates
$ mkdir admin
$ cp /usr/lib/python2.5/site-packages/django/contrib/admin/templates/admin/index.html admin/

Abaixo está o código dentro do arquivo index.html responsável por exibir a lista de apps no admin.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
{% if app_list %}
  {% for app in app_list %}
        <div class="module">
        <table summary="{% blocktrans with app.name as name %}Models available in the {{ name }} application.{% endblocktrans %}">
        <caption><a href="{{ app.app_url }}" class="section">{% blocktrans with app.name as name %}{{ name }}{% endblocktrans %}</a></caption>
        {% for model in app.models %}
            <tr>
            {% if model.perms.change %}
                <th scope="row"><a href="{{ model.admin_url }}">{{ model.name }}</a></th>
            {% else %}
                <th scope="row">{{ model.name }}</th>
            {% endif %}
 
            {% if model.perms.add %}
                <td><a href="{{ model.admin_url }}add/" class="addlink">{% trans 'Add' %}</a></td>
            {% else %}
                <td>&nbsp;</td>
            {% endif %}
 
            {% if model.perms.change %}
                <td><a href="{{ model.admin_url }}" class="changelink">{% trans 'Change' %}</a></td>
            {% else %}
                <td>&nbsp;</td>
            {% endif %}
            </tr>
        {% endfor %}
        </table>
        </div>
  {% endfor %}
{% else %}
    <p>{% trans "You don't have permission to edit anything." %}</p>
{% endif %}

O que vamos fazer é inserir 2 "ifs" dentro da tag for de modo a não exibir as apps auth e sites. O primeiro if verifica se app_url = 'auth/' e o segundo se app_url = 'sites/'. Se app_url não for igual à nenhuma das 2 opções então a app será exibida na tela.

1
2
{% ifnotequal app.app_url 'auth/' %}
{% ifnotequal app.app_url 'sites/' %}

Abaixo o código com os "ifs" inseridos. Lembrando que é preciso fechar as tags. Reparem na terceira e quarta linha:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
{% if app_list %}
  {% for app in app_list %}
    {% ifnotequal app.app_url 'auth/' %}
      {% ifnotequal app.app_url 'sites/' %}
        <div class="module">
        <table summary="{% blocktrans with app.name as name %}Models available in the {{ name }} application.{% endblocktrans %}">
        <caption><a href="{{ app.app_url }}" class="section">{% blocktrans with app.name as name %}{{ name }}{% endblocktrans %}</a></caption>
        {% for model in app.models %}
            <tr>
            {% if model.perms.change %}
                <th scope="row"><a href="{{ model.admin_url }}">{{ model.name }}</a></th>
            {% else %}
                <th scope="row">{{ model.name }}</th>
            {% endif %}
 
            {% if model.perms.add %}
                <td><a href="{{ model.admin_url }}add/" class="addlink">{% trans 'Add' %}</a></td>
            {% else %}
                <td>&nbsp;</td>
            {% endif %}
 
            {% if model.perms.change %}
                <td><a href="{{ model.admin_url }}" class="changelink">{% trans 'Change' %}</a></td>
            {% else %}
                <td>&nbsp;</td>
            {% endif %}
            </tr>
        {% endfor %}
        </table>
        </div>
      {% endifnotequal %}
    {% endifnotequal %}
  {% endfor %}
{% else %}
    <p>{% trans "You don't have permission to edit anything." %}</p>
{% endif %}
Bookmark It

Add to Del.icio.us Add to Diigo Add to Facebook Add to Google Bookmarks Add to LinkedIn Add to Mister Wong Add to Twitter Add to Yahoo My Web
Tagged as: admin, app_list, app_url, auth, Django, sites
Add your comment →

3 Comments

  1. Por que remover manualmente o sites e o auth do admin? Poderia simplesmente usar o admin.site.unregister().

    Quando eu preciso limitar o uso do admin, normalmente é pra entregar ele pra algum cliente. Aí crio o usuário dele como “staff” e dou somente as permissões das apps que ele vai usar.

    Abraço.

    By: Igor Sobreira Reply →
    June 2, 2009 at 11:40 am
  2. @Igor, eu desconhecia a possibilidade de usar o admin.site.unregister().
    Obrigado!

    By: admin Reply →
    June 2, 2009 at 11:58 am
  3. O post serve como aprendizado,

    Mas a melhor solução é não mexer no codigo.
    Exemplo:
    crie um usuario sem permissão de acessar essas apps.

    Assim não precisa alterar uma linha de codigo.
    resumindo seria assim: admin (usuario root normal) e admin2 (usuario root sem permissão de acessar os apps auth e sites.)

    até mais

    By: wancharle Reply →
    June 1, 2010 at 2:42 pm

Leave your comment below! Cancel Reply

View More Posts:
  • ←
  • →

Tags

admin Django extjs firewall grails jquery KingHost liberações Linux manual model modelform mod_wsgi moeda brasileira mudanças mysql nível de serviço oo PagSeguro pdf php PIL pisa problemas proxy python qa qos real relacionamento roteamento service desk shell script sites tdd tipsforlinux traducao ubicomp ubuntu urllib virtualhost Webservices wikipedia xsol __init__

Recent Posts

  • Configurando um servidor LDAP no CentOS 6.2
  • Introdução ao padrão MVC no Ext JS 4
  • Virtualização com KVM
  • Autenticação Facebook no Grails
  • Grails com Sqlite3 no Ubuntu 11.04
  • Deploy no tomcat usando django-jython
  • Deploy múltiplas versões do Django no Nginx com VirtualEnv
  • Comandos básicos do Git
  • Introdução ao Apache Wicket
  • Feliz 2011

Archives

Categories

My tweets

  • @tregismoreira Genesis 7200 com android 4 3 days ago
  • @marcomaciel blz! 1 week ago
  • @marcomaciel hack com qualquer linguagem em qualquer plataforma pra mim ta valendo! #soudev 1 week ago
  • Fui instalar o android 2.3 da lg e agora meu celular não liga. #ffuuu 1 week ago
  • Tentando gerar uma NFe e não consigo =/ #stacktrace Impressionante como todos os sites e apps do governo são ruins. 2 weeks ago
  • More updates...

Powered by the inLine Minimal WordPress Theme