feat: add community contribution ranks

This commit is contained in:
2026-09-29 22:18:57 +03:30
parent 0f6220f72c
commit 77567178ad
46 changed files with 2206 additions and 23 deletions

View File

@@ -100,23 +100,41 @@ class PostAdmin(BaseModelAdmin, ImportExportModelAdmin):
actions = BaseModelAdmin.actions + ['submit_for_review', 'request_changes', 'make_published', 'make_draft', 'make_featured', 'restore_posts']
def submit_for_review(self, request, queryset):
queryset.update(status='submitted')
self.message_user(request, f"Submitted {queryset.count()} posts for review.")
count = 0
for post in queryset:
post.status = Post.StatusChoices.SUBMITTED
post.save(update_fields=["status", "updated_at"])
count += 1
self.message_user(request, f"Submitted {count} posts for review.")
submit_for_review.short_description = "Submit selected posts for review"
def request_changes(self, request, queryset):
queryset.update(status='changes_requested', reviewed_by=request.user)
self.message_user(request, f"Requested changes on {queryset.count()} posts.")
count = 0
for post in queryset:
post.status = Post.StatusChoices.CHANGES_REQUESTED
post.reviewed_by = request.user
post.save(update_fields=["status", "reviewed_by", "updated_at"])
count += 1
self.message_user(request, f"Requested changes on {count} posts.")
request_changes.short_description = "Request changes on selected posts"
def make_published(self, request, queryset):
queryset.update(status='published', published_by=request.user)
self.message_user(request, f"Published {queryset.count()} posts.")
count = 0
for post in queryset:
post.status = Post.StatusChoices.PUBLISHED
post.published_by = request.user
post.save(update_fields=["status", "published_by", "published_at", "updated_at"])
count += 1
self.message_user(request, f"Published {count} posts.")
make_published.short_description = "Mark selected posts as published"
def make_draft(self, request, queryset):
queryset.update(status='draft')
self.message_user(request, f"Marked {queryset.count()} posts as draft.")
count = 0
for post in queryset:
post.status = Post.StatusChoices.DRAFT
post.save(update_fields=["status", "updated_at"])
count += 1
self.message_user(request, f"Marked {count} posts as draft.")
make_draft.short_description = "Mark selected posts as draft"
def make_featured(self, request, queryset):
@@ -156,8 +174,19 @@ class CommentAdmin(BaseModelAdmin):
content_preview.short_description = 'Content Preview'
def approve_comments(self, request, queryset):
queryset.update(is_approved=True, is_hidden=False, hidden_by=None, hidden_at=None, moderation_note='')
self.message_user(request, f"Approved {queryset.count()} comments.")
count = 0
for comment in queryset:
comment.is_approved = True
comment.is_hidden = False
comment.hidden_by = None
comment.hidden_at = None
comment.moderation_note = ""
comment.save(update_fields=[
"is_approved", "is_hidden", "hidden_by", "hidden_at",
"moderation_note", "updated_at",
])
count += 1
self.message_user(request, f"Approved {count} comments.")
approve_comments.short_description = "Approve selected comments"
def hide_comments(self, request, queryset):