add mailer system

v1-0-stable
Christian Merten 9 years ago
parent d7409daa7a
commit 98c24dc926

@ -37,6 +37,7 @@ INSTALLED_APPS = [
'startpage.apps.StartpageConfig', 'startpage.apps.StartpageConfig',
'material.apps.MaterialConfig', 'material.apps.MaterialConfig',
'members.apps.MembersConfig', 'members.apps.MembersConfig',
'mailer.apps.MailerConfig',
'django.contrib.admin', 'django.contrib.admin',
'django.contrib.auth', 'django.contrib.auth',
'django.contrib.contenttypes', 'django.contrib.contenttypes',

@ -23,6 +23,7 @@ urlpatterns = static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns += i18n_patterns( urlpatterns += i18n_patterns(
url(r'^admin/', admin.site.urls), url(r'^admin/', admin.site.urls),
url(r'^newsletter/', include('mailer.urls', namespace="mailer")),
url(r'^$', include('startpage.urls')), url(r'^$', include('startpage.urls')),
) )

@ -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)

@ -0,0 +1,5 @@
from django.apps import AppConfig
class MailerConfig(AppConfig):
name = 'mailer'

@ -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")

@ -0,0 +1,15 @@
{% extends "admin/change_form.html" %}
{% load i18n %}
{% block object-tools %}
{% if change %}{% if not is_popup %}
<ul class="object-tools">
{% for button in buttons %}
<li><a href={% url button.view %} class="historylink">{{ button.short_description }}</a></li>
{% endfor %}
<li><a href="../history/" class="historylink">{% trans "History" %}</a></li>
{% if has_absolute_url %}<li><a href="../../../r/{{ content_type_id }}/{{ object_id }}/" class="viewsitelink">View on site</a></li>{% endif%}
</ul>
{% endif %}{% endif %}
{% endblock %}

@ -0,0 +1,2 @@
{% load i18n %}
{% trans "This is the mailer app!" %}

@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.

@ -0,0 +1,8 @@
from django.conf.urls import url
from . import views
app_name = "mailer"
urlpatterns = [
url(r'^$', views.index, name='index')
]

@ -0,0 +1,6 @@
from django.shortcuts import render
# Create your views here.
def index(request):
return render(request, 'mailer/index.html')
Loading…
Cancel
Save