Add action buttons in article/page admin
This commit is contained in:
parent
85f235330e
commit
386b620361
2 changed files with 36 additions and 1 deletions
|
@ -3,6 +3,7 @@ from django.contrib import admin, messages
|
|||
from django.contrib.admin import register
|
||||
from django.contrib.auth.admin import UserAdmin
|
||||
from django.db import models
|
||||
from django.shortcuts import redirect
|
||||
|
||||
from .models import Article, Page, User
|
||||
|
||||
|
@ -36,13 +37,20 @@ class ArticleAdmin(admin.ModelAdmin):
|
|||
),
|
||||
("Content", {"fields": ("content",)}),
|
||||
]
|
||||
readonly_fields = ["created_at", "updated_at", "views_count"]
|
||||
readonly_fields = [
|
||||
"created_at",
|
||||
"updated_at",
|
||||
"views_count",
|
||||
"status",
|
||||
"published_at",
|
||||
]
|
||||
formfield_overrides = {
|
||||
models.TextField: {
|
||||
"widget": forms.Textarea(attrs={"cols": "100", "rows": "50"})
|
||||
},
|
||||
}
|
||||
prepopulated_fields = {"slug": ("title",)}
|
||||
change_form_template = "articles/article_change_form.html"
|
||||
|
||||
def publish(self, request, queryset):
|
||||
if not request.user.has_perm("articles.change_article"):
|
||||
|
@ -68,6 +76,20 @@ class ArticleAdmin(admin.ModelAdmin):
|
|||
class Media:
|
||||
css = {"all": ("admin_articles.css",)}
|
||||
|
||||
def response_change(self, request, obj: Article):
|
||||
if "_preview" in request.POST:
|
||||
obj.save()
|
||||
return redirect("article-detail", slug=obj.slug)
|
||||
if "_publish" in request.POST:
|
||||
obj.publish()
|
||||
messages.success(request, "Item has been published")
|
||||
return redirect(".")
|
||||
if "_unpublish" in request.POST:
|
||||
obj.unpublish()
|
||||
messages.success(request, "Item has been unpublished")
|
||||
return redirect(".")
|
||||
return super().response_change(request, obj)
|
||||
|
||||
|
||||
@register(Page)
|
||||
class PageAdmin(ArticleAdmin):
|
||||
|
|
13
articles/templates/articles/article_change_form.html
Normal file
13
articles/templates/articles/article_change_form.html
Normal file
|
@ -0,0 +1,13 @@
|
|||
{% extends 'admin/change_form.html' %}
|
||||
|
||||
{% block submit_buttons_bottom %}
|
||||
{{ block.super }}
|
||||
<div class="submit-row">
|
||||
{% if original.status != original.PUBLISHED %}
|
||||
<input type="submit" value="Save & publish" name="_publish">
|
||||
{% elif original.status != original.DRAFT %}
|
||||
<input type="submit" value="Save & unpublish" name="_unpublish">
|
||||
{% endif %}
|
||||
<input type="submit" value="Save & preview" name="_preview">
|
||||
</div>
|
||||
{% endblock %}
|
Reference in a new issue