/
admin.py
57 lines (42 loc) · 1.64 KB
/
admin.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
from django.contrib import admin
from .models import Language, Snippet, SnippetFlag
class LanguageAdmin(admin.ModelAdmin):
prepopulated_fields = {"slug": ["name"]}
class SnippetAdmin(admin.ModelAdmin):
list_display = ("id", "title", "author", "rating_score", "pub_date")
list_filter = ("language",)
date_hierarchy = "pub_date"
search_fields = (
"author__username",
"title",
"description",
"code",
)
raw_id_fields = ("author",)
actions = ["mark_as_inappropiate", "mark_as_spam"]
def mark_as_inappropiate(self, request, queryset):
for obj in queryset:
obj.mark_as_inappropiate()
self.message_user(request, "Snippets marked as inappropiate successfully")
mark_as_inappropiate.short_description = "Mark snippets as inappropiate"
def mark_as_spam(self, request, queryset):
for obj in queryset:
obj.mark_as_spam()
self.message_user(request, "Snippets marked as spam successfully")
mark_as_spam.short_description = "Mark snippets as spam"
class SnippetFlagAdmin(admin.ModelAdmin):
list_display = ("snippet", "flag")
list_filter = ("flag",)
actions = ["remove_and_ban"]
raw_id_fields = (
"snippet",
"user",
)
def remove_and_ban(self, request, queryset):
for obj in queryset:
obj.remove_and_ban()
self.message_user(request, "Snippets removed successfully")
remove_and_ban.short_description = "Remove snippet and ban user"
admin.site.register(Language, LanguageAdmin)
admin.site.register(Snippet, SnippetAdmin)
admin.site.register(SnippetFlag, SnippetFlagAdmin)