Files
fet2020/fet2020/posts/admin.py
2021-05-26 03:04:57 +00:00

125 lines
3.4 KiB
Python
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
from django.contrib import admin, messages
from django.utils.translation import gettext_lazy as _
from .models import Post, Event, News, FetMeeting, FileUpload
from .forms import PostForm, EventForm, NewsForm, FetMeetingForm
from documents.api import createPadifNotExists
def make_fetmeeting(self, request, queryset):
qs = self.get_queryset(request).filter(id=request.POST["_selected_action"]).first()
agenda_key = createPadifNotExists(qs.slug + "-agenda")
if not agenda_key:
self.message_user(
request,
_("Das Agenda konnte nicht erstellt werden. Error: %s") % str(e),
messages.ERROR,
)
return
protocol_key = createPadifNotExists(qs.slug + "-protocol")
if not protocol_key:
self.message_user(
request,
_("Das Protokoll konnte nicht erstellt werden. Error: %s") % str(e),
messages.ERROR,
)
return
queryset.update(
post_type="F",
has_agenda=True,
has_protocol=True,
agenda_key=agenda_key,
protocol_key=protocol_key,
)
self.message_user(
request,
_("Das Event %s wurde erfolgreich in eine FET Sitzung konvertiert.")
% (qs.title),
messages.SUCCESS,
)
make_fetmeeting.short_description = "In eine Fachschaftssitzung konvertieren"
class FileUploadInline(admin.TabularInline):
model = FileUpload
extra = 0
verbose_name = "Dokument"
verbose_name_plural = "Do­ku­men­ten­samm­lung"
class PostAdmin(admin.ModelAdmin):
form = PostForm
model = Post
list_filter = ["is_pinned", "is_hidden"]
list_display = ["title", "slug", "public_date", "is_pinned", "is_hidden"]
ordering = ["is_hidden", "-public_date"]
def add_view(self, request, form_url="", extra_context=None):
extra_context = extra_context or {}
extra_context["help_text"] = "Fette Schriften sind Pflichtfelder."
return super().add_view(
request,
form_url,
extra_context=extra_context,
)
def change_view(self, request, object_id, form_url="", extra_context=None):
extra_context = extra_context or {}
extra_context["help_text"] = "Fette Schriften sind Pflichtfelder."
return super().change_view(
request,
object_id,
form_url,
extra_context=extra_context,
)
def save_model(self, request, obj, form, change):
if obj.author is None:
obj.author = request.user
super().save_model(request, obj, form, change)
class Media:
css = {
"all": [
"jquery-ui/jquery-ui.min.css",
"jquery-ui/ui-lightness/theme.css",
]
}
js = [
"jquery-ui/jquery-ui.min.js",
]
class NewsAdmin(PostAdmin):
form = NewsForm
model = News
inlines = (FileUploadInline,)
class EventAdmin(PostAdmin):
form = EventForm
model = Event
list_filter = ["is_pinned"]
list_display = ["title", "slug", "event_start", "public_date", "is_pinned"]
ordering = ["-event_start"]
actions = [make_fetmeeting]
class FetMeetingAdmin(EventAdmin):
form = FetMeetingForm
model = FetMeeting
list_filter = []
list_display = ["title", "slug", "event_start", "public_date"]
actions = []
admin.site.register(Event, EventAdmin)
admin.site.register(News, NewsAdmin)
admin.site.register(FetMeeting, FetMeetingAdmin)