You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.8 KiB
Python
58 lines
1.8 KiB
Python
from django.contrib import admin
|
|
from django.contrib.admin import helpers
|
|
from django.utils.translation import ugettext_lazy as _
|
|
from django.shortcuts import render
|
|
|
|
from .models import Message
|
|
|
|
|
|
class Button:
|
|
short_description = ""
|
|
view = ""
|
|
|
|
|
|
class ButtonableModelAdmin(admin.ModelAdmin):
|
|
buttons = []
|
|
|
|
def change_view(self, request, object_id, extra_context={}):
|
|
extra_context['buttons'] = self.buttons
|
|
if '/' in object_id:
|
|
object_id = object_id[:object_id.find('/')]
|
|
return super(
|
|
ButtonableModelAdmin,
|
|
self).change_view(
|
|
request,
|
|
object_id,
|
|
extra_context=extra_context)
|
|
|
|
|
|
class MessageAdmin(ButtonableModelAdmin):
|
|
"""Message creation view"""
|
|
list_display = ('subject', 'from_addr', 'to_group', 'sent')
|
|
|
|
# TODO: get this working
|
|
# can't find a good solution for this at the moment
|
|
send_message = Button()
|
|
send_message.short_description = _("Send")
|
|
send_message.view = "mailer:send_mail"
|
|
buttons = [send_message]
|
|
actions = ['send_message']
|
|
|
|
def send_message(self, request, queryset):
|
|
print("calling send_message")
|
|
if request.POST.get('confirmed'):
|
|
for msg in queryset:
|
|
msg.submit()
|
|
self.message_user(request, _("Message sent"))
|
|
else:
|
|
context = {
|
|
'action_checkbox_name': helpers.ACTION_CHECKBOX_NAME,
|
|
'mails': queryset,
|
|
'ids': queryset.values_list("id"),
|
|
'some_sent': any(m.sent for m in queryset)}
|
|
return render(request, 'mailer/confirm_send.html', context)
|
|
send_message.short_description = _("Send message")
|
|
|
|
|
|
admin.site.register(Message, MessageAdmin)
|