diff --git a/jdav_web/jdav_web/settings.py b/jdav_web/jdav_web/settings.py index f67581e..b735efe 100644 --- a/jdav_web/jdav_web/settings.py +++ b/jdav_web/jdav_web/settings.py @@ -37,6 +37,7 @@ INSTALLED_APPS = [ 'startpage.apps.StartpageConfig', 'material.apps.MaterialConfig', 'members.apps.MembersConfig', + 'mailer.apps.MailerConfig', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', diff --git a/jdav_web/jdav_web/urls.py b/jdav_web/jdav_web/urls.py index 9ebd7a6..9f394f0 100644 --- a/jdav_web/jdav_web/urls.py +++ b/jdav_web/jdav_web/urls.py @@ -23,6 +23,7 @@ urlpatterns = static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) urlpatterns += i18n_patterns( url(r'^admin/', admin.site.urls), + url(r'^newsletter/', include('mailer.urls', namespace="mailer")), url(r'^$', include('startpage.urls')), ) diff --git a/jdav_web/mailer/__init__.py b/jdav_web/mailer/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/jdav_web/mailer/admin.py b/jdav_web/mailer/admin.py new file mode 100644 index 0000000..abead81 --- /dev/null +++ b/jdav_web/mailer/admin.py @@ -0,0 +1,43 @@ +from django.contrib import admin +from django.utils.translation import ugettext_lazy as _ + +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') + + # 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")) + +admin.site.register(Message, MessageAdmin) diff --git a/jdav_web/mailer/apps.py b/jdav_web/mailer/apps.py new file mode 100644 index 0000000..2af0c1d --- /dev/null +++ b/jdav_web/mailer/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class MailerConfig(AppConfig): + name = 'mailer' diff --git a/jdav_web/mailer/models.py b/jdav_web/mailer/models.py new file mode 100644 index 0000000..a9d0962 --- /dev/null +++ b/jdav_web/mailer/models.py @@ -0,0 +1,14 @@ +from django.db import models +from django.utils.translation import ugettext_lazy as _ + + +# Create your models here. +class Message(models.Model): + """Represents a message that can be sent to some members""" + from_addr = models.EmailField('email') + subject = models.CharField(_('subject'), max_length=50) + content = models.TextField(_('content')) + to_group = models.ForeignKey('members.Group', verbose_name=_('group')) + + def submit(self): + print("Sending message") diff --git a/jdav_web/mailer/templates/admin/change_form.html b/jdav_web/mailer/templates/admin/change_form.html new file mode 100644 index 0000000..226923d --- /dev/null +++ b/jdav_web/mailer/templates/admin/change_form.html @@ -0,0 +1,15 @@ +{% 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/index.html b/jdav_web/mailer/templates/mailer/index.html new file mode 100644 index 0000000..c4e81f2 --- /dev/null +++ b/jdav_web/mailer/templates/mailer/index.html @@ -0,0 +1,2 @@ +{% load i18n %} +{% trans "This is the mailer app!" %} diff --git a/jdav_web/mailer/tests.py b/jdav_web/mailer/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/jdav_web/mailer/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/jdav_web/mailer/urls.py b/jdav_web/mailer/urls.py new file mode 100644 index 0000000..3497ade --- /dev/null +++ b/jdav_web/mailer/urls.py @@ -0,0 +1,8 @@ +from django.conf.urls import url + +from . import views + +app_name = "mailer" +urlpatterns = [ + url(r'^$', views.index, name='index') +] diff --git a/jdav_web/mailer/views.py b/jdav_web/mailer/views.py new file mode 100644 index 0000000..06a5c6f --- /dev/null +++ b/jdav_web/mailer/views.py @@ -0,0 +1,6 @@ +from django.shortcuts import render + + +# Create your views here. +def index(request): + return render(request, 'mailer/index.html')