I have a menu in my application (django-console menu) and I would like to restrict access to its elements (and also don't show the models) but Reports for regular users. If a user is superuser
let him see everything ( Users, Inventory ... see settings.py
). How can I do this ?
# admin.py
...
class UserAdmin(admin.ModelAdmin):
list_display = (
'user',
)
class PaymentAdmin(admin.ModelAdmin):
list_display = (
'user',
)
pass
...
admin.site.unregister(User)
admin.site.register(Message, MessageAdmin)
admin.site.register(Country, CountryAdmin)
admin.site.register(Payment, PaymentAdmin)
admin.site.register(Server, ServerAdmin)
admin.site.register(User, CustomUserAdmin)
admin.site.register(Package, PackageAdmin)
admin.site.register(PackageRoute, PackageRouteAdmin)
And here is a relevant part of models.py:
# models.py
...
class Message(models.Model):
class Meta:
app_label = 'myprox'
date_created = models.DateTimeField(null=False, default=datetime.utcnow)
title = models.CharField(max_length=256, null=False, blank=False, default="Message Title")
content = models.TextField(null=False, blank=True, default="Message Content")
has_url = models.BooleanField(default=False)
is_sticky = models.BooleanField(default=False)
is_persistent = models.BooleanField(default=False)
is_active = models.BooleanField(default=False)
is_generic = models.BooleanField(default=True)
time_shown = models.IntegerField(default=1, null=True, blank=False)
specific_to_plan = models.CharField(max_length=256, null=False, blank=True)
url = models.CharField(max_length=256, null=True, blank=True)
def __unicode__(self):
return self.content
And now settings.py:
# settings.py
ADMIN_MENU = [
{
'name': 'Users',
'models': [
'User',
'Message',
'Payment',
],
'icon': 'icon-user'
},
{
'name': 'Inventory',
'models': [
'Country',
'Server',
'Package',
'blog.post'
],
'icon':'icon-user'
},
{
'name': 'Blog',
'models': [
'Post',
],
'icon':'icon-user'
},
{
'name': 'Reports',
'models': [
('Users', '/console/reports/users'),
('Usage', '/console/reports/usage'),
],
'icon':'icon-user'
}
]