feat(src/projects): add ProjectNoteInline to ProjectAdmin
Add ProjectNoteInline to allow inline note management in project admin. Restrict queryset to users with appropriate project memberships.
This commit is contained in:
1 file changed
+22
-1
+22
-1
@@ -1,8 +1,29 @@
|
||||
from django.contrib import admin
|
||||
|
||||
from src.notes.models import ProjectNote
|
||||
from src.projects.models import Project, ProjectMember
|
||||
|
||||
|
||||
class ProjectNoteInline(admin.TabularInline):
|
||||
model = ProjectNote
|
||||
extra = 0
|
||||
fields = ("title", "note_date", "created_by")
|
||||
readonly_fields = ("created_at", "updated_at")
|
||||
|
||||
def formfield_for_foreignkey(self, db_field, request, **kwargs):
|
||||
if db_field.name == "created_by":
|
||||
kwargs["queryset"] = (
|
||||
request.user._meta.model.objects.filter(
|
||||
project_memberships__project_id=request.resolver_match.kwargs.get(
|
||||
"object_id"
|
||||
)
|
||||
)
|
||||
if request.resolver_match.kwargs.get("object_id")
|
||||
else kwargs.get("queryset")
|
||||
)
|
||||
return super().formfield_for_foreignkey(db_field, request, **kwargs)
|
||||
|
||||
|
||||
class ProjectMemberInline(admin.TabularInline):
|
||||
model = ProjectMember
|
||||
extra = 1
|
||||
@@ -20,7 +41,7 @@ class ProjectAdmin(admin.ModelAdmin):
|
||||
"pinned_date",
|
||||
)
|
||||
search_fields = ("name", "ticket_prefix")
|
||||
inlines = (ProjectMemberInline,)
|
||||
inlines = (ProjectMemberInline, ProjectNoteInline)
|
||||
|
||||
|
||||
@admin.register(ProjectMember)
|
||||
|
||||
Reference in new issue
Block a user