mirror of
https://github.com/daniviga/django-ram.git
synced 2026-02-03 17:40:39 +01:00
Compare commits
3 Commits
8087ab5997
...
d3c099c05b
| Author | SHA1 | Date | |
|---|---|---|---|
|
d3c099c05b
|
|||
|
903633b5a7
|
|||
|
ee775d737e
|
@@ -59,20 +59,34 @@ class MagazineIssueDocInline(BookDocInline):
|
|||||||
model = MagazineIssueDocument
|
model = MagazineIssueDocument
|
||||||
|
|
||||||
|
|
||||||
|
class BookTocInline(admin.TabularInline):
|
||||||
|
model = TocEntry
|
||||||
|
min_num = 0
|
||||||
|
extra = 0
|
||||||
|
fields = (
|
||||||
|
"title",
|
||||||
|
"subtitle",
|
||||||
|
"authors",
|
||||||
|
"page",
|
||||||
|
"featured",
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@admin.register(Book)
|
@admin.register(Book)
|
||||||
class BookAdmin(SortableAdminBase, admin.ModelAdmin):
|
class BookAdmin(SortableAdminBase, admin.ModelAdmin):
|
||||||
inlines = (
|
inlines = (
|
||||||
|
BookTocInline,
|
||||||
BookPropertyInline,
|
BookPropertyInline,
|
||||||
BookImageInline,
|
BookImageInline,
|
||||||
BookDocInline,
|
BookDocInline,
|
||||||
)
|
)
|
||||||
list_display = (
|
list_display = (
|
||||||
"published",
|
|
||||||
"title",
|
"title",
|
||||||
"get_authors",
|
"get_authors",
|
||||||
"get_publisher",
|
"get_publisher",
|
||||||
"publication_year",
|
"publication_year",
|
||||||
"number_of_pages",
|
"number_of_pages",
|
||||||
|
"published",
|
||||||
)
|
)
|
||||||
autocomplete_fields = ("authors", "publisher", "shop")
|
autocomplete_fields = ("authors", "publisher", "shop")
|
||||||
readonly_fields = ("invoices", "creation_time", "updated_time")
|
readonly_fields = ("invoices", "creation_time", "updated_time")
|
||||||
@@ -364,23 +378,10 @@ class CatalogAdmin(SortableAdminBase, admin.ModelAdmin):
|
|||||||
actions = [publish, unpublish, download_csv]
|
actions = [publish, unpublish, download_csv]
|
||||||
|
|
||||||
|
|
||||||
class MagazineIssueToc(admin.TabularInline):
|
|
||||||
model = TocEntry
|
|
||||||
min_num = 0
|
|
||||||
extra = 0
|
|
||||||
fields = (
|
|
||||||
"title",
|
|
||||||
"subtitle",
|
|
||||||
"authors",
|
|
||||||
"page",
|
|
||||||
"featured",
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
@admin.register(MagazineIssue)
|
@admin.register(MagazineIssue)
|
||||||
class MagazineIssueAdmin(SortableAdminBase, admin.ModelAdmin):
|
class MagazineIssueAdmin(SortableAdminBase, admin.ModelAdmin):
|
||||||
inlines = (
|
inlines = (
|
||||||
MagazineIssueToc,
|
BookTocInline,
|
||||||
BookPropertyInline,
|
BookPropertyInline,
|
||||||
BookImageInline,
|
BookImageInline,
|
||||||
MagazineIssueDocInline,
|
MagazineIssueDocInline,
|
||||||
|
|||||||
@@ -196,6 +196,7 @@ class SearchObjects(View):
|
|||||||
Q(
|
Q(
|
||||||
Q(title__icontains=search)
|
Q(title__icontains=search)
|
||||||
| Q(description__icontains=search)
|
| Q(description__icontains=search)
|
||||||
|
| Q(toc__title__icontains=search)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
.distinct()
|
.distinct()
|
||||||
@@ -217,6 +218,7 @@ class SearchObjects(View):
|
|||||||
Q(
|
Q(
|
||||||
Q(magazine__name__icontains=search)
|
Q(magazine__name__icontains=search)
|
||||||
| Q(description__icontains=search)
|
| Q(description__icontains=search)
|
||||||
|
| Q(toc__title__icontains=search)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
.distinct()
|
.distinct()
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
from ram.utils import git_suffix
|
from ram.utils import git_suffix
|
||||||
|
|
||||||
__version__ = "0.19.2"
|
__version__ = "0.19.3"
|
||||||
__version__ += git_suffix(__file__)
|
__version__ += git_suffix(__file__)
|
||||||
|
|||||||
@@ -1,22 +1,60 @@
|
|||||||
from django.contrib import admin
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
from django.contrib import admin
|
||||||
|
from django.core.cache import cache
|
||||||
|
|
||||||
admin.site.site_header = settings.SITE_NAME
|
admin.site.site_header = settings.SITE_NAME
|
||||||
|
|
||||||
|
|
||||||
def publish(modeladmin, request, queryset):
|
def publish(modeladmin, request, queryset):
|
||||||
for obj in queryset:
|
queryset.update(published=True)
|
||||||
obj.published = True
|
cache.clear()
|
||||||
obj.save()
|
|
||||||
|
|
||||||
|
|
||||||
publish.short_description = "Publish selected items"
|
publish.short_description = "Publish selected items"
|
||||||
|
|
||||||
|
|
||||||
def unpublish(modeladmin, request, queryset):
|
def unpublish(modeladmin, request, queryset):
|
||||||
for obj in queryset:
|
queryset.update(published=False)
|
||||||
obj.published = False
|
cache.clear()
|
||||||
obj.save()
|
|
||||||
|
|
||||||
|
|
||||||
unpublish.short_description = "Unpublish selected items"
|
unpublish.short_description = "Unpublish selected items"
|
||||||
|
|
||||||
|
|
||||||
|
def set_featured(modeladmin, request, queryset):
|
||||||
|
count = queryset.count()
|
||||||
|
if count > settings.FEATURED_ITEMS_MAX:
|
||||||
|
modeladmin.message_user(
|
||||||
|
request,
|
||||||
|
"You can only mark up to {} items as featured.".format(
|
||||||
|
settings.FEATURED_ITEMS_MAX
|
||||||
|
),
|
||||||
|
level="error",
|
||||||
|
)
|
||||||
|
return
|
||||||
|
featured = modeladmin.model.objects.filter(featured=True).count()
|
||||||
|
if featured + count > settings.FEATURED_ITEMS_MAX:
|
||||||
|
modeladmin.message_user(
|
||||||
|
request,
|
||||||
|
"There are already {} featured items. You can only mark {} more items as featured.".format( # noqa: E501
|
||||||
|
featured,
|
||||||
|
settings.FEATURED_ITEMS_MAX - featured,
|
||||||
|
),
|
||||||
|
level="error",
|
||||||
|
)
|
||||||
|
return
|
||||||
|
queryset.update(featured=True)
|
||||||
|
cache.clear()
|
||||||
|
|
||||||
|
|
||||||
|
set_featured.short_description = "Mark selected items as featured"
|
||||||
|
|
||||||
|
|
||||||
|
def unset_featured(modeladmin, request, queryset):
|
||||||
|
queryset.update(featured=False)
|
||||||
|
cache.clear()
|
||||||
|
|
||||||
|
|
||||||
|
unset_featured.short_description = (
|
||||||
|
"Unmark selected items as featured"
|
||||||
|
)
|
||||||
|
|||||||
@@ -6,8 +6,8 @@ from django.utils.html import format_html, format_html_join, strip_tags
|
|||||||
|
|
||||||
from adminsortable2.admin import SortableAdminBase, SortableInlineAdminMixin
|
from adminsortable2.admin import SortableAdminBase, SortableInlineAdminMixin
|
||||||
|
|
||||||
from ram.admin import publish, unpublish
|
|
||||||
from ram.utils import generate_csv
|
from ram.utils import generate_csv
|
||||||
|
from ram.admin import publish, unpublish, set_featured, unset_featured
|
||||||
from repository.models import RollingStockDocument
|
from repository.models import RollingStockDocument
|
||||||
from portal.utils import get_site_conf
|
from portal.utils import get_site_conf
|
||||||
from roster.models import (
|
from roster.models import (
|
||||||
@@ -303,37 +303,4 @@ class RollingStockAdmin(SortableAdminBase, admin.ModelAdmin):
|
|||||||
|
|
||||||
download_csv.short_description = "Download selected items as CSV"
|
download_csv.short_description = "Download selected items as CSV"
|
||||||
|
|
||||||
def set_featured(modeladmin, request, queryset):
|
|
||||||
count = queryset.count()
|
|
||||||
if count > settings.FEATURED_ITEMS_MAX:
|
|
||||||
modeladmin.message_user(
|
|
||||||
request,
|
|
||||||
"You can only mark up to {} items as featured.".format(
|
|
||||||
settings.FEATURED_ITEMS_MAX
|
|
||||||
),
|
|
||||||
level="error",
|
|
||||||
)
|
|
||||||
return
|
|
||||||
featured = RollingStock.objects.filter(featured=True).count()
|
|
||||||
if featured + count > settings.FEATURED_ITEMS_MAX:
|
|
||||||
modeladmin.message_user(
|
|
||||||
request,
|
|
||||||
"There are already {} featured items. You can only mark {} more items as featured.".format( # noqa: E501
|
|
||||||
featured,
|
|
||||||
settings.FEATURED_ITEMS_MAX - featured,
|
|
||||||
),
|
|
||||||
level="error",
|
|
||||||
)
|
|
||||||
return
|
|
||||||
queryset.update(featured=True)
|
|
||||||
|
|
||||||
set_featured.short_description = "Mark selected rolling stock as featured"
|
|
||||||
|
|
||||||
def unset_featured(modeladmin, request, queryset):
|
|
||||||
queryset.update(featured=False)
|
|
||||||
|
|
||||||
unset_featured.short_description = (
|
|
||||||
"Unmark selected rolling stock as featured"
|
|
||||||
)
|
|
||||||
|
|
||||||
actions = [publish, unpublish, set_featured, unset_featured, download_csv]
|
actions = [publish, unpublish, set_featured, unset_featured, download_csv]
|
||||||
|
|||||||
Reference in New Issue
Block a user