Admin interface improvements

* Set custom title for admin pages
* Use reasonable field widths on editing pages
* Allow filtering and searching by useful fields
* Disable editing of recipe records
* Disable editing of layer fields set by the update script
* Show "Layers" instead of "Layer items" for layers
* Show "Layer dependencies" instead of "Layer dependencys"
* Show layer name in maintainers listing

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
This commit is contained in:
Paul Eggleton 2013-02-19 10:17:59 +00:00
parent df6a33967e
commit 05ceb17487
3 changed files with 35 additions and 9 deletions

5
admin/base_site.html Normal file
View File

@ -0,0 +1,5 @@
{% extends "admin/base.html" %}
{% block branding %}
<h1 id="site-name">OpenEmbedded Metadata Index Admin</h1>
{% endblock %}

View File

@ -7,21 +7,38 @@
from layerindex.models import *
from django.contrib import admin
from reversion_compare.admin import CompareVersionAdmin
from django.forms import TextInput
class LayerItemAdmin(CompareVersionAdmin):
""" Admin settings here """
list_filter = ['status', 'layer_type']
save_as = True
search_fields = ['name', 'summary']
readonly_fields = ['vcs_last_fetch', 'vcs_last_rev', 'vcs_last_commit']
formfield_overrides = {
models.URLField: {'widget': TextInput(attrs={'size':'100'})},
models.CharField: {'widget': TextInput(attrs={'size':'100'})},
}
class LayerMaintainerAdmin(CompareVersionAdmin):
""" Admin settings here """
list_filter = ['status', 'layer__name']
class LayerDependencyAdmin(CompareVersionAdmin):
""" Admin settings here """
list_filter = ['layer__name']
class LayerNoteAdmin(CompareVersionAdmin):
""" Admin settings here """
list_filter = ['layer__name']
class RecipeAdmin(admin.ModelAdmin):
search_fields = ['filename', 'pn']
list_filter = ['layer__name']
readonly_fields = Recipe._meta.get_all_field_names()
def has_add_permission(self, request, obj=None):
return False
def has_delete_permission(self, request, obj=None):
return False
admin.site.register(LayerItem, LayerItemAdmin)
admin.site.register(LayerMaintainer, LayerMaintainerAdmin)
admin.site.register(LayerDependency, LayerDependencyAdmin)
admin.site.register(LayerNote, LayerNoteAdmin)
admin.site.register(Recipe)
admin.site.register(Recipe, RecipeAdmin)

View File

@ -21,14 +21,14 @@ class LayerItem(models.Model):
('D', 'Distribution'),
('M', 'Miscellaneous'),
)
name = models.CharField(max_length=40, unique=True)
name = models.CharField('Layer name', max_length=40, unique=True)
created_date = models.DateTimeField('Created')
status = models.CharField(max_length=1, choices=LAYER_STATUS_CHOICES, default='N')
layer_type = models.CharField(max_length=1, choices=LAYER_TYPE_CHOICES, default='M')
summary = models.CharField(max_length=200)
description = models.TextField()
vcs_last_fetch = models.DateTimeField('Last successful fetch', blank=True, null=True)
vcs_last_rev = models.CharField(max_length=80, blank=True)
vcs_last_rev = models.CharField('Last revision fetched', max_length=80, blank=True)
vcs_last_commit = models.DateTimeField('Last commit date', blank=True, null=True)
vcs_subdir = models.CharField('Repository subdirectory', max_length=40, blank=True)
vcs_url = models.CharField('Repository URL', max_length=200)
@ -37,6 +37,7 @@ class LayerItem(models.Model):
usage_url = models.URLField('Usage web page URL', blank=True)
class Meta:
verbose_name = "Layer"
permissions = (
("publish_layer", "Can publish layers"),
)
@ -74,14 +75,17 @@ class LayerMaintainer(models.Model):
def __unicode__(self):
respstr = ""
if self.responsibility:
respstr = " - %s" % self.responsibility
return "%s <%s>%s" % (self.name, self.email, respstr)
respstr = " (%s)" % self.responsibility
return "%s: %s <%s>%s" % (self.layer.name, self.name, self.email, respstr)
class LayerDependency(models.Model):
layer = models.ForeignKey(LayerItem, related_name='dependencies_set')
dependency = models.ForeignKey(LayerItem, related_name='dependents_set')
class Meta:
verbose_name_plural = "Layer dependencies"
def __unicode__(self):
return "%s depends on %s" % (self.layer.name, self.dependency.name)