Improve the project admin
parent
8791d5d103
commit
2456c0454d
|
@ -22,13 +22,13 @@ from django.utils.html import format_html
|
|||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from taiga.permissions import permissions
|
||||
from taiga.projects.milestones.admin import MilestoneInline
|
||||
from taiga.projects.notifications.admin import NotifyPolicyInline
|
||||
from taiga.projects.likes.admin import LikeInline
|
||||
from taiga.users.admin import RoleInline
|
||||
|
||||
from . import models
|
||||
|
||||
|
||||
class MembershipAdmin(admin.ModelAdmin):
|
||||
list_display = ['project', 'role', 'user']
|
||||
list_display_links = list_display
|
||||
|
@ -49,6 +49,7 @@ class MembershipAdmin(admin.ModelAdmin):
|
|||
|
||||
return super().formfield_for_foreignkey(db_field, request, **kwargs)
|
||||
|
||||
|
||||
class MembershipInline(admin.TabularInline):
|
||||
model = models.Membership
|
||||
extra = 0
|
||||
|
@ -77,10 +78,58 @@ class ProjectAdmin(admin.ModelAdmin):
|
|||
list_filter = ("is_private", "blocked_code", "is_featured")
|
||||
list_editable = ["is_featured", "blocked_code"]
|
||||
search_fields = ["id", "name", "slug", "owner__username", "owner__email", "owner__full_name"]
|
||||
inlines = [RoleInline, MembershipInline, MilestoneInline, NotifyPolicyInline, LikeInline]
|
||||
inlines = [RoleInline,
|
||||
MembershipInline,
|
||||
NotifyPolicyInline,
|
||||
LikeInline]
|
||||
|
||||
# NOTE: TextArrayField with a choices is broken in the admin panel.
|
||||
exclude = ("anon_permissions", "public_permissions")
|
||||
fieldsets = (
|
||||
(None, {
|
||||
"fields": ("name",
|
||||
"slug",
|
||||
"is_featured",
|
||||
"description",
|
||||
"tags",
|
||||
"logo",
|
||||
("created_date", "modified_date"))
|
||||
}),
|
||||
(_("Privacity"), {
|
||||
"fields": (("owner", "blocked_code"),
|
||||
"is_private",
|
||||
("anon_permissions", "public_permissions"),
|
||||
"transfer_token")
|
||||
}),
|
||||
(_("Extra info"), {
|
||||
"classes": ("collapse",),
|
||||
"fields": ("creation_template",
|
||||
("is_looking_for_people", "looking_for_people_note"),
|
||||
"tags_colors"),
|
||||
}),
|
||||
(_("Modules"), {
|
||||
"classes": ("collapse",),
|
||||
"fields": (("is_backlog_activated", "total_milestones", "total_story_points"),
|
||||
"is_kanban_activated",
|
||||
"is_issues_activated",
|
||||
"is_wiki_activated",
|
||||
("videoconferences", "videoconferences_extra_data")),
|
||||
}),
|
||||
(_("Default values"), {
|
||||
"classes": ("collapse",),
|
||||
"fields": (("default_points", "default_us_status"),
|
||||
"default_task_status",
|
||||
("default_issue_status", "default_priority", "default_severity", "default_issue_type")),
|
||||
}),
|
||||
(_("Activity"), {
|
||||
"classes": ("collapse",),
|
||||
"fields": (("total_activity", "total_activity_last_week",
|
||||
"total_activity_last_month", "total_activity_last_year"),),
|
||||
}),
|
||||
(_("Fans"), {
|
||||
"classes": ("collapse",),
|
||||
"fields": (("total_fans", "total_fans_last_week",
|
||||
"total_fans_last_month", "total_fans_last_year"),),
|
||||
}),
|
||||
)
|
||||
|
||||
def owner_url(self, obj):
|
||||
if obj.owner:
|
||||
|
|
|
@ -27,6 +27,7 @@ class WatchedInline(GenericTabularInline):
|
|||
extra = 0
|
||||
raw_id_fields = ["project", "user"]
|
||||
|
||||
|
||||
class NotifyPolicyInline(TabularInline):
|
||||
model = models.NotifyPolicy
|
||||
extra = 0
|
||||
|
|
Loading…
Reference in New Issue