diff --git a/jdav_web/mailer/admin.py b/jdav_web/mailer/admin.py index abead81..a5913bb 100644 --- a/jdav_web/mailer/admin.py +++ b/jdav_web/mailer/admin.py @@ -1,43 +1,42 @@ 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): +class MessageAdmin(admin.ModelAdmin): """Message creation view""" - list_display = ('subject', 'from_addr', 'to_group') + list_display = ('subject', 'from_addr', 'to_group', 'sent') + change_form_template = "mailer/change_form.html" - # can't find a good solution for this at the moment - # send_message = Button() - # send_message.short_description = _("Send") - # send_message.view = "mailer:index" - # buttons = [send_message] actions = ['send_message'] def send_message(self, request, queryset): - for msg in queryset: - msg.submit() - self.message_user(request, _("Message sent")) + 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") + + def response_change(self, request, obj): + if "_send" in request.POST: + obj.submit() + return super(MessageAdmin, self).response_change(request, obj) + + def response_add(self, request, obj): + if "_send" in request.POST: + obj.submit() + return super(MessageAdmin, self).response_change(request, obj) + admin.site.register(Message, MessageAdmin) diff --git a/jdav_web/mailer/locale/de/LC_MESSAGES/django.po b/jdav_web/mailer/locale/de/LC_MESSAGES/django.po index 8d7a2ad..fd5005e 100644 --- a/jdav_web/mailer/locale/de/LC_MESSAGES/django.po +++ b/jdav_web/mailer/locale/de/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-10-22 18:28+0200\n" +"POT-Creation-Date: 2016-11-19 16:11+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,10 +18,14 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: admin.py:41 +#: admin.py:20 msgid "Message sent" msgstr "Nachricht gesendet" +#: admin.py:28 +msgid "Send message" +msgstr "Nachricht verschicken" + #: apps.py:7 msgid "mailer" msgstr "Verteiler" @@ -42,18 +46,76 @@ msgstr "Inhalt" msgid "to group" msgstr "An Gruppe" -#: models.py:23 +#: models.py:13 +msgid "sent" +msgstr "Gesendet" + +#: models.py:29 msgid "message" msgstr "Nachricht" -#: models.py:24 +#: models.py:30 msgid "messages" msgstr "Nachrichten" -#: templates/admin/change_form.html:10 -msgid "History" -msgstr "Geschichte" +#: models.py:32 +msgid "Can submit mails" +msgstr "Kann Mails verschicken" + +#: templates/admin/change_form.html:11 +msgid "Save and send mail" +msgstr "Speichern und Email senden" + +#: templates/mailer/confirm_send.html:7 +msgid "Do you really want to send these mails?" +msgstr "Möchtest du diese Emails wirklich verschicken?" + +#: templates/mailer/confirm_send.html:13 +msgid "already sent" +msgstr "schon verschickt" + +#: templates/mailer/confirm_send.html:19 +msgid "" +"Some messages have already been sent! Do you really want to resend them?" +msgstr "" +"Einige Emails wurden schon versendet! Möchtest du diese wirklich nochmal " +"senden?" + +#: templates/mailer/confirm_send.html:30 +msgid "Send" +msgstr "Senden" + +#: templates/mailer/confirm_send.html:35 +msgid "Cancel" +msgstr "Abbruch" #: templates/mailer/index.html:2 msgid "This is the mailer app!" msgstr "Das ist die Mailer App!" + +#: templates/mailer/send.html:2 +msgid "Here you can send new emails!" +msgstr "Hier kannst du neue Emails verschicken!" + +#: templates/mailer/send.html:11 +msgid "Subject:" +msgstr "Betreff" + +#: templates/mailer/send.html:14 +msgid "Content:" +msgstr "Inhalt:" + +#: templates/mailer/send.html:17 +msgid "Receiving group:" +msgstr "Erhaltende Gruppe" + +#: templates/mailer/send.html:24 +msgid "Send mail" +msgstr "Email senden" + +#: views.py:33 +msgid "Please fill in every field!" +msgstr "Bitte jedes Feld ausfüllen!" + +#~ msgid "History" +#~ msgstr "Geschichte" diff --git a/jdav_web/mailer/models.py b/jdav_web/mailer/models.py index 475b8d0..0498719 100644 --- a/jdav_web/mailer/models.py +++ b/jdav_web/mailer/models.py @@ -10,6 +10,7 @@ class Message(models.Model): subject = models.CharField(_('subject'), max_length=50) content = models.TextField(_('content')) to_group = models.ForeignKey('members.Group', verbose_name=_('to group')) + sent = models.BooleanField(_('sent'), default=False) def __str__(self): return self.subject @@ -21,6 +22,8 @@ class Message(models.Model): for member in self.to_group.member_set.all() ] send_mass_mail(data) + self.sent = True + self.save() class Meta: verbose_name = _('message') diff --git a/jdav_web/mailer/templates/admin/change_form.html b/jdav_web/mailer/templates/admin/change_form.html deleted file mode 100644 index 226923d..0000000 --- a/jdav_web/mailer/templates/admin/change_form.html +++ /dev/null @@ -1,15 +0,0 @@ -{% extends "admin/change_form.html" %} -{% load i18n %} - -{% block object-tools %} - {% if change %}{% if not is_popup %} - - {% endif %}{% endif %} -{% endblock %} - diff --git a/jdav_web/mailer/templates/mailer/change_form.html b/jdav_web/mailer/templates/mailer/change_form.html new file mode 100644 index 0000000..c5be0e0 --- /dev/null +++ b/jdav_web/mailer/templates/mailer/change_form.html @@ -0,0 +1,15 @@ +{% extends "admin/change_form.html" %} +{% load i18n %} +{% block content %} +{{ block.super }} +{% load static %} + + + + +{% endblock %} diff --git a/jdav_web/mailer/templates/mailer/confirm_send.html b/jdav_web/mailer/templates/mailer/confirm_send.html new file mode 100644 index 0000000..82ae759 --- /dev/null +++ b/jdav_web/mailer/templates/mailer/confirm_send.html @@ -0,0 +1,38 @@ +{% extends "admin/base_site.html" %} +{% load i18n %} +{% load static %} + +{% block content %} + +

{% trans "Do you really want to send these mails?" %}

+ +{% if some_sent %} +

{% trans "Some messages have already been sent! Do you really want to resend them?" %}

+{% endif %} + +
+ {% csrf_token %} + + + + {% for id in ids %} + + {% endfor %} + +
+ +
+ {% csrf_token %} + +
+ +{% endblock %} diff --git a/requirements.txt b/requirements.txt index 6c4722e..19e4b8f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,3 @@ Django==1.10.2 +Pillow==3.4.2 mysqlclient==1.3.9 -PyMySQL==0.7.9