230 lines
5.3 KiB
Python
230 lines
5.3 KiB
Python
from django.contrib import admin, messages
|
|
|
|
from documents.api import create_pad
|
|
|
|
from .forms import EventForm, FetMeetingForm, NewsForm, PostForm
|
|
from .models import Event, FetMeeting, FileUpload, News, Post
|
|
|
|
|
|
@admin.action(description="In eine Fachschaftssitzung konvertieren")
|
|
def make_fetmeeting(self, request, queryset):
|
|
qs = self.get_queryset(request).filter(id=request.POST["_selected_action"]).first()
|
|
|
|
agenda_key = create_pad(qs.slug + "-agenda")
|
|
if not agenda_key:
|
|
self.message_user(
|
|
request,
|
|
"Das Agenda konnte nicht erstellt werden.",
|
|
messages.ERROR,
|
|
)
|
|
return
|
|
|
|
protocol_key = create_pad(qs.slug + "-protocol")
|
|
if not protocol_key:
|
|
self.message_user(
|
|
request,
|
|
"Das Protokoll konnte nicht erstellt werden.",
|
|
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 qs.title wurde erfolgreich in eine FET Sitzung konvertiert.",
|
|
messages.SUCCESS,
|
|
)
|
|
|
|
|
|
class FileUploadInline(admin.TabularInline):
|
|
model = FileUpload
|
|
extra = 0
|
|
verbose_name = "Datei"
|
|
verbose_name_plural = "Dateien"
|
|
|
|
|
|
class PostAdmin(admin.ModelAdmin):
|
|
form = PostForm
|
|
model = Post
|
|
|
|
list_display = ["title", "slug", "public_date", "status", "is_pinned"]
|
|
list_filter = ["is_pinned", "status"]
|
|
ordering = ["-public_date"]
|
|
|
|
save_as = True
|
|
|
|
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",
|
|
]
|
|
|
|
|
|
@admin.register(News)
|
|
class NewsAdmin(PostAdmin):
|
|
form = NewsForm
|
|
model = News
|
|
|
|
fieldsets = (
|
|
(
|
|
None,
|
|
{
|
|
"fields": (
|
|
"title",
|
|
"subtitle",
|
|
"tags",
|
|
)
|
|
},
|
|
),
|
|
(
|
|
"Status",
|
|
{
|
|
"fields": (
|
|
"status",
|
|
"is_pinned",
|
|
)
|
|
},
|
|
),
|
|
(
|
|
"Bericht",
|
|
{
|
|
"fields": (
|
|
"image",
|
|
"body",
|
|
)
|
|
},
|
|
),
|
|
(
|
|
"Veröffentlichung",
|
|
{
|
|
"fields": (
|
|
"slug",
|
|
"author",
|
|
"public_date",
|
|
)
|
|
},
|
|
),
|
|
)
|
|
inlines = (FileUploadInline,)
|
|
|
|
|
|
@admin.register(Event)
|
|
class EventAdmin(PostAdmin):
|
|
form = EventForm
|
|
model = Event
|
|
|
|
actions = [make_fetmeeting]
|
|
list_display = ["title", "slug", "event_start", "status", "is_pinned"]
|
|
list_filter = ["is_pinned", "status"]
|
|
ordering = ["-event_start"]
|
|
|
|
fieldsets = (
|
|
(
|
|
None,
|
|
{
|
|
"fields": (
|
|
"title",
|
|
"subtitle",
|
|
"tags",
|
|
)
|
|
},
|
|
),
|
|
(
|
|
"Status",
|
|
{
|
|
"fields": (
|
|
"status",
|
|
"is_pinned",
|
|
)
|
|
},
|
|
),
|
|
(
|
|
"Termin Details",
|
|
{
|
|
"fields": (
|
|
"event_start",
|
|
"event_end",
|
|
"event_place",
|
|
)
|
|
},
|
|
),
|
|
(
|
|
"Bericht",
|
|
{
|
|
"fields": (
|
|
"image",
|
|
"body",
|
|
)
|
|
},
|
|
),
|
|
(
|
|
"Veröffentlichung",
|
|
{
|
|
"fields": (
|
|
"slug",
|
|
"author",
|
|
"public_date",
|
|
)
|
|
},
|
|
),
|
|
)
|
|
|
|
|
|
@admin.register(FetMeeting)
|
|
class FetMeetingAdmin(EventAdmin):
|
|
form = FetMeetingForm
|
|
model = FetMeeting
|
|
|
|
actions = []
|
|
list_display = ["title", "slug", "event_start"]
|
|
list_filter = []
|
|
|
|
fieldsets = (
|
|
(
|
|
None,
|
|
{
|
|
"fields": (
|
|
"event_start",
|
|
"event_end",
|
|
"event_place",
|
|
"tags",
|
|
)
|
|
},
|
|
),
|
|
)
|