From 0611f820a8d5430fd7f9c43b81774161cd59ded0 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Thu, 24 Oct 2013 00:25:24 +0200 Subject: [PATCH] Put to read only fields on admin some fields that can contain a lot of values. --- greenmine/projects/admin.py | 41 ++++++++++++------------ greenmine/projects/milestones/admin.py | 18 +++++++---- greenmine/projects/tasks/admin.py | 7 ++-- greenmine/projects/userstories/admin.py | 25 +++++---------- greenmine/projects/userstories/models.py | 6 +--- 5 files changed, 45 insertions(+), 52 deletions(-) diff --git a/greenmine/projects/admin.py b/greenmine/projects/admin.py index 953e15fe..77d95f13 100644 --- a/greenmine/projects/admin.py +++ b/greenmine/projects/admin.py @@ -12,8 +12,7 @@ import reversion class AttachmentAdmin(reversion.VersionAdmin): list_display = ["project", "attached_file", "owner"] list_display_links = list_display - -admin.site.register(models.Attachment, AttachmentAdmin) + list_filter = ["project"] class AttachmentInline(generic.GenericTabularInline): @@ -26,38 +25,37 @@ class MembershipAdmin(admin.ModelAdmin): list_display = ['project', 'role', 'user'] list_filter = ['project', 'role'] list_display_links = list_display - -admin.site.register(models.Membership, MembershipAdmin) + list_filter = ["project"] class MembershipInline(admin.TabularInline): model = models.Membership - fields = ('user', 'project', 'role') + fields = ['user', 'project', 'role'] + readonly_fields = ["user", "project", "role"] extra = 0 + max_num = 0 + can_delete = False class ProjectAdmin(reversion.VersionAdmin): - list_display = ["name", "owner"] + list_display = ["name", "owner", "created_date", "total_milestones", "total_story_points"] list_display_links = list_display + readonly_fields = ["owner"] inlines = [MembershipInline, MilestoneInline] -admin.site.register(models.Project, ProjectAdmin) - # User Stories common admins class PointsAdmin(admin.ModelAdmin): list_display = ["name", "order", "project"] list_display_links = list_display - -admin.site.register(models.Points, PointsAdmin) + list_filter = ["project"] class UserStoryStatusAdmin(admin.ModelAdmin): list_display = ["name", "order", "is_closed", "project"] list_display_links = list_display - -admin.site.register(models.UserStoryStatus, UserStoryStatusAdmin) + list_filter = ["project"] # Tasks common admins @@ -66,8 +64,6 @@ class TaskStatusAdmin(admin.ModelAdmin): list_display = ["name", "order", "is_closed", "project"] list_display_links = list_display -admin.site.register(models.TaskStatus, TaskStatusAdmin) - # Issues common admins @@ -75,29 +71,32 @@ class SeverityAdmin(admin.ModelAdmin): list_display = ["name", "order", "project"] list_display_links = list_display -admin.site.register(models.Severity, SeverityAdmin) - class PriorityAdmin(admin.ModelAdmin): list_display = ["name", "order", "project"] list_display_links = list_display -admin.site.register(models.Priority, PriorityAdmin) - class IssueTypeAdmin(admin.ModelAdmin): list_display = ["name", "order", "project"] list_display_links = list_display -admin.site.register(models.IssueType, IssueTypeAdmin) - class IssueStatusAdmin(admin.ModelAdmin): list_display = ["name", "order", "is_closed", "project"] list_display_links = list_display -admin.site.register(models.IssueStatus, IssueStatusAdmin) +admin.site.register(models.IssueStatus, IssueStatusAdmin) +admin.site.register(models.TaskStatus, TaskStatusAdmin) +admin.site.register(models.UserStoryStatus, UserStoryStatusAdmin) +admin.site.register(models.Points, PointsAdmin) +admin.site.register(models.Project, ProjectAdmin) +admin.site.register(models.Attachment, AttachmentAdmin) +admin.site.register(models.Membership, MembershipAdmin) +admin.site.register(models.Severity, SeverityAdmin) +admin.site.register(models.Priority, PriorityAdmin) +admin.site.register(models.IssueType, IssueTypeAdmin) # Questions common admins diff --git a/greenmine/projects/milestones/admin.py b/greenmine/projects/milestones/admin.py index 539c5cd0..5f158de7 100644 --- a/greenmine/projects/milestones/admin.py +++ b/greenmine/projects/milestones/admin.py @@ -1,24 +1,30 @@ # -*- coding: utf-8 -*- from django.contrib import admin +import reversion from . import models -import reversion - class MilestoneInline(admin.TabularInline): model = models.Milestone - fields = ('name', 'owner', 'estimated_start', 'estimated_finish', 'closed', - 'disponibility', 'order') + + 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): list_display = ["name", "project", "owner", "closed", "estimated_start", "estimated_finish"] + list_display_links = list_display + list_filter = ["project"] + readonly_fields = ["owner"] + admin.site.register(models.Milestone, MilestoneAdmin) - - diff --git a/greenmine/projects/tasks/admin.py b/greenmine/projects/tasks/admin.py index 80d6ed72..87e7a911 100644 --- a/greenmine/projects/tasks/admin.py +++ b/greenmine/projects/tasks/admin.py @@ -1,17 +1,18 @@ # -*- coding: utf-8 -*- from django.contrib import admin +import reversion from greenmine.projects.admin import AttachmentInline - from . import models -import reversion class TaskAdmin(reversion.VersionAdmin): list_display = ["subject", "ref", "user_story", "milestone", "project", "user_story_id"] - list_filter = ["user_story", "milestone", "project"] + list_filter = ["project"] + list_display_links = list_display + readonly_fields = ["project", "milestone", "user_story", "status", "owner", "assigned_to"] inlines = [AttachmentInline] def user_story_id(self, instance): diff --git a/greenmine/projects/userstories/admin.py b/greenmine/projects/userstories/admin.py index c591e903..086e7b97 100644 --- a/greenmine/projects/userstories/admin.py +++ b/greenmine/projects/userstories/admin.py @@ -1,46 +1,37 @@ # -*- coding: utf-8 -*- from django.contrib import admin +import reversion from greenmine.projects.admin import AttachmentInline -from . import models +from . import models -import reversion - - -class UserStoryInline(admin.TabularInline): - model = models.UserStory - fields = ('subject', 'order') - sortable_field_name = 'order' - extra = 0 - - def get_inline_instances(self, request, obj=None): - if obj: - return obj.user_stories.filter(mileston__isnone=True) - else: - return models.UserStory.objects.none() class RolePointsInline(admin.TabularInline): model = models.RolePoints sortable_field_name = 'role' - readonly_fields = ["id"] + readonly_fields = ["user_story", "role", "points"] + can_delete = False extra = 0 + max_num = 0 class RolePointsAdmin(admin.ModelAdmin): list_display = ["user_story", "role", "points"] list_display_links = list_display list_filter = ["role", "user_story__project"] + readonly_fields = ["user_story", "role", "points"] class UserStoryAdmin(reversion.VersionAdmin): list_display = ["id", "ref", "milestone", "project", "owner", 'status', 'is_closed'] - list_filter = ["milestone", "project"] + list_filter = ["project"] list_display_links = list_display readonly_fields = ["project", "status"] inlines = [RolePointsInline, AttachmentInline] + admin.site.register(models.UserStory, UserStoryAdmin) admin.site.register(models.RolePoints, RolePointsAdmin) diff --git a/greenmine/projects/userstories/models.py b/greenmine/projects/userstories/models.py index f845275d..fbfbe2c5 100644 --- a/greenmine/projects/userstories/models.py +++ b/greenmine/projects/userstories/models.py @@ -136,8 +136,4 @@ def us_ref_handler(sender, instance, **kwargs): @receiver(models.signals.post_save, sender=UserStory, dispatch_uid="user_story_create_role_points_handler") def us_create_role_points_handler(sender, instance, **kwargs): - created_roles_ids = instance.role_points.all().values_list("role__id", flat=True) - null_points_value = instance.project.points.get(value=None) - - for role in instance.project.get_roles().exclude(id__in=created_roles_ids): - instance.role_points.create(role=role, points=null_points_value) + instance.project.update_role_points()