Made some improvements in the admin panel

remotes/origin/enhancement/email-actions
David Barragán Merino 2013-11-12 22:03:51 +01:00
parent 8475b84df7
commit cf5ef4557a
6 changed files with 122 additions and 26 deletions

View File

@ -23,25 +23,44 @@ class AttachmentInline(generic.GenericTabularInline):
class MembershipAdmin(admin.ModelAdmin):
list_display = ['project', 'role', 'user']
list_filter = ['project', 'role']
list_display_links = list_display
list_filter = ["project"]
list_filter = ['project', 'role']
class MembershipInline(admin.TabularInline):
model = models.Membership
fields = ['user', 'project', 'role']
readonly_fields = ["project", "role"]
extra = 0
max_num = 0
can_delete = False
class ProjectAdmin(reversion.VersionAdmin):
list_display = ["name", "owner", "created_date", "total_milestones", "total_story_points"]
list_display = ["name", "owner", "created_date", "total_milestones",
"total_story_points"]
list_display_links = list_display
inlines = [MembershipInline, MilestoneInline]
def get_object(self, *args, **kwargs):
self.obj = super().get_object(*args, **kwargs)
return self.obj
def formfield_for_foreignkey(self, db_field, request, **kwargs):
if (db_field.name in ["default_points", "default_us_status", "default_task_status",
"default_priority", "default_severity",
"default_issue_status", "default_issue_type",
"default_question_status"]
and getattr(self, 'obj', None)):
kwargs["queryset"] = db_field.related.parent_model.objects.filter(
project=self.obj.project)
else:
kwargs["queryset"] = db_field.related.parent_model.objects.none()
return super().formfield_for_foreignkey(db_field, request, **kwargs)
def formfield_for_manytomany(self, db_field, request, **kwargs):
if (db_field.name in ["watchers"]
and getattr(self, 'obj', None)):
kwargs["queryset"] = db_field.related.parent_model.objects.filter(
memberships__project=self.obj.project)
return super().formfield_for_manytomany(db_field, request, **kwargs)
# User Stories common admins

View File

@ -10,7 +10,31 @@ import reversion
class IssueAdmin(reversion.VersionAdmin):
list_display = ["subject", "type"]
list_display = ["project", "milestone", "ref", "subject",]
list_display_links = ["ref", "subject",]
inlines = [AttachmentInline]
def get_object(self, *args, **kwargs):
self.obj = super().get_object(*args, **kwargs)
return self.obj
def formfield_for_foreignkey(self, db_field, request, **kwargs):
if (db_field.name in ["status", "priority", "severity", "type", "milestone"]
and getattr(self, 'obj', None)):
kwargs["queryset"] = db_field.related.parent_model.objects.filter(
project=self.obj.project)
elif (db_field.name in ["owner", "assigned_to"]
and getattr(self, 'obj', None)):
kwargs["queryset"] = db_field.related.parent_model.objects.filter(
memberships__project=self.obj.project)
return super().formfield_for_foreignkey(db_field, request, **kwargs)
def formfield_for_manytomany(self, db_field, request, **kwargs):
if (db_field.name in ["watchers"]
and getattr(self, 'obj', None)):
kwargs["queryset"] = db_field.related.parent_model.objects.filter(
memberships__project=self.obj.project)
return super().formfield_for_manytomany(db_field, request, **kwargs)
admin.site.register(models.Issue, IssueAdmin)

View File

@ -8,15 +8,7 @@ from . import models
class MilestoneInline(admin.TabularInline):
model = models.Milestone
fields = ['name', 'owner', 'estimated_start', 'estimated_finish', 'closed',
'disponibility', 'order']
readonly_fields = ["owner"]
sortable_field_name = 'order'
extra = 0
max_num = 0
can_delete = False
class MilestoneAdmin(reversion.VersionAdmin):

View File

@ -10,7 +10,30 @@ import reversion
class QuestionAdmin(reversion.VersionAdmin):
list_display = ["subject", "project", "owner"]
list_display = ["project", "milestone", "ref", "subject",]
list_display_links = ["ref", "subject",]
inlines = [AttachmentInline]
def get_object(self, *args, **kwargs):
self.obj = super().get_object(*args, **kwargs)
return self.obj
def formfield_for_foreignkey(self, db_field, request, **kwargs):
if (db_field.name in ["status", "milestone"]
and getattr(self, 'obj', None)):
kwargs["queryset"] = db_field.related.parent_model.objects.filter(
project=self.obj.project)
elif (db_field.name in ["owner", "assigned_to"]
and getattr(self, 'obj', None)):
kwargs["queryset"] = db_field.related.parent_model.objects.filter(
memberships__project=self.obj.project)
return super().formfield_for_foreignkey(db_field, request, **kwargs)
def formfield_for_manytomany(self, db_field, request, **kwargs):
if (db_field.name in ["watchers"]
and getattr(self, 'obj', None)):
kwargs["queryset"] = db_field.related.parent_model.objects.filter(
memberships__project=self.obj.project)
return super().formfield_for_manytomany(db_field, request, **kwargs)
admin.site.register(models.Question, QuestionAdmin)

View File

@ -7,15 +7,32 @@ from greenmine.projects.admin import AttachmentInline
from . import models
class TaskAdmin(reversion.VersionAdmin):
list_display = ["subject", "ref", "user_story", "milestone", "project", "user_story_id"]
list_display = ["project", "milestone", "user_story", "ref", "subject",]
list_display_links = ["ref", "subject",]
list_filter = ["project"]
list_display_links = list_display
readonly_fields = ["milestone", "user_story", "status"]
inlines = [AttachmentInline]
def user_story_id(self, instance):
return instance.user_story.id
def get_object(self, *args, **kwargs):
self.obj = super().get_object(*args, **kwargs)
return self.obj
def formfield_for_foreignkey(self, db_field, request, **kwargs):
if (db_field.name in ["status", "milestone", "user_story"]
and getattr(self, 'obj', None)):
kwargs["queryset"] = db_field.related.parent_model.objects.filter(
project=self.obj.project)
elif (db_field.name in ["owner", "assigned_to"]
and getattr(self, 'obj', None)):
kwargs["queryset"] = db_field.related.parent_model.objects.filter(
memberships__project=self.obj.project)
return super().formfield_for_foreignkey(db_field, request, **kwargs)
def formfield_for_manytomany(self, db_field, request, **kwargs):
if (db_field.name in ["watchers"]
and getattr(self, 'obj', None)):
kwargs["queryset"] = db_field.related.parent_model.objects.filter(
memberships__project=self.obj.project)
return super().formfield_for_manytomany(db_field, request, **kwargs)
admin.site.register(models.Task, TaskAdmin)

View File

@ -26,12 +26,33 @@ class RolePointsAdmin(admin.ModelAdmin):
class UserStoryAdmin(reversion.VersionAdmin):
list_display = ["id", "ref", "milestone", "project", "owner", 'status', 'is_closed']
list_display = ["project", "milestone", "ref", "subject",]
list_display_links = ["ref", "subject",]
list_filter = ["project"]
list_display_links = list_display
readonly_fields = ["status", "milestone"]
inlines = [RolePointsInline, AttachmentInline]
def get_object(self, *args, **kwargs):
self.obj = super().get_object(*args, **kwargs)
return self.obj
def formfield_for_foreignkey(self, db_field, request, **kwargs):
if (db_field.name in ["status", "milestone"]
and getattr(self, 'obj', None)):
kwargs["queryset"] = db_field.related.parent_model.objects.filter(
project=self.obj.project)
elif (db_field.name in ["owner", "assigned_to"]
and getattr(self, 'obj', None)):
kwargs["queryset"] = db_field.related.parent_model.objects.filter(
memberships__project=self.obj.project)
return super().formfield_for_foreignkey(db_field, request, **kwargs)
def formfield_for_manytomany(self, db_field, request, **kwargs):
if (db_field.name in ["watchers"]
and getattr(self, 'obj', None)):
kwargs["queryset"] = db_field.related.parent_model.objects.filter(
memberships__project=self.obj.project)
return super().formfield_for_manytomany(db_field, request, **kwargs)
admin.site.register(models.UserStory, UserStoryAdmin)
admin.site.register(models.RolePoints, RolePointsAdmin)